16
# For the compilation of the MadLoop file polynomial.f it makes a big difference to use -O3 and
17
# to turn off the bounds check. These can however be modified here if really necessary.
18
POLYNOMIAL_OPTIMIZATION = -O3
19
POLYNOMIAL_BOUNDS_CHECK =
12
21
include $(ROOT)/Source/make_opts
13
22
include $(ROOT)/SubProcesses/MadLoop_makefile_definitions
20
26
STABCHECKDRIVER = StabilityCheckDriver
21
27
CHECK_SA_BORN_SPLITORDERS = check_sa_born_splitOrders
22
LINKLIBS = -L$(LIBDIR) -ldhelas -lmodel $(LINK_LOOP_LIBS)
28
LINKLIBS = $(LDFLAGS) -L$(LIBDIR) -ldhelas -lmodel $(LINK_LOOP_LIBS)
23
29
LIBS = $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext) $(LOOP_LIBS)
25
31
PROCESS= MadLoopParamReader.o MadLoopCommons.o \
32
$(patsubst $(DOTF),$(DOTO),$(wildcard polynomial.f)) \
26
33
$(patsubst $(DOTF),$(DOTO),$(wildcard loop_matrix.f)) \
27
34
$(patsubst $(DOTF),$(DOTO),$(wildcard improve_ps.f)) \
28
35
$(patsubst $(DOTF),$(DOTO),$(wildcard born_matrix.f)) \
29
36
$(patsubst $(DOTF),$(DOTO),$(wildcard CT_interface.f)) \
30
37
$(patsubst $(DOTF),$(DOTO),$(wildcard loop_num.f)) \
31
$(patsubst $(DOTF),$(DOTO),$(wildcard polynomial.f)) \
32
38
$(patsubst $(DOTF),$(DOTO),$(wildcard helas_calls*.f)) \
33
39
$(patsubst $(DOTF),$(DOTO),$(wildcard jamp?_calls_*.f)) \
34
40
$(patsubst $(DOTF),$(DOTO),$(wildcard mp_born_amps_and_wfs.f)) \
42
48
$(patsubst $(DOTF),$(DOTO),$(wildcard compute_color_flows.f))
44
50
OLP_PROCESS= MadLoopParamReader.o MadLoopCommons.o \
51
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/polynomial.f)) \
45
52
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/loop_matrix.f)) \
46
53
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/improve_ps.f)) \
47
54
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/born_matrix.f)) \
48
55
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/CT_interface.f)) \
49
56
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/loop_num.f)) \
50
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/polynomial.f)) \
51
57
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/helas_calls*.f)) \
52
58
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/jamp?_calls_*.f)) \
53
59
$(patsubst $(DOTF),$(DOTO),$(wildcard $(LOOP_PREFIX)*/mp_born_amps_and_wfs.f)) \
70
76
$(CHECK_SA_BORN_SPLITORDERS): check_sa_born_splitOrders.o $(patsubst $(DOTF),$(DOTO),$(wildcard *born_matrix.f)) makefile $(LIBDIR)libdhelas.$(libext) $(LIBDIR)libmodel.$(libext)
71
77
$(FC) $(FFLAGS) -o $(CHECK_SA_BORN_SPLITORDERS) check_sa_born_splitOrders.o $(patsubst $(DOTF),$(DOTO),$(wildcard *born_matrix.f)) -L$(LIBDIR) -ldhelas -lmodel
79
# This is the core of madloop computationally wise, so make sure to turn optimizations on and bound checks off.
80
# We use %olynomial.o and not directly polynomial.o because we want it to match when both doing make check here
81
# or make OLP one directory above
82
%olynomial.o : %olynomial.f
83
$(FC) $(patsubst -O%,, $(subst -fbounds-check,,$(FFLAGS))) $(POLYNOMIAL_OPTIMIZATION) $(POLYNOMIAL_BOUNDS_CHECK) -c $< -o $@ $(LOOP_INCLUDE)
74
86
$(FC) $(FFLAGS) -c $< -o $@ $(LOOP_INCLUDE)
80
92
ar rcs libMadLoop.$(libext) $(OLP_PROCESS)
81
93
mv libMadLoop.$(libext) $(MADLOOP_LIB)
87
cd ..; make $(OLP); cd -
88
rm -f libMadLoop.dylib
89
ln -s ../libMadLoop.dylib
91
libMadLoop.dylib: ../$(OLP)
96
rm -f libMadLoop.$(dylibext)
97
ln -s ../libMadLoop.$(dylibext)
98
cd $(ROOT)/SubProcesses; make $(OLP)
101
cd $(ROOT)/SubProcesses; make $(OLP)_static
103
libMadLoop.$(dylibext): ../$(OLP)
93
105
ifeq ($(origin MENUM),undefined)
96
matrix$(MENUM)py.so: ../$(OLP)
108
matrix$(MENUM)py.so: ../$(OLP)_static f2py_wrapper.f
98
$(F2PY) -L. -lMadLoop -m matrix$(MENUM)py -c check_sa.f --fcompiler=$(FC)
b'\\ No newline at end of file'
110
$(F2PY) $(MADLOOP_LIB) -m matrix$(MENUM)py -c f2py_wrapper.f --fcompiler=$(FC) -L../../lib/ -ldhelas -lmodel $(LINK_LOOP_LIBS) $(STDLIB)
113
@rm -f *.o *.so *.$(libext) *.$(dylibext)