Build system: delete half-baked Cygwin support
authorThomas Miedema <thomasmiedema@gmail.com>
Sat, 15 Aug 2015 09:36:44 +0000 (11:36 +0200)
committerThomas Miedema <thomasmiedema@gmail.com>
Thu, 20 Aug 2015 10:35:52 +0000 (12:35 +0200)
We only support building GHC on mys2 nowadays, see
https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Windows.

This (partially) reverts various commits from a few years ago, among which:
  * 5775d5142da227d65fb86994d363eb16841ee642
    "Add OSTYPE build-system variable, and use it"
  * 3fb8c431824aa2f3bd979e35d1a283546fcfbe74
    "Fix building libgmp on cygwin"
  * cdbb4720c424500adb57cbbef69721d0b039fa46
    "Fix cmd invocation by libffi cuild system on Windows 7 cygwin"
  * e8121501ee3549a35e954726ccfd871ac9d51f83
    "Fix dblatex and xml* tool detection on Windows"

Reviewed by: austin, Phyx

Differential Revision: https://phabricator.haskell.org/D1155

aclocal.m4
libffi/ghc.mk
libraries/integer-gmp/gmp/ghc.mk
mk/config.mk.in
mk/install.mk.in
mk/project.mk.in
rules/distdir-opts.mk
validate

index 9773168..2f4d516 100644 (file)
@@ -274,7 +274,7 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS],
         nto-qnx)
             test -z "[$]2" || eval "[$]2=OSQNXNTO"
             ;;
-        dragonfly|osf1|hpux|linuxaout|freebsd2|cygwin32|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix)
+        dragonfly|osf1|hpux|linuxaout|freebsd2|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix)
             test -z "[$]2" || eval "[$]2=OSUnknown"
             ;;
         linux-android)
@@ -591,21 +591,6 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
 ])
 
 
-AC_DEFUN([FP_PATH_PROG],[
-    AC_PATH_PROG($1,$2,$3,$4,$5,$6)
-    # If we have a cygwin path for something, and we try to run it
-    # from cabal or python, then it'll fail. So we convert to a
-    # native path.
-    if test "$HostOS"     = "mingw32" && \
-       test "${OSTYPE}"  != "msys"    && \
-       test "${$1}" != ""
-    then
-        # Canonicalise to <drive>:/path/to/gcc
-        $1=`cygpath -m "${$1}"`
-    fi
-])
-
-
 # FP_VISIBILITY_HIDDEN
 # ----------------------------------
 # Is the visibility hidden attribute supported?
@@ -798,9 +783,6 @@ AC_DEFUN([FP_LEADING_UNDERSCORE],
 AC_CACHE_CHECK([leading underscore in symbol names], [fptools_cv_leading_underscore], [
 # Hack!: nlist() under Digital UNIX insist on there being an _,
 # but symbol table listings shows none. What is going on here?!?
-#
-# Another hack: cygwin doesn't come with nlist.h , so we hardwire
-# the underscoredness of that "platform"
 case $HostPlatform in
 *openbsd*) # x86 openbsd is ELF from 3.4 >, meaning no leading uscore
   case $build in
@@ -808,7 +790,6 @@ case $HostPlatform in
     *) fptools_cv_leading_underscore=no ;;
   esac ;;
 alpha-dec-osf*) fptools_cv_leading_underscore=no;;
-*cygwin32) fptools_cv_leading_underscore=yes;;
 i386-unknown-mingw32) fptools_cv_leading_underscore=yes;;
 x86_64-unknown-mingw32) fptools_cv_leading_underscore=no;;
 
@@ -879,7 +860,7 @@ dnl If you increase the minimum version requirement, please also update:
 dnl https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Tools
 dnl
 AC_DEFUN([FPTOOLS_HAPPY],
-[FP_PATH_PROG(HappyCmd,happy,)
+[AC_PATH_PROG(HappyCmd,happy,)
 
 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
 changequote(, )dnl
@@ -907,7 +888,7 @@ dnl https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Tools
 dnl
 AC_DEFUN([FPTOOLS_ALEX],
 [
-FP_PATH_PROG(AlexCmd,alex,)
+AC_PATH_PROG(AlexCmd,alex,)
 
 AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version,
 changequote(, )dnl
@@ -1051,9 +1032,9 @@ AC_SUBST([LdHasFilelist])
 
 # FP_PROG_AR
 # ----------
-# Sets fp_prog_ar to a (non-Cygwin) path to ar. Exits if no ar can be found
+# Sets fp_prog_ar to a path to ar. Exits if no ar can be found
 AC_DEFUN([FP_PROG_AR],
-[FP_PATH_PROG([fp_prog_ar], [ar])
+[AC_PATH_PROG([fp_prog_ar], [ar])
 if test -z "$fp_prog_ar"; then
   AC_MSG_ERROR([cannot find ar in your PATH, no idea how to make a library])
 fi
@@ -1105,7 +1086,7 @@ AC_SUBST([ArSupportsAtFile], [`echo $fp_prog_ar_supports_atfile | tr 'a-z' 'A-Z'
 # FP_PROG_AR_ARGS
 # ---------------
 # Sets fp_prog_ar_args to the arguments for ar and the output variable ArCmd
-# to a non-Cygwin invocation of ar including these arguments.
+# to an invocation of ar including these arguments.
 AC_DEFUN([FP_PROG_AR_ARGS],
 [AC_REQUIRE([FP_PROG_AR_IS_GNU])
 AC_CACHE_CHECK([for ar arguments], [fp_cv_prog_ar_args],
@@ -1281,15 +1262,6 @@ echo foo > conftest.txt
 $fp_prog_find conftest.txt -print > conftest.out 2>&1
 if grep '^conftest.txt$' conftest.out > /dev/null 2>&1 ; then
   # OK, looks like a real "find".
-  case $HostPlatform in
-    *mingw32)
-      if test x${OSTYPE} != xmsys
-      then
-        fp_prog_find="`cygpath --mixed ${fp_prog_find}`"
-        AC_MSG_NOTICE([normalized find command to $fp_prog_find])
-      fi ;;
-    *) ;;
-  esac
   FindCmd="$fp_prog_find"
 else
   # Found a poor WinDoze version of "find", ignore it.
@@ -1445,7 +1417,7 @@ EOF
 # which we use for building PDF and PS docs.
 # DblatexCmd is empty if dblatex could not be found.
 AC_DEFUN([FP_PROG_DBLATEX],
-[FP_PATH_PROG([DblatexCmd], [dblatex])
+[AC_PATH_PROG([DblatexCmd], [dblatex])
 if test -z "$DblatexCmd"; then
   AC_MSG_WARN([cannot find dblatex in your PATH, you will not be able to build the PDF and PS documentation])
 fi
@@ -1457,7 +1429,7 @@ fi
 # Sets the output variable XsltprocCmd to the full path of the XSLT processor
 # xsltproc. XsltprocCmd is empty if xsltproc could not be found.
 AC_DEFUN([FP_PROG_XSLTPROC],
-[FP_PATH_PROG([XsltprocCmd], [xsltproc])
+[AC_PATH_PROG([XsltprocCmd], [xsltproc])
 if test -z "$XsltprocCmd"; then
   AC_MSG_WARN([cannot find xsltproc in your PATH, you will not be able to build the HTML documentation])
 fi
@@ -1493,7 +1465,7 @@ AC_SUBST([HAVE_DOCBOOK_XSL])
 # Sets the output variable XmllintCmd to the full path of the XSLT processor
 # xmllint. XmllintCmd is empty if xmllint could not be found.
 AC_DEFUN([FP_PROG_XMLLINT],
-[FP_PATH_PROG([XmllintCmd], [xmllint])
+[AC_PATH_PROG([XmllintCmd], [xmllint])
 if test -z "$XmllintCmd"; then
   AC_MSG_WARN([cannot find xmllint in your PATH, you will not be able to validate your documentation])
 fi
@@ -1999,7 +1971,7 @@ case "$1-$2" in
         $3="linux"
         ;;
       # As far as I'm aware, none of these have relevant variants
-      freebsd|netbsd|openbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix|haiku)
+      freebsd|netbsd|openbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix|haiku)
         $3="$1"
         ;;
       freebsd*) # like i686-gentoo-freebsd7
index 59e089d..a37e3be 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))
@@ -83,18 +79,12 @@ $(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
-
 # * 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;
 #   hence the -w flags.
 # * 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) \
index 6a1ca21..33fab0b 100644 (file)
@@ -122,11 +122,6 @@ libraries/integer-gmp/gmp/libgmp.a libraries/integer-gmp/gmp/gmp.h:
        cat libraries/integer-gmp/gmp/tarball/gmp-5.0.4.patch | { cd libraries/integer-gmp/gmp/gmpbuild && $(PATCH_CMD) -p1 ; }
        chmod +x libraries/integer-gmp/gmp/ln
 
-       # Their cmd invocation only works on msys. On cygwin it starts
-       # a cmd interactive shell. The replacement works in both environments.
-       mv libraries/integer-gmp/gmp/gmpbuild/ltmain.sh libraries/integer-gmp/gmp/gmpbuild/ltmain.sh.orig
-       sed 's#cmd //c echo "\$$1"#cmd /c "echo $$1"#' < libraries/integer-gmp/gmp/gmpbuild/ltmain.sh.orig > libraries/integer-gmp/gmp/gmpbuild/ltmain.sh
-
        cd libraries/integer-gmp/gmp; (set -o igncr 2>/dev/null) && set -o igncr; export SHELLOPTS; \
            PATH=`pwd`:$$PATH; \
            export PATH; \
index 175aa06..66301c9 100644 (file)
@@ -165,7 +165,7 @@ GhcWithSMP := $(strip $(if $(filter YESNO, $(ArchSupportsSMP)$(GhcUnregisterised
 # Whether to include GHCi in the compiler.  Depends on whether the RTS linker
 # has support for this OS/ARCH combination.
 
-OsSupportsGHCi=$(strip $(patsubst $(TargetOS_CPP), YES, $(findstring $(TargetOS_CPP), mingw32 cygwin32 linux solaris2 freebsd dragonfly netbsd openbsd darwin kfreebsdgnu)))
+OsSupportsGHCi=$(strip $(patsubst $(TargetOS_CPP), YES, $(findstring $(TargetOS_CPP), mingw32 linux solaris2 freebsd dragonfly netbsd openbsd darwin kfreebsdgnu)))
 ArchSupportsGHCi=$(strip $(patsubst $(TargetArch_CPP), YES, $(findstring $(TargetArch_CPP), i386 x86_64 powerpc powerpc64 powerpc64le sparc sparc64 arm aarch64)))
 
 ifeq "$(OsSupportsGHCi)$(ArchSupportsGHCi)" "YESYES"
@@ -288,7 +288,7 @@ StripLibraries=NO
 #              doing object-file splitting
 
 ArchSupportsSplitObjs=$(strip $(if $(filter $(TargetArch_CPP),i386 x86_64 powerpc sparc),YES,NO))
-OsSupportsSplitObjs=$(strip $(if $(filter $(TargetOS_CPP),mingw32 cygwin32 linux darwin solaris2 freebsd dragonfly netbsd openbsd),YES,NO))
+OsSupportsSplitObjs=$(strip $(if $(filter $(TargetOS_CPP),mingw32 linux darwin solaris2 freebsd dragonfly netbsd openbsd),YES,NO))
 SplitObjsBroken = @SplitObjsBroken@
 
 SupportsSplitObjs := $(strip \
@@ -364,9 +364,6 @@ FFIIncludeDir=@FFIIncludeDir@
 # setting the TMPDIR env var would have no effect in the build tree.
 
 DEFAULT_TMPDIR         = /tmp
-ifeq "$(TARGETPLATFORM)" "i386-unknown-cygwin32"
-DEFAULT_TMPDIR         = /C/TEMP
-endif
 ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
 DEFAULT_TMPDIR         = /C/TEMP
 endif
index d6f68ab..da6680d 100644 (file)
@@ -146,29 +146,8 @@ INSTALL_DOC     = $(INSTALL) -m 644 $1 $2 $(call MK_INSTALL_DEST,$3)
 # Only 1 argument, the directory to create:
 INSTALL_DIR     = $(INSTALL) -m 755 -d $(call MK_INSTALL_DEST,$1)
 
-# cygwin's /bin/install doesn't set file modes correctly if the
-# destination path is a C: style path:
-#
-# $ /bin/install -c -m 644 foo /cygdrive/c/cygwin/home/ian/foo2
-# $ /bin/install -c -m 644 foo c:/cygwin/home/ian/foo3
-# $ ls -l foo*
-# -rw-r--r-- 1 ian None 0 2011-01-06 18:28 foo
-# -rw-r--r-- 1 ian None 0 2011-01-06 18:29 foo2
-# -rwxrwxrwx 1 ian None 0 2011-01-06 18:29 foo3
-#
-# This causes problems for bindisttest/checkBinaries.sh which then
-# thinks that e.g. the userguide HTML files are binaries.
-#
-# We therefore use a /cygdrive path if we are on cygwin (only)
-#   (This will make a Cygwin build run slowly 
-#    because of all those shell invocations.)
-ifeq "$(OSTYPE)" "cygwin"
-MK_INSTALL_DEST = $$(cygpath $1)
-else
 MK_INSTALL_DEST = $1
-endif
 
-#
 # runhaskell and hsc2hs are special, in that other compilers besides
 # GHC might provide them.  Systems with a package manager often come
 # with tools to manage this kind of clash, e.g. RPM's
index a5fe210..9e45ae9 100644 (file)
@@ -135,24 +135,19 @@ exeext3=@exeext_target@
 soext=@soext_target@
 
 # Windows_Host=YES if on a Windows platform
-ifneq "$(findstring $(HostOS_CPP), mingw32 cygwin32)" ""
+ifneq "$(findstring $(HostOS_CPP), mingw32)" ""
 Windows_Host=YES
 else
 Windows_Host=NO
 endif
 
 # Windows_Target=YES if we are targetting a Windows platform
-ifneq "$(findstring $(TargetOS_CPP), mingw32 cygwin32)" ""
+ifneq "$(findstring $(TargetOS_CPP), mingw32)" ""
 Windows_Target=YES
 else
 Windows_Target=NO
 endif
 
-# Tell the build system what the host operating system is
-# This distinguishes "msys" and "cygwin", which are not
-# not distinguished by HOST_OS_CPP
-OSTYPE=@OSTYPE@
-
 # In case of Solaris OS, does it provide broken shared libs
 # linker or not?
 SOLARIS_BROKEN_SHLD=@SOLARIS_BROKEN_SHLD@
index b2f0d1b..e411559 100644 (file)
@@ -19,24 +19,8 @@ ifeq "$3" ""
 $$(error Stage not given for distdir-opts $1 $2)
 endif
 
-ifeq "$3" "0"
-# This is a bit of a hack.
-# If we are compiling something with the bootstrapping compiler on
-# cygwin, and it uses an include file from the rts (say), then we
-# need to stop mkdependC from generating a dependincy on
-#     c:/ghc/rts/include/Rts.h
-# as that confuses make. So we use -isystem instead of -I, which stops
-# these dependencies from being generated. Technically this is wrong if
-# we depend on a library that is built inside the build tree, and we
-# use headers from that library, but currently I don't think that's the
-# case.
-$1_$2_DEP_INCLUDE_DIRS_FLAG = -isystem
-else
-$1_$2_DEP_INCLUDE_DIRS_FLAG = -I
-endif
-
 ifneq ($$(strip $$($1_$2_DEP_INCLUDE_DIRS_SINGLE_QUOTED)),)
-$1_$2_CC_INC_FLAGS := $$(subst $$(space)',$$(space)$$($1_$2_DEP_INCLUDE_DIRS_FLAG)',$$(space)$$($1_$2_DEP_INCLUDE_DIRS_SINGLE_QUOTED))
+$1_$2_CC_INC_FLAGS := $$(subst $$(space)',$$(space)-I',$$(space)$$($1_$2_DEP_INCLUDE_DIRS_SINGLE_QUOTED))
 endif
 
 # The CONF_CC_OPTS_STAGE$3 options are what we use to get gcc to
index 39e1f01..5f24e19 100755 (executable)
--- a/validate
+++ b/validate
@@ -163,10 +163,6 @@ if [ $no_clean -eq 0 ]; then
     $make maintainer-clean NO_CLEAN_GMP=YES
 
     INSTDIR=`pwd`/inst
-    if [ "$OSTYPE" = "cygwin" ]
-    then
-        INSTDIR=`cygpath -m "$INSTDIR"`
-    fi
 
     if [ $use_dph -eq 1 ]; then
         perl -w boot --validate --required-tag=dph