diff options
Diffstat (limited to 'Library/Homebrew/brewkit.rb')
| -rw-r--r-- | Library/Homebrew/brewkit.rb | 228 |
1 files changed, 4 insertions, 224 deletions
diff --git a/Library/Homebrew/brewkit.rb b/Library/Homebrew/brewkit.rb index 843ac023d..2668889d8 100644 --- a/Library/Homebrew/brewkit.rb +++ b/Library/Homebrew/brewkit.rb @@ -1,224 +1,4 @@ -# Copyright 2009 Max Howell and other contributors. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -# TODO -# 1. Indeed, there should be an option to build 32 or 64 bit binaries -# 2. Homebrew will not support building 32 and 64 bit lipo'd binaries, I -# want to, but the simple fact is it is difficult to force most of the -# build systems we support to do it. - - -ENV['MACOSX_DEPLOYMENT_TARGET']=MACOS_VERSION.to_s - -unless HOMEBREW_PREFIX.to_s == '/usr/local' - # /usr/local is always in the build system path so only add other paths - ENV['CPPFLAGS'] = "-I#{HOMEBREW_PREFIX}/include" - ENV['LDFLAGS'] = "-L#{HOMEBREW_PREFIX}/lib" -else - # ignore existing build vars, thus we should have less bugs to deal with - ENV['CPPFLAGS'] = '' - ENV['LDFLAGS'] = '' -end - -if MACOS_VERSION >= 10.6 or ENV['HOMEBREW_USE_LLVM'] - # you can install Xcode wherever you like you know. - prefix = `/usr/bin/xcode-select -print-path`.chomp - prefix = "/Developer" if prefix.to_s.empty? - - ENV['CC'] = "#{prefix}/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2" - ENV['CXX'] = "#{prefix}/usr/llvm-gcc-4.2/bin/llvm-g++-4.2" - cflags = ['-O4'] # O4 baby! -else - ENV['CC']="gcc-4.2" - ENV['CXX']="g++-4.2" - cflags = ['-O3'] -end -# in rare cases this may break your builds, as the tool for some reason wants -# to use a specific linker, however doing this in general causes formula to -# build more successfully because we are changing CC and many build systems -# don't react properly to that -ENV['LD']=ENV['CC'] - -# optimise all the way to eleven, references: -# http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel -# http://forums.mozillazine.org/viewtopic.php?f=12&t=577299 -# http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/i386-and-x86_002d64-Options.html -if MACOS_VERSION >= 10.6 - case Hardware.intel_family - when :penryn, :core2 - # no need to add -mfpmath it happens automatically with 64 bit compiles - cflags << "-march=core2" - when :core - cflags<<"-march=prescott"<<"-mfpmath=sse" - end -else - case Hardware.intel_family - when :penryn, :core2 - cflags<<"-march=nocona" - when :core - cflags<<"-march=prescott" - end - cflags<<"-mfpmath=sse" -end -cflags<<"-mmmx" -case Hardware.intel_family -when :nehalem - cflags<<"-msse4.2" -when :penryn - cflags<<"-msse4.1" -when :core2, :core - cflags<<"-msse3" -end - -# -w: keep signal to noise high -# -fomit-frame-pointer: we are not debugging this software, we are using it -BREWKIT_SAFE_FLAGS="-w -pipe -fomit-frame-pointer -mmacosx-version-min=#{MACOS_VERSION}" -ENV['CFLAGS']=ENV['CXXFLAGS']="#{cflags*' '} #{BREWKIT_SAFE_FLAGS}" - -# compile faster -ENV['MAKEFLAGS']="-j#{Hardware.processor_count}" - - -# you can use these functions for packages that have build issues -module HomebrewEnvExtension - def deparallelize - remove 'MAKEFLAGS', /-j\d+/ - end - alias_method :j1, :deparallelize - def gcc_4_0_1 - case MACOS_VERSION - when 10.5 - self['CC']=nil - self['CXX']=nil - self['LD']=nil - when 10.6..11.0 - self['CC']='gcc-4.0' - self['CXX']='g++-4.0' - self['LD']=self['CC'] - remove_from_cflags '-march=core2' - self.O3 - end - remove_from_cflags '-msse4.1' - remove_from_cflags '-msse4.2' - end - def O3 - # Sometimes O4 just takes fucking forever - remove_from_cflags '-O4' - append_to_cflags '-O3' - end - def O2 - # Sometimes O3 doesn't work or produces bad binaries - remove_from_cflags '-O4' - remove_from_cflags '-O3' - append_to_cflags '-O2' - end - def gcc_4_2 - # Sometimes you want to downgrade from LLVM to GCC 4.2 - self['CC']="gcc-4.2" - self['CXX']="g++-4.2" - self['LD']=self['CC'] - self.O3 - end - def osx_10_4 - self['MACOSX_DEPLOYMENT_TARGET']=nil - remove_from_cflags(/ ?-mmacosx-version-min=10\.\d/) - end - def minimal_optimization - self['CFLAGS']=self['CXXFLAGS']="-Os #{BREWKIT_SAFE_FLAGS}" - end - def no_optimization - self['CFLAGS']=self['CXXFLAGS']=BREWKIT_SAFE_FLAGS - end - def libxml2 - append_to_cflags ' -I/usr/include/libxml2' - end - def x11 - # CPPFLAGS are the C-PreProcessor flags, *not* C++! - append 'CPPFLAGS', '-I/usr/X11R6/include' - append 'LDFLAGS', '-L/usr/X11R6/lib' - end - alias_method :libpng, :x11 - # we've seen some packages fail to build when warnings are disabled! - def enable_warnings - remove_from_cflags '-w' - end - # Snow Leopard defines an NCURSES value the opposite of most distros - # See: http://bugs.python.org/issue6848 - def ncurses_define - append 'CPPFLAGS', "-DNCURSES_OPAQUE=0" - end - # returns the compiler we're using - def cc - ENV['CC'] or "gcc" - end - def cxx - ENV['cxx'] or "g++" - end - # in case you need it - def m64 - append_to_cflags '-m64' - ENV['LDFLAGS'] += '-arch x86_64' - end - -private - def append key, value - ref=self[key] - if ref.nil? or ref.empty? - self[key]=value - else - self[key]=ref+' '+value - end - end - def append_to_cflags f - append 'CFLAGS', f - append 'CXXFLAGS', f - end - def remove key, value - return if self[key].nil? - self[key]=self[key].sub value, '' # can't use sub! on ENV - self[key]=nil if self[key].empty? # keep things clean - end - def remove_from_cflags f - remove 'CFLAGS', f - remove 'CXXFLAGS', f - end -end - -ENV.extend HomebrewEnvExtension - - -# Clear CDPATH to avoid make issues that depend on changing directories -ENV.delete('CDPATH') - -def inreplace(path, before, after) - before=Regexp.escape before.to_s - before.gsub! "/", "\\/" # I guess not escaped as delimiter varies - after=after.to_s - after.gsub! "\\", "\\\\" - after.gsub! "/", "\\/" - after.gsub! "$", "\\$" - - # FIXME use proper Ruby for teh exceptions! - safe_system "/usr/bin/perl", "-pi", "-e", "s/#{before}/#{after}/g", path -end +require 'utils' +opoo "brewkit.rb is deprecated please require 'formula' instead" +puts "This file will be removed at version 0.7" +require 'formula' |
