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