changeset 2167:da33732f182d

Win: Add support for building with Clang/LLVM on Windows. SET CLANG=Y Fix a few warnings generated by Clang on Windows.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 04 Oct 2020 21:09:02 +0000
parents f98cecae5402
children b08df531fd71
files makefile.vc win/dw.c win/edge.cpp
diffstat 3 files changed, 17 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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);
--- 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 <wrl.h>
 
 using namespace Microsoft::WRL;