Ticket #15772 (new defect)
ccache support sets incompatible compiler
| Reported by: | landonf@… | Owned by: | macports-tickets@… |
|---|---|---|---|
| Priority: | Normal | Milestone: | MacPorts Future |
| Component: | base | Version: | 1.6.0 |
| Keywords: | Cc: | ||
| Port: |
Description
Prior to the introduction of ccache-specific functionality, ccache could be enabled by setting the binpath in macports.conf. This would result in standard compiler names being found in /opt/local/libexec/ccache.
With the introduction of ccache-specific functionality -- in of itself a layering violation -- the compiler is now munged at configure-time:
CC=ccache /usr/bin/gcc-4.0
This "two word" CC command breaks some otherwise valid Makefile that expect CC to be a single command. An example:
ifndef $(CXX)
CXX = c++
endif
Results in:
Makefile:8: *** invalid syntax in conditional. Stop.
Change History
Note: See
TracTickets for help on using
tickets.


As MacPorts explicitly sets CC and CXX to the full path to the compiler in the build environment, extending binpath is not a possible solution for using ccache. Also, it will not work with the different compilers we allow to select by configure.compiler.
If a port does only accept real paths for CC or CXX or does not understand more than one word, add configure.ccache no to the port, which will disable ccache for it.