summaryrefslogtreecommitdiff
path: root/src/compilers/gcc-13-musl.TARGETS
diff options
context:
space:
mode:
Diffstat (limited to 'src/compilers/gcc-13-musl.TARGETS')
-rw-r--r--src/compilers/gcc-13-musl.TARGETS174
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"]