Geant4 Cross Reference |
1 # 1 # 2 # ------ macOS ------ << 2 # ------ MacOS-X ------ 3 # macOS, gcc-9 << 3 # MacOS 10.8/9/10/11, gcc-4.8 and higher 4 # 4 # 5 # Original author: Helmut Burkhardt - CERN 5 # Original author: Helmut Burkhardt - CERN 6 # Revisions: Guy Barrand - LAL 6 # Revisions: Guy Barrand - LAL 7 # Gabriele Cosmo - CERN 7 # Gabriele Cosmo - CERN 8 # Laurent Garnier - LAL 8 # Laurent Garnier - LAL 9 # 9 # 10 ifeq ($(G4SYSTEM),Darwin-g++) 10 ifeq ($(G4SYSTEM),Darwin-g++) 11 CXX := g++ 11 CXX := g++ 12 CXXFLAGS := -Wall -Wno-non-virtual-dtor -Wn 12 CXXFLAGS := -Wall -Wno-non-virtual-dtor -Wno-long-long 13 CXXFLAGS += -Wwrite-strings -Wpointer-arith 13 CXXFLAGS += -Wwrite-strings -Wpointer-arith -Woverloaded-virtual 14 CXXFLAGS += -Wno-variadic-macros -Wshadow - 14 CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe 15 CXXFLAGS += -fno-trapping-math -ftree-vecto 15 CXXFLAGS += -fno-trapping-math -ftree-vectorize -fno-math-errno 16 CPPFLAGS += -DGL_SILENCE_DEPRECATION 16 CPPFLAGS += -DGL_SILENCE_DEPRECATION 17 CPPFLAGS += -std=c++17 << 17 ifdef G4USE_STD14 18 CXXFLAGS += -std=c++17 << 18 CPPFLAGS += -std=c++14 19 # CXXFLAGS += -stdlib=libstdc++ << 19 CXXFLAGS += -std=c++14 20 G4USE_STD17 := 1 << 20 else 21 ifdef G4MULTITHREADED << 21 ifdef G4USE_STD17 22 CXXFLAGS += -ftls-model=initial-exec -pthr << 22 CPPFLAGS += -std=c++17 >> 23 CXXFLAGS += -std=c++17 >> 24 else >> 25 CXXFLAGS += -std=c++11 >> 26 CPPFLAGS += -std=c++11 >> 27 endif 23 endif 28 endif >> 29 # CXXFLAGS += -stdlib=libstdc++ 24 ifdef G4OPTIMISE 30 ifdef G4OPTIMISE 25 CXXFLAGS += -O3 31 CXXFLAGS += -O3 26 FCFLAGS := -O3 32 FCFLAGS := -O3 27 CCFLAGS := -O3 33 CCFLAGS := -O3 28 else 34 else 29 ifdef G4DEBUG 35 ifdef G4DEBUG 30 CXXFLAGS += -g 36 CXXFLAGS += -g 31 FCFLAGS := -g 37 FCFLAGS := -g 32 CCFLAGS := -g 38 CCFLAGS := -g 33 endif 39 endif 34 endif 40 endif 35 ifdef G4PROFILE 41 ifdef G4PROFILE 36 CXXFLAGS += -pg 42 CXXFLAGS += -pg 37 FCFLAGS += -pg 43 FCFLAGS += -pg 38 CCFLAGS += -pg 44 CCFLAGS += -pg 39 endif 45 endif 40 ifdef G4OPTDEBUG 46 ifdef G4OPTDEBUG 41 CXXFLAGS += -O2 -g 47 CXXFLAGS += -O2 -g 42 FCFLAGS += -O2 -g 48 FCFLAGS += -O2 -g 43 CCFLAGS += -O2 -g 49 CCFLAGS += -O2 -g 44 endif 50 endif 45 ifdef G4LIB_BUILD_SHARED 51 ifdef G4LIB_BUILD_SHARED 46 CXXFLAGS += -fPIC 52 CXXFLAGS += -fPIC 47 FCFLAGS += -fPIC 53 FCFLAGS += -fPIC 48 CCFLAGS += -fPIC 54 CCFLAGS += -fPIC 49 endif 55 endif 50 G4RUNPATHOPTION := -Wl,-rpath, 56 G4RUNPATHOPTION := -Wl,-rpath, 51 # G4STATIC_MODE += -Wl,-force_load 57 # G4STATIC_MODE += -Wl,-force_load 52 FC := gfortran 58 FC := gfortran 53 FCFLAGS += -fno-automatic -fno-backslash -fn 59 FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore 54 LDFLAGS += -bind_at_load 60 LDFLAGS += -bind_at_load 55 FCLIBS := -lg2c -lnsl 61 FCLIBS := -lg2c -lnsl 56 SHEXT := dylib 62 SHEXT := dylib 57 LOADLIBS += -lm 63 LOADLIBS += -lm 58 ifndef X11FLAGS 64 ifndef X11FLAGS 59 X11FLAGS := -I/usr/X11/include 65 X11FLAGS := -I/usr/X11/include 60 endif 66 endif 61 ifndef X11LIBS 67 ifndef X11LIBS 62 X11LIBS := -L/usr/X11/lib -lXmu -lXt -l << 68 X11LIBS := -L/usr/X11/lib -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE 63 endif 69 endif 64 ifndef XMFLAGS 70 ifndef XMFLAGS 65 XMFLAGS := -I/usr/local/include 71 XMFLAGS := -I/usr/local/include 66 # XMFLAGS := -I/usr/X11/include # 72 # XMFLAGS := -I/usr/X11/include ##### some installations. 67 endif 73 endif 68 ifndef XMLIBS 74 ifndef XMLIBS 69 XMLIBS := -L/usr/local/lib -lXm -lXpm 75 XMLIBS := -L/usr/local/lib -lXm -lXpm 70 # XMLIBS := -L/usr/X11/lib -lXm -lXpm # 76 # XMLIBS := -L/usr/X11/lib -lXm -lXpm ##### some installations. 71 endif 77 endif 72 ifndef XAWFLAGS 78 ifndef XAWFLAGS 73 XAWFLAGS := -I/usr/local/include 79 XAWFLAGS := -I/usr/local/include 74 # XAWFLAGS := -I/usr/X11/include # 80 # XAWFLAGS := -I/usr/X11/include ##### some installations. 75 endif 81 endif 76 ifndef XAWLIBS 82 ifndef XAWLIBS 77 XAWLIBS := -lXaw 83 XAWLIBS := -lXaw 78 endif 84 endif 79 DLDLIBS := -ldl 85 DLDLIBS := -ldl 80 ifndef OGLHOME 86 ifndef OGLHOME 81 OGLHOME := /usr/X11 87 OGLHOME := /usr/X11 82 # OGLHOME := /System/Library/Frameworks/Ope 88 # OGLHOME := /System/Library/Frameworks/OpenGL.framework 83 endif 89 endif 84 ifndef OGLFLAGS 90 ifndef OGLFLAGS 85 OGLFLAGS := -I$(OGLHOME)/include 91 OGLFLAGS := -I$(OGLHOME)/include 86 # OGLFLAGS := -I$(OGLHOME)/Headers 92 # OGLFLAGS := -I$(OGLHOME)/Headers 87 endif 93 endif 88 ifndef OGLLIBS 94 ifndef OGLLIBS 89 OGLPATH := $(shell test -f /Library/Frame 95 OGLPATH := $(shell test -f /Library/Frameworks/OpenGL.framework/OpenGL && echo "/Library/Frameworks/OpenGL.framework") 90 ifneq ($(OGLPATH),/Library/Frameworks/Open 96 ifneq ($(OGLPATH),/Library/Frameworks/OpenGL.framework) 91 OGLPATH := $(shell test -f /System/Libr 97 OGLPATH := $(shell test -f /System/Library/Frameworks/OpenGL.framework/OpenGL && echo "/System/Library/Frameworks/OpenGL.framework") 92 endif 98 endif 93 ifneq ($(OGLPATH),) 99 ifneq ($(OGLPATH),) 94 OGLLIBS := -F$(OGLPATH)/.. -framework Op 100 OGLLIBS := -F$(OGLPATH)/.. -framework OpenGL -framework AGL 95 else 101 else 96 OGLLIBS := -L$(OGLHOME)/lib -lGL 102 OGLLIBS := -L$(OGLHOME)/lib -lGL 97 endif 103 endif 98 endif 104 endif 99 ifndef OGLLIBS 105 ifndef OGLLIBS 100 OGLPATH := $(shell test -f /Library/Frame 106 OGLPATH := $(shell test -f /Library/Frameworks/OpenGL.framework/OpenGL && echo "/Library/Frameworks/OpenGL.framework") 101 ifneq ($(OGLPATH),/Library/Frameworks/Open 107 ifneq ($(OGLPATH),/Library/Frameworks/OpenGL.framework) 102 OGLPATH := $(shell test -f /System/Libr 108 OGLPATH := $(shell test -f /System/Library/Frameworks/OpenGL.framework/OpenGL && echo "/System/Library/Frameworks/OpenGL.framework") 103 endif 109 endif 104 ifneq ($(OGLPATH),) 110 ifneq ($(OGLPATH),) 105 DARWIN_VERSION = $(shell uname -r | sed 111 DARWIN_VERSION = $(shell uname -r | sed 's/\([0-9]*\).[0-9]*.[0-9]*/\1/') 106 ifeq ($(DARWIN_VERSION),9) 112 ifeq ($(DARWIN_VERSION),9) 107 # the following lines are for building 113 # the following lines are for building on MacOSX 10.5 "Leopard" 108 OGLLIBS := -Wl,$(OGLPATH)/Libraries/li 114 OGLLIBS := -Wl,$(OGLPATH)/Libraries/libGL.dylib -L$(OGLHOME)/lib -lGL 109 else 115 else 110 # the following lines are for building 116 # the following lines are for building on MacOSX > 10.5 111 OGLLIBS := -F$(OGLPATH)/.. -framework 117 OGLLIBS := -F$(OGLPATH)/.. -framework OpenGL -framework AGL 112 endif 118 endif 113 else 119 else 114 OGLLIBS := -L$(OGLHOME)/lib -lGL 120 OGLLIBS := -L$(OGLHOME)/lib -lGL 115 endif 121 endif 116 endif 122 endif 117 123 118 # ---- Qt Setup block ------------------------ 124 # ---- Qt Setup block ------------------------------------------------------- 119 125 120 ifndef QTHOME 126 ifndef QTHOME 121 QTHOME := /Library/Frameworks 127 QTHOME := /Library/Frameworks 122 endif 128 endif 123 ifndef QT_VERSION << 124 QT_VERSION := 5 << 125 endif << 126 ifeq ($(QTHOME),/Library/Frameworks) 129 ifeq ($(QTHOME),/Library/Frameworks) 127 ifndef QTMOC 130 ifndef QTMOC 128 QTMOC := /usr/bin/moc 131 QTMOC := /usr/bin/moc 129 endif 132 endif 130 ifndef QTFLAGS 133 ifndef QTFLAGS 131 QTFLAGS := -I $(QTHOME)/QtCore.framewo 134 QTFLAGS := -I $(QTHOME)/QtCore.framework/Headers 132 QTFLAGS += -I $(QTHOME)/QtGui.framewor 135 QTFLAGS += -I $(QTHOME)/QtGui.framework/Headers 133 QTFLAGS += -I $(QTHOME)/QtWidgets.fram 136 QTFLAGS += -I $(QTHOME)/QtWidgets.framework/Headers 134 QTFLAGS += -I $(QTHOME)/QtOpenGL.frame 137 QTFLAGS += -I $(QTHOME)/QtOpenGL.framework/Headers 135 QTFLAGS += -I $(QTHOME)/Qt3DCore.frame 138 QTFLAGS += -I $(QTHOME)/Qt3DCore.framework/Headers 136 QTFLAGS += -I $(QTHOME)/Qt3DExtras.fra 139 QTFLAGS += -I $(QTHOME)/Qt3DExtras.framework/Headers 137 QTFLAGS += -I $(QTHOME)/Qt3DRender.fra 140 QTFLAGS += -I $(QTHOME)/Qt3DRender.framework/Headers 138 ifeq ($(QT_VERSION),6) << 139 QTFLAGS += -I $(QTHOME)/QtOpenGLWidg << 140 endif << 141 QTFLAGS += -I $(QTHOME)/include/Qt -I$ 141 QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include 142 endif 142 endif 143 ifndef QTLIBPATH 143 ifndef QTLIBPATH 144 QTLPATH := $(QTHOME) 144 QTLPATH := $(QTHOME) 145 endif 145 endif 146 QTLIBPATH := -F$(QTLPATH) 146 QTLIBPATH := -F$(QTLPATH) 147 QT_AS_FRAMEWORK := $(shell test -d $(QTLPA 147 QT_AS_FRAMEWORK := $(shell test -d $(QTLPATH)/QtCore.framework && echo yes) 148 ifndef QTLIBS 148 ifndef QTLIBS 149 ifdef QT_AS_FRAMEWORK 149 ifdef QT_AS_FRAMEWORK 150 QTLIBS := $(QTLIBPATH) -framework Q 150 QTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui 151 else 151 else 152 QTLIBS := -L$(QTLPATH) -lQtCore -lQ 152 QTLIBS := -L$(QTLPATH) -lQtCore -lQtGui 153 endif 153 endif 154 endif 154 endif 155 ifndef QT3DLIBS 155 ifndef QT3DLIBS 156 ifdef QT_AS_FRAMEWORK 156 ifdef QT_AS_FRAMEWORK 157 QT3DLIBS := $(QTLIBPATH) -framework Q 157 QT3DLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui 158 QT3DLIBS += -framework QtWidgets -fra 158 QT3DLIBS += -framework QtWidgets -framework Qt3DCore -framework Qt3DExtras -framework Qt3DRender 159 else 159 else 160 QT3DLIBS := -L$(QTLPATH) -lQtCore -lQ 160 QT3DLIBS := -L$(QTLPATH) -lQtCore -lQtGui 161 QT3DLIBS += -lQtWidgets -lQt3DCore -l 161 QT3DLIBS += -lQtWidgets -lQt3DCore -lQt3DExtras -lQt3DRender 162 endif 162 endif 163 endif 163 endif 164 ifndef GLQTLIBS 164 ifndef GLQTLIBS 165 ifdef QT_AS_FRAMEWORK 165 ifdef QT_AS_FRAMEWORK 166 GLQTLIBS := $(QTLIBPATH) -framework Q 166 GLQTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui -framework QtOpenGL 167 ifeq ($(QT_VERSION),6) << 168 GLQTLIBS += -framework QtOpenGLWidge << 169 endif << 170 else 167 else 171 GLQTLIBS := -L$(QTLPATH) -lQtCore -lQ 168 GLQTLIBS := -L$(QTLPATH) -lQtCore -lQtGui -lQtOpenGL 172 ifeq ($(QT_VERSION),6) << 173 GLQTLIBS += -lQtOpenGLWidgets << 174 endif << 175 endif 169 endif 176 endif 170 endif 177 else 171 else 178 ifndef QTMOC 172 ifndef QTMOC 179 QTMOC := $(QTHOME)/bin/moc 173 QTMOC := $(QTHOME)/bin/moc 180 endif 174 endif 181 QTLPATH := $(QTHOME)/lib 175 QTLPATH := $(QTHOME)/lib 182 ifndef QTFLAGS << 176 ifndef QTFLAGS # Qt5 183 QTFLAGS := -I $(QTLPATH)/QtCore.framew 177 QTFLAGS := -I $(QTLPATH)/QtCore.framework/Headers 184 QTFLAGS += -I $(QTLPATH)/QtGui.framewo 178 QTFLAGS += -I $(QTLPATH)/QtGui.framework/Headers 185 QTFLAGS += -I $(QTLPATH)/QtWidgets.fra 179 QTFLAGS += -I $(QTLPATH)/QtWidgets.framework/Headers 186 QTFLAGS += -I $(QTLPATH)/QtOpenGL.fram 180 QTFLAGS += -I $(QTLPATH)/QtOpenGL.framework/Headers 187 QTFLAGS += -I $(QTLPATH)/Qt3DCore.fram 181 QTFLAGS += -I $(QTLPATH)/Qt3DCore.framework/Headers 188 QTFLAGS += -I $(QTLPATH)/Qt3DExtras.fr 182 QTFLAGS += -I $(QTLPATH)/Qt3DExtras.framework/Headers 189 QTFLAGS += -I $(QTLPATH)/Qt3DRender.fr 183 QTFLAGS += -I $(QTLPATH)/Qt3DRender.framework/Headers 190 ifeq ($(QT_VERSION),6) << 184 QTFLAGS += -I $(QTLPATH)/QtPrintSupport.framework/Headers 191 QTFLAGS += -I $(QTHOME)/QtOpenGLWidg << 192 endif << 193 QTFLAGS += -I $(QTHOME)/include/Qt -I$ 185 QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include 194 endif 186 endif 195 ifndef QTLIBS 187 ifndef QTLIBS 196 QTLIBS := -F$(QTLPATH) -framework Qt 188 QTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui 197 QTLIBS += -framework QtWidgets << 189 QTLIBS += -framework QtWidgets -framework QtPrintSupport 198 endif 190 endif 199 ifndef QT3DLIBS 191 ifndef QT3DLIBS 200 QT3DLIBS := -F$(QTLPATH) -framework 192 QT3DLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui 201 QT3DLIBS += -framework QtWidgets 193 QT3DLIBS += -framework QtWidgets 202 QT3DLIBS += -framework Qt3DCore -fra 194 QT3DLIBS += -framework Qt3DCore -framework Qt3DExtras -framework Qt3DRender >> 195 QT3DLIBS += -framework QtPrintSupport 203 endif 196 endif 204 ifndef GLQTLIBS 197 ifndef GLQTLIBS 205 GLQTLIBS := -F$(QTLPATH) -framework Q 198 GLQTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui 206 GLQTLIBS += -framework QtWidgets 199 GLQTLIBS += -framework QtWidgets 207 GLQTLIBS += -framework QtOpenGL << 200 GLQTLIBS += -framework QtOpenGL -framework QtPrintSupport 208 ifeq ($(QT_VERSION),6) << 209 GLQTLIBS += -framework QtOpenGLWidget << 210 endif << 211 endif 201 endif 212 endif 202 endif 213 203 214 #------ Wt Setup block ----------------------- 204 #------ Wt Setup block ------------------------------------------------------ 215 205 216 ifndef WTHOME 206 ifndef WTHOME 217 WTHOME := /usr 207 WTHOME := /usr 218 endif 208 endif 219 WTFLAGS := -I$(WTHOME)/include/boost -I$(WTH 209 WTFLAGS := -I$(WTHOME)/include/boost -I$(WTHOME)/include -DQT_NO_KEYWORDS 220 WTLIBS := -L$(WTHOME)/lib -lwt -lwtext -lwt 210 WTLIBS := -L$(WTHOME)/lib -lwt -lwtext -lwthttp -lboost_signals -L/usr/lib -lz -lssl -lcrypto 221 211 222 #--------------------------------------------- 212 #---------------------------------------------------------------------------- 223 213 224 define build-granular-shared-lib 214 define build-granular-shared-lib 225 @libdir=`(cd $(@D);/bin/pwd)`; \ 215 @libdir=`(cd $(@D);/bin/pwd)`; \ 226 cd $(G4TMPDIR); \ 216 cd $(G4TMPDIR); \ 227 $(CXX) -Wl,-w -dynamiclib -single_module << 217 $(CXX) -dynamiclib -single_module -undefined dynamic_lookup \ 228 -o $$libdir/$(@F) $(INTYLIBS) *.o 218 -o $$libdir/$(@F) $(INTYLIBS) *.o 229 endef 219 endef 230 define build-global-shared-lib 220 define build-global-shared-lib 231 @libdir=`(cd $(@D);/bin/pwd)`; \ 221 @libdir=`(cd $(@D);/bin/pwd)`; \ 232 cd $(G4TMP)/$(G4SYSTEM); \ 222 cd $(G4TMP)/$(G4SYSTEM); \ 233 $(CXX) -Wl,-w -dynamiclib -single_module << 223 $(CXX) -dynamiclib -single_module -undefined dynamic_lookup \ 234 -o $$libdir/$(@F) $(INTYLIBS) $(forea 224 -o $$libdir/$(@F) $(INTYLIBS) $(foreach dir,$(SUBLIBS),$(dir)/*.o); 235 endef 225 endef 236 226 237 endif 227 endif