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