diff --git a/include/Makefile b/include/Makefile index 45ee3caa8bee..7ed6b4150118 100644 --- a/include/Makefile +++ b/include/Makefile @@ -2,6 +2,9 @@ # $FreeBSD$ # # Doing a make install builds /usr/include +# +# The ``rm -rf''s used below are safe because rm doesn't follow symbolic +# links. CLEANFILES= osreldate.h version vers.c SUBDIR= rpcsvc @@ -32,14 +35,24 @@ MFILES= float.h floatingpoint.h stdarg.h varargs.h # posix4/aio.h conflicts with dysons and isn't installed: PFILES= mqueue.h sched.h semaphore.h # aio.h -SFILES= joystick.h soundcard.h +# Only for default SHARED=copies case +SFILES= soundcard.h joystick.h LFILES= aio.h errno.h fcntl.h inttypes.h linker_set.h poll.h syslog.h \ termios.h ucontext.h -LDIRS= cam cam/scsi isofs/cd9660 msdosfs net netatalk netatm netgraph \ - netinet netinet6 netipx netkey netncp netns nfs ntfs nwfs pccard \ - posix4 sys ufs/ffs ufs/mfs ufs/ufs vm +LDIRS= cam msdosfs net netatalk netatm netgraph netinet netinet6 \ + netipx netkey netncp netns nfs ntfs nwfs pccard posix4 sys vm + +LNOHEADERDIRS= isofs ufs +LSUBDIRS= isofs/cd9660 ufs/ffs ufs/mfs ufs/ufs cam/scsi + +# Define SHARED to indicate whether you want symbolic links to the system +# source (``symlinks''), or a separate copy (``copies''). ``symlinks'' is +# probably only useful for developers and should be avoided if you do not +# wish to tie your /usr/include and /usr/src together. +#SHARED= symlinks +SHARED?= copies all: osreldate.h @@ -52,31 +65,23 @@ osreldate.h: ${.CURDIR}/../sys/conf/newvers.sh \ echo \#'undef __FreeBSD_version' >> osreldate.h; \ echo \#'define __FreeBSD_version' $$RELDATE >> osreldate.h -beforeinstall: - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${.OBJDIR}/osreldate.h \ - ${DESTDIR}/usr/include +beforeinstall: ${SHARED} + @rm -f ${DESTDIR}/usr/include/timepps.h cd ${.CURDIR}; \ - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${FILES} \ - ${DESTDIR}/usr/include + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ + ${FILES} ${DESTDIR}/usr/include cd ${.CURDIR}/arpa; \ - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${ARPAFILES} \ - ${DESTDIR}/usr/include/arpa + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ + ${ARPAFILES} ${DESTDIR}/usr/include/arpa cd ${.CURDIR}/protocols; \ - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${PROTOFILES} \ - ${DESTDIR}/usr/include/protocols + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ + ${PROTOFILES} ${DESTDIR}/usr/include/protocols cd ${.CURDIR}/rpc; \ - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 ${RPCFILES} \ - ${DESTDIR}/usr/include/rpc -.for i in ${LDIRS} - cd ${.CURDIR}/../sys; \ - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \ - ${DESTDIR}/usr/include/$i -.endfor -.if exists(${.CURDIR}/../sys/${MACHINE_ARCH}/include) - cd ${.CURDIR}/../sys/${MACHINE_ARCH}/include; \ - ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ - ${DESTDIR}/usr/include/machine -.endif + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ + ${RPCFILES} ${DESTDIR}/usr/include/rpc + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \ + ${.OBJDIR}/osreldate.h \ + ${DESTDIR}/usr/include .for i in ${LFILES} ln -sf sys/$i ${DESTDIR}/usr/include/$i .endfor @@ -86,8 +91,36 @@ beforeinstall: .for i in ${PFILES} ln -sf posix4/$i ${DESTDIR}/usr/include/$i .endfor + +copies: +.for i in ${LDIRS} ${LNOHEADERDIRS} machine + if [ -h ${DESTDIR}/usr/include/$i ]; then \ + rm -f ${DESTDIR}/usr/include/$i; \ + fi +.endfor + mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.include.dist \ + -p ${DESTDIR}/usr/include +.for i in ${LDIRS} ${LSUBDIRS} + cd ${.CURDIR}/../sys; \ + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \ + ${DESTDIR}/usr/include/$i +.endfor +.if exists(${.CURDIR}/../sys/${MACHINE_ARCH}/include) + cd ${.CURDIR}/../sys/${MACHINE_ARCH}/include; \ + ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ + ${DESTDIR}/usr/include/machine +.endif .for i in ${SFILES} ln -sf ../sys/$i ${DESTDIR}/usr/include/machine/$i .endfor +symlinks: + @${ECHO} "Setting up symlinks to kernel source tree..." +.for i in ${LDIRS} ${LNOHEADERDIRS} + rm -rf ${DESTDIR}/usr/include/$i + ln -s ../../sys/$i ${DESTDIR}/usr/include/$i +.endfor + rm -rf ${DESTDIR}/usr/include/machine + ln -s ../../sys/${MACHINE_ARCH}/include ${DESTDIR}/usr/include/machine + .include diff --git a/share/examples/Makefile b/share/examples/Makefile index 1e07279094c2..3591fc648403 100644 --- a/share/examples/Makefile +++ b/share/examples/Makefile @@ -8,10 +8,14 @@ DDIR= ${DESTDIR}/usr/share/examples NOOBJ= noobj +# Define SHARED to indicate whether you want symbolic links to the system +# source (``symlinks''), or a separate copy (``copies''); (latter useful +# in environments where it's not possible to keep /sys publicly readable) +SHARED?= copies + all clean cleandir depend lint tags: -beforeinstall: copies - (cd ${.CURDIR}/../../etc; ${MAKE} etc-examples) +beforeinstall: etc-examples ${SHARED} .for dir in ${DIRS} FILES!= find -L ${dir} \( -name CVS -prune \) -o -type f -print @@ -21,4 +25,14 @@ copies:: .endfor .endfor +.for dir in ${DIRS} +symlinks:: + rm -rf ${DDIR}/${dir}; ln -s ${.CURDIR}/${dir} ${DDIR} +.endfor + +etc-examples: +.if ${SHARED} != "symlinks" + (cd ${.CURDIR}/../../etc; ${MAKE} etc-examples) +.endif + .include