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