# # ------ WIN32/VC ------ Visual-C++ 7 .NET and higher # ifeq ($(G4SYSTEM),WIN32-VC) CXX := CL ifdef G4OPTIMISE CXXFLAGS += -Ox else ifdef G4DEBUG CXXFLAGS += -Od -Zi -Fd$(G4LIBDIR)/lib$(name) endif endif CXXFLAGS += -MD -GR -EHsc -Zm200 -nologo CXXFLAGS += -D_CONSOLE -D_WIN32 -DOS CPPFLAGS += -DWIN32 -DXPNET -D_CRT_SECURE_NO_DEPRECATE LDFLAGS += -FORCE /NODEFAULTLIB:MSVCRT.dll SHEXT := dll AR := LIB ECHO := /usr/bin/echo -e GREP := /usr/bin/grep SED := /usr/bin/sed CAT := /usr/bin/cat CUT := /usr/bin/cut FC := g77 # FCLIBS := -lf2c ifndef OGLFLAGS OGLFLAGS := endif ifndef OGLLIBS OGLLIBS := glu32.lib opengl32.lib endif ifndef UI32LIBS UI32LIBS := gdi32.lib user32.lib endif ifndef QTHOME QTHOME := /usr endif ifndef QTFLAGS QTFLAGS := -I$(QTHOME)/include/Qt -I$(QTHOME)/include endif ifndef QTMOC QTMOC := $(QTHOME)/bin/moc endif QT_VERSION := $(shell test -f $(QTHOME)/lib/Qt3Support4.lib && echo QT4 || echo QT3) ifndef QTLIBS ifeq ($(QT_VERSION),QT3) QTLIBS := -L$(QTHOME)/lib -lqt-mt else QTLIBS := -L$(QTHOME)/lib QtCore4.lib QtGui4.lib endif endif ifndef GLQTLIBS ifeq ($(QT_VERSION),QT3) QTLIBS := -L$(QTHOME)/lib -lqt-mt else QTLIBS := -L$(QTHOME)/lib QtCore4.lib QtGui4.lib QtOpenGL4.lib endif endif # # Building DLLs (G.Barrand) # ------------- # The commands below allow to build DLLs from the archive libraries. # From a libG4xxx.a, it will extract the symbols with : # DOS> dumpbin /symbols libG4xxx.a > G4xxx.dumpbin # After that it will produce a G4xxx.def using the 'win32def' program. # The G4xxx.def file will contain the list of symbols that are "exported" # or made public for using the DLLs. # The source win32def.c is in the geant4/config directory. The binary is # built during the library installation process, and will be placed in # $G4LIB/G4SYSTEM. # If can also be built as follows : # DOS> cl.exe /Fowin32def.exe win32def.c # Then, to use it : # DOS> win32def G4xxx < G4xxx.dumpbin > G4xxx.def # Libraries libG4xxx.lib can also be built with : # DOS> lib /def:G4xxx.def /out:libG4xxx.lib # It also produces a libG4xxx.exp used to build the DLL. # The DLL can be built with : # DOS> link /dll /out:G4xxx.dll libG4xxx.exp libG4xxx.a # Note that a DLL must be fully linked. You should NOT have undefined # symbols as output of the link command. # define build-granular-shared-lib @libdir=`(cd $(@D);/bin/pwd)`;\ cd $(G4TMP)/$(G4SYSTEM);\ $(ECHO) "Building $(name).dumpbin file ...";\ $(RM) $(name).dumpbin;\ dumpbin /symbols $(G4LIBDIR)/lib$(name).a > $(name).dumpbin;\ $(ECHO) "Building $(name).def file ...";\ $(RM) $(name).def;\ $(G4LIB)/$(G4SYSTEM)/win32def.exe $(name) < $(name).dumpbin > $(name).def;\ $(RM) $(name).dumpbin;\ $(ECHO) "Building lib$(name).exp and lib$(name).lib file ...";\ $(RM) $(G4LIBDIR)/lib$(name).exp;\ $(RM) $(G4LIBDIR)/lib$(name).lib;\ lib.exe /nologo /machine:ix86 /def:$(name).def \ /out:$(G4LIBDIR)/lib$(name).lib;\ $(RM) $(G4LIBDIR)/$(name).dll;\ $(ECHO) "Building $(name).dll file ...";\ link.exe /nologo /dll /out:$(G4LIBDIR)/$(name).dll \ $(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \ /libpath:$(G4LIBDIR) $(GLOBLIBS) \ $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \ $(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS) endef define build-global-shared-lib @libdir=`(cd $(@D);/bin/pwd)`;\ cd $(G4TMP)/$(G4SYSTEM);\ $(ECHO) "Building $(name).dumpbin file ...";\ $(RM) $(name).dumpbin;\ dumpbin /symbols $(G4LIBDIR)/lib$(name).a > $(name).dumpbin;\ $(ECHO) "Building $(name).def file ...";\ $(RM) $(name).def;\ $(G4LIB)/$(G4SYSTEM)/win32def.exe $(name) < $(name).dumpbin > $(name).def;\ $(RM) $(name).dumpbin;\ $(ECHO) "Building lib$(name).exp and lib$(name).lib ...";\ $(RM) $(G4LIBDIR)/lib$(name).exp;\ $(RM) $(G4LIBDIR)/lib$(name).lib;\ lib.exe /nologo /machine:ix86 /def:$(name).def \ /out:$(G4LIBDIR)/lib$(name).lib;\ $(RM) $(G4LIBDIR)/$(name).dll;\ $(ECHO) "Building $(name).dll ...";\ link.exe /nologo /dll /out:$(G4LIBDIR)/$(name).dll \ $(G4LIBDIR)/lib$(name).exp $(G4LIBDIR)/lib$(name).a \ /libpath:$(G4LIBDIR) $(GLOBLIBS) \ $(LIB_PATH)$(CLHEP_LIB_DIR) $(CLHEP_LIB) \ $(INTYLIBS) $(GDMLLIBS) $(ANALYSISLIBS) $(UI32LIBS) endef endif