10a6a1f1dSLionel Sambuc# $NetBSD: bsd.prog.mk,v 1.292 2015/06/07 15:04:28 matt 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} 630a6a1f1dSLionel SambucMKDEP_SUFFIXES?= .o .ln .d 64e1091647SArun Thomas 659152e1c5SLionel Sambuc# CTF preserve debug symbols 660a6a1f1dSLionel Sambuc.if (${MKCTF:Uno} != "no") && (${CFLAGS:M-g} != "") 679152e1c5SLionel SambucCTFFLAGS+= -g 689152e1c5SLionel SambucCTFMFLAGS+= -g 690a6a1f1dSLionel Sambuc.if defined(HAVE_GCC) && ${HAVE_GCC} >= 48 700a6a1f1dSLionel Sambuc#CFLAGS+=-gdwarf-2 710a6a1f1dSLionel Sambuc.endif 729152e1c5SLionel Sambuc.endif 739152e1c5SLionel Sambuc 749152e1c5SLionel Sambuc# ELF platforms depend on crti.o, crtbegin.o, crtend.o, and crtn.o 759152e1c5SLionel Sambuc.ifndef LIBCRTBEGIN 760a6a1f1dSLionel SambucLIBCRTBEGIN= ${DESTDIR}/usr/lib/${MLIBDIR:D${MLIBDIR}/}crti.o ${_GCC_CRTBEGIN} 779152e1c5SLionel Sambuc.MADE: ${LIBCRTBEGIN} 789152e1c5SLionel Sambuc.endif 799152e1c5SLionel Sambuc.ifndef LIBCRTEND 800a6a1f1dSLionel SambucLIBCRTEND= ${_GCC_CRTEND} ${DESTDIR}/usr/lib/${MLIBDIR:D${MLIBDIR}/}crtn.o 819152e1c5SLionel Sambuc.MADE: ${LIBCRTEND} 829152e1c5SLionel Sambuc.endif 839152e1c5SLionel Sambuc_SHLINKER= ${SHLINKDIR}/ld.elf_so 849152e1c5SLionel Sambuc 859152e1c5SLionel Sambuc.ifndef LIBCRT0 860a6a1f1dSLionel SambucLIBCRT0= ${DESTDIR}/usr/lib/${MLIBDIR:D${MLIBDIR}/}crt0.o 879152e1c5SLionel Sambuc.MADE: ${LIBCRT0} 889152e1c5SLionel Sambuc.endif 899152e1c5SLionel Sambuc 9084d9c625SLionel Sambuc.ifndef LIBCRTI 910a6a1f1dSLionel SambucLIBCRTI= ${DESTDIR}/usr/lib/${MLIBDIR:D${MLIBDIR}/}crti.o 9284d9c625SLionel Sambuc.MADE: ${LIBCRTI} 9384d9c625SLionel Sambuc.endif 9484d9c625SLionel Sambuc 95e1091647SArun Thomas##### Installed system library definitions 96e1091647SArun Thomas# 97e1091647SArun Thomas# E.g. 98e1091647SArun Thomas# LIBC?=${DESTDIR}/usr/lib/libc.a 99e1091647SArun Thomas# LIBX11?=${DESTDIR}/usr/X11R7/lib/libX11.a 100e1091647SArun Thomas# etc.. 1019152e1c5SLionel Sambuc# NB: If you are a library here, add it in bsd.README 102e1091647SArun Thomas 103e1091647SArun Thomas.for _lib in \ 10411be35a1SLionel Sambuc archive \ 10584d9c625SLionel Sambuc asn1 \ 1060cdf705cSLionel Sambuc atf_c \ 1070cdf705cSLionel Sambuc atf_cxx \ 10884d9c625SLionel Sambuc bind9 \ 10984d9c625SLionel Sambuc bluetooth \ 11084d9c625SLionel Sambuc bsdmalloc \ 1110cdf705cSLionel Sambuc bz2 \ 1129152e1c5SLionel Sambuc c \ 1130cdf705cSLionel Sambuc c_pic \ 11484d9c625SLionel Sambuc com_err \ 11584d9c625SLionel Sambuc compat \ 1160cdf705cSLionel Sambuc crypt \ 11784d9c625SLionel Sambuc crypto \ 11884d9c625SLionel Sambuc crypto_idea \ 11984d9c625SLionel Sambuc crypto_mdc2 \ 12084d9c625SLionel Sambuc crypto_rc5 \ 1219152e1c5SLionel Sambuc curses \ 12284d9c625SLionel Sambuc dbm \ 12384d9c625SLionel Sambuc des \ 12484d9c625SLionel Sambuc dns \ 1259152e1c5SLionel Sambuc edit \ 12684d9c625SLionel Sambuc event \ 1279152e1c5SLionel Sambuc expat \ 12884d9c625SLionel Sambuc fetch \ 12984d9c625SLionel Sambuc fl \ 13084d9c625SLionel Sambuc form \ 13184d9c625SLionel Sambuc g2c \ 13284d9c625SLionel Sambuc gcc \ 13384d9c625SLionel Sambuc gnumalloc \ 13484d9c625SLionel Sambuc gssapi \ 13584d9c625SLionel Sambuc hdb \ 13684d9c625SLionel Sambuc heimbase \ 13784d9c625SLionel Sambuc heimntlm \ 13884d9c625SLionel Sambuc hx509 \ 13984d9c625SLionel Sambuc intl \ 14084d9c625SLionel Sambuc ipsec \ 14184d9c625SLionel Sambuc isc \ 14284d9c625SLionel Sambuc isccc \ 14384d9c625SLionel Sambuc isccfg \ 14484d9c625SLionel Sambuc kadm5clnt \ 14584d9c625SLionel Sambuc kadm5srv \ 14684d9c625SLionel Sambuc kafs \ 14784d9c625SLionel Sambuc krb5 \ 14884d9c625SLionel Sambuc kvm \ 1499152e1c5SLionel Sambuc l \ 15084d9c625SLionel Sambuc lber \ 15184d9c625SLionel Sambuc ldap \ 15284d9c625SLionel Sambuc ldap_r \ 15311be35a1SLionel Sambuc lua \ 15484d9c625SLionel Sambuc lwres \ 1559152e1c5SLionel Sambuc m \ 1560cdf705cSLionel Sambuc magic \ 15784d9c625SLionel Sambuc menu \ 15811be35a1SLionel Sambuc objc \ 15984d9c625SLionel Sambuc ossaudio \ 16084d9c625SLionel Sambuc pam \ 16184d9c625SLionel Sambuc pcap \ 16284d9c625SLionel Sambuc pci \ 16384d9c625SLionel Sambuc pmc \ 16484d9c625SLionel Sambuc posix \ 16584d9c625SLionel Sambuc pthread \ 16684d9c625SLionel Sambuc pthread_dbg \ 16784d9c625SLionel Sambuc puffs \ 16884d9c625SLionel Sambuc quota \ 16984d9c625SLionel Sambuc radius \ 17084d9c625SLionel Sambuc resolv \ 1710cdf705cSLionel Sambuc rmt \ 17284d9c625SLionel Sambuc roken \ 17384d9c625SLionel Sambuc rpcsvc \ 17484d9c625SLionel Sambuc rt \ 17584d9c625SLionel Sambuc rump \ 17684d9c625SLionel Sambuc rumpfs_cd9660fs \ 17784d9c625SLionel Sambuc rumpfs_efs \ 17884d9c625SLionel Sambuc rumpfs_ext2fs \ 17984d9c625SLionel Sambuc rumpfs_ffs \ 18084d9c625SLionel Sambuc rumpfs_hfs \ 18184d9c625SLionel Sambuc rumpfs_lfs \ 18284d9c625SLionel Sambuc rumpfs_msdosfs \ 18384d9c625SLionel Sambuc rumpfs_nfs \ 18484d9c625SLionel Sambuc rumpfs_ntfs \ 18584d9c625SLionel Sambuc rumpfs_syspuffs \ 18684d9c625SLionel Sambuc rumpfs_tmpfs \ 18784d9c625SLionel Sambuc rumpfs_udf \ 18884d9c625SLionel Sambuc rumpfs_ufs \ 18984d9c625SLionel Sambuc rumpuser \ 19084d9c625SLionel Sambuc saslc \ 19184d9c625SLionel Sambuc skey \ 19284d9c625SLionel Sambuc sl \ 19311be35a1SLionel Sambuc sqlite3 \ 19484d9c625SLionel Sambuc ss \ 19584d9c625SLionel Sambuc ssh \ 19684d9c625SLionel Sambuc ssl \ 19784d9c625SLionel Sambuc ssp \ 19811be35a1SLionel Sambuc stdcxx \ 19984d9c625SLionel Sambuc supcxx \ 2000cdf705cSLionel Sambuc terminfo \ 20184d9c625SLionel Sambuc tre \ 20284d9c625SLionel Sambuc usbhid \ 2030cdf705cSLionel Sambuc util \ 20484d9c625SLionel Sambuc wind \ 20584d9c625SLionel Sambuc wrap \ 20684d9c625SLionel Sambuc y \ 2070cdf705cSLionel Sambuc z 2080cdf705cSLionel Sambuc 2090cdf705cSLionel Sambuc.ifndef LIB${_lib:tu} 2100cdf705cSLionel SambucLIB${_lib:tu}= ${DESTDIR}/usr/lib/lib${_lib:S/xx/++/:S/atf_c/atf-c/}.a 2110cdf705cSLionel Sambuc.MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded 2120cdf705cSLionel Sambuc.endif 2130cdf705cSLionel Sambuc.endfor 2140cdf705cSLionel Sambuc 2150cdf705cSLionel Sambuc# Minix libraries 2160cdf705cSLionel Sambuc.for _lib in \ 2170cdf705cSLionel Sambuc audiodriver \ 2180cdf705cSLionel Sambuc bdev \ 2190cdf705cSLionel Sambuc blockdriver \ 2200cdf705cSLionel Sambuc chardriver \ 22187d31b06SDavid van Moolenbroek clkconf \ 22287d31b06SDavid van Moolenbroek ddekit \ 22387d31b06SDavid van Moolenbroek ddekit_usb_client \ 22487d31b06SDavid van Moolenbroek ddekit_usb_server \ 22587d31b06SDavid van Moolenbroek devman \ 2260cdf705cSLionel Sambuc elf \ 2279152e1c5SLionel Sambuc exec \ 22889c9de7dSDavid van Moolenbroek fsdriver \ 22987d31b06SDavid van Moolenbroek gpio \ 23087d31b06SDavid van Moolenbroek hgfs \ 23187d31b06SDavid van Moolenbroek i2cdriver \ 23287d31b06SDavid van Moolenbroek inputdriver \ 23387d31b06SDavid van Moolenbroek lwip \ 2349152e1c5SLionel Sambuc minc \ 23587d31b06SDavid van Moolenbroek minixfs \ 236d3d33afeSLionel Sambuc mthread \ 2370cdf705cSLionel Sambuc netdriver \ 2380cdf705cSLionel Sambuc sffs \ 23985723df0SDavid van Moolenbroek sockdriver \ 240*4c27a833SDavid van Moolenbroek sockevent \ 2410cdf705cSLionel Sambuc sys \ 2420cdf705cSLionel Sambuc timers \ 24387d31b06SDavid van Moolenbroek usb \ 24487d31b06SDavid van Moolenbroek vboxfs \ 24587d31b06SDavid van Moolenbroek virtio \ 24687d31b06SDavid van Moolenbroek vtreefs 247e1091647SArun Thomas.ifndef LIB${_lib:tu} 2489152e1c5SLionel SambucLIB${_lib:tu}= ${DESTDIR}/usr/lib/lib${_lib:S/xx/++/:S/atf_c/atf-c/}.a 249e1091647SArun Thomas.MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded 250e1091647SArun Thomas.endif 251e1091647SArun Thomas.endfor 252e1091647SArun Thomas 2539152e1c5SLionel Sambuc# PAM applications, if linked statically, need more libraries 2549152e1c5SLionel Sambuc.if (${MKPIC} == "no") 2559152e1c5SLionel Sambuc.if (${MKCRYPTO} != "no") 2569152e1c5SLionel SambucPAM_STATIC_LDADD+= -lssh 2579152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBSSH} 2589152e1c5SLionel Sambuc.endif 2599152e1c5SLionel Sambuc.if (${MKKERBEROS} != "no") 2609152e1c5SLionel SambucPAM_STATIC_LDADD+= -lkafs -lkrb5 -lhx509 -lwind -lasn1 \ 2619152e1c5SLionel Sambuc -lroken -lcom_err -lheimbase -lcrypto 2629152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBKAFS} ${LIBKRB5} ${LIBHX509} ${LIBWIND} ${LIBASN1} \ 2639152e1c5SLionel Sambuc ${LIBROKEN} ${LIBCOM_ERR} ${LIBHEIMBASE} ${LIBCRYPTO} 2649152e1c5SLionel Sambuc.endif 2659152e1c5SLionel Sambuc.if (${MKSKEY} != "no") 2669152e1c5SLionel SambucPAM_STATIC_LDADD+= -lskey 2679152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBSKEY} 2689152e1c5SLionel Sambuc.endif 2699152e1c5SLionel SambucPAM_STATIC_LDADD+= -lradius -lcrypt -lrpcsvc -lutil 2709152e1c5SLionel SambucPAM_STATIC_DPADD+= ${LIBRADIUS} ${LIBCRYPT} ${LIBRPCSVC} ${LIBUTIL} 2719152e1c5SLionel Sambuc.else 2729152e1c5SLionel SambucPAM_STATIC_LDADD= 2739152e1c5SLionel SambucPAM_STATIC_DPADD= 274e1091647SArun Thomas.endif 275e1091647SArun Thomas 27684d9c625SLionel Sambuc.if defined(__MINIX) && ${MACHINE_ARCH} == "earm" 27784d9c625SLionel Sambuc# LSC: On ARM, when compiling statically, with gcc, lgcc_eh is required 27884d9c625SLionel SambucLDFLAGS+= ${${ACTIVE_CC} == "gcc":? -lgcc_eh:} 27984d9c625SLionel Sambuc.endif # defined(__MINIX) && ${MACHINE_ARCH} == "earm" 28084d9c625SLionel Sambuc 2819152e1c5SLionel Sambuc# NB: If you are a library here, add it in bsd.README 282e1091647SArun Thomas.for _lib in \ 2839152e1c5SLionel Sambuc FS \ 2849152e1c5SLionel Sambuc GL \ 2859152e1c5SLionel Sambuc GLU \ 2869152e1c5SLionel Sambuc ICE \ 2879152e1c5SLionel Sambuc SM \ 2889152e1c5SLionel Sambuc X11 \ 2899152e1c5SLionel Sambuc XTrap \ 2909152e1c5SLionel Sambuc Xau \ 2919152e1c5SLionel Sambuc Xaw \ 2929152e1c5SLionel Sambuc Xdmcp \ 2939152e1c5SLionel Sambuc Xext \ 2949152e1c5SLionel Sambuc Xfont \ 2959152e1c5SLionel Sambuc Xft \ 2969152e1c5SLionel Sambuc Xi \ 2979152e1c5SLionel Sambuc Xinerama \ 2989152e1c5SLionel Sambuc Xmu \ 2999152e1c5SLionel Sambuc Xmuu \ 3009152e1c5SLionel Sambuc Xpm \ 3019152e1c5SLionel Sambuc Xrandr \ 3029152e1c5SLionel Sambuc Xrender \ 3039152e1c5SLionel Sambuc Xss \ 3049152e1c5SLionel Sambuc Xt \ 3059152e1c5SLionel Sambuc Xtst \ 3069152e1c5SLionel Sambuc Xv \ 3079152e1c5SLionel Sambuc Xxf86dga \ 3089152e1c5SLionel Sambuc Xxf86misc \ 3099152e1c5SLionel Sambuc Xxf86vm \ 3109152e1c5SLionel Sambuc dps \ 3119152e1c5SLionel Sambuc fntstubs \ 3129152e1c5SLionel Sambuc fontcache \ 3139152e1c5SLionel Sambuc fontconfig \ 3149152e1c5SLionel Sambuc fontenc \ 3159152e1c5SLionel Sambuc freetype \ 3169152e1c5SLionel Sambuc lbxutil \ 3179152e1c5SLionel Sambuc xkbfile 318e1091647SArun Thomas.ifndef LIB${_lib:tu} 319e1091647SArun ThomasLIB${_lib:tu}= ${DESTDIR}${X11USRLIBDIR}/lib${_lib}.a 320e1091647SArun Thomas.MADE: ${LIB${_lib:tu}} # Note: ${DESTDIR} will be expanded 321e1091647SArun Thomas.endif 322e1091647SArun Thomas.endfor 323e1091647SArun Thomas 32484d9c625SLionel Sambuc# Ugly one-offs 32584d9c625SLionel SambucLIBX11_XCB= ${DESTDIR}${X11USRLIBDIR}/libX11-xcb.a 32684d9c625SLionel SambucLIBXCB= ${DESTDIR}${X11USRLIBDIR}/libxcb.a 32784d9c625SLionel Sambuc 328e1091647SArun Thomas.if defined(RESCUEDIR) 329e1091647SArun ThomasCPPFLAGS+= -DRESCUEDIR=\"${RESCUEDIR}\" 330e1091647SArun Thomas.endif 331e1091647SArun Thomas 3329152e1c5SLionel Sambuc_PROGLDOPTS= 3339152e1c5SLionel Sambuc.if ${SHLINKDIR} != "/usr/libexec" # XXX: change or remove if ld.so moves 3349152e1c5SLionel Sambuc_PROGLDOPTS+= -Wl,-dynamic-linker=${_SHLINKER} 3359152e1c5SLionel Sambuc.endif 3369152e1c5SLionel Sambuc.if ${SHLIBDIR} != "/usr/lib" 3379152e1c5SLionel Sambuc_PROGLDOPTS+= -Wl,-rpath,${SHLIBDIR} \ 3389152e1c5SLionel Sambuc -L=${SHLIBDIR} 3399152e1c5SLionel Sambuc.elif ${SHLIBINSTALLDIR} != "/usr/lib" 3409152e1c5SLionel Sambuc_PROGLDOPTS+= -Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR} \ 3419152e1c5SLionel Sambuc -L=${SHLIBINSTALLDIR} 3429152e1c5SLionel Sambuc.endif 3439152e1c5SLionel Sambuc 344e1091647SArun Thomas__proginstall: .USE 345e1091647SArun Thomas ${_MKTARGET_INSTALL} 346e1091647SArun Thomas ${INSTALL_FILE} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 347ff569068SArun Thomas ${STRIPFLAG} ${.ALLSRC} ${.TARGET} 348e1091647SArun Thomas 3499152e1c5SLionel Sambuc__progrumpinstall: .USE 3509152e1c5SLionel Sambuc ${_MKTARGET_INSTALL} 3519152e1c5SLionel Sambuc ${INSTALL_FILE} -o ${RUMPBINOWN} -g ${RUMPBINGRP} -m ${RUMPBINMODE} \ 3529152e1c5SLionel Sambuc ${STRIPFLAG} ${.ALLSRC} ${.TARGET} 3539152e1c5SLionel Sambuc 354e1091647SArun Thomas__progdebuginstall: .USE 355e1091647SArun Thomas ${_MKTARGET_INSTALL} 356e1091647SArun Thomas ${INSTALL_FILE} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \ 357ff569068SArun Thomas ${.ALLSRC} ${.TARGET} 358e1091647SArun Thomas 359e1091647SArun Thomas 360e1091647SArun Thomas 361e1091647SArun Thomas# 362e1091647SArun Thomas# Backwards compatibility with Makefiles that assume that bsd.prog.mk 363e1091647SArun Thomas# can only build a single binary. 364e1091647SArun Thomas# 365e1091647SArun Thomas 366e1091647SArun Thomas_APPEND_MANS=yes 367e1091647SArun Thomas_APPEND_SRCS=yes 368e1091647SArun Thomas 369e1091647SArun Thomas_CCLINKFLAGS= 370e1091647SArun Thomas 371e1091647SArun Thomas.if defined(PROG_CXX) 372e1091647SArun ThomasPROG= ${PROG_CXX} 373e1091647SArun Thomas_CCLINK= ${CXX} ${_CCLINKFLAGS} 37418e90974SBen Gras 37518e90974SBen Gras.if defined(__MINIX) 37618e90974SBen Gras# BJG - stack unwinding (for C++ exceptions) doesn't work on static executables when built with llvm. 37718e90974SBen GrasLDSTATIC= -dynamic 37818e90974SBen Gras.endif # defined(__MINIX) 379e1091647SArun Thomas.endif 380e1091647SArun Thomas 3819152e1c5SLionel Sambuc.if defined(RUMPPRG) 3829152e1c5SLionel SambucPROG= ${RUMPPRG} 3839152e1c5SLionel Sambuc. ifndef CRUNCHEDPROG 3849152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3859152e1c5SLionel SambucPROGS= ${RUMPPRG} rump.${RUMPPRG} 3869152e1c5SLionel Sambuc. else 3879152e1c5SLionel SambucPROGS= ${RUMPPRG} 3889152e1c5SLionel Sambuc. endif 3899152e1c5SLionel Sambuc. if defined(SRCS) 3909152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3919152e1c5SLionel SambucSRCS.rump.${PROG}:= ${SRCS} ${PROG}_rumpops.c ${RUMPSRCS} 3929152e1c5SLionel Sambuc. endif 3939152e1c5SLionel SambucSRCS+= ${PROG}_hostops.c 3949152e1c5SLionel Sambuc. else 3959152e1c5SLionel SambucSRCS= ${PROG}.c ${PROG}_hostops.c 3969152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 3979152e1c5SLionel SambucSRCS.rump.${PROG}= ${PROG}.c ${PROG}_rumpops.c ${RUMPSRCS} 3989152e1c5SLionel Sambuc. endif 3999152e1c5SLionel Sambuc. endif 4009152e1c5SLionel Sambuc. if (${MKRUMP} != "no") 4019152e1c5SLionel SambucDPSRCS+= ${PROG}_rumpops.c ${RUMPSRCS} 4029152e1c5SLionel SambucLDADD.rump.${PROG}+= -lrumpclient 4039152e1c5SLionel SambucDPADD.rump.${PROG}+= ${LIBRUMPCLIENT} 4049152e1c5SLionel SambucMAN.rump.${PROG}= # defined but feeling empty 4059152e1c5SLionel Sambuc_RUMPINSTALL.rump.${PROG}=# defined 4069152e1c5SLionel Sambuc. endif 4079152e1c5SLionel Sambuc. else # CRUNCHEDPROG 4089152e1c5SLionel SambucPROGS= ${PROG} 4099152e1c5SLionel SambucCPPFLAGS+= -DCRUNCHOPS 4109152e1c5SLionel Sambuc. endif 4119152e1c5SLionel Sambuc.endif 4129152e1c5SLionel Sambuc 413e1091647SArun Thomas.if defined(PROG) 414e1091647SArun Thomas_CCLINK?= ${CC} ${_CCLINKFLAGS} 415e1091647SArun Thomas. if defined(MAN) 416e1091647SArun ThomasMAN.${PROG}= ${MAN} 417e1091647SArun Thomas_APPEND_MANS= no 418e1091647SArun Thomas. endif 419e1091647SArun Thomas. if !defined(OBJS) 420e1091647SArun ThomasOBJS= ${OBJS.${PROG}} 421e1091647SArun Thomas. endif 422e1091647SArun Thomas. if defined(PROGNAME) 423e1091647SArun ThomasPROGNAME.${PROG}= ${PROGNAME} 424e1091647SArun Thomas. endif 425e1091647SArun Thomas. if defined(SRCS) 426e1091647SArun ThomasSRCS.${PROG}= ${SRCS} 427e1091647SArun Thomas_APPEND_SRCS= no 428e1091647SArun Thomas. endif 429e1091647SArun Thomas.endif 430e1091647SArun Thomas 431e1091647SArun Thomas# Turn the single-program PROG and PROG_CXX variables into their multi-word 432e1091647SArun Thomas# counterparts, PROGS and PROGS_CXX. 4339152e1c5SLionel Sambuc.if !defined(RUMPPRG) 434e1091647SArun Thomas. if defined(PROG_CXX) && !defined(PROGS_CXX) 435e1091647SArun ThomasPROGS_CXX= ${PROG_CXX} 436e1091647SArun Thomas. elif defined(PROG) && !defined(PROGS) 437e1091647SArun ThomasPROGS= ${PROG} 438e1091647SArun Thomas. endif 4399152e1c5SLionel Sambuc.endif 440e1091647SArun Thomas 44184d9c625SLionel Sambuc##### Libraries that this may depend upon. 44284d9c625SLionel Sambuc.if defined(PROGDPLIBS) # { 44384d9c625SLionel Sambuc.for _lib _dir in ${PROGDPLIBS} 44484d9c625SLionel Sambuc.if !defined(BINDO.${_lib}) 44584d9c625SLionel SambucPROGDO.${_lib}!= cd "${_dir}" && ${PRINTOBJDIR} 44684d9c625SLionel Sambuc.MAKEOVERRIDES+=PROGDO.${_lib} 44784d9c625SLionel Sambuc.endif 44884d9c625SLionel SambucLDADD+= -L${PROGDO.${_lib}} -l${_lib} 44984d9c625SLionel Sambuc.if exists(${PROGDO.${_lib}}/lib${_lib}_pic.a) 45084d9c625SLionel SambucDPADD+= ${PROGDO.${_lib}}/lib${_lib}_pic.a 45184d9c625SLionel Sambuc.elif exists(${PROGDO.${_lib}}/lib${_lib}.so) 45284d9c625SLionel SambucDPADD+= ${PROGDO.${_lib}}/lib${_lib}.so 45384d9c625SLionel Sambuc.else 45484d9c625SLionel SambucDPADD+= ${PROGDO.${_lib}}/lib${_lib}.a 45584d9c625SLionel Sambuc.endif 45684d9c625SLionel Sambuc.endfor 45784d9c625SLionel Sambuc.endif # } 458e1091647SArun Thomas# 459e1091647SArun Thomas# Per-program definitions and targets. 460e1091647SArun Thomas# 461e1091647SArun Thomas 4629152e1c5SLionel Sambuc_CCLINK.CDEFAULT= ${CC} ${_CCLINKFLAGS} 463e1091647SArun Thomas# Definitions specific to C programs. 464e1091647SArun Thomas.for _P in ${PROGS} 465e1091647SArun ThomasSRCS.${_P}?= ${_P}.c 466e1091647SArun Thomas_CCLINK.${_P}= ${CC} ${_CCLINKFLAGS} 4679152e1c5SLionel Sambuc_CFLAGS.${_P}= ${CFLAGS} ${CPUFLAGS} 4689152e1c5SLionel Sambuc_CPPFLAGS.${_P}= ${CPPFLAGS} 4699152e1c5SLionel Sambuc_COPTS.${_P}= ${COPTS} 470e1091647SArun Thomas.endfor 471e1091647SArun Thomas 4729152e1c5SLionel Sambuc_CCLINK.CXXDEFAULT= ${CXX} ${_CCLINKFLAGS} 473e1091647SArun Thomas# Definitions specific to C++ programs. 474e1091647SArun Thomas.for _P in ${PROGS_CXX} 475e1091647SArun ThomasSRCS.${_P}?= ${_P}.cc 476e1091647SArun Thomas_CCLINK.${_P}= ${CXX} ${_CCLINKFLAGS} 477e1091647SArun Thomas.endfor 478e1091647SArun Thomas 479e1091647SArun Thomas# Language-independent definitions. 4804684ddb6SLionel Sambuc.if defined(__MINIX) 4814684ddb6SLionel Sambuc.if ${USE_BITCODE:Uno} == "yes" 4822e304675SAnton KuijstenCFLAGS+= -flto 4834684ddb6SLionel Sambuc.endif # ${USE_BITCODE:Uno} == "yes" 4842e304675SAnton Kuijsten 4854684ddb6SLionel Sambuc.if ${USE_BITCODE:Uyes} == "no" 4864684ddb6SLionel Sambuc#LSC Gold linker seems to require the library directory to be set up if 4874684ddb6SLionel Sambuc# a sysroot parameter has been given. 4884684ddb6SLionel SambucLDFLAGS+= -L ${DESTDIR}/usr/lib 4894684ddb6SLionel Sambuc.endif # ${USE_BITCODE:U} == "no" 4904684ddb6SLionel Sambuc.endif # defined(__MINIX) 49184d9c625SLionel Sambuc 49284d9c625SLionel Sambuc.for _P in ${PROGS} ${PROGS_CXX} # { 49384d9c625SLionel Sambuc 494e1091647SArun ThomasBINDIR.${_P}?= ${BINDIR} 495e1091647SArun ThomasPROGNAME.${_P}?= ${_P} 496e1091647SArun Thomas 4979152e1c5SLionel Sambuc.if ${MKDEBUG} != "no" && !commands(${_P}) 498e1091647SArun Thomas_PROGDEBUG.${_P}:= ${PROGNAME.${_P}}.debug 499e1091647SArun Thomas.endif 500e1091647SArun Thomas 5019152e1c5SLionel Sambuc.if defined(PAXCTL_FLAGS) 5029152e1c5SLionel SambucPAXCTL_FLAGS.${_P}?= ${PAXCTL_FLAGS} 5039152e1c5SLionel Sambuc.endif 5049152e1c5SLionel Sambuc 505e1091647SArun Thomas##### PROG specific flags. 506e1091647SArun Thomas 5079152e1c5SLionel Sambuc_DPADD.${_P}= ${DPADD} ${DPADD.${_P}} 508e1091647SArun Thomas_LDADD.${_P}= ${LDADD} ${LDADD.${_P}} 509e1091647SArun Thomas_LDFLAGS.${_P}= ${LDFLAGS} ${LDFLAGS.${_P}} 510e1091647SArun Thomas_LDSTATIC.${_P}= ${LDSTATIC} ${LDSTATIC.${_P}} 511e1091647SArun Thomas 512e1091647SArun Thomas##### Build and install rules 513e1091647SArun Thomas.if !empty(_APPEND_SRCS:M[Yy][Ee][Ss]) 514e1091647SArun ThomasSRCS+= ${SRCS.${_P}} # For bsd.dep.mk 515e1091647SArun Thomas.endif 516e1091647SArun Thomas 517e1091647SArun Thomas_YPSRCS.${_P}= ${SRCS.${_P}:M*.[ly]:C/\..$/.c/} ${YHEADER:D${SRCS.${_P}:M*.y:.y=.h}} 518e1091647SArun Thomas 519e1091647SArun ThomasDPSRCS+= ${_YPSRCS.${_P}} 520e1091647SArun ThomasCLEANFILES+= ${_YPSRCS.${_P}} 521e1091647SArun Thomas 522e1091647SArun Thomas.if !empty(SRCS.${_P}:N*.h:N*.sh:N*.fth) 523e1091647SArun ThomasOBJS.${_P}+= ${SRCS.${_P}:N*.h:N*.sh:N*.fth:R:S/$/.o/g} 524e1091647SArun ThomasLOBJS.${_P}+= ${LSRCS:.c=.ln} ${SRCS.${_P}:M*.c:.c=.ln} 525e1091647SArun Thomas.endif 526e1091647SArun Thomas 527e1091647SArun Thomas.if defined(OBJS.${_P}) && !empty(OBJS.${_P}) # { 528e1091647SArun Thomas.NOPATH: ${OBJS.${_P}} ${_P} ${_YPSRCS.${_P}} 529e1091647SArun Thomas 5309152e1c5SLionel Sambuc.if (defined(USE_COMBINE) && ${USE_COMBINE} != "no" && !commands(${_P}) \ 5319152e1c5SLionel Sambuc && (${_CCLINK.${_P}} == ${_CCLINK.CDEFAULT} \ 5329152e1c5SLionel Sambuc || ${_CCLINK.${_P}} == ${_CCLINK.CXXDEFAULT}) \ 5339152e1c5SLionel Sambuc && !defined(NOCOMBINE.${_P}) && !defined(NOCOMBINE)) 5349152e1c5SLionel Sambuc.for f in ${SRCS.${_P}:N*.h:N*.sh:N*.fth:C/\.[yl]$/.c/g} 5359152e1c5SLionel Sambuc#_XFLAGS.$f := ${CPPFLAGS.$f:D1} ${CPUFLAGS.$f:D2} \ 5369152e1c5SLionel Sambuc# ${COPTS.$f:D3} ${OBJCOPTS.$f:D4} ${CXXFLAGS.$f:D5} 5379152e1c5SLionel Sambuc.if (${CPPFLAGS.$f:D1} == "1" || ${CPUFLAGS.$f:D2} == "2" \ 5389152e1c5SLionel Sambuc || ${COPTS.$f:D3} == "3" || ${OBJCOPTS.$f:D4} == "4" \ 5399152e1c5SLionel Sambuc || ${CXXFLAGS.$f:D5} == "5") \ 5409152e1c5SLionel Sambuc || ("${f:M*.[cyl]}" == "" || commands(${f:R:S/$/.o/})) 5419152e1c5SLionel SambucXOBJS.${_P}+= ${f:R:S/$/.o/} 5429152e1c5SLionel Sambuc.else 5439152e1c5SLionel SambucXSRCS.${_P}+= ${f} 5449152e1c5SLionel SambucNODPSRCS+= ${f} 5459152e1c5SLionel Sambuc.endif 5469152e1c5SLionel Sambuc.endfor 5479152e1c5SLionel Sambuc 54884d9c625SLionel Sambuc${_P}: .gdbinit ${LIBCRT0} ${LIBCRTI} ${XOBJS.${_P}} ${SRCS.${_P}} \ 54984d9c625SLionel Sambuc ${DPSRCS} ${LIBC} ${LIBCRTBEGIN} ${LIBCRTEND} ${_DPADD.${_P}} 5509152e1c5SLionel Sambuc ${_MKTARGET_LINK} 5519152e1c5SLionel Sambuc.if defined(DESTDIR) 5529152e1c5SLionel Sambuc ${_CCLINK.${_P}} -Wl,-nostdlib \ 5539152e1c5SLionel Sambuc ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \ 5549152e1c5SLionel Sambuc -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \ 5559152e1c5SLionel Sambuc -MD --combine ${_CPPFLAGS.${_P}} ${_CFLAGS.${_P}} ${_COPTS.${_P}} \ 5569152e1c5SLionel Sambuc ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \ 5579152e1c5SLionel Sambuc ${_LDADD.${_P}} -L${_GCC_LIBGCCDIR} -L${DESTDIR}/usr/lib 5589152e1c5SLionel Sambuc.else 5599152e1c5SLionel Sambuc ${_CCLINK.${_P}} ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} ${_PROGLDOPTS} \ 5609152e1c5SLionel Sambuc -MD --combine ${_CPPFLAGS.${_P}} ${_COPTS.${_P}} 5619152e1c5SLionel Sambuc ${XSRCS.${_P}:@.SRC.@${.ALLSRC:M*.c:M*${.SRC.}}@:O:u} ${XOBJS.${_P}} \ 5629152e1c5SLionel Sambuc ${_LDADD.${_P}} 5639152e1c5SLionel Sambuc.endif # defined(DESTDIR) 5649152e1c5SLionel Sambuc.if defined(CTFMERGE) 5659152e1c5SLionel Sambuc ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}} 5669152e1c5SLionel Sambuc.endif 5679152e1c5SLionel Sambuc.if defined(PAXCTL_FLAGS.${_P}) 5689152e1c5SLionel Sambuc ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET} 5699152e1c5SLionel Sambuc.endif 5709152e1c5SLionel Sambuc.if ${MKSTRIPIDENT} != "no" 5719152e1c5SLionel Sambuc ${OBJCOPY} -R .ident ${.TARGET} 5729152e1c5SLionel Sambuc.endif 5739152e1c5SLionel Sambuc 5749152e1c5SLionel SambucCLEANFILES+= ${_P}.d 5759152e1c5SLionel Sambuc.if exists(${_P}.d) 5769152e1c5SLionel Sambuc.include "${_P}.d" # include -MD depend for program. 5779152e1c5SLionel Sambuc.endif 5789152e1c5SLionel Sambuc.else # USE_COMBINE 5799152e1c5SLionel Sambuc 580e1091647SArun Thomas${OBJS.${_P}} ${LOBJS.${_P}}: ${DPSRCS} 581e1091647SArun Thomas 58284d9c625SLionel Sambuc.if defined(__MINIX) && ${USE_BITCODE:Uno} == "yes" 5832e304675SAnton KuijstenCLEANFILES+= ${_P}.opt.bcl ${_P}.bcl ${_P}.bcl.o 5842e304675SAnton Kuijsten 5855ba302fdSKoustubha BhatOPTFLAGS.${_P}?= ${OPTFLAGS} 5869f6977d2SCristiano GiuffridaBITCODE_LD_FLAGS_1ST.${_P}+= ${BITCODE_LD_FLAGS_1ST} 5879f6977d2SCristiano GiuffridaBITCODE_LD_FLAGS_2ND.${_P}+= ${BITCODE_LD_FLAGS_2ND} 5885ba302fdSKoustubha Bhat 58984d9c625SLionel Sambuc${_P}.bcl: .gdbinit ${LIBCRT0} ${LIBCRTI} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} \ 59084d9c625SLionel Sambuc ${LIBCRTEND} ${_DPADD.${_P}} 5912e304675SAnton Kuijsten ${_MKTARGET_LINK} 5922e304675SAnton Kuijsten ${_CCLINK.${_P}} \ 5932e304675SAnton Kuijsten -o ${.TARGET} \ 5942e304675SAnton Kuijsten -nostartfiles \ 5954684ddb6SLionel Sambuc -L${DESTDIR}/usr/lib/bc \ 5962e304675SAnton Kuijsten ${OBJS.${_P}} ${LLVM_LINK_ARGS} ${_LDADD.${_P}:N-shared} \ 5974684ddb6SLionel Sambuc ${_LDSTATIC.${_P}} ${_PROGLDOPTS} \ 5982e304675SAnton Kuijsten -Wl,-r \ 5999f6977d2SCristiano Giuffrida ${BITCODE_LD_FLAGS_1ST.${_P}} \ 6004684ddb6SLionel Sambuc -Wl,-plugin-opt=emit-llvm 6012e304675SAnton Kuijsten 6022e304675SAnton Kuijsten${_P}.opt.bcl: ${_P}.bcl ${LLVM_PASS} 6032e304675SAnton Kuijsten ${_MKTARGET_LINK} 6045ba302fdSKoustubha Bhat ${OPT} ${OPTFLAGS.${_P}} -o ${.TARGET} ${_P}.bcl 6052e304675SAnton Kuijsten 6064684ddb6SLionel Sambuc${_P}.bcl.o: ${_P}.opt.bcl 6072e304675SAnton Kuijsten ${_MKTARGET_LINK} 6084684ddb6SLionel Sambuc ${LLC} -O1 -march=x86 -mcpu=i586 -filetype=obj -o ${.TARGET} ${.ALLSRC} 6092e304675SAnton Kuijsten 6102e304675SAnton Kuijsten${_P}: ${_P}.bcl.o 6114684ddb6SLionel Sambuc.if !commands(${_P}) 6122e304675SAnton Kuijsten ${_MKTARGET_LINK} 6132e304675SAnton Kuijsten ${_CCLINK.${_P}} \ 6144684ddb6SLionel Sambuc ${_LDFLAGS.${_P}} \ 6154684ddb6SLionel Sambuc -L${DESTDIR}/usr/lib \ 6164684ddb6SLionel Sambuc ${_LDSTATIC.${_P}} -o ${.TARGET} \ 6174684ddb6SLionel Sambuc ${.TARGET}.bcl.o ${_PROGLDOPTS} ${_LDADD.${_P}} \ 6189f6977d2SCristiano Giuffrida ${BITCODE_LD_FLAGS_2ND.${_P}} \ 6194684ddb6SLionel Sambuc -Wl,--allow-multiple-definition 6204684ddb6SLionel Sambuc.endif # !commands(${_P}) 6212e304675SAnton Kuijsten 6222e304675SAnton Kuijsten.else 62384d9c625SLionel Sambuc${_P}: .gdbinit ${LIBCRT0} ${LIBCRTI} ${OBJS.${_P}} ${LIBC} ${LIBCRTBEGIN} \ 62484d9c625SLionel Sambuc ${LIBCRTEND} ${_DPADD.${_P}} 62584d9c625SLionel Sambuc.if !commands(${_P}) 626e1091647SArun Thomas ${_MKTARGET_LINK} 627e1091647SArun Thomas ${_CCLINK.${_P}} \ 628e1091647SArun Thomas ${_LDFLAGS.${_P}} ${_LDSTATIC.${_P}} -o ${.TARGET} \ 62984d9c625SLionel Sambuc ${OBJS.${_P}} ${_PROGLDOPTS} ${_LDADD.${_P}} 6309152e1c5SLionel Sambuc.if defined(CTFMERGE) 6319152e1c5SLionel Sambuc ${CTFMERGE} ${CTFMFLAGS} -o ${.TARGET} ${OBJS.${_P}} 6329152e1c5SLionel Sambuc.endif 633e1091647SArun Thomas.if defined(PAXCTL_FLAGS.${_P}) 634e1091647SArun Thomas ${PAXCTL} ${PAXCTL_FLAGS.${_P}} ${.TARGET} 635e1091647SArun Thomas.endif 636e1091647SArun Thomas.if ${MKSTRIPIDENT} != "no" 637e1091647SArun Thomas ${OBJCOPY} -R .ident ${.TARGET} 638e1091647SArun Thomas.endif 639e1091647SArun Thomas.endif # !commands(${_P}) 64084d9c625SLionel Sambuc.endif # defined(__MINIX) && ${USE_BITCODE:Uno} == "yes" 6419152e1c5SLionel Sambuc.endif # USE_COMBINE 642e1091647SArun Thomas 6439152e1c5SLionel Sambuc${_P}.ro: ${OBJS.${_P}} ${_DPADD.${_P}} 644e1091647SArun Thomas ${_MKTARGET_LINK} 6450a6a1f1dSLionel Sambuc ${CC} ${LDFLAGS:N-Wl,-pie} -nostdlib -r -Wl,-dc -o ${.TARGET} ${OBJS.${_P}} 646e1091647SArun Thomas 647e1091647SArun Thomas.if defined(_PROGDEBUG.${_P}) 648e1091647SArun Thomas${_PROGDEBUG.${_P}}: ${_P} 649e1091647SArun Thomas ${_MKTARGET_CREATE} 6509152e1c5SLionel Sambuc ( ${OBJCOPY} --only-keep-debug ${_P} ${_PROGDEBUG.${_P}} \ 6519152e1c5SLionel Sambuc && ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \ 6529152e1c5SLionel Sambuc --add-gnu-debuglink=${_PROGDEBUG.${_P}} ${_P} \ 6539152e1c5SLionel Sambuc ) || (rm -f ${_PROGDEBUG.${_P}}; false) 654e1091647SArun Thomas.endif 655e1091647SArun Thomas 656e1091647SArun Thomas.endif # defined(OBJS.${_P}) && !empty(OBJS.${_P}) # } 657e1091647SArun Thomas 658e1091647SArun Thomas.if !defined(MAN.${_P}) 659e1091647SArun ThomasMAN.${_P}= ${_P}.1 660e1091647SArun Thomas.endif # !defined(MAN.${_P}) 661e1091647SArun Thomas.if !empty(_APPEND_MANS:M[Yy][Ee][Ss]) 662e1091647SArun ThomasMAN+= ${MAN.${_P}} 663e1091647SArun Thomas.endif 664e1091647SArun Thomas 665e1091647SArun Thomasrealall: ${_P} ${_PROGDEBUG.${_P}} 666e1091647SArun Thomas 6679152e1c5SLionel SambucCLEANFILES+= ${_P} ${_PROGDEBUG.${_P}} 668e1091647SArun Thomas 669e1091647SArun Thomas.if defined(OBJS.${_P}) && !empty(OBJS.${_P}) 6709152e1c5SLionel SambucCLEANFILES+= ${OBJS.${_P}} ${LOBJS.${_P}} 671e1091647SArun Thomas.endif 672e1091647SArun Thomas 673e1091647SArun Thomas_PROG_INSTALL+= proginstall-${_P} 674e1091647SArun Thomas 675e1091647SArun Thomas.if !target(proginstall-${_P}) # { 676e1091647SArun Thomasproginstall-${_P}:: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \ 677e1091647SArun Thomas ${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}} 678e1091647SArun Thomas.PRECIOUS: ${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}} \ 679e1091647SArun Thomas ${_PROGDEBUG.${_P}:D${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}} 680e1091647SArun Thomas 681e1091647SArun Thomas.if ${MKUPDATE} == "no" 6829152e1c5SLionel Sambuc.if defined(_RUMPINSTALL.${_P}) 6839152e1c5SLionel Sambuc${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __progrumpinstall 6849152e1c5SLionel Sambuc.else 685e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! ${_P} __proginstall 6869152e1c5SLionel Sambuc.endif 687e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 688e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}! .MADE 689e1091647SArun Thomas.endif 690e1091647SArun Thomas.if defined(_PROGDEBUG.${_P}) 691e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! ${_PROGDEBUG.${_P}} __progdebuginstall 692e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 693e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}! .MADE 694e1091647SArun Thomas.endif 695e1091647SArun Thomas.endif # define(_PROGDEBUG.${_P}) 696e1091647SArun Thomas.else # MKUPDATE != no 6979152e1c5SLionel Sambuc.if defined(_RUMPINSTALL.${_P}) 6989152e1c5SLionel Sambuc${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __progrumpinstall 6999152e1c5SLionel Sambuc.else 700e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: ${_P} __proginstall 7019152e1c5SLionel Sambuc.endif 702e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 703e1091647SArun Thomas${DESTDIR}${BINDIR.${_P}}/${PROGNAME.${_P}}: .MADE 704e1091647SArun Thomas.endif 705e1091647SArun Thomas.if defined(_PROGDEBUG.${_P}) 706e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: ${_PROGDEBUG.${_P}} __progdebuginstall 707e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${_P}) 708e1091647SArun Thomas${DESTDIR}${DEBUGDIR}${BINDIR.${_P}}/${_PROGDEBUG.${_P}}: .MADE 709e1091647SArun Thomas.endif 710e1091647SArun Thomas.endif # defined(_PROGDEBUG.${_P}) 711e1091647SArun Thomas.endif # MKUPDATE != no 712e1091647SArun Thomas 713e1091647SArun Thomas.endif # !target(proginstall-${_P}) # } 714e1091647SArun Thomas 715e1091647SArun Thomaslint: lint-${_P} 716e1091647SArun Thomaslint-${_P}: ${LOBJS.${_P}} 717e1091647SArun Thomas.if defined(LOBJS.${_P}) && !empty(LOBJS.${_P}) 718e1091647SArun Thomas ${LINT} ${LINTFLAGS} ${_LDFLAGS.${_P}:C/-L[ ]*/-L/Wg:M-L*} ${LOBJS.${_P}} ${_LDADD.${_P}} 719e1091647SArun Thomas.endif 720e1091647SArun Thomas 721e1091647SArun Thomas.endfor # _P in ${PROGS} ${PROGS_CXX} # } 722e1091647SArun Thomas 723e1091647SArun Thomas.if defined(OBJS) && !empty(OBJS) && \ 724e1091647SArun Thomas (empty(PROGS) && empty(PROGS_CXX)) 7259152e1c5SLionel SambucCLEANFILES+= ${OBJS} ${LOBJS} 726e1091647SArun Thomas.endif 727e1091647SArun Thomas 728e1091647SArun Thomas.if !target(proginstall) 729e1091647SArun Thomasproginstall:: ${_PROG_INSTALL} 730e1091647SArun Thomas.endif 731e1091647SArun Thomas.PHONY: proginstall 732e1091647SArun Thomas 733e1091647SArun Thomas 734e1091647SArun Thomas 735e1091647SArun Thomasrealall: ${SCRIPTS} 736e1091647SArun Thomas.if defined(SCRIPTS) && !target(scriptsinstall) # { 737e1091647SArun ThomasSCRIPTSDIR?=${BINDIR} 738e1091647SArun ThomasSCRIPTSOWN?=${BINOWN} 739e1091647SArun ThomasSCRIPTSGRP?=${BINGRP} 740e1091647SArun ThomasSCRIPTSMODE?=${BINMODE} 741e1091647SArun Thomas 742e1091647SArun Thomasscriptsinstall:: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@} 743e1091647SArun Thomas.PRECIOUS: ${SCRIPTS:@S@${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}@} 744e1091647SArun Thomas 745e1091647SArun Thomas__scriptinstall: .USE 746e1091647SArun Thomas ${_MKTARGET_INSTALL} 747e1091647SArun Thomas ${INSTALL_FILE} \ 748e1091647SArun Thomas -o ${SCRIPTSOWN_${.ALLSRC:T}:U${SCRIPTSOWN}} \ 749e1091647SArun Thomas -g ${SCRIPTSGRP_${.ALLSRC:T}:U${SCRIPTSGRP}} \ 750e1091647SArun Thomas -m ${SCRIPTSMODE_${.ALLSRC:T}:U${SCRIPTSMODE}} \ 751e1091647SArun Thomas ${.ALLSRC} ${.TARGET} 752e1091647SArun Thomas 753e1091647SArun Thomas.for S in ${SCRIPTS:O:u} 754e1091647SArun Thomas.if ${MKUPDATE} == "no" 755e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! ${S} __scriptinstall 756e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${S}) 757e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}! .MADE 758e1091647SArun Thomas.endif 759e1091647SArun Thomas.else 760e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: ${S} __scriptinstall 761e1091647SArun Thomas.if !defined(BUILD) && !make(all) && !make(${S}) 762e1091647SArun Thomas${DESTDIR}${SCRIPTSDIR_${S}:U${SCRIPTSDIR}}/${SCRIPTSNAME_${S}:U${SCRIPTSNAME:U${S:T:R}}}: .MADE 763e1091647SArun Thomas.endif 764e1091647SArun Thomas.endif 765e1091647SArun Thomas.endfor 766e1091647SArun Thomas.endif # } 767e1091647SArun Thomas 768e1091647SArun Thomas.if !target(scriptsinstall) 769e1091647SArun Thomasscriptsinstall:: 770e1091647SArun Thomas.endif 771e1091647SArun Thomas.PHONY: scriptsinstall 772e1091647SArun Thomas 773e1091647SArun Thomas##### Pull in related .mk logic 774e1091647SArun ThomasLINKSOWN?= ${BINOWN} 775e1091647SArun ThomasLINKSGRP?= ${BINGRP} 776e1091647SArun ThomasLINKSMODE?= ${BINMODE} 777e1091647SArun Thomas.include <bsd.man.mk> 7789152e1c5SLionel Sambuc.include <bsd.nls.mk> 779e1091647SArun Thomas.include <bsd.files.mk> 780e1091647SArun Thomas.include <bsd.inc.mk> 781e1091647SArun Thomas.include <bsd.links.mk> 782e1091647SArun Thomas.include <bsd.sys.mk> 783e1091647SArun Thomas.include <bsd.dep.mk> 7849152e1c5SLionel Sambuc.include <bsd.clang-analyze.mk> 7859152e1c5SLionel Sambuc.include <bsd.clean.mk> 786e1091647SArun Thomas 787e1091647SArun Thomas${TARGETS}: # ensure existence 788e1091647SArun Thomas 789e1091647SArun Thomas.endif # HOSTPROG 790