tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

build-cmake.sh (3273B)


      1 #!/bin/bash
      2 set -e -v -x
      3 
      4 artifact=$(basename "$TOOLCHAIN_ARTIFACT")
      5 project=${artifact%.tar.*}
      6 workspace=$HOME/workspace
      7 
      8 cd $MOZ_FETCHES_DIR/cmake
      9 
     10 # Work around https://gitlab.kitware.com/cmake/cmake/-/issues/26031
     11 patch -p1 <<'EOF'
     12 diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx
     13 index bbcb0bccc9..f5d80dd784 100644
     14 --- a/Source/bindexplib.cxx
     15 +++ b/Source/bindexplib.cxx
     16 @@ -414,7 +414,7 @@ static bool DumpFile(std::string const& nmPath, char const* filename,
     17                      std::set<std::string>& symbols,
     18                      std::set<std::string>& dataSymbols)
     19 {
     20 -#ifndef _WIN32
     21 +#if 1
     22   return DumpFileWithLlvmNm(nmPath, filename, symbols, dataSymbols);
     23 #else
     24   HANDLE hFile;
     25 EOF
     26 
     27 # Work around https://github.com/llvm/llvm-project/issues/94563
     28 # The resulting cmake works well enough for our use.
     29 patch -p1 <<'EOF'
     30 diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt
     31 index c54da4408a..8408355c4a 100644
     32 --- a/Source/CMakeLists.txt
     33 +++ b/Source/CMakeLists.txt
     34 @@ -964,7 +964,6 @@ if(WIN32)
     35 
     36     # Add a manifest file to executables on Windows to allow for
     37     # GetVersion to work properly on Windows 8 and above.
     38 -    target_sources(ManifestLib INTERFACE cmake.version.manifest)
     39   endif()
     40 endif()
     41 
     42 EOF
     43 
     44 # Work around https://github.com/llvm/llvm-project/issues/134237
     45 # Should be removable once we update to clang 21.
     46 patch -p1 <<'EOF'
     47 diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
     48 index 1948c63bad..cb4cefaa72 100644
     49 --- a/Modules/CMakeFindBinUtils.cmake
     50 +++ b/Modules/CMakeFindBinUtils.cmake
     51 @@ -87,9 +87,9 @@ if(("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" AND
     52   if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" MATCHES "^x(Clang|LLVMFlang)$")
     53     set(_CMAKE_NM_NAMES "llvm-nm" "nm")
     54     list(PREPEND _CMAKE_AR_NAMES "llvm-lib")
     55 -    if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}" VERSION_GREATER_EQUAL 14.0.2)
     56 -      list(PREPEND _CMAKE_MT_NAMES "llvm-mt")
     57 -    endif()
     58 +    # if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_VERSION}" VERSION_GREATER_EQUAL 14.0.2)
     59 +    #   list(PREPEND _CMAKE_MT_NAMES "llvm-mt")
     60 +    # endif()
     61     list(PREPEND _CMAKE_LINKER_NAMES "lld-link")
     62     list(APPEND _CMAKE_TOOL_VARS NM)
     63   elseif("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xIntel")
     64 EOF
     65 
     66 export PATH="$MOZ_FETCHES_DIR/clang/bin:$PATH"
     67 
     68 cmake \
     69  -GNinja \
     70  -DCMAKE_BUILD_TYPE=Release \
     71  -DCMAKE_C_COMPILER=clang-cl \
     72  -DCMAKE_CXX_COMPILER=clang-cl \
     73  -DCMAKE_LINKER=lld-link \
     74  -DCMAKE_MT=llvm-mt \
     75  -DCMAKE_C_FLAGS="-Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml -winsysroot $MOZ_FETCHES_DIR/vs" \
     76  -DCMAKE_CXX_FLAGS="-GR -EHsc -Xclang -ivfsoverlay -Xclang $MOZ_FETCHES_DIR/vs/overlay.yaml -winsysroot $MOZ_FETCHES_DIR/vs" \
     77  -DCMAKE_EXE_LINKER_FLAGS="-winsysroot:$MOZ_FETCHES_DIR/vs" \
     78  -DCMAKE_MODULE_LINKER_FLAGS="-winsysroot:$MOZ_FETCHES_DIR/vs" \
     79  -DCMAKE_SHARED_LINKER_FLAGS="-winsysroot:$MOZ_FETCHES_DIR/vs" \
     80  -DCMAKE_SYSTEM_NAME=Windows \
     81  -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded \
     82  -DCMAKE_INSTALL_PREFIX=$workspace/$project \
     83  -B $workspace/build
     84 
     85 ninja -C $workspace/build -v install
     86 
     87 tar -C $workspace -acvf $artifact $project
     88 mkdir -p $UPLOAD_DIR
     89 mv $artifact $UPLOAD_DIR