Files
ports/lang/gnat13/Makefile
2026-10-04 04:07:15 +00:00

200 lines
6.3 KiB
Makefile

PORTNAME= gnat13
DISTVERSION= 13.3.0
PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_GCC:C|%SUBDIR%|${MASTER_SITE_SUBDIR}|}:gcc \
LOCAL/thierry:gnat
MASTER_SITE_SUBDIR= releases/gcc-${DISTVERSION}
DISTFILES= gcc-${DISTVERSION}.tar.xz:gcc
MAINTAINER= ada@FreeBSD.org
COMMENT= GNAT (GNU Ada) compiler
WWW= https://www.gnu.org/software/gnat/
LICENSE= GPLv2 GPLv3+ GPLv3RLE+ LGPL21 LGPL3
LICENSE_COMB= multi
LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING
LICENSE_FILE_GPLv3+ = ${WRKSRC}/COPYING3
LICENSE_FILE_GPLv3RLE+ = ${WRKSRC}/COPYING.RUNTIME
LICENSE_FILE_LGPL21= ${WRKSRC}/COPYING.LIB
LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING3.LIB
LIB_DEPENDS= libgmp.so:math/gmp \
libisl.so:devel/isl \
libmpc.so:math/mpc \
libmpfr.so:math/mpfr
RUN_DEPENDS= ${LOCALBASE}/bin/as:devel/binutils
USES= bison gettext-runtime gmake iconv libtool localbase tar:xz
USE_BINUTILS= yes
USE_LDCONFIG= ${_TARGLIB}
GNU_CONFIGURE= yes
GNU_CONFIGURE_MANPREFIX= ${_PKG_PREFIX}/share
GNU_CONFIGURE_PREFIX= ${_PKG_PREFIX}
CONFIGURE_ARGS= --disable-bootstrap \
--disable-libmudflap \
--disable-libquadmath \
--disable-libssp \
--enable-gnu-indirect-function \
--enable-host-shared \
--enable-languages="ada,c,c++" \
--enable-libada \
--enable-threads=posix \
--with-as=${LOCALBASE}/bin/as \
--with-ld=${LOCALBASE}/bin/ld \
--with-pkgversion="${OPSYS} Ports Collection" \
--with-system-zlib \
--without-zstd
CONFIGURE_ENV+= CC=${_GNAT_PATH}/gcc \
CXX=${_GNAT_PATH}/g++ \
PATH=${_TOOLCHAIN_PATHS}
CONFIGURE_OUTSOURCE= yes
CONFIGURE_TARGET= ${_GNAT_ARCH}-portbld-${_PLATFORM}
MAKE_ENV+= PATH=${_TOOLCHAIN_PATHS}
INSTALL_TARGET= install-strip
PIE_UNSAFE= yes
MANDIRS= ${_PKG_PREFIX}/share/man
BINARY_ALIAS= make=${GMAKE}
WRKSRC= ${WRKDIR}/gcc-${DISTVERSION}
PLIST_SUB= ASSET_FILE=${_ASSET_FILE} \
CONFTRGT=${CONFIGURE_TARGET} \
GNAT=${PORTNAME} \
GNAT_SO_VERSION=${_GCC_VER:R} \
VER=${DISTVERSION}
OPTIONS_DEFINE= ASSETS NLS
.if exists(/usr/lib32/libc.so)
OPTIONS_DEFINE_amd64+= MULTILIB
OPTIONS_DEFINE_powerpc64+= MULTILIB
.endif
OPTIONS_RADIO= BOOTSTRAP
OPTIONS_RADIO_BOOTSTRAP= GNAT12 PREVASSET
OPTIONS_DEFAULT= ${"${_OSVERARCH:M1600*aarch64}" != "":?GNAT12:PREVASSET}
.if defined(PACKAGE_BUILDING)
OPTIONS_DEFAULT+= ASSETS
.endif
.if exists(/usr/lib32/libc.so)
OPTIONS_DEFAULT_amd64+= MULTILIB
#OPTIONS_DEFAULT_powerpc64+= MULTILIB # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105010
.endif
OPTIONS_SUB= yes
ASSETS_DESC= Build an asset for future bootstrap on the target platform
GNAT12_DESC= Bootstrap from lang/gnat12
.if exists(/usr/lib32/libc.so)
MULTILIB_DESC= Build support for 32-bit and 64-bit targets
.endif
PREVASSET_DESC= Bootstrap from the previous asset (if available)
ASSETS_VARS= PKGMESSAGE=${WRKDIR}/pkg-message
GNAT12_BUILD_DEPENDS= gnat12>0:lang/gnat12
GNAT12_VARS= _GNAT_PATH=${LOCALBASE}/gnat12/bin
.if exists(/usr/lib32/libc.so)
MULTILIB_CONFIGURE_ENABLE= multilib
.else
CONFIGURE_ARGS+= --disable-multilib
.endif
NLS_CONFIGURE_ON= --enable-nls
NLS_CONFIGURE_OFF= --disable-nls
PREVASSET_DISTFILES+= ${_PREV_ASSET_FILE}.tar.xz:gnat
PREVASSET_VARS= _GNAT_PATH=${WRKDIR}/${_PREV_ASSET_FILE}/bin
_ASSET_FILE= gnat-${_GNAT_ARCH}-${OPSYS:tl}.${OSREL:R}-${PKGVERSION}
_GCC_VER= ${DISTVERSION:R:R}
_GNATBIND= ${_GNAT_PATH}/gnatbind
_GNATMAKE= ${_GNAT_PATH}/gnatmake
_GNAT_ARCH= ${ARCH:S/amd64/x86_64/}
_OSVERARCH= ${OSVERSION}${ARCH}
_OS_LABEL4VERS= [${OPSYS}${_GNAT_ARCH:S/amd//:S/x86_//:S/aarch/\/ARM/:S/i386/32/}]
_PHASE_FILE= ${WRKSRC}/gcc/DEV-PHASE
_PKG_PREFIX= ${PREFIX}/${PORTNAME}
_PLATFORM= ${OPSYS:tl}${OSREL}
_PREV_ASSET_FILE= gnat-${_GNAT_ARCH}-${OPSYS:tl}.${_PREV_ASSET_OSREL}-${_PREV_ASSET_VER}${_PREV_ASSET_REV}
_PREV_ASSET_GCC= ${PREV_ASSET_VER:R:R}
_PREV_ASSET_OSREL?= ${OSREL:R}
_PREV_ASSET_REV?=
_PREV_ASSET_VER?= 13.2.0
_REV_FILE= ${WRKSRC}/gcc/REVISION
_TARGLIB= ${_PKG_PREFIX}/lib ${_PKG_PREFIX}/lib/gcc${_GCC_VER}
_TOOLCHAIN_PATHS= /sbin:/bin:/usr/sbin:/usr/bin:${_GNAT_PATH}:${PREFIX}/bin:${LOCALBASE}/bin
.include <bsd.port.pre.mk>
.if ${UID} != 0
BINMODE= 755
.endif
.if ${ARCH} == i386 || ${ARCH} == aarch64
LIB_DIR_32= ""
PLIST_SUB+= 64BITS="@comment "
.else
PLIST_SUB+= 64BITS=""
. if empty(PORT_OPTIONS:MMULTILIB)
LIB_DIR_32= ""
PLIST_SUB+= 32BITS="@comment "
. else
LIB_DIR_32= "" 32
PLIST_SUB+= 32BITS=""
. endif
.endif
.if ${ARCH} == aarch64
PLIST_SUB+= ARM="" \
NOARM="@comment "
.else
PLIST_SUB+= ARM="@comment " \
NOARM=""
.endif
pre-configure:
${FIND} ${WRKSRC}/gcc/config -name "*freebsd.h" -o -name "*freebsd64.h" | \
${XARGS} ${REINPLACE_CMD} -e 's|!static:[[:blank:]]|!static: --hash-style=gnu -rpath ${PREFIX}/gnat${_GCC_VER}/lib |'
${ECHO} "-=> GNAT ${_OS_LABEL4VERS}" > ${_REV_FILE}
${ECHO} "release" > ${_PHASE_FILE}
post-install-ASSETS-on:
${MKDIR} ${WRKDIR}/${_ASSET_FILE} \
${STAGEDIR}${DATADIR}/assets
${CP} -Rp ${STAGEDIR}${_PKG_PREFIX}/* ${WRKDIR}/${_ASSET_FILE}
(cd ${WRKDIR} && \
${TAR} cfJ ${STAGEDIR}${DATADIR}/assets/${_ASSET_FILE}.tar.xz \
--options='xz:threads=${MAKE_JOBS_NUMBER}' ${_ASSET_FILE})
post-stage:
# add-plist-info does not honor GNU_CONFIGURE_PREFIX so remove INFO files
${RM} -rf ${STAGEDIR}${_PKG_PREFIX}/share/info
.for d in ${LIB_DIR_32}
. for l in libgnarl-${_GCC_VER} libgnat-${_GCC_VER}
${STRIP_CMD} ${STAGEDIR}${_PKG_PREFIX}/lib/gcc/${CONFIGURE_TARGET}/${DISTVERSION}/${d}/adalib/${l}.so
. endfor
${STRIP_CMD} ${STAGEDIR}${_PKG_PREFIX}/lib${d}/libgcc_s.so.1
.endfor
post-stage-ASSETS-on:
${ECHO_CMD} "[" > ${PKGMESSAGE}
${ECHO_CMD} "{" >> ${PKGMESSAGE}
${ECHO_CMD} " type: install" >> ${PKGMESSAGE}
${ECHO_CMD} " message: <<EOM" >> ${PKGMESSAGE}
${ECHO_CMD} "The option ASSETS was enabled for the build and the following asset," \
>> ${PKGMESSAGE}
${ECHO_CMD} "${DATADIR}/assets/${_ASSET_FILE}.tar.xz was installed." \
>> ${PKGMESSAGE}
${ECHO_CMD} "If you would like to use this asset in future you will need to copy" \
>> ${PKGMESSAGE}
${ECHO_CMD} "it under ${DISTDIR}, update the Port's distinfo, and make sure the " \
>> ${PKGMESSAGE}
${ECHO_CMD} "option PREVASSET is enabled." >> ${PKGMESSAGE}
${ECHO_CMD} "See ports(7) and make.conf(5) for details on ${DISTDIR} and using" \
>> ${PKGMESSAGE}
${ECHO_CMD} "makesum to update distinfo." >> ${PKGMESSAGE}
${ECHO_CMD} "EOM" >> ${PKGMESSAGE}
${ECHO_CMD} "}" >> ${PKGMESSAGE}
${ECHO_CMD} "]" >> ${PKGMESSAGE}
.include <bsd.port.post.mk>