llvm/Makefile

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

156 lines
4.1 KiB
Makefile
Raw Normal View History

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
2023-10-12 09:15:14 +00:00
YYYYMMDD=$(shell date +%Y%m%d)
SOURCEDIR=$(shell pwd)
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-05-17 09:27:48 +00:00
SPEC=llvm.spec
FEDORA_RELEASE=f40
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
2023-10-12 09:15:14 +00:00
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-05-17 09:27:48 +00:00
# Map deprecated targets to new targets
.PHONY: setup local-rpm local-srpm local-prep local-clean
setup local-rpm local-srpm local-prep local-clean:
$(eval mapped_target:=$(subst setup,snapshot-setup,$(MAKECMDGOALS)))
$(eval mapped_target:=$(subst local-clean,snapshot-clean,$(mapped_target)))
$(eval mapped_target:=$(subst local-,snapshot-,$(mapped_target)))
$(info WARNING: "$(MAKECMDGOALS)" is deprecated. Instead running "$(mapped_target)")
$(MAKE) $(mapped_target)
.PHONY: snapshot-vars
snapshot-vars:
$(eval RESULTDIR:=$(shell pwd)/snapshot-results)
.PHONY: release-vars
release-vars:
$(eval RESULTDIR:=$(shell pwd)/release-results)
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
2023-10-12 09:15:14 +00:00
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-05-17 09:27:48 +00:00
.PHONY: prep
prep:
mkdir -pv $(RESULTDIR)
.PHONY: snapshot-setup
snapshot-setup: snapshot-vars prep
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
2023-10-12 09:15:14 +00:00
YYYYMMDD=$(YYYYMMDD) ./.copr/snapshot-info.sh > $(SOURCEDIR)/version.spec.inc
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-05-17 09:27:48 +00:00
spectool -g --define "_sourcedir $(SOURCEDIR)" --define "_with_snapshot_build 1" $(SPEC)
.PHONY: release-setup
release-setup: release-vars prep
spectool -g --define "_sourcedir $(SOURCEDIR)" $(SPEC)
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
2023-10-12 09:15:14 +00:00
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-05-17 09:27:48 +00:00
.PHONY: snapshot-srpm
snapshot-srpm: snapshot-setup
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
2023-10-12 09:15:14 +00:00
rpmbuild \
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-05-17 09:27:48 +00:00
--with=snapshot_build \
--define "_rpmdir $(RESULTDIR)" \
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
2023-10-12 09:15:14 +00:00
--define "_sourcedir $(SOURCEDIR)" \
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-05-17 09:27:48 +00:00
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
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
2023-10-12 09:15:14 +00:00
-bs $(SPEC)
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-05-17 09:27:48 +00:00
.PHONY: release-srpm
release-srpm: release-setup
rpmbuild \
--define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
-bs $(SPEC)
.PHONY: snapshot-rpm
snapshot-rpm: snapshot-setup
rpmbuild \
--with=snapshot_build \
--define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bb $(SPEC)
.PHONY: release-rpm
release-rpm: release-setup
rpmbuild \
--define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bb $(SPEC)
.PHONY: snapshot-clean
snapshot-clean: snapshot-vars _clean
.PHONY: release-clean
release-clean: release-vars _clean
.PHONY: _clean
_clean:
-rm -rf $(RESULTDIR)
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
2023-10-12 09:15:14 +00:00
-rm -f *.txt
-rm -f *.tar.xz
-rm -f *.tar.xz.sig
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-05-17 09:27:48 +00:00
-rm -rf $(shell uname -m)
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
2023-10-12 09:15:14 +00:00
-rm -rf noarch
-rm -rf *.src.rpm
2024-05-16 13:57:59 +00:00
-rm -rf /tmp/lto-llvm-*.o
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
2023-10-12 09:15:14 +00:00
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-05-17 09:27:48 +00:00
.PHONY: snapshot-prep
snapshot-prep: snapshot-setup
rpmbuild \
--with=snapshot_build \
--define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bp $(SPEC)
.PHONY: release-prep
release-prep: releae-setup
rpmbuild \
--define "_rpmdir $(RESULTDIR)" \
--define "_sourcedir $(SOURCEDIR)" \
--define "_specdir $(SOURCEDIR)" \
--define "_srcrpmdir $(RESULTDIR)" \
--define "_builddir $(RESULTDIR)" \
--noclean \
-bp $(SPEC)
# .PHONY: local-list-check
# local-list-check: setup
# fedpkg --release $(FEDORA_RELEASE) -v \
# local \
# --builddir $(BUILDDIR) \
# --buildrootdir $(BUILDROOTDIR) \
#
# --with=snapshot_build \
# -- $(SPEC) -bl
# .PHONY: local-tmt-vm
# local-tmt-vm:
# # This is to ensure the required packages are installed
# rpm -q tmt tmt+provision-virtual
# # This is to check if you've started libvirt
# # If this fails, run: sudo systemctl start libvirtd
# # systemctl status libvirtd --no-pager
# # In case of: Failed to boot testcloud instance (authentication unavailable: no polkit agent available to authenticate action 'org.libvirt.unix.manage')
# # Add yourself to libvirt group: sudo usermod -a -G libvirt $USER
# cat /etc/group | grep libvirt | grep $(USER)
# tmt \
# -c distro=fedora-rawhide \
# -c arch=x86_64 \
# -c snapshot=20240124
# run \
# -avv \
# provision \
# -h virtual.testcloud \
# -c system \
# -i fedora-rawhide \
# prepare \
# -h install \
# -c fedora-llvm-team/llvm-snapshots-big-merge-20240124 \
# test \
# report