Files
geant4/config/sys/Linux-clang.gmk
T
2021-02-05 15:10:05 +01:00

168 lines
4.6 KiB
Plaintext

#
# ------ GNU/LINUX ------ clang 9.0 and higher
#
# Original author: Gabriele Cosmo - CERN
#
ifeq ($(G4SYSTEM),Linux-clang)
CXX := clang++
CXXFLAGS := -Wall -Wno-non-virtual-dtor -Wno-long-long
CXXFLAGS += -Wwrite-strings -Wpointer-arith -Woverloaded-virtual
CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe -pthread
CXXFLAGS += -fno-trapping-math -ftree-vectorize -fno-math-errno
ifdef G4USE_STD14
CPPFLAGS += -std=c++14
CXXFLAGS += -std=c++14
else
ifdef G4USE_STD17
CPPFLAGS += -std=c++17
CXXFLAGS += -std=c++17
else
CXXFLAGS += -std=c++11
CPPFLAGS += -std=c++11
endif
endif
ifdef G4MULTITHREADED
CXXFLAGS += -ftls-model=initial-exec
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
CPPFLAGS += -fPIC
CXXFLAGS += -fPIC
FCFLAGS += -fPIC
CCFLAGS += -fPIC
endif
G4RUNPATHOPTION := -Wl,-rpath,
G4STATIC_MODE += -Wl,--whole-archive
G4NOSTATIC_MODE += -Wl,--no-whole-archive
CC := clang
FC := gfortran
FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore
FCLIBS := -lg2c -lnsl
ECHO := /bin/echo -e
SHEXT := so
ARCH := $(shell uname -m | cut -s -d "_" -f 2)
LOADLIBS += -lm -lstdc++
ifndef X11FLAGS
X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11
endif
ifndef X11LIBS
X11LIBS := -L/usr/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
endif
ifndef XMFLAGS
XMFLAGS := -I/usr/include
endif
ifndef XMLIBS
XMLIBS := -lXm -lXpm
endif
ifndef XAWFLAGS
XAWFLAGS := -I/usr/include
endif
ifndef XAWLIBS
XAWLIBS := -lXaw
endif
DLDLIBS := -ldl
ifndef OGLHOME
OGLHOME := /usr
endif
ifndef OGLFLAGS
OGLFLAGS := -I$(OGLHOME)/include
endif
ifndef OGLLIBS
OGLLIBS := -L$(OGLHOME)/lib$(ARCH) -lGL
endif
# ---- QT Setup block -------------------------------------------------------
ifndef QTHOME
QTHOME := /usr
endif
ifndef QTMOC
QTMOC := $(QTHOME)/bin/moc
endif
ifndef QT_VERSION
QT_VERSION := 5
endif
ifeq ($(QT_VERSION),5)
ifndef QTFLAGS # Qt5
QTFLAGS := -I $(QTHOME)/include -I$(QTHOME)/include/Qt
QTFLAGS += -I $(QTHOME)/include/qt5/QtCore
QTFLAGS += -I $(QTHOME)/include/qt5/QtGui
QTFLAGS += -I $(QTHOME)/include/qt5/QtWidgets
QTFLAGS += -I $(QTHOME)/include/qt5/QtOpenGL
QTFLAGS += -I $(QTHOME)/include/qt5/Qt3DCore
QTFLAGS += -I $(QTHOME)/include/qt5/Qt3DExtras
QTFLAGS += -I $(QTHOME)/include/qt5/Qt3DRender
QTFLAGS += -I $(QTHOME)/include/qt5/QtPrintSupport
endif
else # Qt4
ifndef QTFLAGS
QTFLAGS := -I$(QTHOME)/include -I$(QTHOME)/include/Qt
QTFLAGS += -I$(QTHOME)/include/QtCore
QTFLAGS += -I$(QTHOME)/include/QtGui
QTFLAGS += -I$(QTHOME)/include/QtOpenGL
endif
endif
ifndef QTLIBPATH
QTLIBPATH := $(QTHOME)/lib
QT_SEARCH_LIB := $(shell ls $(QTLIBPATH)/qt$(QT_VERSION)/libq* 2>/dev/null | wc -l )
ifneq ($(QT_SEARCH_LIB),0)
QTLIBPATH := $(QTHOME)/lib/qt$(QT_VERSION)
endif
endif
ifeq ($(QT_VERSION),5)
ifndef QTLIBS # Qt5
QTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5PrintSupport
endif
ifndef QT3DLIBS
QT3DLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt53DCore -lQt53DExtras -lQt53DRender -lQt5PrintSupport
endif
ifndef GLQTLIBS
GLQTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5OpenGL -lQt5PrintSupport
endif
else # Qt4
ifndef QTLIBS
QTLIBS := -L$(QTLIBPATH) -lQtCore -lQtGui
endif
ifndef GLQTLIBS
GLQTLIBS := -L$(QTLIBPATH) -lQtCore -lQtGui -lQtOpenGL
endif
endif
#----------------------------------------------------------------------------
define build-granular-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMPDIR); \
$(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) *.o
endef
define build-global-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMP)/$(G4SYSTEM); \
$(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) \
$(foreach dir,$(SUBLIBS),$(dir)/*.o);
endef
endif