less(1): Regenerate defines.h and update Makefile
[dragonfly.git] / share / mk / bsd.prog.mk
blobd17a3dedee97deb68d621084cc00c7e9a9504fcc
1 # from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
2 # $FreeBSD: src/share/mk/bsd.prog.mk,v 1.86.2.17 2002/12/23 16:33:37 ru Exp $
4 .include <bsd.init.mk>
6 .SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .s .S
8 CFLAGS+=${COPTS} ${DEBUG_FLAGS}
10 .if defined(CRUNCH_CFLAGS)
11 CFLAGS+=${CRUNCH_CFLAGS}
12 .endif
14 PRIVATELIB_CFLAGS?= -I${_SHLIBDIRPREFIX}/usr/include/priv
15 PRIVATELIB_LDFLAGS?= -rpath /lib/priv -L ${_SHLIBDIRPREFIX}/usr/lib/priv
17 .if !defined(DEBUG_FLAGS)
18 STRIP?= -s
19 .endif
21 .if defined(NOSHARED) && ( ${NOSHARED} != "no" && ${NOSHARED} != "NO" )
22 LDFLAGS+= -static
23 .endif
25 .if defined(PROG_CXX)
26 PROG= ${PROG_CXX}
27 .endif
29 .if defined(PROG)
30 .if defined(SRCS)
32 # If there are Objective C sources, link with Objective C libraries.
33 .if ${SRCS:M*.m} != ""
34 OBJCLIBS?= -lobjc
35 LDADD+= ${OBJCLIBS}
36 .endif
38 .if !empty(SRCS)
39 OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
40 .endif
42 .if !target(${PROG})
43 ${PROG}: ${OBJS}
44 .if defined(PROG_CXX)
45 ${CXX_LINK} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
46 .else
47 ${CC_LINK} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
48 .endif
49 .endif
51 .else # !defined(SRCS)
53 .if !target(${PROG})
54 .if defined(PROG_CXX)
55 SRCS= ${PROG}.cc
56 .else
57 SRCS= ${PROG}.c
58 .endif
60 # Always make an intermediate object file because:
61 # - it saves time rebuilding when only the library has changed
62 # - the name of the object gets put into the executable symbol table instead of
63 # the name of a variable temporary object.
64 # - it's useful to keep objects around for crunching.
65 OBJS= ${PROG}.o
67 ${PROG}: ${OBJS}
68 .if defined(PROG_CXX)
69 ${CXX_LINK} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
70 .else
71 ${CC_LINK} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
72 .endif
73 .endif
75 .endif
77 .if !defined(NOMAN) && !defined(MAN) && \
78 !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
79 !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
80 !defined(MAN7) && !defined(MAN8) && !defined(MAN9)
81 MAN= ${PROG}.1
82 MAN1= ${MAN}
83 .endif
84 .endif
86 all: objwarn ${PROG} ${SCRIPTS}
87 .if !defined(NOMAN)
88 all: _manpages
89 .endif
91 CLEANFILES+= ${PROG} ${OBJS}
93 .if defined(PROG)
94 _EXTRADEPEND:
95 echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
96 .if defined(PROG_CXX)
97 echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
98 .endif
99 .endif
101 .if !target(install)
103 _INSTALLFLAGS:= ${INSTALLFLAGS}
104 .for ie in ${INSTALLFLAGS_EDIT}
105 _INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
106 .endfor
108 .if !target(realinstall) && !defined(INTERNALPROG)
109 realinstall: _proginstall
110 .ORDER: beforeinstall _proginstall
111 _proginstall:
112 .if defined(PROG)
113 .if defined(PROGNAME)
114 ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
115 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
116 .else
117 ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
118 ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
119 .endif
120 .endif
121 .endif # !target(realinstall) && !defined(INTERNALPROG)
123 .if defined(SCRIPTS) && !empty(SCRIPTS)
124 realinstall: _scriptsinstall
125 .ORDER: beforeinstall _scriptsinstall
127 SCRIPTSDIR?= ${BINDIR}
128 SCRIPTSOWN?= ${BINOWN}
129 SCRIPTSGRP?= ${BINGRP}
130 SCRIPTSMODE?= ${BINMODE}
132 .for script in ${SCRIPTS}
133 .if defined(SCRIPTSNAME)
134 SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
135 .else
136 SCRIPTSNAME_${script:T}?= ${script:T:R}
137 .endif
138 SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
139 SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
140 SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
141 SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
142 _scriptsinstall: _SCRIPTSINS_${script:T}
143 _SCRIPTSINS_${script:T}: ${script}
144 ${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
145 -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
146 ${.ALLSRC} \
147 ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
148 .endfor
149 .endif
151 NLSNAME?= ${PROG}
153 .include <bsd.nls.mk>
154 .include <bsd.files.mk>
155 .include <bsd.incs.mk>
156 .include <bsd.links.mk>
158 .if !defined(NOMAN)
159 realinstall: _maninstall
160 .ORDER: beforeinstall _maninstall
161 .endif
163 .endif
165 .if !target(lint)
166 lint: ${SRCS}
167 .if defined(PROG)
168 -@${LINT} ${LINTFLAGS} ${CFLAGS:M-I*:S/-I/-I /g} ${.ALLSRC}
169 .endif
170 .endif
172 .if !defined(NOMAN)
173 .include <bsd.man.mk>
174 .endif
176 .if ${OBJFORMAT} != aout || make(checkdpadd) || defined(NEED_LIBNAMES)
177 .include <bsd.libnames.mk>
178 .endif
180 .include <bsd.dep.mk>
182 .if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
183 ${OBJS}: ${SRCS:M*.h}
184 .endif
186 .include <bsd.obj.mk>
188 .include <bsd.sys.mk>