1 # $NetBSD: bsd.prog.mk,v 1.292 2015/06/07 15:04:28 matt Exp $
2 # @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94
7 .
include <bsd.shlib.mk
>
9 .
include <minix.gcov.mk
>
12 # Definitions and targets shared among all programs built by a single
17 realinstall
: proginstall scriptsinstall
21 .if defined
(DESTDIR
) && !empty
(DESTDIR
)
22 echo
"set solib-absolute-prefix ${DESTDIR}" > .gdbinit
26 .for __gdbinit in
${GDBINIT}
27 echo
"source ${__gdbinit}" >> .gdbinit
30 CLEANFILES
+= a.out
[Ee
]rrs mklog core
*.core .gdbinit
32 .if defined
(SHAREDSTRINGS
)
35 ${CC} -E
${CPPFLAGS} ${CFLAGS} ${.IMPSRC
} | xstr
-c
-
36 @
${CC} ${CPPFLAGS} ${CFLAGS} -c x.c
-o
${.TARGET
}
37 .if defined
(CTFCONVERT
)
38 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET
}
42 .
cc.o .
cpp.o .
cxx.o .C.o
:
43 ${CXX} -E
${CPPFLAGS} ${CXXFLAGS} ${.IMPSRC
} | xstr
-c
-
45 @
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c x.
cc -o
${.TARGET
}
46 .if defined
(CTFCONVERT
)
47 ${CTFCONVERT} ${CTFFLAGS} ${.TARGET
}
52 .if defined
(MKPIE
) && (${MKPIE} != "no")
53 CFLAGS
+= ${PIE_CFLAGS}
54 AFLAGS
+= ${PIE_AFLAGS}
55 LDFLAGS
+= ${PIE_LDFLAGS}
59 .if defined
(MKDEBUG
) && (${MKDEBUG} != "no")
62 OBJCFLAGS
+= ${OBJCOPTS}
63 MKDEP_SUFFIXES?
= .o .ln .d
65 # CTF preserve debug symbols
66 .if
(${MKCTF
:Uno
} != "no") && (${CFLAGS
:M-g
} != "")
69 .if defined
(HAVE_GCC
) && ${HAVE_GCC} >= 48
74 # ELF platforms depend on crti.o, crtbegin.o, crtend.o, and crtn.o
76 LIBCRTBEGIN
= ${DESTDIR}/usr
/lib
/${MLIBDIR
:D
${MLIBDIR}/}crti.o
${_GCC_CRTBEGIN}
80 LIBCRTEND
= ${_GCC_CRTEND} ${DESTDIR}/usr
/lib
/${MLIBDIR
:D
${MLIBDIR}/}crtn.o
83 _SHLINKER
= ${SHLINKDIR}/ld.elf_so
86 LIBCRT0
= ${DESTDIR}/usr
/lib
/${MLIBDIR
:D
${MLIBDIR}/}crt0.o
91 LIBCRTI
= ${DESTDIR}/usr
/lib
/${MLIBDIR
:D
${MLIBDIR}/}crti.o
95 ##### Installed system library definitions
98 # LIBC?=${DESTDIR}/usr/lib/libc.a
99 # LIBX11?=${DESTDIR}/usr/X11R7/lib/libX11.a
101 # NB: If you are a library here, add it in bsd.README
209 .
ifndef LIB
${_lib
:tu
}
210 LIB
${_lib
:tu
}= ${DESTDIR}/usr
/lib
/lib
${_lib
:S
/xx
/++/:S
/atf_c
/atf-c
/}.a
211 .MADE
: ${LIB
${_lib
:tu
}} # Note: ${DESTDIR} will be expanded
246 .
ifndef LIB
${_lib
:tu
}
247 LIB
${_lib
:tu
}= ${DESTDIR}/usr
/lib
/lib
${_lib
:S
/xx
/++/:S
/atf_c
/atf-c
/}.a
248 .MADE
: ${LIB
${_lib
:tu
}} # Note: ${DESTDIR} will be expanded
252 # PAM applications, if linked statically, need more libraries
253 .if
(${MKPIC} == "no")
254 .if
(${MKCRYPTO} != "no")
255 PAM_STATIC_LDADD
+= -lssh
256 PAM_STATIC_DPADD
+= ${LIBSSH}
258 .if
(${MKKERBEROS} != "no")
259 PAM_STATIC_LDADD
+= -lkafs
-lkrb5
-lhx509
-lwind
-lasn1 \
260 -lroken
-lcom_err
-lheimbase
-lcrypto
261 PAM_STATIC_DPADD
+= ${LIBKAFS} ${LIBKRB5} ${LIBHX509} ${LIBWIND} ${LIBASN1} \
262 ${LIBROKEN} ${LIBCOM_ERR} ${LIBHEIMBASE} ${LIBCRYPTO}
264 .if
(${MKSKEY} != "no")
265 PAM_STATIC_LDADD
+= -lskey
266 PAM_STATIC_DPADD
+= ${LIBSKEY}
268 PAM_STATIC_LDADD
+= -lradius
-lcrypt
-lrpcsvc
-lutil
269 PAM_STATIC_DPADD
+= ${LIBRADIUS} ${LIBCRYPT} ${LIBRPCSVC} ${LIBUTIL}
275 .if defined
(__MINIX
) && ${MACHINE_ARCH} == "earm"
276 # LSC: On ARM, when compiling statically, with gcc, lgcc_eh is required
277 LDFLAGS
+= ${${ACTIVE_CC} == "gcc":?
-lgcc_eh
:}
278 .
endif # defined(__MINIX) && ${MACHINE_ARCH} == "earm"
280 # NB: If you are a library here, add it in bsd.README
317 .
ifndef LIB
${_lib
:tu
}
318 LIB
${_lib
:tu
}= ${DESTDIR}${X11USRLIBDIR}/lib
${_lib}.a
319 .MADE
: ${LIB
${_lib
:tu
}} # Note: ${DESTDIR} will be expanded
324 LIBX11_XCB
= ${DESTDIR}${X11USRLIBDIR}/libX11-xcb.a
325 LIBXCB
= ${DESTDIR}${X11USRLIBDIR}/libxcb.a
327 .if defined
(RESCUEDIR
)
328 CPPFLAGS
+= -DRESCUEDIR
=\"${RESCUEDIR}\"
332 .if
${SHLINKDIR} != "/usr/libexec" # XXX: change or remove if ld.so moves
333 _PROGLDOPTS
+= -Wl
,-dynamic-linker
=${_SHLINKER}
335 .if
${SHLIBDIR} != "/usr/lib"
336 _PROGLDOPTS
+= -Wl
,-rpath
,${SHLIBDIR} \
338 .elif
${SHLIBINSTALLDIR} != "/usr/lib"
339 _PROGLDOPTS
+= -Wl
,-rpath-link
,${DESTDIR}${SHLIBINSTALLDIR} \
340 -L
=${SHLIBINSTALLDIR}
345 ${INSTALL_FILE} -o
${BINOWN} -g
${BINGRP} -m
${BINMODE} \
346 ${STRIPFLAG} ${.ALLSRC
} ${.TARGET
}
348 __progrumpinstall
: .USE
350 ${INSTALL_FILE} -o
${RUMPBINOWN} -g
${RUMPBINGRP} -m
${RUMPBINMODE} \
351 ${STRIPFLAG} ${.ALLSRC
} ${.TARGET
}
353 __progdebuginstall
: .USE
355 ${INSTALL_FILE} -o
${DEBUGOWN} -g
${DEBUGGRP} -m
${DEBUGMODE} \
356 ${.ALLSRC
} ${.TARGET
}
361 # Backwards compatibility with Makefiles that assume that bsd.prog.mk
362 # can only build a single binary.
370 .if defined
(PROG_CXX
)
372 _CCLINK
= ${CXX} ${_CCLINKFLAGS}
375 # BJG - stack unwinding (for C++ exceptions) doesn't work on static executables when built with llvm.
377 .
endif # defined(__MINIX)
382 .
ifndef CRUNCHEDPROG
383 . if
(${MKRUMP} != "no")
384 PROGS
= ${RUMPPRG} rump.
${RUMPPRG}
389 . if
(${MKRUMP} != "no")
390 SRCS.rump.
${PROG}:= ${SRCS} ${PROG}_rumpops.c
${RUMPSRCS}
392 SRCS
+= ${PROG}_hostops.c
394 SRCS
= ${PROG}.c
${PROG}_hostops.c
395 . if
(${MKRUMP} != "no")
396 SRCS.rump.
${PROG}= ${PROG}.c
${PROG}_rumpops.c
${RUMPSRCS}
399 . if
(${MKRUMP} != "no")
400 DPSRCS
+= ${PROG}_rumpops.c
${RUMPSRCS}
401 LDADD.rump.
${PROG}+= -lrumpclient
402 DPADD.rump.
${PROG}+= ${LIBRUMPCLIENT}
403 MAN.rump.
${PROG}= # defined but feeling empty
404 _RUMPINSTALL.rump.
${PROG}=# defined
406 .
else # CRUNCHEDPROG
408 CPPFLAGS
+= -DCRUNCHOPS
413 _CCLINK?
= ${CC} ${_CCLINKFLAGS}
419 OBJS
= ${OBJS.
${PROG}}
421 . if defined
(PROGNAME
)
422 PROGNAME.
${PROG}= ${PROGNAME}
425 SRCS.
${PROG}= ${SRCS}
430 # Turn the single-program PROG and PROG_CXX variables into their multi-word
431 # counterparts, PROGS and PROGS_CXX.
432 .if
!defined
(RUMPPRG
)
433 . if defined
(PROG_CXX
) && !defined
(PROGS_CXX
)
434 PROGS_CXX
= ${PROG_CXX}
435 . elif defined
(PROG
) && !defined
(PROGS
)
440 ##### Libraries that this may depend upon.
441 .if defined
(PROGDPLIBS
) # {
442 .for _lib _dir in
${PROGDPLIBS}
443 .if
!defined
(BINDO.
${_lib})
444 PROGDO.
${_lib}!= cd
"${_dir}" && ${PRINTOBJDIR}
445 .MAKEOVERRIDES
+=PROGDO.
${_lib}
447 LDADD
+= -L
${PROGDO.
${_lib}} -l
${_lib}
448 .if exists
(${PROGDO.
${_lib}}/lib
${_lib}_pic.a
)
449 DPADD
+= ${PROGDO.
${_lib}}/lib
${_lib}_pic.a
450 .elif exists
(${PROGDO.
${_lib}}/lib
${_lib}.so
)
451 DPADD
+= ${PROGDO.
${_lib}}/lib
${_lib}.so
453 DPADD
+= ${PROGDO.
${_lib}}/lib
${_lib}.a
458 # Per-program definitions and targets.
461 _CCLINK.CDEFAULT
= ${CC} ${_CCLINKFLAGS}
462 # Definitions specific to C programs.
465 _CCLINK.
${_P}= ${CC} ${_CCLINKFLAGS}
466 _CFLAGS.
${_P}= ${CFLAGS} ${CPUFLAGS}
467 _CPPFLAGS.
${_P}= ${CPPFLAGS}
468 _COPTS.
${_P}= ${COPTS}
471 _CCLINK.CXXDEFAULT
= ${CXX} ${_CCLINKFLAGS}
472 # Definitions specific to C++ programs.
473 .for _P in
${PROGS_CXX}
474 SRCS.
${_P}?
= ${_P}.
cc
475 _CCLINK.
${_P}= ${CXX} ${_CCLINKFLAGS}
478 # Language-independent definitions.
480 .if
${USE_BITCODE
:Uno
} == "yes"
482 .
endif # ${USE_BITCODE:Uno} == "yes"
484 .if
${USE_BITCODE
:Uyes
} == "no"
485 #LSC Gold linker seems to require the library directory to be set up if
486 # a sysroot parameter has been given.
487 LDFLAGS
+= -L
${DESTDIR}/usr
/lib
488 .
endif # ${USE_BITCODE:U} == "no"
489 .
endif # defined(__MINIX)
491 .for _P in
${PROGS} ${PROGS_CXX} # {
493 BINDIR.
${_P}?
= ${BINDIR}
494 PROGNAME.
${_P}?
= ${_P}
496 .if
${MKDEBUG} != "no" && !commands
(${_P})
497 _PROGDEBUG.
${_P}:= ${PROGNAME.
${_P}}.debug
500 .if defined
(PAXCTL_FLAGS
)
501 PAXCTL_FLAGS.
${_P}?
= ${PAXCTL_FLAGS}
504 ##### PROG specific flags.
506 _DPADD.
${_P}= ${DPADD} ${DPADD.
${_P}}
507 _LDADD.
${_P}= ${LDADD} ${LDADD.
${_P}}
508 _LDFLAGS.
${_P}= ${LDFLAGS} ${LDFLAGS.
${_P}}
509 _LDSTATIC.
${_P}= ${LDSTATIC} ${LDSTATIC.
${_P}}
511 ##### Build and install rules
512 .if
!empty
(_APPEND_SRCS
:M
[Yy
][Ee
][Ss
])
513 SRCS
+= ${SRCS.
${_P}} # For bsd.dep.mk
516 _YPSRCS.
${_P}= ${SRCS.
${_P}:M
*.
[ly
]:C
/\..
$/.c
/} ${YHEADER
:D
${SRCS.
${_P}:M
*.y
:.y
=.h
}}
518 DPSRCS
+= ${_YPSRCS.
${_P}}
519 CLEANFILES
+= ${_YPSRCS.
${_P}}
521 .if
!empty
(SRCS.
${_P}:N
*.h
:N
*.sh
:N
*.fth
)
522 OBJS.
${_P}+= ${SRCS.
${_P}:N
*.h
:N
*.sh
:N
*.fth
:R
:S
/$/.o
/g
}
523 LOBJS.
${_P}+= ${LSRCS
:.c
=.ln
} ${SRCS.
${_P}:M
*.c
:.c
=.ln
}
526 .if defined
(OBJS.
${_P}) && !empty
(OBJS.
${_P}) # {
527 .NOPATH
: ${OBJS.
${_P}} ${_P} ${_YPSRCS.
${_P}}
529 .if
(defined
(USE_COMBINE
) && ${USE_COMBINE} != "no" && !commands
(${_P}) \
530 && (${_CCLINK.
${_P}} == ${_CCLINK.CDEFAULT
} \
531 ||
${_CCLINK.
${_P}} == ${_CCLINK.CXXDEFAULT
}) \
532 && !defined
(NOCOMBINE.
${_P}) && !defined
(NOCOMBINE
))
533 .for f in
${SRCS.
${_P}:N
*.h
:N
*.sh
:N
*.fth
:C
/\.
[yl
]$/.c
/g
}
534 #_XFLAGS.$f := ${CPPFLAGS.$f:D1} ${CPUFLAGS.$f:D2} \
535 # ${COPTS.$f:D3} ${OBJCOPTS.$f:D4} ${CXXFLAGS.$f:D5}
536 .if
(${CPPFLAGS.
$f:D1
} == "1" ||
${CPUFLAGS.
$f:D2
} == "2" \
537 ||
${COPTS.
$f:D3
} == "3" ||
${OBJCOPTS.
$f:D4
} == "4" \
538 ||
${CXXFLAGS.
$f:D5
} == "5") \
539 ||
("${f:M*.[cyl]}" == "" || commands
(${f
:R
:S
/$/.o
/}))
540 XOBJS.
${_P}+= ${f
:R
:S
/$/.o
/}
547 ${_P}: .gdbinit
${LIBCRT0} ${LIBCRTI} ${XOBJS.
${_P}} ${SRCS.
${_P}} \
548 ${DPSRCS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${_DPADD.
${_P}}
551 ${_CCLINK.
${_P}} -Wl
,-nostdlib \
552 ${_LDFLAGS.
${_P}} ${_LDSTATIC.
${_P}} -o
${.TARGET
} ${_PROGLDOPTS} \
553 -B
${_GCC_CRTDIR}/ -B
${DESTDIR}/usr
/lib
/ \
554 -MD
--combine
${_CPPFLAGS.
${_P}} ${_CFLAGS.
${_P}} ${_COPTS.
${_P}} \
555 ${XSRCS.
${_P}:@.SRC.@
${.ALLSRC
:M
*.c
:M
*${.SRC.
}}@
:O
:u
} ${XOBJS.
${_P}} \
556 ${_LDADD.
${_P}} -L
${_GCC_LIBGCCDIR} -L
${DESTDIR}/usr
/lib
558 ${_CCLINK.
${_P}} ${_LDFLAGS.
${_P}} ${_LDSTATIC.
${_P}} -o
${.TARGET
} ${_PROGLDOPTS} \
559 -MD
--combine
${_CPPFLAGS.
${_P}} ${_COPTS.
${_P}}
560 ${XSRCS.
${_P}:@.SRC.@
${.ALLSRC
:M
*.c
:M
*${.SRC.
}}@
:O
:u
} ${XOBJS.
${_P}} \
562 .
endif # defined(DESTDIR)
563 .if defined
(CTFMERGE
)
564 ${CTFMERGE} ${CTFMFLAGS} -o
${.TARGET
} ${OBJS.
${_P}}
566 .if defined
(PAXCTL_FLAGS.
${_P})
567 ${PAXCTL} ${PAXCTL_FLAGS.
${_P}} ${.TARGET
}
569 .if
${MKSTRIPIDENT} != "no"
570 ${OBJCOPY} -R .ident
${.TARGET
}
575 .
include "${_P}.d" # include -MD depend for program.
579 ${OBJS.
${_P}} ${LOBJS.
${_P}}: ${DPSRCS}
581 .if defined
(__MINIX
) && ${USE_BITCODE
:Uno
} == "yes"
582 CLEANFILES
+= ${_P}.opt.bcl
${_P}.bcl
${_P}.bcl.o
584 OPTFLAGS.
${_P}?
= ${OPTFLAGS}
585 BITCODE_LD_FLAGS_1ST.
${_P}+= ${BITCODE_LD_FLAGS_1ST}
586 BITCODE_LD_FLAGS_2ND.
${_P}+= ${BITCODE_LD_FLAGS_2ND}
588 ${_P}.bcl
: .gdbinit
${LIBCRT0} ${LIBCRTI} ${OBJS.
${_P}} ${LIBC} ${LIBCRTBEGIN} \
589 ${LIBCRTEND} ${_DPADD.
${_P}}
594 -L
${DESTDIR}/usr
/lib
/bc \
595 ${OBJS.
${_P}} ${LLVM_LINK_ARGS} ${_LDADD.
${_P}:N-shared
} \
596 ${_LDSTATIC.
${_P}} ${_PROGLDOPTS} \
598 ${BITCODE_LD_FLAGS_1ST.
${_P}} \
599 -Wl
,-plugin-opt
=emit-llvm
601 ${_P}.opt.bcl
: ${_P}.bcl
${LLVM_PASS}
603 ${OPT} ${OPTFLAGS.
${_P}} -o
${.TARGET
} ${_P}.bcl
605 ${_P}.bcl.o
: ${_P}.opt.bcl
607 ${LLC} -O1
-march
=x86
-mcpu
=i586
-filetype
=obj
-o
${.TARGET
} ${.ALLSRC
}
614 -L
${DESTDIR}/usr
/lib \
615 ${_LDSTATIC.
${_P}} -o
${.TARGET
} \
616 ${.TARGET
}.bcl.o
${_PROGLDOPTS} ${_LDADD.
${_P}} \
617 ${BITCODE_LD_FLAGS_2ND.
${_P}} \
618 -Wl
,--allow-multiple-definition
619 .
endif # !commands(${_P})
622 ${_P}: .gdbinit
${LIBCRT0} ${LIBCRTI} ${OBJS.
${_P}} ${LIBC} ${LIBCRTBEGIN} \
623 ${LIBCRTEND} ${_DPADD.
${_P}}
627 ${_LDFLAGS.
${_P}} ${_LDSTATIC.
${_P}} -o
${.TARGET
} \
628 ${OBJS.
${_P}} ${_PROGLDOPTS} ${_LDADD.
${_P}}
629 .if defined
(CTFMERGE
)
630 ${CTFMERGE} ${CTFMFLAGS} -o
${.TARGET
} ${OBJS.
${_P}}
632 .if defined
(PAXCTL_FLAGS.
${_P})
633 ${PAXCTL} ${PAXCTL_FLAGS.
${_P}} ${.TARGET
}
635 .if
${MKSTRIPIDENT} != "no"
636 ${OBJCOPY} -R .ident
${.TARGET
}
638 .
endif # !commands(${_P})
639 .
endif # defined(__MINIX) && ${USE_BITCODE:Uno} == "yes"
642 ${_P}.ro
: ${OBJS.
${_P}} ${_DPADD.
${_P}}
644 ${CC} ${LDFLAGS
:N-Wl
,-pie
} -nostdlib
-r
-Wl
,-dc
-o
${.TARGET
} ${OBJS.
${_P}}
646 .if defined
(_PROGDEBUG.
${_P})
647 ${_PROGDEBUG.
${_P}}: ${_P}
649 ( ${OBJCOPY} --only-keep-debug
${_P} ${_PROGDEBUG.
${_P}} \
650 && ${OBJCOPY} --strip-debug
-p
-R .gnu_debuglink \
651 --add-gnu-debuglink
=${_PROGDEBUG.
${_P}} ${_P} \
652 ) ||
(rm -f
${_PROGDEBUG.
${_P}}; false
)
655 .
endif # defined(OBJS.${_P}) && !empty(OBJS.${_P}) # }
657 .if
!defined
(MAN.
${_P})
659 .
endif # !defined(MAN.${_P})
660 .if
!empty
(_APPEND_MANS
:M
[Yy
][Ee
][Ss
])
664 realall
: ${_P} ${_PROGDEBUG.
${_P}}
666 CLEANFILES
+= ${_P} ${_PROGDEBUG.
${_P}}
668 .if defined
(OBJS.
${_P}) && !empty
(OBJS.
${_P})
669 CLEANFILES
+= ${OBJS.
${_P}} ${LOBJS.
${_P}}
672 _PROG_INSTALL
+= proginstall-
${_P}
674 .if
!target
(proginstall-
${_P}) # {
675 proginstall-
${_P}:: ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}} \
676 ${_PROGDEBUG.
${_P}:D
${DESTDIR}${DEBUGDIR}${BINDIR.
${_P}}/${_PROGDEBUG.
${_P}}}
677 .PRECIOUS
: ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}} \
678 ${_PROGDEBUG.
${_P}:D
${DESTDIR}${DEBUGDIR}${BINDIR.
${_P}}/${_PROGDEBUG.
${_P}}}
680 .if
${MKUPDATE} == "no"
681 .if defined
(_RUMPINSTALL.
${_P})
682 ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}}! ${_P} __progrumpinstall
684 ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}}! ${_P} __proginstall
686 .if
!defined
(BUILD
) && !make
(all) && !make
(${_P})
687 ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}}! .MADE
689 .if defined
(_PROGDEBUG.
${_P})
690 ${DESTDIR}${DEBUGDIR}${BINDIR.
${_P}}/${_PROGDEBUG.
${_P}}! ${_PROGDEBUG.
${_P}} __progdebuginstall
691 .if
!defined
(BUILD
) && !make
(all) && !make
(${_P})
692 ${DESTDIR}${DEBUGDIR}${BINDIR.
${_P}}/${_PROGDEBUG.
${_P}}! .MADE
694 .
endif # define(_PROGDEBUG.${_P})
695 .
else # MKUPDATE != no
696 .if defined
(_RUMPINSTALL.
${_P})
697 ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}}: ${_P} __progrumpinstall
699 ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}}: ${_P} __proginstall
701 .if
!defined
(BUILD
) && !make
(all) && !make
(${_P})
702 ${DESTDIR}${BINDIR.
${_P}}/${PROGNAME.
${_P}}: .MADE
704 .if defined
(_PROGDEBUG.
${_P})
705 ${DESTDIR}${DEBUGDIR}${BINDIR.
${_P}}/${_PROGDEBUG.
${_P}}: ${_PROGDEBUG.
${_P}} __progdebuginstall
706 .if
!defined
(BUILD
) && !make
(all) && !make
(${_P})
707 ${DESTDIR}${DEBUGDIR}${BINDIR.
${_P}}/${_PROGDEBUG.
${_P}}: .MADE
709 .
endif # defined(_PROGDEBUG.${_P})
710 .
endif # MKUPDATE != no
712 .
endif # !target(proginstall-${_P}) # }
715 lint-
${_P}: ${LOBJS.
${_P}}
716 .if defined
(LOBJS.
${_P}) && !empty
(LOBJS.
${_P})
717 ${LINT} ${LINTFLAGS} ${_LDFLAGS.
${_P}:C
/-L
[ ]*/-L
/Wg
:M-L
*} ${LOBJS.
${_P}} ${_LDADD.
${_P}}
720 .endfor
# _P in ${PROGS} ${PROGS_CXX} # }
722 .if defined
(OBJS
) && !empty
(OBJS
) && \
723 (empty
(PROGS
) && empty
(PROGS_CXX
))
724 CLEANFILES
+= ${OBJS} ${LOBJS}
727 .if
!target
(proginstall
)
728 proginstall
:: ${_PROG_INSTALL}
735 .if defined
(SCRIPTS
) && !target
(scriptsinstall
) # {
736 SCRIPTSDIR?
=${BINDIR}
737 SCRIPTSOWN?
=${BINOWN}
738 SCRIPTSGRP?
=${BINGRP}
739 SCRIPTSMODE?
=${BINMODE}
741 scriptsinstall
:: ${SCRIPTS
:@S@
${DESTDIR}${SCRIPTSDIR_
${S}:U
${SCRIPTSDIR}}/${SCRIPTSNAME_
${S}:U
${SCRIPTSNAME
:U
${S
:T
:R
}}}@
}
742 .PRECIOUS
: ${SCRIPTS
:@S@
${DESTDIR}${SCRIPTSDIR_
${S}:U
${SCRIPTSDIR}}/${SCRIPTSNAME_
${S}:U
${SCRIPTSNAME
:U
${S
:T
:R
}}}@
}
744 __scriptinstall
: .USE
747 -o
${SCRIPTSOWN_
${.ALLSRC
:T
}:U
${SCRIPTSOWN}} \
748 -g
${SCRIPTSGRP_
${.ALLSRC
:T
}:U
${SCRIPTSGRP}} \
749 -m
${SCRIPTSMODE_
${.ALLSRC
:T
}:U
${SCRIPTSMODE}} \
750 ${.ALLSRC
} ${.TARGET
}
752 .for S in
${SCRIPTS
:O
:u
}
753 .if
${MKUPDATE} == "no"
754 ${DESTDIR}${SCRIPTSDIR_
${S}:U
${SCRIPTSDIR}}/${SCRIPTSNAME_
${S}:U
${SCRIPTSNAME
:U
${S
:T
:R
}}}! ${S} __scriptinstall
755 .if
!defined
(BUILD
) && !make
(all) && !make
(${S})
756 ${DESTDIR}${SCRIPTSDIR_
${S}:U
${SCRIPTSDIR}}/${SCRIPTSNAME_
${S}:U
${SCRIPTSNAME
:U
${S
:T
:R
}}}! .MADE
759 ${DESTDIR}${SCRIPTSDIR_
${S}:U
${SCRIPTSDIR}}/${SCRIPTSNAME_
${S}:U
${SCRIPTSNAME
:U
${S
:T
:R
}}}: ${S} __scriptinstall
760 .if
!defined
(BUILD
) && !make
(all) && !make
(${S})
761 ${DESTDIR}${SCRIPTSDIR_
${S}:U
${SCRIPTSDIR}}/${SCRIPTSNAME_
${S}:U
${SCRIPTSNAME
:U
${S
:T
:R
}}}: .MADE
767 .if
!target
(scriptsinstall
)
770 .PHONY
: scriptsinstall
772 ##### Pull in related .mk logic
775 LINKSMODE?
= ${BINMODE}
776 .
include <bsd.man.mk
>
777 .
include <bsd.nls.mk
>
778 .
include <bsd.files.mk
>
779 .
include <bsd.inc.mk
>
780 .
include <bsd.links.mk
>
781 .
include <bsd.sys.mk
>
782 .
include <bsd.dep.mk
>
783 .
include <bsd.clang-analyze.mk
>
784 .
include <bsd.
clean.mk
>
786 ${TARGETS}: # ensure existence