Module: OS::Mac::Superenv Private

Extended by:
T::Helpers
Included in:
Superenv
Defined in:
extend/os/mac/extend/ENV/super.rb

This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#determine_cccfgString

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



86
87
88
89
90
91
92
93
94
95
96
# File 'extend/os/mac/extend/ENV/super.rb', line 86

def determine_cccfg
  s = +""
  # Pass `-no_fixup_chains` whenever the linker is invoked with `-undefined dynamic_lookup`.
  # See: https://github.com/python/cpython/issues/97524
  #      https://github.com/pybind/pybind11/pull/4301
  s << "f" if no_fixup_chains_support?
  # Pass `-ld_classic` whenever the linker is invoked with `-dead_strip_dylibs`
  # on `ld` versions that don't properly handle that option.
  s << "c" if ::DevelopmentTools.ld64_version.between?("1015.7", "1022.1")
  s.freeze
end

#homebrew_extra_cmake_frameworks_pathsArray<::Pathname>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



79
80
81
82
83
# File 'extend/os/mac/extend/ENV/super.rb', line 79

def homebrew_extra_cmake_frameworks_paths
  paths = []
  paths << "#{self["HOMEBREW_SDKROOT"]}/System/Library/Frameworks" if MacOS::Xcode.without_clt?
  paths.map { |p| ::Pathname.new(p) }
end

#homebrew_extra_cmake_include_pathsArray<::Pathname>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



63
64
65
66
67
68
69
# File 'extend/os/mac/extend/ENV/super.rb', line 63

def homebrew_extra_cmake_include_paths
  paths = []
  paths << "#{self["HOMEBREW_SDKROOT"]}/usr/include/libxml2" if libxml2_include_needed?
  paths << "#{self["HOMEBREW_SDKROOT"]}/usr/include/apache2" if MacOS::Xcode.without_clt?
  paths << "#{self["HOMEBREW_SDKROOT"]}/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers"
  paths.map { |p| ::Pathname.new(p) }
end

#homebrew_extra_cmake_library_pathsArray<::Pathname>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



72
73
74
75
76
# File 'extend/os/mac/extend/ENV/super.rb', line 72

def homebrew_extra_cmake_library_paths
  %W[
    #{self["HOMEBREW_SDKROOT"]}/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries
  ].map { |p| ::Pathname.new(p) }
end

#homebrew_extra_isystem_pathsArray<::Pathname>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



43
44
45
46
47
48
49
# File 'extend/os/mac/extend/ENV/super.rb', line 43

def homebrew_extra_isystem_paths
  paths = []
  paths << "#{self["HOMEBREW_SDKROOT"]}/usr/include/libxml2" if libxml2_include_needed?
  paths << "#{self["HOMEBREW_SDKROOT"]}/usr/include/apache2" if MacOS::Xcode.without_clt?
  paths << "#{self["HOMEBREW_SDKROOT"]}/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers"
  paths.map { |p| ::Pathname.new(p) }
end

#homebrew_extra_library_pathsArray<::Pathname>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



52
53
54
55
56
57
58
59
60
# File 'extend/os/mac/extend/ENV/super.rb', line 52

def homebrew_extra_library_paths
  paths = []
  if compiler == :llvm_clang
    paths << "#{self["HOMEBREW_SDKROOT"]}/usr/lib"
    paths << ::Formula["llvm"].opt_lib
  end
  paths << "#{self["HOMEBREW_SDKROOT"]}/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries"
  paths.map { |p| ::Pathname.new(p) }
end

#homebrew_extra_pkg_config_pathsArray<::Pathname>

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



27
28
29
30
31
32
# File 'extend/os/mac/extend/ENV/super.rb', line 27

def homebrew_extra_pkg_config_paths
  %W[
    /usr/lib/pkgconfig
    #{HOMEBREW_LIBRARY}/Homebrew/os/mac/pkgconfig/#{MacOS.version}
  ].map { |p| ::Pathname.new(p) }
end

#libxml2_include_needed?Boolean

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:

  • (Boolean)


35
36
37
38
39
40
# File 'extend/os/mac/extend/ENV/super.rb', line 35

def libxml2_include_needed?
  return false if deps.any? { |d| d.name == "libxml2" }
  return false if ::Pathname.new("#{self["HOMEBREW_SDKROOT"]}/usr/include/libxml").directory?

  true
end

#no_fixup_chainsvoid

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

This method returns an undefined value.



162
163
164
165
166
167
# File 'extend/os/mac/extend/ENV/super.rb', line 162

def no_fixup_chains
  # This function has been no-op for quite some time as it's set by default.
  # Unlike above, do not touch the `cc` shim or the support method when removing this.
  # odeprecated "ENV.no_fixup_chains"
  append_to_cccfg "f" if no_fixup_chains_support?
end

#no_weak_importsvoid

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

This method returns an undefined value.



153
154
155
156
157
158
159
# File 'extend/os/mac/extend/ENV/super.rb', line 153

def no_weak_imports
  # This has little-to-no usage and doesn't make sense to have a special function for.
  # When removing this function, also cleanup related usage in the `cc` shim
  # and remove `no_weak_imports_support?`.
  # odeprecated "ENV.no_weak_imports"
  append_to_cccfg "w" if no_weak_imports_support?
end