# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1601845742 0 # Node ID da33732f182d02866e350a78506e4505980ec955 # Parent f98cecae540262e428899a3af3999ce7833911b9 Win: Add support for building with Clang/LLVM on Windows. SET CLANG=Y Fix a few warnings generated by Clang on Windows. diff -r f98cecae5402 -r da33732f182d makefile.vc --- a/makefile.vc Thu Oct 01 18:01:45 2020 +0000 +++ b/makefile.vc Sun Oct 04 21:09:02 2020 +0000 @@ -23,6 +23,17 @@ DWDLLDIR=.\dll !endif +# Configure alternate compiler based on Clang/LLVM +!if "$(CLANG)" == "Y" +LIB=llvm-lib.exe +CC=clang-cl.exe +LINK=lld-link.exe +!else +LIB=lib.exe +CC=cl.exe +LINK=link.exe +!endif + # # Configure settings for the target platform # Default to x86 if not specified @@ -53,7 +64,7 @@ !if "$(DEBUG)" == "Y" # -D_CRT_SECURE_NO_WARNINGS disables unsafe string function warnings # These can be perfectly safe if used properly but get enabled by -W3 -CFLAGS_DEBUG = -DDEBUG -Z7 -W3 -Od -MTd -D_CRT_SECURE_NO_WARNINGS # was -Zi +CFLAGS_DEBUG = -DDEBUG -Z7 -W3 -Od -MTd # was -Zi LINK_DEBUG = -debug !else CFLAGS_DEBUG = -Ox -MT @@ -101,13 +112,11 @@ WINTOASTOBJ=wintoast.obj wintoastlib.obj !endif -CC = cl -CFLAGS = -c $(PLATFORM_DEF) -D__WIN32__ -DMSVC -DTOOLBAR -DGDIPLUS -DAEROGLASS -D_UNICODE -DUNICODE -DBUILD_DLL -DISOLATION_AWARE_ENABLED=1 -I$(SRCDIR)\platform -I$(SRCDIR) $(WEBVIEW2INC) $(WINTOASTINC) $(SVNVERSION) +CFLAGS = -c $(PLATFORM_DEF) -D__WIN32__ -DMSVC -DTOOLBAR -DGDIPLUS -DAEROGLASS -D_UNICODE -DUNICODE -DBUILD_DLL -DISOLATION_AWARE_ENABLED=1 -I$(SRCDIR)\platform -I$(SRCDIR) $(WEBVIEW2INC) $(WINTOASTINC) $(SVNVERSION) -D_CRT_SECURE_NO_WARNINGS LIBS = wsock32.lib kernel32.lib user32.lib comctl32.lib gdi32.lib advapi32.lib shell32.lib comdlg32.lib ole32.lib oleaut32.lib userenv.lib msimg32.lib gdiplus.lib $(WEBVIEW2LIB) RES = LINKFLAGS = -machine:$(TARGET_CPU) -manifest $(LINK_DEBUG) DLLLINKFLAGS = -dll -LINK = link DEFFILE = $(SRCDIR)\win\dw.def DEFFILE2 = $(SRCDIR)\win\dwcompat.def @@ -143,7 +152,7 @@ $(OBJS) $(RES) $(LIBS) << - lib /def:$(DEFFILE) /machine:$(TARGET_CPU) /out:dw.lib + $(LIB) /def:$(DEFFILE) /machine:$(TARGET_CPU) /out:dw.lib mt.exe /manifest dw.dll.manifest $(SRCDIR)\win\dw.dll.$(TARGET_CPU).manifest /outputresource:dw.dll;2 -erase dw.dll.manifest copy dw.lib $(DWLIBDIR)\dw.lib @@ -158,7 +167,7 @@ $(OBJS2) $(RES) $(LIBS) << - lib /def:$(DEFFILE2) /machine:$(TARGET_CPU) /out:dwcompat.lib + $(LIB) /def:$(DEFFILE2) /machine:$(TARGET_CPU) /out:dwcompat.lib mt.exe /manifest dwcompat.dll.manifest /outputresource:dwcompat.dll;2 -erase dwcompat.dll.manifest copy dwcompat.lib $(DWLIBDIR)\dwcompat.lib diff -r f98cecae5402 -r da33732f182d win/dw.c --- a/win/dw.c Thu Oct 01 18:01:45 2020 +0000 +++ b/win/dw.c Sun Oct 04 21:09:02 2020 +0000 @@ -4726,7 +4726,7 @@ wc.style = CS_HREDRAW | CS_VREDRAW; #ifdef BUILD_EDGE /* Check if Microsoft Edge (Chromium) is installed */ - if (_DW_EDGE_DETECTED = _dw_edge_detect(UTF8toWide(_dw_app_id))) + if ((_DW_EDGE_DETECTED = _dw_edge_detect(UTF8toWide(_dw_app_id)))) { wc.lpfnWndProc = (WNDPROC)_edgeWindowProc; wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); diff -r f98cecae5402 -r da33732f182d win/edge.cpp --- a/win/edge.cpp Thu Oct 01 18:01:45 2020 +0000 +++ b/win/edge.cpp Sun Oct 04 21:09:02 2020 +0000 @@ -7,7 +7,7 @@ * Only included when BUILD_EDGE is defined, will fall back to embedded IE. */ #include "dw.h" -#include "webview2.h" +#include "WebView2.h" #include using namespace Microsoft::WRL;