Home | History | Annotate | Line # | Download | only in gcc
Makefile revision 1.113.2.1
      1  1.113.2.1  perseant #	$NetBSD: Makefile,v 1.113.2.1 2025/08/02 05:58:23 perseant Exp $
      2        1.1       mrg 
      3       1.86  christos .include <bsd.hostinit.mk>
      4        1.1       mrg 
      5       1.16       mrg GCC_LANGUAGES=c c++ objc
      6       1.98       mrg MODULE=		${EXTERNAL_GCC_SUBDIR}
      7       1.45       mrg 
      8       1.66       mrg GCCDIST=	${.CURDIR}/../../external/gpl3/${EXTERNAL_GCC_SUBDIR}/dist
      9       1.66       mrg GNUHOSTDIST=	${GCCDIST}
     10       1.65       mrg 
     11      1.106       mrg .if ${HAVE_GCC} == 10
     12       1.65       mrg MKNATIVE=		${.CURDIR}/mknative-gcc.old
     13       1.60     skrll .endif
     14       1.60     skrll 
     15       1.63  christos # Defaults
     16       1.75       mrg CC_FOR_BUILD=		${HOST_CXX:Q}
     17       1.63  christos MKNATIVE?=		${.CURDIR}/mknative-gcc
     18       1.63  christos 
     19      1.113  gutterid # Force C++11 so builds succeed on hosts where this isn't the compiler
     20      1.113  gutterid # default, e.g., NetBSD 8.x with GCC 5.5.
     21      1.113  gutterid .if ${HAVE_GCC} > 10
     22      1.113  gutterid HOST_CXXFLAGS+=		-std=c++11
     23      1.113  gutterid .endif
     24      1.113  gutterid 
     25       1.28       mrg .if ${MACHINE_ARCH} == "x86_64" || ${MACHINE_ARCH} == "sparc64"
     26       1.28       mrg MULTILIB_ARGS= --enable-multilib
     27       1.28       mrg .else
     28       1.28       mrg MULTILIB_ARGS= --disable-multilib
     29       1.28       mrg .endif
     30       1.28       mrg 
     31       1.71      matt .if ${MKSOFTFLOAT} != "no" && ${MACHINE_CPU} != "m68k" \
     32       1.81       chs     && ${MACHINE_CPU} != "or1k" && ${MACHINE_CPU} != "sh3"
     33       1.36      matt SOFTFLOAT_ARGS=	-with-float=soft
     34       1.36      matt .endif
     35       1.36      matt 
     36       1.69       mrg .include "gcc-version.mk"
     37       1.69       mrg 
     38       1.31  drochner COMMON_CONFIGURE_ARGS=	--target=${MACHINE_GNU_PLATFORM} \
     39       1.31  drochner 			--enable-long-long \
     40       1.31  drochner 			--enable-threads \
     41       1.94      maya 			--with-bugurl=http://www.NetBSD.org/support/send-pr.html \
     42       1.69       mrg 			--with-pkgversion="NetBSD ${NETBSD_GCC_VERSION}" \
     43       1.51     joerg 			--with-system-zlib \
     44       1.68       mrg 			--enable-__cxa_atexit \
     45       1.80       mrg 			--enable-libstdcxx-time=rt \
     46       1.89       mrg 			--enable-libstdcxx-threads \
     47       1.89       mrg 			--with-diagnostics-color=auto-if-env
     48       1.31  drochner .if defined(GCC_CONFIG_ARCH.${MACHINE_ARCH})
     49       1.31  drochner COMMON_CONFIGURE_ARGS+=	--with-arch=${GCC_CONFIG_ARCH.${MACHINE_ARCH}}
     50       1.31  drochner .endif
     51       1.32        ad .if defined(GCC_CONFIG_TUNE.${MACHINE_ARCH})
     52       1.32        ad COMMON_CONFIGURE_ARGS+=	--with-tune=${GCC_CONFIG_TUNE.${MACHINE_ARCH}}
     53       1.32        ad .endif
     54       1.31  drochner 
     55       1.93       mrg # Too many CPUs have one or both of these bugs, the common code should
     56       1.93       mrg # default to safety.
     57       1.93       mrg .if ${MACHINE_CPU} == "aarch64"
     58       1.93       mrg COMMON_CONFIGURE_ARGS+=	--enable-fix-cortex-a53-835769 \
     59       1.93       mrg 			--enable-fix-cortex-a53-843419
     60       1.93       mrg .endif
     61       1.93       mrg 
     62       1.89       mrg .if ${HAVE_GCC} >= 7
     63       1.89       mrg COMMON_CONFIGURE_ARGS+=	--with-default-libstdcxx-abi=new
     64       1.89       mrg .endif
     65       1.78       mrg 
     66      1.112  gutterid # We enabled isl support for GCC 12.  Move into normal segment when
     67      1.111       mrg # removing GCC 10.
     68  1.113.2.1  perseant .if ${HAVE_GCC} < 12 || defined(NOGCCISL)
     69  1.113.2.1  perseant COMMON_CONFIGURE_ARGS+=	--without-isl
     70      1.111       mrg .else
     71  1.113.2.1  perseant COMMON_CONFIGURE_ARGS+=	--with-isl=${TOOLDIR}
     72      1.111       mrg .endif
     73      1.111       mrg 
     74       1.37       mrg CONFIGURE_ARGS=	${COMMON_CONFIGURE_ARGS}
     75       1.37       mrg CONFIGURE_ARGS+= \
     76       1.63  christos 		--with-sysroot=${DESTDIR} \
     77       1.37       mrg 		--with-mpc=${TOOLDIR} \
     78       1.37       mrg 		--with-mpfr=${TOOLDIR} \
     79       1.70       mrg 		--with-gmp=${TOOLDIR} \
     80      1.111       mrg 		${ISL_CONFIGURE_ARGS} \
     81       1.31  drochner 		--disable-nls \
     82       1.28       mrg 		${MULTILIB_ARGS} \
     83       1.36      matt 		${SOFTFLOAT_ARGS} \
     84        1.1       mrg 		--program-transform-name="s,^,${MACHINE_GNU_PLATFORM}-," \
     85       1.31  drochner 		--enable-languages="${GCC_LANGUAGES}"
     86        1.1       mrg 
     87       1.64  christos GCC_CPPFLAGS=	-DNETBSD_TOOLS -DTARGET_SYSTEM_ROOT=0 \
     88      1.105  christos 		-DTARGET_SYSTEM_ROOT_RELOCATABLE 
     89      1.105  christos #		${HOST_CPPFLAGS}
     90       1.35     joerg 
     91      1.109       rin .if ${MACHINE} == "vax"
     92      1.109       rin GCC_CPPFLAGS+=	-DNB_FIX_VAX_BACKEND
     93      1.109       rin .endif
     94      1.109       rin 
     95        1.1       mrg MAKE_ARGS=	MACHINE= MAKEINFO=${TOOL_MAKEINFO:Q} \
     96        1.7   thorpej 		LIBGCC= LIBGCC1= LIBGCC1_TEST= LIBGCC2= INSTALL_LIBGCC= \
     97       1.35     joerg 		EXTRA_PARTS= CPPFLAGS=${GCC_CPPFLAGS:Q} \
     98  1.113.2.1  perseant 		AR=${HOST_AR:Q} RANLIB=${HOST_RANLIB:Q} NM=${HOST_NM:Q}
     99        1.1       mrg 
    100       1.44       mrg CONFIGURE_ENV+= gcc_cv_libc_provides_ssp=yes \
    101       1.44       mrg 		gcc_cv_as_sparc_gotdata_op=no
    102       1.25        he 
    103       1.59     skrll ALL_TARGET=	all-gcc
    104       1.59     skrll INSTALL_TARGET=	install-gcc
    105       1.59     skrll 
    106       1.59     skrll .include "${.CURDIR}/../Makefile.gmakehost"
    107       1.59     skrll BUILD_MAKE=${TOOL_GMAKE}
    108       1.59     skrll 
    109       1.59     skrll #
    110       1.59     skrll # mknative-gcc specific stuff
    111       1.59     skrll #
    112       1.63  christos 
    113       1.68       mrg MKNATIVE_CONFIG_TARGET_LIBS=
    114       1.59     skrll 
    115       1.75       mrg MKNATIVE_CONFIG_TARGET_LIBS+=	configure-target-libgcc
    116       1.75       mrg MKNATIVE_CONFIG_TARGET_LIBS+=	configure-target-libgomp
    117       1.59     skrll 
    118       1.68       mrg MKNATIVE_CONFIG_TARGET_LIBS+= \
    119       1.68       mrg 	configure-target-libstdc++-v3 \
    120       1.89       mrg 	configure-target-libbacktrace \
    121       1.68       mrg 	configure-target-libobjc
    122       1.68       mrg 
    123       1.99       mrg .if ${HAVE_GCC} >= 9
    124       1.99       mrg # XXX needs to build libstdc++ fully, which fails
    125       1.99       mrg .if 0
    126       1.99       mrg MKNATIVE_CONFIG_TARGET_LIBS+= \
    127       1.99       mrg 	configure-target-libsanitizer
    128       1.99       mrg .endif
    129       1.99       mrg .endif
    130       1.99       mrg 
    131      1.107       mrg .if ${HAVE_GCC} <= 10
    132      1.107       mrg EXTRA_FILES=	gcov-iov.h
    133      1.107       mrg .else
    134      1.107       mrg EXTRA_FILES=	bversion.h gtyp-input.list
    135      1.107       mrg .endif
    136      1.107       mrg 
    137       1.59     skrll BINENV=		/usr/bin/env -i
    138       1.59     skrll 
    139       1.63  christos 
    140       1.16       mrg MKNATIVE_ENV=	${BINENV} ${CONFIGURE_ENV:NC*:NLD*} \
    141       1.63  christos 			CC_FOR_BUILD=${CC_FOR_BUILD:Q} \
    142       1.63  christos 			CXX_FOR_BUILD=${HOST_CXX:Q} \
    143       1.63  christos 			CFLAGS_FOR_BUILD="-I${TOOLDIR}/include" \
    144       1.16       mrg 			CC=${CC:Q}' '${CCADDFLAGS:Q} \
    145       1.20       mrg 			CXX=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
    146       1.89       mrg 			CPP=${CPP:Q}' '-I${DESTDIR}/usr/include' '-I${DESTDIR}/usr/include/g++/bits \
    147       1.16       mrg 			CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= \
    148       1.29       apb 			AS=${AS:Q} AWK=${TOOL_AWK:Q} LD=${LD:Q} \
    149       1.16       mrg 			MSGFMT=${TOOLDIR}/bin/${_TOOL_PREFIX}msgfmt \
    150       1.29       apb 			NM=${NM:Q} OBJDUMP=${OBJDUMP:Q} \
    151       1.16       mrg 			XGETTEXT=${TOOLDIR}/bin/${_TOOL_PREFIX}xgettext \
    152       1.16       mrg 			ac_cv_prog_cc_cross=yes \
    153       1.16       mrg 			ac_cv_func_strcoll_works=yes \
    154       1.39       mrg 			ac_cv_func_elf_getshstrndx=no \
    155       1.16       mrg 			gcc_cv_func_printf_ptr=yes \
    156       1.28       mrg 			gcc_cv_libc_provides_ssp=yes \
    157       1.16       mrg 			gdb_cv_printf_has_long_double=yes \
    158       1.16       mrg 			gdb_cv_printf_has_long_long=yes \
    159       1.44       mrg 			gdb_cv_scanf_has_long_double=yes \
    160       1.44       mrg 			gcc_cv_as_sparc_gotdata_op=no
    161       1.16       mrg 
    162       1.38       mrg CXXADDFLAGS=	--sysroot=${DESTDIR}
    163       1.39       mrg CCADDFLAGS=	--sysroot=${DESTDIR} -L${DESTDIR}/lib -L${DESTDIR}/usr/lib -B${DESTDIR}/usr/lib/ -I${.OBJDIR}/.native/gcc/include
    164        1.1       mrg 
    165       1.55       mrg # NEWCONFIGDIR can be set to a read-write location of the source tree
    166       1.55       mrg # in case the version being used is not.
    167        1.1       mrg NEWCONFIGDIR?=	${.CURDIR}/../..
    168        1.1       mrg 
    169      1.100       mrg GCC_MACHINE_ARCH=	${MACHINE_ARCH:S/earmv5/earm/}
    170      1.100       mrg 
    171        1.1       mrg bootstrap-libgcc: .configure_done
    172        1.1       mrg 	@echo 'Creating files needed for libgcc by a native bootstrap build.'
    173       1.63  christos 	(cd ${.OBJDIR}/build && ${BUILD_COMMAND} configure-target-libgcc)
    174      1.100       mrg 	@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} libgcc-bootstrap \
    175       1.56       mrg 		${.OBJDIR}/build ${NEWCONFIGDIR} ${NETBSDSRCDIR} \
    176      1.100       mrg 		${MACHINE_GNU_PLATFORM} ${GCC_MACHINE_ARCH} ${DESTDIR} ${TOOLDIR}
    177       1.63  christos 
    178       1.63  christos bootstrap-libstdc++: .configure_done
    179       1.63  christos 	@echo 'Creating files needed for libstdc++ by a native bootstrap build.'
    180       1.63  christos 	(cd ${.OBJDIR}/build && ${BUILD_COMMAND} configure-target-libstdc++-v3)
    181       1.63  christos 	@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} libstdc++-bootstrap \
    182       1.63  christos 		${.OBJDIR}/build ${NEWCONFIGDIR} ${NETBSDSRCDIR} \
    183      1.100       mrg 		${MACHINE_GNU_PLATFORM} ${GCC_MACHINE_ARCH} ${DESTDIR} ${TOOLDIR}
    184        1.1       mrg 
    185        1.1       mrg native-gcc: .native/.configure_done
    186        1.1       mrg 	@echo 'Extracting GNU GCC configury for a native toolchain.'
    187      1.100       mrg 	@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} gcc \
    188       1.56       mrg 		${.OBJDIR}/.native ${NEWCONFIGDIR} ${NETBSDSRCDIR} \
    189      1.100       mrg 		${MACHINE_GNU_PLATFORM} ${GCC_MACHINE_ARCH} ${DESTDIR} ${TOOLDIR}
    190        1.1       mrg 
    191       1.37       mrg NATIVE_CONFIGURE_ARGS=	${COMMON_CONFIGURE_ARGS}
    192      1.108  christos .include "lgpl3.mk"
    193       1.48     joerg 
    194       1.70       mrg .if ${MACHINE_ARCH} != "vax"
    195       1.48     joerg NATIVE_CONFIGURE_ARGS+= --enable-tls
    196       1.70       mrg .endif
    197       1.70       mrg .if !empty(MACHINE_ARCH:Mearm*)
    198       1.63  christos NATIVE_CONFIGURE_ARGS+=	--enable-initfini-array
    199       1.37       mrg .endif
    200       1.70       mrg 
    201       1.73       mrg .if ${MACHINE_ARCH} == "m68000"
    202       1.73       mrg NATIVE_CONFIGURE_ARGS+= --disable-shared
    203       1.73       mrg .endif
    204       1.73       mrg 
    205       1.78       mrg .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64"
    206       1.78       mrg EXTRA_GCC_TARGETS=	i386-builtin-types.inc
    207       1.78       mrg .endif
    208       1.96  christos .if !empty(MACHINE_ARCH:M*arm*)
    209       1.96  christos EXTRA_GCC_TARGETS=	arm-cpu-data.h arm-cpu-cdata.h
    210       1.96  christos .endif
    211       1.78       mrg 
    212       1.37       mrg NATIVE_CONFIGURE_ARGS+=	\
    213       1.31  drochner 			--disable-multilib \
    214       1.41       mrg 			--disable-libstdcxx-pch \
    215       1.66       mrg 			--build=`${GCCDIST}/config.guess` \
    216       1.63  christos 			--host=${MACHINE_GNU_PLATFORM} \
    217       1.63  christos 			--with-sysroot=${DESTDIR}
    218       1.63  christos MKENV_BUILD_MAKE=cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE}
    219       1.31  drochner 
    220        1.1       mrg .native/.configure_done: ${_GNU_CFGSRC} ${.CURDIR}/Makefile
    221       1.89       mrg 	mkdir .native .native/gcc .native/gcc/include 2>/dev/null || true
    222       1.89       mrg 	# If this fails, gthreads won't be configured initially, but reconfig will.
    223       1.90       mrg 	cp ${DESTDIR}/usr/include/g++/bits/gthr-default.h .native/gcc/include || true
    224        1.9       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    225       1.16       mrg 		(cd .native && ${MKNATIVE_ENV} \
    226        1.8     lukem 			${HOST_SH} ${GNUHOSTDIST}/configure \
    227       1.31  drochner 			${NATIVE_CONFIGURE_ARGS}) && \
    228       1.63  christos 		(${MKENV_BUILD_MAKE} all-build-libiberty) && \
    229       1.75       mrg 		((${MKENV_BUILD_MAKE} all-libcpp) && \
    230       1.63  christos 		 (${MKENV_BUILD_MAKE} all-libbacktrace) && \
    231       1.63  christos 		 (${MKENV_BUILD_MAKE} all-libdecnumber) || true)
    232       1.63  christos 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    233       1.63  christos 		(${MKENV_BUILD_MAKE} configure-gcc configure-libcpp) && \
    234       1.63  christos 		(${MKENV_BUILD_MAKE} configure-libiberty) && \
    235       1.63  christos 		(${MKENV_BUILD_MAKE} configure-libdecnumber)
    236       1.16       mrg 	# edit Makefile so that maybe-all-gcc does not depend on all-gcc any more.
    237       1.16       mrg 		(cd .native && mv Makefile Makefile.config && \
    238       1.30       apb 			${TOOL_SED} -e 's/\(maybe-all-gcc:\) all-gcc/\1/' \
    239       1.42       mrg 				    -e 's/\(maybe-all-target-libgcc:\) all-target-libgcc/\1/' \
    240       1.41       mrg 				< Makefile.config > Makefile)
    241       1.41       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    242      1.107       mrg 		(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e tree-check.h config.h multilib.h ${EXTRA_FILES})
    243       1.16       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    244       1.84       mrg 		(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e libgcc.mvars tconfig.h); \
    245       1.42       mrg 		(cd .native && touch gcc/cc1obj gcc/cc1plus gcc/f771 gcc/libgcc.a gcc/libgcc_s.so)
    246      1.101       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    247      1.102       mrg 		(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e s-omp-device-properties-h)
    248       1.79       mrg .if defined(EXTRA_GCC_TARGETS)
    249       1.79       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    250       1.78       mrg 		(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e ${EXTRA_GCC_TARGETS})
    251       1.78       mrg .endif
    252       1.42       mrg .for _lib in ${MKNATIVE_CONFIG_TARGET_LIBS}
    253       1.39       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    254       1.42       mrg 		(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} \
    255       1.42       mrg 			${_lib} \
    256        1.1       mrg 			ALL_GCC_C= ALL_GCC_CXX= \
    257        1.1       mrg 			CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \
    258       1.20       mrg 			CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
    259       1.22       mrg 			RAW_CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
    260       1.20       mrg 			CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \
    261       1.20       mrg 			ac_cv_prog_cc_cross=yes) && \
    262       1.16       mrg 	true
    263       1.42       mrg .endfor
    264       1.16       mrg 	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
    265        1.1       mrg 		(cd .native/${MACHINE_GNU_PLATFORM}/libstdc++-v3/include && \
    266       1.20       mrg 			${MKNATIVE_ENV} ${BUILD_MAKE} \
    267       1.20       mrg 			CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \
    268       1.20       mrg 			CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q}' '${CXXADDFLAGS:Q} \
    269       1.20       mrg 			CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \
    270       1.20       mrg 			all-local) && \
    271       1.16       mrg 	true
    272        1.1       mrg 	@touch $@
    273        1.1       mrg 
    274       1.97       mrg .if !defined(PREV_GCC)
    275       1.97       mrg .  if exists(PREV_GCC)
    276       1.97       mrg PREV_GCC!=	cat PREV_GCC
    277       1.97       mrg .  else
    278       1.97       mrg PREV_GCC=
    279       1.97       mrg .  endif
    280       1.97       mrg .endif
    281       1.97       mrg 
    282       1.97       mrg CLEANFILES+=	PREV_GCC
    283       1.97       mrg 
    284      1.110       mrg # Include the local NetBSD GCC version so that bumps to it trigger rebuilds.
    285      1.110       mrg NETBSD_GCC_VERSION_NOSPACE= ${NETBSD_GCC_VERSION:S/ /-/gW}
    286      1.110       mrg 
    287       1.97       mrg realall realdepend: .MAKE
    288      1.110       mrg .if !empty(PREV_GCC) && "${PREV_GCC}" != "${EXTERNAL_GCC_SUBDIR}-${HAVE_GCC}-${NETBSD_GCC_VERSION_NOSPACE}"
    289       1.97       mrg 	@echo "*** WARNING: GCC has changed version?"
    290       1.97       mrg 	@echo "*** PREV_GCC '${PREV_GCC}'"
    291      1.110       mrg 	@echo "*** NETBSD_GCC_VERSION_NOSPACE '${NETBSD_GCC_VERSION_NOSPACE}'"
    292      1.110       mrg 	@echo "***     !=  EXTERNAL_GCC_SUBDIR-HAVE_GCC-NETBSD_GCC_VERSION_NOSPACE:"
    293      1.110       mrg 	@echo "***     !=  '${EXTERNAL_GCC_SUBDIR}-${HAVE_GCC}-${NETBSD_GCC_VERSION_NOSPACE}'"
    294       1.97       mrg 	@echo "*** Cleaning mis-matched tools/gcc"
    295       1.97       mrg 	rm -f PREV_GCC
    296       1.97       mrg 	(cd ${.CURDIR} && ${MAKE} cleandir)
    297       1.97       mrg .endif
    298      1.110       mrg 	echo ${EXTERNAL_GCC_SUBDIR}-${HAVE_GCC}-${NETBSD_GCC_VERSION_NOSPACE} >PREV_GCC
    299       1.97       mrg 
    300        1.1       mrg clean: clean.native
    301        1.1       mrg clean.native:
    302        1.1       mrg 	-rm -r -f .native
    303