1PORTNAME= gcc 2PORTVERSION= 14.2.0 3PORTREVISION= 1 4CATEGORIES= lang 5MASTER_SITES= GCC 6PKGNAMESUFFIX= ${SUFFIX} 7 8MAINTAINER= ports@MidnightBSD.org 9COMMENT= GNU Compiler Collection 14 10WWW= https://gcc.gnu.org 11 12LICENSE= gpl3 13 14ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc powerpc64 powerpc64le riscv64 15 16LIB_DEPENDS= libgmp.so:math/gmp \ 17 libmpfr.so:math/mpfr \ 18 libmpc.so:math/mpc 19BUILD_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils 20RUN_DEPENDS+= ${LOCALBASE}/bin/as:devel/binutils 21.if defined(MAINTAINER_MODE) 22BUILD_DEPENDS+= runtest:misc/dejagnu 23.endif 24 25USES= compiler:c++11-lang cpe gmake iconv libtool makeinfo perl5 tar:xz 26USE_BINUTILS= yes 27USE_PERL5= build 28 29CONFLICTS= gcc14-devel 30 31CPE_VENDOR= gnu 32CPE_VERSION= ${GCC_VERSION} 33 34GCC_VERSION= ${PORTVERSION} 35SUFFIX= ${PORTVERSION:C/([0-9]+).*/\1/} 36CFLAGS:= ${CFLAGS:N-mretpoline} -D__USE_ISOC11 37CXXFLAGS:= ${CXXFLAGS:N-mretpoline} 38 39OPTIONS_DEFINE= GRAPHITE 40OPTIONS_DEFAULT_aarch64=STANDARD_BOOTSTRAP 41OPTIONS_DEFAULT_amd64= STANDARD_BOOTSTRAP 42OPTIONS_DEFAULT_i386= STANDARD_BOOTSTRAP 43OPTIONS_DEFAULT_powerpc64=LTO_BOOTSTRAP 44OPTIONS_DEFAULT_powerpc64le=LTO_BOOTSTRAP 45OPTIONS_RADIO= BOOTSTRAP 46OPTIONS_RADIO_BOOTSTRAP= LTO_BOOTSTRAP STANDARD_BOOTSTRAP 47LTO_BOOTSTRAP_DESC= Build using a full LTO bootstrap 48STANDARD_BOOTSTRAP_DESC= Build using a full bootstrap without LTO 49GRAPHITE_DESC= Support for Graphite loop optimizations 50 51.if exists(/usr/lib32/libc.so) 52OPTIONS_DEFINE_amd64+= MULTILIB 53OPTIONS_DEFAULT_amd64+= MULTILIB 54OPTIONS_DEFINE_powerpc64+= MULTILIB 55#OPTIONS_DEFAULT_powerpc64+= MULTILIB # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105010 56MULTILIB_DESC= Build support for 32-bit and 64-bit targets 57MULTILIB_CONFIGURE_ENABLE= multilib 58.else 59CONFIGURE_ARGS+= --disable-multilib 60.endif 61 62.if defined(CPUTYPE) && ${CPUTYPE:Mg[3-5]} 63CFLAGS:= ${CFLAGS:S/mcpu=g/mcpu=G/} 64CXXFLAGS:= ${CFLAGS:S/mcpu=g/mcpu=G/} 65.endif 66 67.include <bsd.port.pre.mk> 68 69.if ${ARCH} == amd64 70ARCH_64= 71CONFIGURE_TARGET= x86_64-portbld-freebsd12.4 72.else 73ARCH_64=@comment 74CONFIGURE_TARGET= ${ARCH}-portbld-freebsd12.4 75.endif 76 77LANGUAGES:= c,c++,objc,fortran,jit 78TARGLIB= ${PREFIX}/lib/gcc${SUFFIX} 79TARGLIB32= ${PREFIX}/lib32 # The version information is added later 80LIBEXEC= ${PREFIX}/libexec/gcc${SUFFIX} 81GNU_CONFIGURE= yes 82GNU_CONFIGURE_MANPREFIX=${PREFIX}/share 83CONFIGURE_OUTSOURCE= yes 84.if empty(PORT_OPTIONS:M*BOOTSTRAP) 85CONFIGURE_ARGS+=--disable-bootstrap 86.elif ${PORT_OPTIONS:MLTO_BOOTSTRAP} 87CONFIGURE_ARGS+=--with-build-config=bootstrap-lto-noplugin 88ALL_TARGET= bootstrap-lean 89PIE_UNSAFE= yes 90.else 91CONFIGURE_ARGS+=--with-build-config=bootstrap-debug 92ALL_TARGET= bootstrap-lean 93PIE_UNSAFE= yes 94.endif 95INSTALL_TARGET= install-strip 96.if ${UID} != 0 97BINMODE= 755 98.endif 99CONFIGURE_ARGS+=--disable-nls \ 100 --disable-libssp \ 101 --enable-gnu-indirect-function \ 102 --enable-host-shared \ 103 --enable-plugin \ 104 --libdir=${TARGLIB} \ 105 --libexecdir=${LIBEXEC} \ 106 --program-suffix=${SUFFIX} \ 107 --with-as=${LOCALBASE}/bin/as \ 108 --with-gmp=${LOCALBASE} \ 109 --with-gxx-include-dir=${TARGLIB}/include/c++/ \ 110 --with-gxx-libcxx-include-dir=/usr/include/c++/v1 \ 111 --with-ld=${LOCALBASE}/bin/ld \ 112 ${ICONV_CONFIGURE_ARG} \ 113 --with-pkgversion="MidnightBSD Ports Collection" \ 114 --with-system-zlib \ 115 --without-zstd 116MAKE_ARGS+= MAKEINFOFLAGS="--no-split" 117USE_LDCONFIG= ${TARGLIB} 118PLIST_SUB+= GCC_VERSION=${GCC_VERSION} \ 119 GNU_HOST=${CONFIGURE_TARGET} \ 120 SUFFIX=${SUFFIX} \ 121 ARCH_64=${ARCH_64} 122INFO= gcc${SUFFIX}/cpp \ 123 gcc${SUFFIX}/cppinternals \ 124 gcc${SUFFIX}/gcc \ 125 gcc${SUFFIX}/gccinstall \ 126 gcc${SUFFIX}/gccint \ 127 gcc${SUFFIX}/gfortran \ 128 gcc${SUFFIX}/libgccjit \ 129 gcc${SUFFIX}/libgomp 130# Release tarballs (as opposed to snapshots) always carry this. 131INFO+= gcc${SUFFIX}/libquadmath \ 132 gcc${SUFFIX}/libitm 133SUB_FILES= pkg-message 134SUB_LIST+= TARGLIB=${TARGLIB} 135 136.if ${PORT_OPTIONS:MGRAPHITE} 137LIB_DEPENDS+= libisl.so:devel/isl 138CONFIGURE_ARGS+=--with-isl=${LOCALBASE} 139.endif 140 141CONFIGURE_ARGS+=--enable-languages=${LANGUAGES} 142 143pre-everything:: 144 @${ECHO_MSG} "Making GCC ${PORTVERSION} for ${CONFIGURE_TARGET} [${LANGUAGES}]" 145 146pre-configure: 147 cd ${WRKSRC} ; contrib/gcc_update --touch 148 @${RM} ${WRKSRC}/gcc/*/*.info* 149 150.if defined(MAINTAINER_MODE) 151full-regression-test: build 152 cd ${TEST_WRKSRC}; ${MAKE_CMD} -sk check \ 153 ; ${WRKSRC}/contrib/test_summary 154.endif 155 156post-fake: 157 ${RM} ${FAKE_DESTDIR}${PREFIX}/share/man/man7/* 158 ${RM} -r ${FAKE_DESTDIR}${TARGLIB}/gcc/*/${GCC_VERSION}/include-fixed/ 159 # Install ISO_Fortran_binding.h in an easily findable directory 160 ${MKDIR} ${FAKE_DESTDIR}${PREFIX}/include/gcc${SUFFIX} 161 ${INSTALL_DATA} ${FAKE_DESTDIR}${PREFIX}/lib/gcc${SUFFIX}/gcc/${CONFIGURE_TARGET}/${GCC_VERSION}/include/ISO_Fortran_binding.h \ 162 ${FAKE_DESTDIR}${PREFIX}/include/gcc${SUFFIX} 163 # Add target libraries and include files to packaging list. 164 -${RM} ${WRKDIR}/PLIST.lib 165 166.if (${ARCH} == amd64 || ${ARCH} == powerpc64) && ${PORT_OPTIONS:MMULTILIB} 167 ${MKDIR} ${FAKE_DESTDIR}${TARGLIB32} 168 ${MV} ${FAKE_DESTDIR}${PREFIX}/lib/lib32 ${FAKE_DESTDIR}${TARGLIB32}/gcc${SUFFIX} 169.endif 170 171.for d in ${TARGLIB:S/^${PREFIX}\///} ${TARGLIB32:S/^${PREFIX}\///} ${LIBEXEC:S/^${PREFIX}\///} 172 cd ${FAKE_DESTDIR}${TRUE_PREFIX} ; if [ -d $d ]; then \ 173 ${FIND} $d -type f -o -type l >>${WRKDIR}/PLIST.lib ;\ 174 fi 175.endfor 176 cd ${WRKDIR} ; ${SED} -i -e "/PLIST.lib/ r PLIST.lib" ${TMPPLIST} 177 178.include <bsd.port.post.mk> 179