diff options
author | grant <grant> | 2004-05-08 06:03:26 +0000 |
---|---|---|
committer | grant <grant> | 2004-05-08 06:03:26 +0000 |
commit | e4db51c99a26e2a0b67c07d05ac9d5ee4b79121f (patch) | |
tree | 4f793f78bb7ae4529272129bc7a42350cc326e94 /mk | |
parent | 47163cc426eb2255acb3380ab65c9c7b1eef1059 (diff) | |
download | pkgsrc-e4db51c99a26e2a0b67c07d05ac9d5ee4b79121f.tar.gz |
implement {NOT,ONLY}_FOR_COMPILER so that packages can be marked as
requiring a specific compiler (most often those which use gcc-specific
hacks^wfeatures).
this allows users to define PKGSRC_COMPILER to multiple real compilers in
order to implement a compiler preference. for example,
PKGSRC_COMPILER="sunpro gcc" will use sunpro as the default compiler,
and fall back to gcc where a package is marked NOT_FOR_COMPILER=sunpro
or ONLY_FOR_COMPILER=gcc.
Diffstat (limited to 'mk')
-rw-r--r-- | mk/compiler.mk | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/mk/compiler.mk b/mk/compiler.mk index 89af1a8d833..5e6765e7b19 100644 --- a/mk/compiler.mk +++ b/mk/compiler.mk @@ -1,4 +1,4 @@ -# $NetBSD: compiler.mk,v 1.27 2004/03/31 09:38:36 sketch Exp $ +# $NetBSD: compiler.mk,v 1.28 2004/05/08 06:03:26 grant Exp $ # # This Makefile fragment implements handling for supported C/C++/Fortran # compilers. @@ -101,10 +101,44 @@ PKGSRC_COMPILER?= mipspro PKGSRC_COMPILER?= gcc .endif -_PKGSRC_COMPILER= # empty -.for _compiler_ in ${PKGSRC_COMPILER} -. if empty(_PKGSRC_COMPILER:M${_compiler_}) -_PKGSRC_COMPILER:= ${_compiler_} ${_PKGSRC_COMPILER} +_COMPILERS= gcc mipspro sunpro +_PSEUDO_COMPILERS= ccache distcc + +.if defined(NOT_FOR_COMPILER) && !empty(NOT_FOR_COMPILER) +. for _compiler_ in ${_COMPILERS} +. if ${NOT_FOR_COMPILER:M${_compiler_}} == "" +_ACCEPTABLE_COMPILERS+= ${_compiler_} +. endif +. endfor +.elif defined(ONLY_FOR_COMPILER) && !empty(ONLY_FOR_COMPILER) +. for _compiler_ in ${_COMPILERS} +. if ${ONLY_FOR_COMPILER:M${_compiler_}} != "" +_ACCEPTABLE_COMPILERS+= ${_compiler_} +. endif +. endfor +.else +_ACCEPTABLE_COMPILERS+= ${_COMPILERS} +.endif + +.if defined(_ACCEPTABLE_COMPILERS) +. for _acceptable_ in ${_ACCEPTABLE_COMPILERS} +. for _compiler_ in ${PKGSRC_COMPILER} +. if !empty(_ACCEPTABLE_COMPILERS:M${_compiler_}) && !defined(_COMPILER) +_COMPILER= ${_compiler_} +. endif +. endfor +. endfor +.endif + +.if !defined(_COMPILER) +PKG_FAIL_REASON+= "No acceptable compiler found for ${PKGNAME}." +.else +_PKGSRC_COMPILER:= ${_COMPILER} +.endif + +.for _compiler_ in ${_PSEUDO_COMPILERS} +. if !empty(PKGSRC_COMPILER:M${_compiler_}) +_PKGSRC_COMPILER:= ${_compiler_} ${_PKGSRC_COMPILER} . endif .endfor |