xref: /openbsd-src/share/mk/bsd.prog.mk (revision 0b7734b3d77bb9b21afec6f4621cae6c805dbd45)
1#	$OpenBSD: bsd.prog.mk,v 1.70 2015/11/14 23:56:50 deraadt Exp $
2#	$NetBSD: bsd.prog.mk,v 1.55 1996/04/08 21:19:26 jtc Exp $
3#	@(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
4
5.if exists(${.CURDIR}/../Makefile.inc)
6.include "${.CURDIR}/../Makefile.inc"
7.endif
8
9.include <bsd.own.mk>
10
11.SUFFIXES: .out .o .c .cc .cpp .C .cxx .y .l .s .8 .7 .6 .5 .4 .3 .2 .1 .0
12
13.if (defined(LDSTATIC) && !defined(STATICPIE)) || defined(NOPIE)
14CFLAGS+=       ${NOPIE_FLAGS}
15CXXFLAGS+=     ${NOPIE_FLAGS}
16AFLAGS+=       ${NOPIE_FLAGS}
17LDFLAGS+=      ${NOPIE_LDFLAGS}
18.endif
19
20.if ${WARNINGS:L} == "yes"
21CFLAGS+=       ${CDIAGFLAGS}
22CXXFLAGS+=     ${CXXDIAGFLAGS}
23.endif
24CFLAGS+=	${COPTS}
25CXXFLAGS+=     ${CXXOPTS}
26
27CRTBEGIN?=       ${DESTDIR}/usr/lib/crtbegin.o
28CRTEND?=         ${DESTDIR}/usr/lib/crtend.o
29
30LIBCRT0?=	${DESTDIR}/usr/lib/crt0.o
31LIBC?=		${DESTDIR}/usr/lib/libc.a
32LIBCRYPTO?=	${DESTDIR}/usr/lib/libcrypto.a
33LIBCURSES?=	${DESTDIR}/usr/lib/libcurses.a
34LIBEDIT?=	${DESTDIR}/usr/lib/libedit.a
35LIBEVENT?=	${DESTDIR}/usr/lib/libevent.a
36LIBEXPAT?=	${DESTDIR}/usr/lib/libexpat.a
37LIBFORM?=	${DESTDIR}/usr/lib/libform.a
38LIBFORMW?=	${DESTDIR}/usr/lib/libformw.a
39LIBKEYNOTE?=	${DESTDIR}/usr/lib/libkeynote.a
40LIBKVM?=	${DESTDIR}/usr/lib/libkvm.a
41LIBL?=		${DESTDIR}/usr/lib/libl.a
42LIBM?=		${DESTDIR}/usr/lib/libm.a
43LIBMENU?=	${DESTDIR}/usr/lib/libmenu.a
44LIBMENUW?=	${DESTDIR}/usr/lib/libmenuw.a
45LIBRADIUS?=	${DESTDIR}/usr/lib/libradius.a
46LIBOSSAUDIO?=	${DESTDIR}/usr/lib/libossaudio.a
47LIBPANEL?=	${DESTDIR}/usr/lib/libpanel.a
48LIBPANELW?=	${DESTDIR}/usr/lib/libpanelw.a
49LIBPCAP?=	${DESTDIR}/usr/lib/libpcap.a
50LIBPERL?=	${DESTDIR}/usr/lib/libperl.a
51LIBPTHREAD?=	${DESTDIR}/usr/lib/libpthread.a
52LIBRPCSVC?=	${DESTDIR}/usr/lib/librpcsvc.a
53LIBSKEY?=	${DESTDIR}/usr/lib/libskey.a
54LIBSNDIO?=	${DESTDIR}/usr/lib/libsndio.a
55LIBSSL?=	${DESTDIR}/usr/lib/libssl.a
56LIBTLS?=	${DESTDIR}/usr/lib/libtls.a
57LIBTERMCAP?=	${DESTDIR}/usr/lib/libtermcap.a
58LIBTERMLIB?=	${DESTDIR}/usr/lib/libtermlib.a
59LIBUSB?=	${DESTDIR}/usr/lib/libusbhid.a
60LIBUTIL?=	${DESTDIR}/usr/lib/libutil.a
61LIBY?=		${DESTDIR}/usr/lib/liby.a
62LIBZ?=		${DESTDIR}/usr/lib/libz.a
63
64.if ${MACHINE_ARCH} == "alpha" || ${MACHINE_ARCH} == "amd64" || \
65    ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "i386"
66LIBARCH?=	${DESTDIR}/usr/lib/lib${MACHINE_ARCH}.a
67.else
68LIBARCH?=
69.endif
70
71.if defined(PROG)
72SRCS?=	${PROG}.c
73.  if !empty(SRCS:N*.h:N*.sh)
74OBJS+=	${SRCS:N*.h:N*.sh:R:S/$/.o/}
75_LEXINTM+=${SRCS:M*.l:.l=.c}
76_YACCINTM+=${SRCS:M*.y:.y=.c}
77.  endif
78
79.  if defined(OBJS) && !empty(OBJS)
80.    if !empty(SRCS:M*.C) || !empty(SRCS:M*.cc) || !empty(SRCS:M*.cpp) || \
81       !empty(SRCS:M*.cxx)
82${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD}
83	${CXX} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
84.    else
85${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD}
86	${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD}
87.    endif
88.  endif	# defined(OBJS) && !empty(OBJS)
89
90.  if	!defined(MAN)
91MAN=	${PROG}.1
92.  endif	# !defined(MAN)
93.endif	# defined(PROG)
94
95.MAIN: all
96all: ${PROG} _SUBDIRUSE
97
98.if !target(clean)
99clean: _SUBDIRUSE
100	rm -f a.out [Ee]rrs mklog *.core y.tab.h \
101	    ${PROG} ${OBJS} ${_LEXINTM} ${_YACCINTM} ${CLEANFILES}
102.endif
103
104cleandir: _SUBDIRUSE clean
105
106.if !target(install)
107.if !target(beforeinstall)
108beforeinstall:
109.endif
110.if !target(afterinstall)
111afterinstall:
112.endif
113
114.if !target(realinstall)
115realinstall:
116.if defined(PROG)
117	${INSTALL} ${INSTALL_COPY} -S ${INSTALL_STRIP} \
118	    -o ${BINOWN} -g ${BINGRP} \
119	    -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR}/${PROG}
120.endif
121.endif
122
123install: maninstall _SUBDIRUSE
124.if defined(LINKS) && !empty(LINKS)
125.  for lnk file in ${LINKS}
126	@l=${DESTDIR}${lnk}; \
127	 t=${DESTDIR}${file}; \
128	 echo $$t -\> $$l; \
129	 rm -f $$t; ln $$l $$t
130.  endfor
131.endif
132
133maninstall: afterinstall
134afterinstall: realinstall
135realinstall: beforeinstall
136.endif
137
138.if !defined(NOMAN)
139.include <bsd.man.mk>
140.endif
141
142.include <bsd.obj.mk>
143.include <bsd.dep.mk>
144.include <bsd.subdir.mk>
145.include <bsd.sys.mk>
146