93ef7383eef84b64443724110bae34cd47a3ae17
[sdk] / deps / libffi-3.0.11 / Makefile
1 .PHONY: all objdir cleantarget clean realclean distclean
2
3 # CORE VARIABLES
4
5 MODULE := ffi
6 CONFIG := release
7 ifndef COMPILER
8 COMPILER := default
9 endif
10
11 TARGET_TYPE = staticlib
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 = -mwindows
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)/$(LP)ffi$(A)
45
46 ifeq "$(HOST_ARCH)" "X64"
47 PLATFORM_OBJ  := win64
48 else
49 PLATFORM_OBJ  := win32
50 endif
51
52 _OBJECTS = \
53         $(OBJ)ffi.o \
54         $(OBJ)$(PLATFORM_OBJ).o \
55         $(OBJ)prep_cif.o \
56         $(OBJ)raw_api.o \
57         $(OBJ)types.o \
58         $(OBJ)closures.o
59
60 OBJECTS = $(_OBJECTS)
61
62 SOURCES = \
63         src/x86/ffi.c \
64         src/x86/$(PLATFORM_OBJ).S \
65         src/prep_cif.c \
66         src/raw_api.c \
67         src/types.c \
68         src/closures.c
69
70 RESOURCES =
71
72 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
73
74 PRJ_CFLAGS += \
75          $(if $(DEBUG), -g, -O2 -ffast-math) $(FPIC) -Wall \
76                          -Iinclude \
77                          -Ii686-pc-mingw32/include \
78                          -Ii686-pc-mingw32
79
80
81
82
83
84 CECFLAGS += -cpp $(_CPP)
85
86 # TARGETS
87
88 all: objdir $(TARGET)
89
90 objdir:
91         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
92
93 $(SYMBOLS): | objdir
94 $(OBJECTS): | objdir
95 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
96 ifndef STATIC_LIBRARY_TARGET
97         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
98 ifndef NOSTRIP
99         $(STRIP) $(STRIPOPT) $(TARGET)
100 endif
101 else
102         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
103 endif
104
105 # SYMBOL RULES
106
107 # C OBJECT RULES
108
109 # OBJECT RULES
110
111 $(OBJ)ffi.o: src/x86/ffi.c
112         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/x86/ffi.c -o $(OBJ)ffi.o
113
114 $(OBJ)$(PLATFORM_OBJ).o: src/x86/$(PLATFORM_OBJ).S
115         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/x86/$(PLATFORM_OBJ).S -o $(OBJ)$(PLATFORM_OBJ).o
116
117 $(OBJ)prep_cif.o: src/prep_cif.c
118         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/prep_cif.c -o $(OBJ)prep_cif.o
119
120 $(OBJ)raw_api.o: src/raw_api.c
121         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/raw_api.c -o $(OBJ)raw_api.o
122
123 $(OBJ)types.o: src/types.c
124         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/types.c -o $(OBJ)types.o
125
126 $(OBJ)closures.o: src/closures.c
127         $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/closures.c -o $(OBJ)closures.o
128
129 cleantarget: objdir
130         $(call rmq,$(TARGET))
131
132 clean: cleantarget
133         $(call rmq,$(_OBJECTS))
134
135 realclean: cleantarget
136         $(call rmrq,$(OBJ))
137
138 distclean: cleantarget
139         $(call rmrq,obj/)