deps/libffi: Using an Ecere project and Makefile to build libffi rather than a pre...
[sdk] / deps / libffi-3.0.11 / Makefile
1 .PHONY: all objdir clean realclean distclean
2
3 # CONTENT
4
5 MODULE := ffi
6 CONFIG := release
7 ifndef COMPILER
8 COMPILER := default
9 endif
10
11 _CF_DIR = $(CF_DIR)
12
13 ifndef DEBUG
14 OPTIMIZE := -O2 -ffast-math
15 else
16 OPTIMIZE := -g
17 NOSTRIP := y
18 endif
19 TARGET_TYPE = staticlib
20
21 ifeq "$(TARGET_TYPE)" "executable"
22 CONSOLE = -mwindows
23 endif
24
25 # FLAGS
26
27 CFLAGS =
28 CECFLAGS =
29 ECFLAGS =
30 OFLAGS =
31 LIBS =
32
33 # INCLUDES
34
35 include ../../include.mk
36
37 # VARIABLES
38
39 OBJ = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/
40
41 ifdef DEBUG
42 CFLAGS += -D_DEBUG
43 endif
44
45 RES = 
46
47 TARGET = obj/$(CONFIG).$(PLATFORM)$(COMPILER_SUFFIX)$(DEBUG_SUFFIX)/$(LP)ffi$(A)
48
49 OBJECTS = \
50         $(OBJ)ffi.o \
51         $(OBJ)win32.o \
52         $(OBJ)prep_cif.o \
53         $(OBJ)raw_api.o \
54         $(OBJ)types.o \
55         $(OBJ)closures.o
56
57 _ECSOURCES =
58
59 ECSOURCES = $(call shwspace,$(_ECSOURCES))
60
61
62
63
64 SOURCES = $(ECSOURCES) \
65         src/x86/ffi.c \
66         src/x86/win32.S \
67         src/prep_cif.c \
68         src/raw_api.c \
69         src/types.c \
70         src/closures.c
71
72 RESOURCES =
73
74 LIBS += $(SHAREDLIB) $(EXECUTABLE) $(LINKOPT)
75
76 CFLAGS += -fmessage-length=0 $(OPTIMIZE) $(FPIC) -Wall \
77          -Iinclude \
78          -Ii686-pc-mingw32/include \
79          -Ii686-pc-mingw32
80
81 CECFLAGS +=
82
83 ECFLAGS +=
84
85 ifneq "$(TARGET_TYPE)" "staticlib"
86 OFLAGS +=
87 endif
88
89 # TARGETS
90
91 all: objdir $(TARGET)
92
93 objdir:
94         $(if $(wildcard $(OBJ)),,$(call mkdirq,$(OBJ)))
95
96 $(SYMBOLS): | objdir
97 $(OBJECTS): | objdir
98 $(TARGET): $(SOURCES) $(RESOURCES) $(SYMBOLS) $(OBJECTS) | objdir
99 ifneq "$(TARGET_TYPE)" "staticlib"
100         $(CC) $(OFLAGS) $(OBJECTS) $(LIBS) -o $(TARGET) $(INSTALLNAME)
101 ifndef NOSTRIP
102         $(STRIP) $(STRIPOPT) $(TARGET)
103 endif
104 else
105         $(AR) rcs $(TARGET) $(OBJECTS) $(LIBS)
106 endif
107
108 # SYMBOL RULES
109
110 # C OBJECT RULES
111
112 # OBJECT RULES
113
114 $(OBJ)ffi.o: src/x86/ffi.c
115         $(CC) $(CFLAGS) -c src/x86/ffi.c -o $(OBJ)ffi.o
116
117 $(OBJ)win32.o: src/x86/win32.S
118         $(CC) $(CFLAGS) -c src/x86/win32.S -o $(OBJ)win32.o
119
120 $(OBJ)prep_cif.o: src/prep_cif.c
121         $(CC) $(CFLAGS) -c src/prep_cif.c -o $(OBJ)prep_cif.o
122
123 $(OBJ)raw_api.o: src/raw_api.c
124         $(CC) $(CFLAGS) -c src/raw_api.c -o $(OBJ)raw_api.o
125
126 $(OBJ)types.o: src/types.c
127         $(CC) $(CFLAGS) -c src/types.c -o $(OBJ)types.o
128
129 $(OBJ)closures.o: src/closures.c
130         $(CC) $(CFLAGS) -c src/closures.c -o $(OBJ)closures.o
131
132 clean: objdir
133         $(call rmq,$(TARGET))
134         $(call rmq,$(OBJECTS))
135
136 realclean: clean
137         $(call rmrq,$(OBJ))
138
139 distclean:
140         $(call rmrq,obj/)