summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorpho <pho@pkgsrc.org>2020-01-18 01:39:01 +0000
committerpho <pho@pkgsrc.org>2020-01-18 01:39:01 +0000
commiteb959ccfb6fc89d64e89d782843a370e50013e51 (patch)
tree410e30c4ec472c0c0ff3792d4391b1fe05347e1b /mk
parent77cfeb894a247fc706f53ca526f484a71f26128b (diff)
downloadpkgsrc-eb959ccfb6fc89d64e89d782843a370e50013e51.tar.gz
Configurable optimization level and compilation parallelism
Diffstat (limited to 'mk')
-rw-r--r--mk/haskell.mk32
1 files changed, 28 insertions, 4 deletions
diff --git a/mk/haskell.mk b/mk/haskell.mk
index 8c754bd736b..70abadab516 100644
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -1,4 +1,4 @@
-# $NetBSD: haskell.mk,v 1.12 2020/01/11 07:47:18 pho Exp $
+# $NetBSD: haskell.mk,v 1.13 2020/01/18 01:39:01 pho Exp $
#
# This Makefile fragment handles Haskell Cabal packages.
# See: http://www.haskell.org/cabal/
@@ -46,6 +46,16 @@
# package B was compiled. So the installed package B is
# completely broken at this time.
#
+# Package-settable variables:
+#
+# HASKELL_OPTIMIZATION_LEVEL
+# Description:
+# Optimization level for compilation.
+# Possible values:
+# 0 1 2
+# Default value:
+# 2
+#
# User-settable variables:
#
# HASKELL_COMPILER
@@ -97,6 +107,7 @@ BUILD_DEFS+= HASKELL_ENABLE_HADDOCK_DOCUMENTATION
# Declarations for ../../mk/misc/show.mk
_VARGROUPS+= haskell
_DEF_VARS.haskell= \
+ HASKELL_OPTIMIZATION_LEVEL \
_DISTBASE \
_DISTVERSION \
_GHC_BIN \
@@ -129,6 +140,9 @@ HOMEPAGE?= http://hackage.haskell.org/package/${_DISTBASE}
# that. (PHO: I think that should be handled by url2pkg (2009-05-20))
USE_TOOLS+= pkg-config
+# Default value of HASKELL_OPTIMIZATION_LEVEL
+HASKELL_OPTIMIZATION_LEVEL?= 2
+
# Default value of HASKELL_ENABLE_SHARED_LIBRARY
HASKELL_ENABLE_SHARED_LIBRARY?= yes
@@ -185,14 +199,24 @@ CONFIGURE_ARGS+= --enable-library-profiling
CONFIGURE_ARGS+= --disable-library-profiling
.endif
-
# Haddock documentations
.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes"
CONFIGURE_ARGS+= --with-haddock=${BUILDLINK_PREFIX.ghc:Q}/bin/haddock
.endif
# Optimization
-CONFIGURE_ARGS+= -O2
+CONFIGURE_ARGS+= -O${HASKELL_OPTIMIZATION_LEVEL}
+
+# Parallelization: the definition of this variable is exactly the same
+# as that of _MAKE_JOBS in mk/build/build.mk, but since it's an
+# internal variable we don't want to reuse it here.
+.if defined(MAKE_JOBS_SAFE) && !empty(MAKE_JOBS_SAFE:M[nN][oO])
+_HASKELL_BUILD_JOBS= # nothing
+.elif defined(MAKE_JOBS.${PKGPATH})
+_HASKELL_BUILD_JOBS= -j${MAKE_JOBS.${PKGPATH}}
+.elif defined(MAKE_JOBS)
+_HASKELL_BUILD_JOBS= -j${MAKE_JOBS}
+.endif
# Starting from GHC 7.10 (or 7.8?), packages are installed in
# directories with a hashed name so we can no longer predict the
@@ -232,7 +256,7 @@ do-configure:
# Define build target.
do-build:
${RUN}cd ${WRKSRC:Q} && \
- ./Setup build ${PKG_VERBOSE:D-v}
+ ./Setup build ${PKG_VERBOSE:D-v} ${_HASKELL_BUILD_JOBS}
.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes"
${RUN}cd ${WRKSRC:Q} && \
./Setup haddock ${PKG_VERBOSE:D-v}