Makefile revision 1.65
17ec681f3Smrg# $NetBSD: Makefile,v 1.65 2014/02/26 09:54:34 mrg Exp $ 27ec681f3Smrg 37ec681f3Smrg.include <bsd.own.mk> 47ec681f3Smrg 57ec681f3SmrgGCC_LANGUAGES=c c++ objc 67ec681f3SmrgMODULE= gcc4 77ec681f3Smrg 87ec681f3SmrgGCCDIST= ${.CURDIR}/../../external/gpl3/${EXTERNAL_GCC_SUBDIR}/dist 97ec681f3SmrgGNUHOSTDIST= ${GCCDIST} 107ec681f3Smrg 117ec681f3Smrg.if ${HAVE_GCC} == 48 127ec681f3SmrgCC_FOR_BUILD= ${HOST_CXX:Q} 137ec681f3SmrgLIB_INTL= 147ec681f3Smrg.elif ${HAVE_GCC} == 45 157ec681f3SmrgUNWIND_H=unwind.h 167ec681f3SmrgMKNATIVE= ${.CURDIR}/mknative-gcc.old 177ec681f3Smrg.endif 187ec681f3Smrg 197ec681f3Smrg# Defaults 207ec681f3SmrgCC_FOR_BUILD?= ${HOST_CC:Q} 217ec681f3SmrgLIB_INTL?= "LIBS=-lintl" 227ec681f3SmrgMKNATIVE?= ${.CURDIR}/mknative-gcc 237ec681f3Smrg 247ec681f3Smrg.if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64" 257ec681f3SmrgMULTILIB_ARGS= --enable-multilib 267ec681f3Smrg.else 277ec681f3SmrgMULTILIB_ARGS= --disable-multilib 287ec681f3Smrg.endif 297ec681f3Smrg 307ec681f3Smrg.if ${MKSOFTFLOAT} != "no" && ${MACHINE_CPU} != "m68k" 317ec681f3SmrgSOFTFLOAT_ARGS= -with-float=soft 327ec681f3Smrg.endif 337ec681f3Smrg 347ec681f3SmrgCOMMON_CONFIGURE_ARGS= --target=${MACHINE_GNU_PLATFORM} \ 357ec681f3Smrg --enable-long-long \ 367ec681f3Smrg --enable-threads \ 377ec681f3Smrg --with-bugurl=http://www.NetBSD.org/Misc/send-pr.html \ 387ec681f3Smrg --with-pkgversion="NetBSD nb1 20120916" \ 397ec681f3Smrg --with-system-zlib \ 407ec681f3Smrg --enable-__cxa_atexit 417ec681f3Smrg.if defined(GCC_CONFIG_ARCH.${MACHINE_ARCH}) 427ec681f3SmrgCOMMON_CONFIGURE_ARGS+= --with-arch=${GCC_CONFIG_ARCH.${MACHINE_ARCH}} 437ec681f3Smrg.endif 447ec681f3Smrg.if defined(GCC_CONFIG_TUNE.${MACHINE_ARCH}) 457ec681f3SmrgCOMMON_CONFIGURE_ARGS+= --with-tune=${GCC_CONFIG_TUNE.${MACHINE_ARCH}} 467ec681f3Smrg.endif 477ec681f3Smrg 487ec681f3SmrgCONFIGURE_ARGS= ${COMMON_CONFIGURE_ARGS} 497ec681f3Smrg.if ${HAVE_GCC} >= 45 507ec681f3SmrgCONFIGURE_ARGS+= \ 517ec681f3Smrg --with-sysroot=${DESTDIR} \ 527ec681f3Smrg --with-mpc=${TOOLDIR} \ 537ec681f3Smrg --with-mpfr=${TOOLDIR} \ 547ec681f3Smrg --with-gmp=${TOOLDIR} 557ec681f3Smrg.endif 567ec681f3SmrgCONFIGURE_ARGS+= \ 577ec681f3Smrg --disable-nls \ 587ec681f3Smrg ${MULTILIB_ARGS} \ 597ec681f3Smrg ${SOFTFLOAT_ARGS} \ 607ec681f3Smrg --program-transform-name="s,^,${MACHINE_GNU_PLATFORM}-," \ 617ec681f3Smrg --enable-languages="${GCC_LANGUAGES}" 627ec681f3Smrg 637ec681f3SmrgGCC_CPPFLAGS= -DNETBSD_TOOLS -DTARGET_SYSTEM_ROOT=0 \ 647ec681f3Smrg -DTARGET_SYSTEM_ROOT_RELOCATABLE 657ec681f3Smrg 667ec681f3SmrgMAKE_ARGS= MACHINE= MAKEINFO=${TOOL_MAKEINFO:Q} \ 677ec681f3Smrg LIBGCC= LIBGCC1= LIBGCC1_TEST= LIBGCC2= INSTALL_LIBGCC= \ 687ec681f3Smrg EXTRA_PARTS= CPPFLAGS=${GCC_CPPFLAGS:Q} \ 697ec681f3Smrg AR=${HOST_AR:Q} RANLIB=${HOST_RANLIB:Q} 707ec681f3Smrg 717ec681f3SmrgCONFIGURE_ENV+= gcc_cv_libc_provides_ssp=yes \ 727ec681f3Smrg gcc_cv_as_sparc_gotdata_op=no 737ec681f3Smrg 747ec681f3SmrgALL_TARGET= all-gcc 757ec681f3SmrgINSTALL_TARGET= install-gcc 767ec681f3Smrg 777ec681f3Smrg.include "${.CURDIR}/../Makefile.gmakehost" 787ec681f3SmrgBUILD_MAKE=${TOOL_GMAKE} 797ec681f3Smrg 807ec681f3Smrg# 817ec681f3Smrg# mknative-gcc specific stuff 827ec681f3Smrg# 837ec681f3Smrg 847ec681f3SmrgMKNATIVE_CONFIG_TARGET_LIBS= \ 857ec681f3Smrg configure-target-libstdc++-v3 \ 867ec681f3Smrg configure-target-libobjc 877ec681f3Smrg 887ec681f3Smrg.if ${HAVE_GCC} == 48 897ec681f3SmrgMKNATIVE_CONFIG_TARGET_LIBS += configure-target-libgcc 907ec681f3SmrgMKNATIVE_TARGET= gcc48 917ec681f3SmrgMKNATIVE_CONFIG_TARGET_LIBS+= \ 927ec681f3Smrg configure-target-libgomp 937ec681f3Smrg.elif ${HAVE_GCC} == 45 947ec681f3SmrgMKNATIVE_TARGET= gcc45 957ec681f3SmrgMKNATIVE_CONFIG_TARGET_LIBS+= \ 967ec681f3Smrg configure-target-libgomp 977ec681f3Smrg.else 987ec681f3SmrgMKNATIVE_TARGET= gcc4 997ec681f3Smrg.endif 1007ec681f3Smrg 1017ec681f3SmrgBINENV= /usr/bin/env -i 1027ec681f3Smrg 1037ec681f3Smrg 1047ec681f3SmrgMKNATIVE_ENV= ${BINENV} ${CONFIGURE_ENV:NC*:NLD*} \ 1057ec681f3Smrg CC_FOR_BUILD=${CC_FOR_BUILD:Q} \ 1067ec681f3Smrg CXX_FOR_BUILD=${HOST_CXX:Q} \ 1077ec681f3Smrg CFLAGS_FOR_BUILD="-I${TOOLDIR}/include" \ 1087ec681f3Smrg CC=${CC:Q}' '${CCADDFLAGS:Q} \ 1097ec681f3Smrg CXX=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \ 1107ec681f3Smrg CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \ 1117ec681f3Smrg CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= \ 1127ec681f3Smrg AS=${AS:Q} AWK=${TOOL_AWK:Q} LD=${LD:Q} \ 1137ec681f3Smrg MSGFMT=${TOOLDIR}/bin/${_TOOL_PREFIX}msgfmt \ 1147ec681f3Smrg NM=${NM:Q} OBJDUMP=${OBJDUMP:Q} \ 1157ec681f3Smrg XGETTEXT=${TOOLDIR}/bin/${_TOOL_PREFIX}xgettext \ 1167ec681f3Smrg ${LIB_INTL} \ 1177ec681f3Smrg ac_cv_prog_cc_cross=yes \ 1187ec681f3Smrg ac_cv_func_strcoll_works=yes \ 1197ec681f3Smrg ac_cv_func_elf_getshstrndx=no \ 1207ec681f3Smrg gcc_cv_func_printf_ptr=yes \ 1217ec681f3Smrg gcc_cv_libc_provides_ssp=yes \ 1227ec681f3Smrg gdb_cv_printf_has_long_double=yes \ 1237ec681f3Smrg gdb_cv_printf_has_long_long=yes \ 1247ec681f3Smrg gdb_cv_scanf_has_long_double=yes \ 1257ec681f3Smrg gcc_cv_as_sparc_gotdata_op=no 1267ec681f3Smrg 1277ec681f3Smrg.if ${HAVE_GCC} < 45 1287ec681f3SmrgGCCSRCDIR=${.CURDIR}/../../gnu/dist/gcc4 1297ec681f3Smrg.else 1307ec681f3SmrgGCCSRCDIR=${.CURDIR}/../../external/gpl3/${EXTERNAL_GCC_SUBDIR}/dist 1317ec681f3Smrg.endif 1327ec681f3Smrg 1337ec681f3SmrgCXXADDFLAGS= --sysroot=${DESTDIR} 1347ec681f3SmrgCCADDFLAGS= --sysroot=${DESTDIR} -L${DESTDIR}/lib -L${DESTDIR}/usr/lib -B${DESTDIR}/usr/lib/ -I${.OBJDIR}/.native/gcc/include 1357ec681f3Smrg 1367ec681f3Smrg# NEWCONFIGDIR can be set to a read-write location of the source tree 1377ec681f3Smrg# in case the version being used is not. 1387ec681f3SmrgNEWCONFIGDIR?= ${.CURDIR}/../.. 1397ec681f3Smrg 1407ec681f3Smrgbootstrap-libgcc: .configure_done 1417ec681f3Smrg @echo 'Creating files needed for libgcc by a native bootstrap build.' 1427ec681f3Smrg (cd ${.OBJDIR}/build && ${BUILD_COMMAND} configure-target-libgcc) 1437ec681f3Smrg @MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} lib${MKNATIVE_TARGET}-bootstrap \ 1447ec681f3Smrg ${.OBJDIR}/build ${NEWCONFIGDIR} ${NETBSDSRCDIR} \ 1457ec681f3Smrg ${MACHINE_GNU_PLATFORM} ${DESTDIR} ${TOOLDIR} 1467ec681f3Smrg 1477ec681f3Smrg.if ${HAVE_GCC} == "48" 1487ec681f3Smrgbootstrap-libstdc++: .configure_done 1497ec681f3Smrg @echo 'Creating files needed for libstdc++ by a native bootstrap build.' 1507ec681f3Smrg (cd ${.OBJDIR}/build && ${BUILD_COMMAND} configure-target-libstdc++-v3) 1517ec681f3Smrg @MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} libstdc++-bootstrap \ 1527ec681f3Smrg ${.OBJDIR}/build ${NEWCONFIGDIR} ${NETBSDSRCDIR} \ 1537ec681f3Smrg ${MACHINE_GNU_PLATFORM} ${DESTDIR} ${TOOLDIR} 1547ec681f3Smrg.endif 1557ec681f3Smrg 1567ec681f3Smrgnative-gcc: .native/.configure_done 1577ec681f3Smrg @echo 'Extracting GNU GCC configury for a native toolchain.' 1587ec681f3Smrg @MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} ${MKNATIVE_TARGET} \ 1597ec681f3Smrg ${.OBJDIR}/.native ${NEWCONFIGDIR} ${NETBSDSRCDIR} \ 1607ec681f3Smrg ${MACHINE_GNU_PLATFORM} ${DESTDIR} ${TOOLDIR} 1617ec681f3Smrg 1627ec681f3SmrgNATIVE_CONFIGURE_ARGS= ${COMMON_CONFIGURE_ARGS} 1637ec681f3Smrg.if ${HAVE_GCC} >= 45 1647ec681f3SmrgMPC= ${NETBSDSRCDIR}/external/lgpl3/mpc 1657ec681f3SmrgMPFR= ${NETBSDSRCDIR}/external/lgpl3/mpfr 1667ec681f3SmrgGMP= ${NETBSDSRCDIR}/external/lgpl3/gmp 1677ec681f3SmrgMPCOBJ!= cd ${MPC}/lib/libmpc && ${PRINTOBJDIR} 1687ec681f3SmrgMPFROBJ!= cd ${MPFR}/lib/libmpfr && ${PRINTOBJDIR} 1697ec681f3SmrgGMPOBJ!= cd ${GMP}/lib/libgmp && ${PRINTOBJDIR} 1707ec681f3Smrg 1717ec681f3SmrgGMP_MACHINE_ARCH?= ${MACHINE_ARCH:S/earmv4/arm/:C/armv[5-7]/arm/} 1727ec681f3Smrg 1737ec681f3SmrgNATIVE_CONFIGURE_ARGS+= \ 1747ec681f3Smrg --with-mpc-lib=${MPCOBJ} \ 1757ec681f3Smrg --with-mpfr-lib=${MPFROBJ} \ 1767ec681f3Smrg --with-gmp-lib=${GMPOBJ} \ 1777ec681f3Smrg --with-mpc-include=${MPC}/dist/src \ 1787ec681f3Smrg --with-mpfr-include=${MPFR}/dist/src \ 1797ec681f3Smrg --with-gmp-include=${GMP}/lib/libgmp/arch/${GMP_MACHINE_ARCH} 1807ec681f3Smrg 1817ec681f3Smrg. if ${MACHINE_ARCH} != "vax" 1827ec681f3SmrgNATIVE_CONFIGURE_ARGS+= --enable-tls 1837ec681f3Smrg. endif 1847ec681f3Smrg. if !empty(MACHINE_ARCH:Mearm*) 1857ec681f3SmrgNATIVE_CONFIGURE_ARGS+= --enable-initfini-array 1867ec681f3Smrg. endif 1877ec681f3Smrg.endif 1887ec681f3SmrgNATIVE_CONFIGURE_ARGS+= \ 1897ec681f3Smrg --disable-multilib \ 1907ec681f3Smrg --disable-symvers \ 1917ec681f3Smrg --disable-libstdcxx-pch \ 1927ec681f3Smrg --build=`${GCCSRCDIR}/config.guess` \ 1937ec681f3Smrg --host=${MACHINE_GNU_PLATFORM} \ 1947ec681f3Smrg --with-sysroot=${DESTDIR} 1957ec681f3SmrgMKENV_BUILD_MAKE=cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} 1967ec681f3Smrg 1977ec681f3Smrg.native/.configure_done: ${_GNU_CFGSRC} ${.CURDIR}/Makefile 1987ec681f3Smrg mkdir .native 2>/dev/null || true 1997ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2007ec681f3Smrg (cd .native && ${MKNATIVE_ENV} \ 2017ec681f3Smrg ${HOST_SH} ${GNUHOSTDIST}/configure \ 2027ec681f3Smrg ${NATIVE_CONFIGURE_ARGS}) && \ 2037ec681f3Smrg (${MKENV_BUILD_MAKE} all-build-libiberty) && \ 2047ec681f3Smrg ([ "${HAVE_GCC}" = "48" ] && \ 2057ec681f3Smrg (${MKENV_BUILD_MAKE} all-libcpp) && \ 2067ec681f3Smrg (${MKENV_BUILD_MAKE} all-libbacktrace) && \ 2077ec681f3Smrg (${MKENV_BUILD_MAKE} all-libdecnumber) || true) 2087ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2097ec681f3Smrg (${MKENV_BUILD_MAKE} configure-gcc configure-libcpp) && \ 2107ec681f3Smrg (${MKENV_BUILD_MAKE} configure-libiberty) && \ 2117ec681f3Smrg (${MKENV_BUILD_MAKE} configure-libdecnumber) 2127ec681f3Smrg # edit Makefile so that maybe-all-gcc does not depend on all-gcc any more. 2137ec681f3Smrg (cd .native && mv Makefile Makefile.config && \ 2147ec681f3Smrg ${TOOL_SED} -e 's/\(maybe-all-gcc:\) all-gcc/\1/' \ 2157ec681f3Smrg -e 's/\(maybe-all-target-libgcc:\) all-target-libgcc/\1/' \ 2167ec681f3Smrg < Makefile.config > Makefile) 2177ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2187ec681f3Smrg (cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e tree-check.h config.h multilib.h gcov-iov.h) 2197ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2207ec681f3Smrg (cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e libgcc.mvars tconfig.h ${UNWIND_H}) 2217ec681f3Smrg (cd .native && touch gcc/cc1obj gcc/cc1plus gcc/f771 gcc/libgcc.a gcc/libgcc_s.so) 2227ec681f3Smrg.for _lib in ${MKNATIVE_CONFIG_TARGET_LIBS} 2237ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2247ec681f3Smrg (cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} \ 2257ec681f3Smrg ${_lib} \ 2267ec681f3Smrg ALL_GCC_C= ALL_GCC_CXX= \ 2277ec681f3Smrg CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \ 2287ec681f3Smrg CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \ 2297ec681f3Smrg RAW_CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \ 2307ec681f3Smrg CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \ 2317ec681f3Smrg ac_cv_prog_cc_cross=yes) && \ 2327ec681f3Smrg true 2337ec681f3Smrg.endfor 2347ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2357ec681f3Smrg (cd .native/${MACHINE_GNU_PLATFORM}/libstdc++-v3/include && \ 2367ec681f3Smrg ${MKNATIVE_ENV} ${BUILD_MAKE} \ 2377ec681f3Smrg CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \ 2387ec681f3Smrg CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \ 2397ec681f3Smrg CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \ 2407ec681f3Smrg all-local) && \ 2417ec681f3Smrg true 2427ec681f3Smrg.if 0 2437ec681f3Smrg PATH=${TOOLDIR}/bin:$$PATH; export PATH; \ 2447ec681f3Smrg (cd .native/${MACHINE_GNU_PLATFORM}/libiberty && \ 2457ec681f3Smrg ${MKNATIVE_ENV} ${BUILD_MAKE} needed-list) 2467ec681f3Smrg.endif 2477ec681f3Smrg @touch $@ 2487ec681f3Smrg 2497ec681f3Smrgclean: clean.native 2507ec681f3Smrgclean.native: 2517ec681f3Smrg -rm -r -f .native 2527ec681f3Smrg