diff --git a/configs/components/_base-ruby-augeas.rb b/configs/components/_base-ruby-augeas.rb index cfafdbc67..858620c16 100644 --- a/configs/components/_base-ruby-augeas.rb +++ b/configs/components/_base-ruby-augeas.rb @@ -20,6 +20,11 @@ pkg.build_requires "augeas" pkg.environment "PATH", "$(PATH):/opt/pl-build-tools/bin:/usr/local/bin:/opt/csw/bin:/usr/ccs/bin:/usr/sfw/bin" + +if platform.architecture == 'arm64' && platform.is_macos? && platform.os_version.to_i >= 13 + pkg.environment "PATH", "/opt/homebrew/bin:$(PATH)" +end + if platform.is_aix? if platform.name == 'aix-7.1-ppc' pkg.environment "CC", "/opt/pl-build-tools/bin/gcc" @@ -40,11 +45,12 @@ pkg.environment "RUBY", host_ruby end ruby = "#{host_ruby} -r#{settings[:datadir]}/doc/rbconfig-#{ruby_version}-orig.rb" -elsif platform.is_cross_compiled? +elsif platform.architecture == 'arm64' if platform.is_linux? || platform.is_macos? pkg.environment "RUBY", host_ruby pkg.environment 'CC', 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/ pkg.environment 'CC', 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/ + pkg.environment 'CC', 'clang -target arm64-apple-macos13' if platform.name =~ /osx-13/ ruby = "#{host_ruby} -r#{settings[:datadir]}/doc/rbconfig-#{ruby_version}-orig.rb" pkg.environment "LDFLAGS", settings[:ldflags] end diff --git a/configs/components/augeas.rb b/configs/components/augeas.rb index 4893b32ba..e142cbac8 100644 --- a/configs/components/augeas.rb +++ b/configs/components/augeas.rb @@ -130,7 +130,6 @@ end end - pkg.configure do ["./configure #{extra_config_flags} --prefix=#{settings[:prefix]} #{settings[:host]}"] end diff --git a/configs/components/openssl-1.1.1.rb b/configs/components/openssl-1.1.1.rb index 63ed2d5be..745d0b8f8 100644 --- a/configs/components/openssl-1.1.1.rb +++ b/configs/components/openssl-1.1.1.rb @@ -54,14 +54,19 @@ ldflags = "-R/opt/pl-build-tools/#{settings[:platform_triple]}/lib -Wl,-rpath=#{settings[:libdir]} -L/opt/pl-build-tools/#{settings[:platform_triple]}/lib" target = platform.architecture =~ /86/ ? 'solaris-x86-gcc' : 'solaris-sparcv9-gcc' elsif platform.is_macos? - pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' + if platform.os_version.to_i >= 13 && platform.architecture == 'arm64' + pkg.environment 'PATH', '/opt/homebrew/bin:$(PATH):/usr/local/bin' + else + pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' + end cflags = settings[:cflags] - target = if platform.is_cross_compiled? - 'darwin64-arm64-cc' - else - 'darwin64-x86_64-cc' - end + + target = if platform.architecture == 'arm64' + 'darwin64-arm64-cc' + else + 'darwin64-x86_64-cc' + end elsif platform.is_linux? pkg.environment 'PATH', '/opt/pl-build-tools/bin:$(PATH):/usr/local/bin' diff --git a/configs/components/ruby-2.7.8.rb b/configs/components/ruby-2.7.8.rb index 6b1015efa..d01969491 100644 --- a/configs/components/ruby-2.7.8.rb +++ b/configs/components/ruby-2.7.8.rb @@ -106,7 +106,11 @@ special_flags += " --build=#{settings[:platform_triple]} " elsif platform.is_cross_compiled? && platform.is_linux? special_flags += " --with-baseruby=#{host_ruby} " - elsif platform.is_cross_compiled? && platform.is_macos? + elsif platform.is_macos? && platform.architecture == 'arm64' + if platform.os_version.to_i >= 13 + pkg.environment 'PATH', '/opt/homebrew/bin:$(PATH):/usr/local/bin' + special_flags += " --with-openssl-dir=#{settings[:prefix]} " + end # When the target arch is aarch64, ruby incorrectly selects the 'ucontext' coroutine # implementation instead of 'arm64', so specify 'amd64' explicitly # https://github.com/ruby/ruby/blob/c9c2245c0a25176072e02db9254f0e0c84c805cd/configure.ac#L2329-L2330 @@ -194,6 +198,7 @@ 'x86_64-w64-mingw32' => 'x64-mingw32', 'i686-w64-mingw32' => 'i386-mingw32' } + if target_doubles.key?(settings[:platform_triple]) rbconfig_topdir = File.join(ruby_dir, 'lib', 'ruby', '2.7.0', target_doubles[settings[:platform_triple]]) else @@ -203,19 +208,20 @@ rbconfig_changes = {} if platform.is_aix? rbconfig_changes["CC"] = "gcc" - elsif platform.is_cross_compiled? || platform.is_solaris? - if platform.name =~ /osx-11/ - rbconfig_changes["CC"] = 'clang -target arm64-apple-macos11' - elsif platform.name =~ /osx-12/ - rbconfig_changes["CC"] = 'clang -target arm64-apple-macos12' + elsif platform.is_macos? + if platform.is_cross_compiled? + rbconfig_changes["CC"] = 'clang -target arm64-apple-macos11' if platform.name =~ /osx-11/ + rbconfig_changes["CC"] = 'clang -target arm64-apple-macos12' if platform.name =~ /osx-12/ else - rbconfig_changes["CC"] = "gcc" - if platform.is_solaris? - # this should probably be done for aix and cross compiled targets too - rbconfig_changes["CPP"] = "gcc -E" - end - rbconfig_changes["warnflags"] = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized" + rbconfig_changes["CC"] = 'clang' + end + elsif platform.is_cross_compiled? || platform.is_solaris? + rbconfig_changes["CC"] = "gcc" + if platform.is_solaris? + # this should probably be done for aix and cross compiled targets too + rbconfig_changes["CPP"] = "gcc -E" end + rbconfig_changes["warnflags"] = "-Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wno-tautological-compare -Wno-parentheses-equality -Wno-constant-logical-operand -Wno-self-assign -Wunused-variable -Wimplicit-int -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat -Wsuggest-attribute=noreturn -Wsuggest-attribute=format -Wno-maybe-uninitialized" if platform.name =~ /el-7-ppc64/ # EL 7 on POWER will fail with -Wl,--compress-debug-sections=zlib so this # will remove that entry diff --git a/configs/components/yaml-cpp.rb b/configs/components/yaml-cpp.rb index 5d05af6de..2836d8e5c 100644 --- a/configs/components/yaml-cpp.rb +++ b/configs/components/yaml-cpp.rb @@ -28,7 +28,7 @@ pkg.environment 'CXX', 'clang++ -target arm64-apple-macos12' if platform.name =~ /osx-12/ elsif platform.architecture == 'arm64' && platform.os_version.to_i >= 13 pkg.environment 'CXX', 'clang++' - cmake = "/opt/homebrew/bin/cmake" if platform.architecture == "arm64" + cmake = "/opt/homebrew/bin/cmake" end elsif platform.is_windows? diff --git a/configs/platforms/osx-13-arm64.rb b/configs/platforms/osx-13-arm64.rb index b55864edf..c4b7f5a67 100644 --- a/configs/platforms/osx-13-arm64.rb +++ b/configs/platforms/osx-13-arm64.rb @@ -1,9 +1,8 @@ platform 'osx-13-arm64' do |plat| - plat.inherit_from_default - - packages = %w[automake cmake pkg-config yaml-cpp] - plat.provision_with "su test -c '/opt/homebrew/bin/brew install #{packages.join(' ')}'" - - plat.output_dir File.join('apple', '13', 'PC1', 'arm64') - end - \ No newline at end of file + plat.inherit_from_default + + packages = %w[automake cmake pkg-config yaml-cpp] + plat.provision_with "su test -c '/opt/homebrew/bin/brew install #{packages.join(' ')}'" + + plat.output_dir File.join('apple', '13', 'PC1', 'arm64') +end