build system: Fixed CCACHE/DISTCC/SYSROOT space issues
[sdk] / ear / cmd / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := ear
6 CONFIG := release
7 ifndef COMPILER
8 COMPILER := default
9 endif
10
11 TARGET_TYPE = executable
12
13 # FLAGS
14
15 ECFLAGS =
16 ifndef DEBIAN_PACKAGE
17 CFLAGS =
18 endif
19 CECFLAGS =
20 OFLAGS =
21 LDFLAGS =
22 LIBS =
23
24 ifdef DEBUG
25 NOSTRIP := y
26 endif
27
28 CONSOLE = -mconsole
29
30 # INCLUDES
31
32 _CF_DIR = ../../
33
34 include $(_CF_DIR)crossplatform.mk
35 include $(_CF_DIR)include.mk
36
37 # CUSTOM TOOLCHAIN / COMPILER CONFIG
38
39 export LD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
40 export DYLD_LIBRARY_PATH = ../../obj/$(PLATFORM)/lib/
41 ECP := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecp)
42 ECC := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecc)
43 ECS := $(call psep,../../compiler/bootstrap/obj/bin.$(PLATFORM)/ecs)
44 EAR := $(call psep,../../obj/$(PLATFORM)/bin/ear)
45
46 # END OF CUSTOM TOOLCHAIN / COMPILER CONFIG
47
48 # POST-INCLUDES VARIABLES
49
50 OBJ = obj/$(CONFIG).$(PLATFORM)/
51
52 RES = 
53
54 TARGET = obj/$(CONFIG).$(PLATFORM)/ear$(E)
55
56 _ECSOURCES = \
57         ear.ec
58
59 ECSOURCES = $(call shwspace,$(_ECSOURCES))
60
61 COBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(C),$(notdir $(_ECSOURCES)))))
62
63 SYMBOLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(S),$(notdir $(_ECSOURCES)))))
64
65 IMPORTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(I),$(notdir $(_ECSOURCES)))))
66
67 ECOBJECTS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(O),$(notdir $(_ECSOURCES)))))
68
69 BOWLS = $(call shwspace,$(addprefix $(OBJ),$(patsubst %.ec,%$(B),$(notdir $(_ECSOURCES)))))
70
71 OBJECTS = $(ECOBJECTS) $(OBJ)$(MODULE).main$(O)
72
73 SOURCES = $(ECSOURCES)
74
75 RESOURCES = \
76         locale/es_ES/LC_MESSAGES/ear.mo \
77         locale/zh_CN/LC_MESSAGES/ear.mo \
78         ../extract/obj/release.$(PLATFORM)/extract$(E)
79
80 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
81
82 ifndef STATIC_LIBRARY_TARGET
83 LIBS += \
84         $(call _L,ecere)
85 endif
86
87 CFLAGS += \
88          $(if $(DEBIAN_PACKAGE),$(CPPFLAGS),) $(if $(DEBUG), -D_DEBUG,) \
89          $(if $(DEBUG), -g, -O2 -ffast-math) $(FORCE_32_BIT) $(FPIC) -w
90
91
92 ECFLAGS += \
93          -nolinenumbers
94
95
96
97
98 CECFLAGS += "-cpp $(CPP)"
99
100 ifndef STATIC_LIBRARY_TARGET
101 OFLAGS += $(FORCE_32_BIT) \
102          -L../../obj/$(PLATFORM)/bin \
103          -L../../obj/$(PLATFORM)/lib
104 OFLAGS += $(LDFLAGS)
105 endif
106
107 # TARGETS
108
109 all: objdir $(TARGET)
110
111 objdir:
112         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
113
114 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
115         $(ECS) -console $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
116
117 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
118         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
119         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
120
121 $(SYMBOLS): | objdir
122 $(OBJECTS): | objdir
123
124 nores: $(SOURCES) $(SYMBOLS) $(OBJECTS) | objdir
125         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
126 ifndef NOSTRIP
127         $(STRIP) $(STRIPOPT) $(TARGET)
128 endif
129         $(call cpq,$(TARGET),../../obj/$(PLATFORM)/bin/)
130
131 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
132 ifndef STATIC_LIBRARY_TARGET
133         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
134 ifndef NOSTRIP
135         $(STRIP) $(STRIPOPT) $(TARGET)
136 endif
137         $(EAR) $(EARFLAGS) $(TARGET) ../extract/obj/release.$(PLATFORM)/extract$(E) ""
138         $(EAR) $(EARFLAGS) $(TARGET) locale/es_ES/LC_MESSAGES/ear.mo "locale/es_ES/LC_MESSAGES"
139         $(EAR) $(EARFLAGS) $(TARGET) locale/zh_CN/LC_MESSAGES/ear.mo "locale/zh_CN/LC_MESSAGES"
140 else
141         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
142 endif
143         $(call cpq,$(TARGET),../../obj/$(PLATFORM)/bin/)
144
145 # SYMBOL RULES
146
147 $(OBJ)ear.sym: ear.ec
148         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ear.ec -o $(OBJ)ear.sym
149
150 # C OBJECT RULES
151
152 $(OBJ)ear.c: ear.ec $(OBJ)ear.sym | $(SYMBOLS)
153         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ear.ec -o $(OBJ)ear.c -symbols $(OBJ)
154
155 # OBJECT RULES
156
157 $(OBJ)ear.o: $(OBJ)ear.c
158         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)ear.c -o $(OBJ)ear.o
159
160 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
161         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
162
163 cleantarget: objdir
164         $(call rmq,$(TARGET))
165
166 clean: objdir
167         $(call rmq,$(OBJ)$(MODULE).main.o $(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
168         $(call rmq,$(_OBJECTS))
169         $(call rmq,$(ECOBJECTS))
170         $(call rmq,$(COBJECTS))
171         $(call rmq,$(BOWLS))
172         $(call rmq,$(IMPORTS))
173         $(call rmq,$(SYMBOLS))
174
175 realclean: clean
176         $(call rmrq,$(OBJ))
177
178 distclean:
179         $(call rmrq,obj/)