diff options
Diffstat (limited to 'src/compilers/gcc-13-musl.TARGETS')
-rw-r--r-- | src/compilers/gcc-13-musl.TARGETS | 174 |
1 files changed, 129 insertions, 45 deletions
diff --git a/src/compilers/gcc-13-musl.TARGETS b/src/compilers/gcc-13-musl.TARGETS index 12bd1d4..7d564e7 100644 --- a/src/compilers/gcc-13-musl.TARGETS +++ b/src/compilers/gcc-13-musl.TARGETS @@ -13,19 +13,47 @@ } , "toolchain_internal": { "type": "configure" - , "arguments_config": ["ARCH", "BUILD_ARCH"] + , "arguments_config": ["ARCH", "TARGET_ARCH", "BUILD_ARCH"] , "config": - { "type": "singleton_map" - , "key": "BUILD_ARCH" - , "value": - { "type": "var" - , "name": "BUILD_ARCH" - , "default": - { "type": "var" - , "name": "ARCH" - , "default": - {"type": "fail", "msg": "ARCH is required for cross-compiler."} - } + { "type": "let*" + , "bindings": + [ [ "ARCH" + , { "type": "var" + , "name": "ARCH" + , "default": + {"type": "fail", "msg": "ARCH is required for cross-compiler."} + } + ] + , [ "TARGET_ARCH" + , { "type": "var" + , "name": "TARGET_ARCH" + , "default": {"type": "var", "name": "ARCH"} + } + ] + , [ "BUILD_ARCH" + , { "type": "var" + , "name": "BUILD_ARCH" + , "default": {"type": "var", "name": "ARCH"} + } + ] + , [ "MUSL_BUILD_CROSSED_NATIVE" + , { "type": "case*" + , "expr": {"type": "var", "name": "TARGET_ARCH"} + , "case": + [ [{"type": "var", "name": "ARCH"}, false] + , [{"type": "var", "name": "BUILD_ARCH"}, true] + ] + , "default": + { "type": "fail" + , "msg": + ["crossback and canadian builds are currently unsupported."] + } + } + ] + ] + , "body": + { "type": "env" + , "vars": ["TARGET_ARCH", "BUILD_ARCH", "MUSL_BUILD_CROSSED_NATIVE"] } } , "target": "toolchain_cross" @@ -47,6 +75,26 @@ } , "target": "toolchain_internal" } +, "toolchain_for_target": + { "type": "configure" + , "arguments_config": ["ARCH", "TARGET_ARCH"] + , "config": + { "type": "let*" + , "bindings": + [ ["BUILD_ARCH", {"type": "var", "name": "TARGET_ARCH"}] + , ["TARGET_ARCH", {"type": "var", "name": "ARCH"}] + ] + , "body": {"type": "env", "vars": ["TARGET_ARCH", "BUILD_ARCH"]} + } + , "target": "toolchain_internal" + } +, "toolchain_non_static_for_target": + { "type": "configure" + , "arguments_config": ["ARCH", "TARGET_ARCH"] + , "config": + {"type": "singleton_map", "key": "MUSL_BUILD_STATIC", "value": false} + , "target": "toolchain_for_target" + } , "toolchain_cross": { "type": "export" , "flexible_config": @@ -56,6 +104,7 @@ , "TOOLCHAIN_CONFIG" , "ENV" , "MUSL_BUILD_STATIC" + , "MUSL_BUILD_CROSSED_NATIVE" ] , "target": "gcc-musl" } @@ -99,7 +148,7 @@ } , "gcc-musl_localbase": { "type": "install" - , "arguments_config": ["MUSL_BUILD_STATIC"] + , "arguments_config": ["MUSL_BUILD_STATIC", "MUSL_BUILD_CROSSED_NATIVE"] , "dirs": { "type": "++" , "$1": @@ -108,6 +157,10 @@ , "cond": {"type": "var", "name": "MUSL_BUILD_STATIC"} , "then": [["toolchain_non_static_for_host", "hostcc"]] } + , { "type": "if" + , "cond": {"type": "var", "name": "MUSL_BUILD_CROSSED_NATIVE"} + , "then": [["toolchain_non_static_for_target", "crosscc"]] + } ] } } @@ -115,7 +168,8 @@ { "type": ["@", "rules", "CC/foreign/shell", "data"] , "project": ["combined_patched_sources"] , "localbase": ["gcc-musl_localbase"] - , "arguments_config": ["BUILD_ARCH", "MUSL_BUILD_STATIC"] + , "arguments_config": + ["BUILD_ARCH", "MUSL_BUILD_STATIC", "MUSL_BUILD_CROSSED_NATIVE"] , "cmds": { "type": "let*" , "bindings": @@ -153,19 +207,62 @@ , "GCC_CONFIG='--disable-fixincludes'" ] , { "type": "if" + , "cond": {"type": "var", "name": "MUSL_BUILD_CROSSED_NATIVE"} + , "then": ["CROSS_PREFIX=${LOCALBASE}/crosscc/bin/"] + } + , { "type": "if" , "cond": {"type": "var", "name": "MUSL_BUILD_STATIC"} , "then": - [ "printf '#!/bin/sh\\nexec \"%s\" -static \"$@\"' \"${LOCALBASE}/hostcc/bin/gcc\" >${TMPDIR}/host-gcc" - , "printf '#!/bin/sh\\nexec \"%s\" -static \"$@\"' \"${LOCALBASE}/hostcc/bin/g++\" >${TMPDIR}/host-g++" - , "chmod +x ${TMPDIR}/host-gcc ${TMPDIR}/host-g++" - , "export CC=\"${TMPDIR}/host-gcc\"" - , "export CXX=\"${TMPDIR}/host-g++\"" - , "export LDFLAGS='-static'" - , "export LDFLAGS_FOR_TARGET='-static'" - , "GCC_CONFIG=\"$GCC_CONFIG --disable-shared\"" - ] + { "type": "++" + , "$1": + [ [ "printf '#!/bin/sh\\nexec \"%s\" -static \"$@\"' \"${LOCALBASE}/hostcc/bin/gcc\" >${TMPDIR}/host-gcc" + , "printf '#!/bin/sh\\nexec \"%s\" -static \"$@\"' \"${LOCALBASE}/hostcc/bin/g++\" >${TMPDIR}/host-g++" + , "chmod +x ${TMPDIR}/host-gcc ${TMPDIR}/host-g++" + , "export CC=\"${TMPDIR}/host-gcc\"" + , "export CXX=\"${TMPDIR}/host-g++\"" + , "export LDFLAGS='-static'" + , "export LDFLAGS_FOR_TARGET='-static'" + , "GCC_CONFIG=\"$GCC_CONFIG --disable-shared\"" + ] + , { "type": "if" + , "cond": {"type": "var", "name": "MUSL_BUILD_CROSSED_NATIVE"} + , "then": + [ "printf '#!/bin/sh\\nexec \"%s\" -static \"$@\"' \"${CROSS_PREFIX}gcc\" >${TMPDIR}/cross-gcc" + , "printf '#!/bin/sh\\nexec \"%s\" -static \"$@\"' \"${CROSS_PREFIX}g++\" >${TMPDIR}/cross-g++" + , "ln -s ${LOCALBASE}/crosscc/bin/ar ${TMPDIR}/cross-ar" + , "ln -s ${LOCALBASE}/crosscc/bin/ranlib ${TMPDIR}/cross-ranlib" + , "chmod +x ${TMPDIR}/cross-*" + , "CROSS_PREFIX=${TMPDIR}/cross-" + ] + } + ] + } , "else": ["export LD_LIBRARY_PATH=\"$(dirname ${CC})/../lib64\""] } + , { "type": "if" + , "cond": {"type": "var", "name": "MUSL_BUILD_CROSSED_NATIVE"} + , "then": + [ "# set native toolchain for build host (use ranlib from PATH)" + , "export CC_FOR_BUILD=$CC" + , "export CXX_FOR_BUILD=$CXX" + , "export AR_FOR_BUILD=$AR" + , "# set cross toolchain as default (for musl libc)" + , "export CC=${CROSS_PREFIX}gcc" + , "export CXX=${CROSS_PREFIX}g++" + , "export AR=${CROSS_PREFIX}ar" + , "export RANLIB=${CROSS_PREFIX}ranlib" + , "# explicitly set cross toolchain for target" + , "export CC_FOR_TARGET=${CROSS_PREFIX}gcc" + , "export CXX_FOR_TARGET=${CROSS_PREFIX}g++" + , "export AR_FOR_TARGET=${CROSS_PREFIX}ar" + , "export RANLIB_FOR_TARGET=${CROSS_PREFIX}ranlib" + , "# enable building a native compiler" + , "export NATIVE=true" + , "# force local prefix to sysroot (to find musl libc headers)" + , "GCC_CONFIG=\"$GCC_CONFIG --with-local-prefix=/\"" + , "export gcc_cv_sys_sdt_h=no # musl libc does not have sys/sdt.h" + ] + } , [ "mv musl-latest.orig musl.readonly" , "cp -r musl.readonly musl-latest.orig && chmod -R +w musl-latest.orig" , "export check_msgfmt=no # do not use system's msgfmt, if available" @@ -177,35 +274,22 @@ , "find . -type f -name '*.so*' -exec sh -c \"${STRIP} {} 2>/dev/null\" \\;" , "find . -type f -name '*.a' -exec sh -c \"${STRIP} -g {} 2>/dev/null\" \\;" , "find . -type f -name '*.o' -exec sh -c \"${STRIP} -g {} 2>/dev/null\" \\;" - , "for f in $(ls ./bin/${TARGET}-*); do" - , " ln -s $(basename $f) $(echo $f | sed 's|/'${TARGET}-'|/|g')" - , "done" , "find . -type l -exec sh -c 'expr match \"$(readlink {})\" \"/\" >/dev/null' \\; -delete" ] + , { "type": "if" + , "cond": {"type": "var", "name": "MUSL_BUILD_CROSSED_NATIVE"} + , "then": [] + , "else": + [ "for f in $(ls ./bin/${TARGET}-*); do" + , " ln -s $(basename $f) $(echo $f | sed 's|/'${TARGET}-'|/|g')" + , "done" + ] + } ] } } , "out_dirs": ["."] } -, "toolchain_for_target": - { "type": "configure" - , "arguments_config": ["ARCH", "TARGET_ARCH"] - , "config": - { "type": "singleton_map" - , "key": "BUILD_ARCH" - , "value": - { "type": "var" - , "name": "TARGET_ARCH" - , "default": - { "type": "var" - , "name": "ARCH" - , "default": - {"type": "fail", "msg": "ARCH is required for cross-compiler."} - } - } - } - , "target": "toolchain_internal" - } , "runlibs_internal": { "type": "configure" , "arguments_config": ["MUSL_BUILD_STATIC"] |