These flags are only used for creating static GHCi libraries
(HS*.o). Setting them to ${LDFLAGS} does more harm than good because
our ${LDFLAGS} contains -Wl,* flags. It's true that
../../mk/wrapper/cmd-sink-ld transforms them but those flags will also
be baked into the compiler (see ${WRKSRC}/compiler/ghc.mk) so they
cause problems when used outside the buildlink.
In Haskell FFI, "ccall" is actually an interface to C ABI rather than
C API. That is, GHC generates direct references to the symbol even if
it's actually defined as a cpp macro or something like that, because
GHC knows nothing about those macros in foreign headers.
I will later send these patches to the upstream.
Refactored bootstrap.mk with no semantic changes in this commit. I
will soon upload some of bootkits derived from wip/ghc to LOCAL_PORTS
but only for safe ones. Here's a note about safety:
* NetBSD/amd64, FreeBSD/i386, Darwin/ppc [SAFE]: These kits were built
on my secured private machines under my exclusive control. I'm
planning to upload them.
* Linux/amd64 [UNSAFE]: I built my kit for this one on a machine
shared with my co-workers with root access. I won't upload it.
* NetBSD/i386 [UNSAFE]: I built my kit for this one on an Amazon EC2
instance (although it's private). I won't upload it either.
For other developers, please do not upload any bootkits derived from
unsafe ones mentioned above, because they have some degree of
possibility of being compromised. And please keep in mind that
machines shared with someone or on a cloud hosting service should be
avoided for building bootkits.
The installed GHC has already been working without the ld hack. These
changes should only affect the package build so revbump isn't needed.
Makefile (CONFIGURE_ENV):
Refactored with no semantic changes.
Makefile (post-patch):
${WRKSRC}/libraries/base/configure.ac is patched too.
Makefile (CHECK_SHLIBS_SUPPORTED):
Removed the variable as the package now supports it.
Makefile (CHECK_SHLIBS_SKIP):
Added to skip checks for dynamic Haskell libraries. See the comment
for details.
bootstrap.mk (pre-configure):
Use ${CONFIGURE_ENV} when configuring the stage-0 compiler. See the
comment for details.
patches/patch-libraries_base_configure.ac:
Added to prevent {CPP,LD}FLAGS from being clobbered. See the comment
for details. I will send the patch to the upstream in a few days or
weeks (or even months, depending on my busyness).
* Formerly we were passing
"--with-curses-includes=${BUILDLINK_PREFIX.curses}/include" to
"${WRKSRC}/libraries/terminfo/configure". This is problematic
because pkgsrc devel/ncurses installs headers into
${PREFIX}/include/ncurses, not ${PREFIX}/include, while ghc-cabal
expects "ncurses.h" and "term.h" in ${PREFIX}/include (because we
said so) and then it emits an error. The fix is to use
${BUILDLINK_INCDIRS.curses} instead of "include". Note that this
requires my recent changes to ../../mk/curses.buildlink3.mk (r1.21)
* The "bootstrap" target now uses buildlink wrapper not to pick up
random libraries which happened to be in "${PREFIX}/lib". Bootstrap
binary kits should be linked with a predictable set of libraries.
* The "bootstrap" target now automatically runs through the wrapper
phase. You no longer have to run "${MAKE} patch" manually.
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
* Install the libffi libtool archive. Whilst it is unused, it allows
us to automatically determine the shared library suffix.
* Switch the i386 SunOS bootstrap to .xz.
* Use PKG_CC to build lndir to help environments where the compiler is
not in $PATH.
* Apply patch from Alain O'Dea to fix issues with files residing on
read-only file systems.
* Support shared libraries on 64-bit SunOS.
* Fix typo in patches/patch-rts_Linker.c.
Fixes build on SunOS. Bump PKGREVISION.
Based on wip/ghc, mostly worked by phonohawk, with patches from jperkin@.
And some modifications and buit of Bootstrap binaries for 7.6.3 by me.
GHC: The Glasgow Haskell Compiler.
The Glasgow Haskell Compiler is a robust, fully-featured, optimising
compiler for the functional programming language Haskell 98
(http://www.haskell.org). GHC compiles Haskell to either native code
or C. It implements numerous experimental language extensions to
Haskell, including concurrency, a foreign language interface, several
type-system extensions, exceptions, and so on. GHC comes with a
generational garbage collector, a space and time profiler, and a
comprehensive set of libraries.