musl-cross-make (3866B)
1 {%- set gcc_ver=target_gcc_version|default("13.4.0") -%} 2 {%- set linux_ver="6.17" -%} 3 {%- import "package_sets" as ps -%} 4 {% extends "musl-cross-make" %} 5 {% do setitem(env_template, "CPPFLAGS", "-isystem @ENVROOT@/"~includedir) %} 6 {% do setitem(env_template, "LIBRARY_PATH", "@ENVROOT@/"~libdir) %} 7 {% do setitem(env_template, "LD_LIBRARY_PATH", "@ENVROOT@/"~dynlibdir) %} 8 {% do setitem(env, "CFLAGS", "-Og -g") %} 9 {% do setitem(env, "CXXFLAGS", "-Og -g") %} 10 {% block package_deps -%} 11 #+{{pkg_install_name("musl-cross-make:bootstrap-1")}} 12 #+{{pkg_install_name("gnu-make:bootstrap")}} 13 #+{{pkg_install_name("busybox:bootstrap")}} 14 #+{{pkg_install_name("nawk:bootstrap")}} 15 {{ ps.mcm_sources( 16 gcc="gcc-"~gcc_ver~".tar.xz", 17 linux="linux-"~linux_ver~".tar.xz", 18 ) }} 19 #@sha256:{{files["mcm-no_rsync-linux-6.5.4.patch"]}}:musl-cross-make/patches/linux-{{linux_ver}}/0001-no-rsync-headers.diff 20 #@sha256:{{files["zpipe.c"]}}:musl-cross-make/zpipe.c 21 {% endblock %} 22 {% block configure -%} 23 env 24 which '{{triplet}}-g++' 25 '{{triplet}}-g++' --version 26 27 {{ super() }} 28 CC="{{triplet}}-gcc -std=gnu17" 29 printf '%s\n' >>config.mak ' 30 LINUX_VER={{linux_ver}} 31 st=-static --static 32 fl=-g0 -O2 33 COMMON_CONFIG += CFLAGS="${fl} ${st}" 34 COMMON_CONFIG += CXXFLAGS="${fl} ${st}" 35 COMMON_CONFIG += FFLAGS="${fl}" LDFLAGS="-s ${st}" 36 COMMON_CONFIG += CC="{{triplet}}-gcc -std=gnu17" 37 COMMON_CONFIG += CXX="{{triplet}}-g++ -std=gnu++11" 38 MUSL_CONFIG += --enable-debug 39 ' 40 41 test -f ./hashes/"gcc-{{gcc_ver}}.tar.xz.sha1" || ( 42 cd sources 43 sha1sum "gcc-{{gcc_ver}}.tar.xz" >../hashes/"gcc-{{gcc_ver}}.tar.xz.sha1" 44 ) 45 {# # fail to apply with busybox patch 46 rm patches/gcc-15.1.0/0003-j2.diff 47 rm patches/binutils-2.44/0001-j2.diff patches/binutils-2.44/0002-sh-fdpic-pr31619.diff 48 -#} 49 {% endblock %} 50 {% block build_and_install -%} 51 {{- super() }} 52 53 mkdir -p "$dest/{{dynlibdir}}" 54 {# go through relevant directories and make symlinks depending on type of library -#} 55 dynlib_to_top="$(printf "%s\n" {{dynlibdir|shesc}} | sed -Ee "s!^\./!!; s![^/]+!..!g")" 56 printf >>"$pthbs_workdir/link_to_dynlib" '%s\n' 'ln -s "'$dynlib_to_top'${1#.}" '{{dynlibdir|shesc}}/ 57 ( cd "$dest" && find "./lib" "./{{triplet}}" \ 58 \( -type f -o -type l \) \( -name '*.so' -o -name '*.so.*' \) \ 59 -exec sh -xe "$pthbs_workdir/link_to_dynlib" '{}' ';' 60 ) 61 62 pkgs="gmp mpc mpfr zlib" 63 #pkgs="$pkgs libbacktrace libcc1 libcpp libdecnumber libiberty lto-plugin" 64 65 for pkg in $pkgs; do 66 make -C ./build/local/x86_64-linux-musl/obj_gcc/$pkg prefix=/ DESTDIR="$dest" install 67 done 68 cp -va ./gcc-*.orig/zlib/zconf.h ./gcc-*.orig/zlib/zlib.h "$dest/{{includedir}}/" 69 mkdir -p "$dest/{{pkgconfigdir}}" 70 printf '%s\n' > "$dest/{{pkgconfigdir}}/zlib.pc" \ 71 "prefix={{versions}}/$pthbs_package" \ 72 'exec_prefix=${prefix}' \ 73 'includedir=${prefix}/{{includedir}}' \ 74 'libdir=${exec_prefix}/{{libdir}}' \ 75 '' \ 76 'Name: zlib' \ 77 'Description: zlib compression library' \ 78 'Version: 1.2.11' \ 79 '' \ 80 'Requires:' \ 81 'Libs: -L${libdir} -lz' \ 82 'Cflags: -I${includedir}' 83 84 {% endblock %} 85 {% block check -%} 86 {{- super() }} 87 88 # validate zlib 89 "$dest"'/bin/{{triplet}}-gcc' -I"$dest/{{includedir}}" -L"$dest/lib" -static -o zpipe zpipe.c -lz 90 ./zpipe <true.c >true.c.gz 91 ./zpipe -d <true.c.gz >true.c.2 92 cmp -s true.c true.c.2 93 94 {% endblock %} 95 {% block genlinks_rules %} 96 {{- super() -}} 97 $2 == "{{triplet}}" && $3 == "include" { link(s1("{{includedir}}", r1($0))) } 98 {% endblock -%} 99 {% block genlinks_begin %} 100 {{- super() }} 101 x["./lib/libgmp.a"]=1 102 x["./lib/libmpc.a"]=1 103 x["./lib/libmpfr.a"]=1 104 x["./lib/libz.a"]=1 105 106 x["./{{dynlibdir}}/libc.so"]=1 107 x["./{{dynlibdir}}/libgcc_s.so"]=1 108 x["./{{dynlibdir}}/libstdc++.so"]=1 109 110 x["./{{includedir}}/gmp.h"]=1 111 x["./{{includedir}}/mpc.h"]=1 112 x["./{{includedir}}/mpf2mpfr.h"]=1 113 x["./{{includedir}}/mpfr.h"]=1 114 x["./{{includedir}}/zlib.h"]=1 115 x["./{{includedir}}/zconf.h"]=1 116 117 x["./{{triplet}}/{{includedir}}/linux/landlock.h"]=1 118 {% endblock %}