a5b0ad049fdc36fe8bc1234be679fee2bda9b52b
[sdk] / compiler / bootstrap / ecs / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := ecs
6 CONFIG := bootstrap
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)default.cf
36
37 # POST-INCLUDES VARIABLES
38
39 OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
40
41 RES = 
42
43 TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E)
44
45 OBJECTS = \
46         $(OBJ)ecs.o \
47         $(OBJ)$(MODULE).main$(O)
48
49 SOURCES = \
50         bootstrap/ecs.c \
51         bootstrap/ecs.main.c
52
53 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
54
55 ifndef STATIC_LIBRARY_TARGET
56 LIBS += \
57         $(call _L,ecereBootstrap) \
58         $(call _L,ecBootstrap)
59 endif
60
61 CFLAGS += \
62          $(if $(DEBIAN_PACKAGE),$(CPPFLAGS),) $(if $(DEBUG), -D_DEBUG,) \
63          $(if $(DEBUG), -g, -O2 -ffast-math) $(FORCE_32_BIT) $(FPIC) -w \
64          -DECERE_STATIC
65
66
67 ECFLAGS += \
68          -nolinenumbers
69
70
71 # PLATFORM-SPECIFIC OPTIONS
72
73 ifdef LINUX_TARGET
74
75 ifndef STATIC_LIBRARY_TARGET
76 LIBS += \
77         $(call _L,m) \
78         $(call _L,dl)
79 endif
80
81 endif
82
83
84
85 CECFLAGS += -cpp $(_CPP)
86
87 ifndef STATIC_LIBRARY_TARGET
88 OFLAGS += $(FORCE_32_BIT) \
89          -L../ecere/obj/bootstrap.$(PLATFORM) \
90          -L../libec/obj/bootstrap.$(PLATFORM)
91 OFLAGS += $(LDFLAGS)
92 endif
93
94 # TARGETS
95
96 all: objdir $(TARGET)
97
98 objdir:
99         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
100
101 $(TARGET): $(SOURCES) $(RESOURCES) | objdir $(SYMBOLS) $(OBJECTS)
102         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
103 ifndef NOSTRIP
104         $(STRIP) $(STRIPOPT) $(TARGET)
105 endif
106
107 # OBJECT RULES
108
109 $(OBJ)ecs.o: bootstrap/ecs.c
110         $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/ecs.c -o $(OBJ)ecs.o
111
112 $(OBJ)ecs.main.o: bootstrap/ecs.main.c
113         $(CC) $(CFLAGS) $(FVISIBILITY) -c bootstrap/ecs.main.c -o $(OBJ)ecs.main.o
114
115 clean: objdir
116         $(call rmq,$(TARGET))
117         $(call rmq,$(OBJECTS))
118
119 realclean: clean
120         $(call rmrq,$(OBJ))
121
122 distclean:
123         $(call rmrq,obj/)