Commit graph

38 commits

Author SHA1 Message Date
Nikita Popov
6132ff48d8 Disable LLVM_UNREACHABLE_OPTIMIZE
This was needed at some point to prevent an assertion failure,
but shouldn't be relevant anymore.
2024-08-12 07:23:58 +00:00
Nikita Popov
7528637fbe Build against Python 3.12 on RHEL 8
The minimum Python version has been raised to 3.8 in LLVM 19.
2024-08-06 09:00:55 +00:00
Nikita Popov
30cfa100b5 Fix libomp libdir 2024-08-01 15:17:00 +00:00
Nikita Popov
18c2b72a76 Fix inverted resource dir condition 2024-08-01 15:17:00 +00:00
Nikita Popov
ad4939ffd0 Fix some paths 2024-08-01 15:17:00 +00:00
Nikita Popov
38a1e8a0dd Fix build_libddir 2024-08-01 15:17:00 +00:00
Nikita Popov
4b52059c16 Add libomp compat package support
This is not part of current rawhide sources, but based on libomp17
instead.
2024-08-01 15:17:00 +00:00
Nikita Popov
12705645df Port compiler-rt changes
From: f0ee285ff1
2024-08-01 15:17:00 +00:00
Nikita Popov
56b99b7123 Port clang changes
From: bec3936967
2024-08-01 15:17:00 +00:00
Nikita Popov
c0169e2abf Port llvm changes
From: d5ddbea65f
2024-08-01 15:17:00 +00:00
Nikita Popov
72591dcbcb Disable python-lit and lldb for compat builds 2024-07-30 16:14:11 +00:00
Nikita Popov
1959463294 Don't explicitly set LIBOMP_HAVE_VERSION_SCRIPT_FLAG
From: ee22a23839
2024-07-25 12:17:13 +00:00
Nikita Popov
72d4074b9f Remove FEDORA_LLVM_LIB_SUFFIX handling
From: 6f21bc0e93
2024-07-25 12:15:35 +00:00
Nikita Popov
22b081016d Add python3-lit to big-merge 2024-07-24 07:17:50 +00:00
Nikita Popov
5b566692a4 Restore reduced debuginfo on i686
At least on f40 this resulted in a segfault during gdb-add-index.
2024-07-21 15:03:26 +02:00
Nikita Popov
2660590e85 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-07-20 15:42:02 +02:00
Nikita Popov
a3e4502e5e 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-07-18 13:32:25 +00:00
Nikita Popov
fc1c88bf3d 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-07-18 13:32:25 +00:00
Nikita Popov
c956fce064 Undefine __cmake_in_source_build on RHEL 8
So we get the same behavior as in newer versions.
2024-07-18 13:32:25 +00:00
Konrad Kleine
d2c0d36f9e Remove conditions that tried to support LLVM 18 in big-merge 2024-07-18 08:53:43 +00:00
Konrad Kleine
626da9456a 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-07-11 18:47:43 +00:00
Konrad Kleine
6c6af36acb lldb: Fail to configure if certain requirements are not met for testing 2024-07-11 11:37:05 +00:00
Konrad Kleine
c00f9f2e11 Reorganize %check section 2024-07-09 18:55:12 +00:00
Konrad Kleine
f7fcef719f Add lldb to big-merge
See https://github.com/fedora-llvm-team/llvm-snapshots/issues/573
2024-07-02 16:45:48 +02:00
Tom Stellard
8e21cf96b0 Build libclang-cpp.so separately to avoid OOM errors
We were running out of memory linking this on the ppc64le COPR builders.
2024-06-10 12:56:45 +00:00
Nikita Popov
c1ee2896c0 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-05-30 10:23:13 +02:00
Nikita Popov
1654df4ed3 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-05-27 12:42:49 +00:00
Nikita Popov
dd570eaeab 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-05-27 12:42:49 +00:00
Konrad Kleine
abce59b8a2 Use lit from in-source 2024-05-08 08:34:18 +00:00
Nikita Popov
e2b1846619 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-05-08 12:45:11 +09:00
Konrad Kleine
46b9426cde Remove LLVM_CMAKE_DIR and LLVM_MAIN_SRC_DIR cmake config options 2024-05-06 13:01:05 +00:00
Konrad Kleine
62d32c91f4 enable lld project 2024-05-06 13:00:42 +00:00
Konrad Kleine
6456b314bc Integrate lld.spec into spec files 2024-05-06 08:20:29 +00:00
Tom Stellard
8c35ea0d5d Fix offload install dir 2024-05-02 14:55:23 +00:00
Tom Stellard
263f283b7e Add new offload runtime 2024-05-02 14:55:23 +00:00
Tom Stellard
8fea7e788b Sync with openmp upstream-snapshot branch 2024-05-02 14:55:23 +00:00
Nikita Popov
d168c1664f 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-05-02 14:54:30 +00:00
Konrad Kleine
eb12c13273 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-05-02 14:53:58 +00:00