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