superenv: fix cpp shim

This sets cpp to use the compiler as cpp, and works with scripts which
pass values to cpp on stdin as well as with file arguments.

Closes Homebrew/homebrew#22155.
This commit is contained in:
Misty De Meo 2013-08-27 18:23:34 -07:00
parent ed461359a7
commit 55654933f5

View File

@ -6,6 +6,7 @@
#TODO create mechanism to specify build effects like %w{-O0 -O4 vanilla-arg-parsing sdk=10.6} etc.
require "#{File.dirname __FILE__}/../libsuperenv"
require 'io/wait'
require 'set'
def cccfg? flags
@ -55,8 +56,7 @@ class Cmd
def tool
@tool ||= case @arg0
when 'ld' then 'ld'
when 'cpp' then 'cpp'
when 'cc', 'c99', 'c89'
when 'cc', 'cpp', 'c99', 'c89'
# Ideally we would run `cx9`, however these tools are POSIX compliant
# and don't support many flags. We need -isystem for instance, but also
# reliability is generally much higher if we just get clang/gcc to do
@ -90,7 +90,8 @@ class Cmd
end if nclt?
case mode
when :cpp
%w{-E} + args + cppflags
args = %w{-E} + args + cppflags
STDIN.ready? ? args + %w{-} : args
when :ld
ldflags + args
when :cc