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