1 # 2 # LibFFI Makefile 3 # 4 CC = cl.exe 5 AR = lib.exe 6 7 OBJBASE_DIR = $(BUILD_DIR)/obj/$(THIRD_PARTY_DIR)/libffi 8 SRCBASE_DIR = ../../../$(THIRD_PARTY_DIR)/libffi 9 10 DIRLIST = src src/x86 11 12 DEP_DIRS = $(BUILD_DIR) $(addprefix $(OBJBASE_DIR)/,$(DIRLIST)) 13 14 C_SOURCES = src/closures.c \ 15 src/java_raw_api.c \ 16 src/prep_cif.c \ 17 src/raw_api.c \ 18 src/types.c 19 20 COMPILER_FLAGS = -nologo -W3 -WX- -EHsc -GS -fp:precise -Gm- \ 21 -Zc:wchar_t -Zc:forScope -Gd -wd"4430" -analyze- -errorReport:queue 22 23 INCLUDES = -I$(SRCBASE_DIR)/include 24 25 CFLAGS = -DFFI_BUILDING \ 26 -DGSTREAMER_LITE \ 27 $(INCLUDES) \ 28 $(COMPILER_FLAGS) 29 30 LIBFLAGS = -out:$(shell cygpath -ma $(TARGET)) -nologo 31 32 ifeq ($(BUILD_TYPE), Release) 33 CFLAGS += -O1 -Oy -MD -Gy -GF 34 else # debug 35 CFLAGS += -Od -Oy- -RTC1 -MDd -Zi -Fd$(PDB) 36 endif 37 38 ifeq ($(ARCH), x32) 39 INCLUDES += -I$(SRCBASE_DIR)/include/x86 40 CFLAGS += -DX86_WIN32 41 LIBFLAGS += -MACHINE:x86 42 43 C_SOURCES += src/x86/ffi.c 44 ASM_SOURCES = src/x86/win32.S 45 ASM_FLAGS = -DX86_WIN32 46 47 ML = ml.exe 48 MLFLAGS = -safeseh 49 else 50 INCLUDES += -I$(SRCBASE_DIR)/include/x64 51 CFLAGS += -DX86_WIN64 52 LIBFLAGS += -MACHINE:x64 53 54 C_SOURCES += src/x86/ffi.c 55 ASM_SOURCES = src/x86/win64.S 56 ASM_FLAGS = -DX86_WIN64 57 58 ML = ml64.exe 59 MLFLAGS = 60 endif 61 62 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.obj,$(C_SOURCES)) \ 63 $(patsubst %.S,$(OBJBASE_DIR)/%.obj,$(ASM_SOURCES)) 64 65 .PHONY: default list 66 67 default: $(TARGET) 68 69 $(TARGET): $(OBJECTS) 70 $(AR) $(LIBFLAGS) $(foreach object,$(OBJECTS),$(shell cygpath -ma $(object))) 71 72 $(OBJECTS): | $(DEP_DIRS) 73 74 $(DEP_DIRS): 75 @mkdir -p $(DEP_DIRS) 76 77 $(OBJBASE_DIR)/%.obj: $(SRCBASE_DIR)/%.c 78 $(CC) $(CFLAGS) -TC -c -Fo$(shell cygpath -ma $@) $< 79 80 $(OBJBASE_DIR)/%.obj: $(SRCBASE_DIR)/%.S 81 $(CC) -EP $(INCLUDES) $(CFLAGS) $(shell cygpath -ma $(SRCBASE_DIR)/$(ASM_SOURCES)) > $(shell cygpath -ma $@.asm) 82 $(ML) $(MLFLAGS) -c -Fo$(shell cygpath -ma $@) $(shell cygpath -ma $@.asm)