1 |
# $Header: /home/cvsuser/cvsroot/JSOC/proj/globalhs/apps/Rules.mk,v 1.47 2022/09/14 21:54:57 tplarson Exp $ |
2 |
|
3 |
# Standard things |
4 |
sp := $(sp).x |
5 |
dirstack_$(sp) := $(d) |
6 |
d := $(dir) |
7 |
|
8 |
# all checks for icc being the compiler are removed; this condition is already checked in localization/Rules.mk |
9 |
# if the compiler is other than icc, this make file will not be included. |
10 |
|
11 |
# GLOBALHS_TAG is defined in Rules.mk in the parent directory, |
12 |
# its definition is repeated here for ease of reading |
13 |
#GLOBALHS_TAG := $(shell $(SRCDIR)/proj/globalhs/scripts/checkglobalhstags $(SRCDIR)) |
14 |
|
15 |
# Local variables |
16 |
|
17 |
MODEXE_$(d) := $(addprefix $(d)/, jretile jrebinsmooth undistortmdi jtsslice mkylms) |
18 |
MODEXE := $(MODEXE) $(MODEXE_$(d)) |
19 |
|
20 |
MODEXE_USEF_$(d) := $(addprefix $(d)/, jv2ts jtsfiddle jpkbgn jpkbgn360d jpkbgn2600d jpkbgn5200d) |
21 |
MODEXE_USEF := $(MODEXE_USEF) $(MODEXE_USEF_$(d)) |
22 |
|
23 |
MODEXE_SOCK_$(d) := $(MODEXE_$(d):%=%_sock) |
24 |
MODEXE_SOCK := $(MODEXE_SOCK) $(MODEXE_SOCK_$(d)) |
25 |
|
26 |
MODEXE_USEF_SOCK_$(d) := $(MODEXE_USEF_$(d):%=%_sock) |
27 |
MODEXE_USEF_SOCK := $(MODEXE_USEF_SOCK) $(MODEXE_USEF_SOCK_$(d)) |
28 |
|
29 |
JV2TS := $(addprefix $(d)/, jv2ts jv2ts_sock) |
30 |
JRETILE := $(addprefix $(d)/, jretile jretile_sock) |
31 |
JTSFIDDLE := $(addprefix $(d)/, jtsfiddle jtsfiddle_sock) |
32 |
JTSSLICE := $(addprefix $(d)/, jtsslice jtsslice_sock) |
33 |
JPKBGN := $(addprefix $(d)/, jpkbgn jpkbgn_sock) |
34 |
JPKBGN360D := $(addprefix $(d)/, jpkbgn360d jpkbgn360d_sock) |
35 |
JPKBGN2600D := $(addprefix $(d)/, jpkbgn2600d jpkbgn2600d_sock) |
36 |
JPKBGN5200D := $(addprefix $(d)/, jpkbgn5200d jpkbgn5200d_sock) |
37 |
JREBINSMOOTH := $(addprefix $(d)/, jrebinsmooth jrebinsmooth_sock) |
38 |
UNDISTORTMDI := $(addprefix $(d)/, undistortmdi undistortmdi_sock) |
39 |
MKYLMS := $(addprefix $(d)/, mkylms mkylms_sock) |
40 |
DURCON := $(d)/durcon |
41 |
ifneq ($(JSOC_MACHINE), linux_x86_64) |
42 |
INV2D := $(d)/inv2d.x |
43 |
INV2DOBJ := $(d)/inv2d.o |
44 |
endif |
45 |
|
46 |
JPKBGNSRC := $(SRCDIR)/$(d)/jpkbgn.c |
47 |
|
48 |
EXE_$(d) := $(MODEXE_$(d)) $(MODEXE_USEF_$(d)) |
49 |
OBJ_$(d) := $(EXE_$(d):%=%.o) |
50 |
DEP_$(d) := $(OBJ_$(d):%=%.d) |
51 |
CLEAN := $(CLEAN) \ |
52 |
$(OBJ_$(d)) \ |
53 |
$(EXE_$(d)) \ |
54 |
$(MODEXE_SOCK_$(d)) \ |
55 |
$(MODEXE_USEF_SOCK_$(d)) \ |
56 |
$(DEP_$(d)) \ |
57 |
$(DURCON) \ |
58 |
$(INV2D) $(INV2DOBJ) |
59 |
|
60 |
|
61 |
# Remove globalhs from 'default make'. To do a release, run 'make; make globalhs'. |
62 |
# TGT_BIN := $(TGT_BIN) $(EXE_$(d)) $(MODEXE_SOCK_$(d)) $(MODEXE_USEF_SOCK_$(d)) $(DURCON) $(INV2D) |
63 |
|
64 |
S_$(d) := $(notdir $(EXE_$(d)) $(MODEXE_SOCK_$(d)) $(MODEXE_USEF_SOCK_$(d)) $(DURCON) $(INV2D)) |
65 |
|
66 |
# Local rules |
67 |
$(OBJ_$(d)): $(SRCDIR)/$(d)/Rules.mk |
68 |
$(OBJ_$(d)): CF_TGT := $(CFITSIOH) $(GSLH) $(FFTWH) -I$(SRCDIR)/$(d)/../../libs/stats -I$(SRCDIR)/$(d)/../../libs/interpolate -I$(SRCDIR)/$(d)/../libs/projection -I$(SRCDIR)/$(d)/../libs/pkbgn |
69 |
$(OBJ_$(d)): CF_TGT := $(CF_TGT) -DCDIR="\"$(SRCDIR)/$(d)\"" -DCVSTAG="\"$(GLOBALHS_TAG)\"" |
70 |
|
71 |
$(JV2TS) : $(LIBPROJECTION) |
72 |
$(JREBINSMOOTH) $(MKYLMS) : $(LIBINTERP) |
73 |
$(JTSFIDDLE) : $(LIBDTGF) |
74 |
$(JPKBGN) : $(LIBPKBGN) |
75 |
$(JPKBGN360D) : $(LIBPKBGN360D) |
76 |
$(JPKBGN360D:%=%.o) : $(JPKBGNSRC) |
77 |
$(COMP) |
78 |
$(JPKBGN2600D) : $(LIBPKBGN2600D) |
79 |
$(JPKBGN2600D:%=%.o) : $(JPKBGNSRC) |
80 |
$(COMP) -lmkl_em64t_sequential -mcmodel=medium |
81 |
$(JPKBGN5200D) : $(LIBPKBGN5200D) |
82 |
$(JPKBGN5200D:%=%.o) : $(JPKBGNSRC) |
83 |
$(COMP) -lmkl_em64t_sequential -mcmodel=medium |
84 |
|
85 |
# the following include file makes use of the -mcmodel compiler flag |
86 |
# DO NOT COPY THIS FILE WITHOUT A THOROUGH UNDERSTANDING OF THIS FLAG |
87 |
include $(SRCDIR)/$(d)/invobj.mk |
88 |
|
89 |
ifeq ($(JSOC_MACHINE), linux_avx2) |
90 |
$(INV2D) : LL_TGT := $(LL_TGT) -lmkl_rt |
91 |
else |
92 |
$(INV2D) : LL_TGT := $(LL_TGT) -lmkl_em64t |
93 |
endif |
94 |
$(INV2D) : $(LIBINV2D) |
95 |
$(INV2D) : $(INV2DOBJ) |
96 |
$(FLINK) |
97 |
$(SLBIN) |
98 |
|
99 |
# force recompile to ensure consistency, now deemed unnecessary |
100 |
#ifeq ($(GLOBALHSTAGOVERRIDE),) |
101 |
#.PHONY: force_globalhsapps |
102 |
#$(OBJ_$(d)) $(INV2DOBJ): force_globalhsapps |
103 |
#force_globalhsapps: |
104 |
# [[ $(GLOBALHS_TAG) =~ globalhs ]] |
105 |
#endif |
106 |
|
107 |
NOIPO_$(d) := |
108 |
MKL := -lmkl |
109 |
|
110 |
ifeq ($(JSOC_MACHINE), linux_avx2) |
111 |
MKL := $(NOIPO_$(d)) -lmkl_rt |
112 |
endif |
113 |
|
114 |
ifeq ($(JSOC_MACHINE), linux_avx) |
115 |
MKL := $(NOIPO_$(d)) -lmkl_em64t |
116 |
endif |
117 |
|
118 |
ifeq ($(JSOC_MACHINE), linux_x86_64) |
119 |
MKL := $(NOIPO_$(d)) -lmkl_em64t |
120 |
endif |
121 |
|
122 |
ifeq ($(JSOC_MACHINE), linux_ia32) |
123 |
MKL := $(NOIPO_$(d)) -lmkl_lapack -lmkl_ia32 |
124 |
endif |
125 |
|
126 |
SVML_$(d) := |
127 |
GUIDE_$(d) := |
128 |
|
129 |
ALL_$(d) := $(MODEXE_$(d)) $(MODEXE_SOCK_$(d)) $(MODEXE_USEF_$(d)) $(MODEXE_USEF_SOCK_$(d)) |
130 |
ifeq ($(JSOC_MACHINE), linux_avx2) |
131 |
$(ALL_$(d)) : LL_TGT := $(LL_TGT) $(GSLLIBS) $(CFITSIOLIBS) $(MKL) $(SVML_$(d)) $(GUIDE_$(d)) |
132 |
else |
133 |
$(ALL_$(d)) : LL_TGT := $(LL_TGT) $(GSLLIBS) $(CFITSIOLIBS) $(FFTW3FLIBS) $(MKL) $(SVML_$(d)) $(GUIDE_$(d)) |
134 |
endif |
135 |
|
136 |
$(DURCON) : $(SRCDIR)/$(d)/durcon.c $(SRCDIR)/$(d)/Rules.mk |
137 |
cc -o $@ $< |
138 |
$(SLBIN) |
139 |
|
140 |
# Shortcuts |
141 |
.PHONY: $(S_$(d)) globalhs |
142 |
$(S_$(d)): %: $(d)/% |
143 |
globalhs : $(ALL_$(d)) $(DURCON) $(INV2D) |
144 |
|
145 |
|
146 |
# Standard things |
147 |
-include $(DEP_$(d)) |
148 |
|
149 |
d := $(dirstack_$(sp)) |
150 |
sp := $(basename $(sp)) |