musl-cross-make:old (5658B)
1 {%- import "package_sets" as ps -%} 2 #!/usr/bin/env pthbs-build 3 #@pragma:nofail_digest 4 #+{{pkg_install_name("musl-cross-make:oldbootstrap-1")}} 5 #+{{pkg_install_name("gnu-make:oldbootstrap")}} 6 #+{{pkg_install_name("busybox:oldbootstrap")}} 7 #+{{pkg_install_name("nawk:bootstrap")}} 8 {{ ps.mcm_sources( 9 gcc="gcc-14.3.0.tar.xz", 10 linux="linux-6.15.7.tar.xz", 11 musl="musl-1.2.5.tar.gz", 12 binutils="binutils-2.44.tar.gz", 13 gmp="gmp-6.3.0.tar.xz", 14 mpfr="mpfr-4.2.2.tar.xz", 15 mpc="mpc-1.3.1.tar.gz" 16 ) }} 17 #@sha256:4213e75809588e3f32ae0fde8fb11df2dfd6e0e013762ff5ee951c3aadb7ffc0:musl-cross-make/patches/linux-6.15.7/0001-no-rsync-headers.diff 18 #@sha256:68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6:zpipe.c 19 #@git:{{submodule.current["musl-cross-make"]}}:musl-cross-make 20 21 22 # - build script start - 23 PATH="$pthbs_build_environment/command:$PATH" 24 25 prefix={{versions}}/$pthbs_package 26 dest=${pthbs_destdir%/}${prefix} 27 cd '.' 28 29 # For validating the compiler 30 printf '%s\n' 'int main(void) { return 0; }' >true.c 31 32 printf '%s\n' >musl-cross-make/config.mak \ 33 "OUTPUT=${pthbs_destdir%/}{{versions}}/$pthbs_package" \ 34 "TARGET={{triplet}}" \ 35 'GCC_VER=14.3.0' \ 36 'LINUX_VER=6.15.7' \ 37 'MUSL_VER=1.2.5' \ 38 'BINUTILS_VER=2.44' \ 39 'GMP_VER=6.3.0' \ 40 'MPC_VER=1.3.1' \ 41 'MPFR_VER=4.2.2' \ 42 'st=-static --static' \ 43 'fl=-g0 -O2' \ 44 "command=$pthbs_build_environment/command" \ 45 'COMMON_CONFIG += CFLAGS="${fl} ${st}" CXXFLAGS="${fl} ${st}" FFLAGS="${fl}" LDFLAGS="-s ${st}"' \ 46 'COMMON_CONFIG += CC="${command}/{{triplet}}-gcc ${st}" CXX="${command}/{{triplet}}-g++ ${st}"' 47 48 49 touch musl-cross-make/sources/* 50 51 52 # Patch linker path for dynamic executables 53 make -C musl-cross-make gcc-14.3.0 54 sed -i -e 's|/lib/ld-musl-|{{versions}}/'"$pthbs_package"'/{{triplet}}/lib/ld-musl-|' musl-cross-make/gcc-14.3.0/gcc/config/*/linux*.h 55 make -j${JOBS:-1} -l$((1+${JOBS:-1})) -C musl-cross-make || exit $? 56 make -C musl-cross-make install || exit $? 57 58 mv "$dest/{{triplet}}/include" "$dest/" 59 mv "$dest/bin" "$dest/command" 60 mv "$dest/{{triplet}}/bin"/* "$dest/command/" 61 62 ln -s ../include "$dest/{{triplet}}/include" 63 ln -s ./command "$dest/bin" 64 ln -s ../command "$dest/{{triplet}}/bin" 65 66 dd=$pthbs_destdir/{{versions}}/$pthbs_package 67 68 # Override linker symlink 69 for linkname in "$dd"'/{{triplet}}/lib/'ld-musl-*so*; do 70 ln -s -f libc.so "$linkname" 71 done 72 73 # Validate the compiler 74 "$dd"'/command/{{triplet}}-gcc' --version 75 "$dd"'/command/{{triplet}}-gcc' -o true true.c 76 "$dd"'/command/{{triplet}}-readelf' --string-dump=.interp true >true.linker 77 grep -F "$pthbs_package" true.linker 78 79 pkgs="gmp mpc mpfr zlib" 80 #pkgs="$pkgs libbacktrace libcc1 libcpp libdecnumber libiberty lto-plugin" 81 82 for pkg in $pkgs; do 83 make -C musl-cross-make/build/local/{{triplet}}/obj_gcc/$pkg prefix=/ DESTDIR="$dd" install 84 done 85 cp -va musl-cross-make/gcc-*.orig/zlib/zconf.h musl-cross-make/gcc-*.orig/zlib/zlib.h "$dd/include/" 86 mkdir -p "$dd/library/pkgconfig" 87 printf '%s\n' > "$dd/library/pkgconfig/zlib.pc" \ 88 "prefix={{versions}}/$pthbs_package" \ 89 'exec_prefix=${prefix}' \ 90 'includedir=${prefix}/include' \ 91 'libdir=${exec_prefix}/library' \ 92 '' \ 93 'Name: zlib' \ 94 'Description: zlib compression library' \ 95 'Version: 1.2.11' \ 96 '' \ 97 'Requires:' \ 98 'Libs: -L${libdir} -lz' \ 99 'Cflags: -I${includedir}' 100 101 102 # validate zlib 103 "$dd"'/command/{{triplet}}-gcc' -I"$dd/include" -L"$dd/lib" -static -o zpipe zpipe.c -lz 104 ./zpipe <true.c >true.c.gz 105 ./zpipe -d <true.c.gz >true.c.2 106 cmp -s true.c true.c.2 107 108 109 110 cd "$pthbs_destdir{{versions}}/$pthbs_package" 111 find -type d -o -print | awk -F/ ' 112 BEGIN { 113 x["./command/{{triplet}}-g++"]=1 114 x["./command/{{triplet}}-gcc"]=1 115 x["./include/linux/landlock.h"]=1 116 117 x["./lib/libgmp.a"]=1 118 x["./lib/libmpc.a"]=1 119 x["./lib/libmpfr.a"]=1 120 x["./lib/libz.a"]=1 121 122 x["./include/gmp.h"]=1 123 x["./include/mpc.h"]=1 124 x["./include/mpf2mpfr.h"]=1 125 x["./include/mpfr.h"]=1 126 x["./include/zlib.h"]=1 127 x["./include/zconf.h"]=1 128 } 129 130 function r1(s) { 131 sub("^[.]/[^/]*", ".", s) 132 return s 133 } 134 function s1(repl, s) { 135 sub("^[.]/[^/]*", "./"repl, s) 136 return s 137 } 138 function link(src) { 139 x[$0]=0 140 printf "%s\t%s\n", $0, src 141 printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr" 142 } 143 $1!="."{exit 1} 144 145 $2 == "command" && $3 ~ /^{{triplet}}-/ && ! ( \ 146 $3 == "{{triplet}}-ar" || \ 147 $3 == "{{triplet}}-as" || \ 148 $3 == "{{triplet}}-ld" || \ 149 $3 == "{{triplet}}-ld.bfd" || \ 150 $3 == "{{triplet}}-nm" || \ 151 $3 == "{{triplet}}-objcopy" || \ 152 $3 == "{{triplet}}-objdump" || \ 153 $3 == "{{triplet}}-ranlib" || \ 154 $3 == "{{triplet}}-readelf" || \ 155 $3 == "{{triplet}}-strip" \ 156 ) { 157 target=$3 158 sub("{{triplet}}-", "", target) 159 link("./command/" target) 160 } 161 $2 == "command" { link($0); next } 162 163 $2 == "config" { link($0); next } 164 $2 == "keys" { link($0); next } 165 $2 == "zsh" { link($0); next } 166 $2 == "env" { link($0); next } 167 168 $2 == "library.so" { link($0); next } 169 $2 == "library" { link($0); next } 170 $2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next } 171 $2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next } 172 173 $2 == "share" && $3 ~ /^(info|man|doc|icons|terminfo)$/ { link(r1($0)); next } 174 175 $2 == "man" { link($0); next } 176 $2 == "info" { link($0); next } 177 $2 == "doc" { link($0); next } 178 $2 == "icons" { link($0); next } 179 $2 == "terminfo" { link($0); next } 180 $2 == "data" { link($0); next } 181 $2 == "include" { link($0); next } 182 183 { printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" } 184 185 END { 186 for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" } 187 for(fname in x) { 188 if(x[fname]) { 189 printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr" 190 exit 3 191 } 192 } 193 }' >.install-links.new 194 mv .install-links.new .install-links 195 196 {# extra line for matching hash #}