1#         $NetBSD: bsd.hostprog.mk,v 1.86 2024/11/02 22:02:39 christos Exp $
2#         @(#)bsd.prog.mk     8.2 (Berkeley) 4/2/94
3
4.include <bsd.hostinit.mk>
5.include <bsd.sys.mk>
6
7##### Basic targets
8
9##### Default values
10LIBATF_C?=                    /usr/lib/libatf-c.a
11LIBATF_CXX?=                  /usr/lib/libatf-c++.a
12LIBBLUETOOTH?=                /usr/lib/libbluetooth.a
13LIBBZ2?=            /usr/lib/libbz2.a
14LIBC?=                        /usr/lib/libc.a
15LIBCOMPAT?=                   /usr/lib/libcompat.a
16LIBCRYPT?=                    /usr/lib/libcrypt.a
17LIBCURSES?=                   /usr/lib/libcurses.a
18LIBC_PIC?=                    /usr/lib/libc_pic.a
19LIBC_SO?=           /usr/lib/libc.so
20LIBDBM?=            /usr/lib/libdbm.a
21LIBDES?=            /usr/lib/libdes.a
22LIBEDIT?=           /usr/lib/libedit.a
23LIBEVENT?=                    /usr/lib/libevent.a
24LIBEVENT_OPENSSL?=  /usr/lib/libevent_openssl.a
25LIBEVENT_PTHREADS?= /usr/lib/libevent_pthreads.a
26LIBEXPAT?=                    /usr/lib/libexpat.a
27LIBFETCH?=                    /usr/lib/libfetch.a
28LIBFORM?=           /usr/lib/libform.a
29LIBGCC?=            /usr/lib/libgcc.a
30LIBGNUCTF?=                   /usr/lib/libgnuctf.a
31LIBGNUMALLOC?=                /usr/lib/libgnumalloc.a
32LIBINTL?=           /usr/lib/libintl.a
33LIBIPSEC?=                    /usr/lib/libipsec.a
34LIBKVM?=            /usr/lib/libkvm.a
35LIBL?=                        /usr/lib/libl.a
36LIBLUTOK?=                    /usr/lib/liblutok.a
37LIBLZMA?=           /usr/lib/liblzma.a
38LIBM?=                        /usr/lib/libm.a
39LIBMAGIC?=                    /usr/lib/libmagic.a
40LIBMENU?=           /usr/lib/libmenu.a
41LIBMP?=                       /usr/lib/libmp.a
42LIBNTP?=            /usr/lib/libntp.a
43LIBNVMM?=           /usr/lib/libnvmm.a
44LIBOBJC?=           /usr/lib/libobjc.a
45LIBP2K?=            /usr/lib/libp2k.a
46LIBPANEL?=                    /usr/lib/libpanel.a
47LIBPC?=                       /usr/lib/libpc.a
48LIBPCAP?=           /usr/lib/libpcap.a
49LIBPCI?=            /usr/lib/libpci.a
50LIBPLOT?=           /usr/lib/libplot.a
51LIBPOSIX?=                    /usr/lib/libposix.a
52LIBPTHREAD?=                  /usr/lib/libpthread.a
53LIBPUFFS?=                    /usr/lib/libpuffs.a
54LIBQUOTA?=                    /usr/lib/libquota.a
55LIBREFUSE?=                   /usr/lib/librefuse.a
56LIBRESOLV?=                   /usr/lib/libresolv.a
57LIBRPCSVC?=                   /usr/lib/librpcsvc.a
58LIBRUMP?=           /usr/lib/librump.a
59LIBRUMPCLIENT?=               /usr/lib/librumpclient.a
60LIBRUMPNET?=                  /usr/lib/librumpnet.a
61LIBRUMPRES?=                  /usr/lib/librumpres.a
62LIBRUMPUSER?=                 /usr/lib/librumpuser.a
63LIBRUMPVFS?=                  /usr/lib/librumpvfs.a
64LIBSKEY?=           /usr/lib/libskey.a
65LIBSQLITE3?=                  /usr/lib/libsqlite3.a
66LIBSSP?=            /usr/lib/libssp.a
67LIBSTDCXX?=                   /usr/lib/libstdc++.a
68LIBSUPCXX?=                   /usr/lib/libsupc++.a
69LIBTERMINFO?=                 /usr/lib/libterminfo.a
70LIBUKFS?=           /usr/lib/libukfs.a
71LIBUTIL?=           /usr/lib/libutil.a
72LIBWRAP?=           /usr/lib/libwrap.a
73LIBY?=                        /usr/lib/liby.a
74LIBZ?=                        /usr/lib/libz.a
75
76##### rump file system modules
77LIBRUMPFS_CD9660FS?=          /usr/lib/librumpfs_cd9660fs.a
78LIBRUMPFS_EFS?=               /usr/lib/librumpfs_efs.a
79LIBRUMPFS_EXT2FS?=  /usr/lib/librumpfs_ext2fs.a
80LIBRUMPFS_FFS?=               /usr/lib/librumpfs_ffs.a
81LIBRUMPFS_HFS?=               /usr/lib/librumpfs_hfs.a
82LIBRUMPFS_LFS?=               /usr/lib/librumpfs_lfs.a
83LIBRUMPFS_MSDOSFS?= /usr/lib/librumpfs_msdosfs.a
84LIBRUMPFS_NTFS?=    /usr/lib/librumpfs_ntfs.a
85LIBRUMPFS_SYSPUFFS?=          /usr/lib/librumpfs_syspuffs.a
86LIBRUMPFS_TMPFS?=   /usr/lib/librumpfs_tmpfs.a
87LIBRUMPFS_UDF?=               /usr/lib/librumpfs_udf.a
88LIBRUMPFS_UFS?=               /usr/lib/librumpfs_ufs.a
89
90MKDEP_SUFFIXES?=    .lo .ln .d
91
92# Override these:
93INSTALL:= ${INSTALL:NSTRIP=*}
94MKDEP:=             ${HOST_MKDEP}
95MKDEPCXX:=          ${HOST_MKDEPCXX}
96
97.if ${TOOLCHAIN_MISSING} == "no" || defined(EXTERNAL_TOOLCHAIN)
98OBJHOSTMACHINE=     # set
99.endif
100
101##### Build rules
102.if defined(HOSTPROG_CXX)
103HOSTPROG= ${HOSTPROG_CXX}
104.endif
105
106.if defined(HOSTPROG)
107SRCS?=              ${HOSTPROG}.c
108
109_YHPSRCS= ${SRCS:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS:M*.y:.y=.h}}
110DPSRCS+=  ${_YHPSRCS}
111CLEANFILES+=        ${_YHPSRCS}
112
113.if !empty(SRCS:N*.h:N*.sh)
114OBJS+=              ${SRCS:N*.h:N*.sh:R:S/$/.lo/g}
115LOBJS+=             ${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln}
116.endif
117
118.if defined(OBJS) && !empty(OBJS)
119.NOPATH: ${OBJS} ${HOSTPROG} ${_YHPSRCS}
120
121${OBJS} ${LOBJS}: ${DPSRCS}
122${HOSTPROG}: ${OBJS} ${DPADD}
123          ${_MKTARGET_LINK}
124          ${HOST_LINK.c} ${HOST_LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
125.if !empty(.MAKE.OS:M*CYGWIN*)
126          ${HOST_SH} ${NETBSDSRCDIR}/tools/binstall/mkmanifest ${HOSTPROG}
127.endif
128
129
130.endif    # defined(OBJS) && !empty(OBJS)
131
132.if !defined(MAN)
133MAN=      ${HOSTPROG}.1
134.endif    # !defined(MAN)
135.endif    # defined(HOSTPROG)
136
137realall: ${HOSTPROG}
138
139CLEANFILES+= a.out [Ee]rrs mklog core *.core ${HOSTPROG} ${OBJS} ${LOBJS}
140
141beforedepend:
142CFLAGS:=  ${HOST_CFLAGS}
143CPPFLAGS:=          ${HOST_CPPFLAGS:N-Wp,-iremap,*}
144
145lint: ${LOBJS}
146.if defined(LOBJS) && !empty(LOBJS)
147          ${LINT} ${LINTFLAGS} ${LDFLAGS:C/-L[  ]*/-L/Wg:M-L*} ${LOBJS} ${LDADD}
148.endif
149
150##### Pull in related .mk logic
151LINKSMODE?= ${BINMODE}
152.include <bsd.man.mk>
153.include <bsd.nls.mk>
154.include <bsd.files.mk>
155.include <bsd.inc.mk>
156.include <bsd.links.mk>
157.include <bsd.dep.mk>
158.include <bsd.clean.mk>
159
160${TARGETS}:         # ensure existence
161
162# Override YACC/LEX rules so nbtool_config.h can be forced as the 1st include
163.l.c:
164          ${_MKTARGET_LEX}
165          ${LEX.l} -o${.TARGET} ${.IMPSRC}
166          echo '#if HAVE_NBTOOL_CONFIG_H' > ${.TARGET}.1
167          echo '#include "nbtool_config.h"' >> ${.TARGET}.1
168          echo '#endif' >> ${.TARGET}.1
169          cat ${.TARGET} >> ${.TARGET}.1
170          ${MV} ${.TARGET}.1 ${.TARGET}
171.y.c:
172          ${_MKTARGET_YACC}
173          ${YACC.y} -o ${.TARGET} ${.IMPSRC}
174          echo '#if HAVE_NBTOOL_CONFIG_H' > ${.TARGET}.1
175          echo '#include "nbtool_config.h"' >> ${.TARGET}.1
176          echo '#endif' >> ${.TARGET}.1
177          cat ${.TARGET} >> ${.TARGET}.1
178          ${MV} ${.TARGET}.1 ${.TARGET}
179