commit 99c1bd0186171c06fc5f07136e9efbd9192fb35a Author: Georg Koppen gk@torproject.org Date: Sun Aug 9 10:40:38 2020 +0000
Bug 40037: Move projects over to clang-source --- projects/{clang => clang-source}/43909.patch | 0 projects/clang-source/build | 27 ++- projects/clang/build | 18 +- projects/clang/config | 23 +-- projects/fenix-clang/build | 18 +- projects/fenix-clang/config | 23 +-- projects/macosx-toolchain/43909.patch | 252 --------------------------- projects/macosx-toolchain/build | 30 +--- projects/macosx-toolchain/config | 25 +-- projects/mingw-w64-clang/build | 39 ++--- projects/mingw-w64-clang/config | 17 +- 11 files changed, 48 insertions(+), 424 deletions(-)
diff --git a/projects/clang/43909.patch b/projects/clang-source/43909.patch similarity index 100% rename from projects/clang/43909.patch rename to projects/clang-source/43909.patch diff --git a/projects/clang-source/build b/projects/clang-source/build index 5aebfb1..860b8e4 100644 --- a/projects/clang-source/build +++ b/projects/clang-source/build @@ -1,9 +1,5 @@ #!/bin/bash [% c("var/set_default_env") -%] -distdir=/var/tmp/dist/[% project %] -mkdir -p /var/tmp/dist -mkdir -p /var/tmp/build -cd /var/tmp/build tar -xf $rootdir/[% c('input_files_by_name/llvm') %] tar -xf $rootdir/[% c('input_files_by_name/clang') %] tar -xf $rootdir/[% c('input_files_by_name/clang-tools-extra') %] @@ -12,24 +8,23 @@ tar -xf $rootdir/[% c('input_files_by_name/libcxxabi') %] tar -xf $rootdir/[% c('input_files_by_name/lld') %] tar -xf $rootdir/[% c('input_files_by_name/compiler-rt') %] tar -xf $rootdir/[% c('input_files_by_name/libunwind') %] -mv llvm-* llvm + +mv llvm-[% c("version") %].src llvm # LLVM has reproducibility issues when optimizing bitcode, which we need to # patch. See: #32053 for more details. patch -p1 < $rootdir/43909.patch -mv clang-* llvm/tools/clang -extra_dir=llvm/tools/clang/tools/extra -mkdir $extra_dir -mv clang-tools-extra-* $extra_dir -mv libcxx-* llvm/projects/libcxx -mv libcxxabi-* llvm/projects/libcxxabi -mv lld-* llvm/tools/lld -mv compiler-rt-* llvm/projects/compiler-rt +mv clang-[% c("version") %].src llvm/tools/clang +# Having clang-tidy available seems like a good idea +mv clang-tools-extra-[% c("version") %].src llvm/tools/clang/tools/extra +mv libcxx-[% c("version") %].src llvm/projects/libcxx +mv libcxxabi-[% c("version") %].src llvm/projects/libcxxabi +mv lld-[% c("version") %].src llvm/tools/lld +mv compiler-rt-[% c("version") %].src llvm/projects/compiler-rt # We need libunwind only for mingw-w64-clang, don't include it as tightly by # putting it into projects/ -mv libunwind-* llvm/libunwind -mv llvm $distdir +mv libunwind-[% c("version") %].src llvm/libunwind +mv llvm [% project %]
-cd /var/tmp/dist [% c('tar', { tar_src => [ project ], tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'), diff --git a/projects/clang/build b/projects/clang/build index d61ed43..33688e5 100644 --- a/projects/clang/build +++ b/projects/clang/build @@ -15,22 +15,8 @@ export PATH="/var/tmp/dist/cmake/bin:$PATH" [% END -%] mkdir -p /var/tmp/build cd /var/tmp/build -tar -xf $rootdir/[% c('input_files_by_name/llvm') %] -tar -xf $rootdir/[% c('input_files_by_name/clang') %] -tar -xf $rootdir/[% c('input_files_by_name/libcxx') %] -tar -xf $rootdir/[% c('input_files_by_name/libcxxabi') %] -tar -xf $rootdir/[% c('input_files_by_name/lld') %] -tar -xf $rootdir/[% c('input_files_by_name/compiler-rt') %] -mv llvm-* llvm -# LLVM has reproducibility issues when optimizing bitcode, which we need to -# patch. See: #32053 for more details. -patch -p1 < $rootdir/43909.patch -mv clang-* llvm/tools/clang -mv libcxx-* llvm/projects/libcxx -mv libcxxabi-* llvm/projects/libcxxabi -mv lld-* llvm/tools/lld -mv compiler-rt-* llvm/projects/compiler-rt -cd llvm +tar -xf $rootdir/[% c('input_files_by_name/clang-source') %] +cd clang-source export LLVM_HOME=$(pwd) mkdir build cd build diff --git a/projects/clang/config b/projects/clang/config index c4b7efc..46d308a 100644 --- a/projects/clang/config +++ b/projects/clang/config @@ -1,8 +1,6 @@ # vim: filetype=yaml sw=2 version: 9.0.1 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' -gpg_keyring: clang.gpg -sig_ext: sig
var: container: @@ -18,22 +16,5 @@ input_files: enable: '[% c("var/linux") %]' - project: cmake name: cmake - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/llvm-[% c("version") %].src.tar.xz' - name: llvm - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/clang-[% c("version") %].src.tar.xz' - name: clang - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/libcxx-[% c("version") %].src.tar.xz' - name: libcxx - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/libcxxabi-[% c("version") %].src.tar.xz' - name: libcxxabi - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/lld-[% c("version") %].src.tar.xz' - name: lld - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/compiler-rt-[% c("version") %].src.tar.xz' - name: compiler-rt - file_gpg_id: 1 - - filename: 43909.patch + - project: clang-source + name: clang-source diff --git a/projects/fenix-clang/build b/projects/fenix-clang/build index d61ed43..33688e5 100644 --- a/projects/fenix-clang/build +++ b/projects/fenix-clang/build @@ -15,22 +15,8 @@ export PATH="/var/tmp/dist/cmake/bin:$PATH" [% END -%] mkdir -p /var/tmp/build cd /var/tmp/build -tar -xf $rootdir/[% c('input_files_by_name/llvm') %] -tar -xf $rootdir/[% c('input_files_by_name/clang') %] -tar -xf $rootdir/[% c('input_files_by_name/libcxx') %] -tar -xf $rootdir/[% c('input_files_by_name/libcxxabi') %] -tar -xf $rootdir/[% c('input_files_by_name/lld') %] -tar -xf $rootdir/[% c('input_files_by_name/compiler-rt') %] -mv llvm-* llvm -# LLVM has reproducibility issues when optimizing bitcode, which we need to -# patch. See: #32053 for more details. -patch -p1 < $rootdir/43909.patch -mv clang-* llvm/tools/clang -mv libcxx-* llvm/projects/libcxx -mv libcxxabi-* llvm/projects/libcxxabi -mv lld-* llvm/tools/lld -mv compiler-rt-* llvm/projects/compiler-rt -cd llvm +tar -xf $rootdir/[% c('input_files_by_name/clang-source') %] +cd clang-source export LLVM_HOME=$(pwd) mkdir build cd build diff --git a/projects/fenix-clang/config b/projects/fenix-clang/config index c4b7efc..46d308a 100644 --- a/projects/fenix-clang/config +++ b/projects/fenix-clang/config @@ -1,8 +1,6 @@ # vim: filetype=yaml sw=2 version: 9.0.1 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' -gpg_keyring: clang.gpg -sig_ext: sig
var: container: @@ -18,22 +16,5 @@ input_files: enable: '[% c("var/linux") %]' - project: cmake name: cmake - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/llvm-[% c("version") %].src.tar.xz' - name: llvm - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/clang-[% c("version") %].src.tar.xz' - name: clang - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/libcxx-[% c("version") %].src.tar.xz' - name: libcxx - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/libcxxabi-[% c("version") %].src.tar.xz' - name: libcxxabi - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/lld-[% c("version") %].src.tar.xz' - name: lld - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("version") %]/compiler-rt-[% c("version") %].src.tar.xz' - name: compiler-rt - file_gpg_id: 1 - - filename: 43909.patch + - project: clang-source + name: clang-source diff --git a/projects/macosx-toolchain/43909.patch b/projects/macosx-toolchain/43909.patch deleted file mode 100644 index 78d2a75..0000000 --- a/projects/macosx-toolchain/43909.patch +++ /dev/null @@ -1,252 +0,0 @@ -From c95310f2d4fd3c88241c3b5d6dbf6251d34a3256 Mon Sep 17 00:00:00 2001 -From: Nikita Popov nikita.ppv@gmail.com -Date: Sat, 16 Nov 2019 16:22:18 +0100 -Subject: [PATCH] Restructure caching - -Variant on D70103. The caching is switched to always use a BB to -cache entry map, which then contains per-value caches. A separate -set contains value handles with a deletion callback. This allows us -to properly invalidate overdefined values. - -A possible alternative would be to always cache by value first and -have per-BB maps/sets in the each cache entry. In that case we could -use a ValueMap and would avoid the separate value handle set. I went -with the BB indexing at the top level to make it easier to integrate -D69914, but possibly that's not the right choice. - -Differential Revision: https://reviews.llvm.org/D70376 - -diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp -index 110c085d3f3..aa6862cb588 100644 ---- a/llvm/lib/Analysis/LazyValueInfo.cpp -+++ b/llvm/lib/Analysis/LazyValueInfo.cpp -@@ -133,12 +133,9 @@ namespace { - /// A callback value handle updates the cache when values are erased. - class LazyValueInfoCache; - struct LVIValueHandle final : public CallbackVH { -- // Needs to access getValPtr(), which is protected. -- friend struct DenseMapInfo<LVIValueHandle>; -- - LazyValueInfoCache *Parent; - -- LVIValueHandle(Value *V, LazyValueInfoCache *P) -+ LVIValueHandle(Value *V, LazyValueInfoCache *P = nullptr) - : CallbackVH(V), Parent(P) { } - - void deleted() override; -@@ -152,89 +149,63 @@ namespace { - /// This is the cache kept by LazyValueInfo which - /// maintains information about queries across the clients' queries. - class LazyValueInfoCache { -- /// This is all of the cached block information for exactly one Value*. -- /// The entries are sorted by the BasicBlock* of the -- /// entries, allowing us to do a lookup with a binary search. -- /// Over-defined lattice values are recorded in OverDefinedCache to reduce -- /// memory overhead. -- struct ValueCacheEntryTy { -- ValueCacheEntryTy(Value *V, LazyValueInfoCache *P) : Handle(V, P) {} -- LVIValueHandle Handle; -- SmallDenseMap<PoisoningVH<BasicBlock>, ValueLatticeElement, 4> BlockVals; -+ /// This is all of the cached information for one basic block. It contains -+ /// the per-value lattice elements, as well as a separate set for -+ /// overdefined values to reduce memory usage. -+ struct BlockCacheEntryTy { -+ SmallDenseMap<AssertingVH<Value>, ValueLatticeElement, 4> LatticeElements; -+ SmallDenseSet<AssertingVH<Value>, 4> OverDefined; - }; - -- /// This tracks, on a per-block basis, the set of values that are -- /// over-defined at the end of that block. -- typedef DenseMap<PoisoningVH<BasicBlock>, SmallPtrSet<Value *, 4>> -- OverDefinedCacheTy; -- /// Keep track of all blocks that we have ever seen, so we -- /// don't spend time removing unused blocks from our caches. -- DenseSet<PoisoningVH<BasicBlock> > SeenBlocks; -- -- /// This is all of the cached information for all values, -- /// mapped from Value* to key information. -- DenseMap<Value *, std::unique_ptr<ValueCacheEntryTy>> ValueCache; -- OverDefinedCacheTy OverDefinedCache; -- -+ /// Cached information per basic block. -+ DenseMap<PoisoningVH<BasicBlock>, BlockCacheEntryTy> BlockCache; -+ /// Set of value handles used to erase values from the cache on deletion. -+ DenseSet<LVIValueHandle, DenseMapInfo<Value *>> ValueHandles; - - public: - void insertResult(Value *Val, BasicBlock *BB, - const ValueLatticeElement &Result) { -- SeenBlocks.insert(BB); -- -+ auto &CacheEntry = BlockCache.try_emplace(BB).first->second; - // Insert over-defined values into their own cache to reduce memory - // overhead. - if (Result.isOverdefined()) -- OverDefinedCache[BB].insert(Val); -- else { -- auto It = ValueCache.find_as(Val); -- if (It == ValueCache.end()) { -- ValueCache[Val] = make_unique<ValueCacheEntryTy>(Val, this); -- It = ValueCache.find_as(Val); -- assert(It != ValueCache.end() && "Val was just added to the map!"); -- } -- It->second->BlockVals[BB] = Result; -- } -- } -- -- bool isOverdefined(Value *V, BasicBlock *BB) const { -- auto ODI = OverDefinedCache.find(BB); -- -- if (ODI == OverDefinedCache.end()) -- return false; -+ CacheEntry.OverDefined.insert(Val); -+ else -+ CacheEntry.LatticeElements.insert({ Val, Result }); - -- return ODI->second.count(V); -+ auto HandleIt = ValueHandles.find_as(Val); -+ if (HandleIt == ValueHandles.end()) -+ ValueHandles.insert({ Val, this }); - } - - bool hasCachedValueInfo(Value *V, BasicBlock *BB) const { -- if (isOverdefined(V, BB)) -- return true; -- -- auto I = ValueCache.find_as(V); -- if (I == ValueCache.end()) -+ auto It = BlockCache.find(BB); -+ if (It == BlockCache.end()) - return false; - -- return I->second->BlockVals.count(BB); -+ return It->second.OverDefined.count(V) || -+ It->second.LatticeElements.count(V); - } - - ValueLatticeElement getCachedValueInfo(Value *V, BasicBlock *BB) const { -- if (isOverdefined(V, BB)) -+ auto It = BlockCache.find(BB); -+ if (It == BlockCache.end()) -+ return ValueLatticeElement(); -+ -+ if (It->second.OverDefined.count(V)) - return ValueLatticeElement::getOverdefined(); - -- auto I = ValueCache.find_as(V); -- if (I == ValueCache.end()) -+ auto LatticeIt = It->second.LatticeElements.find(V); -+ if (LatticeIt == It->second.LatticeElements.end()) - return ValueLatticeElement(); -- auto BBI = I->second->BlockVals.find(BB); -- if (BBI == I->second->BlockVals.end()) -- return ValueLatticeElement(); -- return BBI->second; -+ -+ return LatticeIt->second; - } - - /// clear - Empty the cache. - void clear() { -- SeenBlocks.clear(); -- ValueCache.clear(); -- OverDefinedCache.clear(); -+ BlockCache.clear(); -+ ValueHandles.clear(); - } - - /// Inform the cache that a given value has been deleted. -@@ -248,23 +219,18 @@ namespace { - /// OldSucc might have (unless also overdefined in NewSucc). This just - /// flushes elements from the cache and does not add any. - void threadEdgeImpl(BasicBlock *OldSucc,BasicBlock *NewSucc); -- -- friend struct LVIValueHandle; - }; - } - - void LazyValueInfoCache::eraseValue(Value *V) { -- for (auto I = OverDefinedCache.begin(), E = OverDefinedCache.end(); I != E;) { -- // Copy and increment the iterator immediately so we can erase behind -- // ourselves. -- auto Iter = I++; -- SmallPtrSetImpl<Value *> &ValueSet = Iter->second; -- ValueSet.erase(V); -- if (ValueSet.empty()) -- OverDefinedCache.erase(Iter); -+ for (auto &Pair : BlockCache) { -+ Pair.second.LatticeElements.erase(V); -+ Pair.second.OverDefined.erase(V); - } - -- ValueCache.erase(V); -+ auto HandleIt = ValueHandles.find_as(V); -+ if (HandleIt != ValueHandles.end()) -+ ValueHandles.erase(HandleIt); - } - - void LVIValueHandle::deleted() { -@@ -274,18 +240,7 @@ void LVIValueHandle::deleted() { - } - - void LazyValueInfoCache::eraseBlock(BasicBlock *BB) { -- // Shortcut if we have never seen this block. -- DenseSet<PoisoningVH<BasicBlock> >::iterator I = SeenBlocks.find(BB); -- if (I == SeenBlocks.end()) -- return; -- SeenBlocks.erase(I); -- -- auto ODI = OverDefinedCache.find(BB); -- if (ODI != OverDefinedCache.end()) -- OverDefinedCache.erase(ODI); -- -- for (auto &I : ValueCache) -- I.second->BlockVals.erase(BB); -+ BlockCache.erase(BB); - } - - void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, -@@ -303,10 +258,11 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, - std::vector<BasicBlock*> worklist; - worklist.push_back(OldSucc); - -- auto I = OverDefinedCache.find(OldSucc); -- if (I == OverDefinedCache.end()) -+ auto I = BlockCache.find(OldSucc); -+ if (I == BlockCache.end() || I->second.OverDefined.empty()) - return; // Nothing to process here. -- SmallVector<Value *, 4> ValsToClear(I->second.begin(), I->second.end()); -+ SmallVector<Value *, 4> ValsToClear(I->second.OverDefined.begin(), -+ I->second.OverDefined.end()); - - // Use a worklist to perform a depth-first search of OldSucc's successors. - // NOTE: We do not need a visited list since any blocks we have already -@@ -320,10 +276,10 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, - if (ToUpdate == NewSucc) continue; - - // If a value was marked overdefined in OldSucc, and is here too... -- auto OI = OverDefinedCache.find(ToUpdate); -- if (OI == OverDefinedCache.end()) -+ auto OI = BlockCache.find(ToUpdate); -+ if (OI == BlockCache.end() || OI->second.OverDefined.empty()) - continue; -- SmallPtrSetImpl<Value *> &ValueSet = OI->second; -+ auto &ValueSet = OI->second.OverDefined; - - bool changed = false; - for (Value *V : ValsToClear) { -@@ -333,11 +289,6 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc, - // If we removed anything, then we potentially need to update - // blocks successors too. - changed = true; -- -- if (ValueSet.empty()) { -- OverDefinedCache.erase(OI); -- break; -- } - } - - if (!changed) continue; --- -2.24.0 - diff --git a/projects/macosx-toolchain/build b/projects/macosx-toolchain/build index 0f67c38..5716a9e 100644 --- a/projects/macosx-toolchain/build +++ b/projects/macosx-toolchain/build @@ -2,19 +2,14 @@ [% c("var/set_default_env") -%] builddir=/var/tmp/build mkdir $builddir -distdir="/var/tmp/dist/[% project %]" +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 /var/tmp/dist -xf [% c('input_files_by_name/clang_compiler') %] -tar -C $builddir -xf [% c('input_files_by_name/llvm') %] -tar -C $builddir -xf [% c('input_files_by_name/clang') %] -tar -C $builddir -xf [% c('input_files_by_name/libcxx') %] -tar -C $builddir -xf [% c('input_files_by_name/libcxxabi') %] -tar -C $builddir -xf [% c('input_files_by_name/lld') %] -tar -C $builddir -xf [% c('input_files_by_name/compiler-rt') %] +tar -C /var/tmp/dist -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/clang-source') %]
clangdir=/var/tmp/dist/clang/bin cctoolsdir=$distdir/cctools/bin @@ -24,19 +19,10 @@ sysrootdir=$distdir/MacOSX10.11.sdk/ export PATH="/var/tmp/dist/ninja:/var/tmp/dist/cmake/bin:$cctoolsdir:$PATH" export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
-cd $builddir -mv llvm-* llvm -# LLVM has reproducibility issues when optimizing bitcode, which we need to -# patch. See: #32053 for more details. -patch -p1 < $rootdir/43909.patch -mv clang-* llvm/tools/clang -mv libcxx-* llvm/projects/libcxx -mv libcxxabi-* llvm/projects/libcxxabi -mv lld-* llvm/tools/lld -mv compiler-rt-* compiler-rt +cd $builddir/clang-source/projects patch -p1 < $rootdir/compiler-rt-cross-compile.patch patch -p1 < $rootdir/compiler-rt-no-codesign.patch -mv compiler-rt llvm/projects +cd .. mkdir build cd build # We follow quite closely Mozilla's build/build-clang/build-clang.py with the @@ -68,7 +54,7 @@ cmake -GNinja \ -DCMAKE_SYSTEM_VERSION=10.10 \ -DLLVM_ENABLE_THREADS=OFF \ -DCOMPILER_RT_BUILD_XRAY=OFF \ - -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/llvm/projects/libcxx/include \ + -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/clang-source/projects/libcxx/include \ -DCMAKE_OSX_SYSROOT=$sysrootdir \ -DCMAKE_FIND_ROOT_PATH=$sysrootdir \ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ @@ -78,13 +64,13 @@ cmake -GNinja \ -DCMAKE_OSX_ARCHITECTURES=x86_64 \ -DDARWIN_osx_ARCHS=x86_64 \ -DDARWIN_osx_SYSROOT=$sysrootdir \ - -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-apple-darwin $builddir/llvm + -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-apple-darwin $builddir/clang-source ninja install -v
# We now have a native macosx64 toolchain. # What we want is a native linux64 toolchain which can target macosx64. # Overlay the linux64 toolchain that we used for this build. Note: we don't do -# any ASan builds for macOS (yet). Once we do we need to preserve at least +# any ASan builds for macOS (yet). Once we do that we need to preserve at least # `llvm-symbolizer` as that one seems to get shipped with sanitizer builds (at # least that's what Mozilla claims). cd $distdir diff --git a/projects/macosx-toolchain/config b/projects/macosx-toolchain/config index 937478b..95f650b 100644 --- a/projects/macosx-toolchain/config +++ b/projects/macosx-toolchain/config @@ -1,8 +1,6 @@ # vim: filetype=yaml sw=2 filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' version: 10.11-1 -gpg_keyring: clang.gpg -sig_ext: sig var: container: use_container: 1 @@ -20,7 +18,7 @@ var:
input_files: - project: container-image - - name: clang_compiler + - name: clang project: clang - name: cctools project: cctools @@ -33,24 +31,7 @@ input_files: - name: SDK URL: https://people.torproject.org/~gk/mirrors/sources/MacOSX10.11.sdk.tar.bz2 sha256sum: d11e410d757d023be66d2fe7eaa85a1d232da3ac04f177eff3d8b8275cd9ffca - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% pc("clang", "version") %]/llvm-[% pc("clang", "version") %].src.tar.xz' - name: llvm - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% pc("clang", "version") %]/clang-[% pc("clang", "version") %].src.tar.xz' - name: clang - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% pc("clang", "version") %]/libcxx-[% pc("clang", "version") %].src.tar.xz' - name: libcxx - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% pc("clang", "version") %]/libcxxabi-[% pc("clang", "version") %].src.tar.xz' - name: libcxxabi - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% pc("clang", "version") %]/lld-[% pc("clang", "version") %].src.tar.xz' - name: lld - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% pc("clang", "version") %]/compiler-rt-[% pc("clang", "version") %].src.tar.xz' - name: compiler-rt - file_gpg_id: 1 + - name: clang-source + project: clang-source - filename: compiler-rt-cross-compile.patch - filename: compiler-rt-no-codesign.patch - - filename: 43909.patch diff --git a/projects/mingw-w64-clang/build b/projects/mingw-w64-clang/build index ecb0e2c..44a913f 100644 --- a/projects/mingw-w64-clang/build +++ b/projects/mingw-w64-clang/build @@ -11,14 +11,7 @@ mkdir -p $builddir cd $builddir tar -xf $rootdir/mingw-w64-clang-[% c('version') %].tar.gz mv mingw-w64-clang-[% c('version') %] mingw-w64-clang -tar -xf $rootdir/[% c('input_files_by_name/libcxx') %] -mv libcxx-* libcxx -tar -xf $rootdir/[% c('input_files_by_name/libcxxabi') %] -mv libcxxabi-* libcxxabi -tar -xf $rootdir/[% c('input_files_by_name/libunwind') %] -mv libunwind-* libunwind -tar -xf $rootdir/[% c('input_files_by_name/compiler-rt') %] -mv compiler-rt-* compiler-rt +tar -xf $rootdir/[% c('input_files_by_name/clang-source') %] tar -xf $rootdir/[% c('input_files_by_name/llvm-mingw') %]
# Adding the wrappers and symlinks we need @@ -98,9 +91,8 @@ make -j[% c("buildconf/num_procs") %] make -j[% c("buildconf/num_procs") %] install
# compiler-rt -cd $builddir/compiler-rt +cd $builddir/clang-source/projects/compiler-rt mkdir build && cd build -CLANG_VERSION=$(basename $(dirname $(dirname $(dirname $($CC --print-libgcc-file-name -rtlib=compiler-rt))))) cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=$CC \ -DCMAKE_SYSTEM_NAME=Windows \ @@ -109,13 +101,14 @@ cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER_WORKS=1 \ -DCMAKE_C_COMPILER_TARGET=$compiler_rt_machine-windows-gnu \ -DCOMPILER_RT_DEFAULT_TARGET_ONLY=TRUE \ - $builddir/compiler-rt/lib/builtins + $builddir/clang-source/projects/compiler-rt/lib/builtins make -j[% c("buildconf/num_procs") %] - mkdir -p $distdir/lib/clang/$CLANG_VERSION/lib/windows - cp lib/windows/libclang_rt.builtins-$compiler_rt_machine.a $distdir/lib/clang/$CLANG_VERSION/lib/windows/ + rtdir=$distdir/lib/clang/[% pc("clang-source", "version") %]/lib/windows + mkdir -p $rtdir + cp lib/windows/libclang_rt.builtins-$compiler_rt_machine.a $rtdir/
# libunwind -cd $builddir/libunwind +cd $builddir/clang-source/libunwind mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$distdir/[% c("arch") %]-w64-mingw32 \ @@ -136,14 +129,14 @@ cmake -DCMAKE_BUILD_TYPE=Release \ -DLIBUNWIND_ENABLE_THREADS=TRUE \ -DLIBUNWIND_ENABLE_SHARED=FALSE \ -DLIBUNWIND_ENABLE_CROSS_UNWINDING=FALSE \ - -DCMAKE_CXX_FLAGS="-Wno-dll-attribute-on-redeclaration -nostdinc++ -I$builddir/libcxx/include -DPSAPI_VERSION=2" \ + -DCMAKE_CXX_FLAGS="-Wno-dll-attribute-on-redeclaration -nostdinc++ -I$builddir/clang-source/projects/libcxx/include -DPSAPI_VERSION=2" \ -DCMAKE_C_FLAGS="-Wno-dll-attribute-on-redeclaration" \ - $builddir/libunwind + $builddir/clang-source/libunwind make -j[% c("buildconf/num_procs") %] make -j[% c("buildconf/num_procs") %] install
# libcxxabi -cd $builddir/libcxxabi +cd $builddir/clang-source/projects/libcxxabi mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$distdir/[% c("arch") %]-w64-mingw32 \ @@ -162,16 +155,16 @@ cmake -DCMAKE_BUILD_TYPE=Release \ -DLIBCXXABI_ENABLE_THREADS=ON \ -DLIBCXXABI_TARGET_TRIPLE=[% c("arch") %]-w64-mingw32 \ -DLIBCXXABI_ENABLE_SHARED=OFF \ - -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/libcxx/include \ + -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/clang-source/projects/libcxx/include \ -DLLVM_NO_OLD_LIBSTDCXX=TRUE \ -DCXX_SUPPORTS_CXX11=TRUE \ -DCXX_SUPPORTS_CXX_STD=True \ -DCMAKE_CXX_FLAGS="-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_HAS_THREAD_API_WIN32" \ - $builddir/libcxxabi + $builddir/clang-source/projects/libcxxabi make -j[% c("buildconf/num_procs") %] VERBOSE=1
# libcxx -cd $builddir/libcxx +cd $builddir/clang-source/projects/libcxx mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=$distdir/[% c("arch") %]-w64-mingw32 \ @@ -197,10 +190,10 @@ cmake -DCMAKE_BUILD_TYPE=Release \ -DLIBCXX_ENABLE_FILESYSTEM=OFF \ -DLIBCXX_ENABLE_STATIC_ABI_LIBRARY=TRUE \ -DLIBCXX_CXX_ABI=libcxxabi \ - -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$builddir/libcxxabi/include \ - -DLIBCXX_CXX_ABI_LIBRARY_PATH=$builddir/libcxxabi/build/lib \ + -DLIBCXX_CXX_ABI_INCLUDE_PATHS=$builddir/clang-source/projects/libcxxabi/include \ + -DLIBCXX_CXX_ABI_LIBRARY_PATH=$builddir/clang-source/projects/libcxxabi/build/lib \ -DCMAKE_CXX_FLAGS="-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS" \ - $builddir/libcxx + $builddir/clang-source/projects/libcxx make -j[% c("buildconf/num_procs") %] VERBOSE=1 make -j[% c("buildconf/num_procs") %] install
diff --git a/projects/mingw-w64-clang/config b/projects/mingw-w64-clang/config index 9ae0e61..1bf5954 100644 --- a/projects/mingw-w64-clang/config +++ b/projects/mingw-w64-clang/config @@ -3,9 +3,6 @@ filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz' git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64 git_hash: 1b373beec6d07478ffba33726bb3bb21f32e4411 version: '[% c("abbrev") %]' -llvm_version: 9.0.1 -gpg_keyring: clang.gpg -sig_ext: sig
var: container: @@ -21,18 +18,8 @@ input_files: name: clang - project: cmake name: cmake - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("llvm_version") %]/libcxx-[% c("llvm_version") %].src.tar.xz' - name: libcxx - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("llvm_version") %]/libcxxabi-[% c("llvm_version") %].src.tar.xz' - name: libcxxabi - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("llvm_version") %]/libunwind-[% c("llvm_version") %].src.tar.xz' - name: libunwind - file_gpg_id: 1 - - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-%5B% c("llvm_version") %]/compiler-rt-[% c("llvm_version") %].src.tar.xz' - name: compiler-rt - file_gpg_id: 1 + - project: clang-source + name: clang-source - project: llvm-mingw name: llvm-mingw - filename: mingw-winrt.patch