Files
ports/math/gap/Makefile
2026-10-04 04:07:15 +00:00

167 lines
6.5 KiB
Makefile

PORTNAME= gap
DISTVERSION= 4.16.1
CATEGORIES= math
MASTER_SITES= https://github.com/gap-system/gap/releases/download/v${DISTVERSION}/
MAINTAINER= yuri@FreeBSD.org
COMMENT= System for computational discrete algebra
WWW= https://www.gap-system.org/ \
https://github.com/gap-system/gap
LICENSE= GPLv2+
BUILD_DEPENDS= autoconf:devel/autoconf \
automake:devel/automake \
bash:shells/bash \
libtool:devel/libtool
# attempt to fix the intermittent failure: WARNING: 'automake-1.16' is missing on your system.
LIB_DEPENDS= libgmp.so:math/gmp
USES= gmake libtool localbase perl5 readline shebangfix
USE_PERL5= run
USE_LDCONFIG= yes
BROKEN_powerpc64= compilation fails: error: static assertion failed due to requirement 'sizeof(struct GAPState) < 32768': GAPState is too big
BROKEN_powerpc64le= compilation fails: error: static assertion failed due to requirement 'sizeof(struct GAPState) < 32768': GAPState is too big
SHEBANG_FILES= . -not -name '*.ac' -not -name '*.am' -not -name '*.m4'
GNU_CONFIGURE= yes
PLIST_SUB+= CONFIGURE_TARGET=${CONFIGURE_TARGET}
MAKEFILE= GNUmakefile
ACLOCVER= 1.18 # Truncated version of aclocal / automake
COMPILED_PACKAGES= ace anupq browse caratinterface cddinterface cohomolo crypting curlinterface cvec datastructures \
deepthought digraphs edim example ferret float fplsa gauss grape guava \
io json kbmag normalizinterface nq orb profiling semigroups simpcomp xgap \
zeromqinterface
OPTIONS_GROUP= EXTRA_PACKAGES
OPTIONS_SUB= yes
EXTRA_PACKAGES_DESC= Extra packages (requiring compilation)
.for p in ${COMPILED_PACKAGES}
OPTIONS_GROUP_EXTRA_PACKAGES+= ${p:tu}
OPTIONS_DEFAULT+= ${p:tu}
${p:tu}_DESC= ${p} package
post-build-${p:tu}-on:
@${ECHO} "==> Build for package ${p}"
@cd ${WRKSRC}/pkg/${p} && \
${CHMOD} +x configure && \
./configure ${${p:tu}_CONFIGURE_ARGS} && \
${SETENV} ${MAKE_ENV} ${GMAKE}
.endfor
ANUPQ_CONFIGURE_ARGS= --with-gmp=${LOCALBASE}
NQ_CONFIGURE_ARGS= --with-gmp=${LOCALBASE}
CDDINTERFACE_LIB_DEPENDS= libcddgmp.so:math/cddlib
CDDINTERFACE_CONFIGURE_ARGS= --with-cddlib=${LOCALBASE}
CURLINTERFACE_LIB_DEPENDS= libcurl.so:ftp/curl
FLOAT_LIB_DEPENDS= libmpc.so:math/mpc \
libmpfi.so:math/mpfi \
libmpfr.so:math/mpfr
FLOAT_CONFIGURE_ARGS= --with-mpfr=${LOCALBASE}
NORMALIZINTERFACE_LIB_DEPENDS= libflint.so:math/flint2 \
libgmp.so:math/gmp \
libnauty.so:math/nauty \
libnormaliz.so:math/libnormaliz
NORMALIZINTERFACE_CONFIGURE_ARGS= --with-normaliz=${LOCALBASE}
SEMIGROUPS_LIB_DEPENDS= libfmt.so:devel/libfmt \
libsemigroups.so:math/libsemigroups
SEMIGROUPS_CONFIGURE_ARGS= --with-external-libsemigroups
ZEROMQINTERFACE_LIB_DEPENDS= libzmq.so:net/libzmq4
ZEROMQINTERFACE_CONFIGURE_ARGS= --with-zmq=${LOCALBASE}
XGAP_USES= xorg
XGAP_USE= XORG=x11,xaw,xt
XGAP_CONFIGURE_ARGS= --x-includes=${LOCALBASE}/include --x-libraries=${LOCALBASE}/lib
pre-configure:
# Avoid conflict with C++20 <version> by ignoring <...> under WRKSRC
${REINPLACE_CMD} -i .c++20 's/-I/-iquote/' \
${WRKSRC}/pkg/*/Makefile.in
# Fix autoconf 2.73 overquoted AC_SUBST in semigroups in case the patch is not applied
${REINPLACE_CMD} -i '' -e 's/AC_SUBST(SYS_IS_CYGWIN, yes)/AC_SUBST([SYS_IS_CYGWIN], [yes])/' \
${WRKSRC}/pkg/semigroups/configure.ac
.for f in aclocal.m4 configure
${FIND} ${WRKSRC} -name ${f} | ${XARGS} ${REINPLACE_CMD} -i '' \
-e "s|am__api_version='1.15'|am__api_version='${ACLOCVER}'|" \
-e "s|am__api_version='1.16'|am__api_version='${ACLOCVER}'|"
.endfor
# Regenerate autotools for packages that ship configure.ac so their macros match the installed automake/autoconf
.for p in ${COMPILED_PACKAGES}
@if test -f ${WRKSRC}/pkg/${p}/configure.ac && test "${p}" != "semigroups"; then \
${ECHO} "autoreconf: ${p}" ; \
cd ${WRKSRC}/pkg/${p} && ${LOCALBASE}/bin/autoreconf -fi || exit 1; \
fi
.endfor
post-build: # it is unclear why is this needed, see the question here: https://github.com/gap-system/gap/issues/5599
# there are intermittend failures in this build step: configure.ac:3: error: version mismatch. This is Automake 1.16.5,
@${ECHO} "Build in pkg/simpcomp"
@cd ${WRKSRC}/pkg/simpcomp && \
${SETENV} ${CONFIGURE_ENV} ${SH} configure \
${CONFIGURE_ARGS:N--with-*} && \
${MAKE} ${MAKEFLAGS} && \
${MAKE} ${MAKEFLAGS} install-strip && \
${MAKE} ${MAKEFLAGS} distclean
post-install:
# install packages
cd ${WRKSRC} && ${COPYTREE_SHARE} pkg ${STAGEDIR}${DATADIR}
# remove redundant files
@${RM} \
${STAGEDIR}${DATADIR}/pkg/agt/doc/mathjax \
${STAGEDIR}${DATADIR}/pkg/atlasrep/gap/utils.gi.new \
${STAGEDIR}${DATADIR}/pkg/*/examples/.gitkeep
# remove build artifacts and generated autotools files from compiled packages
.for p in ${COMPILED_PACKAGES}
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type d -name autom4te.cache -exec ${RM} -rf {} +
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type d -name .deps -exec ${RM} -rf {} +
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name .dirstamp -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name config.log -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name config.status -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name configure~ -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name config.h -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name stamp-h1 -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.hin~' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.in~' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.o' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.Po' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.Plo' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.lo' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.d' ! -path '*/FlameGraph/dev/*' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name '*.a' -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f \( -name '*.la' -o -name '*.lai' \) -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -type f -name Makefile -delete
@${FIND} ${STAGEDIR}${DATADIR}/pkg/${p} -path '*/lib/pkgconfig/*.pc' -delete
.endfor
# remove source-tree duplicates of compiled binaries
@${RM} -f \
${STAGEDIR}${DATADIR}/pkg/ace/src/ace \
${STAGEDIR}${DATADIR}/pkg/anupq/pq \
${STAGEDIR}${DATADIR}/pkg/nq/nq \
${STAGEDIR}${DATADIR}/pkg/xgap/xgap.sh
# remove empty directories
@${FIND} ${STAGEDIR}${PREFIX} -type d -empty -delete
# strip binaries
do-test:
@cd ${WRKSRC} && ./gap ${FILESDIR}/test.g
# tests as of 4.16.1: all tests pass
.include <bsd.port.mk>