mrrl

Minimal Reliable Reproducible Linux
git clone https://ccx.te2000.cz/git/mrrl
Log | Files | Refs | Submodules | README

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 %}