Commit Graph

37 Commits

Author SHA1 Message Date
Nikita Popov
a20000fbc7 Build against Python 3.12 on RHEL 8
The minimum Python version has been raised to 3.8 in LLVM 19.
2024-09-03 08:19:05 +02:00
Nikita Popov
396ce413c4 Fix libomp libdir 2024-09-03 08:15:08 +02:00
Nikita Popov
1fc607d3b7 Fix inverted resource dir condition 2024-09-03 08:14:43 +02:00
Nikita Popov
1434c4a0c2 Fix some paths 2024-09-03 08:14:12 +02:00
Nikita Popov
593bda8820 Fix build_libddir 2024-09-03 08:13:55 +02:00
Nikita Popov
318d6afcaa Add libomp compat package support
This is not part of current rawhide sources, but based on libomp17
instead.
2024-09-03 08:13:36 +02:00
Nikita Popov
5868bd75d6 Port compiler-rt changes
From: f0ee285ff1
2024-09-03 08:13:29 +02:00
Nikita Popov
ba868932ac Port clang changes
From: bec3936967
2024-09-03 08:13:15 +02:00
Nikita Popov
c3ed99b303 Port llvm changes
From: d5ddbea65f
2024-09-03 08:13:08 +02:00
Nikita Popov
1e0387cf85 Disable python-lit and lldb for compat builds 2024-09-03 08:12:54 +02:00
Nikita Popov
e7a1f94f29 Don't explicitly set LIBOMP_HAVE_VERSION_SCRIPT_FLAG
From: ee22a23839
2024-09-02 15:45:30 +02:00
Nikita Popov
ced5c791da Remove FEDORA_LLVM_LIB_SUFFIX handling
From: 6f21bc0e93
2024-09-02 15:45:30 +02:00
Nikita Popov
2e22c397b6 Add python3-lit to big-merge 2024-09-02 15:45:30 +02:00
Nikita Popov
16b62060ba Restore reduced debuginfo on i686
At least on f40 this resulted in a segfault during gdb-add-index.
2024-09-02 15:45:30 +02:00
Nikita Popov
542735e3c4 Decrease debuginfo verbosity on RHEL 8
To see whether this fixes the OOMs. This also drops the change on
i686 for other OSs, to see whether that works or not.

On s390x this was already not effective due to a mismatch with
the condition in the cmake invocation.
2024-09-02 15:45:30 +02:00
Nikita Popov
690b69906a Set LLVM_RAM_PER_COMPILE_JOB on RHEL 8
RHEL 8 uses gcc instead of clang as the host compiler, which
uses more memory.
2024-09-02 15:45:30 +02:00
Nikita Popov
61f67fb135 Use Python3_EXECUTABLE instead of PYTHON_EXECUTABLE
Also drop the unnecessary python version variables.

If there are multiple python versions installed, the wrong one may be
picked. PYTHON_EXECUTABLE tries to avoid that problem, but the correct
way to spell this nowadays is Python3_EXECUTABLE.
2024-09-02 15:45:30 +02:00
Nikita Popov
724af11e09 Undefine __cmake_in_source_build on RHEL 8
So we get the same behavior as in newer versions.
2024-09-02 15:45:30 +02:00
Konrad Kleine
6ec634c521 Remove conditions that tried to support LLVM 18 in big-merge 2024-09-02 15:45:30 +02:00
Konrad Kleine
7f69c7ebdf Prepare non-snapshot builds
Remove version.spec.inc from git
================================

We no longer track `version.spec.inc` in git. This is useful for
development. If we build a snapshot, the file is required but if we
build a `release` build (see below), then we don't include it.

Make improvements
=================

We distinguish between `snapshot-` and `release-` builds now in the
`Makefile`. These old targets are mapped to their new counterparts and a
deprecation warning is shown:

* `setup` -> `snapshot-setup`
* `local-rpm` -> `snapshot-rpm`
* `local-srpm` -> `snapshot-srpm`
* `local-prep` -> `snapshot-prep`
* `local-clean` -> `snapshot-clean`

We also have these new Make targets that run the build process with a
release tarball instead:

* `release-setup`
* `release-rpm`
* `release-srpm`
* `release-prep`
* `release-clean`

The targets `local-list-check` and `local-tmt-vm` have been commented
out because I think they were not needed. I just kept them for future
reference of research done in those areas.

All builds described by the `Makefile` are still local and no `mock` is
involved. I find this the easiest to debug.

Toggle default bcond state for snapshot_build
=============================================

We want to be able to build non-snapshot releases with this repo. That's
why be default the build condition `snapshot_build` is off. So
only when you explicitly enable `--with=snapshot_build` or define
`--define "_with_snapshot_build 1"` you'll be able to build a snapshot.
If however the build happens in Copr with a namespace that begins with
`fedora-llvm-team/llvm-snapshots-`, then the build condition is ON by
default and there's no need to enable it explicitly with `--with=snapshot_build`.

Things related to release update
================================

* Add llvm-project tarball and signature to sources
* Fix: error: source 1001 defined multiple times
* Fix: error: source 1006 defined multiple times
* Fix missing newline
* Conditionally apply 0001-Always-build-shared-libs-for-LLD.patch
* Only enable offload runtime in snapshot mode

Misc.
=====

* Add missing prep dependency
2024-09-02 15:45:30 +02:00
Konrad Kleine
361c194ff0 lldb: Fail to configure if certain requirements are not met for testing 2024-09-02 15:45:30 +02:00
Konrad Kleine
ed43018924 Reorganize %check section 2024-09-02 15:45:30 +02:00
Konrad Kleine
572039ea86 Add lldb to big-merge
See https://github.com/fedora-llvm-team/llvm-snapshots/issues/573
2024-09-02 15:45:30 +02:00
Tom Stellard
766f32331f Build libclang-cpp.so separately to avoid OOM errors
We were running out of memory linking this on the ppc64le COPR builders.
2024-09-02 15:45:30 +02:00
Nikita Popov
4fea24b487 Remove 32-bit arm related conditionals
32-bit ARM hasn't been supported for quite a while, remove the
related conditions. This has already happened for the non-big-merge
branches.
2024-09-02 15:45:30 +02:00
Nikita Popov
1115746e65 Make lto handling similar to current rawhide
Have a --with lto_build option, where LTO is enabled by default
for everything except i686 and riscv. Use that flag to condition
whether `-DLLVM_UNITTEST_LINK_FLAGS` is passed.

Additionally, make use of the new Fat LTO functionality in rawhide
to use `-fno-lto` instead of `-Wl,-plugin-opt=O0` to save more
time linking unit tests.
2024-09-02 15:45:30 +02:00
Nikita Popov
3ddc01eec2 Clean up the lto_cflags mess
We were defining lto_cflags in three places. It looks like on
aarch64 nil won (LTO disabled), while on other architectures
`-flto=thin` won.

I think on rawhide, this means that we're currently shipping
bitcode in static archives, because the required
`-ffat-lto-objects` option from redhat-rpm-config is missing.

Resolve this by leaving the option at its default value --
if enabling it on aarch64 causes issues, we can disable it just
there again.

Also reenable the LLVM_UNITTEST_LINK_FLAGS option, which should
reduce the amount of time LTO takes.
2024-09-02 15:45:30 +02:00
Konrad Kleine
c0dde1d232 Use lit from in-source 2024-09-02 15:45:30 +02:00
Nikita Popov
96e6dc3d90 Explicitly disable LLVM_APPEND_VC_REV
This already happens implicitly because we don't build from a git
checkout. However, currently this also breaks the build due to
https://github.com/llvm/llvm-project/pull/88164. Avoid this by
explicitly disabling the option.
2024-09-02 15:45:30 +02:00
Konrad Kleine
d8b121f4e0 Remove LLVM_CMAKE_DIR and LLVM_MAIN_SRC_DIR cmake config options 2024-09-02 15:45:30 +02:00
Konrad Kleine
e7577a312e enable lld project 2024-09-02 15:45:30 +02:00
Konrad Kleine
316c5488a7 Integrate lld.spec into spec files 2024-09-02 15:45:30 +02:00
Tom Stellard
39d366a109 Fix offload install dir 2024-09-02 15:45:30 +02:00
Tom Stellard
7eb753fbfa Add new offload runtime 2024-09-02 15:45:30 +02:00
Tom Stellard
e30affbe86 Sync with openmp upstream-snapshot branch 2024-09-02 15:45:30 +02:00
Nikita Popov
32c3bcc36f Only use cet-report=error on x86_64
i386 CET support has been removed from glibc. Only check it for
x86_64.

This is a cherry-pick of fefb87d583
2024-09-02 15:45:17 +02:00
Konrad Kleine
ab194f104b merge llvm, clang, compiler-rt and libomp repos
* %check: export LD_LIBRARY_PATH because runtimes use external cmake projects that wouldn't find libclang++.so
* %check: use LLVM's LIT_XFAIL to mark tests that are expected to fail and don't just delete them
* clang: bring over *.patch files
* clang: remove build requires tags from clang package that are already defined by main llvm package
* clang: remove duplicates found in llvm globals and use %{pkg_datadir} instead of %{install_datadir}
* clang: rename and use pkg_name -> pkg_name_clang
* clang: use %{pkg_name_clang} instead of %{name}
* compiler-rt and libomp: wrap in %if %{without compat_build}
* libomp: also build libomp for s390x (See https://github.com/llvm/llvm-project/pull/66081)
* libomp: exclude libomp-devel on s390x just like libomp itself
* libomp: introduce pkg_name_libomp and cleanup the globals
* libomp: remove gdb-plugin (NEED TO CONFIRM IF THIS IS REALLY TRUE)
* libomp: filter out flaky libomp test: ompt/teams/distribute_dispatch.c
* llvm: add BuildRequires: graphviz to llvm-doc
* llvm: use %{pkg_name_llvm} instead of %{name}
* make: added temporary Makefile so I can more easily run srpm or rpm builds locally
* make: Added local-tmt-vm target (not really useful yet)
* rpm: for non-RHEL add prefix like "Jan 05 16:17:06" to every log line This should help in finding out how long things take to build/install/...
* rpm: fully specify %files for top-level packages
* rpm: make all packages fully qualified
* rpm: obsolete llvm-snapshot-builder
* rpm: remove BuildRequires: python3-lit because we have it in-tree
* rpm: remove BuildRequires: tags for clang and llvm specifics as we're building in-tree
* rpm: rename %llvm_srcdir -> %srcdir_llvm
* rpm: rename %pkg_name -> %pkg_name_llvm
* rpm: use full qualified name in %description
* rpm: use region comments in spec file to group by package. This allows editors to fold text to get a better overview
* rpmlint: update rc file to reflect clang and compiler-rt (libomp has no rpmlint rc file)
* use python-lit from within tree
2024-09-02 15:45:17 +02:00