tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Compiler selection support

Hi all,
the attached patch allows more fine grained compiler selection.

(a) USETOOLS_GCC and USETOOLS_PCC are dropped. I don't really see the
point in them.

(b) AVAILABLE_COMPILER has a list of compilers tried in order to provide
a given language frontend. false is included as fallback to make sure
the variables always end up with something sensible.

(c) A compiler is choosen for a language if the corresponding tool
variable is set (e.g. TOOL_CC.gcc for the C frontend using GCC) and
it is not black listed in the current scope (e.g. UNSUPPORTED_COMPILER.pcc
says that PCC is not supported here). The decision is stored in
ACTIVE_CC etc, later to be used for compiler-specific flags like


RCS file: /home/joerg/repo/netbsd/src/share/mk/,v
retrieving revision 1.664
diff -u -p -r1.664
---  9 May 2011 14:36:48 -0000       1.664
+++  17 May 2011 19:36:21 -0000
@@ -191,21 +191,42 @@ SIZE=             ${TOOLDIR}/bin/${MACHINE_GNU_PLAT
 STRIP=         ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-strip
 .endif                                                                 #  }
-.if defined(HAVE_GCC) && ${USETOOLS_GCC:Uyes} == "yes"                 #  {
-CC=            ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-gcc
-CPP=           ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-cpp
-CXX=           ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-c++
-FC=            ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-g77
-OBJC=          ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-gcc
-.endif                                                                 #  }
-.if defined(HAVE_PCC) && ${USETOOLS_PCC:Uyes} == "yes"
-CC=            ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-pcc
-CPP=           ${TOOLDIR}/libexec/${MACHINE_GNU_PLATFORM}-cpp
-CXX=           false
-FC=            ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-f77
-OBJC=          false
+# Clang supports C, C++ and Objective C
+TOOL_CC.clang=         ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-clang
+TOOL_CPP.clang=                ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-clang-cpp
+TOOL_CXX.clang=                ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-clang++
+TOOL_OBJC.clang=       ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-clang
+# GCC supports C, C++, Fortran and Objective C
+# PCC supports C and Fortran
+TOOL_CC.pcc=           ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-pcc
+TOOL_CPP.pcc=          ${TOOLDIR}/libexec/${MACHINE_GNU_PLATFORM}-cpp
+TOOL_FC.pcc=           ${TOOLDIR}/bin/${MACHINE_GNU_PLATFORM}-f77
+# Fallback to ensure that all variables are defined to something
+TOOL_CC.false=         false
+TOOL_CPP.false=                false
+TOOL_CXX.false=                false
+TOOL_FC.false=         false
+TOOL_OBJC.false=       false
+.for _t in CC CPP CXX FC OBJC
+ACTIVE_${_t}=  ${AVAILABLE_COMPILER:@.c.@ ${ 
!defined(UNSUPPORTED_COMPILER.${.c.}) && defined(TOOL_${_t}.${.c.}) :? ${.c.} : 
+# Duplicated to avoid make bugs
+CC=            ${TOOL_CC.${ACTIVE_CC}}
+CPP=           ${TOOL_CPP.${ACTIVE_CPP}}
+CXX=           ${TOOL_CXX.${ACTIVE_CXX}}
+FC=            ${TOOL_FC.${ACTIVE_FC}}
 # Make sure DESTDIR is set, so that builds with these tools always

Home | Main Index | Thread Index | Old Index