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