Geant4 Cross Reference |
1 # 1 # 2 # ------ GNU/LINUX ------ gcc 9.3 and higher << 2 # ------ GNU/LINUX ------ gcc 3.2 and higher 3 # 3 # 4 ifeq ($(G4SYSTEM),Linux-g++) 4 ifeq ($(G4SYSTEM),Linux-g++) 5 CXX := g++ 5 CXX := g++ 6 CXXFLAGS := -W -Wall -ansi -pedantic -Wno-n 6 CXXFLAGS := -W -Wall -ansi -pedantic -Wno-non-virtual-dtor -Wno-long-long 7 CXXFLAGS += -Wwrite-strings -Wpointer-arith << 7 CXXFLAGS += -Wwrite-strings -Wpointer-arith -Woverloaded-virtual -pipe 8 CXXFLAGS += -Wno-variadic-macros -Wshadow - << 8 # 9 CXXFLAGS += -fno-trapping-math -ftree-vecto << 9 # Uncomment the following options to activate Pentium4 chip specific 10 CPPFLAGS += -std=c++17 << 10 # floating-point operations on the SSE unit. It will allow for more stable 11 CXXFLAGS += -std=c++17 << 11 # results (no output differences between debug/optimised runs) and little 12 G4USE_STD17 := 1 << 12 # performance improvement (in the order of 2%). 13 ifdef G4MULTITHREADED << 13 # NOTE: binaries built using these options will NOT be portable cross 14 CXXFLAGS += -ftls-model=initial-exec -pthr << 14 # platforms. Will only run on Pentium4-based architectures ! 15 endif << 15 # >> 16 # CXXFLAGS += -march=pentium4 -mfpmath=sse 16 ifdef G4OPTIMISE 17 ifdef G4OPTIMISE 17 CXXFLAGS += -O3 << 18 CXXFLAGS += -O2 18 FCFLAGS := -O3 << 19 FCFLAGS := -O2 19 CCFLAGS := -O3 << 20 CCFLAGS := -O2 20 else 21 else 21 ifdef G4DEBUG 22 ifdef G4DEBUG 22 CXXFLAGS += -g 23 CXXFLAGS += -g 23 FCFLAGS := -g 24 FCFLAGS := -g 24 CCFLAGS := -g 25 CCFLAGS := -g 25 endif 26 endif 26 endif 27 endif 27 ifdef G4PROFILE 28 ifdef G4PROFILE 28 CXXFLAGS += -pg 29 CXXFLAGS += -pg 29 FCFLAGS += -pg 30 FCFLAGS += -pg 30 CCFLAGS += -pg 31 CCFLAGS += -pg 31 endif 32 endif 32 ifdef G4OPTDEBUG 33 ifdef G4OPTDEBUG 33 CXXFLAGS += -O2 -g 34 CXXFLAGS += -O2 -g 34 FCFLAGS += -O2 -g 35 FCFLAGS += -O2 -g 35 CCFLAGS += -O2 -g 36 CCFLAGS += -O2 -g 36 endif 37 endif 37 ifdef G4LIB_BUILD_SHARED 38 ifdef G4LIB_BUILD_SHARED 38 CPPFLAGS += -fPIC << 39 CXXFLAGS += -fPIC 39 CXXFLAGS += -fPIC 40 FCFLAGS += -fPIC 40 FCFLAGS += -fPIC 41 CCFLAGS += -fPIC 41 CCFLAGS += -fPIC 42 endif 42 endif 43 G4RUNPATHOPTION := -Wl,-rpath 43 G4RUNPATHOPTION := -Wl,-rpath 44 G4STATIC_MODE += -Wl,--whole-archive << 45 G4NOSTATIC_MODE += -Wl,--no-whole-archive << 46 CC := gcc 44 CC := gcc 47 FC := gfortran 45 FC := gfortran 48 FCFLAGS += -fno-automatic -fno-backslash -fn 46 FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore 49 FCLIBS := -lg2c -lnsl 47 FCLIBS := -lg2c -lnsl 50 ECHO := /bin/echo -e 48 ECHO := /bin/echo -e 51 SHEXT := so 49 SHEXT := so 52 ARCH := $(shell uname -m | cut -s -d "_" - 50 ARCH := $(shell uname -m | cut -s -d "_" -f 2) 53 LOADLIBS += -lm -lstdc++ 51 LOADLIBS += -lm -lstdc++ 54 ifndef X11FLAGS 52 ifndef X11FLAGS 55 X11FLAGS := -I/usr/include/X11/extensions 53 X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 56 endif 54 endif 57 ifndef X11LIBS 55 ifndef X11LIBS 58 X11LIBS := -L/usr/lib$(ARCH) -lXmu -lXt << 56 X11LIBS := -L/usr/X11R6/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE 59 endif 57 endif 60 ifndef XMFLAGS 58 ifndef XMFLAGS 61 XMFLAGS := -I/usr/include << 59 XMFLAGS := -I/usr/X11R6/include 62 endif 60 endif 63 ifndef XMLIBS 61 ifndef XMLIBS 64 XMLIBS := -lXm -lXpm 62 XMLIBS := -lXm -lXpm 65 endif 63 endif 66 ifndef XAWFLAGS 64 ifndef XAWFLAGS 67 XAWFLAGS := -I/usr/include << 65 XAWFLAGS := -I/usr/X11R6/include 68 endif 66 endif 69 ifndef XAWLIBS 67 ifndef XAWLIBS 70 XAWLIBS := -lXaw 68 XAWLIBS := -lXaw 71 endif 69 endif 72 DLDLIBS := -ldl 70 DLDLIBS := -ldl 73 ifndef OGLHOME << 74 OGLHOME := /usr << 75 endif << 76 ifndef OGLFLAGS 71 ifndef OGLFLAGS 77 OGLFLAGS := -I$(OGLHOME)/include 72 OGLFLAGS := -I$(OGLHOME)/include 78 endif 73 endif 79 ifndef OGLLIBS 74 ifndef OGLLIBS 80 OGLLIBS := -L$(OGLHOME)/lib$(ARCH) -lGL << 75 OGLLIBS := -L$(OGLHOME)/lib$(ARCH) -lGLU -lGL 81 endif 76 endif 82 77 83 # ---- QT Setup block ------------------------ 78 # ---- QT Setup block ------------------------------------------------------- 84 79 85 ifndef QTHOME 80 ifndef QTHOME 86 QTHOME := /usr 81 QTHOME := /usr 87 endif 82 endif 88 ifndef QTMOC 83 ifndef QTMOC 89 QTMOC := $(QTHOME)/bin/moc 84 QTMOC := $(QTHOME)/bin/moc 90 endif 85 endif 91 86 92 ifndef QT_VERSION << 87 QT_VERSION := $(shell $(QTMOC) 2>&1 -v | sed 's/.* .Qt \([0-9]\)\..*/\1/' ) 93 QT_VERSION := 5 << 94 endif << 95 88 96 ifndef QTFLAGS 89 ifndef QTFLAGS 97 QTFLAGS := -I $(QTHOME)/include -I$(QTHO << 90 QTFLAGS := -I$(QTHOME)/include -I$(QTHOME)/include/Qt 98 QTFLAGS += -I $(QTHOME)/include/QtCore << 91 QTFLAGS += -I$(QTHOME)/include/QtCore 99 QTFLAGS += -I $(QTHOME)/include/QtGui << 92 QTFLAGS += -I$(QTHOME)/include/QtGui 100 QTFLAGS += -I $(QTHOME)/include/QtWidget << 93 QTFLAGS += -I$(QTHOME)/include/QtOpenGL 101 QTFLAGS += -I $(QTHOME)/include/QtOpenGL << 102 QTFLAGS += -I $(QTHOME)/include/Qt3DCore << 103 QTFLAGS += -I $(QTHOME)/include/Qt3DExtr << 104 QTFLAGS += -I $(QTHOME)/include/Qt3DRend << 105 ifeq ($(QT_VERSION),6) << 106 QTFLAGS += -I $(QTHOME)/include/QtOpen << 107 endif << 108 endif 94 endif 109 ifndef QTLIBPATH 95 ifndef QTLIBPATH 110 QTLIBPATH := $(QTHOME)/lib 96 QTLIBPATH := $(QTHOME)/lib 111 QT_SEARCH_LIB := $(shell ls $(QTLIBPATH)/ 97 QT_SEARCH_LIB := $(shell ls $(QTLIBPATH)/qt$(QT_VERSION)/libq* 2>/dev/null | wc -l ) 112 ifneq ($(QT_SEARCH_LIB),0) 98 ifneq ($(QT_SEARCH_LIB),0) 113 QTLIBPATH := $(QTHOME)/lib/qt$(QT_VERSIO 99 QTLIBPATH := $(QTHOME)/lib/qt$(QT_VERSION) 114 endif 100 endif 115 endif 101 endif 116 ifeq ($(QT_VERSION),5) # Qt5 << 102 ifndef QTLIBS 117 ifndef QTLIBS << 103 QTLIBS := -L$(QTLIBPATH) -lQtCore -lQtGui 118 QTLIBS := -L$(QTLIBPATH) -lQt5Core -lQ << 104 endif 119 endif << 105 ifndef GLQTLIBS 120 ifndef QT3DLIBS << 106 GLQTLIBS := -L$(QTLIBPATH) -lQtCore -lQtGui -lQtOpenGL 121 QT3DLIBS := -L$(QTLIBPATH) -lQt5Core -lQ << 122 endif << 123 ifndef GLQTLIBS << 124 GLQTLIBS := -L$(QTLIBPATH) -lQt5Core -lQ << 125 endif << 126 else # Qt6 << 127 ifndef QTLIBS << 128 QTLIBS := -L$(QTLIBPATH) -lQt6Core -lQ << 129 endif << 130 ifndef QT3DLIBS << 131 QT3DLIBS := -L$(QTLIBPATH) -lQt6Core -lQ << 132 endif << 133 ifndef GLQTLIBS << 134 GLQTLIBS := -L$(QTLIBPATH) -lQt6Core -lQ << 135 endif << 136 endif 107 endif 137 108 138 #--------------------------------------------- 109 #---------------------------------------------------------------------------- 139 110 140 define build-granular-shared-lib 111 define build-granular-shared-lib 141 @libdir=`(cd $(@D);/bin/pwd)`; \ 112 @libdir=`(cd $(@D);/bin/pwd)`; \ 142 cd $(G4TMPDIR); \ 113 cd $(G4TMPDIR); \ 143 $(CXX) -Wl,-soname,$(@F) -shared -o $$lib 114 $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) *.o 144 endef 115 endef 145 define build-global-shared-lib 116 define build-global-shared-lib 146 @libdir=`(cd $(@D);/bin/pwd)`; \ 117 @libdir=`(cd $(@D);/bin/pwd)`; \ 147 cd $(G4TMP)/$(G4SYSTEM); \ 118 cd $(G4TMP)/$(G4SYSTEM); \ 148 $(CXX) -Wl,-soname,$(@F) -shared -o $$lib 119 $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) \ 149 $(foreach dir,$(SUBLIBS),$ 120 $(foreach dir,$(SUBLIBS),$(dir)/*.o); 150 endef 121 endef 151 122 152 endif 123 endif