diff options
| author | Mike McQuaid | 2016-07-12 11:39:39 +0100 |
|---|---|---|
| committer | GitHub | 2016-07-12 11:39:39 +0100 |
| commit | 498e81c9fcd3bfef4a14eb0fddce51af892b1e9d (patch) | |
| tree | 1cd490afe39d6f7e02e67647e5b32dac6ad232ab /Library/Homebrew/extend/os | |
| parent | 873aa670d1f2a71c9b842827cf1d97796c8171da (diff) | |
| download | brew-498e81c9fcd3bfef4a14eb0fddce51af892b1e9d.tar.bz2 | |
stdenv: port to generic OS. (#456)
Diffstat (limited to 'Library/Homebrew/extend/os')
| -rw-r--r-- | Library/Homebrew/extend/os/extend/ENV/std.rb | 5 | ||||
| -rw-r--r-- | Library/Homebrew/extend/os/mac/extend/ENV/std.rb | 144 |
2 files changed, 149 insertions, 0 deletions
diff --git a/Library/Homebrew/extend/os/extend/ENV/std.rb b/Library/Homebrew/extend/os/extend/ENV/std.rb new file mode 100644 index 000000000..320f9981f --- /dev/null +++ b/Library/Homebrew/extend/os/extend/ENV/std.rb @@ -0,0 +1,5 @@ +require "extend/ENV/std" + +if OS.mac? + require "extend/os/mac/extend/ENV/std" +end diff --git a/Library/Homebrew/extend/os/mac/extend/ENV/std.rb b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb new file mode 100644 index 000000000..3485e2ce7 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/extend/ENV/std.rb @@ -0,0 +1,144 @@ +module Stdenv + # @private + def setup_build_environment(formula = nil) + generic_setup_build_environment formula + + if MacOS.version >= :mountain_lion + # Mountain Lion's sed is stricter, and errors out when + # it encounters files with mixed character sets + delete("LC_ALL") + self["LC_CTYPE"]="C" + end + + # Add lib and include etc. from the current macosxsdk to compiler flags: + macosxsdk MacOS.version + + if MacOS::Xcode.without_clt? + append_path "PATH", "#{MacOS::Xcode.prefix}/usr/bin" + append_path "PATH", "#{MacOS::Xcode.toolchain_path}/usr/bin" + end + + # Leopard's ld needs some convincing that it's building 64-bit + # See: https://github.com/mistydemeo/tigerbrew/issues/59 + if MacOS.version == :leopard && MacOS.prefer_64_bit? + append "LDFLAGS", "-arch #{Hardware::CPU.arch_64_bit}" + + # Many, many builds are broken thanks to Leopard's buggy ld. + # Our ld64 fixes many of those builds, though of course we can't + # depend on it already being installed to build itself. + ld64 if Formula["ld64"].installed? + end + end + + def homebrew_extra_pkg_config_paths + ["#{HOMEBREW_ENV_PATH}/pkgconfig/#{MacOS.version}"] + end + + # Sets architecture-specific flags for every environment variable + # given in the list `flags`. + # @private + def set_cpu_flags(flags, default = DEFAULT_FLAGS, map = Hardware::CPU.optimization_flags) + generic_set_cpu_flags(flags, default, map) + + # Works around a buggy system header on Tiger + append flags, "-faltivec" if MacOS.version == :tiger + end + + def minimal_optimization + generic_minimal_optimization + + macosxsdk unless MacOS::CLT.installed? + end + + def no_optimization + generic_no_optimization + + macosxsdk unless MacOS::CLT.installed? + end + + def remove_macosxsdk(version = MacOS.version) + # Clear all lib and include dirs from CFLAGS, CPPFLAGS, LDFLAGS that were + # previously added by macosxsdk + version = version.to_s + remove_from_cflags(/ ?-mmacosx-version-min=10\.\d+/) + delete("MACOSX_DEPLOYMENT_TARGET") + delete("CPATH") + remove "LDFLAGS", "-L#{HOMEBREW_PREFIX}/lib" + + if (sdk = MacOS.sdk_path(version)) && !MacOS::CLT.installed? + delete("SDKROOT") + remove_from_cflags "-isysroot #{sdk}" + remove "CPPFLAGS", "-isysroot #{sdk}" + remove "LDFLAGS", "-isysroot #{sdk}" + if HOMEBREW_PREFIX.to_s == "/usr/local" + delete("CMAKE_PREFIX_PATH") + else + # It was set in setup_build_environment, so we have to restore it here. + self["CMAKE_PREFIX_PATH"] = HOMEBREW_PREFIX.to_s + end + remove "CMAKE_FRAMEWORK_PATH", "#{sdk}/System/Library/Frameworks" + end + end + + def macosxsdk(version = MacOS.version) + # Sets all needed lib and include dirs to CFLAGS, CPPFLAGS, LDFLAGS. + remove_macosxsdk + version = version.to_s + append_to_cflags("-mmacosx-version-min=#{version}") + self["MACOSX_DEPLOYMENT_TARGET"] = version + self["CPATH"] = "#{HOMEBREW_PREFIX}/include" + prepend "LDFLAGS", "-L#{HOMEBREW_PREFIX}/lib" + + if (sdk = MacOS.sdk_path(version)) && !MacOS::CLT.installed? + # Extra setup to support Xcode 4.3+ without CLT. + self["SDKROOT"] = sdk + # Tell clang/gcc where system include's are: + append_path "CPATH", "#{sdk}/usr/include" + # The -isysroot is needed, too, because of the Frameworks + append_to_cflags "-isysroot #{sdk}" + append "CPPFLAGS", "-isysroot #{sdk}" + # And the linker needs to find sdk/usr/lib + append "LDFLAGS", "-isysroot #{sdk}" + # Needed to build cmake itself and perhaps some cmake projects: + append_path "CMAKE_PREFIX_PATH", "#{sdk}/usr" + append_path "CMAKE_FRAMEWORK_PATH", "#{sdk}/System/Library/Frameworks" + end + end + + # Some configure scripts won't find libxml2 without help + def libxml2 + if MacOS::CLT.installed? + append "CPPFLAGS", "-I/usr/include/libxml2" + else + # Use the includes form the sdk + append "CPPFLAGS", "-I#{MacOS.sdk_path}/usr/include/libxml2" + end + end + + def x11 + # There are some config scripts here that should go in the PATH + append_path "PATH", MacOS::X11.bin.to_s + + # Append these to PKG_CONFIG_LIBDIR so they are searched + # *after* our own pkgconfig directories, as we dupe some of the + # libs in XQuartz. + append_path "PKG_CONFIG_LIBDIR", "#{MacOS::X11.lib}/pkgconfig" + append_path "PKG_CONFIG_LIBDIR", "#{MacOS::X11.share}/pkgconfig" + + append "LDFLAGS", "-L#{MacOS::X11.lib}" + append_path "CMAKE_PREFIX_PATH", MacOS::X11.prefix.to_s + append_path "CMAKE_INCLUDE_PATH", MacOS::X11.include.to_s + append_path "CMAKE_INCLUDE_PATH", "#{MacOS::X11.include}/freetype2" + + append "CPPFLAGS", "-I#{MacOS::X11.include}" + append "CPPFLAGS", "-I#{MacOS::X11.include}/freetype2" + + append_path "ACLOCAL_PATH", "#{MacOS::X11.share}/aclocal" + + if MacOS::XQuartz.provided_by_apple? && !MacOS::CLT.installed? + append_path "CMAKE_PREFIX_PATH", "#{MacOS.sdk_path}/usr/X11" + end + + append "CFLAGS", "-I#{MacOS::X11.include}" unless MacOS::CLT.installed? + end +end |
