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 -DX86_64 21 22 ifeq ($(BUILD_TYPE), Release) 23 CFLAGS += -Os 24 else 25 CFLAGS += -O0 -g -Wall 26 endif 27 28 INCLUDES = -I$(SRCBASE_DIR)/include -I$(SRCBASE_DIR)/include/mac/x64 29 30 C_SOURCES = src/closures.c \ 31 src/java_raw_api.c \ 32 src/prep_cif.c \ 33 src/raw_api.c \ 34 src/types.c \ 35 src/x86/ffi64.c \ 36 src/x86/ffiw64.c 37 38 ASM_SOURCES = src/x86/unix64.S \ 39 src/x86/win64.S 40 41 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST)) 42 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(C_SOURCES))\ 43 $(patsubst %.S,$(OBJBASE_DIR)/%.o,$(ASM_SOURCES)) 44 45 .PHONY: default list 46 47 default: $(TARGET) 48 49 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c 50 $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ 51 52 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.S 53 $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ 54 55 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS) 56 57 $(OBJ_DIRS): 58 mkdir -p $(OBJ_DIRS) 59 60 $(TARGET_DIRS): 61 mkdir -p $(TARGET_DIRS) 62 63 $(TARGET): $(OBJECTS) 64 $(AR) -static $(OBJECTS) -arch_only x86_64 -o $@