Geant4 Cross Reference |
1 # 1 # 2 # ------ WIN32/VC ------ Visual Studio 2019 2 # ------ WIN32/VC ------ Visual Studio 2019 and higher 3 # 3 # 4 ifeq ($(G4SYSTEM),WIN32-VC) 4 ifeq ($(G4SYSTEM),WIN32-VC) 5 CXX := CL 5 CXX := CL 6 ifdef G4OPTIMISE 6 ifdef G4OPTIMISE 7 CXXFLAGS += -Ox -MD 7 CXXFLAGS += -Ox -MD 8 else 8 else 9 ifdef G4DEBUG 9 ifdef G4DEBUG 10 CXXFLAGS += -Od -MDd -Zi -Fd$(G4LIBDIR) 10 CXXFLAGS += -Od -MDd -Zi -Fd$(G4LIBDIR)/lib$(name) 11 endif 11 endif 12 endif 12 endif 13 CXXFLAGS += -GR -EHsc -Zm200 -nologo -std:c+ 13 CXXFLAGS += -GR -EHsc -Zm200 -nologo -std:c++17 14 CXXFLAGS += -D_CONSOLE -D_WIN32 -DOS 14 CXXFLAGS += -D_CONSOLE -D_WIN32 -DOS 15 CPPFLAGS += -DWIN32 -DXPNET -D_CRT_SECURE_NO 15 CPPFLAGS += -DWIN32 -DXPNET -D_CRT_SECURE_NO_DEPRECATE -D_NO_CRT_STDIO_INLINE 16 LDFLAGS += -FORCE /NODEFAULTLIB:MSVCRT.dll 16 LDFLAGS += -FORCE /NODEFAULTLIB:MSVCRT.dll /STACK:12582912 17 LOADLIBS += legacy_stdio_definitions.lib 17 LOADLIBS += legacy_stdio_definitions.lib 18 18 19 SHEXT := dll 19 SHEXT := dll 20 AR := LIB 20 AR := LIB 21 ECHO := /usr/bin/echo -e 21 ECHO := /usr/bin/echo -e 22 FIND := /usr/bin/find 22 FIND := /usr/bin/find 23 SORT := /usr/bin/sort 23 SORT := /usr/bin/sort 24 GREP := /usr/bin/grep 24 GREP := /usr/bin/grep 25 SED := /usr/bin/sed 25 SED := /usr/bin/sed 26 CAT := /usr/bin/cat 26 CAT := /usr/bin/cat 27 CUT := /usr/bin/cut 27 CUT := /usr/bin/cut 28 TOUCH := /usr/bin/touch 28 TOUCH := /usr/bin/touch 29 29 30 FC := g77 30 FC := g77 31 # FCLIBS := -lf2c 31 # FCLIBS := -lf2c 32 ifndef OGLFLAGS 32 ifndef OGLFLAGS 33 OGLFLAGS := 33 OGLFLAGS := 34 endif 34 endif 35 ifndef OGLLIBS 35 ifndef OGLLIBS 36 OGLLIBS := opengl32.lib gdi32.lib user32 36 OGLLIBS := opengl32.lib gdi32.lib user32.lib 37 endif 37 endif 38 ifndef UI32LIBS 38 ifndef UI32LIBS 39 UI32LIBS := gdi32.lib user32.lib comctl32 39 UI32LIBS := gdi32.lib user32.lib comctl32.lib 40 endif 40 endif 41 ifndef QTHOME 41 ifndef QTHOME 42 QTHOME := /Qt 42 QTHOME := /Qt 43 endif 43 endif 44 ifndef QT_VERSION 44 ifndef QT_VERSION 45 QT_VERSION := 5 45 QT_VERSION := 5 46 endif 46 endif 47 ifndef QTFLAGS 47 ifndef QTFLAGS 48 QTFLAGS := -I$(QTHOME)/include 48 QTFLAGS := -I$(QTHOME)/include 49 QTFLAGS += -I$(QTHOME)/include/QtCore 49 QTFLAGS += -I$(QTHOME)/include/QtCore 50 QTFLAGS += -I$(QTHOME)/include/QtGui 50 QTFLAGS += -I$(QTHOME)/include/QtGui 51 QTFLAGS += -I$(QTHOME)/include/QtWidgets 51 QTFLAGS += -I$(QTHOME)/include/QtWidgets 52 QTFLAGS += -I$(QTHOME)/include/QtOpenGL 52 QTFLAGS += -I$(QTHOME)/include/QtOpenGL 53 ifeq ($(QT_VERSION),6) 53 ifeq ($(QT_VERSION),6) 54 QTFLAGS += -I $(QTHOME)/include/QtOpen 54 QTFLAGS += -I $(QTHOME)/include/QtOpenGLWidgets 55 endif 55 endif 56 endif 56 endif 57 ifndef QTMOC 57 ifndef QTMOC 58 QTMOC := $(QTHOME)/bin/moc 58 QTMOC := $(QTHOME)/bin/moc 59 endif 59 endif 60 ifeq ($(QT_VERSION),5) # Qt5 60 ifeq ($(QT_VERSION),5) # Qt5 61 ifndef QTLIBS 61 ifndef QTLIBS 62 QTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt5 62 QTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt5Core.lib Qt5Gui.lib Qt5Widgets.lib 63 ifndef GLQTLIBS 63 ifndef GLQTLIBS 64 GLQTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt5 64 GLQTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt5Core.lib Qt5Gui.lib Qt5Widgets.lib Qt5OpenGL.lib 65 endif 65 endif 66 else # Qt6 66 else # Qt6 67 ifndef QTLIBS 67 ifndef QTLIBS 68 QTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt6 68 QTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt6Core.lib Qt6Gui.lib Qt6Widgets.lib 69 ifndef GLQTLIBS 69 ifndef GLQTLIBS 70 GLQTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt6 70 GLQTLIBS := $(LIB_PATH)$(QTHOME)/lib Qt6Core.lib Qt6Gui.lib Qt6Widgets.lib Qt6OpenGL.lib Qt6OpenGLWidgets.lib 71 endif 71 endif 72 endif 72 endif 73 # 73 # 74 # Building DLLs 74 # Building DLLs 75 # ------------- 75 # ------------- 76 # The commands below allow to build DLLs from 76 # The commands below allow to build DLLs from the archive libraries. 77 # From a libG4xxx.a, will extract the symbols 77 # From a libG4xxx.a, will extract the symbols with the genwindef tool, 78 # which will produce a G4xxx.def file. 78 # which will produce a G4xxx.def file. 79 # The G4xxx.def file will contain the list of 79 # The G4xxx.def file will contain the list of symbols that are "exported" 80 # or made public for using the DLLs. 80 # or made public for using the DLLs. 81 # The source genwindef.cc is in the geant4/co 81 # The source genwindef.cc is in the geant4/config directory. The binary is 82 # built during the library installation proce 82 # built during the library installation process, and will be placed in 83 # $G4LIB/G4SYSTEM. 83 # $G4LIB/G4SYSTEM. 84 # If can also be built as follows : 84 # If can also be built as follows : 85 # DOS> cl.exe /Fegenwindef.exe genwindef.cc 85 # DOS> cl.exe /Fegenwindef.exe genwindef.cc 86 # Then, to use it : 86 # Then, to use it : 87 # DOS> genwindef -o G4xxx.def -l G4xxx libG 87 # DOS> genwindef -o G4xxx.def -l G4xxx libG4xxx.a 88 # Libraries libG4xxx.lib can also be built wi 88 # Libraries libG4xxx.lib can also be built with : 89 # DOS> lib /def:G4xxx.def /out:libG4xxx.lib 89 # DOS> lib /def:G4xxx.def /out:libG4xxx.lib 90 # It also produces a libG4xxx.exp used to bui 90 # It also produces a libG4xxx.exp used to build the DLL. 91 # The DLL can be built with : 91 # The DLL can be built with : 92 # DOS> link /dll /out:G4xxx.dll libG4xxx.ex 92 # DOS> link /dll /out:G4xxx.dll libG4xxx.exp libG4xxx.a <dependencies> 93 # Note that a DLL must be fully linked. You s 93 # Note that a DLL must be fully linked. You should NOT have undefined 94 # symbols as output of the link command. 94 # symbols as output of the link command. 95 # 95 # 96 ifdef G4LIB_USE_CLHEP 96 ifdef G4LIB_USE_CLHEP 97 GLOBLIBS += libG4clhep.lib 97 GLOBLIBS += libG4clhep.lib 98 endif 98 endif 99 ifdef G4LIB_USE_PTL 99 ifdef G4LIB_USE_PTL 100 GLOBLIBS += libG4ptl.lib 100 GLOBLIBS += libG4ptl.lib 101 endif 101 endif 102 define build-granular-shared-lib 102 define build-granular-shared-lib 103 @libdir=`(cd $(@D);/bin/pwd)`;\ 103 @libdir=`(cd $(@D);/bin/pwd)`;\ 104 cd $(G4TMP)/$(G4SYSTEM);\ 104 cd $(G4TMP)/$(G4SYSTEM);\ 105 $(ECHO) "Building $(name).def file ...";\ 105 $(ECHO) "Building $(name).def file ...";\ 106 $(RM) $(name).def;\ 106 $(RM) $(name).def;\ 107 $(G4LIB)/$(G4SYSTEM)/genwindef.exe -o $(na 107 $(G4LIB)/$(G4SYSTEM)/genwindef.exe -o $(name).def -l $(name) $(G4LIBDIR)/lib$(name).a;\ 108 $(ECHO) "Building lib$(name).exp and lib$( 108 $(ECHO) "Building lib$(name).exp and lib$(name).lib file ...";\ 109 $(RM) $(G4LIBDIR)/lib$(name).exp;\ 109 $(RM) $(G4LIBDIR)/lib$(name).exp;\ 110 $(RM) $(G4LIBDIR)/lib$(name).lib;\ 110 $(RM) $(G4LIBDIR)/lib$(name).lib;\ 111 lib.exe /nologo /machine:x64 /def:$(name). 111 lib.exe /nologo /machine:x64 /def:$(name).def \ 112 /out:$(G4LIBDIR)/lib$(name).lib;\ 112 /out:$(G4LIBDIR)/lib$(name).lib;\ 113 $(RM) $(G4LIBDIR)/$(name).dll;\ 113 $(RM) $(G4LIBDIR)/$(name).dll;\ 114 $(ECHO) "Building $(name).dll file ...";\ 114 $(ECHO) "Building $(name).dll file ...";\ 115 link.exe /nologo /machine:x64 /dll /out:$( 115 link.exe /nologo /machine:x64 /dll /out:$(G4LIBDIR)/$(name).dll \ 116 $(G4LIBDIR)/lib$(name).exp $(G4LI 116 $(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \ 117 $(LIB_PATH)$(G4LIBDIR) $(GLOBLIBS 117 $(LIB_PATH)$(G4LIBDIR) $(GLOBLIBS) \ 118 $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLH 118 $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \ 119 $(LIB_PATH)$(PTL_LIB_DIR) $(PTL_L 119 $(LIB_PATH)$(PTL_LIB_DIR) $(PTL_LIB) \ 120 $(INTYLIBS) $(GDMLLIBS) $(ANALYSI 120 $(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS) $(LOADLIBS) 121 endef 121 endef 122 define build-global-shared-lib 122 define build-global-shared-lib 123 @libdir=`(cd $(@D);/bin/pwd)`;\ 123 @libdir=`(cd $(@D);/bin/pwd)`;\ 124 cd $(G4TMP)/$(G4SYSTEM);\ 124 cd $(G4TMP)/$(G4SYSTEM);\ 125 $(ECHO) "Building $(name).def file ...";\ 125 $(ECHO) "Building $(name).def file ...";\ 126 $(RM) $(name).def;\ 126 $(RM) $(name).def;\ 127 $(G4LIB)/$(G4SYSTEM)/genwindef.exe -o $(na 127 $(G4LIB)/$(G4SYSTEM)/genwindef.exe -o $(name).def -l $(name) $(G4LIBDIR)/lib$(name).a;\ 128 $(ECHO) "Building lib$(name).exp and lib$( 128 $(ECHO) "Building lib$(name).exp and lib$(name).lib ...";\ 129 $(RM) $(G4LIBDIR)/lib$(name).exp;\ 129 $(RM) $(G4LIBDIR)/lib$(name).exp;\ 130 $(RM) $(G4LIBDIR)/lib$(name).lib;\ 130 $(RM) $(G4LIBDIR)/lib$(name).lib;\ 131 lib.exe /nologo /machine:x64 /def:$(name). 131 lib.exe /nologo /machine:x64 /def:$(name).def \ 132 /out:$(G4LIBDIR)/lib$(name).lib;\ 132 /out:$(G4LIBDIR)/lib$(name).lib;\ 133 $(RM) $(G4LIBDIR)/$(name).dll;\ 133 $(RM) $(G4LIBDIR)/$(name).dll;\ 134 $(ECHO) "Building $(name).dll ...";\ 134 $(ECHO) "Building $(name).dll ...";\ 135 link.exe /nologo /machine:x64 /dll /out:$( 135 link.exe /nologo /machine:x64 /dll /out:$(G4LIBDIR)/$(name).dll \ 136 $(G4LIBDIR)/lib$(name).exp $(G4LI 136 $(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \ 137 $(LIB_PATH)$(G4LIBDIR) $(GLOBLIBS 137 $(LIB_PATH)$(G4LIBDIR) $(GLOBLIBS) \ 138 $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLH 138 $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \ 139 $(LIB_PATH)$(PTL_LIB_DIR) $(PTL_L 139 $(LIB_PATH)$(PTL_LIB_DIR) $(PTL_LIB) \ 140 $(INTYLIBS) $(GDMLLIBS) $(ANALYSI 140 $(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS) $(LOADLIBS) 141 endef 141 endef 142 endif 142 endif