This is an automated email from the git hooks/post-receive script.
boklm pushed a commit to branch main in repository builders/tor-browser-build.
The following commit(s) were added to refs/heads/main by this push: new fdebcff Bug 40158: Add support for macOS AArch64 fdebcff is described below
commit fdebcff9cbcc771aae3c153172a11ad7e49ecdad Author: Nicolas Vigier boklm@torproject.org AuthorDate: Tue Nov 16 18:17:45 2021 +0100
Bug 40158: Add support for macOS AArch64
We don't enable aarch64 build by default yet. This will be done in a second part (tor-browser-build#40439) where we create universal x86-64/arm64 dmg files.
In projects/macosx-toolchain/build we also clean up the flags used to build compiler-rt, trying to stay close to what Mozilla is doing.
We also switch back to using Ninja, to avoid an error in compiler-rt build for aarch64: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40... --- Makefile | 24 +++++++ projects/browser/build | 4 +- projects/browser/config | 7 ++ projects/cctools/build | 6 ++ projects/firefox-langpacks/config | 2 +- projects/firefox/config | 4 +- projects/firefox/mozconfig | 14 +++- projects/go/config | 7 +- projects/libevent/config | 2 +- projects/macosx-toolchain/build | 76 ++++++++++++---------- .../compiler-rt-cross-compile.patch | 6 +- projects/macosx-toolchain/config | 2 + projects/node/config | 2 +- projects/openssl/build | 2 +- projects/openssl/config | 4 +- projects/release/build | 3 + projects/release/config | 10 +++ projects/rust/build | 6 +- projects/rust/config | 4 +- projects/tor/build | 2 +- projects/tor/config | 2 +- rbm.conf | 31 +++++++-- 22 files changed, 159 insertions(+), 61 deletions(-)
diff --git a/Makefile b/Makefile index 957234d..465d0ea 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,9 @@ torbrowser-release-windows-x86_64: submodule-update torbrowser-release-osx-x86_64: submodule-update $(rbm) build release --target release --target browser-osx-x86_64 --target torbrowser
+torbrowser-release-osx-aarch64: submodule-update + $(rbm) build release --target release --target browser-osx-aarch64 --target torbrowser + torbrowser-release-src: submodule-update $(rbm) build release --target release --target browser-src --target torbrowser
@@ -87,6 +90,9 @@ torbrowser-alpha-windows-x86_64: submodule-update torbrowser-alpha-osx-x86_64: submodule-update $(rbm) build release --target alpha --target browser-osx-x86_64 --target torbrowser
+torbrowser-alpha-osx-aarch64: submodule-update + $(rbm) build release --target alpha --target browser-osx-aarch64 --target torbrowser + torbrowser-alpha-src: submodule-update $(rbm) build release --target alpha --target browser-src --target torbrowser
@@ -129,6 +135,9 @@ torbrowser-nightly-windows-x86_64: submodule-update torbrowser-nightly-osx-x86_64: submodule-update $(rbm) build release --target nightly --target browser-osx-x86_64 --target torbrowser
+torbrowser-nightly-osx-aarch64: submodule-update + $(rbm) build release --target nightly --target browser-osx-aarch64 --target torbrowser + torbrowser-nightly-src: submodule-update $(rbm) build release --target nightly --target browser-src --target torbrowser
@@ -171,6 +180,9 @@ torbrowser-testbuild-windows-i686: submodule-update torbrowser-testbuild-osx-x86_64: submodule-update $(rbm) build release --target testbuild --target browser-osx-x86_64 --target torbrowser
+torbrowser-testbuild-osx-aarch64: submodule-update + $(rbm) build release --target testbuild --target browser-osx-aarch64 --target torbrowser + torbrowser-testbuild-src: submodule-update $(rbm) build release --target testbuild --target browser-src-testbuild --target torbrowser
@@ -312,6 +324,9 @@ basebrowser-release-windows-x86_64: submodule-update basebrowser-release-osx-x86_64: submodule-update $(rbm) build release --target release --target browser-osx-x86_64 --target basebrowser
+basebrowser-release-osx-aarch64: submodule-update + $(rbm) build release --target release --target browser-osx-aarch64 --target basebrowser + basebrowser-release-src: submodule-update $(rbm) build release --target release --target browser-src --target basebrowser
@@ -354,6 +369,9 @@ basebrowser-alpha-windows-x86_64: submodule-update basebrowser-alpha-osx-x86_64: submodule-update $(rbm) build release --target alpha --target browser-osx-x86_64 --target basebrowser
+basebrowser-alpha-osx-aarch64: submodule-update + $(rbm) build release --target alpha --target browser-osx-aarch64 --target basebrowser + basebrowser-alpha-src: submodule-update $(rbm) build release --target alpha --target browser-src --target basebrowser
@@ -396,6 +414,9 @@ basebrowser-nightly-windows-x86_64: submodule-update basebrowser-nightly-osx-x86_64: submodule-update $(rbm) build release --target nightly --target browser-osx-x86_64 --target basebrowser
+basebrowser-nightly-osx-aarch64: submodule-update + $(rbm) build release --target nightly --target browser-osx-aarch64 --target basebrowser + basebrowser-nightly-src: submodule-update $(rbm) build release --target nightly --target browser-src --target basebrowser
@@ -438,6 +459,9 @@ basebrowser-testbuild-windows-i686: submodule-update basebrowser-testbuild-osx-x86_64: submodule-update $(rbm) build release --target testbuild --target browser-osx-x86_64 --target basebrowser
+basebrowser-testbuild-osx-aarch64: submodule-update + $(rbm) build release --target testbuild --target browser-osx-aarch64 --target basebrowser + basebrowser-testbuild-src: submodule-update $(rbm) build release --target testbuild --target browser-src-testbuild --target basebrowser
diff --git a/projects/browser/build b/projects/browser/build index 9c7e4a0..908bc2a 100644 --- a/projects/browser/build +++ b/projects/browser/build @@ -299,7 +299,7 @@ cd $distdir [% ELSIF c("var/osx") %] [% c('var/ddmg', { dmg_src => '"$PKG_DIR"', - dmg_out => '$OUTDIR/' _ c('var/ProjectName') _ '-' _ c("var/torbrowser_version") _ '-osx64_${PKG_LOCALE}.dmg', + dmg_out => '$OUTDIR/' _ c('var/ProjectName') _ '-' _ c("var/torbrowser_version") _ '-' _ c("var/dmg_name") _ '_${PKG_LOCALE}.dmg', }) %] [% ELSIF c("var/windows") %] find "$PKG_DIR" -exec [% c("touch") %] {} ; @@ -424,7 +424,7 @@ cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/ END; -%] [% c('var/ddmg', { dmg_src => tbdir, - dmg_out => '$OUTDIR/' _ c('var/ProjectName') _ '-' _ c("var/torbrowser_version") _ '-osx64_' _ lang _ '.dmg', + dmg_out => '$OUTDIR/' _ c('var/ProjectName') _ '-' _ c("var/torbrowser_version") _ '-' _ c("var/dmg_name") _ '_' _ lang _ '.dmg', }) %] [% ELSIF c("var/windows") %] find "[% tbdir %]" -exec [% c("touch") %] {} ; diff --git a/projects/browser/config b/projects/browser/config index 35b800b..86086d0 100644 --- a/projects/browser/config +++ b/projects/browser/config @@ -29,6 +29,13 @@ targets: osx-x86_64: var: mar_osname: osx64 + dmg_name: osx64 + osx-aarch64: + var: + mar_osname: osx64-aarch64 + dmg_name: osx64-aarch64 + osx: + var: arch_deps: - genisoimage - faketime diff --git a/projects/cctools/build b/projects/cctools/build index 8668785..d851586 100644 --- a/projects/cctools/build +++ b/projects/cctools/build @@ -31,6 +31,12 @@ cp $CLANG_DIR/bin/dsymutil $distdir/bin/x86_64-apple-darwin-dsymutil # various build scripts based on cmake want to find `lipo` without a prefix cp $distdir/bin/x86_64-apple-darwin-lipo $distdir/bin/lipo
+# We build cctools for x86_64 and add aarch64 symlinks, following what +# Mozilla is doing in taskcluster/scripts/misc/build-cctools-port.sh +(cd $distdir/bin/; for i in x86_64-apple-darwin-*; do + ln $i aarch64${i#x86_64} +done) + cd /var/tmp/dist [% c('tar', { tar_src => [ project ], diff --git a/projects/firefox-langpacks/config b/projects/firefox-langpacks/config index 34d6fad..c0518bb 100644 --- a/projects/firefox-langpacks/config +++ b/projects/firefox-langpacks/config @@ -17,7 +17,7 @@ targets: windows-x86_64: var: ff_arch: win64 - osx-x86_64: + osx: var: ff_arch: mac
diff --git a/projects/firefox/config b/projects/firefox/config index feddd96..43f2d7d 100644 --- a/projects/firefox/config +++ b/projects/firefox/config @@ -108,9 +108,9 @@ targets: # To support Wayland mode - libdrm-dev:i386
- osx-x86_64: + osx: var: - martools_filename: mar-tools-mac64.zip + martools_filename: 'mar-tools-mac-[% c("var/osx_arch") %].zip' arch_deps: - python3 - python3-distutils diff --git a/projects/firefox/mozconfig b/projects/firefox/mozconfig index aca39ce..04b20bd 100755 --- a/projects/firefox/mozconfig +++ b/projects/firefox/mozconfig @@ -39,23 +39,31 @@ CROSS_SYSROOT=$TOOLCHAIN_DIR/MacOSX[% pc('macosx-toolchain', 'version') %].sdk CROSS_PRIVATE_FRAMEWORKS=$CROSS_SYSROOT/System/Library/PrivateFrameworks HARDENING_FLAGS="-Werror=format -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=2" - FLAGS="-target x86_64-apple-darwin -B $CROSS_CCTOOLS_PATH/bin -isysroot $CROSS_SYSROOT $HARDENING_FLAGS" + FLAGS="-target [% c('var/build_target') %] -B $CROSS_CCTOOLS_PATH/bin -isysroot $CROSS_SYSROOT $HARDENING_FLAGS"
export CC="$TOOLCHAIN_DIR/clang/bin/clang $FLAGS" export CXX="$TOOLCHAIN_DIR/clang/bin/clang++ $FLAGS" export LLVMCONFIG=$TOOLCHAIN_DIR/clang/bin/llvm-config export LDFLAGS="-Wl,-syslibroot,$CROSS_SYSROOT -Wl,-pie" export BINDGEN_CFLAGS="$FLAGS" - export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/x86_64-apple-darwin- + export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/[% c('var/build_target') %]- export DSYMUTIL="$TOOLCHAIN_DIR/clang/bin/dsymutil"
export HOST_CFLAGS="-g" export HOST_CXXFLAGS="-g" export HOST_LDFLAGS="-g"
- ac_add_options --target=x86_64-apple-darwin + ac_add_options --target=[% c('var/build_target') %] export MACOS_SDK_DIR=$CROSS_SYSROOT export MACOS_PRIVATE_FRAMEWORKS_DIR=$CROSS_PRIVATE_FRAMEWORKS + [% IF c("var/osx-aarch64") -%] + # As of Clang 13, the default is -mcpu=apple-m1 when using a aarch64-apple-macos target, + # but we're using apple64-apple-darwin, which defaults to -mcpu=apple-a7, which disables + # a bunch of # performance-enabling CPU features. + # TODO: We'll want to switch to aarch64-apple-macos eventually. + export CFLAGS="$CFLAGS -mcpu=apple-m1" + export CXXFLAGS="$CXXFLAGS -mcpu=apple-m1" + [% END -%] [% END -%]
[% IF c("var/tor-browser") %] diff --git a/projects/go/config b/projects/go/config index 2fd0af6..8578a6b 100644 --- a/projects/go/config +++ b/projects/go/config @@ -82,8 +82,13 @@ targets: GOARCH: amd64 osx-x86_64: var: - GOOS: darwin GOARCH: amd64 + osx-aarch64: + var: + GOARCH: arm64 + osx: + var: + GOOS: darwin linux: var: GOOS: linux diff --git a/projects/libevent/config b/projects/libevent/config index 1dcdc79..7c4bc98 100644 --- a/projects/libevent/config +++ b/projects/libevent/config @@ -12,7 +12,7 @@ var: configure_opt_project: --disable-static
targets: - osx-x86_64: + osx: var: arch_deps: - faketime diff --git a/projects/macosx-toolchain/build b/projects/macosx-toolchain/build index 89739c8..e1c546e 100644 --- a/projects/macosx-toolchain/build +++ b/projects/macosx-toolchain/build @@ -5,21 +5,38 @@ mkdir $builddir distdir=/var/tmp/dist/[% project %] mkdir -p "$distdir" tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %] +tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %] tar -C $distdir -xf [% c('input_files_by_name/clang') %] tar -C $distdir -xf [% c('input_files_by_name/SDK') %] tar -C $distdir -xf [% c('input_files_by_name/cctools') %] tar -C $builddir -xf [% c('input_files_by_name/llvm-project') %]
-arch=x86_64 +arch=[% c("var/osx_arch") %] clangdir=$distdir/clang/bin cctoolsdir=$distdir/cctools/bin sysrootdir=$distdir/MacOSX[% c("version") %].sdk/ -target=x86_64-apple-darwin +target=[% c("var/build_target") %] # We still need to put the cctoolsdir on the path. That's because of `lipo`. See # the respective comment in the cctools build script. -export PATH="/var/tmp/dist/cmake/bin:$cctoolsdir:$PATH" +export PATH="/var/tmp/dist/ninja:/var/tmp/dist/cmake/bin:$cctoolsdir:$PATH" export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
+[% IF c("var/osx-aarch64") -%] + # wrapper taken from: + # tor-browser.git/taskcluster/scripts/misc/build-llvm-common.sh + clangwrappersdir=$distdir/clang/wrappers + mkdir $clangwrappersdir + compiler_wrapper() { + echo exec $clangdir/$1 -mcpu=apple-m1 "$@" > $clangwrappersdir/$1 + chmod +x $clangwrappersdir/$1 + } + compiler_wrapper clang + compiler_wrapper clang++ + clang=$clangwrappersdir/clang +[% ELSE -%] + clang=$clangdir/clang +[% END -%] + cd $builddir/clang-source patch -p1 < $rootdir/compiler-rt-cross-compile.patch patch -p1 < $rootdir/compiler-rt-no-codesign.patch @@ -29,20 +46,18 @@ mkdir build_compiler_rt cd build_compiler_rt
# And we build compiler-rt by following taskcluster/scripts/misc/build-compiler-rt.sh. -cmake -G "Unix Makefiles" \ - -DCMAKE_C_COMPILER=$clangdir/clang \ - -DCMAKE_CXX_COMPILER=$clangdir/clang++ \ +cmake -GNinja \ + -DCMAKE_C_COMPILER=$clang \ + -DCMAKE_CXX_COMPILER=$clang++ \ -DCMAKE_C_COMPILER_TARGET=$target \ -DCMAKE_CXX_COMPILER_TARGET=$target \ -DCMAKE_ASM_COMPILER_TARGET=$target \ -DCMAKE_AR=$clangdir/llvm-ar \ -DCMAKE_RANLIB=$clangdir/llvm-ranlib \ - -DCMAKE_C_FLAGS="[% c('var/FLAGS') %] -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ - -DCMAKE_CXX_FLAGS="-stdlib=libc++ [% c('var/FLAGS') %] -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ - -DCMAKE_ASM_FLAGS="[% c('var/FLAGS') %] -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ - -DCMAKE_EXE_LINKER_FLAGS="[% c('var/LDFLAGS') %]" \ - -DCMAKE_SHARED_LINKER_FLAGS="[% c('var/LDFLAGS') %]" \ + -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \ + -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \ -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_DEFAULT_TARGET_TRIPLE=$target \ -DLLVM_ENABLE_ASSERTIONS=OFF \ -DCMAKE_INSTALL_PREFIX=$distdir/clang/lib/clang/[% pc("clang", "version") %]/ \ -DLLVM_CONFIG_PATH=$clangdir/llvm-config \ @@ -50,68 +65,63 @@ cmake -G "Unix Makefiles" \ -DCOMPILER_RT_ENABLE_IOS=OFF \ -DCOMPILER_RT_BUILD_LIBFUZZER=OFF \ -DCOMPILER_RT_BUILD_ORC=OFF \ - -DCOMPILER_RT_BUILD_SANITIZERS=OFF \ -DCOMPILER_RT_ENABLE_TVOS=OFF \ -DCOMPILER_RT_ENABLE_WATCHOS=OFF \ -DCOMPILER_RT_BUILD_XRAY=OFF \ - -DCMAKE_LINKER=$cctoolsdir/$target-ld \ - -DCMAKE_LIPO=$cctoolsdir/lipo \ + -DCMAKE_LINKER=$clangdir/ld64.lld \ + -DCMAKE_LIPO=$clangdir/llvm-lipo \ -DCMAKE_SYSTEM_NAME=Darwin \ -DCMAKE_SYSTEM_VERSION=$MACOSX_DEPLOYMENT_TARGET \ -DDARWIN_macosx_OVERRIDE_SDK_VERSION=$MACOSX_DEPLOYMENT_TARGET \ + -DCMAKE_OSX_ARCHITECTURES=$arch \ -DDARWIN_osx_ARCHS=$arch \ -DDARWIN_osx_SYSROOT=$sysrootdir \ -DDARWIN_osx_BUILTIN_ARCHS=$arch \ -DCMAKE_OSX_SYSROOT=$sysrootdir \ - -DCMAKE_FIND_ROOT_PATH=$sysrootdir \ - -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ - -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ - -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ - -DDARWIN_osx_BUILTIN_ARCHS=$arch \ $builddir/clang-source/compiler-rt
-make -j[% c("num_procs") %] -make install +ninja -j[% c("num_procs") %] -v install
cd $builddir/clang-source
-cmake -G "Unix Makefiles" -S runtimes -B build \ +cmake -GNinja -S runtimes -B build \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \ - -DCMAKE_C_COMPILER=$clangdir/clang \ - -DCMAKE_CXX_COMPILER=$clangdir/clang++ \ + -DCMAKE_C_COMPILER=$clang \ + -DCMAKE_CXX_COMPILER=$clang++ \ -DCMAKE_C_COMPILER_TARGET=$target \ -DCMAKE_CXX_COMPILER_TARGET=$target \ -DCMAKE_ASM_COMPILER_TARGET=$target \ -DCMAKE_AR=$clangdir/llvm-ar \ -DCMAKE_RANLIB=$clangdir/llvm-ranlib \ - -DCMAKE_C_FLAGS="-target x86_64-apple-darwin -B $cctoolsdir -isysroot $sysrootdir -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ - -DCMAKE_CXX_FLAGS="-stdlib=libc++ -target x86_64-apple-darwin -B $cctoolsdir -isysroot $sysrootdir -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ - -DCMAKE_ASM_FLAGS="-target x86_64-apple-darwin -B $cctoolsdir -isysroot $sysrootdir -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ + -DCMAKE_C_FLAGS="-target $target -B $cctoolsdir -isysroot $sysrootdir -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ + -DCMAKE_CXX_FLAGS="-stdlib=libc++ -target $target -B $cctoolsdir -isysroot $sysrootdir -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ + -DCMAKE_ASM_FLAGS="-target $target -B $cctoolsdir -isysroot $sysrootdir -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \ -DCMAKE_EXE_LINKER_FLAGS="-Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie" \ -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie" \ -DCMAKE_BUILD_TYPE=Release \ + -DLLVM_DEFAULT_TARGET_TRIPLE=$target \ -DLLVM_ENABLE_ASSERTIONS=OFF \ -DCMAKE_INSTALL_PREFIX=$distdir/clang \ -DCMAKE_LINKER=$cctoolsdir/$target-ld \ + -DCMAKE_LIPO=$clangdir/llvm-lipo \ -DCMAKE_SYSTEM_NAME=Darwin \ -DCMAKE_SYSTEM_VERSION=$MACOSX_DEPLOYMENT_TARGET \ -DDARWIN_macosx_OVERRIDE_SDK_VERSION=$MACOSX_DEPLOYMENT_TARGET \ + -DCMAKE_OSX_ARCHITECTURES=$arch \ -DDARWIN_osx_ARCHS=$arch \ -DDARWIN_osx_BUILTIN_ARCHS=$arch \ -DCMAKE_OSX_SYSROOT=$sysrootdir \ -DCMAKE_FIND_ROOT_PATH=$sysrootdir \ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ - -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ - -DDARWIN_osx_BUILTIN_ARCHS=$arch \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
cd build -make -j[% c("num_procs") %] -make install +ninja -j[% c("num_procs") %] -v install
cd $distdir/cctools/bin -ln -s ../../clang/bin/clang x86_64-apple-darwin-clang -ln -s ../../clang/bin/clang++ x86_64-apple-darwin-clang++ +ln -s ../../clang/bin/clang $target-clang +ln -s ../../clang/bin/clang++ $target-clang++
cd /var/tmp/dist [% c('tar', { diff --git a/projects/macosx-toolchain/compiler-rt-cross-compile.patch b/projects/macosx-toolchain/compiler-rt-cross-compile.patch index b3cc167..330d4a2 100644 --- a/projects/macosx-toolchain/compiler-rt-cross-compile.patch +++ b/projects/macosx-toolchain/compiler-rt-cross-compile.patch @@ -4,12 +4,12 @@ diff --git a/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake b/compiler-rt index 28d398672..aac68bf36 100644 --- a/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake +++ b/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake -@@ -390,7 +390,7 @@ endfunction() +@@ -265,7 +265,7 @@ endfunction() macro(darwin_add_builtin_libraries) set(DARWIN_EXCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Darwin-excludes) - + - set(CFLAGS "-fPIC -O3 -fvisibility=hidden -DVISIBILITY_HIDDEN -Wall -fomit-frame-pointer") -+ set(CFLAGS "-fPIC -O3 -fvisibility=hidden -DVISIBILITY_HIDDEN -Wall -fomit-frame-pointer -target x86_64-apple-darwin -isysroot ${CMAKE_OSX_SYSROOT} -I${CMAKE_OSX_SYSROOT}/usr/include") ++ set(CFLAGS "-fPIC -O3 -fvisibility=hidden -DVISIBILITY_HIDDEN -Wall -fomit-frame-pointer -target ${LLVM_DEFAULT_TARGET_TRIPLE} -isysroot ${CMAKE_OSX_SYSROOT} -I${CMAKE_OSX_SYSROOT}/usr/include") set(CMAKE_C_FLAGS "") set(CMAKE_CXX_FLAGS "") set(CMAKE_ASM_FLAGS "") diff --git a/projects/macosx-toolchain/config b/projects/macosx-toolchain/config index 4aa1f49..ac58b2c 100644 --- a/projects/macosx-toolchain/config +++ b/projects/macosx-toolchain/config @@ -24,6 +24,8 @@ input_files: project: cctools - name: cmake project: cmake + - name: ninja + project: ninja # Instructions on how to create the SDK tarball can be found at: # build/macosx/cross-mozconfig.common - name: SDK diff --git a/projects/node/config b/projects/node/config index 6250ac4..4fe0f05 100644 --- a/projects/node/config +++ b/projects/node/config @@ -12,7 +12,7 @@ targets: var: arch_deps: - python2 - osx-x86_64: + osx: var: arch_deps: - python2 diff --git a/projects/openssl/build b/projects/openssl/build index 094b7cd..d3c7ded 100644 --- a/projects/openssl/build +++ b/projects/openssl/build @@ -11,7 +11,7 @@ export CC='gcc -m32' # OpenSSL prepends the host triple to $CC [% IF c("var/osx") -%] # Tricking OpenSSL into using our clang as cross-compiler - ln -s $clangdir/bin/clang $clangdir/bin/x86_64-apple-darwin-cc + ln -s $clangdir/bin/clang $clangdir/bin/[% c("var/build_target") %]-cc export CC="cc [% c("var/FLAGS") %]" [% END -%] [% IF c("var/windows") -%] diff --git a/projects/openssl/config b/projects/openssl/config index 350a702..c7aae88 100644 --- a/projects/openssl/config +++ b/projects/openssl/config @@ -19,9 +19,9 @@ targets: flag_mwindows: '' configure_opts: '-shared --cross-compile-prefix=[% c("arch") %]-w64-mingw32- mingw[% IF c("var/windows-x86_64") %]64[% END %] "[% c("var/CFLAGS") %] [% c("var/LDFLAGS") %]"' openssldir: 'Program Files[% IF c("var/windows-i686") %] (x86)[% END %]/OpenSSL' - osx-x86_64: + osx: var: - configure_opts: --cross-compile-prefix=x86_64-apple-darwin- darwin64-x86_64-cc enable-ec_nistp_64_gcc_128 + configure_opts: '--cross-compile-prefix=[% c("var/build_target") %]- darwin64-[% c("var/osx_arch") %]-cc enable-ec_nistp_64_gcc_128' android: var: configure_opts: 'CC=[% c("var/CC") %] android-[% c("var/toolchain_arch") %] -no-shared -D__ANDROID_API__=[% c("var/android_min_api") %]' diff --git a/projects/release/build b/projects/release/build index ed110ee..f69f776 100644 --- a/projects/release/build +++ b/projects/release/build @@ -31,6 +31,9 @@ mkdir -p "$destdir" [% IF c("var/browser-osx-x86_64") -%] mv [% c('input_files_by_name/osx-x86_64') %]/* "$destdir"/ [% END -%] +[% IF c("var/browser-osx-aarch64") -%] + mv [% c('input_files_by_name/osx-aarch64') %]/* "$destdir"/ +[% END -%] [% IF c("var/browser-linux-i686") -%] mv [% c('input_files_by_name/linux-i686') %]/* "$destdir"/ [% END -%] diff --git a/projects/release/config b/projects/release/config index 39e8ae9..4d0948c 100644 --- a/projects/release/config +++ b/projects/release/config @@ -63,6 +63,9 @@ targets: browser-osx-x86_64: var: browser-osx-x86_64: 1 + browser-osx-aarch64: + var: + browser-osx-aarch64: 1 browser-src: var: browser-src: '[% ! c("var/testbuild") %]' @@ -192,6 +195,13 @@ input_files: - '[% c("var/build_target") %]' - '[% c("var/browser_type") %]-osx-x86_64'
+ - name: osx-aarch64 + project: browser + enable: '[% c("var/browser-osx-aarch64") %]' + target: + - '[% c("var/build_target") %]' + - '[% c("var/browser_type") %]-osx-aarch64' + - name: windows-expert-bundle project: tor enable: '[% c("var/browser-windows-i686") %]' diff --git a/projects/rust/build b/projects/rust/build index d5b600e..783087c 100644 --- a/projects/rust/build +++ b/projects/rust/build @@ -37,13 +37,13 @@ export PATH="$distdir-rust-prebuilt/bin:$PATH" # We need to adapt our CFLAGS and make sure our flags are passed down to all # dependencies. Using `CFLAGS_x86_apple-darwin` did not do the trick, so resort # to a wrapper script. - cat > $distdir/helper/x86_64-apple-darwin-clang << 'EOF' + cat > $distdir/helper/[% c("var/build_target") %]-clang << 'EOF' #!/bin/sh BASEDIR=/var/tmp/dist/macosx-toolchain -$BASEDIR/cctools/bin/x86_64-apple-darwin-clang -target x86_64-apple-darwin -B $BASEDIR/cctools/bin -isysroot $sysrootdir -Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie "$@" +$BASEDIR/cctools/bin/[% c("var/build_target") %]-clang -target [% c("var/build_target") %] -B $BASEDIR/cctools/bin -isysroot $sysrootdir -Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie [% IF c('var/osx-aarch64') %]-mcpu=apple-m1[% END %] "$@" EOF
- chmod +x $distdir/helper/x86_64-apple-darwin-clang + chmod +x $distdir/helper/[% c("var/build_target") %]-clang export PATH=$distdir/helper:$PATH [% END %]
diff --git a/projects/rust/config b/projects/rust/config index 83f794c..f5f5f1e 100644 --- a/projects/rust/config +++ b/projects/rust/config @@ -56,13 +56,13 @@ targets: # binaries do. configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --llvm-root=/var/tmp/dist/clang --set rust.jemalloc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set target.x86_64-unknown-linux-gnu.linker=clang --set target.x86_64-unknown-linux-gnu.ar=llvm-ar --set target.x86_64-unknown-linux-gnu.ranlib=llvm-ranlib --set target.i686-unknown-linux-gnu.linker=clang --set target.i686-unknown-linux-gnu.ar=llvm-ar --set target. [...]
- osx-x86_64: + osx: var: arch_deps: - libssl-dev - pkg-config - zlib1g-dev - configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --llvm-root=/var/tmp/dist/macosx-toolchain/clang --set rust.jemalloc --target=x86_64-unknown-linux-gnu,x86_64-apple-darwin --set=target.x86_64-apple-darwin.cc=x86_64-apple-darwin-clang --set target.x86_64-unknown-linux-gnu.linker=clang --set target.x86_64-unknown-linux-gnu.ar=llvm-ar --set target.x86_64-unknown-linux-gnu.ranlib=llvm-ranlib + configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --llvm-root=/var/tmp/dist/macosx-toolchain/clang --set rust.jemalloc --target=x86_64-unknown-linux-gnu,[% c("var/build_target") %] --set=target.[% c("var/build_target") %].cc=[% c("var/build_target") %]-clang --set target.x86_64-unknown-linux-gnu.linker=clang --set target.x86_64-unknown-linux-gnu.ar=llvm-ar --set target.x86_64-unknown-linux-gnu.ranlib=llvm-ranlib
windows: var: diff --git a/projects/tor/build b/projects/tor/build index c4c1e65..5c23e9b 100644 --- a/projects/tor/build +++ b/projects/tor/build @@ -102,7 +102,7 @@ cp $distdir/share/tor/geoip6 $TORCONFIGDIR cd $distdir cp bin/tor $TORBINDIR/ cd $TORBINDIR/ - x86_64-apple-darwin-install_name_tool -change $libeventdir/lib/$LIBEVENT_FILE @executable_path/$LIBEVENT_FILE tor + [% c("var/build_target") %]-install_name_tool -change $libeventdir/lib/$LIBEVENT_FILE @executable_path/$LIBEVENT_FILE tor [% END %]
cd $distdir diff --git a/projects/tor/config b/projects/tor/config index 4425d48..1145d57 100644 --- a/projects/tor/config +++ b/projects/tor/config @@ -37,7 +37,7 @@ targets: - libtool - zlib1g-dev - hardening-wrapper - osx-x86_64: + osx: var: arch_deps: - faketime diff --git a/rbm.conf b/rbm.conf index ba590fc..4ff3e92 100644 --- a/rbm.conf +++ b/rbm.conf @@ -514,23 +514,46 @@ targets:
torbrowser-osx-x86_64: - osx-x86_64 + - osx + - torbrowser + torbrowser-osx-aarch64: + - osx-aarch64 + - osx - torbrowser basebrowser-osx-x86_64: - osx-x86_64 + - osx + - basebrowser + basebrowser-osx-aarch64: + - osx-aarch64 + - osx - basebrowser + osx-aarch64: + arch: aarch64 + var: + osx-aarch64: 1 + osname: osx-aarch64 + osx_arch: arm64 + build_target: aarch64-apple-darwin + macosx_deployment_target: '11.0' osx-x86_64: arch: x86_64 var: - osx: 1 + osx-x86_64: 1 osname: osx-x86_64 + osx_arch: x86_64 + build_target: x86_64-apple-darwin + macosx_deployment_target: '10.12' + osx: + var: + osx: 1 container: suite: bullseye arch: amd64 compiler: 'macosx-toolchain' - configure_opt: '--host=x86_64-apple-darwin CC="x86_64-apple-darwin-clang [% c("var/FLAGS") %]" CXX="x86_64-apple-darwin-clang++ [% c("var/FLAGS") %]" [% c("var/configure_opt_project") %]' - FLAGS: "-target x86_64-apple-darwin -B $cctoolsdir -isysroot $sysrootdir" + configure_opt: '--host=[% c("var/build_target") %] CC="[% c("var/build_target") %]-clang [% c("var/FLAGS") %]" CXX="[% c("var/build_target") %]-clang++ [% c("var/FLAGS") %]" [% c("var/configure_opt_project") %]' + FLAGS: "-target [% c('var/build_target') %] -B $cctoolsdir -isysroot $sysrootdir [% IF c('var/osx-aarch64') %]-mcpu=apple-m1[% END %]" LDFLAGS: "-Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie" - macosx_deployment_target: '10.12' locale_ja: ja-JP-mac rlbox: 0 deps:
tbb-commits@lists.torproject.org