184d9c625SLionel Sambuc# $NetBSD: bsd.prog.mk,v 1.286 2013/11/11 10:24:53 joerg Exp $ 2e1091647SArun Thomas# @(#)bsd.prog.mk 8.2 (Berkeley) 4/2/94 3e1091647SArun Thomas 4e1091647SArun Thomas.ifndef HOSTPROG 5e1091647SArun Thomas 6e1091647SArun Thomas.include <bsd.init.mk> 79152e1c5SLionel Sambuc.include <bsd.shlib.mk> 89152e1c5SLionel Sambuc.include <bsd.gcc.mk> 9b8a678efSLionel Sambuc.include <minix.gcov.mk> 109152e1c5SLionel Sambuc 11e1091647SArun Thomas# 12e1091647SArun Thomas# Definitions and targets shared among all programs built by a single 13e1091647SArun Thomas# Makefile. 14e1091647SArun Thomas# 15e1091647SArun Thomas 16e1091647SArun Thomas##### Basic targets 17e1091647SArun Thomasrealinstall: proginstall scriptsinstall 18e1091647SArun Thomas 199152e1c5SLionel Sambuc.gdbinit: 209152e1c5SLionel Sambuc rm -f .gdbinit 219152e1c5SLionel Sambuc.if defined(DESTDIR) && !empty(DESTDIR) 229152e1c5SLionel Sambuc echo "set solib-absolute-prefix ${DESTDIR}" > .gdbinit 239152e1c5SLionel Sambuc.else 249152e1c5SLionel Sambuc touch .gdbinit 25e1091647SArun Thomas.endif 269152e1c5SLionel Sambuc.for __gdbinit in ${GDBINIT} 279152e1c5SLionel Sambuc echo "source ${__gdbinit}" >> .gdbinit 289152e1c5SLionel Sambuc.endfor 299152e1c5SLionel Sambuc 309152e1c5SLionel SambucCLEANFILES+= a.out [Ee]rrs mklog core *.core .gdbinit 319152e1c5SLionel Sambuc 329152e1c5SLionel Sambuc.if defined(SHAREDSTRINGS) 339152e1c5SLionel SambucCLEANFILES+=strings 349152e1c5SLionel Sambuc.c.o: 359152e1c5SLionel Sambuc ${CC} -E ${CPPFLAGS} ${CFLAGS} ${.IMPSRC} | xstr -c - 369152e1c5SLionel Sambuc @${CC} ${CPPFLAGS} ${CFLAGS} -c x.c -o ${.TARGET} 3784d9c625SLionel Sambuc.if defined(CTFCONVERT) 3884d9c625SLionel Sambuc ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 3984d9c625SLionel Sambuc.endif 409152e1c5SLionel Sambuc @rm -f x.c 419152e1c5SLionel Sambuc 429152e1c5SLionel Sambuc.cc.o .cpp.o .cxx.o .C.o: 439152e1c5SLionel Sambuc ${CXX} -E ${CPPFLAGS} ${CXXFLAGS} ${.IMPSRC} | xstr -c - 449152e1c5SLionel Sambuc @mv -f x.c x.cc 459152e1c5SLionel Sambuc @${CXX} ${CPPFLAGS} ${CXXFLAGS} -c x.cc -o ${.TARGET} 4684d9c625SLionel Sambuc.if defined(CTFCONVERT) 4784d9c625SLionel Sambuc ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} 4884d9c625SLionel Sambuc.endif 499152e1c5SLionel Sambuc @rm -f x.cc 50e1091647SArun Thomas.endif 519152e1c5SLionel Sambuc 529152e1c5SLionel Sambuc.if defined(MKPIE) && (${MKPIE} != "no") 539152e1c5SLionel SambucCFLAGS+= ${PIE_CFLAGS} 549152e1c5SLionel SambucAFLAGS+= ${PIE_AFLAGS} 559152e1c5SLionel SambucLDFLAGS+= ${PIE_LDFLAGS} 569152e1c5SLionel Sambuc.endif 579152e1c5SLionel Sambuc 58e1091647SArun ThomasCFLAGS+= ${COPTS} 5984d9c625SLionel Sambuc.if defined(MKDEBUG) && (${MKDEBUG} != "no") 6084d9c625SLionel SambucCFLAGS+= -g 6184d9c625SLionel Sambuc.endif 62e1091647SArun ThomasOBJCFLAGS+= ${OBJCOPTS} 63e1091647SArun ThomasMKDEP_SUFFIXES?= .o .ln 64e1091647SArun Thomas 659152e1c5SLionel Sambuc# CTF preserve debug symbols 669152e1c5SLionel Sambuc.if defined(MKDTRACE) && (${MKDTRACE} != "no") && (${CFLAGS:M-g} != "") 679152e1c5SLionel SambucCTFFLAGS+= -g 689152e1c5SLionel SambucCTFMFLAGS+= -g 699152e1c5SLionel Sambuc.endif 709152e1c5SLionel Sambuc 719152e1c5SLionel Sambuc# ELF platforms depend on crti.o, crtbegin.o, crtend.o, and crtn.o 729152e1c5SLionel Sambuc.ifndef LIBCRTBEGIN 739152e1c5SLionel SambucLIBCRTBEGIN= ${DESTDIR}/usr/lib/crti.o ${_GCC_CRTBEGIN} 749152e1c5SLionel Sambuc.MADE: ${LIBCRTBEGIN} 759152e1c5SLionel Sambuc.endif 769152e1c5SLionel Sambuc.ifndef LIBCRTEND 779152e1c5SLionel SambucLIBCRTEND= ${_GCC_CRTEND} ${DESTDIR}/usr/lib/crtn.o 789152e1c5SLionel Sambuc.MADE: ${LIBCRTEND} 799152e1c5SLionel Sambuc.endif 809152e1c5SLionel Sambuc_SHLINKER= ${SHLINKDIR}/ld.elf_so 819152e1c5SLionel Sambuc 829152e1c5SLionel Sambuc.ifndef LIBCRT0 839152e1c5SLionel SambucLIBCRT0= ${DESTDIR}/usr/lib/crt0.o 849152e1c5SLionel Sambuc.MADE: ${LIBCRT0} 859152e1c5SLionel Sambuc.endif 869152e1c5SLionel Sambuc 8784d9c625SLionel Sambuc.ifndef LIBCRTI 8884d9c625SLionel SambucLIBCRTI= ${DESTDIR}/usr/lib/crti.o 8984d9c625SLionel Sambuc.MADE: ${LIBCRTI} 9084d9c625SLionel Sambuc.endif 9184d9c625SLionel Sambuc 92e1091647SArun Thomas##### Installed system library definitions 93e1091647SArun Thomas# 94e1091647SArun Thomas# E.g. 95e1091647SArun Thomas# LIBC?=${DESTDIR}/usr/lib/libc.a 96e1091647SArun Thomas# LIBX11?=${DESTDIR}/usr/X11R7/lib/libX11.a 97e1091647SArun Thomas# etc.. 989152e1c5SLionel Sambuc# NB: If you are a library here, add it in bsd.README 99e1091647SArun Thomas 100e1091647SArun Thomas.for _lib in \ 10111be35a1SLionel Sambuc archive \ 10284d9c625SLionel Sambuc asn1 \ 1030cdf705cSLionel Sambuc atf_c \ 1040cdf705cSLionel Sambuc atf_cxx \ 10584d9c625SLionel Sambuc bind9 \ 10684d9c625SLionel Sambuc bluetooth \ 10784d9c625SLionel Sambuc bsdmalloc \ 1080cdf705cSLionel Sambuc bz2 \ 1099152e1c5SLionel Sambuc c \ 1100cdf705cSLionel Sambuc c_pic \ 11184d9c625SLionel Sambuc com_err \ 11284d9c625SLionel Sambuc compat \ 1130cdf705cSLionel Sambuc crypt \ 11484d9c625SLionel Sambuc crypto \ 11584d9c625SLionel Sambuc crypto_idea \ 11684d9c625SLionel Sambuc crypto_mdc2 \ 11784d9c625SLionel Sambuc crypto_rc5 \ 1189152e1c5SLionel Sambuc curses \ 11984d9c625SLionel Sambuc dbm \ 12084d9c625SLionel Sambuc des \ 12184d9c625SLionel Sambuc dns \ 1229152e1c5SLionel Sambuc edit \ 12384d9c625SLionel Sambuc event \ 1249152e1c5SLionel Sambuc expat \ 12584d9c625SLionel Sambuc fetch \ 12684d9c625SLionel Sambuc fl \ 12784d9c625SLionel Sambuc form \ 12884d9c625SLionel Sambuc g2c \ 12984d9c625SLionel Sambuc gcc \ 13084d9c625SLionel Sambuc gnumalloc \ 13184d9c625SLionel Sambuc gssapi \ 13284d9c625SLionel Sambuc hdb \ 13384d9c625SLionel Sambuc heimbase \ 13484d9c625SLionel Sambuc heimntlm \ 13584d9c625SLionel Sambuc hx509 \ 13684d9c625SLionel Sambuc intl \ 13784d9c625SLionel Sambuc ipsec \ 13884d9c625SLionel Sambuc isc \ 13984d9c625SLionel Sambuc isccc \ 14084d9c625SLionel Sambuc isccfg \ 14184d9c625SLionel Sambuc kadm5clnt \ 14284d9c625SLionel Sambuc kadm5srv \ 14384d9c625SLionel Sambuc kafs \ 14484d9c625SLionel Sambuc krb5 \ 14584d9c625SLionel Sambuc kvm \ 1469152e1c5SLionel Sambuc l \ 14784d9c625SLionel Sambuc lber \ 14884d9c625SLionel Sambuc ldap \ 14984d9c625SLionel Sambuc ldap_r \ 15011be35a1SLionel Sambuc lua \ 15184d9c625SLionel Sambuc lwres \ 1529152e1c5SLionel Sambuc m \ 1530cdf705cSLionel Sambuc magic \ 15484d9c625SLionel Sambuc menu \ 15511be35a1SLionel Sambuc objc \ 15684d9c625SLionel Sambuc ossaudio \ 15784d9c625SLionel Sambuc pam \ 15884d9c625SLionel Sambuc pcap \ 15984d9c625SLionel Sambuc pci \ 16084d9c625SLionel Sambuc pmc \ 16184d9c625SLionel Sambuc posix \ 16284d9c625SLionel Sambuc pthread \ 16384d9c625SLionel Sambuc pthread_dbg \ 16484d9c625SLionel Sambuc puffs \ 16584d9c625SLionel Sambuc quota \ 16684d9c625SLionel Sambuc radius \ 16784d9c625SLionel Sambuc resolv \ 1680cdf705cSLionel Sambuc rmt \ 16984d9c625SLionel Sambuc roken \ 17084d9c625SLionel Sambuc rpcsvc \ 17184d9c625SLionel Sambuc rt \ 17284d9c625SLionel Sambuc rump \ 17384d9c625SLionel Sambuc rumpfs_cd9660fs \ 17484d9c625SLionel Sambuc rumpfs_efs \ 17584d9c625SLionel Sambuc rumpfs_ext2fs \ 17684d9c625SLionel Sambuc rumpfs_ffs \ 17784d9c625SLionel Sambuc rumpfs_hfs \ 17884d9c625SLionel Sambuc rumpfs_lfs \ 17984d9c625SLionel Sambuc rumpfs_msdosfs \ 18084d9c625SLionel Sambuc rumpfs_nfs \ 18184d9c625SLionel Sambuc rumpfs_ntfs \ 18284d9c625SLionel Sambuc rumpfs_syspuffs \ 18384d9c625SLionel Sambuc rumpfs_tmpfs \ 18484d9c625SLionel Sambuc rumpfs_udf \ 18584d9c625SLionel Sambuc rumpfs_ufs \ 18684d9c625SLionel Sambuc rumpuser \ 18784d9c625SLionel Sambuc saslc \ 18884d9c625SLionel Sambuc skey \ 18984d9c625SLionel Sambuc sl \ 19011be35a1SLionel Sambuc sqlite3 \ 19184d9c625SLionel Sambuc ss \ 19284d9c625SLionel Sambuc ssh \ 19384d9c625SLionel Sambuc ssl \ 19484d9c625SLionel Sambuc ssp \ 19511be35a1SLionel Sambuc stdcxx \ 19684d9c625SLionel Sambuc supcxx \ 1970cdf705cSLionel Sambuc terminfo \ 19884d9c625SLionel Sambuc tre \ 19984d9c625SLionel Sambuc usbhid \ 2000cdf705cSLionel Sambuc util \ 20184d9c625SLionel Sambuc wind \ 20284d9c625SLionel Sambuc wrap \ 20384d9c625SLionel Sambuc y \ 2040cdf705cSLionel Sambuc z 2050cdf705cSLionel Sambuc 2060cdf705cSLionel Sambuc.ifndef LIB${_lib:tu} 2070cdf705cSLionel SambucLIB${_lib:tu}= ${DESTDIR}/usr/lib/lib${_lib:S/xx/++/:S/atf_c/atf-c/}.a 2080cdf705cSLionel Sambuc.MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded 2090cdf705cSLionel Sambuc.endif 2100cdf705cSLionel Sambuc.endfor 2110cdf705cSLionel Sambuc 2120cdf705cSLionel Sambuc# Minix libraries 2130cdf705cSLionel Sambuc.for _lib in \ 2140cdf705cSLionel Sambuc audiodriver \ 2150cdf705cSLionel Sambuc bdev \ 2160cdf705cSLionel Sambuc blockdriver \ 2170cdf705cSLionel Sambuc chardriver \ 21887d31b06SDavid van Moolenbroek clkconf \ 21987d31b06SDavid van Moolenbroek compat_minix \ 22087d31b06SDavid van Moolenbroek ddekit \ 22187d31b06SDavid van Moolenbroek ddekit_usb_client \ 22287d31b06SDavid van Moolenbroek ddekit_usb_server \ 22387d31b06SDavid van Moolenbroek devman \ 2240cdf705cSLionel Sambuc elf \ 2259152e1c5SLionel Sambuc exec \ 22687d31b06SDavid van Moolenbroek gpio \ 22787d31b06SDavid van Moolenbroek hgfs \ 22887d31b06SDavid van Moolenbroek i2cdriver \ 22987d31b06SDavid van Moolenbroek inputdriver \ 23087d31b06SDavid van Moolenbroek lwip \ 2319152e1c5SLionel Sambuc minc \ 23287d31b06SDavid van Moolenbroek minixfs \ 2339152e1c5SLionel Sambuc minlib \ 234d3d33afeSLionel Sambuc mthread \ 2350cdf705cSLionel Sambuc netdriver \ 23687d31b06SDavid van Moolenbroek netsock \ 2370cdf705cSLionel Sambuc sffs \ 2380cdf705cSLionel Sambuc sys \ 2390cdf705cSLionel Sambuc timers \ 24087d31b06SDavid van Moolenbroek usb \ 24187d31b06SDavid van Moolenbroek vboxfs \ 24287d31b06SDavid van Moolenbroek virtio \ 24387d31b06SDavid van Moolenbroek vtreefs 244e1091647SArun Thomas.ifndef LIB${_lib:tu} 2459152e1c5SLionel SambucLIB${_lib:tu}= ${DESTDIR}/usr/lib/lib${_lib:S/xx/++/:S/atf_c/atf-c/}.a 246e1091647SArun Thomas.MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded 247e1091647SArun Thomas.endif 248e1091647SArun Thomas.endfor 249e1091647SArun Thomas 2509152e1c5SLionel Sambuc# PAM applications, if linked statically, need more libraries 2519152e1c5SLionel Sambuc.if (${MKPIC} == "no") 2529152e1c5SLionel Sambuc.if (${MKCRYPTO} != "no") 2539152e1c5SLionel SambucPAM_STATIC_LDADD+= -lssh 2549152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBSSH} 2559152e1c5SLionel Sambuc.endif 2569152e1c5SLionel Sambuc.if (${MKKERBEROS} != "no") 2579152e1c5SLionel SambucPAM_STATIC_LDADD+= -lkafs -lkrb5 -lhx509 -lwind -lasn1 \ 2589152e1c5SLionel Sambuc -lroken -lcom_err -lheimbase -lcrypto 2599152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBKAFS} ${LIBKRB5} ${LIBHX509} ${LIBWIND} ${LIBASN1} \ 2609152e1c5SLionel Sambuc ${LIBROKEN} ${LIBCOM_ERR} ${LIBHEIMBASE} ${LIBCRYPTO} 2619152e1c5SLionel Sambuc.endif 2629152e1c5SLionel Sambuc.if (${MKSKEY} != "no") 2639152e1c5SLionel SambucPAM_STATIC_LDADD+= -lskey 2649152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBSKEY} 2659152e1c5SLionel Sambuc.endif 2669152e1c5SLionel SambucPAM_STATIC_LDADD+= -lradius -lcrypt -lrpcsvc -lutil 2679152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBRADIUS} ${LIBCRYPT} ${LIBRPCSVC} ${LIBUTIL} 2689152e1c5SLionel Sambuc.else 2699152e1c5SLionel SambucPAM_STATIC_LDADD= 2709152e1c5SLionel SambucPAM_STATIC_DPADD= 271e1091647SArun Thomas.endif 272e1091647SArun Thomas 27384d9c625SLionel Sambuc.if defined(__MINIX) && ${MACHINE_ARCH} == "earm" 27484d9c625SLionel Sambuc# LSC: On ARM, when compiling statically, with gcc, lgcc_eh is required 27584d9c625SLionel SambucLDFLAGS+= ${${ACTIVE_CC} == "gcc":? -lgcc_eh:} 27684d9c625SLionel Sambuc.endif # defined(__MINIX) && ${MACHINE_ARCH} == "earm" 27784d9c625SLionel Sambuc 2789152e1c5SLionel Sambuc# NB: If you are a library here, add it in bsd.README 279e1091647SArun Thomas.for _lib in \ 2809152e1c5SLionel Sambuc FS \ 2819152e1c5SLionel Sambuc GL \ 2829152e1c5SLionel Sambuc GLU \ 2839152e1c5SLionel Sambuc ICE \ 2849152e1c5SLionel Sambuc SM \ 2859152e1c5SLionel Sambuc X11 \ 2869152e1c5SLionel Sambuc XTrap \ 2879152e1c5SLionel Sambuc Xau \ 2889152e1c5SLionel Sambuc Xaw \ 2899152e1c5SLionel Sambuc Xdmcp \ 2909152e1c5SLionel Sambuc Xext \ 2919152e1c5SLionel Sambuc Xfont \ 2929152e1c5SLionel Sambuc Xft \ 2939152e1c5SLionel Sambuc Xi \ 2949152e1c5SLionel Sambuc Xinerama \ 2959152e1c5SLionel Sambuc Xmu \ 2969152e1c5SLionel Sambuc Xmuu \ 2979152e1c5SLionel Sambuc Xpm \ 2989152e1c5SLionel Sambuc Xrandr \ 2999152e1c5SLionel Sambuc Xrender \ 3009152e1c5SLionel Sambuc Xss \ 3019152e1c5SLionel Sambuc Xt \ 3029152e1c5SLionel Sambuc Xtst \ 3039152e1c5SLionel Sambuc Xv \ 3049152e1c5SLionel Sambuc Xxf86dga \ 3059152e1c5SLionel Sambuc Xxf86misc \ 3069152e1c5SLionel Sambuc Xxf86vm \ 3079152e1c5SLionel Sambuc dps \ 3089152e1c5SLionel Sambuc fntstubs \ 3099152e1c5SLionel Sambuc fontcache \ 3109152e1c5SLionel Sambuc fontconfig \ 3119152e1c5SLionel Sambuc fontenc \ 3129152e1c5SLionel Sambuc freetype \ 3139152e1c5SLionel Sambuc lbxutil \ 3149152e1c5SLionel Sambuc xkbfile 315e1091647SArun Thomas.ifndef LIB${_lib:tu} 316e1091647SArun ThomasLIB${_lib:tu}= ${DESTDIR}${X11USRLIBDIR}/lib${_lib}.a 317e1091647SArun Thomas.MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded 318e1091647SArun Thomas.endif 319e1091647SArun Thomas.endfor 320e1091647SArun Thomas 32184d9c625SLionel Sambuc# Ugly one-offs 32284d9c625SLionel SambucLIBX11_XCB= ${DESTDIR}${X11USRLIBDIR}/libX11-xcb.a 32384d9c625SLionel SambucLIBXCB= ${DESTDIR}${X11USRLIBDIR}/libxcb.a 32484d9c625SLionel Sambuc 325e1091647SArun Thomas.if defined(RESCUEDIR) 326e1091647SArun ThomasCPPFLAGS+= -DRESCUEDIR=\"${RESCUEDIR}\" 327e1091647SArun Thomas.endif 328e1091647SArun Thomas 3299152e1c5SLionel Sambuc_PROGLDOPTS= 3309152e1c5SLionel Sambuc.if ${SHLINKDIR} != "/usr/libexec" # XXX: change or remove if ld.so moves 3319152e1c5SLionel Sambuc_PROGLDOPTS+= -Wl,-dynamic-linker=${_SHLINKER} 3329152e1c5SLionel Sambuc.endif 3339152e1c5SLionel Sambuc.if ${SHLIBDIR} != "/usr/lib" 3349152e1c5SLionel Sambuc_PROGLDOPTS+= -Wl,-rpath,${SHLIBDIR} \ 3359152e1c5SLionel Sambuc -L=${SHLIBDIR} 3369152e1c5SLionel Sambuc.elif ${SHLIBINSTALLDIR} != "/usr/lib" 3379152e1c5SLionel Sambuc_PROGLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR} \ 3389152e1c5SLionel Sambuc -L=${SHLIBINSTALLDIR} 3399152e1c5SLionel Sambuc.endif 3409152e1c5SLionel Sambuc 341e1091647SArun Thomas__proginstall: .USE 342e1091647SArun Thomas ${_MKTARGET_INSTALL} 343e1091647SArun Thomas ${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 344ff569068SArun Thomas ${STRIPFLAG} ${.ALLSRC} ${.TARGET} 345e1091647SArun Thomas 3469152e1c5SLionel Sambuc__progrumpinstall: .USE 3479152e1c5SLionel Sambuc ${_MKTARGET_INSTALL} 3489152e1c5SLionel Sambuc ${INSTALL_FILE} -o ${RUMPBINOWN} -g ${RUMPBINGRP} -m ${RUMPBINMODE} \ 3499152e1c5SLionel Sambuc ${STRIPFLAG} ${.ALLSRC} ${.TARGET} 3509152e1c5SLionel Sambuc 351e1091647SArun Thomas__progdebuginstall: .USE 352e1091647SArun Thomas ${_MKTARGET_INSTALL} 353e1091647SArun Thomas ${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \ 354ff569068SArun Thomas ${.ALLSRC} ${.TARGET} 355e1091647SArun Thomas 356e1091647SArun Thomas 357e1091647SArun Thomas 358e1091647SArun Thomas# 359e1091647SArun Thomas# Backwards compatibility with Makefiles that assume that bsd.prog.mk 360e1091647SArun Thomas# can only build a single binary. 361e1091647SArun Thomas# 362e1091647SArun Thomas 363e1091647SArun Thomas_APPEND_MANS=yes 364e1091647SArun Thomas_APPEND_SRCS=yes 365e1091647SArun Thomas 366e1091647SArun Thomas_CCLINKFLAGS= 367e1091647SArun Thomas 368e1091647SArun Thomas.if defined(PROG_CXX) 369e1091647SArun ThomasPROG= ${PROG_CXX} 370e1091647SArun Thomas_CCLINK= ${CXX} ${_CCLINKFLAGS} 37118e90974SBen Gras 37218e90974SBen Gras.if defined(__MINIX) 37318e90974SBen Gras# BJG - stack unwinding (for C++ exceptions) doesn't work on static executables when built with llvm. 37418e90974SBen GrasLDSTATIC= -dynamic 37518e90974SBen Gras.endif # defined(__MINIX) 376e1091647SArun Thomas.endif 377e1091647SArun Thomas 3789152e1c5SLionel Sambuc.if defined(RUMPPRG) 3799152e1c5SLionel SambucPROG= ${RUMPPRG} 3809152e1c5SLionel Sambuc. ifndef CRUNCHEDPROG 3819152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3829152e1c5SLionel SambucPROGS= ${RUMPPRG} rump.${RUMPPRG} 3839152e1c5SLionel Sambuc. else 3849152e1c5SLionel SambucPROGS= ${RUMPPRG} 3859152e1c5SLionel Sambuc. endif 3869152e1c5SLionel Sambuc. if defined(SRCS) 3879152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3889152e1c5SLionel SambucSRCS.rump.${PROG}:= ${SRCS} ${PROG}_rumpops.c ${RUMPSRCS} 3899152e1c5SLionel Sambuc. endif 3909152e1c5SLionel SambucSRCS+= ${PROG}_hostops.c 3919152e1c5SLionel Sambuc. else 3929152e1c5SLionel SambucSRCS= ${PROG}.c ${PROG}_hostops.c 3939152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3949152e1c5SLionel SambucSRCS.rump.${PROG}= ${PROG}.c ${PROG}_rumpops.c ${RUMPSRCS} 3959152e1c5SLionel Sambuc. endif 3969152e1c5SLionel Sambuc. endif 3979152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3989152e1c5SLionel SambucDPSRCS+= ${PROG}_rumpops.c ${RUMPSRCS} 3999152e1c5SLionel SambucLDADD.rump.${PROG}+= -lrumpclient 4009152e1c5SLionel SambucDPADD.rump.${PROG}+= ${LIBRUMPCLIENT} 4019152e1c5SLionel SambucMAN.rump.${PROG}= # defined but feeling empty 4029152e1c5SLionel Sambuc_RUMPINSTALL.rump.${PROG}=# defined 4039152e1c5SLionel Sambuc. endif 4049152e1c5SLionel Sambuc. else # CRUNCHEDPROG 4059152e1c5SLionel SambucPROGS= ${PROG} 4069152e1c5SLionel SambucCPPFLAGS+= -DCRUNCHOPS 4079152e1c5SLionel Sambuc. endif 4089152e1c5SLionel Sambuc.endif 4099152e1c5SLionel Sambuc 410e1091647SArun Thomas.if defined(PROG) 411e1091647SArun Thomas_CCLINK?= ${CC} ${_CCLINKFLAGS} 412e1091647SArun Thomas. if defined(MAN) 413e1091647SArun ThomasMAN.${PROG}= ${MAN} 414e1091647SArun Thomas_APPEND_MANS= no 415e1091647SArun Thomas. endif 416e1091647SArun Thomas. if !defined(OBJS) 417e1091647SArun ThomasOBJS= ${OBJS.${PROG}} 418e1091647SArun Thomas. endif 419e1091647SArun Thomas. if defined(PROGNAME) 420e1091647SArun ThomasPROGNAME.${PROG}= ${PROGNAME} 421e1091647SArun Thomas. endif 422e1091647SArun Thomas. if defined(SRCS) 423e1091647SArun ThomasSRCS.${PROG}= ${SRCS} 424e1091647SArun Thomas_APPEND_SRCS= no 425e1091647SArun Thomas. endif 426e1091647SArun Thomas.endif 427e1091647SArun Thomas 428e1091647SArun Thomas# Turn the single-program PROG and PROG_CXX variables into their multi-word 429e1091647SArun Thomas# counterparts, PROGS and PROGS_CXX. 4309152e1c5SLionel Sambuc.if !defined(RUMPPRG) 431e1091647SArun Thomas. if defined(PROG_CXX) && !defined(PROGS_CXX) 432e1091647SArun ThomasPROGS_CXX= ${PROG_CXX} 433e1091647SArun Thomas. elif defined(PROG) && !defined(PROGS) 434e1091647SArun ThomasPROGS= ${PROG} 435e1091647SArun Thomas. endif 4369152e1c5SLionel Sambuc.endif 437e1091647SArun Thomas 43884d9c625SLionel Sambuc##### Libraries that this may depend upon. 43984d9c625SLionel Sambuc.if defined(PROGDPLIBS) # { 44084d9c625SLionel Sambuc.for _lib _dir in ${PROGDPLIBS} 44184d9c625SLionel Sambuc.if !defined(BINDO.${_lib}) 44284d9c625SLionel SambucPROGDO.${_lib}!= cd "${_dir}" && ${PRINTOBJDIR} 44384d9c625SLionel Sambuc.MAKEOVERRIDES+=PROGDO.${_lib} 44484d9c625SLionel Sambuc.endif 44584d9c625SLionel SambucLDADD+= -L${PROGDO.${_lib}} -l${_lib} 44684d9c625SLionel Sambuc.if exists(${PROGDO.${_lib}}/lib${_lib}_pic.a) 44784d9c625SLionel SambucDPADD+= ${PROGDO.${_lib}}/lib${_lib}_pic.a 44884d9c625SLionel Sambuc.elif exists(${PROGDO.${_lib}}/lib${_lib}.so) 44984d9c625SLionel SambucDPADD+= ${PROGDO.${_lib}}/lib${_lib}.so 45084d9c625SLionel Sambuc.else 45184d9c625SLionel SambucDPADD+= ${PROGDO.${_lib}}/lib${_lib}.a 45284d9c625SLionel Sambuc.endif 45384d9c625SLionel Sambuc.endfor 45484d9c625SLionel Sambuc.endif # } 455e1091647SArun Thomas# 456e1091647SArun Thomas# Per-program definitions and targets. 457e1091647SArun Thomas# 458e1091647SArun Thomas 4599152e1c5SLionel Sambuc_CCLINK.CDEFAULT= ${CC} ${_CCLINKFLAGS} 460e1091647SArun Thomas# Definitions specific to C programs. 461e1091647SArun Thomas.for _P in ${PROGS} 462e1091647SArun ThomasSRCS.${_P}?= ${_P}.c 463e1091647SArun Thomas_CCLINK.${_P}= ${CC} ${_CCLINKFLAGS} 4649152e1c5SLionel Sambuc_CFLAGS.${_P}= ${CFLAGS} ${CPUFLAGS} 4659152e1c5SLionel Sambuc_CPPFLAGS.${_P}= ${CPPFLAGS} 4669152e1c5SLionel Sambuc_COPTS.${_P}= ${COPTS} 467e1091647SArun Thomas.endfor 468e1091647SArun Thomas 4699152e1c5SLionel Sambuc_CCLINK.CXXDEFAULT= ${CXX} ${_CCLINKFLAGS} 470e1091647SArun Thomas# Definitions specific to C++ programs. 471e1091647SArun Thomas.for _P in ${PROGS_CXX} 472e1091647SArun ThomasSRCS.${_P}?= ${_P}.cc 473e1091647SArun Thomas_CCLINK.${_P}= ${CXX} ${_CCLINKFLAGS} 474e1091647SArun Thomas.endfor 475e1091647SArun Thomas 476e1091647SArun Thomas# Language-independent definitions. 4774684ddb6SLionel Sambuc.if defined(__MINIX) 4784684ddb6SLionel Sambuc.if ${USE_BITCODE:Uno} == "yes" 4792e304675SAnton KuijstenCFLAGS+= -flto 4804684ddb6SLionel Sambuc.endif # ${USE_BITCODE:Uno} == "yes" 4812e304675SAnton Kuijsten 4824684ddb6SLionel Sambuc.if ${USE_BITCODE:Uyes} == "no" 4834684ddb6SLionel Sambuc#LSC Gold linker seems to require the library directory to be set up if 4844684ddb6SLionel Sambuc# a sysroot parameter has been given. 4854684ddb6SLionel SambucLDFLAGS+= -L ${DESTDIR}/usr/lib 4864684ddb6SLionel Sambuc.endif # ${USE_BITCODE:U} == "no" 4874684ddb6SLionel Sambuc.endif # defined(__MINIX) 48884d9c625SLionel Sambuc 48984d9c625SLionel Sambuc.for _P in ${PROGS} ${PROGS_CXX} # { 49084d9c625SLionel Sambuc 491e1091647SArun ThomasBINDIR.${_P}?= ${BINDIR} 492e1091647SArun ThomasPROGNAME.${_P}?= ${_P} 493e1091647SArun Thomas 4949152e1c5SLionel Sambuc.if ${MKDEBUG} != "no" && !commands(${_P}) 495e1091647SArun Thomas_PROGDEBUG.${_P}:= ${PROGNAME.${_P}}.debug 496e1091647SArun Thomas.endif 497e1091647SArun Thomas 4989152e1c5SLionel Sambuc.if defined(PAXCTL_FLAGS) 4999152e1c5SLionel SambucPAXCTL_FLAGS.${_P}?= ${PAXCTL_FLAGS} 5009152e1c5SLionel Sambuc.endif 5019152e1c5SLionel Sambuc 502e1091647SArun Thomas##### PROG specific flags. 503e1091647SArun Thomas 5049152e1c5SLionel Sambuc_DPADD.${_P}= ${DPADD} ${DPADD.${_P}} 505e1091647SArun Thomas_LDADD.${_P}= ${LDADD} ${LDADD.${_P}} 506e1091647SArun Thomas_LDFLAGS.${_P}= ${LDFLAGS} ${LDFLAGS.${_P}} 507e1091647SArun Thomas_LDSTATIC.${_P}= ${LDSTATIC} ${LDSTATIC.${_P}} 508e1091647SArun Thomas 509e1091647SArun Thomas##### Build and install rules 510e1091647SArun Thomas.if !empty(_APPEND_SRCS:M[Yy][Ee][Ss]) 511e1091647SArun ThomasSRCS+= ${SRCS.${_P}} # For bsd.dep.mk 512e1091647SArun Thomas.endif 513e1091647SArun Thomas 514e1091647SArun Thomas_YPSRCS.${_P}= ${SRCS.${_P}:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS.${_P}:M*.y:.y=.h}} 515e1091647SArun Thomas 516e1091647SArun ThomasDPSRCS+= ${_YPSRCS.${_P}} 517e1091647SArun ThomasCLEANFILES+= ${_YPSRCS.${_P}} 518e1091647SArun Thomas 519e1091647SArun Thomas.if !empty(SRCS.${_P}:N*.h:N*.sh:N*.fth) 520e1091647SArun ThomasOBJS.${_P}+= ${SRCS.${_P}:N*.h:N*.sh:N*.fth:R:S/$/.o/g} 521e1091647SArun ThomasLOBJS.${_P}+= ${LSRCS:.c=.ln} ${SRCS.${_P}:M*.c:.c=.ln} 522e1091647SArun Thomas.endif 523e1091647SArun Thomas 524e1091647SArun Thomas.if defined(OBJS.${_P}) && !empty(OBJS.${_P}) # { 525e1091647SArun Thomas.NOPATH: ${OBJS.${_P}} ${_P} ${_YPSRCS.${_P}} 526e1091647SArun Thomas 5279152e1c5SLionel Sambuc.if (defined(USE_COMBINE) && ${USE_COMBINE} != "no" && !commands(${_P}) \ 5289152e1c5SLionel Sambuc && (${_CCLINK.${_P}} == ${_CCLINK.CDEFAULT} \ 5299152e1c5SLionel Sambuc || ${_CCLINK.${_P}} == ${_CCLINK.CXXDEFAULT}) \ 5309152e1c5SLionel Sambuc && !defined(NOCOMBINE.${_P}) && !defined(NOCOMBINE)) 5319152e1c5SLionel Sambuc.for f in ${SRCS.${_P}:N*.h:N*.sh:N*.fth:C/\.[yl]$/.c/g} 5329152e1c5SLionel Sambuc#_XFLAGS.$f := ${CPPFLAGS.$f:D1} ${CPUFLAGS.$f:D2} \ 5339152e1c5SLionel Sambuc# ${COPTS.$f:D3} ${OBJCOPTS.$f:D4} ${CXXFLAGS.$f:D5} 5349152e1c5SLionel Sambuc.if (${CPPFLAGS.$f:D1} == "1" || ${CPUFLAGS.$f:D2} == "2" \ 5359152e1c5SLionel Sambuc || ${COPTS.$f:D3} == "3" || ${OBJCOPTS.$f:D4} == "4" \ 5369152e1c5SLionel Sambuc || ${CXXFLAGS.$f:D5} == "5") \ 5379152e1c5SLionel Sambuc || ("${f:M*.[cyl]}" == "" || commands(${f:R:S/$/.o/})) 5389152e1c5SLionel SambucXOBJS.${_P}+= ${f:R:S/$/.o/} 5399152e1c5SLionel Sambuc.else 5409152e1c5SLionel SambucXSRCS.${_P}+= ${f} 5419152e1c5SLionel SambucNODPSRCS+= ${f} 5429152e1c5SLionel Sambuc.endif 5439152e1c5SLionel Sambuc.endfor 5449152e1c5SLionel Sambuc 54584d9c625SLionel Sambuc${_P}: .gdbinit ${LIBCRT0} ${LIBCRTI} ${XOBJS.${_P}} ${SRCS.${_P}} \ 54684d9c625SLionel Sambuc ${DPSRCS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${_DPADD.${_P}} 5479152e1c5SLionel Sambuc ${_MKTARGET_LINK} 5489152e1c5SLionel Sambuc.if defined(DESTDIR) 5499152e1c5SLionel Sambuc ${_CCLINK.${_P}} -Wl,-nostdlib \ 5509152e1c5SLionel Sambuc ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \ 5519152e1c5SLionel Sambuc -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \ 5529152e1c5SLionel Sambuc -MD --combine ${_CPPFLAGS.${_P}} ${_CFLAGS.${_P}} ${_COPTS.${_P}} \ 5539152e1c5SLionel Sambuc ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \ 5549152e1c5SLionel Sambuc ${_LDADD.${_P}} -L${_GCC_LIBGCCDIR} -L${DESTDIR}/usr/lib 5559152e1c5SLionel Sambuc.else 5569152e1c5SLionel Sambuc ${_CCLINK.${_P}} ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \ 5579152e1c5SLionel Sambuc -MD --combine ${_CPPFLAGS.${_P}} ${_COPTS.${_P}} 5589152e1c5SLionel Sambuc ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \ 5599152e1c5SLionel Sambuc ${_LDADD.${_P}} 5609152e1c5SLionel Sambuc.endif # defined(DESTDIR) 5619152e1c5SLionel Sambuc.if defined(CTFMERGE) 5629152e1c5SLionel Sambuc ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}} 5639152e1c5SLionel Sambuc.endif 5649152e1c5SLionel Sambuc.if defined(PAXCTL_FLAGS.${_P}) 5659152e1c5SLionel Sambuc ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET} 5669152e1c5SLionel Sambuc.endif 5679152e1c5SLionel Sambuc.if ${MKSTRIPIDENT} != "no" 5689152e1c5SLionel Sambuc ${OBJCOPY} -R .ident ${.TARGET} 5699152e1c5SLionel Sambuc.endif 5709152e1c5SLionel Sambuc 5719152e1c5SLionel SambucCLEANFILES+= ${_P}.d 5729152e1c5SLionel Sambuc.if exists(${_P}.d) 5739152e1c5SLionel Sambuc.include "${_P}.d" # include -MD depend for program. 5749152e1c5SLionel Sambuc.endif 5759152e1c5SLionel Sambuc.else # USE_COMBINE 5769152e1c5SLionel Sambuc 577e1091647SArun Thomas${OBJS.${_P}} ${LOBJS.${_P}}: ${DPSRCS} 578e1091647SArun Thomas 57984d9c625SLionel Sambuc.if defined(__MINIX) && ${USE_BITCODE:Uno} == "yes" 5802e304675SAnton KuijstenCLEANFILES+= ${_P}.opt.bcl ${_P}.bcl ${_P}.bcl.o 5812e304675SAnton Kuijsten 5825ba302fdSKoustubha BhatOPTFLAGS.${_P}?= ${OPTFLAGS} 583*9f6977d2SCristiano GiuffridaBITCODE_LD_FLAGS_1ST.${_P}+= ${BITCODE_LD_FLAGS_1ST} 584*9f6977d2SCristiano GiuffridaBITCODE_LD_FLAGS_2ND.${_P}+= ${BITCODE_LD_FLAGS_2ND} 5855ba302fdSKoustubha Bhat 58684d9c625SLionel Sambuc${_P}.bcl: .gdbinit ${LIBCRT0} ${LIBCRTI} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} \ 58784d9c625SLionel Sambuc ${LIBCRTEND} ${_DPADD.${_P}} 5882e304675SAnton Kuijsten ${_MKTARGET_LINK} 5892e304675SAnton Kuijsten ${_CCLINK.${_P}} \ 5902e304675SAnton Kuijsten -o ${.TARGET} \ 5912e304675SAnton Kuijsten -nostartfiles \ 5924684ddb6SLionel Sambuc -L${DESTDIR}/usr/lib/bc \ 5932e304675SAnton Kuijsten ${OBJS.${_P}} ${LLVM_LINK_ARGS} ${_LDADD.${_P}:N-shared} \ 5944684ddb6SLionel Sambuc ${_LDSTATIC.${_P}} ${_PROGLDOPTS} \ 5952e304675SAnton Kuijsten -Wl,-r \ 596*9f6977d2SCristiano Giuffrida ${BITCODE_LD_FLAGS_1ST.${_P}} \ 5974684ddb6SLionel Sambuc -Wl,-plugin-opt=emit-llvm 5982e304675SAnton Kuijsten 5992e304675SAnton Kuijsten${_P}.opt.bcl: ${_P}.bcl ${LLVM_PASS} 6002e304675SAnton Kuijsten ${_MKTARGET_LINK} 6015ba302fdSKoustubha Bhat ${OPT} ${OPTFLAGS.${_P}} -o ${.TARGET} ${_P}.bcl 6022e304675SAnton Kuijsten 6034684ddb6SLionel Sambuc${_P}.bcl.o: ${_P}.opt.bcl 6042e304675SAnton Kuijsten ${_MKTARGET_LINK} 6054684ddb6SLionel Sambuc ${LLC} -O1 -march=x86 -mcpu=i586 -filetype=obj -o ${.TARGET} ${.ALLSRC} 6062e304675SAnton Kuijsten 6072e304675SAnton Kuijsten${_P}: ${_P}.bcl.o 6084684ddb6SLionel Sambuc.if !commands(${_P}) 6092e304675SAnton Kuijsten ${_MKTARGET_LINK} 6102e304675SAnton Kuijsten ${_CCLINK.${_P}} \ 6114684ddb6SLionel Sambuc ${_LDFLAGS.${_P}} \ 6124684ddb6SLionel Sambuc -L${DESTDIR}/usr/lib \ 6134684ddb6SLionel Sambuc ${_LDSTATIC.${_P}} -o ${.TARGET} \ 6144684ddb6SLionel Sambuc ${.TARGET}.bcl.o ${_PROGLDOPTS} ${_LDADD.${_P}} \ 615*9f6977d2SCristiano Giuffrida ${BITCODE_LD_FLAGS_2ND.${_P}} \ 6164684ddb6SLionel Sambuc -Wl,--allow-multiple-definition 6174684ddb6SLionel Sambuc.endif # !commands(${_P}) 6182e304675SAnton Kuijsten 6192e304675SAnton Kuijsten.else 62084d9c625SLionel Sambuc${_P}: .gdbinit ${LIBCRT0} ${LIBCRTI} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} \ 62184d9c625SLionel Sambuc ${LIBCRTEND} ${_DPADD.${_P}} 62284d9c625SLionel Sambuc.if !commands(${_P}) 623e1091647SArun Thomas ${_MKTARGET_LINK} 624e1091647SArun Thomas ${_CCLINK.${_P}} \ 625e1091647SArun Thomas ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} \ 62684d9c625SLionel Sambuc ${OBJS.${_P}} ${_PROGLDOPTS} ${_LDADD.${_P}} 6279152e1c5SLionel Sambuc.if defined(CTFMERGE) 6289152e1c5SLionel Sambuc ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}} 6299152e1c5SLionel Sambuc.endif 630e1091647SArun Thomas.if defined(PAXCTL_FLAGS.${_P}) 631e1091647SArun Thomas ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET} 632e1091647SArun Thomas.endif 633e1091647SArun Thomas.if ${MKSTRIPIDENT} != "no" 634e1091647SArun Thomas ${OBJCOPY} -R .ident ${.TARGET} 635e1091647SArun Thomas.endif 636e1091647SArun Thomas.endif # !commands(${_P}) 63784d9c625SLionel Sambuc.endif # defined(__MINIX) && ${USE_BITCODE:Uno} == "yes" 6389152e1c5SLionel Sambuc.endif # USE_COMBINE 639e1091647SArun Thomas 6409152e1c5SLionel Sambuc${_P}.ro: ${OBJS.${_P}} ${_DPADD.${_P}} 641e1091647SArun Thomas ${_MKTARGET_LINK} 6429152e1c5SLionel Sambuc ${CC} ${LDFLAGS} -nostdlib -r -Wl,-dc -o ${.TARGET} ${OBJS.${_P}} 643e1091647SArun Thomas 644e1091647SArun Thomas.if defined(_PROGDEBUG.${_P}) 645e1091647SArun Thomas${_PROGDEBUG.${_P}}: ${_P} 646e1091647SArun Thomas ${_MKTARGET_CREATE} 6479152e1c5SLionel Sambuc ( ${OBJCOPY} --only-keep-debug ${_P} ${_PROGDEBUG.${_P}} \ 6489152e1c5SLionel Sambuc && ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \ 6499152e1c5SLionel Sambuc --add-gnu-debuglink=${_PROGDEBUG.${_P}} ${_P} \ 6509152e1c5SLionel Sambuc ) || (rm -f ${_PROGDEBUG.${_P}}; false) 651e1091647SArun Thomas.endif 652e1091647SArun Thomas 653e1091647SArun Thomas.endif # defined(OBJS.${_P}) && !empty(OBJS.${_P}) # } 654e1091647SArun Thomas 655e1091647SArun Thomas.if !defined(MAN.${_P}) 656e1091647SArun ThomasMAN.${_P}= ${_P}.1 657e1091647SArun Thomas.endif # !defined(MAN.${_P}) 658e1091647SArun Thomas.if !empty(_APPEND_MANS:M[Yy][Ee][Ss]) 659e1091647SArun ThomasMAN+= ${MAN.${_P}} 660e1091647SArun Thomas.endif 661e1091647SArun Thomas 662e1091647SArun Thomasrealall: ${_P} ${_PROGDEBUG.${_P}} 663e1091647SArun Thomas 6649152e1c5SLionel SambucCLEANFILES+= ${_P} ${_PROGDEBUG.${_P}} 665e1091647SArun Thomas 666e1091647SArun Thomas.if defined(OBJS.${_P}) && !empty(OBJS.${_P}) 6679152e1c5SLionel SambucCLEANFILES+= ${OBJS.${_P}} ${LOBJS.${_P}} 668e1091647SArun Thomas.endif 669e1091647SArun Thomas 670e1091647SArun Thomas_PROG_INSTALL+= proginstall-${_P} 671e1091647SArun Thomas 672e1091647SArun Thomas.if !target(proginstall-${_P}) # { 673e1091647SArun Thomasproginstall-${_P}:: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \ 674e1091647SArun Thomas ${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}} 675e1091647SArun Thomas.PRECIOUS: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \ 676e1091647SArun Thomas ${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}} 677e1091647SArun Thomas 678e1091647SArun Thomas.if ${MKUPDATE} == "no" 6799152e1c5SLionel Sambuc.if defined(_RUMPINSTALL.${_P}) 6809152e1c5SLionel Sambuc${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __progrumpinstall 6819152e1c5SLionel Sambuc.else 682e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __proginstall 6839152e1c5SLionel Sambuc.endif 684e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 685e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! .MADE 686e1091647SArun Thomas.endif 687e1091647SArun Thomas.if defined(_PROGDEBUG.${_P}) 688e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! ${_PROGDEBUG.${_P}} __progdebuginstall 689e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 690e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! .MADE 691e1091647SArun Thomas.endif 692e1091647SArun Thomas.endif # define(_PROGDEBUG.${_P}) 693e1091647SArun Thomas.else # MKUPDATE != no 6949152e1c5SLionel Sambuc.if defined(_RUMPINSTALL.${_P}) 6959152e1c5SLionel Sambuc${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __progrumpinstall 6969152e1c5SLionel Sambuc.else 697e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __proginstall 6989152e1c5SLionel Sambuc.endif 699e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 700e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: .MADE 701e1091647SArun Thomas.endif 702e1091647SArun Thomas.if defined(_PROGDEBUG.${_P}) 703e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: ${_PROGDEBUG.${_P}} __progdebuginstall 704e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 705e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: .MADE 706e1091647SArun Thomas.endif 707e1091647SArun Thomas.endif # defined(_PROGDEBUG.${_P}) 708e1091647SArun Thomas.endif # MKUPDATE != no 709e1091647SArun Thomas 710e1091647SArun Thomas.endif # !target(proginstall-${_P}) # } 711e1091647SArun Thomas 712e1091647SArun Thomaslint: lint-${_P} 713e1091647SArun Thomaslint-${_P}: ${LOBJS.${_P}} 714e1091647SArun Thomas.if defined(LOBJS.${_P}) && !empty(LOBJS.${_P}) 715e1091647SArun Thomas ${LINT} ${LINTFLAGS} ${_LDFLAGS.${_P}:C/-L[ ]*/-L/Wg:M-L*} ${LOBJS.${_P}} ${_LDADD.${_P}} 716e1091647SArun Thomas.endif 717e1091647SArun Thomas 718e1091647SArun Thomas.endfor # _P in ${PROGS} ${PROGS_CXX} # } 719e1091647SArun Thomas 720e1091647SArun Thomas.if defined(OBJS) && !empty(OBJS) && \ 721e1091647SArun Thomas (empty(PROGS) && empty(PROGS_CXX)) 7229152e1c5SLionel SambucCLEANFILES+= ${OBJS} ${LOBJS} 723e1091647SArun Thomas.endif 724e1091647SArun Thomas 725e1091647SArun Thomas.if !target(proginstall) 726e1091647SArun Thomasproginstall:: ${_PROG_INSTALL} 727e1091647SArun Thomas.endif 728e1091647SArun Thomas.PHONY: proginstall 729e1091647SArun Thomas 730e1091647SArun Thomas 731e1091647SArun Thomas 732e1091647SArun Thomasrealall: ${SCRIPTS} 733e1091647SArun Thomas.if defined(SCRIPTS) && !target(scriptsinstall) # { 734e1091647SArun ThomasSCRIPTSDIR?=${BINDIR} 735e1091647SArun ThomasSCRIPTSOWN?=${BINOWN} 736e1091647SArun ThomasSCRIPTSGRP?=${BINGRP} 737e1091647SArun ThomasSCRIPTSMODE?=${BINMODE} 738e1091647SArun Thomas 739e1091647SArun Thomasscriptsinstall:: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@} 740e1091647SArun Thomas.PRECIOUS: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@} 741e1091647SArun Thomas 742e1091647SArun Thomas__scriptinstall: .USE 743e1091647SArun Thomas ${_MKTARGET_INSTALL} 744e1091647SArun Thomas ${INSTALL_FILE} \ 745e1091647SArun Thomas -o ${SCRIPTSOWN_${.ALLSRC:T}:U${SCRIPTSOWN}} \ 746e1091647SArun Thomas -g ${SCRIPTSGRP_${.ALLSRC:T}:U${SCRIPTSGRP}} \ 747e1091647SArun Thomas -m ${SCRIPTSMODE_${.ALLSRC:T}:U${SCRIPTSMODE}} \ 748e1091647SArun Thomas ${.ALLSRC} ${.TARGET} 749e1091647SArun Thomas 750e1091647SArun Thomas.for S in ${SCRIPTS:O:u} 751e1091647SArun Thomas.if ${MKUPDATE} == "no" 752e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! ${S} __scriptinstall 753e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${S}) 754e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! .MADE 755e1091647SArun Thomas.endif 756e1091647SArun Thomas.else 757e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: ${S} __scriptinstall 758e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${S}) 759e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: .MADE 760e1091647SArun Thomas.endif 761e1091647SArun Thomas.endif 762e1091647SArun Thomas.endfor 763e1091647SArun Thomas.endif # } 764e1091647SArun Thomas 765e1091647SArun Thomas.if !target(scriptsinstall) 766e1091647SArun Thomasscriptsinstall:: 767e1091647SArun Thomas.endif 768e1091647SArun Thomas.PHONY: scriptsinstall 769e1091647SArun Thomas 770e1091647SArun Thomas##### Pull in related .mk logic 771e1091647SArun ThomasLINKSOWN?= ${BINOWN} 772e1091647SArun ThomasLINKSGRP?= ${BINGRP} 773e1091647SArun ThomasLINKSMODE?= ${BINMODE} 774e1091647SArun Thomas.include <bsd.man.mk> 7759152e1c5SLionel Sambuc.include <bsd.nls.mk> 776e1091647SArun Thomas.include <bsd.files.mk> 777e1091647SArun Thomas.include <bsd.inc.mk> 778e1091647SArun Thomas.include <bsd.links.mk> 779e1091647SArun Thomas.include <bsd.sys.mk> 780e1091647SArun Thomas.include <bsd.dep.mk> 7819152e1c5SLionel Sambuc.include <bsd.clang-analyze.mk> 7829152e1c5SLionel Sambuc.include <bsd.clean.mk> 783e1091647SArun Thomas 784e1091647SArun Thomas${TARGETS}: # ensure existence 785e1091647SArun Thomas 786e1091647SArun Thomas.endif # HOSTPROG 787