1#	$NetBSD: bsd.hostprog.mk,v 1.84 2021/03/27 02:46:45 simonb 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