Files
geant4/config/sys/Darwin-g++.gmk
T
2025-12-05 08:54:02 +01:00

218 lines
6.9 KiB
Plaintext

#
# ------ macOS ------
# macOS, gcc-11.5 and higher
#
# Original author: Helmut Burkhardt - CERN
# Revisions: Guy Barrand - LAL
# Gabriele Cosmo - CERN
# Laurent Garnier - LAL
#
ifeq ($(G4SYSTEM),Darwin-g++)
CXX := g++
CXXFLAGS := -Wall -Wno-non-virtual-dtor -Wno-long-long
CXXFLAGS += -Wwrite-strings -Wpointer-arith -Woverloaded-virtual
CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe
CXXFLAGS += -fno-trapping-math -ftree-vectorize -fno-math-errno
CPPFLAGS += -DGL_SILENCE_DEPRECATION
CPPFLAGS += -std=c++17
CXXFLAGS += -std=c++17
# CXXFLAGS += -stdlib=libstdc++
G4USE_STD17 := 1
ifdef G4MULTITHREADED
CXXFLAGS += -ftls-model=initial-exec -pthread
endif
ifdef G4OPTIMISE
CXXFLAGS += -O3
FCFLAGS := -O3
CCFLAGS := -O3
else
ifdef G4DEBUG
CXXFLAGS += -g
FCFLAGS := -g
CCFLAGS := -g
endif
endif
ifdef G4PROFILE
CXXFLAGS += -pg
FCFLAGS += -pg
CCFLAGS += -pg
endif
ifdef G4OPTDEBUG
CXXFLAGS += -O2 -g
FCFLAGS += -O2 -g
CCFLAGS += -O2 -g
endif
ifdef G4LIB_BUILD_SHARED
CXXFLAGS += -fPIC
FCFLAGS += -fPIC
CCFLAGS += -fPIC
endif
G4RUNPATHOPTION := -Wl,-rpath,
# G4STATIC_MODE += -Wl,-force_load
FC := gfortran
FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore
LDFLAGS += -bind_at_load
FCLIBS := -lg2c -lnsl
SHEXT := dylib
LOADLIBS += -lm
ifndef X11FLAGS
X11FLAGS := -I/usr/X11/include
endif
ifndef X11LIBS
X11LIBS := -L/usr/X11/lib -lXmu -lXt -lXext -lX11 -lSM -lICE
endif
ifndef XMFLAGS
XMFLAGS := -I/usr/local/include
# XMFLAGS := -I/usr/X11/include ##### some installations.
endif
ifndef XMLIBS
XMLIBS := -L/usr/local/lib -lXm -lXpm
# XMLIBS := -L/usr/X11/lib -lXm -lXpm ##### some installations.
endif
ifndef XAWFLAGS
XAWFLAGS := -I/usr/local/include
# XAWFLAGS := -I/usr/X11/include ##### some installations.
endif
ifndef XAWLIBS
XAWLIBS := -lXaw
endif
DLDLIBS := -ldl
ifndef OGLHOME
OGLHOME := /usr/X11
# OGLHOME := /System/Library/Frameworks/OpenGL.framework
endif
ifndef OGLFLAGS
OGLFLAGS := -I$(OGLHOME)/include
# OGLFLAGS := -I$(OGLHOME)/Headers
endif
ifndef OGLLIBS
OGLPATH := $(shell test -f /Library/Frameworks/OpenGL.framework/OpenGL && echo "/Library/Frameworks/OpenGL.framework")
ifneq ($(OGLPATH),/Library/Frameworks/OpenGL.framework)
OGLPATH := $(shell test -f /System/Library/Frameworks/OpenGL.framework/OpenGL && echo "/System/Library/Frameworks/OpenGL.framework")
endif
ifneq ($(OGLPATH),)
OGLLIBS := -F$(OGLPATH)/.. -framework OpenGL -framework AGL
else
OGLLIBS := -L$(OGLHOME)/lib -lGL
endif
endif
ifndef OGLLIBS
OGLPATH := $(shell test -f /Library/Frameworks/OpenGL.framework/OpenGL && echo "/Library/Frameworks/OpenGL.framework")
ifneq ($(OGLPATH),/Library/Frameworks/OpenGL.framework)
OGLPATH := $(shell test -f /System/Library/Frameworks/OpenGL.framework/OpenGL && echo "/System/Library/Frameworks/OpenGL.framework")
endif
ifneq ($(OGLPATH),)
DARWIN_VERSION = $(shell uname -r | sed 's/\([0-9]*\).[0-9]*.[0-9]*/\1/')
ifeq ($(DARWIN_VERSION),9)
# the following lines are for building on MacOSX 10.5 "Leopard"
OGLLIBS := -Wl,$(OGLPATH)/Libraries/libGL.dylib -L$(OGLHOME)/lib -lGL
else
# the following lines are for building on MacOSX > 10.5
OGLLIBS := -F$(OGLPATH)/.. -framework OpenGL -framework AGL
endif
else
OGLLIBS := -L$(OGLHOME)/lib -lGL
endif
endif
# ---- Qt Setup block -------------------------------------------------------
ifndef QTHOME
QTHOME := /Library/Frameworks
endif
ifndef QT_VERSION
QT_VERSION := 6
endif
ifeq ($(QTHOME),/Library/Frameworks)
ifndef QTMOC
QTMOC := /usr/bin/moc
endif
ifndef QTFLAGS
QTFLAGS := -I $(QTHOME)/QtCore.framework/Headers
QTFLAGS += -I $(QTHOME)/QtGui.framework/Headers
QTFLAGS += -I $(QTHOME)/QtWidgets.framework/Headers
QTFLAGS += -I $(QTHOME)/QtOpenGL.framework/Headers
ifeq ($(QT_VERSION),6)
QTFLAGS += -I $(QTHOME)/QtOpenGLWidgets.framework/Headers
endif
QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include
endif
ifndef QTLIBPATH
QTLPATH := $(QTHOME)
endif
QTLIBPATH := -F$(QTLPATH)
QT_AS_FRAMEWORK := $(shell test -d $(QTLPATH)/QtCore.framework && echo yes)
ifndef QTLIBS
ifdef QT_AS_FRAMEWORK
QTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui
else
QTLIBS := -L$(QTLPATH) -lQtCore -lQtGui
endif
endif
ifndef GLQTLIBS
ifdef QT_AS_FRAMEWORK
GLQTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui -framework QtOpenGL
ifeq ($(QT_VERSION),6)
GLQTLIBS += -framework QtOpenGLWidgets
endif
else
GLQTLIBS := -L$(QTLPATH) -lQtCore -lQtGui -lQtOpenGL
ifeq ($(QT_VERSION),6)
GLQTLIBS += -lQtOpenGLWidgets
endif
endif
endif
else
ifndef QTMOC
QTMOC := $(QTHOME)/bin/moc
endif
QTLPATH := $(QTHOME)/lib
ifndef QTFLAGS
QTFLAGS := -I $(QTLPATH)/QtCore.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtGui.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtWidgets.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtOpenGL.framework/Headers
ifeq ($(QT_VERSION),6)
QTFLAGS += -I $(QTHOME)/QtOpenGLWidgets.framework/Headers
endif
QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include
endif
ifndef QTLIBS
QTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
QTLIBS += -framework QtWidgets
endif
ifndef GLQTLIBS
GLQTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
GLQTLIBS += -framework QtWidgets
GLQTLIBS += -framework QtOpenGL
ifeq ($(QT_VERSION),6)
GLQTLIBS += -framework QtOpenGLWidgets
endif
endif
endif
#------ Wt Setup block ------------------------------------------------------
ifndef WTHOME
WTHOME := /usr
endif
WTFLAGS := -I$(WTHOME)/include/boost -I$(WTHOME)/include -DQT_NO_KEYWORDS
WTLIBS := -L$(WTHOME)/lib -lwt -lwtext -lwthttp -lboost_signals -L/usr/lib -lz -lssl -lcrypto
#----------------------------------------------------------------------------
define build-granular-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMPDIR); \
$(CXX) -Wl,-w -dynamiclib -single_module -undefined dynamic_lookup \
-o $$libdir/$(@F) $(INTYLIBS) *.o
endef
define build-global-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMP)/$(G4SYSTEM); \
$(CXX) -Wl,-w -dynamiclib -single_module -undefined dynamic_lookup \
-o $$libdir/$(@F) $(INTYLIBS) $(foreach dir,$(SUBLIBS),$(dir)/*.o);
endef
endif