diff options
-rw-r--r-- | mk/buildlink3/bsd.buildlink3.mk | 6 | ||||
-rw-r--r-- | mk/compiler.mk | 18 | ||||
-rw-r--r-- | mk/compiler/ccache.mk | 28 | ||||
-rw-r--r-- | mk/compiler/ccc.mk | 40 | ||||
-rw-r--r-- | mk/compiler/distcc.mk | 28 | ||||
-rw-r--r-- | mk/compiler/gcc.mk | 49 | ||||
-rw-r--r-- | mk/compiler/mipspro.mk | 39 | ||||
-rw-r--r-- | mk/compiler/sunpro.mk | 39 | ||||
-rw-r--r-- | mk/compiler/xlc.mk | 39 | ||||
-rw-r--r-- | mk/wrapper/bsd.wrapper.mk | 90 |
10 files changed, 228 insertions, 148 deletions
diff --git a/mk/buildlink3/bsd.buildlink3.mk b/mk/buildlink3/bsd.buildlink3.mk index b629bc7ac7b..34d7ac51da5 100644 --- a/mk/buildlink3/bsd.buildlink3.mk +++ b/mk/buildlink3/bsd.buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.buildlink3.mk,v 1.164 2004/11/28 19:19:52 jlam Exp $ +# $NetBSD: bsd.buildlink3.mk,v 1.165 2004/11/30 14:50:37 jlam Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. @@ -990,8 +990,8 @@ WRAPPER_TRANSFORM_CMDS+= ${_BLNK_TRANSFORM} # building software. # .if defined(USE_LIBTOOL) -_WRAPPEES+= LIBTOOL -_WRAPPEES+= SHLIBTOOL +WRAPPEES+= LIBTOOL +WRAPPEES+= SHLIBTOOL _LIBTOOL= ${WRAPPER_LIBTOOL} _SHLIBTOOL= ${WRAPPER_SHLIBTOOL} .endif diff --git a/mk/compiler.mk b/mk/compiler.mk index e71cebda1da..8d52e1a9a52 100644 --- a/mk/compiler.mk +++ b/mk/compiler.mk @@ -1,4 +1,4 @@ -# $NetBSD: compiler.mk,v 1.39 2004/11/28 21:32:47 jlam Exp $ +# $NetBSD: compiler.mk,v 1.40 2004/11/30 14:50:37 jlam Exp $ # # This Makefile fragment implements handling for supported C/C++/Fortran # compilers. @@ -117,17 +117,19 @@ _PKGSRC_COMPILER:= ${_compiler_} ${_PKGSRC_COMPILER} .endfor _PKGSRC_COMPILER:= ${_COMPILER} ${_PKGSRC_COMPILER} -# Set initial values for PKG_{CC,CPP,CXX,FC} which are used within the -# ${compiler}.mk files to discover the short names of the compilers. -# -PKG_CC:= ${CC} -PKG_CPP:= ${CPP} -PKG_CXX:= ${CXX} -PKG_FC:= ${FC} +_COMPILER_STRIP_VARS= # empty .for _compiler_ in ${_PKGSRC_COMPILER} . include "../../mk/compiler/${_compiler_}.mk" .endfor +.undef _compiler_ + +# Strip the leading paths from the toolchain variables since we manipulate +# the PATH to use the correct executable. +# +.for _var_ in ${_COMPILER_STRIP_VARS} +${_var_}:= ${${_var_}:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//:T} ${${_var_}:C/^/_asdf_/1:N_asdf_*} +.endfor .if defined(ABI) && !empty(ABI) _WRAP_EXTRA_ARGS.CC+= ${_COMPILER_ABI_FLAG.${ABI}} diff --git a/mk/compiler/ccache.mk b/mk/compiler/ccache.mk index 1fac6383bef..755fc213616 100644 --- a/mk/compiler/ccache.mk +++ b/mk/compiler/ccache.mk @@ -1,4 +1,4 @@ -# $NetBSD: ccache.mk,v 1.20 2004/11/17 17:18:33 tv Exp $ +# $NetBSD: ccache.mk,v 1.21 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_CCACHE_MK) COMPILER_CCACHE_MK= defined @@ -37,18 +37,20 @@ _CCACHEBASE_DEFAULT= ${LOCALBASE} _CCACHEBASE?= ${LOCALBASE} _CCACHE_DIR= ${WRKDIR}/.ccache -_CCACHE_LINKS= # empty +_CCACHE_VARS= # empty . if !empty(_LANGUAGES.ccache:Mc) +PKG_CC?= ${CC} +_CCACHE_VARS+= CC _CCACHE_CC:= ${_CCACHE_DIR}/bin/${PKG_CC:T} -_CCACHE_LINKS+= _CCACHE_CC +_ALIASES.CC?= cc PKG_CC:= ${_CCACHE_CC} -CC= ${PKG_CC:T} . endif . if !empty(_LANGUAGES.ccache:Mc++) +PKG_CXX?= ${CXX} +_CCACHE_VARS+= CXX _CCACHE_CXX:= ${_CCACHE_DIR}/bin/${PKG_CXX:T} -_CCACHE_LINKS+= _CCACHE_CXX +_ALIASES.CXX?= c++ PKG_CXX:= ${_CCACHE_CXX} -CXX= ${PKG_CXX:T} . endif # Prepend the path the to the compiler to the PATH @@ -69,13 +71,19 @@ BUILD_ENV+= CCACHE_DIR=${CCACHE_DIR:Q} .endif # Create symlinks for the compiler into ${WRKDIR}. -. for _target_ in ${_CCACHE_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +. for _var_ in ${_CCACHE_VARS} +. if !target(${_CCACHE_${_var_}}) +override-tools: ${_CCACHE_${_var_}} +${_CCACHE_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ ${LN} -fs ${_CCACHEBASE}/bin/ccache ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -fs ${_CCACHEBASE}/bin/ccache ${_alias_}; \ + fi +. endfor . endif . endfor .endif # _USE_CCACHE == "yes" diff --git a/mk/compiler/ccc.mk b/mk/compiler/ccc.mk index 388c1005f6f..395e74f9cec 100644 --- a/mk/compiler/ccc.mk +++ b/mk/compiler/ccc.mk @@ -1,4 +1,4 @@ -# $NetBSD: ccc.mk,v 1.5 2004/11/23 05:32:22 jlam Exp $ +# $NetBSD: ccc.mk,v 1.6 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_CCC_MK) COMPILER_CCC_MK= defined @@ -20,22 +20,28 @@ _LANGUAGES.ccc+= ${LANGUAGES.ccc:M${_lang_}} .endfor _CCC_DIR= ${WRKDIR}/.ccc -_CCC_LINKS= # empty +_CCC_VARS= # empty .if exists(/usr/bin/cc) +_CCC_VARS+= CC _CCC_CC= ${_CCC_DIR}/cc -_CCC_LINKS+= _CCC_CC -PKG_CC= ${_CCC_CC} -CC= ${PKG_CC:T} +_ALIASES.CC= cc CCPATH= /usr/bin/cc +PKG_CC:= ${_CCC_CC} +. if !empty(CC:M*gcc) +CC:= ${PKG_CC:T} # ${CC} should be named "cc". +. endif .endif - .if exists(/usr/bin/cxx) +_CCC_VARS+= CXX _CCC_CXX= ${_CCC_DIR}/cxx -_CCC_LINKS+= _CCC_CXX -PKG_CXX= ${_CCC_CXX} -CXX= ${PKG_CXX:T} +_ALIASES.CXX= c++ cxx CXXPATH= /usr/bin/cxx +PKG_CXX:= ${_CCC_CXX} +. if !empty(CXX:M*g++) +CXX:= ${PKG_CXX:T} # ${CXX} should be named "cxx" +. endif .endif +_COMPILER_STRIP_VARS+= ${_CCC_VARS} .if exists(${CCPATH}) && !defined(CC_VERSION_STRING) CC_VERSION_STRING!= ${CCPATH} -V 2>&1 | awk '{print; exit(0);}' @@ -59,16 +65,22 @@ CFLAGS+=-ieee CXXFLAGS+=-ieee # Create compiler driver scripts in ${WRKDIR}. -.for _target_ in ${_CCC_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +.for _var_ in ${_CCC_VARS} +. if !target(${_CCC_${_var_}}) +override-tools: ${_CCC_${_var_}} +${_CCC_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ (${ECHO} '#!${TOOLS_SHELL}'; \ - ${ECHO} 'exec /usr/bin/${${_target_}:T} "$$@"'; \ + ${ECHO} 'exec /usr/bin/${.TARGET:T} "$$@"'; \ ) > ${.TARGET} ${_PKG_SILENT}${_PKG_DEBUG}${CHMOD} +x ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -f ${.TARGET} ${_alias_}; \ + fi +. endfor . endif .endfor diff --git a/mk/compiler/distcc.mk b/mk/compiler/distcc.mk index 00e7c34e71a..538bbf7b8e9 100644 --- a/mk/compiler/distcc.mk +++ b/mk/compiler/distcc.mk @@ -1,4 +1,4 @@ -# $NetBSD: distcc.mk,v 1.21 2004/11/17 17:18:33 tv Exp $ +# $NetBSD: distcc.mk,v 1.22 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_DISTCC_MK) COMPILER_DISTCC_MK= defined @@ -37,18 +37,20 @@ _DISTCCBASE_DEFAULT= ${LOCALBASE} _DISTCCBASE?= ${LOCALBASE} _DISTCC_DIR= ${WRKDIR}/.distcc -_DISTCC_LINKS= # empty +_DISTCC_VARS= # empty . if !empty(_LANGUAGES.distcc:Mc) +PKG_CC?= ${CC} +_DISTCC_VARS+= CC _DISTCC_CC:= ${_DISTCC_DIR}/bin/${PKG_CC:T} -_DISTCC_LINKS+= _DISTCC_CC +_ALIASES.CC?= cc PKG_CC:= ${_DISTCC_CC} -CC= ${PKG_CC:T} . endif . if !empty(_LANGUAGES.distcc:Mc++) +PKG_CXX?= ${CXX} +_DISTCC_VARS+= CXX _DISTCC_CXX:= ${_DISTCC_DIR}/bin/${PKG_CXX:T} -_DISTCC_LINKS+= _DISTCC_CXX +_ALIASES.CXX?= c++ PKG_CXX:= ${_DISTCC_CXX} -CXX= ${PKG_CXX:T} . endif # Prepend the path to the compiler to the PATH. @@ -70,13 +72,19 @@ BUILD_ENV+= DISTCC_VERBOSE=${DISTCC_VERBOSE:Q} .endif # Create symlinks for the compiler into ${WRKDIR}. -. for _target_ in ${_DISTCC_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +. for _var_ in ${_DISTCC_VARS} +. if !target(${_DISTCC_${_var_}}) +override-tools: ${_DISTCC_${_var_}} +${_DISTCC_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ ${LN} -fs ${_DISTCCBASE}/bin/distcc ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -fs ${_DISTCCBASE}/bin/distcc ${_alias_}; \ + fi +. endfor . endif . endfor .endif # _USE_DISTCC == "yes" diff --git a/mk/compiler/gcc.mk b/mk/compiler/gcc.mk index 0af3292b316..4099063f6bf 100644 --- a/mk/compiler/gcc.mk +++ b/mk/compiler/gcc.mk @@ -1,4 +1,4 @@ -# $NetBSD: gcc.mk,v 1.76 2004/11/23 05:32:22 jlam Exp $ +# $NetBSD: gcc.mk,v 1.77 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_GCC_MK) COMPILER_GCC_MK= defined @@ -334,7 +334,7 @@ LDFLAGS+= ${_GCC_LDFLAGS} # GCC executables. # _GCC_DIR= ${WRKDIR}/.gcc -_GCC_LINKS= # empty +_GCC_VARS= # empty .if !empty(_USE_PKGSRC_GCC:M[yY][eE][sS]) _GCCBINDIR= ${_GCC_PREFIX}bin @@ -342,34 +342,35 @@ _GCCBINDIR= ${_GCC_PREFIX}bin _GCCBINDIR= ${_CC:H} .endif .if exists(${_GCCBINDIR}/gcc) +_GCC_VARS+= CC _GCC_CC= ${_GCC_DIR}/bin/gcc -_GCC_LINKS+= _GCC_CC -PKG_CC= ${_GCC_CC} -CC= ${PKG_CC:T} +_ALIASES.CC= cc gcc CCPATH= ${_GCCBINDIR}/gcc +PKG_CC:= ${_GCC_CC} .endif -.if exists(${_GCCBINDIR}/cpp) && ${OPSYS} != "Darwin" +.if exists(${_GCCBINDIR}/cpp) +_GCC_VARS+= CPP _GCC_CPP= ${_GCC_DIR}/bin/cpp -_GCC_LINKS+= _GCC_CPP -PKG_CPP= ${_GCC_CPP} -CPP= ${PKG_CPP:T} +_ALIASES.CPP= cpp +CPPPATH= ${_GCCBINDIR}/cpp +PKG_CPP:= ${_GCC_CPP} .endif .if exists(${_GCCBINDIR}/g++) +_GCC_VARS+= CXX _GCC_CXX= ${_GCC_DIR}/bin/g++ -_GCC_LINKS+= _GCC_CXX -PKG_CXX= ${_GCC_CXX} -CXX= ${PKG_CXX:T} +_ALIASES.CXX= c++ g++ CXXPATH= ${_GCCBINDIR}/g++ +PKG_CXX:= ${_GCC_CXX} .endif .if exists(${_GCCBINDIR}/g77) +_GCC_VARS+= FC _GCC_FC= ${_GCC_DIR}/bin/g77 -_GCC_LINKS+= _GCC_FC -PKG_FC= ${_GCC_FC} -FC= ${PKG_FC:T} -F77= ${PKG_FC:T} +_ALIASES.FC= f77 g77 FCPATH= ${_GCCBINDIR}/g77 F77PATH= ${_GCCBINDIR}/g77 +PKG_FC:= ${_GCC_FC} .endif +_COMPILER_STRIP_VARS+= ${_GCC_VARS} # Pass the required flags to imake to tell it we're using gcc on Solaris. .if ${OPSYS} == "SunOS" @@ -416,16 +417,22 @@ BUILD_DEPENDS+= ${_GCC_DEPENDENCY} .endif # Create compiler driver scripts in ${WRKDIR}. -.for _target_ in ${_GCC_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +.for _var_ in ${_GCC_VARS} +. if !target(${_GCC_${_var_}}) +override-tools: ${_GCC_${_var_}} +${_GCC_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ (${ECHO} '#!${TOOLS_SHELL}'; \ - ${ECHO} 'exec ${_GCCBINDIR}/${${_target_}:T} "$$@"'; \ + ${ECHO} 'exec ${_GCCBINDIR}/${.TARGET:T} "$$@"'; \ ) > ${.TARGET} ${_PKG_SILENT}${_PKG_DEBUG}${CHMOD} +x ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -f ${.TARGET} ${_alias_}; \ + fi +. endfor . endif .endfor diff --git a/mk/compiler/mipspro.mk b/mk/compiler/mipspro.mk index ede75b5c689..694a66c7544 100644 --- a/mk/compiler/mipspro.mk +++ b/mk/compiler/mipspro.mk @@ -1,4 +1,4 @@ -# $NetBSD: mipspro.mk,v 1.28 2004/11/23 05:32:22 jlam Exp $ +# $NetBSD: mipspro.mk,v 1.29 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_MIPSPRO_MK) COMPILER_MIPSPRO_MK= defined @@ -18,21 +18,28 @@ _LANGUAGES.mipspro+= ${LANGUAGES.mipspro:M${_lang_}} .endfor _MIPSPRO_DIR= ${WRKDIR}/.mipspro -_MIPSPRO_LINKS= # empty +_MIPSPRO_VARS= # empty .if exists(${MIPSPROBASE}/bin/cc) +_MIPSPRO_VARS+= CC _MIPSPRO_CC= ${_MIPSPRO_DIR}/bin/cc -_MIPSPRO_LINKS+= _MIPSPRO_CC -PKG_CC= ${_MIPSPRO_CC} -CC= ${PKG_CC:T} +_ALIASES.CC= cc CCPATH= ${MIPSPROBASE}/bin/cc +PKG_CC:= ${_MIPSPRO_CC} +. if !empty(CC:M*gcc) +CC:= ${PKG_CC:T} # ${CC} should be named "cc". +. endif .endif .if exists(${MIPSPROBASE}/bin/CC) +_MIPSPRO_VARS+= CXX _MIPSPRO_CXX= ${_MIPSPRO_DIR}/bin/CC -_MIPSPRO_LINKS+= _MIPSPRO_CXX -PKG_CXX= ${_MIPSPRO_CXX} -CXX= ${PKG_CXX:T} +_ALIASES.CXX= CC c++ CXXPATH= ${MIPSPROBASE}/bin/CC +PKG_CXX:= ${_MIPSPRO_CXX} +. if !empty(CXX:M*g++) +CXX:= ${PKG_CXX:T} # ${CXX} should be named "CC" +. endif .endif +_COMPILER_STRIP_VARS+= ${_MIPSPRO_VARS} .if exists(${CCPATH}) # MIPSpro Compilers: Version 7.3.1.2m @@ -63,16 +70,22 @@ PREPEND_PATH+= ${_MIPSPRO_DIR}/bin .endif # Create compiler driver scripts in ${WRKDIR}. -.for _target_ in ${_MIPSPRO_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +.for _var_ in ${_MIPSPRO_VARS} +. if !target(${_MIPSPRO_${_var_}}) +override-tools: ${_MIPSPRO_${_var_}} +${_MIPSPRO_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ (${ECHO} '#!${TOOLS_SHELL}'; \ - ${ECHO} 'exec ${MIPSPROBASE}/bin/${${_target_}:T} "$$@"'; \ + ${ECHO} 'exec ${MIPSPROBASE}/bin/${.TARGET:T} "$$@"'; \ ) > ${.TARGET} ${_PKG_SILENT}${_PKG_DEBUG}${CHMOD} +x ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -f ${.TARGET} ${_alias_}; \ + fi +. endfor . endif .endfor diff --git a/mk/compiler/sunpro.mk b/mk/compiler/sunpro.mk index 79fbb65c42e..85b0a0306d7 100644 --- a/mk/compiler/sunpro.mk +++ b/mk/compiler/sunpro.mk @@ -1,4 +1,4 @@ -# $NetBSD: sunpro.mk,v 1.24 2004/11/23 05:32:22 jlam Exp $ +# $NetBSD: sunpro.mk,v 1.25 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_SUNPRO_MK) COMPILER_SUNPRO_MK= defined @@ -18,21 +18,28 @@ _LANGUAGES.sunpro+= ${LANGUAGES.sunpro:M${_lang_}} .endfor _SUNPRO_DIR= ${WRKDIR}/.sunpro -_SUNPRO_LINKS= # empty +_SUNPRO_VARS= # empty .if exists(${SUNWSPROBASE}/bin/cc) +_SUNPRO_VARS+= CC _SUNPRO_CC= ${_SUNPRO_DIR}/bin/cc -_SUNPRO_LINKS+= _SUNPRO_CC -PKG_CC= ${_SUNPRO_CC} -CC= ${PKG_CC:T} +_ALIASES.CC= cc CCPATH= ${SUNWSPROBASE}/bin/cc +PKG_CC:= ${_SUNPRO_CC} +. if !empty(CC:M*gcc) +CC:= ${PKG_CC:T} # ${CC} should be named "cc". +. endif .endif .if exists(${SUNWSPROBASE}/bin/CC) +_SUNPRO_VARS+= CXX _SUNPRO_CXX= ${_SUNPRO_DIR}/bin/CC -_SUNPRO_LINKS+= _SUNPRO_CXX -PKG_CXX= ${_SUNPRO_CXX} -CXX= ${PKG_CXX:T} +_ALIASES.CXX= CC c++ CXXPATH= ${SUNWSPROBASE}/bin/CC +PKG_CXX:= ${_SUNPRO_CXX} +. if !empty(CXX:M*g++) +CXX:= ${PKG_CXX:T} # ${CXX} should be named "CC". +. endif .endif +_COMPILER_STRIP_VARS+= ${_SUNPRO_VARS} # SunPro passes rpath directives to the linker using "-R". _LINKER_RPATH_FLAG= -R @@ -57,16 +64,22 @@ PREPEND_PATH+= ${_SUNPRO_DIR}/bin .endif # Create compiler driver scripts in ${WRKDIR}. -.for _target_ in ${_SUNPRO_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +.for _var_ in ${_SUNPRO_VARS} +. if !target(${_SUNPRO_${_var_}}) +override-tools: ${_SUNPRO_${_var_}} +${_SUNPRO_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ (${ECHO} '#!${TOOLS_SHELL}'; \ - ${ECHO} 'exec ${SUNWSPROBASE}/bin/${${_target_}:T} "$$@"'; \ + ${ECHO} 'exec ${SUNWSPROBASE}/bin/${.TARGET:T} "$$@"'; \ ) > ${.TARGET} ${_PKG_SILENT}${_PKG_DEBUG}${CHMOD} +x ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -f ${.TARGET} ${_alias_}; \ + fi +. endfor . endif .endfor diff --git a/mk/compiler/xlc.mk b/mk/compiler/xlc.mk index 87b011049c9..f23546f8606 100644 --- a/mk/compiler/xlc.mk +++ b/mk/compiler/xlc.mk @@ -1,4 +1,4 @@ -# $NetBSD: xlc.mk,v 1.6 2004/11/27 15:28:34 grant Exp $ +# $NetBSD: xlc.mk,v 1.7 2004/11/30 14:50:37 jlam Exp $ .if !defined(COMPILER_XLC_MK) COMPILER_XLC_MK= defined @@ -18,21 +18,28 @@ _LANGUAGES.xlc+= ${LANGUAGES.xlc:M${_lang_}} .endfor _XLC_DIR= ${WRKDIR}/.xlc -_XLC_LINKS= # empty +_XLC_VARS= # empty .if exists(${XLCBASE}/bin/xlc) +_XLC_VARS+= CC _XLC_CC= ${_XLC_DIR}/bin/xlc -_XLC_LINKS+= _XLC_CC -PKG_CC= ${_XLC_CC} -CC= ${PKG_CC:T} +_ALIASES.CC= cc xlc CCPATH= ${XLCBASE}/bin/xlc +PKG_CC:= ${_XLC_CC} +. if !empty(CC:M*gcc) +CC:= ${PKG_CC:T} # ${CC} should be named "xlc". +. endif .endif .if exists(${XLCBASE}/bin/xlc++) +_XLC_VARS+= CXX _XLC_CXX= ${_XLC_DIR}/bin/xlc++ -_XLC_LINKS+= _XLC_CXX -PKG_CXX= ${_XLC_CXX} -CXX= ${PKG_CXX:T} +_ALIASES.CXX= c++ xlc++ CXXPATH= ${XLCBASE}/bin/xlc++ +PKG_CXX:= ${_XLC_CXX} +. if !empty(CXX:M*g++) +CXX:= ${PKG_CXX:T} # ${CXX} should be named "xlc++". +. endif .endif +_COMPILER_STRIP_VARS+= ${_XLC_VARS} .if exists(${CCPATH}) CC_VERSION_STRING!= ${CCPATH} -V 2>&1 | ${GREP} 'IBM XL C.*for' | ${SED} -e 's/^ *//' || ${TRUE} @@ -52,16 +59,22 @@ PREPEND_PATH+= ${_XLC_DIR}/bin CFLAGS+=-ma # Create compiler driver scripts in ${WRKDIR}. -.for _target_ in ${_XLC_LINKS} -. if !target(${${_target_}}) -override-tools: ${${_target_}} -${${_target_}}: +.for _var_ in ${_XLC_VARS} +. if !target(${_XLC_${_var_}}) +override-tools: ${_XLC_${_var_}} +${_XLC_${_var_}}: ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${.TARGET:H} ${_PKG_SILENT}${_PKG_DEBUG} \ (${ECHO} '#!${TOOLS_SHELL}'; \ - ${ECHO} 'exec ${XLCBASE}/bin/${${_target_}:T} "$$@"'; \ + ${ECHO} 'exec ${XLCBASE}/bin/${.TARGET:T} "$$@"'; \ ) > ${.TARGET} ${_PKG_SILENT}${_PKG_DEBUG}${CHMOD} +x ${.TARGET} +. for _alias_ in ${_ALIASES.${_var_}:S/^/${.TARGET:H}\//} + ${_PKG_SILENT}${_PKG_DEBUG} \ + if [ ! -x "${_alias_}" ]; then \ + ${LN} -f ${.TARGET} ${_alias_}; \ + fi +. endfor . endif .endfor diff --git a/mk/wrapper/bsd.wrapper.mk b/mk/wrapper/bsd.wrapper.mk index 8020eda8b29..8a9c9918039 100644 --- a/mk/wrapper/bsd.wrapper.mk +++ b/mk/wrapper/bsd.wrapper.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.wrapper.mk,v 1.12 2004/11/20 04:37:08 grant Exp $ +# $NetBSD: bsd.wrapper.mk,v 1.13 2004/11/30 14:50:37 jlam Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. @@ -130,11 +130,7 @@ WRAPPER_VARS+= _WRAP_PATH # WRAPPEES+= AS WRAPPEES+= CC -# XXX The following is a workaround until I can find time to fix this -# XXX more completely (jlam). -.if ${CPP:N-*} != ${CC} WRAPPEES+= CPP -.endif WRAPPEES+= CXX WRAPPEES+= FC .if defined(USE_X11) @@ -143,9 +139,28 @@ WRAPPEES+= IMAKE .endif WRAPPEES+= LD +_WRAPPEE_UNIQUE_CMDS= # empty .for _wrappee_ in ${WRAPPEES} -_WRAPPEES+= ${_wrappee_} -.endfor +_WRAPPEES+= ${_wrappee_} +_WRAPPEE_${_wrappee_}= ${${_wrappee_}:T:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//} +. if empty(_WRAPPEE_UNIQUE_CMDS:M${_WRAPPEE_${_wrappee_}}) +_WRAPPEE_UNIQUE_CMDS+= ${_WRAPPEE_${_wrappee_}} +_WRAPPEES_UNIQUE+= ${_wrappee_} +. endif +.endfor # WRAPPEES + +.for _wrappee_ in ${_WRAPPEES} +# +# Strip the leading paths from the toolchain variables since we manipulate +# the PATH to use the correct executable. +# +${_wrappee_}:= ${${_wrappee_}:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//:T} ${${_wrappee_}:C/^/_asdf_/1:N_asdf_*} +# +# WRAPPER_<wrappee> is the full path to the wrapper script, plus any +# trailing arguments to <wrappee>. +# +WRAPPER_${_wrappee_}= ${WRAPPER_BINDIR}/${${_wrappee_}} +.endfor # _WRAPPEES _WRAP_ALIASES.AS= as _WRAP_ALIASES.CC= cc gcc @@ -211,7 +226,7 @@ _WRAP_SKIP_TRANSFORM.${_wrappee_}?= no . else _WRAP_SKIP_TRANSFORM.${_wrappee_}?= ${_WRAP_SKIP_TRANSFORM} . endif -.endfor +.endfor # _WRAPPEES .if !empty(PKGSRC_COMPILER:Maix-xlc) _WRAP_CMD_SINK.CC= ${WRAPPER_TMPDIR}/cmd-sink-aix-xlc @@ -294,16 +309,6 @@ _WRAP_SUBST_SED= \ -e "s|@_WRAP_SHELL_LIB@|${_WRAP_SHELL_LIB:Q}|g" .for _wrappee_ in ${_WRAPPEES} -. if defined(PKG_${_wrappee_}) -_WRAP_PKG_${_wrappee_}= ${PKG_${_wrappee_}} -. else -_WRAP_PKG_${_wrappee_}= ${${_wrappee_}} -. endif - -WRAPPER_${_wrappee_}= \ - ${WRAPPER_BINDIR}/${_WRAP_PKG_${_wrappee_}:T:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//} -${_wrappee_}:= ${WRAPPER_${_wrappee_}:T} - _WRAP_SUBST_SED.${_wrappee_}= \ -e "s|@_WRAP_ENV@|${_WRAP_ENV.${_wrappee_}:Q}|g" \ -e "s|@_WRAP_EXTRA_ARGS@|${_WRAP_EXTRA_ARGS.${_wrappee_}:Q}|g" \ @@ -326,7 +331,10 @@ _WRAP_SUBST_SED.${_wrappee_}= \ ${_WRAP_SUBST_SED} _WRAP_COOKIE.${_wrappee_}= ${WRAPPER_DIR}/.wrapper_${_wrappee_}_done +.endfor # _WRAPPEES +.for _wrappee_ in ${_WRAPPEES_UNIQUE} +PKG_${_wrappee_}?= ${${_wrappee_}} do-wrapper: ${_WRAP_COOKIE.${_wrappee_}} ${_WRAP_COOKIE.${_wrappee_}}: \ ${_WRAPPER_SH.${_wrappee_}} \ @@ -340,49 +348,44 @@ ${_WRAP_COOKIE.${_wrappee_}}: \ ${_WRAP_SCAN.${_wrappee_}} \ ${_WRAP_SHELL_LIB} \ ${_WRAP_TRANSFORM.${_wrappee_}} - ${_PKG_SILENT}${_PKG_DEBUG}${ECHO_WRAPPER_MSG} \ - "=> Creating wrapper: ${WRAPPER_${_wrappee_}}" ${_PKG_SILENT}${_PKG_DEBUG} \ - wrappee="${_WRAP_PKG_${_wrappee_}:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}"; \ + wrapper="${WRAPPER_${_wrappee_}:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}"; \ + ${ECHO_WRAPPER_MSG} "=> Creating ${_wrappee_} wrapper: $$wrapper"; \ gen_wrapper=yes; \ - case $${wrappee} in \ - /*) \ - absdir=; \ - ;; \ - *) \ - save_IFS="$$IFS"; \ + wrappee="${PKG_${_wrappee_}:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}"; \ + case $$wrappee in \ + /*) ;; \ + *) save_IFS="$$IFS"; \ IFS=":"; \ for dir in $${PATH}; do \ case $${dir} in \ - *${BUILDLINK_DIR}*) \ + *${WRAPPER_DIR}*) \ ;; \ *) \ - if [ -f $${dir}/$${wrappee} ] || \ - [ -h $${dir}/$${wrappee} ] && \ - [ -x $${dir}/$${wrappee} ]; then \ - absdir=$${dir}/; \ - wrappee=$${absdir}$${wrappee}; \ + if ${TEST} -f $${dir}/$$wrappee -o \ + -h $${dir}/$$wrappee; then \ + wrappee=$${dir}/$$wrappee; \ break; \ fi; \ ;; \ esac; \ done; \ IFS="$$save_IFS"; \ - if [ ! -x "$${wrappee}" ]; then \ + if ${TEST} ! -x "$$wrappee"; then \ gen_wrapper=no; \ - ${ECHO_WRAPPER_MSG} "Warning: unable to create \`$${wrappee}' wrapper script"; \ + ${ECHO_WRAPPER_MSG} "Warning: unable to create ${_wrappee_} wrapper script: \`$$wrappee'"; \ fi; \ ;; \ esac; \ case $$gen_wrapper in \ yes) \ - ${MKDIR} ${WRAPPER_${_wrappee_}:H}; \ + ${MKDIR} `${DIRNAME} $$wrapper`; \ ${CAT} ${_WRAPPER_SH.${_wrappee_}} | \ ${SED} ${_WRAP_SUBST_SED.${_wrappee_}} \ - -e "s|@WRAPPEE@|$${absdir}${_WRAP_PKG_${_wrappee_}:Q}|g" | \ + -e "s|@WRAPPEE@|$$wrappee|g" | \ ${_WRAP_SH_CRUNCH_FILTER} \ - > ${WRAPPER_${_wrappee_}}; \ - ${CHMOD} +x ${WRAPPER_${_wrappee_}}; \ + > $$wrapper; \ + ${CHMOD} +x $$wrapper; \ ;; \ esac ${_PKG_SILENT}${_PKG_DEBUG}${TOUCH} ${TOUCH_FLAGS} ${.TARGET} @@ -392,13 +395,14 @@ ${_WRAP_COOKIE.${_wrappee_}}: \ do-wrapper: ${_alias_} ${_alias_}: ${_WRAP_COOKIE.${_wrappee_}} ${_PKG_SILENT}${_PKG_DEBUG} \ - if [ ! -x ${_alias_} -a -x ${WRAPPER_${_wrappee_}} ]; then \ - ${ECHO_WRAPPER_MSG} "=> Linking wrapper: ${_alias_}"; \ - ${LN} -f ${WRAPPER_${_wrappee_}} ${_alias_}; \ + wrapper="${WRAPPER_${_wrappee_}:C/^/_asdf_/1:M_asdf_*:S/^_asdf_//}"; \ + if [ ! -x ${.TARGET} -a -x $$wrapper ]; then \ + ${ECHO_WRAPPER_MSG} "=> Linking ${_wrappee_} wrapper: ${.TARGET}"; \ + ${LN} -f $$wrapper ${.TARGET}; \ fi . endif . endfor -.endfor # _WRAPPEES +.endfor # _WRAPPEES_UNIQUE .for _target_ in ${WRAPPER_TARGETS} do-wrapper: ${_target_} |