makefiles: fixed broken snapshot build by reverting change to order only dependencies
[sdk] / epj2make / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CONTENT
4
5 MODULE := epj2make
6 CONFIG := release
7 COMPILER := default
8 TARGET_TYPE = executable
9
10 OBJ = obj/$(CONFIG).$(PLATFORM)/
11
12 RES = 
13
14 CONSOLE = -mconsole
15
16 TARGET = obj/$(CONFIG).$(PLATFORM)/epj2make$(E)
17
18 OBJECTS = $(OBJ)Project.o $(OBJ)ProjectConfig.o $(OBJ)ProjectNode.o $(OBJ)IDESettings.o \
19         $(OBJ)OldIDESettings.o $(OBJ)StringsBox.o $(OBJ)epj2make.o $(OBJ)$(MODULE).main$(O)
20
21 COBJECTS = $(OBJ)Project.c $(OBJ)ProjectConfig.c $(OBJ)ProjectNode.c $(OBJ)IDESettings.c \
22         $(OBJ)OldIDESettings.c $(OBJ)StringsBox.c $(OBJ)epj2make.c
23
24 SYMBOLS = $(OBJ)Project.sym $(OBJ)ProjectConfig.sym $(OBJ)ProjectNode.sym \
25         $(OBJ)IDESettings.sym $(OBJ)OldIDESettings.sym $(OBJ)StringsBox.sym $(OBJ)epj2make.sym
26
27 IMPORTS = $(OBJ)Project.imp $(OBJ)ProjectConfig.imp $(OBJ)ProjectNode.imp \
28         $(OBJ)IDESettings.imp $(OBJ)OldIDESettings.imp $(OBJ)StringsBox.imp $(OBJ)epj2make.imp
29
30 SOURCES = ../ide/src/project/Project.ec ../ide/src/project/ProjectConfig.ec \
31         ../ide/src/project/ProjectNode.ec ../ide/src/IDESettings.ec ../ide/src/OldIDESettings.ec \
32         ../extras/gui/controls/StringsBox.ec epj2make.ec
33
34 RESOURCES = ../include.mk
35
36 # CROSS-PLATFORM MAGIC
37
38 include ../include.mk
39
40 # TOOLCHAIN
41 export LD_LIBRARY_PATH = ../obj/$(PLATFORM)/lib/
42 export DYLD_LIBRARY_PATH = ../obj/$(PLATFORM)/lib/
43 ECP := $(call psep,../obj/$(PLATFORM)/bin/ecp)
44 ECC := $(call psep,../obj/$(PLATFORM)/bin/ecc)
45 ECS := $(call psep,../obj/$(PLATFORM)/bin/ecs)
46 EAR := $(call psep,../obj/$(PLATFORM)/bin/ear)
47
48 # FLAGS
49
50 CFLAGS = -fmessage-length=0 -O2 -ffast-math -m32 $(FPIC) -w \
51          -DMAKEFILE_GENERATOR
52
53 CECFLAGS =
54
55 ECFLAGS = -nolinenumbers
56
57 OFLAGS = -m32 \
58          -L../obj/$(PLATFORM)/bin \
59          -L../obj/$(PLATFORM)/lib
60
61 LIBS = -lecere $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
62
63 UPXFLAGS = -9 -q
64
65 # HARD CODED PLATFORM-SPECIFIC OPTIONS
66 ifdef LINUX
67 OFLAGS += -Wl,--no-undefined
68 endif
69
70 # PLATFORM-SPECIFIC OPTIONS
71
72 ifdef LINUX
73
74 endif
75
76 # TARGETS
77
78 all: objdir $(TARGET)
79
80 objdir:
81         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
82
83 $(OBJ)$(MODULE).main.ec: $(SYMBOLS) $(COBJECTS)
84         $(ECS) -console $(ECSLIBOPT) $(SYMBOLS) $(IMPORTS) -symbols obj/$(CONFIG).$(PLATFORM) -o $(OBJ)$(MODULE).main.ec
85
86 $(OBJ)$(MODULE).main.c: $(OBJ)$(MODULE).main.ec
87         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.sym -symbols $(OBJ)
88         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.ec -o $(OBJ)$(MODULE).main.c -symbols $(OBJ)
89
90 $(TARGET): $(SOURCES) $(RESOURCES) | objdir $(SYMBOLS) $(OBJECTS)
91         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
92         $(STRIP) $(STRIPOPT) $(TARGET)
93         $(EAR) awq $(TARGET) ../include.mk ""
94         $(call cpq,$(TARGET),../obj/$(PLATFORM)/bin/)
95
96 # SYMBOL RULES
97
98 $(OBJ)Project.sym: ../ide/src/project/Project.ec
99         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ../ide/src/project/Project.ec -o $(OBJ)Project.sym
100
101 $(OBJ)ProjectConfig.sym: ../ide/src/project/ProjectConfig.ec
102         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ../ide/src/project/ProjectConfig.ec -o $(OBJ)ProjectConfig.sym
103
104 $(OBJ)ProjectNode.sym: ../ide/src/project/ProjectNode.ec
105         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ../ide/src/project/ProjectNode.ec -o $(OBJ)ProjectNode.sym
106
107 $(OBJ)IDESettings.sym: ../ide/src/IDESettings.ec
108         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ../ide/src/IDESettings.ec -o $(OBJ)IDESettings.sym
109
110 $(OBJ)OldIDESettings.sym: ../ide/src/OldIDESettings.ec
111         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ../ide/src/OldIDESettings.ec -o $(OBJ)OldIDESettings.sym
112
113 $(OBJ)StringsBox.sym: ../extras/gui/controls/StringsBox.ec
114         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c ../extras/gui/controls/StringsBox.ec -o $(OBJ)StringsBox.sym
115
116 $(OBJ)epj2make.sym: epj2make.ec
117         $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c epj2make.ec -o $(OBJ)epj2make.sym
118
119 # C OBJECT RULES
120
121 $(OBJ)Project.c: ../ide/src/project/Project.ec $(OBJ)Project.sym | $(SYMBOLS)
122         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ../ide/src/project/Project.ec -o $(OBJ)Project.c -symbols $(OBJ)
123
124 $(OBJ)ProjectConfig.c: ../ide/src/project/ProjectConfig.ec $(OBJ)ProjectConfig.sym | $(SYMBOLS)
125         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ../ide/src/project/ProjectConfig.ec -o $(OBJ)ProjectConfig.c -symbols $(OBJ)
126
127 $(OBJ)ProjectNode.c: ../ide/src/project/ProjectNode.ec $(OBJ)ProjectNode.sym | $(SYMBOLS)
128         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ../ide/src/project/ProjectNode.ec -o $(OBJ)ProjectNode.c -symbols $(OBJ)
129
130 $(OBJ)IDESettings.c: ../ide/src/IDESettings.ec $(OBJ)IDESettings.sym | $(SYMBOLS)
131         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ../ide/src/IDESettings.ec -o $(OBJ)IDESettings.c -symbols $(OBJ)
132
133 $(OBJ)OldIDESettings.c: ../ide/src/OldIDESettings.ec $(OBJ)OldIDESettings.sym | $(SYMBOLS)
134         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ../ide/src/OldIDESettings.ec -o $(OBJ)OldIDESettings.c -symbols $(OBJ)
135
136 $(OBJ)StringsBox.c: ../extras/gui/controls/StringsBox.ec $(OBJ)StringsBox.sym | $(SYMBOLS)
137         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c ../extras/gui/controls/StringsBox.ec -o $(OBJ)StringsBox.c -symbols $(OBJ)
138
139 $(OBJ)epj2make.c: epj2make.ec $(OBJ)epj2make.sym | $(SYMBOLS)
140         $(ECC) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) $(FVISIBILITY) -c epj2make.ec -o $(OBJ)epj2make.c -symbols $(OBJ)
141
142 # OBJECT RULES
143
144 $(OBJ)Project.o: $(OBJ)Project.c
145         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)Project.c -o $(OBJ)Project.o
146
147 $(OBJ)ProjectConfig.o: $(OBJ)ProjectConfig.c
148         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)ProjectConfig.c -o $(OBJ)ProjectConfig.o
149
150 $(OBJ)ProjectNode.o: $(OBJ)ProjectNode.c
151         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)ProjectNode.c -o $(OBJ)ProjectNode.o
152
153 $(OBJ)IDESettings.o: $(OBJ)IDESettings.c
154         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)IDESettings.c -o $(OBJ)IDESettings.o
155
156 $(OBJ)OldIDESettings.o: $(OBJ)OldIDESettings.c
157         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)OldIDESettings.c -o $(OBJ)OldIDESettings.o
158
159 $(OBJ)StringsBox.o: $(OBJ)StringsBox.c
160         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)StringsBox.c -o $(OBJ)StringsBox.o
161
162 $(OBJ)epj2make.o: $(OBJ)epj2make.c
163         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)epj2make.c -o $(OBJ)epj2make.o
164
165 $(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c
166         $(CC) $(CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.c -o $(OBJ)$(MODULE).main$(O)
167
168 clean: objdir
169         $(call rmq,$(OBJ)$(MODULE).main.c $(OBJ)$(MODULE).main.ec $(OBJ)$(MODULE).main$(I) $(OBJ)$(MODULE).main$(S) $(TARGET))
170         $(call rmq,$(OBJECTS))
171         $(call rmq,$(COBJECTS))
172         $(call rmq,$(IMPORTS))
173         $(call rmq,$(SYMBOLS))
174
175 realclean:
176         $(call rmrq,$(OBJ))
177
178 distclean:
179         $(call rmrq,obj/)