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 $@