Search Criteria
Package Details: makepkg-optimize-mold 30-2
Package Actions
Git Clone URL: | https://aur.archlinux.org/makepkg-optimize-mold.git (read-only, click to copy) |
---|---|
Package Base: | makepkg-optimize-mold |
Description: | Supplemental build and packaging optimizations for makepkg |
Upstream URL: | https://wiki.archlinux.org/index.php/Makepkg-optimize |
Keywords: | makepkg-optimize makepkg-tweaks mold |
Licenses: | GPL-1.0-only |
Submitter: | ptr1337 |
Maintainer: | ptr1337 |
Last Packager: | ptr1337 |
Votes: | 4 |
Popularity: | 0.48 |
First Submitted: | 2021-12-31 21:48 (UTC) |
Last Updated: | 2024-08-24 12:42 (UTC) |
Dependencies (11)
- pacman (pacman-gitAUR, pacman-stable-fancy-progressAUR)
- aoccAUR (optional) – use amd's llvm compiler for compiling
- aocl-aoccAUR (optional) – use amd's compiler libary for compiling
- buildcacheAUR (buildcache-gitAUR, buildcache-binAUR) (optional) – a alternative to ccache
- lld (llvm-rocm-gitAUR, llvm-gitAUR) (optional) – the clang linker
- mold (mold-gitAUR) (optional) – a modern fast linker
- openmp (optional) – Parallelize loops
- optipng (optional) – Optimize PNG files
- polly (llvm-rocm-gitAUR, llvm-gitAUR) (optional) – Polyhedral model optimization for clang
- svgoAUR (optional) – Optimize SVG files
- upx (upx-gitAUR) (optional) – Compress executables
Required by (0)
Sources (26)
- aocc.sh.in
- bolt.sh.in
- buildcache.sh.in
- buildenv_ext.conf
- cflags.conf
- cmake-flags.conf
- compress-param_max.conf
- cxxflags.conf
- destdirs_ext.conf
- graphite.sh.in
- ldflags.conf
- lld.sh.in
- makeflags.conf
- mold.sh.in
- optipng-exec.sh.in
- optipng.sh.in
- pgo.sh.in
- pkgopts-param_ext.conf
- pkgopts_ext.conf
- relocs.sh.in
- relocsgcc.sh.in
- rice.sh.in
- svgo-exec.sh.in
- svgo.sh.in
- upx-exec.sh.in
- upx.sh.in
Latest Comments
1 2 3 Next › Last »
blackout commented on 2024-07-12 09:45 (UTC) (edited on 2024-09-24 22:36 (UTC) by blackout)
Mold --separate-debug-file and
-fuse-ld=mold
needs to be in one section with-Wl
brikler commented on 2022-07-16 16:02 (UTC)
clang pgo: https://clang.llvm.org/docs/UsersManual.html#profile-guided-optimization isn't easy like pgo in gcc because more opportunity
ptr1337 commented on 2022-07-15 13:45 (UTC)
@brikler
Actually I have never changed anything on the PGO thing from the upstream makepkg-optimize and I did tested it just with gcc - im sorry. Clang uses/needs other options for that. If I have time I will look into this!
brikler commented on 2022-07-15 07:00 (UTC) (edited on 2022-07-15 08:24 (UTC) by brikler)
it doesn't work as expected. the first compilation breaks with:
PROFDEST was set in the PKGBUILD, and
upx.gen
was on the correct place.there is something wrong in general, because its not on me to create gen and used folder.
edit1: it works with
gcc
, but not with 'clang'edit2: a propos UNITY_BUILD it is more or less a developer tool, and it will not work on every project, but if, the time to compile a project can be reduced up to 50%. more about unity build: https://mesonbuild.com/Unity-builds.html
ptr1337 commented on 2022-07-14 20:59 (UTC)
Cause of incremental builds I have something here: https://github.com/ptr1337/dotfiles/blob/master/scripts/toolchain/build_llvm.bash#L242
But it is not very well tested. It does work so for but has some issues and it also uses "check" at the compilation.
ptr1337 commented on 2022-07-14 20:52 (UTC)
@brikler
You need to add in your makepkg.conf for example: PROFDEST=/home/ptr1337/Documents/pgo
In addition your need to create the folder for it. After you did compile the binary it should create a directory with packagename.gen and then you need to use your compiled binary, so that it does create profiles. So running for example at you upx based commands, then it will create profiles. As soon profiles are there it will be merged at the next compilation and change the folder to .used.
Here is it also explained: https://wiki.archlinux.org/index.php/Makepkg-optimize
Because CMAKE_UNITY Ive never watched into it and personally never saw any usage of it but i will take a watch.
Thank you
brikler commented on 2022-07-14 12:15 (UTC) (edited on 2022-07-14 14:52 (UTC) by brikler)
i noticed
pgo
doesn't work, there where no<paketname>.gen
nor<paketname>.used
folder created.how to debug?
edit upx is my test binary :) this error messages appear when compile upx
brikler commented on 2022-07-07 13:14 (UTC)
@ptr1337
thank you for this explanation :)
a'porpos clang, have you tried cmakes unity build function to build clang? does it work? it will safe a lot time to build clang, if this function work. https://cmake.org/cmake/help/latest/variable/CMAKE_UNITY_BUILD.html
ptr1337 commented on 2022-07-04 13:25 (UTC)
@brikler
Actually I kept the llvm-bolt-script seperate from the makepkg-optimize-mold. Maybe I go to have it equal.
Actually the buildenv "bolt" is thought to the USE of the optimized toolchain and not for bolting binarys. The stage 1 compiler does provide llvm-bolt itself so that you can optimize binarys/.so files you have instrumented/profiled.
I think the readme is all in all not clear about the usage of the llvm-bolt-scripts. Probably I have to rework them to make it more clear.
The full-workflow.sh provides a complete compilation for a bolted llvm toolchain - that means you will have a optimized clang compiler which has been optimized through following processes: PGO (profiled), THINLTO, and bolted.
Actually it depends also which CPU you have, one which supports LBR(Intel mostly) or you have a CPU which does not support that then you need to intstrument and profile the binary.
Maybe the example I did explain in the readme helps a bit to understand that ? I will do one more example with another binary - for example zstd.
brikler commented on 2022-07-01 10:38 (UTC) (edited on 2022-07-03 07:51 (UTC) by brikler)
What do you think about the path: ~/.toolchain/llvm
thank you, i like it :)
perhaps
jemalloc
as optional dependence:edit: to understand this https://github.com/ptr1337/llvm-bolt-scripts correct: after compilation with BUILDENV
bolt
andrelocs
, i must run this script with the optionSTAGE=1
and compile again?edit2: wrong path in your bolt-scripts:
TOPLEV=~/toolchain/llvm
1 2 3 Next › Last »