Makefile revision 1.16
1#	$NetBSD: Makefile,v 1.16 2006/05/12 02:12:37 mrg Exp $
2
3.include <bsd.own.mk>
4
5GCC_LANGUAGES=c c++ objc
6.if ${HAVE_GCC} == 3
7MODULE=			gcc
8MKNATIVE_TARGET=	gcc3
9GCC_LANGUAGES+=f77
10MKNATIVE_CONFIG_TARGET_LIBS=	configure-target-libf2c
11BINENV=
12.else	# gcc4
13MODULE=			gcc4
14MKNATIVE_TARGET=	gcc4
15MKNATIVE_CONFIG_TARGET_LIBS=
16BINENV=		/usr/bin/env -i
17.endif
18
19CONFIGURE_ARGS=	--target=${MACHINE_GNU_PLATFORM} --disable-nls \
20		--enable-long-long \
21		--disable-multilib \
22		--enable-threads \
23		--program-transform-name="s,^,${MACHINE_GNU_PLATFORM}-," \
24		--enable-languages="${GCC_LANGUAGES}"
25
26MAKE_ARGS=	MACHINE= MAKEINFO=${TOOL_MAKEINFO:Q} \
27		LIBGCC= LIBGCC1= LIBGCC1_TEST= LIBGCC2= INSTALL_LIBGCC= \
28		EXTRA_PARTS= CPPFLAGS=-DNETBSD_TOOLS
29
30MKNATIVE_ENV=	${BINENV} ${CONFIGURE_ENV:NC*:NLD*} \
31			CC_FOR_BUILD=${HOST_CC:Q} \
32			CC=${CC:Q}' '${CCADDFLAGS:Q} \
33			CXX=${CXX:Q}' '${CCADDFLAGS:Q} \
34			CPP=${CPP:Q}' '-I${DESTDIR}/usr/include \
35			CFLAGS= CPPFLAGS= CXXFLAGS= LDFLAGS= \
36			AS=${AS:Q} LD=${LD:Q} NM=${NM:Q} OBJDUMP=${OBJDUMP:Q} \
37			MSGFMT=${TOOLDIR}/bin/${_TOOL_PREFIX}msgfmt \
38			XGETTEXT=${TOOLDIR}/bin/${_TOOL_PREFIX}xgettext \
39			LIBS=-lintl \
40			ac_cv_prog_cc_cross=yes \
41			ac_cv_func_strcoll_works=yes \
42			gcc_cv_func_printf_ptr=yes \
43			gdb_cv_printf_has_long_double=yes \
44			gdb_cv_printf_has_long_long=yes \
45			gdb_cv_scanf_has_long_double=yes
46
47ALL_TARGET=	all-gcc
48INSTALL_TARGET=	install-gcc
49
50.if ${HAVE_GCC} == 3
51.include "${.CURDIR}/../Makefile.gnuhost"
52BUILD_MAKE=${MAKE}
53.else
54.include "${.CURDIR}/../Makefile.gmakehost"
55BUILD_MAKE=${TOOL_GMAKE}
56.endif
57
58#CCADDFLAGS=	${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include ${CPPFLAG_ISYSTEMXX} ${DESTDIR}/usr/include/g++ -L${DESTDIR}/lib -L${DESTDIR}/usr/lib -B${DESTDIR}/usr/lib/
59CCADDFLAGS=	${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include -L${DESTDIR}/lib -L${DESTDIR}/usr/lib -B${DESTDIR}/usr/lib/
60
61NEWCONFIGDIR?=	${.CURDIR}/../..
62MKNATIVE?=	${.CURDIR}/mknative-gcc
63
64bootstrap-libgcc: .configure_done
65	@echo 'Creating files needed for libgcc by a native bootstrap build.'
66	@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} lib${MODULE} \
67		${.OBJDIR}/build ${NEWCONFIGDIR} ${MACHINE_GNU_PLATFORM}
68
69native-gcc: .native/.configure_done
70	@echo 'Extracting GNU GCC configury for a native toolchain.'
71	@MAKE=${BUILD_MAKE:Q} ${HOST_SH} ${MKNATIVE} ${MKNATIVE_TARGET} \
72		${.OBJDIR}/.native ${NEWCONFIGDIR} ${MACHINE_GNU_PLATFORM}
73
74.native/.configure_done: ${_GNU_CFGSRC} ${.CURDIR}/Makefile
75	mkdir .native 2>/dev/null || true
76	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
77		(cd .native && ${MKNATIVE_ENV} \
78			${HOST_SH} ${GNUHOSTDIST}/configure \
79			--enable-long-long \
80			--disable-multilib \
81			--enable-threads \
82			--disable-symvers \
83			--enable-newlib \
84			--build=`${.CURDIR}/../../gnu/dist/${MODULE}/config.guess` \
85			--host=${MACHINE_GNU_PLATFORM} \
86			--target=${MACHINE_GNU_PLATFORM}) && \
87		(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} configure-libiberty) && \
88		(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} all-build-libiberty) && \
89		(cd .native && ${MKNATIVE_ENV} ${BUILD_MAKE} configure-gcc configure-libcpp)
90	# edit Makefile so that maybe-all-gcc does not depend on all-gcc any more.
91.if ${HAVE_GCC} == 4
92		(cd .native && mv Makefile Makefile.config && \
93			sed -e 's/\(maybe-all-gcc:\) all-gcc/\1/' < Makefile.config > Makefile)
94.endif
95	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
96		(cd .native/gcc && ${MKNATIVE_ENV} ${BUILD_MAKE} -e tree-check.h config.h) && \
97	true
98	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
99		(cd .native && touch gcc/cc1obj gcc/cc1plus gcc/f771 gcc/libgcc.a gcc/libgcc_s.so && \
100			${MKNATIVE_ENV} ${BUILD_MAKE} configure-target-libiberty \
101			${MKNATIVE_CONFIG_TARGET_LIBS} configure-target-libobjc \
102			configure-target-libstdc++-v3 \
103			ALL_GCC_C= ALL_GCC_CXX= \
104			CC_FOR_TARGET=${CC:Q}' '${CCADDFLAGS:Q} \
105			CXX_FOR_TARGET=${CXX:Q}' '${CCADDFLAGS:Q} \
106			ac_cv_prog_cc_cross=yes \
107			CPP=${CPP:Q}' '-I${DESTDIR}/usr/include) && \
108	true
109	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
110		(cd .native/${MACHINE_GNU_PLATFORM}/libstdc++-v3/include && \
111			${MKNATIVE_ENV} ${BUILD_MAKE} all-local) && \
112	true
113	PATH=${TOOLDIR}/bin:$$PATH; export PATH; \
114		(cd .native/${MACHINE_GNU_PLATFORM}/libiberty && \
115			${MKNATIVE_ENV} ${BUILD_MAKE} needed-list)
116	@touch $@
117
118clean: clean.native
119clean.native:
120	-rm -r -f .native
121