itpcc+musl: moved scripts/patches into downloadable files - monochromatic - monochromatic blog: http://blog.z3bra.org Err z3bra.org 70 hgit clone git://z3bra.org/monochromatic URL:git://z3bra.org/monochromatic z3bra.org 70 1Log /scm/monochromatic/log.gph z3bra.org 70 1Files /scm/monochromatic/files.gph z3bra.org 70 1Refs /scm/monochromatic/refs.gph z3bra.org 70 i--- Err z3bra.org 70 1commit f3753cd19cac147edd77464b49fad31a362ef073 /scm/monochromatic/commit/f3753cd19cac147edd77464b49fad31a362ef073.gph z3bra.org 70 1parent 714c013b9bbe185258b91d3d9fe5624699cd4d89 /scm/monochromatic/commit/714c013b9bbe185258b91d3d9fe5624699cd4d89.gph z3bra.org 70 hAuthor: z3bra URL:mailto:willy@mailoo.org z3bra.org 70 iDate: Sun, 16 Aug 2015 20:05:11 +0200 Err z3bra.org 70 i Err z3bra.org 70 ipcc+musl: moved scripts/patches into downloadable files Err z3bra.org 70 i Err z3bra.org 70 iDiffstat: Err z3bra.org 70 i M 2015/08/cross-compiling-with-pcc-a… | 302 +------------------------------ Err z3bra.org 70 i M css/monochrome.css | 2 +- Err z3bra.org 70 i A data/cross-pcc.sh | 210 +++++++++++++++++++++++++++++++ Err z3bra.org 70 i A data/pcc-1.1.0-deflibdirs.diff | 30 ++++++++++++++++++++++++++++++ Err z3bra.org 70 i A data/pcc-1.1.0-musl.diff | 21 +++++++++++++++++++++ Err z3bra.org 70 i A data/pcc-libs-1.1.0-musl.diff | 22 ++++++++++++++++++++++ Err z3bra.org 70 i Err z3bra.org 70 i6 files changed, 291 insertions(+), 296 deletions(-) Err z3bra.org 70 i--- Err z3bra.org 70 1diff --git a/2015/08/cross-compiling-with-pcc-and-musl.txt b/2015/08/cross-compiling-with-pcc-and-musl.txt /scm/monochromatic/file/2015/08/cross-compiling-with-pcc-and-musl.txt.gph z3bra.org 70 it@@ -1,223 +1,14 @@ Err z3bra.org 70 i # [cross-compiling with PCC and musl](#) Err z3bra.org 70 i ## — 16 August, 2015 Err z3bra.org 70 i Err z3bra.org 70 i+**TL;DR**: See the full script here: [cross-pcc.sh](/data/cross-pcc.sh). It will Err z3bra.org 70 i+create your toolchain in `$HOME/cross/pcc-x86_64` and name the tools Err z3bra.org 70 i+`x86_64-linux-musl-*`. Err z3bra.org 70 i+ Err z3bra.org 70 i I've recently been playing around with [PCC](http://pcc.ludd.ltu.se/) and Err z3bra.org 70 i [musl](http://www.musl-libc.org/), and to make the process of compiling Err z3bra.org 70 i softwares with them easier, I decided to setup a cross-compiler relying on both. Err z3bra.org 70 i Err z3bra.org 70 i-**TL;DR**: here is the full script. It will create your toolchain in `$HOME/cross/pcc-x86_64` and name the tools `x86_64-linux-musl-*`. Err z3bra.org 70 i- Err z3bra.org 70 i- #!/bin/sh -ex Err z3bra.org 70 i- # Err z3bra.org 70 i- # Couple of useful links: Err z3bra.org 70 i- # + http://pcc.ludd.ltu.se/cross-compiler/ Err z3bra.org 70 i- # + http://wiki.osdev.org/Cross-Compiler_Successful_Builds Err z3bra.org 70 i- # + https://git.framasoft.org/Ypnose/solyste/blob/master/scripts/create-crossenv Err z3bra.org 70 i- # + http://kegel.com/crosstool/ Err z3bra.org 70 i- # + https://github.com/GregorR/musl-cross/tree/master/patches Err z3bra.org 70 i- # Err z3bra.org 70 i- # 0. download and extract sources Err z3bra.org 70 i- # 1. patch everything that require patching Err z3bra.org 70 i- # 2. install linux headers Err z3bra.org 70 i- # 3. build binutils Err z3bra.org 70 i- # 4. build musl Err z3bra.org 70 i- # 5. build pcc with gcc Err z3bra.org 70 i- # 6. add pkg-config wrapper Err z3bra.org 70 i- Err z3bra.org 70 i- # cross compiler environment Err z3bra.org 70 i- MARCH=$(uname -m) Err z3bra.org 70 i- TRIPLE=${TRIPLE:-${MARCH}-linux-musl} Err z3bra.org 70 i- PREFIX=${PREFIX:-${HOME}/cross/pcc-${MARCH}} Err z3bra.org 70 i- BLDDIR=${BLDDIR:-${HOME}/cross/build} Err z3bra.org 70 i- SRCDIR=${SRCDIR:-${HOME}/cross/source} Err z3bra.org 70 i- PATCHD=${PATCHD:-${HOME}/cross/patches} Err z3bra.org 70 i- Err z3bra.org 70 i- # compilation variables Err z3bra.org 70 i- PATH="${PREFIX}/bin:${PATH}" Err z3bra.org 70 i- CFLAGS="-Os -fomit-frame-pointer -pipe" Err z3bra.org 70 i- CXXFLAGS="${CFLAGS}" Err z3bra.org 70 i- CPPFLAGS="${CFLAGS}" Err z3bra.org 70 i- LDFLAGS="-Wl,--as-needed" Err z3bra.org 70 i- MAKEFLAGS="-j8" Err z3bra.org 70 i- Err z3bra.org 70 i- # versions Err z3bra.org 70 i- PCCV=${PCCV:-1.1.0} Err z3bra.org 70 i- BINV=${BINV:-2.25} Err z3bra.org 70 i- MUSLV=${MUSLV:-1.1.10} Err z3bra.org 70 i- KERNV=${KERNV:-4.1.4} Err z3bra.org 70 i- Err z3bra.org 70 i- Err z3bra.org 70 i- # source mirrors Err z3bra.org 70 i- PCCMIRROR=ftp://pcc.ludd.ltu.se/pub/pcc-releases Err z3bra.org 70 i- GNUMIRROR=ftp://ftp.gnu.org/gnu Err z3bra.org 70 i- MUSLMIRROR=http://www.musl-libc.org/releases Err z3bra.org 70 i- LINUXMIRROR=https://www.kernel.org/pub/linux/kernel/v4.x Err z3bra.org 70 i- Err z3bra.org 70 i- # Preparing sources Err z3bra.org 70 i- mkdir -p "${SRCDIR}" "${BLDDIR}" "${PREFIX}" Err z3bra.org 70 i- cd "${SRCDIR}" Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ┏━┓ Err z3bra.org 70 i- # ┃┃┃ Err z3bra.org 70 i- # ┗━┛╹ Err z3bra.org 70 i- # Get all GNU tarballs Err z3bra.org 70 i- grab_sources() { Err z3bra.org 70 i- curl -# "${PCCMIRROR}/pcc-${PCCV}.tgz" | tar xz Err z3bra.org 70 i- curl -# "${PCCMIRROR}/pcc-libs-${PCCV}.tgz" | tar xz Err z3bra.org 70 i- curl -# "${GNUMIRROR}/binutils/binutils-${BINV}.tar.gz" | tar xz Err z3bra.org 70 i- curl -# "${MUSLMIRROR}/musl-${MUSLV}.tar.gz" | tar xz Err z3bra.org 70 i- curl -# "${LINUXMIRROR}/linux-${KERNV}.tar.xz" | tar xJ Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ╺┓ Err z3bra.org 70 i- # ┃ Err z3bra.org 70 i- # ╺┻╸╹ Err z3bra.org 70 i- # Patch all source trees. Err z3bra.org 70 i- # This will take all patches in $PATCHD matching the programs Err z3bra.org 70 i- patch_sources() { Err z3bra.org 70 i- for DIR in $(find "${SRCDIR}" -maxdepth 1 -type d); do Err z3bra.org 70 i- cd "${DIR}" Err z3bra.org 70 i- cat "${PATCHD}/$(basename ${DIR})"-*.diff | patch -Np1 Err z3bra.org 70 i- done Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ┏━┓ Err z3bra.org 70 i- # ┏━┛ Err z3bra.org 70 i- # ┗━╸╹ Err z3bra.org 70 i- # Get linux headers Err z3bra.org 70 i- install_headers() { Err z3bra.org 70 i- cd "${SRCDIR}/linux-${KERNV}" Err z3bra.org 70 i- make ARCH=${MARCH} headers_check Err z3bra.org 70 i- make ARCH=${MARCH} INSTALL_HDR_PATH=${PREFIX}/${TRIPLE} headers_install Err z3bra.org 70 i- rm -r "${SRCDIR}/linux-${KERNV}" Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ┏━┓ Err z3bra.org 70 i- # ╺━┫ Err z3bra.org 70 i- # ┗━┛╹ Err z3bra.org 70 i- # Build binutils and install them to ${PREFIX} Err z3bra.org 70 i- install_binutils() { Err z3bra.org 70 i- mkdir -p "${BLDDIR}/binutils" Err z3bra.org 70 i- cd "${BLDDIR}/binutils" Err z3bra.org 70 i- ${SRCDIR}/binutils-${BINV}/configure --target=${TRIPLE} \ Err z3bra.org 70 i- --prefix=${PREFIX} \ Err z3bra.org 70 i- --with-sysroot=${PREFIX}/${TRIPLE} \ Err z3bra.org 70 i- --disable-nls \ Err z3bra.org 70 i- --disable-shared \ Err z3bra.org 70 i- --disable-multilib Err z3bra.org 70 i- make configure-host Err z3bra.org 70 i- make LDFLAGS="${LDFLAGS} -all-static -static" Err z3bra.org 70 i- make install Err z3bra.org 70 i- rm -rf "${BLDDIR}/binutils" Err z3bra.org 70 i- rm -rf "${SRCDIR}/binutils-${BINV}" Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ╻ ╻ Err z3bra.org 70 i- # ┗━┫ Err z3bra.org 70 i- # ╹╹ Err z3bra.org 70 i- # Build the musl libc Err z3bra.org 70 i- install_musl() { Err z3bra.org 70 i- cd "${SRCDIR}/musl-${MUSLV}" Err z3bra.org 70 i- ./configure --prefix=${PREFIX}/${TRIPLE} \ Err z3bra.org 70 i- --target=${TRIPLE} \ Err z3bra.org 70 i- --disable-gcc-wrapper \ Err z3bra.org 70 i- --disable-debug \ Err z3bra.org 70 i- --disable-shared \ Err z3bra.org 70 i- --disable-warning Err z3bra.org 70 i- make LDFLAGS="${LDFLAGS}" Err z3bra.org 70 i- make install Err z3bra.org 70 i- rm -rf "${SRCDIR}/musl-${MUSLV}" Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ┏━╸ Err z3bra.org 70 i- # ┗━┓ Err z3bra.org 70 i- # ┗━┛╹ Err z3bra.org 70 i- # Build pcc linked against musl Err z3bra.org 70 i- install_pcc() { Err z3bra.org 70 i- mkdir -p "${BLDDIR}/pcc" Err z3bra.org 70 i- mkdir -p "${BLDDIR}/pcc-libs" Err z3bra.org 70 i- cd "${BLDDIR}/pcc" Err z3bra.org 70 i- ${SRCDIR}/pcc-${PCCV}/configure --target=${TRIPLE} \ Err z3bra.org 70 i- --with-libdir=${PREFIX}/${TRIPLE}/lib \ Err z3bra.org 70 i- --with-incdir=${PREFIX}/${TRIPLE}/include \ Err z3bra.org 70 i- --prefix=${PREFIX} Err z3bra.org 70 i- Err z3bra.org 70 i- make LDFLAGS="${LDFLAGS} -static" \ Err z3bra.org 70 i- PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i- PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include Err z3bra.org 70 i- make PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i- PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include \ Err z3bra.org 70 i- install Err z3bra.org 70 i- rm -rf "${BLDDIR}/pcc" Err z3bra.org 70 i- rm -rf "${SRCDIR}/pcc-${PCCV}" Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ┏━┓ Err z3bra.org 70 i- # ┣━┓ Err z3bra.org 70 i- # ┗━┛╹ Err z3bra.org 70 i- # Build pcc libraries against musl Err z3bra.org 70 i- install_pcc_libs() { Err z3bra.org 70 i- cd "${BLDDIR}/pcc-libs" Err z3bra.org 70 i- ${SRCDIR}/pcc-libs-${PCCV}/configure --target=${TRIPLE} \ Err z3bra.org 70 i- --prefix=${PREFIX} Err z3bra.org 70 i- Err z3bra.org 70 i- make PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i- PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include Err z3bra.org 70 i- make PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i- PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include \ Err z3bra.org 70 i- install Err z3bra.org 70 i- rm -rf "${BLDDIR}/pcc-libs" Err z3bra.org 70 i- rm -rf "${SRCDIR}/pcc-libs-${PCCV}" Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- # Err z3bra.org 70 i- # ┏━┓ Err z3bra.org 70 i- # ┃ Err z3bra.org 70 i- # ╹╹ Err z3bra.org 70 i- # Add pkg-config wrapper Err z3bra.org 70 i- install_pkgconfig() { Err z3bra.org 70 i- cat << EOF > "${PREFIX}/bin/${TRIPLE}-pkg-config" Err z3bra.org 70 i- #!/bin/sh Err z3bra.org 70 i- export PKG_CONFIG_SYSROOT_DIR=${PREFIX}/${TRIPLE} Err z3bra.org 70 i- export PKG_CONFIG_LIBDIR=${PREFIX}/${TRIPLE}/usr/lib/pkgconfig Err z3bra.org 70 i- export PKG_CONFIG_PATH=\$PKG_CONFIG_LIBDIR Err z3bra.org 70 i- Err z3bra.org 70 i- exec pkg-config --static "\$@" Err z3bra.org 70 i- EOF Err z3bra.org 70 i- chmod 755 "${PREFIX}/bin/${TRIPLE}-pkg-config" Err z3bra.org 70 i- } Err z3bra.org 70 i- Err z3bra.org 70 i- grab_sources Err z3bra.org 70 i- patch_sources Err z3bra.org 70 i- install_headers Err z3bra.org 70 i- install_binutils Err z3bra.org 70 i- install_musl Err z3bra.org 70 i- install_pcc Err z3bra.org 70 i- install_pcc_libs Err z3bra.org 70 i- install_pkgconfig Err z3bra.org 70 i- Err z3bra.org 70 i- # clean environment Err z3bra.org 70 i- rm -rf "${SRCDIR}" Err z3bra.org 70 i- rm -rf "${BLDDIR}" Err z3bra.org 70 i- rm -rf "${PREFIX}/share" Err z3bra.org 70 i- rm -f "${PREFIX}/lib/libiberty.a" Err z3bra.org 70 i- Err z3bra.org 70 i- cat << EOF | tee ${PREFIX}/README Err z3bra.org 70 i- TRIPLET : $TRIPLE Err z3bra.org 70 i- PREFIX : $PREFIX Err z3bra.org 70 i- PCC : $PCCV Err z3bra.org 70 i- BINUTILS: $BINV Err z3bra.org 70 i- MUSL : $MUSLV Err z3bra.org 70 i- KERNEL : $KERNV Err z3bra.org 70 i- EOF Err z3bra.org 70 i- Err z3bra.org 70 i The process is (in theory) pretty simple: Err z3bra.org 70 i Err z3bra.org 70 i 0. download and extract sources Err z3bra.org 70 it@@ -262,87 +53,9 @@ with an alternative libc. It *seems* to be fixed in 1.2.0 (DEVEL version), if Err z3bra.org 70 i you're interrested. They fix the `configure` script to accept musl based Err z3bra.org 70 i targets, and fix the default library pass of the compiler. Err z3bra.org 70 i Err z3bra.org 70 i-pcc-1.1.0-musl.diff Err z3bra.org 70 i- Err z3bra.org 70 i- diff -urN a/config.sub b/config.sub Err z3bra.org 70 i- --- a/config.sub 2015-08-11 21:55:34.497619099 +0200 Err z3bra.org 70 i- +++ b/config.sub 2015-08-11 21:56:21.652621262 +0200 Err z3bra.org 70 i- @@ -120,7 +120,7 @@ Err z3bra.org 70 i- # Here we must recognize all the valid KERNEL-OS combinations. Err z3bra.org 70 i- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` Err z3bra.org 70 i- case $maybe_os in Err z3bra.org 70 i- - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i- + nto-qnx* | linux-gnu* | linux-dietlibc | linux-musl | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ Err z3bra.org 70 i- storm-chaos* | os2-emx* | rtmk-nova*) Err z3bra.org 70 i- os=-$maybe_os Err z3bra.org 70 i- @@ -1289,6 +1289,9 @@ Err z3bra.org 70 i- -linux-dietlibc) Err z3bra.org 70 i- os=-linux-dietlibc Err z3bra.org 70 i- ;; Err z3bra.org 70 i- + -linux-musl) Err z3bra.org 70 i- + os=-linux-musl Err z3bra.org 70 i- + ;; Err z3bra.org 70 i- -linux*) Err z3bra.org 70 i- os=`echo $os | sed -e 's|linux|linux-gnu|'` Err z3bra.org 70 i- ;; Err z3bra.org 70 i- Err z3bra.org 70 i-pcc-libs-1.1.0-musl.diff Err z3bra.org 70 i- diff -urN a/config.sub b/config.sub Err z3bra.org 70 i- --- a/config.sub 2015-08-11 21:55:34.497619099 +0200 Err z3bra.org 70 i- +++ b/config.sub 2015-08-11 21:56:21.652621262 +0200 Err z3bra.org 70 i- @@ -120,7 +120,7 @@ Err z3bra.org 70 i- # Here we must recognize all the valid KERNEL-OS combinations. Err z3bra.org 70 i- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` Err z3bra.org 70 i- case $maybe_os in Err z3bra.org 70 i- - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i- + nto-qnx* | linux-gnu* | linux-dietlibc | linux-musl | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i- uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ Err z3bra.org 70 i- storm-chaos* | os2-emx* | rtmk-nova*) Err z3bra.org 70 i- os=-$maybe_os Err z3bra.org 70 i- @@ -1289,6 +1289,9 @@ Err z3bra.org 70 i- -linux-dietlibc) Err z3bra.org 70 i- os=-linux-dietlibc Err z3bra.org 70 i- ;; Err z3bra.org 70 i- + -linux-musl) Err z3bra.org 70 i- + os=-linux-musl Err z3bra.org 70 i- + ;; Err z3bra.org 70 i- -linux*) Err z3bra.org 70 i- os=`echo $os | sed -e 's|linux|linux-gnu|'` Err z3bra.org 70 i- ;; Err z3bra.org 70 i- Err z3bra.org 70 i-pcc-1.1.0-deflibdirs.diff Err z3bra.org 70 i- Err z3bra.org 70 i- diff -urN a/cc/cc/cc.c b/cc/cc/cc.c Err z3bra.org 70 i- --- a/cc/cc/cc.c 2015-08-16 16:00:18.867457413 +0200 Err z3bra.org 70 i- +++ b/cc/cc/cc.c 2015-08-16 16:03:28.963466133 +0200 Err z3bra.org 70 i- @@ -207,9 +207,9 @@ Err z3bra.org 70 i- #endif Err z3bra.org 70 i- #ifndef DEFLIBDIRS /* default library search paths */ Err z3bra.org 70 i- #ifdef MULTIARCH_PATH Err z3bra.org 70 i- -#define DEFLIBDIRS { "/usr/lib/", 0 } Err z3bra.org 70 i- +#define DEFLIBDIRS { LIBDIR, 0 } Err z3bra.org 70 i- #else Err z3bra.org 70 i- -#define DEFLIBDIRS { "/usr/lib/", "/usr/lib/" MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i- +#define DEFLIBDIRS { LIBDIR, LIBDIR MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i- #endif Err z3bra.org 70 i- #endif Err z3bra.org 70 i- #ifndef DEFLIBS /* default libraries included */ Err z3bra.org 70 i- diff -urN a/os/linux/ccconfig.h b/os/linux/ccconfig.h Err z3bra.org 70 i- --- a/os/linux/ccconfig.h 2015-08-16 16:00:18.873457413 +0200 Err z3bra.org 70 i- +++ b/os/linux/ccconfig.h 2015-08-16 16:05:23.446471384 +0200 Err z3bra.org 70 i- @@ -48,9 +48,9 @@ Err z3bra.org 70 i- "-D__amd64", "-D__LP64__", "-D_LP64", NULL, } Err z3bra.org 70 i- #define DYNLINKER { "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", NULL } Err z3bra.org 70 i- #ifndef MULTIARCH_PATH Err z3bra.org 70 i- -#define DEFLIBDIRS { "/usr/lib64/", 0 } Err z3bra.org 70 i- +#define DEFLIBDIRS { LIBDIR, 0 } Err z3bra.org 70 i- #else Err z3bra.org 70 i- -#define DEFLIBDIRS { "/usr/lib64/", "/usr/lib/" MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i- +#define DEFLIBDIRS { LIBDIR, LIBDIR MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i- #endif Err z3bra.org 70 i- #elif defined(mach_mips) Err z3bra.org 70 i- #define CPPMDADD { "-D__mips__", NULL, } Err z3bra.org 70 i++ [pcc-1.1.0-musl.diff](/data/pcc-1.1.0-musl.diff) Err z3bra.org 70 i++ [pcc-libs-1.1.0-musl.diff](/data/pcc-libs-1.1.0-musl.diff) Err z3bra.org 70 i++ [pcc-1.1.0-deflibdirs.diff](/data/pcc-1.1.0-deflibdirs.diff) Err z3bra.org 70 i Err z3bra.org 70 i ### 3,4,5,6. build everything Err z3bra.org 70 i Err z3bra.org 70 it@@ -376,5 +89,4 @@ chroot (so there are only the libressl files): Err z3bra.org 70 i Err z3bra.org 70 i Looks like we have a winner! Err z3bra.org 70 i Err z3bra.org 70 i- Err z3bra.org 70 i Err z3bra.org 70 1diff --git a/css/monochrome.css b/css/monochrome.css /scm/monochromatic/file/css/monochrome.css.gph z3bra.org 70 it@@ -89,7 +89,7 @@ code, pre { Err z3bra.org 70 i color: inherit; Err z3bra.org 70 i font-family: monospace; Err z3bra.org 70 i font-size: 90%; Err z3bra.org 70 i- padding: 4px; Err z3bra.org 70 i+ padding: 2px; Err z3bra.org 70 i background-color: #eee; Err z3bra.org 70 i border: 1px solid #bbb; Err z3bra.org 70 i border-radius: 4px; Err z3bra.org 70 1diff --git a/data/cross-pcc.sh b/data/cross-pcc.sh /scm/monochromatic/file/data/cross-pcc.sh.gph z3bra.org 70 it@@ -0,0 +1,210 @@ Err z3bra.org 70 i+#!/bin/sh -ex Err z3bra.org 70 i+# Err z3bra.org 70 i+# Couple of useful links: Err z3bra.org 70 i+# + http://pcc.ludd.ltu.se/cross-compiler/ Err z3bra.org 70 i+# + http://wiki.osdev.org/Cross-Compiler_Successful_Builds Err z3bra.org 70 i+# + https://git.framasoft.org/Ypnose/solyste/blob/master/scripts/create-crossenv Err z3bra.org 70 i+# + http://kegel.com/crosstool/ Err z3bra.org 70 i+# + https://github.com/GregorR/musl-cross/tree/master/patches Err z3bra.org 70 i+# Err z3bra.org 70 i+# 0. download and extract sources Err z3bra.org 70 i+# 1. patch everything that require patching Err z3bra.org 70 i+# 2. install linux headers Err z3bra.org 70 i+# 3. build binutils Err z3bra.org 70 i+# 4. build musl Err z3bra.org 70 i+# 5. build pcc with gcc Err z3bra.org 70 i+# 6. add pkg-config wrapper Err z3bra.org 70 i+ Err z3bra.org 70 i+# cross compiler environment Err z3bra.org 70 i+MARCH=$(uname -m) Err z3bra.org 70 i+TRIPLE=${TRIPLE:-${MARCH}-linux-musl} Err z3bra.org 70 i+PREFIX=${PREFIX:-${HOME}/cross/pcc-${MARCH}} Err z3bra.org 70 i+BLDDIR=${BLDDIR:-${HOME}/cross/build} Err z3bra.org 70 i+SRCDIR=${SRCDIR:-${HOME}/cross/source} Err z3bra.org 70 i+PATCHD=${PATCHD:-${HOME}/cross/patches} Err z3bra.org 70 i+ Err z3bra.org 70 i+# compilation variables Err z3bra.org 70 i+PATH="${PREFIX}/bin:${PATH}" Err z3bra.org 70 i+CFLAGS="-Os -fomit-frame-pointer -pipe" Err z3bra.org 70 i+CXXFLAGS="${CFLAGS}" Err z3bra.org 70 i+CPPFLAGS="${CFLAGS}" Err z3bra.org 70 i+LDFLAGS="-Wl,--as-needed" Err z3bra.org 70 i+MAKEFLAGS="-j8" Err z3bra.org 70 i+ Err z3bra.org 70 i+# versions Err z3bra.org 70 i+PCCV=${PCCV:-1.1.0} Err z3bra.org 70 i+BINV=${BINV:-2.25} Err z3bra.org 70 i+MUSLV=${MUSLV:-1.1.10} Err z3bra.org 70 i+KERNV=${KERNV:-4.1.4} Err z3bra.org 70 i+ Err z3bra.org 70 i+ Err z3bra.org 70 i+# source mirrors Err z3bra.org 70 i+PCCMIRROR=ftp://pcc.ludd.ltu.se/pub/pcc-releases Err z3bra.org 70 i+GNUMIRROR=ftp://ftp.gnu.org/gnu Err z3bra.org 70 i+MUSLMIRROR=http://www.musl-libc.org/releases Err z3bra.org 70 i+LINUXMIRROR=https://www.kernel.org/pub/linux/kernel/v4.x Err z3bra.org 70 i+ Err z3bra.org 70 i+# Preparing sources Err z3bra.org 70 i+mkdir -p "${SRCDIR}" "${BLDDIR}" "${PREFIX}" Err z3bra.org 70 i+cd "${SRCDIR}" Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ┏━┓ Err z3bra.org 70 i+# ┃┃┃ Err z3bra.org 70 i+# ┗━┛╹ Err z3bra.org 70 i+# Get all GNU tarballs Err z3bra.org 70 i+grab_sources() { Err z3bra.org 70 i+curl -# "${PCCMIRROR}/pcc-${PCCV}.tgz" | tar xz Err z3bra.org 70 i+curl -# "${PCCMIRROR}/pcc-libs-${PCCV}.tgz" | tar xz Err z3bra.org 70 i+curl -# "${GNUMIRROR}/binutils/binutils-${BINV}.tar.gz" | tar xz Err z3bra.org 70 i+curl -# "${MUSLMIRROR}/musl-${MUSLV}.tar.gz" | tar xz Err z3bra.org 70 i+curl -# "${LINUXMIRROR}/linux-${KERNV}.tar.xz" | tar xJ Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ╺┓ Err z3bra.org 70 i+# ┃ Err z3bra.org 70 i+# ╺┻╸╹ Err z3bra.org 70 i+# Patch all source trees. Err z3bra.org 70 i+# This will take all patches in $PATCHD matching the programs Err z3bra.org 70 i+patch_sources() { Err z3bra.org 70 i+for DIR in $(find "${SRCDIR}" -maxdepth 1 -type d); do Err z3bra.org 70 i+ cd "${DIR}" Err z3bra.org 70 i+ cat "${PATCHD}/$(basename ${DIR})"-*.diff | patch -Np1 Err z3bra.org 70 i+done Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ┏━┓ Err z3bra.org 70 i+# ┏━┛ Err z3bra.org 70 i+# ┗━╸╹ Err z3bra.org 70 i+# Get linux headers Err z3bra.org 70 i+install_headers() { Err z3bra.org 70 i+cd "${SRCDIR}/linux-${KERNV}" Err z3bra.org 70 i+make ARCH=${MARCH} headers_check Err z3bra.org 70 i+make ARCH=${MARCH} INSTALL_HDR_PATH=${PREFIX}/${TRIPLE} headers_install Err z3bra.org 70 i+rm -r "${SRCDIR}/linux-${KERNV}" Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ┏━┓ Err z3bra.org 70 i+# ╺━┫ Err z3bra.org 70 i+# ┗━┛╹ Err z3bra.org 70 i+# Build binutils and install them to ${PREFIX} Err z3bra.org 70 i+install_binutils() { Err z3bra.org 70 i+mkdir -p "${BLDDIR}/binutils" Err z3bra.org 70 i+cd "${BLDDIR}/binutils" Err z3bra.org 70 i+${SRCDIR}/binutils-${BINV}/configure --target=${TRIPLE} \ Err z3bra.org 70 i+ --prefix=${PREFIX} \ Err z3bra.org 70 i+ --with-sysroot=${PREFIX}/${TRIPLE} \ Err z3bra.org 70 i+ --disable-nls \ Err z3bra.org 70 i+ --disable-shared \ Err z3bra.org 70 i+ --disable-multilib Err z3bra.org 70 i+make configure-host Err z3bra.org 70 i+make LDFLAGS="${LDFLAGS} -all-static -static" Err z3bra.org 70 i+make install Err z3bra.org 70 i+rm -rf "${BLDDIR}/binutils" Err z3bra.org 70 i+rm -rf "${SRCDIR}/binutils-${BINV}" Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ╻ ╻ Err z3bra.org 70 i+# ┗━┫ Err z3bra.org 70 i+# ╹╹ Err z3bra.org 70 i+# Build the musl libc Err z3bra.org 70 i+install_musl() { Err z3bra.org 70 i+cd "${SRCDIR}/musl-${MUSLV}" Err z3bra.org 70 i+./configure --prefix=${PREFIX}/${TRIPLE} \ Err z3bra.org 70 i+ --target=${TRIPLE} \ Err z3bra.org 70 i+ --disable-gcc-wrapper \ Err z3bra.org 70 i+ --disable-debug \ Err z3bra.org 70 i+ --disable-shared \ Err z3bra.org 70 i+ --disable-warning Err z3bra.org 70 i+make LDFLAGS="${LDFLAGS}" Err z3bra.org 70 i+make install Err z3bra.org 70 i+rm -rf "${SRCDIR}/musl-${MUSLV}" Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ┏━╸ Err z3bra.org 70 i+# ┗━┓ Err z3bra.org 70 i+# ┗━┛╹ Err z3bra.org 70 i+# Build pcc linked against musl Err z3bra.org 70 i+install_pcc() { Err z3bra.org 70 i+mkdir -p "${BLDDIR}/pcc" Err z3bra.org 70 i+mkdir -p "${BLDDIR}/pcc-libs" Err z3bra.org 70 i+cd "${BLDDIR}/pcc" Err z3bra.org 70 i+${SRCDIR}/pcc-${PCCV}/configure --target=${TRIPLE} \ Err z3bra.org 70 i+ --with-libdir=${PREFIX}/${TRIPLE}/lib \ Err z3bra.org 70 i+ --with-incdir=${PREFIX}/${TRIPLE}/include \ Err z3bra.org 70 i+ --prefix=${PREFIX} Err z3bra.org 70 i+ Err z3bra.org 70 i+make LDFLAGS="${LDFLAGS} -static" \ Err z3bra.org 70 i+ PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i+ PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include Err z3bra.org 70 i+make PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i+ PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include \ Err z3bra.org 70 i+ install Err z3bra.org 70 i+rm -rf "${BLDDIR}/pcc" Err z3bra.org 70 i+rm -rf "${SRCDIR}/pcc-${PCCV}" Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ┏━┓ Err z3bra.org 70 i+# ┣━┓ Err z3bra.org 70 i+# ┗━┛╹ Err z3bra.org 70 i+# Build pcc libraries against musl Err z3bra.org 70 i+install_pcc_libs() { Err z3bra.org 70 i+cd "${BLDDIR}/pcc-libs" Err z3bra.org 70 i+${SRCDIR}/pcc-libs-${PCCV}/configure --target=${TRIPLE} \ Err z3bra.org 70 i+ --prefix=${PREFIX} Err z3bra.org 70 i+ Err z3bra.org 70 i+make PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i+ PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include Err z3bra.org 70 i+make PCCLIBDIR=${PREFIX}/${TRIPLE}/pcc/lib \ Err z3bra.org 70 i+ PCCINCDIR=${PREFIX}/${TRIPLE}/pcc/include \ Err z3bra.org 70 i+ install Err z3bra.org 70 i+rm -rf "${BLDDIR}/pcc-libs" Err z3bra.org 70 i+rm -rf "${SRCDIR}/pcc-libs-${PCCV}" Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+# Err z3bra.org 70 i+# ┏━┓ Err z3bra.org 70 i+# ┃ Err z3bra.org 70 i+# ╹╹ Err z3bra.org 70 i+# Add pkg-config wrapper Err z3bra.org 70 i+install_pkgconfig() { Err z3bra.org 70 i+cat << EOF > "${PREFIX}/bin/${TRIPLE}-pkg-config" Err z3bra.org 70 i+#!/bin/sh Err z3bra.org 70 i+export PKG_CONFIG_SYSROOT_DIR=${PREFIX}/${TRIPLE} Err z3bra.org 70 i+export PKG_CONFIG_LIBDIR=${PREFIX}/${TRIPLE}/usr/lib/pkgconfig Err z3bra.org 70 i+export PKG_CONFIG_PATH=\$PKG_CONFIG_LIBDIR Err z3bra.org 70 i+ Err z3bra.org 70 i+exec pkg-config --static "\$@" Err z3bra.org 70 i+EOF Err z3bra.org 70 i+chmod 755 "${PREFIX}/bin/${TRIPLE}-pkg-config" Err z3bra.org 70 i+} Err z3bra.org 70 i+ Err z3bra.org 70 i+grab_sources Err z3bra.org 70 i+patch_sources Err z3bra.org 70 i+install_headers Err z3bra.org 70 i+install_binutils Err z3bra.org 70 i+install_musl Err z3bra.org 70 i+install_pcc Err z3bra.org 70 i+install_pcc_libs Err z3bra.org 70 i+install_pkgconfig Err z3bra.org 70 i+ Err z3bra.org 70 i+# clean environment Err z3bra.org 70 i+rm -rf "${SRCDIR}" Err z3bra.org 70 i+rm -rf "${BLDDIR}" Err z3bra.org 70 i+rm -rf "${PREFIX}/share" Err z3bra.org 70 i+rm -f "${PREFIX}/lib/libiberty.a" Err z3bra.org 70 i+ Err z3bra.org 70 i+cat << EOF | tee ${PREFIX}/README Err z3bra.org 70 i+TRIPLET : $TRIPLE Err z3bra.org 70 i+PREFIX : $PREFIX Err z3bra.org 70 i+PCC : $PCCV Err z3bra.org 70 i+BINUTILS: $BINV Err z3bra.org 70 i+MUSL : $MUSLV Err z3bra.org 70 i+KERNEL : $KERNV Err z3bra.org 70 i+EOF Err z3bra.org 70 1diff --git a/data/pcc-1.1.0-deflibdirs.diff b/data/pcc-1.1.0-deflibdirs.diff /scm/monochromatic/file/data/pcc-1.1.0-deflibdirs.diff.gph z3bra.org 70 it@@ -0,0 +1,30 @@ Err z3bra.org 70 i+diff -urN a/cc/cc/cc.c b/cc/cc/cc.c Err z3bra.org 70 i+--- a/cc/cc/cc.c 2015-08-16 16:00:18.867457413 +0200 Err z3bra.org 70 i++++ b/cc/cc/cc.c 2015-08-16 16:03:28.963466133 +0200 Err z3bra.org 70 i+@@ -207,9 +207,9 @@ Err z3bra.org 70 i+ #endif Err z3bra.org 70 i+ #ifndef DEFLIBDIRS /* default library search paths */ Err z3bra.org 70 i+ #ifdef MULTIARCH_PATH Err z3bra.org 70 i+-#define DEFLIBDIRS { "/usr/lib/", 0 } Err z3bra.org 70 i++#define DEFLIBDIRS { LIBDIR, 0 } Err z3bra.org 70 i+ #else Err z3bra.org 70 i+-#define DEFLIBDIRS { "/usr/lib/", "/usr/lib/" MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i++#define DEFLIBDIRS { LIBDIR, LIBDIR MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i+ #endif Err z3bra.org 70 i+ #endif Err z3bra.org 70 i+ #ifndef DEFLIBS /* default libraries included */ Err z3bra.org 70 i+diff -urN a/os/linux/ccconfig.h b/os/linux/ccconfig.h Err z3bra.org 70 i+--- a/os/linux/ccconfig.h 2015-08-16 16:00:18.873457413 +0200 Err z3bra.org 70 i++++ b/os/linux/ccconfig.h 2015-08-16 16:05:23.446471384 +0200 Err z3bra.org 70 i+@@ -48,9 +48,9 @@ Err z3bra.org 70 i+ "-D__amd64", "-D__LP64__", "-D_LP64", NULL, } Err z3bra.org 70 i+ #define DYNLINKER { "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", NULL } Err z3bra.org 70 i+ #ifndef MULTIARCH_PATH Err z3bra.org 70 i+-#define DEFLIBDIRS { "/usr/lib64/", 0 } Err z3bra.org 70 i++#define DEFLIBDIRS { LIBDIR, 0 } Err z3bra.org 70 i+ #else Err z3bra.org 70 i+-#define DEFLIBDIRS { "/usr/lib64/", "/usr/lib/" MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i++#define DEFLIBDIRS { LIBDIR, LIBDIR MULTIARCH_PATH "/", 0 } Err z3bra.org 70 i+ #endif Err z3bra.org 70 i+ #elif defined(mach_mips) Err z3bra.org 70 i+ #define CPPMDADD { "-D__mips__", NULL, } Err z3bra.org 70 1diff --git a/data/pcc-1.1.0-musl.diff b/data/pcc-1.1.0-musl.diff /scm/monochromatic/file/data/pcc-1.1.0-musl.diff.gph z3bra.org 70 it@@ -0,0 +1,21 @@ Err z3bra.org 70 i+diff -urN a/config.sub b/config.sub Err z3bra.org 70 i+--- a/config.sub 2015-08-11 21:55:34.497619099 +0200 Err z3bra.org 70 i++++ b/config.sub 2015-08-11 21:56:21.652621262 +0200 Err z3bra.org 70 i+@@ -120,7 +120,7 @@ Err z3bra.org 70 i+# Here we must recognize all the valid KERNEL-OS combinations. Err z3bra.org 70 i+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` Err z3bra.org 70 i+case $maybe_os in Err z3bra.org 70 i+- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-musl | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i+uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ Err z3bra.org 70 i+storm-chaos* | os2-emx* | rtmk-nova*) Err z3bra.org 70 i+os=-$maybe_os Err z3bra.org 70 i+@@ -1289,6 +1289,9 @@ Err z3bra.org 70 i+-linux-dietlibc) Err z3bra.org 70 i+os=-linux-dietlibc Err z3bra.org 70 i+;; Err z3bra.org 70 i++ -linux-musl) Err z3bra.org 70 i++ os=-linux-musl Err z3bra.org 70 i++ ;; Err z3bra.org 70 i+-linux*) Err z3bra.org 70 i+os=`echo $os | sed -e 's|linux|linux-gnu|'` Err z3bra.org 70 1diff --git a/data/pcc-libs-1.1.0-musl.diff b/data/pcc-libs-1.1.0-musl.diff /scm/monochromatic/file/data/pcc-libs-1.1.0-musl.diff.gph z3bra.org 70 it@@ -0,0 +1,22 @@ Err z3bra.org 70 i+diff -urN a/config.sub b/config.sub Err z3bra.org 70 i+--- a/config.sub 2015-08-11 21:55:34.497619099 +0200 Err z3bra.org 70 i++++ b/config.sub 2015-08-11 21:56:21.652621262 +0200 Err z3bra.org 70 i+@@ -120,7 +120,7 @@ Err z3bra.org 70 i+ # Here we must recognize all the valid KERNEL-OS combinations. Err z3bra.org 70 i+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` Err z3bra.org 70 i+ case $maybe_os in Err z3bra.org 70 i+- nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-musl | linux-newlib* | linux-uclibc* | \ Err z3bra.org 70 i+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ Err z3bra.org 70 i+ storm-chaos* | os2-emx* | rtmk-nova*) Err z3bra.org 70 i+ os=-$maybe_os Err z3bra.org 70 i+@@ -1289,6 +1289,9 @@ Err z3bra.org 70 i+ -linux-dietlibc) Err z3bra.org 70 i+ os=-linux-dietlibc Err z3bra.org 70 i+ ;; Err z3bra.org 70 i++ -linux-musl) Err z3bra.org 70 i++ os=-linux-musl Err z3bra.org 70 i++ ;; Err z3bra.org 70 i+ -linux*) Err z3bra.org 70 i+ os=`echo $os | sed -e 's|linux|linux-gnu|'` Err z3bra.org 70 i+ ;; Err z3bra.org 70 .