Commit b6be81b8 authored by thomie's avatar thomie

Build system: delete half-baked Cygwin support

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:
  * 5775d514
    "Add OSTYPE build-system variable, and use it"
  * 3fb8c431
    "Fix building libgmp on cygwin"
  * cdbb4720
    "Fix cmd invocation by libffi cuild system on Windows 7 cygwin"
  * e8121501
    "Fix dblatex and xml* tool detection on Windows"

Reviewed by: austin, Phyx

Differential Revision: https://phabricator.haskell.org/D1155
parent d97e60f5
......@@ -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
......
......@@ -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) \
......
......@@ -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; \
......
......@@ -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
......
......@@ -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
......
......@@ -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@
......
......@@ -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
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment