buildsystem,epj2make,ide: fix makefile generation to stop trying to echo empty lists...
[sdk] / compiler / ecs / Makefile.bootstrap
1 .PHONY: all objdir cleantarget clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := ecs
6 VERSION := 
7 CONFIG := bootstrap
8 ifndef COMPILER
9 COMPILER := default
10 endif
11
12 TARGET_TYPE = executable
13
14 # FLAGS
15
16 ECFLAGS =
17 ifndef DEBIAN_PACKAGE
18 CFLAGS =
19 LDFLAGS =
20 endif
21 PRJ_CFLAGS =
22 CECFLAGS =
23 OFLAGS =
24 LIBS =
25
26 ifdef DEBUG
27 NOSTRIP := y
28 endif
29
30 CONSOLE = -mconsole
31
32 # INCLUDES
33
34 _CF_DIR = ../../
35 ifndef BS_REGEN_COMP
36 BS_REGEN_COMP := default
37 endif
38
39 include $(_CF_DIR)crossplatform.mk
40 include $(_CF_DIR)$(BS_REGEN_COMP).cf
41
42 # POST-INCLUDES VARIABLES
43
44 OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
45
46 RES = 
47
48 _ECSOURCES = \
49         ecs.ec
50
51 ECSOURCES = $(call shwspace,$(_ECSOURCES))
52
53 _COBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES))))
54
55 _SYMBOLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES))))
56
57 _IMPORTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES))))
58
59 _ECOBJECTS = $(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES))))
60
61 _BOWLS = $(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES))))
62
63 COBJECTS = $(call shwspace,$(_COBJECTS))
64
65 SYMBOLS = $(call shwspace,$(_SYMBOLS))
66
67 IMPORTS = $(call shwspace,$(_IMPORTS))
68
69 ECOBJECTS = $(call shwspace,$(_ECOBJECTS))
70
71 BOWLS = $(call shwspace,$(_BOWLS))
72
73 SOURCES = $(ECSOURCES)
74
75 PRJ_CFLAGS += \
76          $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall -DREPOSITORY_VERSION="\"$(REPOSITORY_VER)\"" \
77                          -DECERE_BOOTSTRAP \
78                          -DECERE_STATIC
79
80 ECFLAGS += -module $(MODULE)
81 ECFLAGS += \
82          -nolinenumbers
83
84 CECFLAGS += -cpp $(_CPP)
85
86 # TARGETS
87
88 all: objdir $(COBJECTS) $(OBJ)$(MODULE).main.c
89
90 objdir:
91         $(if $(wildcard $(OBJ)),,$(call mkdir,$(OBJ)))
92         $(if $(ECERE_SDK_SRC),$(if $(wildcard $(call escspace,$(ECERE_SDK_SRC)/crossplatform.mk)),,@$(call echo,Ecere SDK Source Warning: The value of ECERE_SDK_SRC is pointing to an incorrect ($(ECERE_SDK_SRC)) location.)),)
93         $(if $(ECERE_SDK_SRC),,$(if $(ECP_DEBUG)$(ECC_DEBUG)$(ECS_DEBUG),@$(call echo,ECC Debug Warning: Please define ECERE_SDK_SRC before using ECP_DEBUG, ECC_DEBUG or ECS_DEBUG),))
94
95 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
96         @$(call rm,$(OBJ)symbols.lst)
97         @$(call touch,$(OBJ)symbols.lst)
98         $(call addtolistfile,$(SYMBOLS),$(OBJ)symbols.lst)
99         $(call addtolistfile,$(IMPORTS),$(OBJ)symbols.lst)
100         $(ECS) -console $(ARCH_FLAGS) $(ECSLIBOPT) @$(OBJ)symbols.lst -symbols obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) -o $(call quote_path,$@)
101
102 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
103         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
104         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(call quote_path,$@) -symbols $(OBJ)
105
106 $(SYMBOLS): | objdir
107
108 # SYMBOL RULES
109
110 $(OBJ)ecs.sym: ecs.ec
111         $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c $(call quote_path,ecs.ec) -o $(call quote_path,$@)
112
113 # C OBJECT RULES
114
115 $(OBJ)ecs.c: ecs.ec $(OBJ)ecs.sym | $(SYMBOLS)
116         $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(call quote_path,ecs.ec) -o $(call quote_path,$@) -symbols $(OBJ)
117
118 cleantarget: objdir
119         $(call rm,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S))
120         $(call rm,$(OBJ)symbols.lst)
121         $(call rm,$(OBJ)objects.lst)
122
123 clean: cleantarget
124         $(call rm,$(_ECOBJECTS))
125         $(call rm,$(_COBJECTS))
126         $(call rm,$(_BOWLS))
127         $(call rm,$(_IMPORTS))
128         $(call rm,$(_SYMBOLS))
129
130 realclean: cleantarget
131         $(call rmr,$(OBJ))
132
133 distclean:
134         $(_MAKE) -f $(_CF_DIR)Cleanfile distclean distclean_all_subdirs
135
136 Makefile.bootstrap: ;
137 $(_CF_DIR)crossplatform.mk: ;
138 $(_CF_DIR)$(TARGET_PLATFORM)-$(COMPILER).cf: ;