-
Notifications
You must be signed in to change notification settings - Fork 1
/
makefile
70 lines (53 loc) · 1.79 KB
/
makefile
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
CURDIR = $(shell pwd)
SRCDIR = $(CURDIR)/src
INCDIR = $(CURDIR)/include
BINDIR = $(CURDIR)/bin
ROOT_LIBS = `root-config --glibs` -lSpectrum -lTreePlayer -lMathMore
LIBRS = $(ROOT_LIBS) $(GSLLIBS) $(FORTRAN_LIBS)
INCLUDE = $(INCDIR)
CFLAGS = -std=c++11 -g -fPIC `root-config --cflags` `gsl-config --cflags` -Wno-unused-parameter
PLATFORM:=$(shell uname)
$(info PLATFORM: $(PLATFORM))
ifeq ($(PLATFORM),Darwin)
export __APPLE__:= 1
CFLAGS += -Qunused-arguments -Wno-dangling-gsl
CPP = g++
#### FORTRAN LIBS MIGHT NEED SETTING MANUALLY ON MACOS
FORTRAN_LIBS = -L/usr/local/Cellar/gcc/13.1.0/lib/gcc/current/ -lgfortran
else
export __LINUX__:= 1
CPP = g++
FORTRAN_LIBS = -lgfortran
endif
HEAD = $(wildcard include/*.h)
OBJECTS = $(patsubst include/%.h,lib/%.so,$(HEAD))
$(info OBJECTS = $(OBJECTS))
TARGET = bin/libGOSIAFitter.so
main: $(TARGET) bin/gosia
@printf "Make complete\n"
$(TARGET): $(OBJECTS) bin/DictOutput.cxx lib obj/gosia.o
@printf "Now compiling shared library $@\n"
@$(CPP) $(CFLAGS) -I$(INCDIR) -I. $(LIBRS) -o $@ -shared bin/DictOutput.cxx $(OBJECTS) obj/gosia.o
bin/DictOutput.cxx: $(HEAD)
@printf "Linking libraries\n"
@rootcint -f $@ -c -p $(HEAD) lib/linkdef.h
bin:
@mkdir -p bin
obj/gosia.o: src/gosia_20081208.18.tjg.f include/Gosia.h obj
@printf "Now compiling object gosia.o\n"
@gfortran -fPIC -std=legacy -m64 -o obj/gosia.o -c src/gosia_20081208.18.tjg.f $(FORTRAN_LIBS)
obj:
@mkdir -p obj
lib/%.so: src/%.cxx include/%.h
@printf "Now compiling library $@\n"
@$(CPP) $(CFLAGS) -I$(INCDIR) -L$(LIBRS) -o $@ -shared -c $<
bin/gosia: bin src/gosia_20081208.18.f
@printf "Compiling GOSIA \n"
@gfortran src/gosia_20081208.18.f -o bin/gosia -ffpe-summary=none
clean:
@printf "Tidying up...\n"
@rm $(OBJECTS)
@rm -r bin
@rm -r obj
# @rmdir bin
# @rmdir obj