-.PHONY: all objdir clean realclean distclean
+.PHONY: all objdir cleantarget clean realclean distclean
-# CONTENT
+# CORE VARIABLES
MODULE := ffi
CONFIG := release
COMPILER := default
endif
-_CF_DIR = $(CF_DIR)
-
-ifndef DEBUG
-OPTIMIZE := -O2 -ffast-math
-else
-OPTIMIZE := -g
-NOSTRIP := y
-endif
TARGET_TYPE = staticlib
-ifeq "$(TARGET_TYPE)" "executable"
-CONSOLE = -mwindows
-endif
-
# FLAGS
+ECFLAGS =
ifndef DEBIAN_PACKAGE
CFLAGS =
+LDFLAGS =
endif
+PRJ_CFLAGS =
+CECFLAGS =
OFLAGS =
+LIBS =
+
+ifdef DEBUG
+NOSTRIP := y
+endif
+
+CONSOLE = -mwindows
# INCLUDES
-include ../../crossplatform.mk
-include ../../include.mk
+_CF_DIR = ../../
-# VARIABLES
+include $(_CF_DIR)crossplatform.mk
+include $(_CF_DIR)default.cf
-OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
+# POST-INCLUDES VARIABLES
-ifdef DEBUG
-CFLAGS += -D_DEBUG
-endif
+OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
RES =
TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ffi$(A)
-OBJECTS = \
+_OBJECTS = \
$(OBJ)ffi.o \
$(OBJ)win32.o \
$(OBJ)prep_cif.o \
$(OBJ)types.o \
$(OBJ)closures.o
-_ECSOURCES =
-
-ECSOURCES = $(call shwspace,$(_ECSOURCES))
-
-
+OBJECTS = $(_OBJECTS)
-
-SOURCES = $(ECSOURCES) \
+SOURCES = \
src/x86/ffi.c \
src/x86/win32.S \
src/prep_cif.c \
RESOURCES =
-LIBS = $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
+LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
+
+PRJ_CFLAGS += \
+ $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall \
+ -Iinclude \
+ -Ii686-pc-mingw32/include \
+ -Ii686-pc-mingw32
-CFLAGS += -fmessage-length=0 $(OPTIMIZE) $(FPIC) -Wall \
- -Iinclude \
- -Ii686-pc-mingw32/include \
- -Ii686-pc-mingw32
-CECFLAGS =
-ECFLAGS =
-ifneq "$(TARGET_TYPE)" "staticlib"
+
+CECFLAGS += -cpp $(_CPP)
+
+ifndef STATIC_LIBRARY_TARGET
OFLAGS +=
endif
$(SYMBOLS): | objdir
$(OBJECTS): | objdir
$(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
-ifneq "$(TARGET_TYPE)" "staticlib"
+ifndef STATIC_LIBRARY_TARGET
$(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
ifndef NOSTRIP
$(STRIP) $(STRIPOPT) $(TARGET)
# OBJECT RULES
$(OBJ)ffi.o: src/x86/ffi.c
- $(CC) $(CFLAGS) -c src/x86/ffi.c -o $(OBJ)ffi.o
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/x86/ffi.c -o $(OBJ)ffi.o
$(OBJ)win32.o: src/x86/win32.S
- $(CC) $(CFLAGS) -c src/x86/win32.S -o $(OBJ)win32.o
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/x86/win32.S -o $(OBJ)win32.o
$(OBJ)prep_cif.o: src/prep_cif.c
- $(CC) $(CFLAGS) -c src/prep_cif.c -o $(OBJ)prep_cif.o
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/prep_cif.c -o $(OBJ)prep_cif.o
$(OBJ)raw_api.o: src/raw_api.c
- $(CC) $(CFLAGS) -c src/raw_api.c -o $(OBJ)raw_api.o
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/raw_api.c -o $(OBJ)raw_api.o
$(OBJ)types.o: src/types.c
- $(CC) $(CFLAGS) -c src/types.c -o $(OBJ)types.o
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/types.c -o $(OBJ)types.o
$(OBJ)closures.o: src/closures.c
- $(CC) $(CFLAGS) -c src/closures.c -o $(OBJ)closures.o
+ $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/closures.c -o $(OBJ)closures.o
-clean: objdir
+cleantarget: objdir
$(call rmq,$(TARGET))
- $(call rmq,$(OBJECTS))
-realclean: clean
+clean: cleantarget
+ $(call rmq,$(_OBJECTS))
+
+realclean: cleantarget
$(call rmrq,$(OBJ))
-distclean:
+distclean: cleantarget
$(call rmrq,obj/)