xref: /openbsd-src/gnu/usr.bin/gcc/Makefile.bsd-wrapper (revision bdfcf93e4400457de37c6fd07ecee71677f6f18e)
1#	$OpenBSD: Makefile.bsd-wrapper,v 1.69 2024/03/29 06:52:50 miod Exp $
2
3MAN=		gcc.1 cpp.1 gcov.1
4
5BINDIR=/usr/bin
6.if defined(BOOTSTRAP)
7LANGUAGES=--enable-languages=c
8.else
9LANGUAGES=--enable-languages='c,c++'
10.endif
11V=3.3.6
12
13LIBIBERTY_INCLUDES=${.CURDIR}/../../lib/libiberty/include
14GNUCFLAGS=	${CFLAGS} ${COPTS} -DOPENBSD_NATIVE \
15		-I${LIBIBERTY_INCLUDES}
16
17MAKE_FLAGS= 	CFLAGS="${GNUCFLAGS}" \
18		CC="${CC}" LDFLAGS="${LDSTATIC}" \
19		DEMANGLER_PROG= \
20		DEMANGLE_H= \
21		LIBIBERTY_INCLUDES=${LIBIBERTY_INCLUDES} \
22		LIBGCC2_INCLUDES=-I${LIBIBERTY_INCLUDES} \
23		BUILD_LIBIBERTY=-liberty \
24		LIBIBERTY=-liberty \
25		HOST_LIBDEPS= \
26		LIBDEPS= \
27		build_infodir=.
28
29GXX_INCDIR=	/usr/include/g++
30CLEANFILES=	.gdbinit */.gdbinit *.info* \
31		c-parse.c c-parse.h c-parse.y cexp.c cp/parse.c cp/parse.h \
32		target_path \
33		print-rtl1.c gengtype-lex.c gengtype-yacc.c gengtype-yacc.h \
34		genrtl.c genrtl.h fixinc.sh fixinc/Makefile \
35		po/Makefile  po/Makefile.in  po/POTFILES
36
37GCCARCH=	${MACHINE_ARCH}-unknown-openbsd${OSREV}
38GCCINC=	/usr/lib/gcc-lib/${GCCARCH}/$V/include
39
40# cross-compilation
41.if defined(CROSS_HOST) && defined(TARGET_ARCH) && defined(CROSSDIR)
42CONFIGTARGET=	--build=${CROSS_HOST}-unknown-openbsd${OSREV} \
43    --target=${TARGET_ARCH}-unknown-openbsd${OSREV}
44
45CONFIGPREFIX=	${CROSSDIR}/usr
46PATH=		/bin:/usr/bin:/sbin:/usr/sbin:${CROSSDIR}/usr/bin
47GXX_INCDIR=	${CROSSDIR}/usr/include/g++
48GNUCFLAGS=	${CFLAGS} ${COPTS} -DOPENBSD_CROSS -I${LIBIBERTY_INCLUDES}
49HOSTCFLAGS=	${CFLAGS} ${COPTS} -DOPENBSD_CROSS -I${LIBIBERTY_INCLUDES}
50HOST_CC=cc
51MAKE_FLAGS+= 	CFLAGS_FOR_BUILD="${HOSTCFLAGS}" HOST_CC=cc
52.elif defined(TARGET_ARCH) && defined(CROSSDIR)
53CONFIGTARGET=	--target=${TARGET_ARCH}-unknown-openbsd${OSREV}
54CONFIGPREFIX=	${CROSSDIR}/usr
55MAKE_FLAGS+=	GCC_FOR_TARGET="./xgcc -B./ -I${CROSSDIR}/usr/include"
56PATH=		/bin:/usr/bin:/sbin:/usr/sbin:${CROSSDIR}/usr/bin
57GXX_INCDIR=	${CROSSDIR}/usr/include/g++
58GNUCFLAGS=	${CFLAGS} ${COPTS} -DOPENBSD_CROSS -I${LIBIBERTY_INCLUDES}
59.else
60CONFIGTARGET=
61CONFIGPREFIX=	/usr
62PATH=		/bin:/usr/bin:/sbin:/usr/sbin
63.endif
64
65all:	config.status
66	exec env PATH="${PATH}" ${MAKE} ${MAKE_FLAGS} all doc proto
67
68tconfig.h: config.status
69	exec ${MAKE} ${MAKE_FLAGS} tconfig.h
70
71tree-check.h: config.status
72	exec ${MAKE} ${MAKE_FLAGS} $@
73
74
75.FORCE:	.IGNORE
76
77.include <bsd.own.mk>
78
79.ifdef GLOBAL_AUTOCONF_CACHE
80CF=	--cache-file=${GLOBAL_AUTOCONF_CACHE}
81.else
82CF=
83.endif
84
85config.status: gcc/Makefile.in gcc/configure gcc/c-parse.in
86	PATH="${PATH}" \
87	INSTALL_PROGRAM="${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP}" \
88	CPPFLAGS=-I${LIBIBERTY_INCLUDES} \
89	MAKEINFO='makeinfo --no-split' \
90	/bin/sh ${.CURDIR}/gcc/configure --with-gnu-as --with-gnu-ld \
91		--prefix=${CONFIGPREFIX} --mandir='$$(prefix)/share/man' \
92		--with-local-prefix=/usr ${CF} \
93		${LANGUAGES} --enable-cpp --disable-nls \
94		--with-gxx-include-dir=${GXX_INCDIR} \
95		--enable-__cxa_atexit \
96		--enable-threads=posix \
97		${CONFIGTARGET} ${GCCARCH} && touch config.status
98
99.ifdef NOMAN
100maninstall:
101	@echo NOMAN is set
102.endif
103
104# XXX INSTALL_TARGET should be install-normal, more or less
105# the only reason is not so is because our man handling is special
106# (pre-formatted) and also because of cpp, that we install by hand
107# elsewhere, until we get rid of that old `compatibility' script.
108
109target_path: config.status
110	__target=`sed -n '/^target=/s/target=//p' Makefile`; \
111	__version=`sed -n '/^gcc_version=/s/gcc_version=//p' Makefile`; \
112	echo /usr/lib/gcc-lib/$$__target/$$__version >target_path
113
114install:	maninstall target_path
115	${MAKE} ${MAKE_FLAGS} \
116		prefix=/usr \
117		INSTALL_PROGRAM="${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP}" \
118		GXX_TARGET_INSTALL_NAME=${.OBJDIR}/dummy1 \
119		CXX_TARGET_INSTALL_NAME=${.OBJDIR}/dummy2 \
120		infodir=/usr/share/info \
121		tooldir=/tmp assertdir=/tmp \
122		bindir=$(BINDIR) \
123		install-common install-multilib \
124		install-info intl.install \
125		lang.install-normal
126	chown -R ${BINOWN}:${BINGRP} ${DESTDIR}/usr/lib/gcc-lib
127	chmod -R a+rX ${DESTDIR}/usr/lib/gcc-lib
128	mkdir -p ${DESTDIR}/usr/libexec ${DESTDIR}/usr/bin
129#	if [ -e ${DESTDIR}/usr/lib/libf2c.a ]; then \
130#		chown ${BINOWN}:${BINGRP} ${DESTDIR}/usr/lib/libf2c.a; \
131#		chmod 444 ${DESTDIR}/usr/lib/libf2c.a; \
132#	fi
133	if [ -e ${DESTDIR}/usr/include/f2c.h ]; then \
134		chown ${BINOWN}:${BINGRP} ${DESTDIR}/usr/include/f2c.h; \
135		chmod 444 ${DESTDIR}/usr/include/f2c.h; \
136	fi
137	${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} -m 755 cpp \
138	   ${DESTDIR}/usr/libexec/cpp
139	${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} -m 755 xgcc \
140	   ${DESTDIR}/usr/bin/gcc
141	ln -f ${DESTDIR}/usr/bin/gcc ${DESTDIR}/usr/bin/cc
142
143clean cleandir:
144	-@if [ -e Makefile ]; then ${MAKE} distclean; fi
145	-rm -f ${CLEANFILES}
146
147gcc.1 cpp.1 gcov.1: config.status
148	exec ${MAKE} ${MAKE_FLAGS} generated-manpages
149
150FILES= ${.CURDIR}/gcc/unwind.h
151.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
152FILES+=${.CURDIR}/gcc/config/i386/mmintrin.h \
153	${.CURDIR}/gcc/config/i386/xmmintrin.h \
154	${.CURDIR}/gcc/config/i386/emmintrin.h \
155	${.CURDIR}/gcc/config/i386/pmmintrin.h
156.elif ${MACHINE_ARCH} == "powerpc"
157FILES+=${.CURDIR}/gcc/config/rs6000/altivec.h
158.endif
159
160includes:
161	mkdir -p ${DESTDIR}${GCCINC}
162	for i in ${FILES}; do \
163		j=`basename $$i`; \
164		cmp -s $$i ${DESTDIR}${GCCINC}/$$j || \
165		    ${INSTALL} ${INSTALL_COPY} -m 444 $$i ${DESTDIR}${GCCINC}/$$j; \
166		ln -sf ${GCCINC}/$$j ${DESTDIR}/usr/include/$$j; \
167	done
168
169tags:
170	# Nothing here so far...
171
172.include <bsd.obj.mk>
173.include <bsd.subdir.mk>
174.ifndef NOMAN
175.include <bsd.man.mk>
176.endif
177