tarball,crossplatform.mk: improve cross-platform shell command functions. let errors...
[sdk] / compiler / bootstrap / ecs / Makefile
index 54119fa..e46bb81 100644 (file)
@@ -1,19 +1,47 @@
 .PHONY: all objdir clean realclean distclean
 
-# CONTENT
+# CORE VARIABLES
 
 MODULE := ecs
 CONFIG := bootstrap
+ifndef COMPILER
 COMPILER := default
+endif
+
 TARGET_TYPE = executable
 
-OBJ = obj/$(CONFIG).$(PLATFORM)/
+# FLAGS
 
-RES = 
+ECFLAGS =
+ifndef DEBIAN_PACKAGE
+CFLAGS =
+LDFLAGS =
+endif
+PRJ_CFLAGS =
+CECFLAGS =
+OFLAGS =
+LIBS =
+
+ifdef DEBUG
+NOSTRIP := y
+endif
+
+CONSOLE = -mconsole
+
+# INCLUDES
+
+_CF_DIR = ../../../
 
-CONSOLE = 
+include $(_CF_DIR)crossplatform.mk
+include $(_CF_DIR)default.cf
 
-TARGET = obj/$(CONFIG).$(PLATFORM)/ecs$(E)
+# POST-INCLUDES VARIABLES
+
+OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
+
+RES = 
+
+TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/ecs$(E)
 
 OBJECTS = \
        $(OBJ)ecs.o \
@@ -23,48 +51,43 @@ SOURCES = \
        bootstrap/ecs.c \
        bootstrap/ecs.main.c
 
-# CROSS-PLATFORM MAGIC
+LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
 
-include ../../../include.mk
+ifndef STATIC_LIBRARY_TARGET
+LIBS += \
+       $(call _L,ecereBootstrap) \
+       $(call _L,ecBootstrap)
+endif
 
-# FLAGS
+PRJ_CFLAGS += \
+        $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -w \
+                        -DECERE_STATIC
 
-CFLAGS = -fmessage-length=0 -O2 -ffast-math -m32 $(FPIC) -w \
-        -DECERE_STATIC
 
-CECFLAGS =
+ECFLAGS += \
+        -nolinenumbers
 
-ECFLAGS = -nolinenumbers
 
-OFLAGS = -m32 \
-        -L../ecere/obj/bootstrap.$(PLATFORM) \
-        -L../libec/obj/bootstrap.$(PLATFORM)
-
-LIBS = -lecereBootstrap -lecBootstrap $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
+# PLATFORM-SPECIFIC OPTIONS
 
-UPXFLAGS = -9 -q
+ifdef LINUX_TARGET
 
-# HARD CODED PLATFORM-SPECIFIC OPTIONS
-ifdef LINUX
-OFLAGS += -Wl,--no-undefined
+ifndef STATIC_LIBRARY_TARGET
+LIBS += \
+       $(call _L,m) \
+       $(call _L,dl)
 endif
 
-# PLATFORM-SPECIFIC OPTIONS
-
-ifdef WINDOWS
-
-else
-ifdef LINUX
+endif
 
-LIBS += -lm -ldl
 
-else
-ifdef OSX
 
-LIBS += -lm -ldl
+CECFLAGS += -cpp $(_CPP)
 
-endif
-endif
+ifndef STATIC_LIBRARY_TARGET
+OFLAGS += \
+        -L../ecere/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX) \
+        -L../libec/obj/bootstrap.$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)
 endif
 
 # TARGETS
@@ -72,7 +95,7 @@ endif
 all: objdir $(TARGET)
 
 objdir:
-       $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
+       $(if $(wildcard $(OBJ)),,$(call mkdir,$(OBJ)))
 
 $(TARGET): $(SOURCES) $(RESOURCES) | objdir $(SYMBOLS) $(OBJECTS)
        $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
@@ -80,18 +103,20 @@ ifndef NOSTRIP
        $(STRIP) $(STRIPOPT) $(TARGET)
 endif
 
+# OBJECT RULES
+
 $(OBJ)ecs.o: bootstrap/ecs.c
-       $(CC) $(CFLAGS) -c bootstrap/ecs.c -o $(OBJ)ecs.o
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c bootstrap/ecs.c -o $(OBJ)ecs.o
 
 $(OBJ)ecs.main.o: bootstrap/ecs.main.c
-       $(CC) $(CFLAGS) -c bootstrap/ecs.main.c -o $(OBJ)ecs.main.o
+       $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c bootstrap/ecs.main.c -o $(OBJ)ecs.main.o
 
 clean: objdir
-       $(call rmq,$(TARGET))
-       $(call rmq,$(OBJECTS))
+       $(call rm,$(TARGET))
+       $(call rm,$(OBJECTS))
 
-realclean:
-       $(call rmrq,$(OBJ))
+realclean: objdir
+       $(call rmr,$(OBJ))
 
-distclean:
-       $(call rmrq,obj/)
+distclean: objdir
+       $(call rmr,obj/)