Normalise EmptyCase types using the constraint solver
[ghc.git] / libffi / ghc.mk
index 59e089d..6bc8897 100644 (file)
@@ -42,10 +42,6 @@ LIBFFI_NAME = ffi
 endif
 LIBFFI_DLL = lib$(LIBFFI_NAME).dll
 
-ifeq "$(OSTYPE)" "cygwin"
-LIBFFI_PATH_MANGLE = PATH=$$(cygpath "$(TOP)")/libffi:$$PATH; export PATH;
-endif
-
 ifneq "$(BINDIST)" "YES"
 $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
        $(call removeFiles,$(libffi_STAMP_STATIC_CONFIGURE))
@@ -67,9 +63,6 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
 # will use cygwin symbolic links which cannot be read by mingw gcc.
        chmod +x libffi/ln
 
-       # don't report nonselinux systems as selinux
-       ( cd libffi/build && "$(PATCH_CMD)" -p0 < ../libffi.x86-execstack.patch; )
-
        # We need to use -MMD rather than -MD, as otherwise we get paths
        # like c:/... in the dependency files on Windows, and the extra
        # colons break make
@@ -83,10 +76,10 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
        mv libffi/build/Makefile.in libffi/build/Makefile.in.orig
        sed 's:@toolexeclibdir@:$$(libdir):g' < libffi/build/Makefile.in.orig > libffi/build/Makefile.in
 
-       # Their cmd invocation only works on msys. On cygwin it starts
-       # a cmd interactive shell. The replacement works in both environments.
-       mv libffi/build/ltmain.sh libffi/build/ltmain.sh.orig
-       sed 's#cmd //c echo "\$$1"#cmd /c "echo $$1"#' < libffi/build/ltmain.sh.orig > libffi/build/ltmain.sh
+       # install-sh is used when /usr/bin/install is missing; ensure its
+       # path in libffi's Makefile is correct. See GHC #11109.
+       mv libffi/build/Makefile.in libffi/build/Makefile.in.orig
+       sed 's|@INSTALL@|$$(subst ../install-sh,$(TOP)/install-sh,@INSTALL@)|g' < libffi/build/Makefile.in.orig > libffi/build/Makefile.in
 
 # * Because -Werror may be in SRC_CC_OPTS/SRC_LD_OPTS, we need to turn
 #   warnings off or the compilation of libffi might fail due to warnings;
@@ -94,7 +87,6 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
 # * We specify --libdir, as we need to know the path to libffi.a, but on
 #   some platforms it defaults to .../lib64/ rather than .../lib/.
        cd libffi && \
-           $(LIBFFI_PATH_MANGLE) \
            cd build && \
            CC=$(CC_STAGE1) \
            CXX=$(CC_STAGE1) \
@@ -107,6 +99,7 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
         "$(SHELL)" ./configure \
                  --prefix=$(TOP)/libffi/build/inst \
                  --libdir=$(TOP)/libffi/build/inst/lib \
+                 --disable-docs \
                  --enable-static=yes \
                  --enable-shared=$(libffi_EnableShared) \
                  --host=$(TargetPlatformFull)
@@ -119,7 +112,8 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
        "$(TOUCH_CMD)" $@
 
 $(libffi_STAMP_BUILD): $(libffi_STAMP_CONFIGURE) $(TOUCH_DEP)
-       $(MAKE) -C libffi/build MAKEFLAGS=
+       # Use 'sync' as a temporary solution for #11960 (parallelisation bug).
+       sync; $(MAKE) -C libffi/build MAKEFLAGS=
        "$(TOUCH_CMD)" $@
 
 $(libffi_STAMP_INSTALL): $(libffi_STAMP_BUILD) $(TOUCH_DEP)
@@ -130,7 +124,7 @@ $(libffi_STATIC_LIB): $(libffi_STAMP_INSTALL)
        @test -f $@ || { echo "$< exists, but $@ does not."; echo "Suggest removing $<."; exit 1; }
 
 $(libffi_HEADERS): $(libffi_STAMP_INSTALL) | $$(dir $$@)/.
-       cp -f libffi/build/inst/lib/libffi-*/include/$(notdir $@) $@
+       cp -f libffi/build/inst/include/$(notdir $@) $@
 
 $(eval $(call clean-target,libffi,, \
     libffi/build $(wildcard libffi/stamp.ffi.*) libffi/dist-install))