]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/Makefile
Merge llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967
[FreeBSD/FreeBSD.git] / include / Makefile
1 # Doing a "make install" builds /usr/include.
2
3 .include <src.opts.mk>
4
5 PACKAGE=clibs
6 CLEANFILES= osreldate.h version
7 SUBDIR= arpa protocols rpcsvc rpc xlocale
8 .if ${MACHINE_CPUARCH} == "amd64"
9 SUBDIR+=                i386
10 INCLUDE_SUBDIRS+=       i386
11 .endif
12 .if ${MACHINE_CPUARCH} == "aarch64"
13 SUBDIR+=                arm
14 INCLUDE_SUBDIRS+=       arm
15 .endif
16 SUBDIR_PARALLEL=
17 INCS=   a.out.h ar.h assert.h bitstring.h byteswap.h \
18         complex.h cpio.h _ctype.h ctype.h \
19         db.h \
20         dirent.h dlfcn.h elf.h elf-hints.h endian.h err.h fmtmsg.h fnmatch.h \
21         fstab.h fts.h ftw.h getopt.h glob.h grp.h \
22         ieeefp.h ifaddrs.h \
23         inttypes.h iso646.h kenv.h langinfo.h libgen.h limits.h link.h \
24         locale.h malloc.h malloc_np.h memory.h monetary.h mpool.h mqueue.h \
25         ndbm.h netconfig.h \
26         netdb.h nl_types.h nlist.h nss.h nsswitch.h paths.h \
27         printf.h proc_service.h pthread.h \
28         pthread_np.h pwd.h ranlib.h readpassphrase.h regex.h \
29         res_update.h resolv.h runetype.h sched.h \
30         search.h semaphore.h setjmp.h \
31         signal.h spawn.h stab.h stdalign.h stdbool.h stdckdint.h stddef.h \
32         stdnoreturn.h stdio.h stdlib.h string.h stringlist.h \
33         strings.h sysexits.h tar.h termios.h tgmath.h \
34         time.h timeconv.h timers.h ttyent.h \
35         uchar.h ulimit.h unistd.h utime.h utmpx.h uuid.h varargs.h \
36         wchar.h wctype.h wordexp.h xlocale.h
37
38 .PATH: ${SRCTOP}/contrib/libc-vis
39 INCS+=  vis.h
40
41 MHDRS=  float.h floatingpoint.h stdarg.h
42
43 PHDRS=  _semaphore.h
44
45 LHDRS=  aio.h errno.h fcntl.h linker_set.h poll.h stdatomic.h stdint.h \
46         syslog.h ucontext.h
47
48 LDIRS=  geom net net80211 netgraph netinet netinet6 \
49         netipsec netlink netsmb nfs nfsclient nfsserver sys vm
50
51 LSUBDIRS=       dev/acpica dev/agp dev/ciss dev/filemon dev/firewire \
52         dev/hwpmc dev/hyperv \
53         dev/ic dev/iicbus dev/io dev/mfi dev/mmc \
54         dev/ofw dev/pbio dev/pci ${_dev_powermac_nvram} dev/ppbus dev/pwm \
55         dev/smbus dev/speaker dev/tcp_log dev/veriexec dev/vkbd dev/wg \
56         fs/devfs fs/fdescfs fs/msdosfs fs/nfs fs/nullfs \
57         fs/procfs fs/smbfs fs/udf fs/unionfs \
58         geom/cache geom/concat geom/eli geom/gate geom/journal geom/label \
59         geom/mirror geom/mountver geom/multipath geom/nop \
60         geom/raid geom/raid3 geom/shsec geom/stripe geom/union geom/virstor \
61         net/altq \
62         net/route \
63         netgraph/netflow \
64         netinet/cc \
65         netinet/netdump \
66         netinet/tcp_stacks \
67         netlink/route \
68         security/mac_biba security/mac_bsdextended \
69         security/mac_grantbylabel \
70         security/mac_lomac \
71         security/mac_mls security/mac_partition \
72         security/mac_veriexec \
73         sys/disk \
74         ufs/ffs ufs/ufs
75
76 LSUBSUBDIRS=    dev/mpt/mpilib
77
78 .PATH: ${SRCTOP}/sys/dev/acpica
79 ACPICA=         acpi_hpet.h \
80                 acpiio.h
81 ACPICADIR=      ${INCLUDEDIR}/dev/acpica
82
83 .PATH: ${SRCTOP}/sys/dev/agp
84 AGP=            agpreg.h
85 AGPDIR=         ${INCLUDEDIR}/dev/agp
86
87 .PATH: ${SRCTOP}/sys/bsm
88 BSM=            audit.h \
89                 audit_errno.h \
90                 audit_internal.h \
91                 audit_record.h \
92                 audit_domain.h \
93                 audit_fcntl.h \
94                 audit_kevents.h \
95                 audit_socket_type.h
96 BSMPACKAGE=     libbsm
97 BSMDIR=         ${INCLUDEDIR}/bsm
98
99 .PATH: ${SRCTOP}/sys/security
100 SECAUDIT=       audit/audit.h \
101                 audit/audit_ioctl.h \
102                 audit/audit_private.h
103 SECAUDITPACKAGE=        libbsm
104 SECAUDITDIR=    ${INCLUDEDIR}/security/audit
105
106 .PATH:  ${SRCTOP}/sys/cam
107 CAM=    cam.h \
108         cam_ccb.h \
109         cam_compat.h \
110         cam_debug.h \
111         cam_iosched.h \
112         cam_periph.h \
113         cam_queue.h \
114         cam_sim.h \
115         cam_xpt.h \
116         cam_xpt_internal.h \
117         cam_xpt_periph.h \
118         cam_xpt_sim.h
119 CAMDIR= ${INCLUDEDIR}/cam
120
121 .PATH: ${SRCTOP}/sys/cam/ata
122 CAMATA=         ata_all.h
123 CAMATADIR=      ${INCLUDEDIR}/cam/ata
124
125 .PATH: ${SRCTOP}/sys/cam/mmc
126 CAMMMC=         mmc.h \
127                 mmc_bus.h \
128                 mmc_all.h
129 CAMMMCDIR=      ${INCLUDEDIR}/cam/mmc
130
131 .PATH: ${SRCTOP}/sys/cam/nvme
132 CAMNVME=        nvme_all.h
133 CAMNVMEDIR=     ${INCLUDEDIR}/cam/nvme
134
135 .PATH: ${SRCTOP}/sys/cam/scsi
136 CAMSCSI=        scsi_all.h \
137                 scsi_cd.h \
138                 scsi_ch.h \
139                 scsi_da.h \
140                 scsi_enc.h \
141                 scsi_enc_internal.h \
142                 scsi_iu.h \
143                 scsi_message.h \
144                 scsi_pass.h \
145                 scsi_pt.h \
146                 scsi_sa.h \
147                 scsi_ses.h \
148                 scsi_sg.h \
149                 scsi_targetio.h \
150                 smp_all.h
151 CAMSCSIDIR=     ${INCLUDEDIR}/cam/scsi
152
153 .PATH: ${SRCTOP}/sys/fs/cd9660
154 FS9660=         cd9660_mount.h \
155                 cd9660_node.h \
156                 cd9660_rrip.h \
157                 iso.h \
158                 iso_rrip.h
159 FS9660DIR=      ${INCLUDEDIR}/isofs/cd9660
160
161 .PATH: ${SRCTOP}/sys/dev/evdev
162 EVDEV=          input.h \
163                 input-event-codes.h \
164                 uinput.h
165 EVDEVDIR=       ${INCLUDEDIR}/dev/evdev
166
167 .PATH: ${SRCTOP}/sys/dev/hid
168 HID=            hid.h \
169                 hidraw.h
170 HIDDIR=         ${INCLUDEDIR}/dev/hid
171
172 .PATH: ${SRCTOP}/sys/dev/hyperv/include ${SRCTOP}/sys/dev/hyperv/utilities
173 HYPERV=         hv_snapshot.h \
174                 hyperv.h
175 HYPERVDIR=      ${INCLUDEDIR}/dev/hyperv
176
177 .PATH: ${SRCTOP}/sys/opencrypto
178 OPENCRYPTO=     cryptodev.h
179 OPENCRYPTODIR=  ${INCLUDEDIR}/crypto
180
181 .PATH: ${SRCTOP}/sys/dev/nvme
182 NVME=           nvme.h
183 NVMEDIR=        ${INCLUDEDIR}/dev/nvme
184
185 .PATH: ${SRCTOP}/sys/dev/pci
186 PCI=            pcireg.h
187 PCIDIR=         ${INCLUDEDIR}/dev/pci
188
189 .PATH: ${SRCTOP}/sys/dev/veriexec
190 VERIEXEC=       veriexec_ioctl.h
191 VERIEXECDIR=    ${INCLUDEDIR}/dev/veriexec
192
193 .PATH: ${SRCTOP}/sys/netpfil/ipfilter/netinet
194 IPFILTER=       ip_auth.h \
195                 ip_compat.h \
196                 ip_dstlist.h \
197                 ip_fil.h \
198                 ip_frag.h \
199                 ip_htable.h \
200                 ip_lookup.h \
201                 ip_nat.h \
202                 ip_pool.h \
203                 ip_proxy.h \
204                 ip_rules.h \
205                 ip_scan.h \
206                 ip_state.h \
207                 ip_sync.h \
208                 ipf_rb.h \
209                 ipl.h \
210                 radix_ipf.h
211 IPFILTERDIR=    ${INCLUDEDIR}/netinet
212
213 .PATH: ${SRCTOP}/sys/netpfil/pf
214 PF=             pf.h \
215                 pf_altq.h \
216                 pf_mtag.h \
217                 pf_nl.h
218 PFPACKAGE=      pf
219 PFDIR=  ${INCLUDEDIR}/netpfil/pf
220
221 .PATH: ${SRCTOP}/sys/rpc
222 RPC=            rpcsec_tls.h \
223                 types.h
224 RPCDIR=         ${INCLUDEDIR}/rpc
225
226 .PATH: ${SRCTOP}/sys/teken
227 TEKEN=          teken.h
228 TEKENDIR=       ${INCLUDEDIR}/teken
229
230 .PATH: ${SRCTOP}/sys/contrib/openzfs/include/sys
231 NVPAIR=         nvpair.h
232 NVPAIRDIR=      ${INCLUDEDIR}/sys
233
234 .PATH: ${SRCTOP}/sys/dev/mlx5
235 MLX5=           mlx5io.h
236 MLX5DIR=        ${INCLUDEDIR}/dev/mlx5
237
238 .PATH: ${SRCTOP}/sys/dev/wg
239 WG=             if_wg.h
240 WGDIR=          ${INCLUDEDIR}/dev/wg
241
242 INCSGROUPS=     INCS \
243                 ACPICA \
244                 AGP \
245                 BSM \
246                 CAM \
247                 CAMATA \
248                 CAMMMC \
249                 CAMNVME \
250                 CAMSCSI \
251                 CRYPTO \
252                 EVDEV \
253                 FS9660 \
254                 HID \
255                 HYPERV \
256                 OPENCRYPTO \
257                 NVME \
258                 PCI \
259                 RPC \
260                 SECAUDIT \
261                 TEKEN \
262                 VERIEXEC \
263                 WG
264
265 .if ${MK_IPFILTER} != "no"
266 INCSGROUPS+=    IPFILTER
267 .endif
268
269 .if ${MK_PF} != "no"
270 INCSGROUPS+=    PF
271 .endif
272
273 .if ${MK_CDDL} != "no"
274 INCSGROUPS+=    NVPAIR
275 .endif
276
277 .if ${MK_MLX5TOOL} != "no"
278 INCSGROUPS+=    MLX5
279 .endif
280
281 .if ${MK_BLUETOOTH} != "no"
282 LSUBSUBDIRS+=   netgraph/bluetooth/include
283 .endif
284
285 .if ${MK_CUSE} != "no"
286 LSUBDIRS+=      fs/cuse
287 .endif
288
289 .if ${MK_GSSAPI} != "no"
290 SUBDIR+=        gssapi
291 INCS+=          gssapi.h
292 .endif
293
294 .if ${MK_HESIOD} != "no"
295 INCS+=  hesiod.h
296 .endif
297
298 # Handle the #define aliases for libiconv
299 .if ${MK_ICONV} == "yes"
300 INCS+=          iconv.h
301 .endif
302
303 .if ${MK_USB} != "no"
304 LSUBDIRS+=      dev/usb
305 .endif
306
307 .if ${MACHINE_CPUARCH} == "powerpc" && ${MACHINE_ARCH} != "powerpcspe"
308 _dev_powermac_nvram=    dev/powermac_nvram
309 .endif
310
311 # Define SHARED to indicate whether you want symbolic links to the system
312 # source (``symlinks''), or a separate copy (``copies'').  ``symlinks'' is
313 # probably only useful for developers and should be avoided if you do not
314 # wish to tie your /usr/include and /usr/src together.
315 #SHARED=        symlinks
316 SHARED?=        copies
317
318 INCS+=  osreldate.h
319
320 SYSDIR=                 ${SRCTOP}/sys
321 NEWVERS_SH=             ${SYSDIR}/conf/newvers.sh
322 PARAM_H=                ${SYSDIR}/sys/param.h
323 MK_OSRELDATE_SH=        ${.CURDIR}/mk-osreldate.sh
324
325 SYMLINKS+= ${LIBDIR:C,[^/]+,..,g:C,^/,,}${INCLUDEDIR} ${LIBDIR}/include
326
327 osreldate.h: ${NEWVERS_SH} ${PARAM_H} ${MK_OSRELDATE_SH}
328         env NEWVERS_SH=${NEWVERS_SH} PARAMFILE=${PARAM_H} SYSDIR=${SYSDIR} \
329             sh ${MK_OSRELDATE_SH}
330
331 .for i in ${LHDRS}
332 INCSLINKS+=     sys/$i ${INCLUDEDIR}/$i
333 .endfor
334 .for i in ${MHDRS}
335 INCSLINKS+=     machine/$i ${INCLUDEDIR}/$i
336 .endfor
337 .for i in ${PHDRS}
338 INCSLINKS+=     sys/$i ${INCLUDEDIR}/$i
339 .endfor
340
341 .if ${MACHINE} != ${MACHINE_CPUARCH}
342 _MARCHS=        ${MACHINE_CPUARCH}
343 .endif
344 .if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64"
345 _MARCHS+=       x86
346 .endif
347
348 META_TARGETS+=  compat
349 stage_includes: ${SHARED}
350 SDESTDIR?=      ${SYSROOT:U${DESTDIR}}
351
352 # Take care of stale directory-level symlinks.
353 # Note: The "|| true" after find is needed in case one of the directories does
354 # not exist (yet).
355 compat:
356         cd ${SDESTDIR}${INCLUDEDIR}; find ${LDIRS} ${LSUBDIRS} machine ${_MARCHS} \
357             crypto -maxdepth 0 -mindepth 0 -type l -print -delete || true
358         mtree -deU ${NO_ROOT:D-W} ${MTREE_FOLLOWS_SYMLINKS} \
359             -f ${SRCTOP}/etc/mtree/BSD.include.dist \
360             -p ${SDESTDIR}${INCLUDEDIR} > /dev/null
361 .for d in ${INCLUDE_SUBDIRS}
362         ${INSTALL} -d ${TAG_ARGS} -o ${BINOWN} -g ${BINGRP} -m 755 \
363             ${SDESTDIR}${INCLUDEDIR}/${d}
364 .endfor
365
366 copies: .PHONY .META
367         cd ${SDESTDIR}${INCLUDEDIR}; find ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} crypto \
368             machine machine/pc ${_MARCHS} -maxdepth 1 -mindepth 1 -type l \
369             -name "*.h" -print -delete || true
370 .for i in ${LDIRS} ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/evdev:Ndev/hid:Ndev/hyperv:Ndev/pci:Ndev/veriexec:Ndev/wg} ${LSUBSUBDIRS}
371         cd ${SRCTOP}/sys; \
372         ${INSTALL} -C ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 444 $i/*.h \
373             ${SDESTDIR}${INCLUDEDIR}/$i
374 .endfor
375         cd ${SRCTOP}/sys/${MACHINE}/include; \
376         ${INSTALL} -C ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
377             ${SDESTDIR}${INCLUDEDIR}/machine
378 .if exists(${SRCTOP}/sys/${MACHINE}/include/pc)
379         cd ${SRCTOP}/sys/${MACHINE}/include/pc; \
380         ${INSTALL} -C ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
381             ${SDESTDIR}${INCLUDEDIR}/machine/pc
382 .endif
383 .for _MARCH in ${_MARCHS}
384 .if exists(${SRCTOP}/sys/${_MARCH}/include)
385         ${INSTALL} -d ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 755 \
386             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}; \
387         cd ${SRCTOP}/sys/${_MARCH}/include; \
388         ${INSTALL} -C ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
389             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}
390 .if exists(${SRCTOP}/sys/${_MARCH}/include/pc)
391         ${INSTALL} -d ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 755 \
392             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}/pc; \
393         cd ${SRCTOP}/sys/${_MARCH}/include/pc; \
394         ${INSTALL} -C ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 444 *.h \
395             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}/pc
396 .endif
397 .endif
398 .endfor
399
400 symlinks: .PHONY .META
401         @${ECHO} "Setting up symlinks to kernel source tree..."
402 .for i in ${LDIRS}
403         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
404             $$(printf '../../../%s ' sys/$i/*.h) ${SDESTDIR}${INCLUDEDIR}/$i
405 .endfor
406 .for i in ${LSUBDIRS:Ndev/agp:Ndev/acpica:Ndev/evdev:Ndev/hid:Ndev/hyperv:Ndev/pci:Ndev/veriexec:Ndev/wg}
407         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
408             $$(printf '../../../../%s ' sys/$i/*.h) ${SDESTDIR}${INCLUDEDIR}/$i
409 .endfor
410         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
411             $$(printf '../../../../sys/dev/acpica/%s ' acpiio.h acpi_hpet.h) \
412             ${SDESTDIR}${INCLUDEDIR}/dev/acpica; \
413         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../../sys/dev/agp/agpreg.h \
414             ${SDESTDIR}${INCLUDEDIR}/dev/agp; \
415         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
416             $$(printf '../../../../sys/dev/evdev/%s ' input.h input-event-codes.h uinput.h) \
417             ${SDESTDIR}${INCLUDEDIR}/dev/evdev;
418         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
419             $$(printf '../../../../sys/dev/hid/%s ' hid.h hidraw.h) \
420             ${SDESTDIR}${INCLUDEDIR}/dev/hid; \
421         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../../sys/dev/hyperv/include/hyperv.h \
422             ${SDESTDIR}${INCLUDEDIR}/dev/hyperv; \
423         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../../sys/dev/hyperv/utilities/hv_snapshot.h \
424             ${SDESTDIR}${INCLUDEDIR}/dev/hyperv; \
425         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../../sys/dev/pci/pcireg.h \
426             ${SDESTDIR}${INCLUDEDIR}/dev/pci; \
427         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../../sys/dev/veriexec/veriexec_ioctl.h \
428             ${SDESTDIR}${INCLUDEDIR}/dev/veriexec;
429 .for i in ${LSUBSUBDIRS}
430         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
431             $$(printf '../../../../../%s ' sys/$i/*.h) ${SDESTDIR}${INCLUDEDIR}/$i
432 .endfor
433 .if ${MK_IPFILTER} != "no"
434         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
435             $$(printf '../../../%s ' sys/netpfil/ipfilter/netinet/*.h) \
436             ${SDESTDIR}${INCLUDEDIR}/netinet;
437 .endif
438 .if ${MK_PF} != "no"
439         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
440             $$(printf '../../../../%s ' sys/netpfil/pf/*.h) \
441             ${SDESTDIR}${INCLUDEDIR}/netpfil/pf;
442 .endif
443         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../sys/opencrypto/cryptodev.h \
444             ${SDESTDIR}${INCLUDEDIR}/crypto; \
445         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
446             $$(printf '../../../%s ' sys/${MACHINE}/include/*.h) \
447             ${SDESTDIR}${INCLUDEDIR}/machine;
448 .if exists(${SRCTOP}/sys/${MACHINE}/include/pc)
449         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
450             $$(printf '../../../../%s ' sys/${MACHINE}/include/pc/*.h) \
451             ${SDESTDIR}${INCLUDEDIR}/machine/pc;
452 .endif
453 .for _MARCH in ${_MARCHS}
454 .if exists(${SRCTOP}/sys/${_MARCH}/include)
455         ${INSTALL} -d ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 755 \
456             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}; \
457         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
458             $$(printf '../../../%s ' sys/${_MARCH}/include/*.h) \
459             ${SDESTDIR}${INCLUDEDIR}/${_MARCH};
460 .if exists(${SRCTOP}/sys/${_MARCH}/include/pc)
461         ${INSTALL} -d ${TAG_ARGS:D${TAG_ARGS},dev} -o ${BINOWN} -g ${BINGRP} -m 755 \
462             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}/pc; \
463         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
464             $$(printf '../../../../%s ' sys/${_MARCH}/include/pc/*.h) \
465             ${SDESTDIR}${INCLUDEDIR}/${_MARCH}/pc;
466 .endif
467 .endif
468 .endfor
469         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
470             $$(printf '../../../../%s ' sys/fs/cd9660/*.h) \
471             ${SDESTDIR}${INCLUDEDIR}/isofs/cd9660; \
472         cd ${SRCTOP}; ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
473             $$(printf '../../../sys/rpc/%s ' rpcsec_tls.h types.h) \
474             ${SDESTDIR}${INCLUDEDIR}/rpc;
475         cd ${SRCTOP}/sys/rpc;
476 .if ${MK_CDDL} != "no"
477         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} \
478             ../../../sys/contrib/openzfs/include/sys/nvpair.h \
479             ${SDESTDIR}${INCLUDEDIR}/sys
480 .endif
481 .if ${MK_MLX5TOOL} != "no"
482         ${INSTALL_SYMLINK} ${TAG_ARGS:D${TAG_ARGS},dev} ../../../../sys/dev/mlx5/mlx5io.h \
483             ${SDESTDIR}${INCLUDEDIR}/dev/mlx5
484 .endif
485
486 .include <bsd.prog.mk>
487
488 installincludes: ${SHARED}
489 ${SHARED}: compat
490
491 .if ${MACHINE} == "host" && !defined(_SKIP_BUILD)
492 # we're here because we are building a sysroot...
493 # we need MACHINE et al set correctly
494 HOST_MACHINE!= uname -m
495 HOST_MACHINE_ARCH!= uname -p
496 MACHINE:= ${HOST_MACHINE}
497 MACHINE_ARCH:= ${HOST_MACHINE_ARCH}
498 .endif
499
500 check-ldirs:
501         missing_dirs=""; \
502         for dir in ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS}; do \
503                 if [ ! -d ${SRCTOP}/sys/$$dir ]; then \
504                         echo "${SRCTOP}/sys/$$dir"; \
505                         missing_dirs="$$missing_dirs $$dir"; \
506                 fi; \
507         done; \
508         if [ -n "$$missing_dirs" ]; then \
509                 echo "Nonexistant directories:" $$missing_dirs; \
510                 false; \
511         fi