+# -----------------------------------------------------------------------------
+#
+# (c) 2009 The University of Glasgow
+#
+# This file is part of the GHC build system.
+#
+# To understand how the build system works and how to modify it, see
+# http://hackage.haskell.org/trac/ghc/wiki/Building/Architecture
+# http://hackage.haskell.org/trac/ghc/wiki/Building/Modifying
+#
+# -----------------------------------------------------------------------------
+
# We package libffi as Haskell package for two reasons:
# path that always fails.
ifeq "$(BuildSharedLibs)" "YES"
-libffi_STAMP_BUILD = libffi/stamp.ffi.build-shared
libffi_STAMP_CONFIGURE = libffi/stamp.ffi.configure-shared
+libffi_STAMP_BUILD = libffi/stamp.ffi.build-shared
else
-libffi_STAMP_BUILD = libffi/stamp.ffi.build
libffi_STAMP_CONFIGURE = libffi/stamp.ffi.configure
+libffi_STAMP_BUILD = libffi/stamp.ffi.build
endif
BINDIST_STAMPS = libffi/stamp.ffi.build libfii/stamp.ffi.configure
# they will be residing in the system location along with dynamic libs from
# other GHC installations.
-libffi_HS_DYN_LIB_NAME=libHSffi-ghc$(ProjectVersion)$(soext)
-libffi_HS_DYN_LIB_PATH=libffi/$(libffi_HS_DYN_LIB_NAME)
+libffi_HS_DYN_LIB_NAME = libHSffi$(dyn_libsuf)
+libffi_HS_DYN_LIB = libffi/$(libffi_HS_DYN_LIB_NAME)
ifeq "$(Windows)" "YES"
-libffi_DYNAMIC_PROG = $(libffi_HS_DYN_LIB_PATH).a
-libffi_DYNAMIC_LIBS = $(libffi_HS_DYN_LIB_PATH)
+libffi_DYNAMIC_PROG = $(libffi_HS_DYN_LIB).a
+libffi_DYNAMIC_LIBS = $(libffi_HS_DYN_LIB)
else
libffi_DYNAMIC_PROG =
libffi_DYNAMIC_LIBS = libffi/libffi.so libffi/libffi.so.5 libffi/libffi.so.5.0.7
endif
ifeq "$(BuildSharedLibs)" "YES"
-INSTALL_LIBS += $(libffi_HS_DYN_LIB_PATH)
+INSTALL_LIBS += $(libffi_HS_DYN_LIB)
ifeq "$(Windows)" "YES"
-INSTALL_PROGS += $(libffi_HS_DYN_LIB_PATH).a
+INSTALL_PROGS += $(libffi_HS_DYN_LIB).a
endif
endif
cd libffi && \
$(MAKE) -C build MAKEFLAGS=; \
(cd build; ./libtool --mode=install cp libffi.la $(TOP)/libffi)
- $(CP) $(libffi_STATIC_LIB) libffi/libHSffi.a
- $(CP) $(libffi_STATIC_LIB) libffi/libHSffi_p.a
touch $@
-libffi/libHSffi.a libffi/libHSffi_p.a: $(libffi_STAMP_BUILD)
+$(libffi_STATIC_LIB): $(libffi_STAMP_BUILD)
+# Rename libffi.a to libHSffi.a
+libffi/libHSffi.a libffi/libHSffi_p.a: $(libffi_STATIC_LIB)
+ $(CP) $(libffi_STATIC_LIB) libffi/libHSffi.a
+ $(CP) $(libffi_STATIC_LIB) libffi/libHSffi_p.a
-all_libffi : libffi/libHSffi.a libffi/libHSffi_p.a
+$(eval $(call all-target,libffi,libffi/libHSffi.a libffi/libHSffi_p.a))
# The GHCi import lib isn't needed as compiler/ghci/Linker.lhs + rts/Linker.c
# link the interpreted references to FFI to the compiled FFI.
libffi/HSffi.o: libffi/libHSffi.a
cd libffi && \
touch empty.c; \
- $(CC) -c empty.c -o HSffi.o
+ $(CC) $(SRC_CC_OPTS) -c empty.c -o HSffi.o
-all_libffi : libffi/HSffi.o
+$(eval $(call all-target,libffi,libffi/HSffi.o))
ifeq "$(BuildSharedLibs)" "YES"
ifeq "$(Windows)" "YES"
+libffi/libffi.dll.a $(libffi_HS_DYN_LIB): $(libffi_STAMP_BUILD)
# Windows libtool creates <soname>.dll, and as we already patched that
# there is no need to copy from libffi.dll to libHSffi...dll.
# However, the renaming is still required for the import library
# libffi.dll.a.
-$(libffi_HS_DYN_LIB_PATH).a: $(libffi_STAMP_BUILD)
- $(CP) libffi/libffi.dll.a $(libffi_HS_DYN_LIB_PATH).a
-all_libffi : $(libffi_HS_DYN_LIB_PATH).a
+$(libffi_HS_DYN_LIB).a: libffi/libffi.dll.a
+ $(CP) libffi/libffi.dll.a $(libffi_HS_DYN_LIB).a
+
+$(eval $(call all-target,libffi,$(libffi_HS_DYN_LIB).a))
else
+$(libffi_DYNAMIC_LIBS): $(libffi_STAMP_BUILD)
# Rename libffi.so to libHSffi...so
-$(libffi_HS_DYN_LIB_PATH): $(libffi_DYNAMIC_LIBS)
- $(CP) $(word 1,$(libffi_DYNAMIC_LIBS)) $(libffi_HS_DYN_LIB_PATH)
+$(libffi_HS_DYN_LIB): $(libffi_DYNAMIC_LIBS)
+ $(CP) $(word 1,$(libffi_DYNAMIC_LIBS)) $(libffi_HS_DYN_LIB)
-all_libffi : $(libffi_HS_DYN_LIB_PATH)
+$(eval $(call all-target,libffi,$(libffi_HS_DYN_LIB)))
endif
endif
libffi/libffi.a libffi/libffi.la \
libffi/HSffi.o libffi/libHSffi.a libffi/libHSffi_p.a \
$(libffi_DYNAMIC_PROG) $(libffi_DYNAMIC_LIBS) \
- $(libffi_HS_DYN_LIB_NAME) $(libffi_HS_DYN_LIB_NAME).a))
+ $(libffi_HS_DYN_LIB) $(libffi_HS_DYN_LIB).a))
endif
#-----------------------------------------------------------------------------