ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/proj/globalhs/apps/Rules.mk
Revision: 1.48
Committed: Sun Nov 20 00:57:37 2022 UTC (10 months ago) by kehcheng
Branch: MAIN
CVS Tags: globalhs_version_24, HEAD
Changes since 1.47: +14 -2 lines
Log Message:
add linux_avx2 support

File Contents

# Content
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))