1 #
2 # MacOS libffi Makefile
3 #
4
5 BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE)
6 TARGET_DIRS = $(BUILD_DIR)
7
8 SRCBASE_DIR = ../../../3rd_party/libffi
9 OBJBASE_DIR = $(BUILD_DIR)/obj/libffi
10
11 DIRLIST = src src/x86
12
13 TARGET_NAME = lib$(BASE_NAME).a
14 TARGET = $(BUILD_DIR)/$(TARGET_NAME)
15
16 CFLAGS += -c \
17 -Werror=implicit-function-declaration \
18 -fPIC \
19 -DGSTREAMER_LITE
20
21 ifeq ($(BUILD_TYPE), Release)
22 CFLAGS += -Os
23 else
24 CFLAGS += -O0 -g -Wall
25 endif
26
27 INCLUDES = -I$(SRCBASE_DIR)/include -I$(SRCBASE_DIR)/include/x64
28
29 C_SOURCES = src/closures.c \
30 src/java_raw_api.c \
31 src/prep_cif.c \
32 src/raw_api.c \
33 src/types.c \
34 src/x86/ffi64.c \
35
36 ASM_SOURCES = src/x86/darwin64.S
37
38 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
39 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(C_SOURCES))\
40 $(patsubst %.S,$(OBJBASE_DIR)/%.o,$(ASM_SOURCES))
41
42 .PHONY: default list
43
44 default: $(TARGET)
45
46 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c
47 $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
48
49 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.S
50 $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
51
52 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS)
53
54 $(OBJ_DIRS):
55 mkdir -p $(OBJ_DIRS)
56
57 $(TARGET_DIRS):
58 mkdir -p $(TARGET_DIRS)
59
60 $(TARGET): $(OBJECTS)
61 $(AR) -static $(OBJECTS) -arch_only x86_64 -o $@