| # |
| # ==================================================================== |
| # |
| # libffi Windows Makefile |
| # |
| # |
| # ==================================================================== |
| # |
| |
| NAME=ffi-3 |
| VERSION=3.0.10 |
| TARGET=X86_WIN32 |
| CC=cl.exe |
| AS=ml.exe |
| RC=rc.exe |
| MT=mt.exe |
| AR="link.exe" |
| SO=.dll |
| OBJ=.obj |
| EXE=.exe |
| LA=.lib |
| LINK="link.exe" |
| PREFIX= |
| TOPDIR=. |
| CPP=cl.exe -EP |
| CFLAGS=-nologo -Zi -D_MD -W3 -DWIN32 -DWINNT -D_WIN32 -D_WINDOWS -D_WINNT -D_WIN32_WINNT=0x0501 -D_WIN32_IE=0x0600 -D_X86_=1 -DNDEBUG -MD -O2 -Ob2 -Oy- |
| LDFLAGS=/NOLOGO /MACHINE:X86 |
| SHFLAGS=/DLL /INCREMENTAL:NO /DEBUG /SUBSYSTEM:WINDOWS /OPT:REF |
| ARFLAGS=/LIB |
| ASFLAGS=-coff -W3 -Cx -Zm -Di386 -DQUIET -D?QUIET |
| RCFLAGS=/l 0x409 -DNDEBUG |
| INCLUDES=-I . -I .\include -I .\src\x86 |
| LIBS=kernel32.lib advapi32.lib shell32.lib user32.lib gdi32.lib |
| |
| VERSION_MAJOR=3 |
| VERSION_MINOR=1 |
| VERSION_PATCH=10rc |
| |
| DESTDIR=$(PREFIX) |
| DESTBIN=$(PREFIX)\bin |
| DESTLIB=$(PREFIX)\lib |
| DESTINC=$(PREFIX)\include |
| SRCDIR=$(TOPDIR)\src |
| |
| WORKDIR=$(TOPDIR)\.libs |
| SOLIBNAME=lib$(NAME) |
| LALIBNAME=libffi_convenience |
| STATICLIB=$(WORKDIR)\$(LALIBNAME)$(LA) |
| |
| BUILDPDB = $(WORKDIR)\$(SOLIBNAME).pdb |
| |
| HEADERS = \ |
| $(TOPDIR)\fficonfig.h |
| |
| FFI_HEADERS = \ |
| $(TOPDIR)\include\ffi.h |
| |
| OBJECTS = \ |
| $(SRCDIR)\closures.obj \ |
| $(SRCDIR)\debug.obj \ |
| $(SRCDIR)\java_raw_api.obj \ |
| $(SRCDIR)\prep_cif.obj \ |
| $(SRCDIR)\raw_api.obj \ |
| $(SRCDIR)\types.obj \ |
| $(SRCDIR)\x86\ffi.obj |
| |
| !IF "$(TARGET)" == "X86_WIN32" |
| OBJECTS = $(OBJECTS) \ |
| $(SRCDIR)\x86\win32.obj |
| ASMSRCS = \ |
| $(SRCDIR)\x86\win32.asm |
| |
| !ENDIF |
| !IF "$(TARGET)" == "X86_WIN64" |
| OBJECTS = $(OBJECTS) \ |
| $(SRCDIR)\x86\win64.obj |
| ASMSRCS = \ |
| $(SRCDIR)\x86\win64.asm |
| |
| !ENDIF |
| |
| .SUFFIXES : .S .asm |
| |
| all: $(WORKDIR) $(STATICLIB) |
| |
| .c$(OBJ): |
| $(CC) -c $(CFLAGS) $(INCLUDES) -Fo$@ -Fd$(WORKDIR)\$(NAME)-src $< |
| |
| .asm$(OBJ): |
| $(AS) -c $(ASFLAGS) /Fo $@ $< |
| |
| .S.asm: |
| $(CPP) $(CFLAGS) $(INCLUDES) $< >$@ |
| |
| .rc.res: |
| $(RC) $(RCFLAGS) /fo $@ $< |
| |
| $(WORKDIR) : |
| -@if not exist "$(WORKDIR)\$(NULL)" mkdir $(WORKDIR) |
| |
| $(HEADERS) : |
| -@if not exist $(HEADERS) copy $(HEADERS)w $(HEADERS) |
| |
| $(FFI_HEADERS) : |
| -@if not exist $(FFI_HEADERS) copy $(FFI_HEADERS).vc $(FFI_HEADERS) |
| |
| $(STATICLIB): $(WORKDIR) $(FFI_HEADERS) $(HEADERS) $(ASMSRCS) $(OBJECTS) |
| $(AR) $(ARFLAGS) $(LDFLAGS) /out:$(STATICLIB) @<< |
| $(OBJECTS) |
| << |
| |
| |
| !IF !DEFINED(PREFIX) || "$(PREFIX)" == "" |
| |
| install: |
| @echo ERROR: You must define installation PREFIX=destination |
| |
| !ELSE |
| |
| install: all |
| -@xcopy "$(TOPDIR)\include\*.h" "$(DESTINC)\" /Y /Q |
| -@xcopy "$(SRCDIR)\x86\ffitarget.h" "$(DESTINC)\" /Y /Q |
| -@xcopy "$(WORKDIR)\$(LALIBNAME)$(LA)" "$(DESTLIB)\" /Y /Q |
| -@xcopy "$(WORKDIR)\$(SOLIBNAME)$(LA)" "$(DESTLIB)\" /Y /Q |
| -@xcopy "$(WORKDIR)\$(SOLIBNAME)$(SO)" "$(DESTBIN)\" /Y /Q |
| -@xcopy "$(WORKDIR)\$(SOLIBNAME).pdb" "$(DESTLIB)\" /Y /Q |
| |
| !ENDIF |
| |
| clean: |
| -@del /Q $(OBJECTS) 2>NUL |
| -@del /Q $(RESOURCES) 2>NUL |
| -@del /Q $(ASMSRCS) 2>NUL |
| -@del /Q /S $(WORKDIR) 2>NUL |
| |
| distclean: clean |
| -@del /Q $(HEADERS) 2>NUL |
| -@del /Q $(TOPDIR)\include\ffi.h 2>NUL |
| -@del /Q $(TOPDIR)\fficonfig.h 2>NUL |
| -@del /Q $(TOPDIR)\Makefile.vc 2>NUL |
| |