Module: Superenv
- Extended by:
- T::Sig
- Includes:
- SharedEnvExtension
- Defined in:
- extend/os/mac/extend/ENV/super.rb,
extend/os/linux/extend/ENV/super.rb,
extend/ENV/super.rb
Overview
Why superenv
?
- Only specify the environment we need (NO LDFLAGS for cmake)
- Only apply compiler-specific options when we are calling that compiler
- Force all incpaths and libpaths into the cc instantiation (fewer bugs)
- Cater toolchain usage to specific Xcode versions
- Remove flags that we don’t want or that will break builds
- Simpler code
- Simpler formulae that just work
- Build-system agnostic configuration of the toolchain
Class Method Summary
collapse
Instance Method Summary
collapse
#append, #append_path, #append_to_cccfg, #append_to_cflags, #cc, #cflags, #compiler, #cppflags, #cxx, #cxxflags, #fc, #fcflags, #fflags, #fortran, #ldflags, #no_weak_imports_support?, #prepend, #prepend_create_path, #prepend_path, #remove, #remove_cc_etc, #remove_from_cflags
Class Method Details
.extended(base) ⇒ void
This method returns an undefined value.
26
27
28
29
30
|
# File 'extend/ENV/super.rb', line 26
def self.extended(base)
base.keg_only_deps = []
base.deps = []
base.run_time_deps = []
end
|
The location of Homebrew’s shims on this OS.
9
10
11
|
# File 'extend/os/mac/extend/ENV/super.rb', line 9
def shims_path
HOMEBREW_SHIMS_PATH/"mac/super"
end
|
Instance Method Details
#cxx11 ⇒ void
This method returns an undefined value.
324
325
326
327
|
# File 'extend/ENV/super.rb', line 324
def cxx11
append_to_cccfg "x"
append_to_cccfg "g" if homebrew_cc == "clang"
end
|
#deparallelize(&block) ⇒ T.untyped
Removes the MAKEFLAGS environment variable, causing make to use a single job.
This is useful for makefiles with race conditions.
When passed a block, MAKEFLAGS is removed only for the duration of the block and is restored after its completion.
294
295
296
297
298
299
300
301
302
303
304
305
|
# File 'extend/ENV/super.rb', line 294
def deparallelize(&block)
old = delete("MAKEFLAGS")
if block
begin
yield
ensure
self["MAKEFLAGS"] = old
end
end
old
end
|
#determine_dynamic_linker_path ⇒ String?
49
50
51
52
53
54
|
# File 'extend/os/linux/extend/ENV/super.rb', line 49
def determine_dynamic_linker_path
path = "#{HOMEBREW_PREFIX}/lib/ld.so"
return unless File.readable? path
path
end
|
#determine_rpath_paths(formula) ⇒ Object
40
41
42
43
44
45
46
|
# File 'extend/os/linux/extend/ENV/super.rb', line 40
def determine_rpath_paths(formula)
PATH.new(
*formula&.lib,
PATH.new(run_time_deps.map { |dep| dep.opt_lib.to_s }).existing,
"#{HOMEBREW_PREFIX}/lib",
)
end
|
#libcxx ⇒ void
This method returns an undefined value.
330
331
332
|
# File 'extend/ENV/super.rb', line 330
def libcxx
append_to_cccfg "g" if compiler == :clang
end
|
#make_jobs ⇒ Integer
308
309
310
311
|
# File 'extend/ENV/super.rb', line 308
def make_jobs
self["MAKEFLAGS"] =~ /-\w*j(\d+)/
[Regexp.last_match(1).to_i, 1].max
end
|
#no_weak_imports ⇒ Object
137
138
139
|
# File 'extend/os/mac/extend/ENV/super.rb', line 137
def no_weak_imports
append_to_cccfg "w" if no_weak_imports_support?
end
|
#O0(&block) ⇒ Object
343
344
345
346
347
348
349
|
# File 'extend/ENV/super.rb', line 343
def O0(&block)
if block
with_env(HOMEBREW_OPTIMIZATION_LEVEL: "O0", &block)
else
self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O0"
end
end
|
#O1(&block) ⇒ void
This method returns an undefined value.
352
353
354
355
356
357
358
|
# File 'extend/ENV/super.rb', line 352
def O1(&block)
if block
with_env(HOMEBREW_OPTIMIZATION_LEVEL: "O1", &block)
else
self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O1"
end
end
|
#permit_arch_flags ⇒ void
This method returns an undefined value.
314
315
316
|
# File 'extend/ENV/super.rb', line 314
def permit_arch_flags
append_to_cccfg "K"
end
|
#reset ⇒ void
This method returns an undefined value.
43
44
45
46
47
48
|
# File 'extend/ENV/super.rb', line 43
def reset
super
delete("as_nl")
end
|
#runtime_cpu_detection ⇒ void
This method returns an undefined value.
319
320
321
|
# File 'extend/ENV/super.rb', line 319
def runtime_cpu_detection
append_to_cccfg "d"
end
|