| 1 | # @(#)Makefile 8.2 (Berkeley) 1/4/94 |
| 2 | # $FreeBSD: src/include/Makefile,v 1.109.2.27 2003/01/24 05:12:29 sam Exp $ |
| 3 | # $DragonFly: src/include/Makefile,v 1.38 2007/12/30 20:02:56 hasso Exp $ |
| 4 | # |
| 5 | # Doing a make install builds /usr/include |
| 6 | # |
| 7 | # The ``rm -rf''s used below are safe because rm doesn't follow symbolic |
| 8 | # links. |
| 9 | |
| 10 | CLEANFILES= osreldate.h version vers.c |
| 11 | SUBDIR= arpa protocols rpc rpcsvc |
| 12 | INCS= a.out.h ar.h assert.h bitstring.h complex.h cpio.h ctype.h db.h \ |
| 13 | dirent.h disktab.h \ |
| 14 | dlfcn.h elf.h elf-hints.h err.h fnmatch.h fstab.h \ |
| 15 | fts.h getopt.h glob.h grp.h histedit.h iconv.h ieeefp.h ifaddrs.h \ |
| 16 | iso646.h inttypes.h \ |
| 17 | langinfo.h libgen.h limits.h link.h locale.h malloc.h math.h memory.h \ |
| 18 | mpool.h ndbm.h netdb.h nl_types.h nlist.h objformat.h \ |
| 19 | paths.h pthread.h pthread_np.h pwd.h \ |
| 20 | ranlib.h readpassphrase.h regex.h regexp.h resolv.h re_comp.h rmd160.h \ |
| 21 | search.h setjmp.h sgtty.h \ |
| 22 | signal.h stab.h stdarg.h stdbool.h stddef.h stdint.h stdio.h stdlib.h \ |
| 23 | string.h stringlist.h strings.h struct.h sysexits.h tar.h time.h \ |
| 24 | timers.h ttyent.h unistd.h ulimit.h utime.h utmp.h uuid.h vis.h \ |
| 25 | wchar.h wctype.h |
| 26 | |
| 27 | MHDRS= float.h floatingpoint.h varargs.h |
| 28 | |
| 29 | # Only for default SHARED=copies case |
| 30 | SHDRS= soundcard.h joystick.h |
| 31 | |
| 32 | LHDRS= aio.h errno.h fcntl.h linker_set.h mqueue.h poll.h sched.h \ |
| 33 | semaphore.h syslog.h termios.h ucontext.h |
| 34 | |
| 35 | # directories which also contain header files that need to be copied. |
| 36 | # Other directories, like 'bus' and 'netproto', are created using mtree. |
| 37 | # |
| 38 | # XXX allow these directories to not contain header files. |
| 39 | LDIRS= net netbt netgraph netinet netinet6 sys vm |
| 40 | |
| 41 | # Subdirectories containing header files to copy. In symlink mode |
| 42 | # the subdirectory will be symlinked. Care must be taken to adjust |
| 43 | # LSYMSUBDIRS below to remove subdirectories whos parent directories. |
| 44 | # If you make a mistake, part of your source tree might get overwritten |
| 45 | # when buildworld is run. |
| 46 | # |
| 47 | LSUBDIRS= bus/cam bus/cam/scsi \ |
| 48 | emulation/linux \ |
| 49 | vfs/msdosfs vfs/nfs vfs/ntfs vfs/nwfs \ |
| 50 | vfs/smbfs vfs/udf vfs/ufs vfs/hammer \ |
| 51 | net/vlan net/ipfw net/ip6fw net/dummynet net/sppp net/ip_mroute \ |
| 52 | net/bridge net/tap net/tun net/ppp net/ppp_layer net/sl \ |
| 53 | net/pf net/altq \ |
| 54 | netgraph/UI netgraph/async netgraph/bpf netgraph/bridge \ |
| 55 | netgraph/cisco netgraph/echo netgraph/eiface netgraph/etf \ |
| 56 | netgraph/ether netgraph/fec netgraph/frame_relay netgraph/hole \ |
| 57 | netgraph/iface netgraph/ksocket netgraph/l2tp netgraph/lmi \ |
| 58 | netgraph/mppc netgraph/one2many netgraph/ppp \ |
| 59 | netgraph/pppoe netgraph/pptpgre netgraph/rfc1490 netgraph/socket \ |
| 60 | netgraph/tee netgraph/tty netgraph/vjc \ |
| 61 | bus/cam bus/usb bus/pccard bus/pci bus/isa \ |
| 62 | netproto/atalk netproto/atm netproto/ipsec netproto/ipx \ |
| 63 | netproto/key netproto/natm netproto/ncp netproto/ns netproto/smb \ |
| 64 | netproto/atm/ipatm netproto/atm/sigpvc netproto/atm/spans \ |
| 65 | netproto/atm/uni netproto/802_11 |
| 66 | |
| 67 | LSUBDIRS3= vfs/isofs/cd9660 net/i4b/include \ |
| 68 | dev/misc/lpt dev/netif/wi dev/video/bktr dev/video/meteor |
| 69 | |
| 70 | # For SHARED=symlinks, bus/cam and netproto/atm are symlinks, so cam/scsi |
| 71 | # and netproto/atm/* are taken care of |
| 72 | LSYMSUBDIRS= ${LSUBDIRS:Nbus/cam/scsi:Nnetproto/atm/*:Nnet/*:Nnetgraph/*} |
| 73 | LSYMSUBDIRS3= ${LSUBDIRS3:Nnet/*} |
| 74 | |
| 75 | # For obsolete headers which need to be removed |
| 76 | RMHEADERS= machine/ansi.h sys/inttypes.h |
| 77 | |
| 78 | # Define SHARED to indicate whether you want symbolic links to the system |
| 79 | # source (``symlinks''), or a separate copy (``copies''). ``symlinks'' is |
| 80 | # probably only useful for developers and should be avoided if you do not |
| 81 | # wish to tie your /usr/include and /usr/src together. |
| 82 | #SHARED= symlinks |
| 83 | SHARED?= copies |
| 84 | |
| 85 | INCS+= osreldate.h |
| 86 | |
| 87 | osreldate.h: ${.CURDIR}/../sys/conf/newvers.sh \ |
| 88 | ${.CURDIR}/../sys/sys/param.h |
| 89 | @${ECHO} creating osreldate.h from newvers.sh |
| 90 | setvar PARAMFILE ${.CURDIR}/../sys/sys/param.h; \ |
| 91 | . ${.CURDIR}/../sys/conf/newvers.sh; \ |
| 92 | echo "$$COPYRIGHT" > osreldate.h; \ |
| 93 | echo "#ifdef _KERNEL" >> osreldate.h; \ |
| 94 | echo '#error "osreldate.h must not be used in the kernel, use sys/param.h"' >> osreldate.h; \ |
| 95 | echo "#else" >> osreldate.h; \ |
| 96 | echo "#undef __DragonFly_version" >> osreldate.h; \ |
| 97 | echo "#define __DragonFly_version $$RELDATE" >> osreldate.h; \ |
| 98 | echo "#ifdef __FreeBSD__" >> osreldate.h; \ |
| 99 | echo "#undef __FreeBSD_version" >> osreldate.h; \ |
| 100 | echo "#define __FreeBSD_version 480101" >> osreldate.h; \ |
| 101 | echo "#endif" >> osreldate.h; \ |
| 102 | echo "#endif" >> osreldate.h |
| 103 | |
| 104 | .for i in ${LHDRS} |
| 105 | INCSLINKS+= sys/$i ${INCLUDEDIR}/$i |
| 106 | .endfor |
| 107 | .for i in ${MHDRS} |
| 108 | INCSLINKS+= machine/$i ${INCLUDEDIR}/$i |
| 109 | .endfor |
| 110 | INCSLINKS+= bus/cam ${INCLUDEDIR}/cam |
| 111 | INCSLINKS+= vfs/msdosfs ${INCLUDEDIR}/msdosfs |
| 112 | INCSLINKS+= vfs/isofs ${INCLUDEDIR}/isofs |
| 113 | INCSLINKS+= vfs/mfs ${INCLUDEDIR}/mfs |
| 114 | INCSLINKS+= vfs/nfs ${INCLUDEDIR}/nfs |
| 115 | INCSLINKS+= vfs/ntfs ${INCLUDEDIR}/ntfs |
| 116 | INCSLINKS+= vfs/nwfs ${INCLUDEDIR}/nwfs |
| 117 | INCSLINKS+= vfs ${INCLUDEDIR}/fs |
| 118 | # this is for <ufs/ufs/...> and <ufs/ffs/...> paths used by ports |
| 119 | # It is hopefully a temporary hack until we have environments working. |
| 120 | INCSLINKS+= vfs ${INCLUDEDIR}/ufs |
| 121 | INCSLINKS+= ufs ${INCLUDEDIR}/vfs/ffs |
| 122 | INCSLINKS+= emulation ${INCLUDEDIR}/compat |
| 123 | INCSLINKS+= netproto/atalk ${INCLUDEDIR}/netatalk |
| 124 | INCSLINKS+= netproto/atm ${INCLUDEDIR}/netatm |
| 125 | INCSLINKS+= netproto/ipsec ${INCLUDEDIR}/netipsec |
| 126 | INCSLINKS+= netproto/ipx ${INCLUDEDIR}/netipx |
| 127 | INCSLINKS+= netproto/key ${INCLUDEDIR}/netkey |
| 128 | INCSLINKS+= netproto/natm ${INCLUDEDIR}/netnatm |
| 129 | INCSLINKS+= netproto/ncp ${INCLUDEDIR}/netncp |
| 130 | INCSLINKS+= netproto/ns ${INCLUDEDIR}/netns |
| 131 | INCSLINKS+= netproto/smb ${INCLUDEDIR}/netsmb |
| 132 | INCSLINKS+= bus/pccard ${INCLUDEDIR}/pccard |
| 133 | |
| 134 | # NOTE! |
| 135 | # |
| 136 | # machine/ header files come from the platform architecture and |
| 137 | # cpu/ header files come from the cpu architecture. All code outside |
| 138 | # of the machine header files ALWAYS #include's <machine/blah.h>. So |
| 139 | # if the platform architecture is missing a header file we have to |
| 140 | # copy it in from the cpu architecture. This way we do not have to |
| 141 | # create dozens of pure forwarding headers for files that platform |
| 142 | # architecture does not need to enhance. |
| 143 | |
| 144 | mtree_setup: |
| 145 | .for i in ${LDIRS} ${LSYMSUBDIRS} ${LSYMSUBDIRS3} machine cpu crypto |
| 146 | if [ -h ${DESTDIR}/usr/include/$i ]; then \ |
| 147 | rm -f ${DESTDIR}/usr/include/$i; \ |
| 148 | fi |
| 149 | .endfor |
| 150 | mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.include.dist \ |
| 151 | -p ${DESTDIR}/usr/include |
| 152 | |
| 153 | copies: mtree_setup |
| 154 | .for i in ${LDIRS} ${LSUBDIRS} ${LSUBDIRS3} |
| 155 | cd ${.CURDIR}/../sys; \ |
| 156 | ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \ |
| 157 | ${DESTDIR}/usr/include/$i |
| 158 | .endfor |
| 159 | cd ${.CURDIR}/../sys; \ |
| 160 | ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 opencrypto/*.h \ |
| 161 | ${DESTDIR}/usr/include/crypto |
| 162 | .if exists(${.CURDIR}/../sys/cpu/${MACHINE_ARCH}/include) |
| 163 | cd ${.CURDIR}/../sys/cpu/${MACHINE_ARCH}/include; \ |
| 164 | ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ |
| 165 | ${DESTDIR}/usr/include/cpu |
| 166 | # XXX this will cause quickworld to rebuild more junk |
| 167 | # then it needs to. |
| 168 | cpdup -o ${DESTDIR}/usr/include/cpu ${DESTDIR}/usr/include/machine |
| 169 | .endif |
| 170 | .if exists(${.CURDIR}/../sys/platform/${MACHINE_PLATFORM}/include) |
| 171 | cd ${.CURDIR}/../sys/platform/${MACHINE_PLATFORM}/include; \ |
| 172 | ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ |
| 173 | ${DESTDIR}/usr/include/machine |
| 174 | .if exists(${.CURDIR}/../sys/platform/${MACHINE_PLATFORM}/include/pc) |
| 175 | cd ${.CURDIR}/../sys/platform/${MACHINE_PLATFORM}/include/pc; \ |
| 176 | ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ |
| 177 | ${DESTDIR}/usr/include/machine/pc |
| 178 | .endif |
| 179 | .endif |
| 180 | .if exists(${.CURDIR}/../sys/net/i4b/include/${MACHINE_ARCH}) |
| 181 | cd ${.CURDIR}/../sys/net/i4b/include/${MACHINE_ARCH}; \ |
| 182 | ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ |
| 183 | ${DESTDIR}/usr/include/i4b_machine |
| 184 | .endif |
| 185 | .for i in ${SHDRS} |
| 186 | ${LN} -sf ../sys/$i ${DESTDIR}/usr/include/machine/$i |
| 187 | .endfor |
| 188 | .for i in ${RMHEADERS} |
| 189 | rm -f ${DESTDIR}/usr/include/$i |
| 190 | .endfor |
| 191 | |
| 192 | symlinks: mtree_setup |
| 193 | @${ECHO} "Setting up symlinks to kernel source tree..." |
| 194 | .for i in ${LDIRS} |
| 195 | rm -rf ${DESTDIR}/usr/include/$i |
| 196 | ${LN} -s ../../sys/$i ${DESTDIR}/usr/include/$i |
| 197 | .endfor |
| 198 | rm -rf ${DESTDIR}/usr/include/crypto |
| 199 | ${LN} -s ../../sys/opencrypto ${DESTDIR}/usr/include/crypto |
| 200 | .for i in ${LSYMSUBDIRS} |
| 201 | rm -rf ${DESTDIR}/usr/include/$i |
| 202 | ${LN} -s ../../../sys/$i ${DESTDIR}/usr/include/$i |
| 203 | .endfor |
| 204 | .for i in ${LSYMSUBDIRS3} |
| 205 | rm -rf ${DESTDIR}/usr/include/$i |
| 206 | ${LN} -s ../../../../sys/$i ${DESTDIR}/usr/include/$i |
| 207 | .endfor |
| 208 | rm -rf ${DESTDIR}/usr/include/cpu |
| 209 | ${LN} -s ../../sys/cpu/${MACHINE_ARCH}/include ${DESTDIR}/usr/include/cpu |
| 210 | rm -rf ${DESTDIR}/usr/include/machine |
| 211 | cpdup ${.CURDIR}/../sys/cpu/${MACHINE_ARCH}/include \ |
| 212 | ${DESTDIR}/usr/include/machine |
| 213 | cpdup -o ${.CURDIR}/../sys/platform/${MACHINE_PLATFORM}/include \ |
| 214 | ${DESTDIR}/usr/include/machine |
| 215 | rm -rf ${DESTDIR}/usr/include/i4b_machine |
| 216 | ${LN} -s ../../sys/net/i4b/include/${MACHINE_ARCH} ${DESTDIR}/usr/include/i4b_machine |
| 217 | |
| 218 | .include <bsd.prog.mk> |
| 219 | |
| 220 | installincludes: ${SHARED} |