Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/config/sys/WIN32-VC.gmk

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

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