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