Hi,

this is mainly for getting rid of overriding things via CONFIGURE_ENV
and CFLAGS in favor of patching aclocal.m4 and configure.ac (and
running autoconf), which may help getting this merged upstream.

It also kills some left-over -fno-pie which came from
patches/patch-configure.

I decided to drop the clang-specific
        
        -Wno-unused-command-line-argument -Wno-expansion-to-defined

for now, because the warnings, although a little bit annoying, are
harmless, and because this should be fixed elsewhere -- it's not
specific to OpenBSD.

Tested on amd64 *and* i386 this time, by building all the hs ports
and also by giving ghci a quick try.

Does this make sense?

Ciao,
        Kili

Index: Makefile
===================================================================
RCS file: /cvs/ports/lang/ghc/Makefile,v
retrieving revision 1.173
diff -u -p -r1.173 Makefile
--- Makefile    17 May 2020 18:06:07 -0000      1.173
+++ Makefile    29 May 2020 21:40:37 -0000
@@ -12,7 +12,7 @@ COMMENT =             compiler for the functional l
 NO_CCACHE =            Yes
 
 DISTNAME =             ghc-${MODGHC_VER}
-REVISION =             3
+REVISION =             4
 CATEGORIES =           lang devel
 HOMEPAGE =             https://www.haskell.org/ghc/
 
@@ -43,7 +43,7 @@ BUILD_DEPENDS =               archivers/bzip2 \
                        textproc/py-sphinx${MODPY_FLAVOR}
 RUN_DEPENDS =
 
-# GHC build uses -Wl,-z,wxneeded on OpenBSD for amd64.
+# GHC build uses -Wl,-z,wxneeded on OpenBSD.
 # XXX: wxneeded is a hack. Fix rts/Linker.c, mmapForLinker() and
 #      loadObj_() instead.
 USE_WXNEEDED =         special
@@ -106,14 +106,8 @@ SUBST_VARS +=      ${_i}_VER
 USE_GMAKE =            Yes
 USE_GROFF =            Yes
 
-.if ${MACHINE_ARCH} == "i386"
-CFLAGS +=              -Wl,-znotext
-# On i386, we still have to explicitely set -Wl,-z,wxneeded (in
-# addition to -Wl,-znotext).
-GHC_CC_OPTS =          -Wl,-znotext -Wl,-z,wxneeded
-.endif
-
-CONFIGURE_STYLE =      gnu
+AUTOCONF_VERSION =     2.69
+CONFIGURE_STYLE =      gnu autoconf no-autoheader
 CONFIGURE_ARGS +=      --with-ffi-includes=${LOCALBASE}/include \
                        --with-ffi-libraries=${LOCALBASE}/lib \
                        --with-gmp-includes=${LOCALBASE}/include \
@@ -127,13 +121,6 @@ CONFIGURE_ARGS +=  --with-ffi-includes=${
 # with /usr/bin/ld.lld: error: cannot preempt symbol: memcpy
 CONFIGURE_ARGS +=      --disable-ld-override
 
-CONFIGURE_ENV +=       CONF_CC_OPTS_STAGE0="${GHC_CC_OPTS}" \
-                       CONF_CC_OPTS_STAGE1="${GHC_CC_OPTS}" \
-                       CONF_CC_OPTS_STAGE2="${GHC_CC_OPTS}" \
-                       CONF_GCC_LINKER_OPTS_STAGE0="${GHC_CC_OPTS}" \
-                       CONF_GCC_LINKER_OPTS_STAGE1="${GHC_CC_OPTS}" \
-                       CONF_GCC_LINKER_OPTS_STAGE2="${GHC_CC_OPTS}"
-
 CONFIGURE_ENV +=       
SPHINXBUILD=${LOCALBASE}/bin/sphinx-build${MODPY_BIN_SUFFIX}
 
 # Do not pick up gpatch
@@ -170,6 +157,11 @@ post-patch:
        LD_LIBRARY_PATH=${BOOTSTRAP_SHLIBS} \
        ${MAKE_PROGRAM} install
        rm -rf ${WRKDIR}/ghc-${BIN_VER}
+       # HACK for i386 until we have new bootstrappers. This is needed
+       # to let the bootstrapper use -Wl,-znotext building things like
+       # utils/hsc2hs.
+       sed -ie '/"C compiler flags"/s/-U__i686/-Wl,-znotext &/' \
+           ${WRKDIR}/bootstrap/lib/ghc/settings
 # - Create some wrapper scripts setting LD_LIBRARY_PATH
        cd ${WRKDIR}/bin && \
        for f in $$(ls ../bootstrap/bin); do \
@@ -248,12 +240,3 @@ _bootstrap_finish:
        pax -wzf ghc-${MODGHC_VER}.${BOOTSTRAP_DATE}-shlibs-$$(arch 
-s){.tar.gz,}
 
 .include <bsd.port.mk>
-
-# Silence clang when used by ghc to process assembler files and gets
-# flags chat don't make sense for assembly mode. Also, silence warnings
-# about macro expansions producing 'defined' (occuring in
-# includes/rts/storage/ClosureMacros.h, which has already been fixed
-# upstream)
-.if ${PROPERTIES:Mclang}
-GHC_CC_OPTS += -Wno-unused-command-line-argument -Wno-expansion-to-defined
-.endif
Index: patches/patch-aclocal_m4
===================================================================
RCS file: patches/patch-aclocal_m4
diff -N patches/patch-aclocal_m4
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-aclocal_m4    29 May 2020 21:40:37 -0000
@@ -0,0 +1,19 @@
+$OpenBSD$
+
+Index: aclocal.m4
+--- aclocal.m4.orig
++++ aclocal.m4
+@@ -691,6 +691,13 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
+         $4="$$4 -z wxneeded"
+         ;;
+ 
++    i386-*-openbsd*)
++        # On i386, we also need -z notext in addition to -z wxneeded.
++        $2="$$2 -Wl,-z,notext"
++        $3="$$3 -Wl,-z,wxneeded -Wl,-z,notext"
++        $4="$$4 -z wxneeded -z notext"
++        ;;
++
+     esac
+ 
+     # If gcc knows about the stack protector, turn it off.
Index: patches/patch-configure
===================================================================
RCS file: patches/patch-configure
diff -N patches/patch-configure
--- patches/patch-configure     30 Sep 2019 11:44:18 -0000      1.19
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-$OpenBSD: patch-configure,v 1.19 2019/09/30 11:44:18 kili Exp $
-Index: configure
---- configure.orig
-+++ configure
-@@ -9048,11 +9048,11 @@ OptCmd="$OPT"
- 
- { $as_echo "$as_me:${as_lineno-$LINENO}: Creating links for in-tree file 
handling routines." >&5
- $as_echo "$as_me: Creating links for in-tree file handling routines." >&6;}
--ln -f -v utils/fs/fs.* utils/lndir/
--ln -f -v utils/fs/fs.* utils/unlit/
--ln -f -v utils/fs/fs.* rts/
--ln -f -v utils/fs/fs.h libraries/base/include/
--ln -f -v utils/fs/fs.c libraries/base/cbits/
-+ln -f utils/fs/fs.* utils/lndir/
-+ln -f utils/fs/fs.* utils/unlit/
-+ln -f utils/fs/fs.* rts/
-+ln -f utils/fs/fs.h libraries/base/include/
-+ln -f utils/fs/fs.c libraries/base/cbits/
- { $as_echo "$as_me:${as_lineno-$LINENO}: Routines in place. Packages can now 
be build normally." >&5
- $as_echo "$as_me: Routines in place. Packages can now be build normally." 
>&6;}
- 
-@@ -9296,7 +9296,7 @@ $as_echo_n "checking for extra options to pass gcc whe
- if ${fp_cv_gcc_extra_opts+:} false; then :
-   $as_echo_n "(cached) " >&6
- else
--  fp_cv_gcc_extra_opts=
-+  fp_cv_gcc_extra_opts=-fno-pie
-  fp_version1=$fp_cv_gcc_version; fp_version2=3.4
- fp_save_IFS=$IFS; IFS='.'
- while test x"$fp_version1" != x || test x"$fp_version2" != x
Index: patches/patch-configure_ac
===================================================================
RCS file: patches/patch-configure_ac
diff -N patches/patch-configure_ac
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-configure_ac  29 May 2020 21:40:37 -0000
@@ -0,0 +1,22 @@
+$OpenBSD$
+
+Index: configure.ac
+--- configure.ac.orig
++++ configure.ac
+@@ -678,11 +678,11 @@ dnl --------------------------------------------------
+ dnl ** Copy the files from the "fs" utility into the right folders.
+ dnl --------------------------------------------------------------
+ AC_MSG_NOTICE([Creating links for in-tree file handling routines.])
+-ln -f -v utils/fs/fs.* utils/lndir/
+-ln -f -v utils/fs/fs.* utils/unlit/
+-ln -f -v utils/fs/fs.* rts/
+-ln -f -v utils/fs/fs.h libraries/base/include/
+-ln -f -v utils/fs/fs.c libraries/base/cbits/
++ln -f utils/fs/fs.* utils/lndir/
++ln -f utils/fs/fs.* utils/unlit/
++ln -f utils/fs/fs.* rts/
++ln -f utils/fs/fs.h libraries/base/include/
++ln -f utils/fs/fs.c libraries/base/cbits/
+ AC_MSG_NOTICE([Routines in place. Packages can now be build normally.])
+ 
+ dnl --------------------------------------------------------------

Reply via email to