blob: c22c895b2119dcb8da1e3d86bb368a179e3ffa3a [file] [log] [blame]
#
# ====================================================================
#
# 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