-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathfiles.mk
More file actions
93 lines (72 loc) · 5.16 KB
/
files.mk
File metadata and controls
93 lines (72 loc) · 5.16 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
###########################################################################################
# location of utilities for generating various stuff
###########################################################################################
# this location
SRC_GEN_PREFIX := $(UHC_SRC_PREFIX)gen/
SRC_GEN_RTSGBCCALL_PREFIX := $(SRC_GEN_PREFIX)
# this file
GEN_MKF := $(SRC_GEN_PREFIX)files.mk
###########################################################################################
# end products, binary, executable, etc
###########################################################################################
# generate FFI wrappers for interpreter
# 2010: obsolete, now generated based on which wrappers are really required
GEN_RTSGBCCALL_EXEC_NAME := gen-rts-gb-ccall
GEN_RTSGBCCALL_BLD_EXEC := $(EHC_BLD_BIN_VARIANT_PREFIX)$(GEN_RTSGBCCALL_EXEC_NAME)$(EXEC_SUFFIX)
# generate library module with support instances for generic deriving for tuples
GEN_GENERTUPINST_EXEC_NAME := gen-gener-tuple-instances
GEN_GENERTUPINST_BLD_EXEC := $(EHC_BLD_BIN_VARIANT_PREFIX)$(GEN_GENERTUPINST_EXEC_NAME)$(EXEC_SUFFIX)
###########################################################################################
# main + sources + dpds, for .chs
###########################################################################################
# for GEN_RTSGBCCALL
GEN_RTSGBCCALL_MAIN := RtsGBCallC
GEN_RTSGBCCALL_MAIN_HS := $(EHC_BLD_GEN_VARIANT_PREFIX)$(GEN_RTSGBCCALL_MAIN).hs
GEN_RTSGBCCALL_HS_MAIN_SRC_CHS := $(patsubst %,$(SRC_GEN_PREFIX)%.chs,$(GEN_RTSGBCCALL_MAIN))
GEN_RTSGBCCALL_HS_MAIN_DRV_HS := $(patsubst $(SRC_GEN_PREFIX)%.chs,$(EHC_BLD_GEN_VARIANT_PREFIX)%.hs,$(GEN_RTSGBCCALL_HS_MAIN_SRC_CHS))
GEN_RTSGBCCALL_HS_ALL_SRC_CHS := $(GEN_RTSGBCCALL_HS_MAIN_SRC_CHS)
GEN_RTSGBCCALL_HS_ALL_DRV_HS := $(GEN_RTSGBCCALL_HS_MAIN_DRV_HS)
# for GEN_GENERTUPINST
GEN_GENERTUPINST_MAIN := GenericTupleInstances
GEN_GENERTUPINST_MAIN_HS := $(EHC_BLD_GEN_VARIANT_PREFIX)$(GEN_GENERTUPINST_MAIN).hs
GEN_GENERTUPINST_HS_MAIN_SRC_CHS := $(patsubst %,$(SRC_GEN_PREFIX)%.chs,$(GEN_GENERTUPINST_MAIN))
GEN_GENERTUPINST_HS_MAIN_DRV_HS := $(patsubst $(SRC_GEN_PREFIX)%.chs,$(EHC_BLD_GEN_VARIANT_PREFIX)%.hs,$(GEN_GENERTUPINST_HS_MAIN_SRC_CHS))
GEN_GENERTUPINST_HS_ALL_SRC_CHS := $(GEN_GENERTUPINST_HS_MAIN_SRC_CHS)
GEN_GENERTUPINST_HS_ALL_DRV_HS := $(GEN_GENERTUPINST_HS_MAIN_DRV_HS)
###########################################################################################
# all dependents for a variant to kick of building
###########################################################################################
GEN_RTSGBCCALL_ALL_DPDS := $(GEN_RTSGBCCALL_HS_ALL_DRV_HS)
GEN_GENERTUPINST_ALL_DPDS := $(GEN_GENERTUPINST_HS_ALL_DRV_HS)
GEN_ALL_DPDS := $(GEN_RTSGBCCALL_ALL_DPDS) $(GEN_GENERTUPINST_ALL_DPDS)
###########################################################################################
# all src
###########################################################################################
GEN_ALL_CHUNK_SRC := $(GEN_RTSGBCCALL_HS_MAIN_SRC_CHS) $(GEN_GENERTUPINST_HS_MAIN_SRC_CHS)
GEN_ALL_SRC := $(GEN_ALL_CHUNK_SRC) $(GEN_MKF)
###########################################################################################
### Build rules for intermediates ####
###########################################################################################
# rules for library sources+derived
$(GEN_RTSGBCCALL_HS_MAIN_DRV_HS): $(EHC_BLD_GEN_VARIANT_PREFIX)%.hs: $(SRC_GEN_PREFIX)%.chs $(SHUFFLE) $(GEN_MKF) $(LIB_EHC_INS_FLAG)
mkdir -p $(@D)
$(SHUFFLE_HS) $(LIB_EHC_SHUFFLE_DEFS) $(LIB_GEN_RTSGBCCALL_SHUFFLE_DEFS) --gen-reqm="($(EHC_VARIANT) $(EHC_ASPECTS))" --base=Main --variant-order="$(EHC_SHUFFLE_ORDER)" $< > $@ && \
touch $@
# rules for library sources+derived
$(GEN_GENERTUPINST_HS_MAIN_DRV_HS): $(EHC_BLD_GEN_VARIANT_PREFIX)%.hs: $(SRC_GEN_PREFIX)%.chs $(SHUFFLE) $(GEN_MKF) $(LIB_EHC_INS_FLAG)
mkdir -p $(@D)
$(SHUFFLE_HS) $(LIB_EHC_SHUFFLE_DEFS) $(LIB_GEN_GENERTUPINST_SHUFFLE_DEFS) --gen-reqm="($(EHC_VARIANT) $(EHC_ASPECTS))" --base=Main --variant-order="$(EHC_SHUFFLE_ORDER)" $< > $@ && \
touch $@
###########################################################################################
### Build rules for endproducts ####
###########################################################################################
$(GEN_RTSGBCCALL_BLD_EXEC): $(GEN_RTSGBCCALL_HS_MAIN_DRV_HS)
mkdir -p $(dir $(GEN_RTSGBCCALL_BLD_EXEC))
$(GHC) --make \
$(if $(ENABLE_V2_COMMANDS),-package-env=$(EHC_BLD_LIBEHC_VARIANT_PREFIX).ghc.environment.$(GHC_CPU)-$(GHC_OS)-$(GHC_VERSION),) \
$(GHC_OPTS) $(GHC_OPTS_WHEN_EHC) -package $(LIB_EHC_PKG_NAME) -i$(EHC_BLD_GEN_VARIANT_PREFIX) $(GEN_RTSGBCCALL_MAIN_HS) -o $(GEN_RTSGBCCALL_BLD_EXEC)
$(GEN_GENERTUPINST_BLD_EXEC): $(GEN_GENERTUPINST_HS_MAIN_DRV_HS)
mkdir -p $(dir $(GEN_GENERTUPINST_BLD_EXEC))
$(GHC) --make \
$(if $(ENABLE_V2_COMMANDS),-package-env=$(EHC_BLD_LIBEHC_VARIANT_PREFIX).ghc.environment.$(GHC_CPU)-$(GHC_OS)-$(GHC_VERSION),) \
$(GHC_OPTS) $(GHC_OPTS_WHEN_EHC) -package $(LIB_EHC_PKG_NAME) -i$(EHC_BLD_GEN_VARIANT_PREFIX) $(GEN_GENERTUPINST_MAIN_HS) -o $(GEN_GENERTUPINST_BLD_EXEC)