[BACK]Return to Makefile CVS log [TXT][DIR] Up to [local] / src / include

File: [local] / src / include / Makefile (download)

Revision 1.219, Mon Apr 17 15:53:21 2017 UTC (7 years, 1 month ago) by kettenis
Branch: MAIN
CVS Tags: OPENBSD_6_2_BASE, OPENBSD_6_2
Changes since 1.218: +6 -4 lines

Change build infrastructure to allow building both gcc and clang.  This
doesn't actually flip the switch yet, so aarch64 continues to be the only
architecture for which we build clang.

ok jsg@, deraadt@

#	$OpenBSD: Makefile,v 1.219 2017/04/17 15:53:21 kettenis Exp $
#	$NetBSD: Makefile,v 1.59 1996/05/15 21:36:43 jtc Exp $

#	@(#)Makefile	5.45.1.1 (Berkeley) 5/6/91

# The ``rm -rf''s used below are safe because rm doesn't follow symbolic
# links.


.include <bsd.own.mk>

FILES=	a.out.h ar.h asr.h assert.h bitstring.h blf.h bsd_auth.h \
	complex.h cpio.h ctype.h curses.h db.h dirent.h disktab.h \
	dlfcn.h elf_abi.h err.h errno.h fenv.h float.h fnmatch.h fstab.h fts.h \
	ftw.h getopt.h glob.h grp.h icdb.h ieeefp.h ifaddrs.h inttypes.h \
	iso646.h kvm.h langinfo.h libgen.h limits.h link.h link_elf.h \
	locale.h login_cap.h math.h md5.h memory.h ndbm.h netdb.h netgroup.h \
	nlist.h nl_types.h paths.h poll.h pwd.h ranlib.h readpassphrase.h \
	regex.h resolv.h rmd160.h search.h setjmp.h sha1.h sha2.h signal.h \
	siphash.h sndio.h spawn.h stdbool.h stddef.h stdio.h stdlib.h \
	string.h strings.h sysexits.h tar.h tgmath.h tib.h time.h \
	ttyent.h unistd.h utime.h utmp.h uuid.h vis.h wchar.h wctype.h

MFILES=	frame.h
LFILES=	endian.h fcntl.h syslog.h termios.h stdarg.h stdint.h varargs.h

DIRS=	arpa protocols rpc rpcsvc
LDIRS=	crypto ddb dev isofs miscfs msdosfs net netinet netinet6 \
	netmpls net80211 nfs ntfs scsi sys ufs uvm

# Places that need a prerequisite target met before includes
PRDIRS=	../lib/libcrypto ../lib/librpcsvc

# Directories with an includes target
RDIRS=	../lib/libcurses ../lib/libedit \
	../lib/libevent ../lib/libexpat ../lib/libform \
	../lib/libfuse ../lib/libkeynote ../lib/libmenu \
	../lib/libossaudio ../lib/libpanel ../lib/libpcap \
	../lib/libradius ../lib/librthread \
	../lib/libskey ../lib/libssl  ../lib/libtls \
	../lib/libusbhid ../lib/libutil ../lib/libz \
	../usr.bin/lex ../gnu/lib/libreadline \
	../sys/arch/${MACHINE}

.if ${BUILD_GCC3:L} == "yes"
RDIRS+= ../gnu/usr.bin/gcc ../gnu/lib/libobjc
PRDIRS+= ../gnu/lib/libstdc++
.endif
.if ${BUILD_GCC4:L} == "yes"
RDIRS+= ../gnu/usr.bin/cc/libobjc
PRDIRS+= ../gnu/lib/libstdc++-v3 ../gnu/usr.bin/cc/include
.endif
.if ${BUILD_CLANG:L} == "yes"
RDIRS+= ../lib/libcxxabi ../lib/libcxx
.endif

# prereq implies includes
RDIRS += ${PRDIRS}

NOOBJ=	noobj

# Change SYS_INCLUDE in bsd.own.mk to "symlinks" if you don't want copies
SYS_INCLUDE?=	copies

RUN_MAKE = if test -f Makefile.bsd-wrapper; then ${MAKE} -f Makefile.bsd-wrapper $@; else ${MAKE} $@; fi

prereq:
	@for i in ${PRDIRS}; do \
		echo preparing in ${.CURDIR}/$$i; \
		cd ${.CURDIR}/$$i && ${RUN_MAKE}; \
	done

includes:
	@echo installing ${FILES}
	@for i in ${FILES}; do \
		cmp -s $$i ${DESTDIR}/usr/include/$$i || \
		    ${INSTALL} ${INSTALL_COPY} -m 444 $$i ${DESTDIR}/usr/include/$$i; \
	done
	@echo installing ${DIRS}
	@for i in ${DIRS}; do \
		${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
			${DESTDIR}/usr/include/$$i; \
		cd ${.CURDIR}/$$i && for j in *.[ih]; do \
			cmp -s $$j ${DESTDIR}/usr/include/$$i/$$j || \
			${INSTALL} ${INSTALL_COPY} -m 444 $$j ${DESTDIR}/usr/include/$$i/$$j; \
		done; \
	done
	@echo installing ${LFILES}
	@for i in ${LFILES}; do \
		rm -f ${DESTDIR}/usr/include/$$i && \
		ln -s sys/$$i ${DESTDIR}/usr/include/$$i; \
	done
	@echo installing ${MFILES}
	@for i in ${MFILES}; do \
		rm -f ${DESTDIR}/usr/include/$$i && \
		ln -s machine/$$i ${DESTDIR}/usr/include/$$i; \
	done
	@for i in ${RDIRS}; do \
		echo installing in ${.CURDIR}/$$i; \
		cd ${.CURDIR}/$$i && ${RUN_MAKE}; \
	done
	chown -RP ${BINOWN}:${BINGRP} ${DESTDIR}/usr/include
	find ${DESTDIR}/usr/include -type f -print0 | \
		xargs -0r chmod a=r
	find ${DESTDIR}/usr/include \( -type d -o -type l \) -print0 | \
		xargs -0r chmod -h u=rwx,go=rx

copies:
	@echo copies: ${LDIRS}
	@for i in ${LDIRS}; do \
		rm -rf ${DESTDIR}/usr/include/$$i && \
		${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
			${DESTDIR}/usr/include/$$i ; \
	done
	cd ../sys; \
	pax -rw -pa -L \
	    `find ${LDIRS} -follow -type f -name '*.h' '!' \
	    '(' -path 'dev/microcode/*' -or -path 'dev/pci/drm/*' ')' \
	    -print` ${DESTDIR}/usr/include
	cd ${DESTDIR}/usr/include && rm -rf ${MACHINE} ${MACHINE_CPU} machine
	${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
		${DESTDIR}/usr/include/${MACHINE}
	pax -rw -pa -s "|\.\./sys/arch/${MACHINE}/include||" \
	    ../sys/arch/${MACHINE}/include/*.h \
	    ${DESTDIR}/usr/include/${MACHINE}
	if test ${MACHINE} != ${MACHINE_CPU} -a \
	    -d ../sys/arch/${MACHINE_CPU}/include; then \
		${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \
	    	    ${DESTDIR}/usr/include/${MACHINE_CPU}; \
		pax -rw -pa -s "|\.\./sys/arch/${MACHINE_CPU}/include||" \
		    ../sys/arch/${MACHINE_CPU}/include/*.h \
		    ${DESTDIR}/usr/include/${MACHINE_CPU}; \
	fi
	ln -sf ${MACHINE} ${DESTDIR}/usr/include/machine; \

symlinks:
	@echo symlinks: ${LDIRS}
	@for i in ${LDIRS}; do \
		rm -rf ${DESTDIR}/usr/include/$$i && \
		ln -s /sys/$$i ${DESTDIR}/usr/include/$$i; \
	done
	cd ${DESTDIR}/usr/include && rm -rf ${MACHINE} ${MACHINE_CPU} machine
	ln -s /sys/arch/${MACHINE}/include ${DESTDIR}/usr/include/${MACHINE}
	if test ${MACHINE} != ${MACHINE_CPU} -a \
	    -d ../sys/arch/${MACHINE_CPU}/include ; then \
		ln -s /sys/arch/${MACHINE_CPU}/include \
		    ${DESTDIR}/usr/include/${MACHINE_CPU} ; \
	fi
	ln -sf ${MACHINE} ${DESTDIR}/usr/include/machine

includes: ${SYS_INCLUDE}

.PHONY: prereq includes copies symlink
.include <bsd.prog.mk>