mirror of
https://git.freebsd.org/ports.git
synced 2025-05-22 03:45:17 -04:00
(2) Add option PURE (default OFF) to build with all provided libraries and skip any external dependencies, to make complete repeatable build.
565 lines
25 KiB
Makefile
565 lines
25 KiB
Makefile
# $FreeBSD$
|
|
|
|
.include "Makefile.inc"
|
|
|
|
MULTILIB_LIST= armv6-m,armv7-m,armv7e-m,armv7-r
|
|
PKGVERSION= GNU Tools for ARM Embedded Processors
|
|
|
|
BUILD_PREFIX= ${WRKDIR}/build
|
|
DOC_PREFIX= ${INTERIM_PREFIX}/${DOCS_SUFFIX}
|
|
|
|
.if ${PORT_OPTIONS:MPURE}
|
|
WORLD_LIB=${INTERIM_WORLD}
|
|
.else
|
|
WORLD_LIB=${LOCALBASE}
|
|
.endif
|
|
|
|
LDFLAGS+= -L${WORLD_LIB}/lib
|
|
|
|
.if ${CHOSEN_COMPILER_TYPE} == clang
|
|
CFLAGS+= -Wno-error
|
|
CXXFLAGS+= -Wno-error
|
|
.endif
|
|
|
|
MISC_DOCS= license.txt readme.txt release.txt
|
|
|
|
.if ${PORT_OPTIONS:MPURE}
|
|
PREREQUISITES= expat \
|
|
zlib \
|
|
libelf \
|
|
gmp \
|
|
mpfr \
|
|
mpc \
|
|
isl \
|
|
cloog
|
|
ISL_CHECK_VERSION=
|
|
.else
|
|
PREREQUISITES=
|
|
ISL_CHECK_VERSION= --disable-isl-version-check
|
|
.endif
|
|
|
|
ALL_BUILD= build-binutils \
|
|
build-gcc-first \
|
|
build-newlib \
|
|
build-newlib-nano \
|
|
build-gcc-final \
|
|
build-gcc-plugins \
|
|
build-libstdcxx \
|
|
build-gdb \
|
|
install-samples \
|
|
install-misc \
|
|
strip-binaries \
|
|
strip-target-libraries
|
|
|
|
.PHONY: ${PREREQUISITES} ${ALL_BUILD}
|
|
|
|
all: ${PREREQUISITES} ${ALL_BUILD}
|
|
|
|
expat:
|
|
@${ECHO_MSG} "====> Build expat (log file: ${WRKDIR}/expat.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/expat > ${WRKDIR}/expat.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/expat >> ${WRKDIR}/expat.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/expat && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/expat-${BUNDLED_VERSION_EXPAT}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/expat.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/expat all >> ${WRKDIR}/expat.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/expat install >> ${WRKDIR}/expat.log 2>&1
|
|
|
|
zlib:
|
|
@${ECHO_MSG} "====> Build zlib (log file: ${WRKDIR}/zlib.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/zlib > ${WRKDIR}/zlib.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/zlib >> ${WRKDIR}/zlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Copy to build dir"
|
|
@${TAR} -cf - -C ${SRC_DIR}/zlib-${BUNDLED_VERSION_ZLIB} . | ${TAR} -xf - -C ${BUILD_PREFIX}/zlib >> ${WRKDIR}/zlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Patch"
|
|
@cd ${BUILD_PREFIX}/zlib && \
|
|
${PATCH} -p1 < ${SRC_DIR}/zlib-${BUNDLED_VERSION_ZLIB}.patch >> ${WRKDIR}/zlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/zlib && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ./configure \
|
|
--static \
|
|
--prefix=${INTERIM_WORLD} >> ${WRKDIR}/zlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/zlib >> ${WRKDIR}/zlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/zlib install >> ${WRKDIR}/zlib.log 2>&1
|
|
|
|
libelf:
|
|
@${ECHO_MSG} "====> Build libelf (log file: ${WRKDIR}/libelf.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/libelf > ${WRKDIR}/libelf.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/libelf >> ${WRKDIR}/libelf.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/libelf && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/libelf-${BUNDLED_VERSION_LIBELF}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/libelf.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/libelf all >> ${WRKDIR}/libelf.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/libelf install >> ${WRKDIR}/libelf.log 2>&1
|
|
|
|
gmp:
|
|
@${ECHO_MSG} "====> Build gmp (log file: ${WRKDIR}/gmp.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/gmp > ${WRKDIR}/gmp.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/gmp >> ${WRKDIR}/gmp.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/gmp && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gmp-${BUNDLED_VERSION_GMP}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--enable-cxx \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/gmp.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gmp all >> ${WRKDIR}/gmp.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gmp install >> ${WRKDIR}/gmp.log 2>&1
|
|
|
|
mpfr:
|
|
@${ECHO_MSG} "====> Build mpfr (log file: ${WRKDIR}/mpfr.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/mpfr > ${WRKDIR}/mpfr.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/mpfr >> ${WRKDIR}/mpfr.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/mpfr && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/mpfr-${BUNDLED_VERSION_MPFR}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--with-gmp=${INTERIM_WORLD} \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/mpfr.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/mpfr all >> ${WRKDIR}/mpfr.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/mpfr install >> ${WRKDIR}/mpfr.log 2>&1
|
|
|
|
mpc:
|
|
@${ECHO_MSG} "====> Build mpc (log file: ${WRKDIR}/mpc.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/mpc > ${WRKDIR}/mpc.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/mpc >> ${WRKDIR}/mpc.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/mpc && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/mpc-${BUNDLED_VERSION_MPC}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--with-gmp=${INTERIM_WORLD} \
|
|
--with-mpfr=${INTERIM_WORLD} \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/mpc.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/mpc all >> ${WRKDIR}/mpc.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/mpc install >> ${WRKDIR}/mpc.log 2>&1
|
|
|
|
isl:
|
|
@${ECHO_MSG} "====> Build isl (log file: ${WRKDIR}/isl.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/isl > ${WRKDIR}/isl.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/isl >> ${WRKDIR}/isl.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/isl && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/isl-${BUNDLED_VERSION_ISL}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--with-gmp-prefix=${INTERIM_WORLD} \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/isl.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/isl all >> ${WRKDIR}/isl.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/isl install >> ${WRKDIR}/isl.log 2>&1
|
|
|
|
cloog:
|
|
@${ECHO_MSG} "====> Build cloog (log file: ${WRKDIR}/cloog.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/cloog > ${WRKDIR}/cloog.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/cloog >> ${WRKDIR}/cloog.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/cloog && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/cloog-${BUNDLED_VERSION_CLOOG}/configure \
|
|
--prefix=${INTERIM_WORLD} \
|
|
--with-bits=gmp \
|
|
--with-gmp-prefix=${INTERIM_WORLD} \
|
|
--with-isl-prefix=${INTERIM_WORLD} \
|
|
--disable-shared \
|
|
--disable-nls >> ${WRKDIR}/cloog.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/cloog all >> ${WRKDIR}/cloog.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/cloog install >> ${WRKDIR}/cloog.log 2>&1
|
|
|
|
build-binutils:
|
|
@${ECHO_MSG} "====> Build binutils (log file: ${WRKDIR}/binutils.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/binutils > ${WRKDIR}/binutils.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/binutils >> ${WRKDIR}/binutils.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/binutils && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/binutils/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${INTERIM_PREFIX} \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--disable-nls \
|
|
--enable-plugins \
|
|
--with-sysroot=${INTERIM_PREFIX}/${TARGET} \
|
|
--with-pkgversion="${PKGVERSION}" >> ${WRKDIR}/binutils.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/binutils all >> ${WRKDIR}/binutils.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils install >> ${WRKDIR}/binutils.log 2>&1
|
|
@${ECHO_MSG} "=====> Prepare working area for library builds"
|
|
@${MKDIR} ${BUILD_PREFIX}/target-libs >> ${WRKDIR}/binutils.log 2>&1
|
|
@${TAR} -cf - -C ${INTERIM_PREFIX} . | ${TAR} -xf - -C ${BUILD_PREFIX}/target-libs >> ${WRKDIR}/binutils.log 2>&1
|
|
.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build HTML documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils html >> ${WRKDIR}/binutils.log 2>&1
|
|
@${ECHO_MSG} "=====> Install HTML documentation into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils install-html >> ${WRKDIR}/binutils.log 2>&1
|
|
.endif
|
|
.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build PDF documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils pdf >> ${WRKDIR}/binutils.log 2>&1
|
|
@${ECHO_MSG} "=====> Install PDF documentation into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/binutils install-pdf >> ${WRKDIR}/binutils.log 2>&1
|
|
.endif
|
|
@${ECHO_MSG} "=====> Cleanup installation"
|
|
@${RM} -rf ${INTERIM_PREFIX}/lib >> ${WRKDIR}/binutils.log 2>&1
|
|
|
|
build-gcc-first:
|
|
@${ECHO_MSG} "====> Build preliminary gcc (log file: ${WRKDIR}/gcc-first.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/gcc-first > ${WRKDIR}/gcc-first.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/gcc-first >> ${WRKDIR}/gcc-first.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/gcc-first && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gcc/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${INTERIM_PREFIX} \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--libexecdir=${INTERIM_PREFIX}/lib \
|
|
--with-gmp=${WORLD_LIB} \
|
|
--with-mpfr=${WORLD_LIB} \
|
|
--with-mpc=${WORLD_LIB} \
|
|
--with-isl=${WORLD_LIB} \
|
|
${ISL_CHECK_VERSION} \
|
|
--with-cloog=${WORLD_LIB} \
|
|
--with-libelf=${WORLD_LIB} \
|
|
--enable-languages=c \
|
|
--disable-decimal-float \
|
|
--disable-libffi \
|
|
--disable-libgomp \
|
|
--disable-libmudflap \
|
|
--disable-libquadmath \
|
|
--disable-libssp \
|
|
--disable-libstdcxx-pch \
|
|
--disable-nls \
|
|
--disable-shared \
|
|
--disable-threads \
|
|
--disable-tls \
|
|
--with-newlib \
|
|
--without-headers \
|
|
--with-gnu-as \
|
|
--with-gnu-ld \
|
|
--with-python-dir=share/gcc-${TARGET} \
|
|
--with-sysroot=${INTERIM_PREFIX}/${TARGET} \
|
|
--with-multilib-list=${MULTILIB_LIST} \
|
|
--with-pkgversion="${PKGVERSION}" >> ${WRKDIR}/gcc-first.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gcc-first all >> ${WRKDIR}/gcc-first.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-first install-gcc >> ${WRKDIR}/gcc-first.log 2>&1
|
|
@${RM} -f ${INTERIM_PREFIX}/bin/${TARGET}-gccbug >> ${WRKDIR}/gcc-first.log 2>&1
|
|
@${RM} -f ${INTERIM_PREFIX}/lib/libiberty.a >> ${WRKDIR}/gcc-first.log 2>&1
|
|
@${RM} -rf ${INTERIM_PREFIX}/include >> ${WRKDIR}/gcc-first.log 2>&1
|
|
|
|
build-newlib:
|
|
@${ECHO_MSG} "====> Build newlib (log file: ${WRKDIR}/newlib.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/newlib > ${WRKDIR}/newlib.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/newlib >> ${WRKDIR}/newlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/newlib && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" CFLAGS_FOR_TARGET="-g -O2 -ffunction-sections -fdata-sections" \
|
|
${SRC_DIR}/newlib/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${INTERIM_PREFIX} \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--enable-newlib-io-long-long \
|
|
--enable-newlib-register-fini \
|
|
--disable-newlib-supplied-syscalls \
|
|
--disable-nls >> ${WRKDIR}/newlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/newlib all >> ${WRKDIR}/newlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into stage directory"
|
|
@${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib install >> ${WRKDIR}/newlib.log 2>&1
|
|
.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build HTML documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib html >> ${WRKDIR}/newlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Install HTML documentation into stage directory"
|
|
@${MKDIR} ${DOC_PREFIX}/html/libc >> ${WRKDIR}/newlib.log 2>&1
|
|
@${TAR} -cf - -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libc/libc.html . | ${TAR} -xf - -C ${DOC_PREFIX}/html/libc >> ${WRKDIR}/newlib.log 2>&1
|
|
@${MKDIR} ${DOC_PREFIX}/html/libm >> ${WRKDIR}/newlib.log 2>&1
|
|
@${TAR} -cf - -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libm/libm.html . | ${TAR} -xf - -C ${DOC_PREFIX}/html/libm >> ${WRKDIR}/newlib.log 2>&1
|
|
.endif
|
|
.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build PDF documentation (ignore errors)"
|
|
@-${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libc pdf >> ${WRKDIR}/newlib.log 2>&1
|
|
@-${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libm pdf >> ${WRKDIR}/newlib.log 2>&1
|
|
@${ECHO_MSG} "=====> Install PDF documentation into stage directory"
|
|
@${CP} -f ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libc/libc.pdf ${DOC_PREFIX}/pdf/libc.pdf >> ${WRKDIR}/newlib.log 2>&1
|
|
@${CP} -f ${BUILD_PREFIX}/newlib/${TARGET}/newlib/libm/libm.pdf ${DOC_PREFIX}/pdf/libm.pdf >> ${WRKDIR}/newlib.log 2>&1
|
|
.endif
|
|
|
|
build-newlib-nano:
|
|
@${ECHO_MSG} "====> Build newlib-nano (log file: ${WRKDIR}/newlib-nano.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/newlib-nano > ${WRKDIR}/newlib-nano.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/newlib-nano >> ${WRKDIR}/newlib-nano.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/newlib-nano && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" CFLAGS_FOR_TARGET="-g -Os -ffunction-sections -fdata-sections" \
|
|
${SRC_DIR}/newlib-nano-2.1/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${BUILD_PREFIX}/target-libs \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--disable-newlib-supplied-syscalls \
|
|
--enable-newlib-reent-small \
|
|
--disable-newlib-fvwrite-in-streamio \
|
|
--disable-newlib-fseek-optimization \
|
|
--disable-newlib-wide-orient \
|
|
--enable-newlib-nano-malloc \
|
|
--disable-newlib-unbuf-stream-opt \
|
|
--enable-lite-exit \
|
|
--enable-newlib-global-atexit \
|
|
--disable-nls >> ${WRKDIR}/newlib-nano.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/newlib-nano all >> ${WRKDIR}/newlib-nano.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} PATH="${INTERIM_PREFIX}/bin:${PATH}" ${MAKE_CMD} -C ${BUILD_PREFIX}/newlib-nano install >> ${WRKDIR}/newlib-nano.log 2>&1
|
|
|
|
build-gcc-final:
|
|
@${ECHO_MSG} "====> Build final gcc and g++ (log file: ${WRKDIR}/gcc-final.log)"
|
|
@${RM} -f ${INTERIM_PREFIX}/${TARGET}/usr > ${WRKDIR}/gcc-final.log 2>&1
|
|
@${LN} -s . ${INTERIM_PREFIX}/${TARGET}/usr >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${RM} -rf ${BUILD_PREFIX}/gcc-final >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/gcc-final >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/gcc-final && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gcc/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${INTERIM_PREFIX} \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--libexecdir=${INTERIM_PREFIX}/lib \
|
|
--with-gmp=${WORLD_LIB} \
|
|
--with-mpfr=${WORLD_LIB} \
|
|
--with-mpc=${WORLD_LIB} \
|
|
--with-isl=${WORLD_LIB} \
|
|
${ISL_CHECK_VERSION} \
|
|
--with-cloog=${WORLD_LIB} \
|
|
--with-libelf=${WORLD_LIB} \
|
|
--enable-languages=c,c++ \
|
|
--enable-plugins \
|
|
--disable-decimal-float \
|
|
--disable-libffi \
|
|
--disable-libgomp \
|
|
--disable-libmudflap \
|
|
--disable-libquadmath \
|
|
--disable-libssp \
|
|
--disable-libstdcxx-pch \
|
|
--disable-nls \
|
|
--disable-shared \
|
|
--disable-threads \
|
|
--disable-tls \
|
|
--with-gnu-as \
|
|
--with-gnu-ld \
|
|
--with-newlib \
|
|
--with-headers=yes \
|
|
--with-python-dir=share/gcc-${TARGET} \
|
|
--with-sysroot=${INTERIM_PREFIX}/${TARGET} \
|
|
--with-multilib-list=${MULTILIB_LIST} \
|
|
--with-pkgversion="${PKGVERSION}" >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gcc-final INHIBIT_LIBC_CFLAGS="-DUSE_TM_CLONE_REGISTRY=0" all >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final install >> ${WRKDIR}/gcc-final.log 2>&1
|
|
.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build HTML documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final html >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${ECHO_MSG} "=====> Install HTML documentation into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final install-html >> ${WRKDIR}/gcc-final.log 2>&1
|
|
.endif
|
|
.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build PDF documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final pdf >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${ECHO_MSG} "=====> Install PDF documentation into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-final install-pdf >> ${WRKDIR}/gcc-final.log 2>&1
|
|
.endif
|
|
@${ECHO_MSG} "=====> Cleanup installation"
|
|
@${RM} -f ${INTERIM_PREFIX}/bin/${TARGET}-gccbug >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${FIND} ${INTERIM_PREFIX}/${TARGET}/lib -name libiberty.a -delete >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${RM} -f ${INTERIM_PREFIX}/lib/libiberty.a >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${RM} -rf ${INTERIM_PREFIX}/include >> ${WRKDIR}/gcc-final.log 2>&1
|
|
@${RM} -f ${INTERIM_PREFIX}/${TARGET}/usr >> ${WRKDIR}/gcc-final.log 2>&1
|
|
|
|
build-gcc-plugins:
|
|
@${ECHO_MSG} "====> Build gcc plugins (log file: ${WRKDIR}/gcc-plugins.log)"
|
|
@${RM} -f ${WRKDIR}/gcc-plugins.log
|
|
@plugin_target_dir=$$(${INTERIM_PREFIX}/bin/${TARGET}-gcc -print-file-name=plugin) && \
|
|
plugins=$$(${FIND} ${SRC_DIR}/gcc-plugins -mindepth 1 -maxdepth 1 -type d -name '[^\.]*') && \
|
|
for plugin_dir in $${plugins} ; do \
|
|
plugin_name=$$(basename "$${plugin_dir}") && \
|
|
src_files=$$(${FIND} $${plugin_dir} -name \*.c -or -name \*.cc) && \
|
|
${ECHO_MSG} "=====> Build plugin $${plugin_name} from $${src_files}" && \
|
|
${ECHO_MSG} "Build plugin $${plugin_name} from $${src_files}" >> ${WRKDIR}/gcc-plugins.log && \
|
|
${CXX} ${CXXFLAGS} ${CPPFLAGS} -fPIC -fno-rtti -O2 -shared -I$${plugin_target_dir}/include -I${WORLD_LIB}/include $${src_files} \
|
|
-o $${plugin_target_dir}/$${plugin_name}.so >> ${WRKDIR}/gcc-plugins.log 2>&1 ; \
|
|
done
|
|
|
|
build-libstdcxx:
|
|
@${ECHO_MSG} "====> Build size-optimized C++ runtime (log file: ${WRKDIR}/gcc-size-libstdcxx.log)"
|
|
@${RM} -f ${BUILD_PREFIX}/target-libs/${TARGET}/usr > ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${LN} -s . ${BUILD_PREFIX}/target-libs/${TARGET}/usr >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${RM} -rf ${BUILD_PREFIX}/gcc-size-libstdcxx >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/gcc-size-libstdcxx >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/gcc-size-libstdcxx && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gcc/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${BUILD_PREFIX}/target-libs \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--with-gmp=${WORLD_LIB} \
|
|
--with-mpfr=${WORLD_LIB} \
|
|
--with-mpc=${WORLD_LIB} \
|
|
--with-isl=${WORLD_LIB} \
|
|
${ISL_CHECK_VERSION} \
|
|
--with-cloog=${WORLD_LIB} \
|
|
--with-libelf=${WORLD_LIB} \
|
|
--enable-languages=c,c++ \
|
|
--disable-decimal-float \
|
|
--disable-libffi \
|
|
--disable-libgomp \
|
|
--disable-libmudflap \
|
|
--disable-libquadmath \
|
|
--disable-libssp \
|
|
--disable-libstdcxx-pch \
|
|
--disable-nls \
|
|
--disable-shared \
|
|
--disable-threads \
|
|
--disable-tls \
|
|
--with-gnu-as \
|
|
--with-gnu-ld \
|
|
--with-newlib \
|
|
--with-headers=yes \
|
|
--with-python-dir=share/gcc-${TARGET} \
|
|
--with-sysroot=${BUILD_PREFIX}/target-libs/${TARGET} \
|
|
--with-multilib-list=${MULTILIB_LIST} \
|
|
--with-pkgversion="${PKGVERSION}" >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gcc-size-libstdcxx \
|
|
CXXFLAGS_FOR_TARGET="-g -Os -ffunction-sections -fdata-sections -fno-exceptions" all >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into intermediate directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gcc-size-libstdcxx install >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
@${ECHO_MSG} "=====> Copy all target libraries into stage directory"
|
|
@for multilib in $$(${BUILD_PREFIX}/target-libs/bin/${TARGET}-gcc -print-multi-lib) ; do \
|
|
multilib_dir=$${multilib%%;*} ; \
|
|
for srclib in libstdc++.a libsupc++.a libc.a libg.a librdimon.a nano.specs rdimon.specs nosys.specs ; do \
|
|
dstlib=$$(echo "$${srclib}" | ${SED} 's/\.a$$/_s.a/') ; \
|
|
${CP} -f ${BUILD_PREFIX}/target-libs/${TARGET}/lib/$${multilib_dir}/$${srclib} ${INTERIM_PREFIX}/${TARGET}/lib/$${multilib_dir}/$${dstlib} ; \
|
|
done ; \
|
|
${CP} -f ${BUILD_PREFIX}/target-libs/${TARGET}/lib/$${multilib_dir}/*crt0.o ${INTERIM_PREFIX}/${TARGET}/lib/$${multilib_dir}/ ; \
|
|
done >> ${WRKDIR}/gcc-size-libstdcxx.log 2>&1
|
|
|
|
build-gdb:
|
|
@${ECHO_MSG} "====> Build gdb (log file: ${WRKDIR}/gdb.log)"
|
|
@${RM} -rf ${BUILD_PREFIX}/gdb > ${WRKDIR}/gdb.log 2>&1
|
|
@${MKDIR} ${BUILD_PREFIX}/gdb >> ${WRKDIR}/gdb.log 2>&1
|
|
@${ECHO_MSG} "=====> Configure"
|
|
@cd ${BUILD_PREFIX}/gdb && \
|
|
${MAKE_ENV} ${CONFIGURE_ENV} ${SRC_DIR}/gdb/configure \
|
|
--target=${TARGET} \
|
|
--prefix=${INTERIM_PREFIX} \
|
|
--infodir=${DOC_PREFIX}/info \
|
|
--mandir=${DOC_PREFIX}/man \
|
|
--htmldir=${DOC_PREFIX}/html \
|
|
--pdfdir=${DOC_PREFIX}/pdf \
|
|
--disable-nls \
|
|
--disable-sim \
|
|
--with-libexpat \
|
|
--with-libexpat-prefix=${WORLD_LIB} \
|
|
--with-python=no \
|
|
--with-system-gdbinit=${INTERIM_PREFIX}/xxxx/${TARGET}/lib/gdbinit \
|
|
--with-lzma=no \
|
|
--with-gdb-datadir='$${prefix}/${TARGET}/share/gdb' \
|
|
--with-pkgversion="${PKGVERSION}" >> ${WRKDIR}/gdb.log 2>&1
|
|
@${ECHO_MSG} "=====> Build"
|
|
@${MAKE_ENV} ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -C ${BUILD_PREFIX}/gdb all >> ${WRKDIR}/gdb.log 2>&1
|
|
@${ECHO_MSG} "=====> Install into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install >> ${WRKDIR}/gdb.log 2>&1
|
|
@${RM} -rf ${INTERIM_PREFIX}/include
|
|
.if ${PORT_OPTIONS:MHTML} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build HTML documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb html >> ${WRKDIR}/gdb.log 2>&1
|
|
@${ECHO_MSG} "=====> Install HTML documentation into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install-html >> ${WRKDIR}/gdb.log 2>&1
|
|
.endif
|
|
.if ${PORT_OPTIONS:MPDF} && ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "=====> Build PDF documentation"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb pdf >> ${WRKDIR}/gdb.log 2>&1
|
|
@${ECHO_MSG} "=====> Install PDF documentation into stage directory"
|
|
@${MAKE_ENV} ${MAKE_CMD} -C ${BUILD_PREFIX}/gdb install-pdf >> ${WRKDIR}/gdb.log 2>&1
|
|
.endif
|
|
|
|
install-samples:
|
|
.if ${PORT_OPTIONS:MEXAMPLES}
|
|
@${ECHO_MSG} "====> Install samples into stage directory"
|
|
@${TAR} -xf ${SRC_DIR}/samples.tar.bz2 -C ${INTERIM_PREFIX}/share/gcc-${TARGET}
|
|
.else
|
|
@${DO_NADA}
|
|
.endif
|
|
|
|
install-misc:
|
|
.if ${PORT_OPTIONS:MDOCS}
|
|
@${ECHO_MSG} "====> Install misc. files into stage directory"
|
|
@for doc in ${MISC_DOCS} ; do \
|
|
${CP} -f ${WRKDIR}/${ORIGINAL_PACKAGE_NAME}/$${doc} ${DOC_PREFIX}/ ; \
|
|
done
|
|
.else
|
|
@${DO_NADA}
|
|
.endif
|
|
|
|
strip-binaries:
|
|
@${ECHO_MSG} "====> Strip host binaries"
|
|
@for bin in $$(${FIND} ${INTERIM_PREFIX}/bin -type f -name ${TARGET}-\*) ; do \
|
|
if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
|
|
${STRIP_CMD} $${bin} ; \
|
|
done
|
|
@for bin in $$(${FIND} ${INTERIM_PREFIX}/${TARGET}/bin -type f -maxdepth 1 -mindepth 1) ; do \
|
|
if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
|
|
${STRIP_CMD} $${bin} ; \
|
|
done
|
|
@for bin in $$(${FIND} ${INTERIM_PREFIX}/lib/gcc/${TARGET}/4.8.4 -perm +111 -and ! -type d) ; do \
|
|
if ! ${FILE} $$bin | ${GREP} -qs ': ELF' ; then continue ; fi ; \
|
|
${STRIP_CMD} $${bin} ; \
|
|
done
|
|
|
|
strip-target-libraries:
|
|
@${ECHO_MSG} "====> Strip target libraries"
|
|
@for target in $$(${FIND} ${INTERIM_PREFIX}/${TARGET}/lib ${INTERIM_PREFIX}/lib/gcc/${TARGET}/4.8.4 -type f -name \*.a -o -name \*.o) ; do \
|
|
${INTERIM_PREFIX}/bin/${TARGET}-objcopy -R .comment -R .note -R .debug_info -R .debug_aranges -R .debug_pubnames -R .debug_pubtypes -R .debug_abbrev -R .debug_line -R .debug_str -R .debug_ranges -R .debug_loc $${target} ; \
|
|
done
|
|
@${ECHO_MSG} "====> Remove *.la files and other leftovers"
|
|
@${FIND} ${INTERIM_PREFIX} -name \*.la -delete
|
|
@${RM} -f ${INTERIM_PREFIX}/lib/charset.alias ${INTERIM_PREFIX}/lib/libiberty.a
|