-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile_hdgeant4
More file actions
119 lines (101 loc) · 4 KB
/
Copy pathMakefile_hdgeant4
File metadata and controls
119 lines (101 loc) · 4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Makefile_hdgeant4
PWD = $(shell pwd)
ifdef HDGEANT4_VERSION
SOURCE_CODE_TARGET = $(HDGEANT4_HOME)/.untar_done
ifdef HDGEANT4_DIRTAG
HDGEANT4_DIR = hdgeant4-$(HDGEANT4_VERSION)^$(HDGEANT4_DIRTAG)
else
HDGEANT4_DIR = hdgeant4-$(HDGEANT4_VERSION)
endif
TARFILE = $(HDGEANT4_VERSION).tar.gz
else
SOURCE_CODE_TARGET = $(HDGEANT4_HOME)/.clone_done
ifndef HDGEANT4_URL
HDGEANT4_URL=https://github.com/jeffersonlab/hdgeant4
endif
ifdef HDGEANT4_DIRTAG
HDGEANT4_DIR = $(notdir $(HDGEANT4_URL))^$(HDGEANT4_DIRTAG)
else
HDGEANT4_DIR = $(notdir $(HDGEANT4_URL))
endif
ifndef HDGEANT4_BRANCH
HDGEANT4_BRANCH = master
endif
endif
UNTAR_TEMP_DIR := untar_temp_dir_$(shell echo $$RANDOM)
HDGEANT4_HOME = $(PWD)/$(HDGEANT4_DIR)
PYTHON_CONFIG = $(shell $(BUILD_SCRIPTS)/python_chooser.sh config)
PYTHON_BOOST = $(shell $(BUILD_SCRIPTS)/python_chooser.sh boost)
PYTHON_LIB_OPTION = $(shell $(BUILD_SCRIPTS)/python_chooser.sh lib)
PYTHON_MAJOR_VERSION = $(shell $(BUILD_SCRIPTS)/python_chooser.sh version)
PYTHON_MINOR_VERSION = $(shell $(BUILD_SCRIPTS)/python_chooser.sh minor)
ifeq '$(PYTHON_MAJOR_VERSION)' '3'
PYTHON_GE_3 = true
else
PYTHON_GE_3 = false
endif
QTHOME_LOCATION := $(shell if [ -d "/usr/lib64/qt5" ]; then echo /usr/lib64/qt5; elif [ -d "/usr/lib64/qt4" ]; then echo /usr/lib64/qt4; else echo not_found; fi)
ifneq ($(QTHOME_LOCATION), not_found)
QTHOME_DEF = QTHOME=$(QTHOME_LOCATION)
endif
# GLOBAL_CXX_STANDARD is defined in Makefile_all but this is a fallback
# if building from here directly.
CXX_STANDARD = 20
ifdef GLOBAL_CXX_STANDARD
CXX_STANDARD = $(GLOBAL_CXX_STANDARD)
endif
CMAKE3 = $(shell $(BUILD_SCRIPTS)/cmake3_chooser.sh)
all: force_rebuild_action $(HDGEANT4_HOME)/hdgeant4_prereqs_version.xml
force_rebuild_action:
ifdef FORCE
@echo forcing rebuild
$(RM) $(HDGEANT4_HOME)/.make_done
endif
$(TARFILE):
wget --no-verbose --no-check-certificate -O $@ https://github.com/jeffersonlab/hdgeant4/archive/$(TARFILE)
$(HDGEANT4_HOME)/.clone_done:
git clone -b $(HDGEANT4_BRANCH) $(HDGEANT4_URL) $(HDGEANT4_DIR)
ifdef HDGEANT4_HASH
cd $(HDGEANT4_DIR) ; git checkout $(HDGEANT4_HASH)
endif
date > $@
$(HDGEANT4_HOME)/.untar_done: $(TARFILE)
rm -rf $(UNTAR_TEMP_DIR)
mkdir $(UNTAR_TEMP_DIR)
cd $(UNTAR_TEMP_DIR) ; tar zxf ../$(TARFILE)
mv -v $(UNTAR_TEMP_DIR)/* $(HDGEANT4_DIR)
rmdir -v $(UNTAR_TEMP_DIR)
date > $@
$(HDGEANT4_HOME)/.link_to_fixes_done: $(SOURCE_CODE_TARGET)
@test -d $(HDGEANT4_HOME)/src/G4.$(GEANT4_VERSION)fixes || (echo G4fixes directory does not exist. GEANT4_VERSION must be defined. GEANT4_VERSION = $(GEANT4_VERSION) ; exit 1)
cd $(HDGEANT4_HOME)/src ; ln -s G4.$(GEANT4_VERSION)fixes G4fixes
date > $@
$(HDGEANT4_HOME)/.make_done: $(HDGEANT4_HOME)/.link_to_fixes_done
cd $(HDGEANT4_HOME) ; \
if [ -z "$$G4SYSTEM" ] ; \
then echo Geant4 setup not complete, sourcing geant4make.sh ; \
. `find $(G4ROOT)/share/ -name geant4make.sh` ; \
fi ; \
make PYTHON_CONFIG=$(PYTHON_CONFIG) PYTHON_LIB_OPTION=$(PYTHON_LIB_OPTION) BOOST_PYTHON_LIB=-l$(PYTHON_BOOST) $(QTHOME_DEF) $(HDGEANT4_MAKE_OPTIONS) && \
date > $@
$(HDGEANT4_HOME)/.cmake_done: $(HDGEANT4_HOME)/.link_to_fixes_done
cd $(HDGEANT4_HOME); \
mkdir -p build; \
cd build; \
$(CMAKE3) -DCMAKE_INSTALL_PREFIX=$(HDGEANT4_HOME)/$(BMS_OSNAME)/ \
-DDiracxx_DIR=$(DIRACXX_HOME)/lib/cmake/Diracxx \
-DPython3_EXECUTABLE=/usr/bin/python \
-DBoost_PYTHON_LIBRARY_RELEASE:FILEPATH=/lib64/lib$(PYTHON_BOOST).so \
-DJANA_DIR=$(JANA_HOME)/lib/JANA/cmake ..
date > $@
$(HDGEANT4_HOME)/.cmake_build_done: $(HDGEANT4_HOME)/.cmake_done
cd $(HDGEANT4_HOME)/build; \
$(CMAKE3) --build . $(HDGEANT4_MAKE_OPTIONS)
date > $@
# use "make install" rather than "cmake3 --install ." because ifarm does not like the latter
$(HDGEANT4_HOME)/.cmake_install_done: $(HDGEANT4_HOME)/.cmake_build_done
cd $(HDGEANT4_HOME)/build; \
make install $(HDGEANT4_MAKE_OPTIONS)
date > $@
$(HDGEANT4_HOME)/hdgeant4_prereqs_version.xml: $(HDGEANT4_HOME)/.cmake_install_done
cd $(HDGEANT4_HOME) ; $(BUILD_SCRIPTS)/version_prereqs.pl hdgeant4