Makefiles: Force building 32 or 64 bit by setting ARCH=32 or 64
[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 LDFLAGS =
19 endif
20 PRJ_CFLAGS =
21 CECFLAGS =
22 OFLAGS =
23 LIBS =
24
25 ifdef DEBUG
26 NOSTRIP := y
27 endif
28
29 CONSOLE = -mconsole
30
31 # INCLUDES
32
33 _CF_DIR = ../../../
34
35 include $(_CF_DIR)crossplatform.mk
36 include $(_CF_DIR)default.cf
37
38 # POST-INCLUDES VARIABLES
39
40 OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
41
42 RES = 
43
44 TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E)
45
46 OBJECTS = \
47         $(OBJ)ecs.o \
48         $(OBJ)$(MODULE).main$(O)
49
50 SOURCES = \
51         bootstrap/ecs.c \
52         bootstrap/ecs.main.c
53
54 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
55
56 ifndef STATIC_LIBRARY_TARGET
57 LIBS += \
58         $(call _L,ecereBootstrap) \
59         $(call _L,ecBootstrap)
60 endif
61
62 PRJ_CFLAGS += \
63          $(if $(DEBUG), -g, -O2 -ffast-math) $(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 += \
89          -L../ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) \
90          -L../libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)
91 endif
92
93 # TARGETS
94
95 all: objdir $(TARGET)
96
97 objdir:
98         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
99
100 $(TARGET): $(SOURCES) $(RESOURCES) | objdir $(SYMBOLS) $(OBJECTS)
101         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
102 ifndef NOSTRIP
103         $(STRIP) $(STRIPOPT) $(TARGET)
104 endif
105
106 # OBJECT RULES
107
108 $(OBJ)ecs.o: bootstrap/ecs.c
109         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c bootstrap/ecs.c -o $(OBJ)ecs.o
110
111 $(OBJ)ecs.main.o: bootstrap/ecs.main.c
112         $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c bootstrap/ecs.main.c -o $(OBJ)ecs.main.o
113
114 clean: objdir
115         $(call rmq,$(TARGET))
116         $(call rmq,$(OBJECTS))
117
118 realclean: objdir
119         $(call rmrq,$(OBJ))
120
121 distclean: objdir
122         $(call rmrq,obj/)