Geant4 Cross Reference |
1 # 1 # 2 # ------ GNU/LINUX ------ gcc 9.3 and higher << 2 # ------ GNU/LINUX ------ gcc 4.8 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 8 CXXFLAGS += -Wno-variadic-macros -Wshadow - << 8 CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe -pthread 9 CXXFLAGS += -fno-trapping-math -ftree-vecto 9 CXXFLAGS += -fno-trapping-math -ftree-vectorize -fno-math-errno 10 CPPFLAGS += -std=c++17 << 10 ifdef G4USE_STD14 11 CXXFLAGS += -std=c++17 << 11 CPPFLAGS += -std=c++14 12 G4USE_STD17 := 1 << 12 CXXFLAGS += -std=c++14 >> 13 else >> 14 ifdef G4USE_STD17 >> 15 CPPFLAGS += -std=c++17 >> 16 CXXFLAGS += -std=c++17 >> 17 else >> 18 CXXFLAGS += -std=c++11 >> 19 CPPFLAGS += -std=c++11 >> 20 endif >> 21 endif 13 ifdef G4MULTITHREADED 22 ifdef G4MULTITHREADED 14 CXXFLAGS += -ftls-model=initial-exec -pthr << 23 CXXFLAGS += -ftls-model=initial-exec 15 endif 24 endif 16 ifdef G4OPTIMISE 25 ifdef G4OPTIMISE 17 CXXFLAGS += -O3 26 CXXFLAGS += -O3 18 FCFLAGS := -O3 27 FCFLAGS := -O3 19 CCFLAGS := -O3 28 CCFLAGS := -O3 20 else 29 else 21 ifdef G4DEBUG 30 ifdef G4DEBUG 22 CXXFLAGS += -g 31 CXXFLAGS += -g 23 FCFLAGS := -g 32 FCFLAGS := -g 24 CCFLAGS := -g 33 CCFLAGS := -g 25 endif 34 endif 26 endif 35 endif 27 ifdef G4PROFILE 36 ifdef G4PROFILE 28 CXXFLAGS += -pg 37 CXXFLAGS += -pg 29 FCFLAGS += -pg 38 FCFLAGS += -pg 30 CCFLAGS += -pg 39 CCFLAGS += -pg 31 endif 40 endif 32 ifdef G4OPTDEBUG 41 ifdef G4OPTDEBUG 33 CXXFLAGS += -O2 -g 42 CXXFLAGS += -O2 -g 34 FCFLAGS += -O2 -g 43 FCFLAGS += -O2 -g 35 CCFLAGS += -O2 -g 44 CCFLAGS += -O2 -g 36 endif 45 endif 37 ifdef G4LIB_BUILD_SHARED 46 ifdef G4LIB_BUILD_SHARED 38 CPPFLAGS += -fPIC << 39 CXXFLAGS += -fPIC 47 CXXFLAGS += -fPIC 40 FCFLAGS += -fPIC 48 FCFLAGS += -fPIC 41 CCFLAGS += -fPIC 49 CCFLAGS += -fPIC 42 endif 50 endif 43 G4RUNPATHOPTION := -Wl,-rpath 51 G4RUNPATHOPTION := -Wl,-rpath 44 G4STATIC_MODE += -Wl,--whole-archive 52 G4STATIC_MODE += -Wl,--whole-archive 45 G4NOSTATIC_MODE += -Wl,--no-whole-archive 53 G4NOSTATIC_MODE += -Wl,--no-whole-archive 46 CC := gcc 54 CC := gcc 47 FC := gfortran 55 FC := gfortran 48 FCFLAGS += -fno-automatic -fno-backslash -fn 56 FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore 49 FCLIBS := -lg2c -lnsl 57 FCLIBS := -lg2c -lnsl 50 ECHO := /bin/echo -e 58 ECHO := /bin/echo -e 51 SHEXT := so 59 SHEXT := so 52 ARCH := $(shell uname -m | cut -s -d "_" - 60 ARCH := $(shell uname -m | cut -s -d "_" -f 2) 53 LOADLIBS += -lm -lstdc++ 61 LOADLIBS += -lm -lstdc++ 54 ifndef X11FLAGS 62 ifndef X11FLAGS 55 X11FLAGS := -I/usr/include/X11/extensions 63 X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11 56 endif 64 endif 57 ifndef X11LIBS 65 ifndef X11LIBS 58 X11LIBS := -L/usr/lib$(ARCH) -lXmu -lXt << 66 X11LIBS := -L/usr/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE 59 endif 67 endif 60 ifndef XMFLAGS 68 ifndef XMFLAGS 61 XMFLAGS := -I/usr/include 69 XMFLAGS := -I/usr/include 62 endif 70 endif 63 ifndef XMLIBS 71 ifndef XMLIBS 64 XMLIBS := -lXm -lXpm 72 XMLIBS := -lXm -lXpm 65 endif 73 endif 66 ifndef XAWFLAGS 74 ifndef XAWFLAGS 67 XAWFLAGS := -I/usr/include 75 XAWFLAGS := -I/usr/include 68 endif 76 endif 69 ifndef XAWLIBS 77 ifndef XAWLIBS 70 XAWLIBS := -lXaw 78 XAWLIBS := -lXaw 71 endif 79 endif 72 DLDLIBS := -ldl 80 DLDLIBS := -ldl 73 ifndef OGLHOME 81 ifndef OGLHOME 74 OGLHOME := /usr 82 OGLHOME := /usr 75 endif 83 endif 76 ifndef OGLFLAGS 84 ifndef OGLFLAGS 77 OGLFLAGS := -I$(OGLHOME)/include 85 OGLFLAGS := -I$(OGLHOME)/include 78 endif 86 endif 79 ifndef OGLLIBS 87 ifndef OGLLIBS 80 OGLLIBS := -L$(OGLHOME)/lib$(ARCH) -lGL 88 OGLLIBS := -L$(OGLHOME)/lib$(ARCH) -lGL 81 endif 89 endif 82 90 83 # ---- QT Setup block ------------------------ 91 # ---- QT Setup block ------------------------------------------------------- 84 92 85 ifndef QTHOME 93 ifndef QTHOME 86 QTHOME := /usr 94 QTHOME := /usr 87 endif 95 endif 88 ifndef QTMOC 96 ifndef QTMOC 89 QTMOC := $(QTHOME)/bin/moc 97 QTMOC := $(QTHOME)/bin/moc 90 endif 98 endif 91 99 92 ifndef QT_VERSION 100 ifndef QT_VERSION 93 QT_VERSION := 5 101 QT_VERSION := 5 94 endif 102 endif 95 103 96 ifndef QTFLAGS << 104 ifeq ($(QT_VERSION),5) 97 QTFLAGS := -I $(QTHOME)/include -I$(QTHO << 105 ifndef QTFLAGS # Qt5 98 QTFLAGS += -I $(QTHOME)/include/QtCore << 106 QTFLAGS := -I $(QTHOME)/include -I$(QTHOME)/include/Qt 99 QTFLAGS += -I $(QTHOME)/include/QtGui << 107 QTFLAGS += -I $(QTHOME)/include/QtCore 100 QTFLAGS += -I $(QTHOME)/include/QtWidget << 108 QTFLAGS += -I $(QTHOME)/include/QtGui 101 QTFLAGS += -I $(QTHOME)/include/QtOpenGL << 109 QTFLAGS += -I $(QTHOME)/include/QtWidgets 102 QTFLAGS += -I $(QTHOME)/include/Qt3DCore << 110 QTFLAGS += -I $(QTHOME)/include/QtOpenGL 103 QTFLAGS += -I $(QTHOME)/include/Qt3DExtr << 111 QTFLAGS += -I $(QTHOME)/include/Qt3DCore 104 QTFLAGS += -I $(QTHOME)/include/Qt3DRend << 112 QTFLAGS += -I $(QTHOME)/include/Qt3DExtras 105 ifeq ($(QT_VERSION),6) << 113 QTFLAGS += -I $(QTHOME)/include/Qt3DRender 106 QTFLAGS += -I $(QTHOME)/include/QtOpen << 114 QTFLAGS += -I $(QTHOME)/include/QtPrintSupport >> 115 endif >> 116 else # Qt4 >> 117 ifndef QTFLAGS >> 118 QTFLAGS := -I$(QTHOME)/include -I$(QTHOME)/include/Qt >> 119 QTFLAGS += -I$(QTHOME)/include/QtCore >> 120 QTFLAGS += -I$(QTHOME)/include/QtGui >> 121 QTFLAGS += -I$(QTHOME)/include/QtOpenGL 107 endif 122 endif 108 endif 123 endif 109 ifndef QTLIBPATH 124 ifndef QTLIBPATH 110 QTLIBPATH := $(QTHOME)/lib 125 QTLIBPATH := $(QTHOME)/lib 111 QT_SEARCH_LIB := $(shell ls $(QTLIBPATH)/ 126 QT_SEARCH_LIB := $(shell ls $(QTLIBPATH)/qt$(QT_VERSION)/libq* 2>/dev/null | wc -l ) 112 ifneq ($(QT_SEARCH_LIB),0) 127 ifneq ($(QT_SEARCH_LIB),0) 113 QTLIBPATH := $(QTHOME)/lib/qt$(QT_VERSIO 128 QTLIBPATH := $(QTHOME)/lib/qt$(QT_VERSION) 114 endif 129 endif 115 endif 130 endif 116 ifeq ($(QT_VERSION),5) # Qt5 << 131 ifeq ($(QT_VERSION),5) 117 ifndef QTLIBS << 132 ifndef QTLIBS # Qt5 118 QTLIBS := -L$(QTLIBPATH) -lQt5Core -lQ << 133 QTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5PrintSupport 119 endif 134 endif 120 ifndef QT3DLIBS 135 ifndef QT3DLIBS 121 QT3DLIBS := -L$(QTLIBPATH) -lQt5Core -lQ << 136 QT3DLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt53DCore -lQt53DExtras -lQt53DRender -lQt5PrintSupport 122 endif 137 endif 123 ifndef GLQTLIBS 138 ifndef GLQTLIBS 124 GLQTLIBS := -L$(QTLIBPATH) -lQt5Core -lQ << 139 GLQTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5OpenGL -lQt5PrintSupport 125 endif 140 endif 126 else # Qt6 << 141 else # Qt4 127 ifndef QTLIBS 142 ifndef QTLIBS 128 QTLIBS := -L$(QTLIBPATH) -lQt6Core -lQ << 143 QTLIBS := -L$(QTLIBPATH) -lQtCore -lQtGui 129 endif << 130 ifndef QT3DLIBS << 131 QT3DLIBS := -L$(QTLIBPATH) -lQt6Core -lQ << 132 endif 144 endif 133 ifndef GLQTLIBS 145 ifndef GLQTLIBS 134 GLQTLIBS := -L$(QTLIBPATH) -lQt6Core -lQ << 146 GLQTLIBS := -L$(QTLIBPATH) -lQtCore -lQtGui -lQtOpenGL 135 endif 147 endif 136 endif 148 endif 137 149 138 #--------------------------------------------- 150 #---------------------------------------------------------------------------- 139 151 140 define build-granular-shared-lib 152 define build-granular-shared-lib 141 @libdir=`(cd $(@D);/bin/pwd)`; \ 153 @libdir=`(cd $(@D);/bin/pwd)`; \ 142 cd $(G4TMPDIR); \ 154 cd $(G4TMPDIR); \ 143 $(CXX) -Wl,-soname,$(@F) -shared -o $$lib 155 $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) *.o 144 endef 156 endef 145 define build-global-shared-lib 157 define build-global-shared-lib 146 @libdir=`(cd $(@D);/bin/pwd)`; \ 158 @libdir=`(cd $(@D);/bin/pwd)`; \ 147 cd $(G4TMP)/$(G4SYSTEM); \ 159 cd $(G4TMP)/$(G4SYSTEM); \ 148 $(CXX) -Wl,-soname,$(@F) -shared -o $$lib 160 $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) \ 149 $(foreach dir,$(SUBLIBS),$ 161 $(foreach dir,$(SUBLIBS),$(dir)/*.o); 150 endef 162 endef 151 163 152 endif 164 endif