diff options
Diffstat (limited to 'src/compilers/clang-17-native.TARGETS')
-rw-r--r-- | src/compilers/clang-17-native.TARGETS | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/src/compilers/clang-17-native.TARGETS b/src/compilers/clang-17-native.TARGETS new file mode 100644 index 0000000..64ff374 --- /dev/null +++ b/src/compilers/clang-17-native.TARGETS @@ -0,0 +1,226 @@ +{ "toolchain": + { "type": "configure" + , "arguments_config": ["ARCH", "TARGET_ARCH", "BUILD_ARCH"] + , "config": + { "type": "if" + , "cond": + { "type": "==" + , "$1": + { "type": "var" + , "name": "TARGET_ARCH" + , "default": {"type": "var", "name": "ARCH"} + } + , "$2": + { "type": "var" + , "name": "BUILD_ARCH" + , "default": {"type": "var", "name": "ARCH"} + } + } + , "then": {"type": "empty_map"} + , "else": + { "type": "fail" + , "msg": "clang-native does not support cross-compilation." + } + } + , "target": "toolchain_native" + } +, "toolchain_native": + { "type": "export" + , "flexible_config": ["ARCH", "TARGET_ARCH", "TOOLCHAIN_CONFIG", "ENV"] + , "target": "clang-native" + } +, "runlibs": + { "type": "export" + , "flexible_config": ["ARCH", "TARGET_ARCH", "TOOLCHAIN_CONFIG", "ENV"] + , "target": "libstdc++" + } +, "runlibs_libcxx": + { "type": "export" + , "flexible_config": ["ARCH", "TARGET_ARCH", "TOOLCHAIN_CONFIG", "ENV"] + , "target": "libc++" + } +, "original_sources_and_patches": + { "type": "install" + , "dirs": + [ [["TREE", null, "."], "src"] + , [["@", "patches", "", "clang-17"], "patches"] + ] + } +, "patched_sources": + { "type": ["@", "rules", "CC/foreign/shell", "data"] + , "project": ["original_sources_and_patches"] + , "cmds": + [ "cp -r src/. ${DESTDIR}/." + , "cd ${DESTDIR}" + , "chmod -R +w *" + , "patch -p1 < ${WORKDIR}/patches/clang-17/libcxx-musl-support.patch >/dev/null" + ] + , "out_dirs": ["."] + } +, "clang-native": + { "type": ["@", "rules", "CC/foreign/shell", "data"] + , "arguments_config": ["TOOLCHAIN_CONFIG"] + , "project": ["patched_sources"] + , "localbase": [["@", "binutils", "", "binutils"]] + , "cmds": + [ { "type": "join" + , "$1": + [ "HOST_SYSTEM_HDR_DIR='" + , { "type": "lookup" + , "key": "HOST_SYSTEM_HDR_DIR" + , "map": + { "type": "var" + , "name": "TOOLCHAIN_CONFIG" + , "default": {"type": "empty_map"} + } + , "default": "" + } + , "'" + ] + } + , { "type": "join" + , "$1": + [ "HOST_SYSTEM_LIB_DIR='" + , { "type": "lookup" + , "key": "HOST_SYSTEM_LIB_DIR" + , "map": + { "type": "var" + , "name": "TOOLCHAIN_CONFIG" + , "default": {"type": "empty_map"} + } + , "default": "" + } + , "'" + ] + } + , { "type": "join" + , "$1": + [ "HOST_DYNAMIC_LINKER='" + , { "type": "lookup" + , "key": "HOST_DYNAMIC_LINKER" + , "map": + { "type": "var" + , "name": "TOOLCHAIN_CONFIG" + , "default": {"type": "empty_map"} + } + , "default": "" + } + , "'" + ] + } + , "NJOBS=$(nproc --all 2>/dev/null || echo 1)" + , "HOST_TRIPLE=$(${CC} -dumpmachine)" + , "GCC_TOOLCHAIN=$(dirname ${CC})/.." + , "export PATH=${LOCALBASE}/bin:$PATH" + , "export PKG_CONFIG=false" + , "export LD_LIBRARY_PATH=\"${GCC_TOOLCHAIN}/lib:${GCC_TOOLCHAIN}/lib32:${GCC_TOOLCHAIN}/lib64\"" + , "unset LDFLAGS" + , "CONF_ARGS=" + , "INCL_ARGS=" + , "if [ -n \"$HOST_SYSTEM_HDR_DIR\" ]; then" + , " CONF_ARGS=\"-DC_INCLUDE_DIRS=$HOST_SYSTEM_HDR_DIR\"" + , " INCL_ARGS=\"-I$HOST_SYSTEM_HDR_DIR\"" + , "fi" + , "LINK_ARGS=" + , "if [ -n \"$HOST_SYSTEM_LIB_DIR\" ]; then" + , " export LIBRARY_PATH=\"$HOST_SYSTEM_LIB_DIR\"" + , " LINK_ARGS=\"$LINK_ARGS -B$HOST_SYSTEM_LIB_DIR -L$HOST_SYSTEM_LIB_DIR\"" + , " LINK_ARGS=\"$LINK_ARGS -Xlinker -rpath -Xlinker $HOST_SYSTEM_LIB_DIR\"" + , "fi" + , "if [ -n \"$HOST_DYNAMIC_LINKER\" ]; then" + , " LINK_ARGS=\"$LINK_ARGS -Xlinker --dynamic-linker -Xlinker $HOST_DYNAMIC_LINKER\"" + , "fi" + , "cp -r ${LOCALBASE}/. ${DESTDIR}/." + , "chmod -R +w ${DESTDIR}/*" + , "mkdir build" + , "cmake -B build -S llvm ${CONF_ARGS} -DLLVM_USE_FOLDERS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_TOOLCHAIN_ONLY=ON -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES='libcxx;libcxxabi;libunwind' -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_PARALLEL_LINK_JOBS=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX= -DLLVM_HOST_TRIPLE=${HOST_TRIPLE} -DLLVM_NATIVE_TARGET=ON -DLIBCXXABI_ENABLE_ASSERTIONS=OFF -DLIBUNWIND_ENABLE_ASSERTIONS=OFF >configure.log 2>&1 || (cat configure.log && exit 1)" + , "cmake --build build --target clang -j${NJOBS} >build.log 2>&1 || (cat configure.log build.log && exit 1)" + , "export LDFLAGS=\"--gcc-toolchain=${GCC_TOOLCHAIN} ${LINK_ARGS}\"" + , "cmake --build build --target all -j${NJOBS} >>build.log 2>&1 || (cat configure.log build.log && exit 1)" + , "cmake --build build --target install -j${NJOBS} >>build.log 2>&1 || (cat configure.log build.log && exit 1)" + , "cd ${DESTDIR}" + , "strip ./bin/* 2>/dev/null || true" + , "find . -type f -name '*.so*' -exec sh -c \"strip {} 2>/dev/null\" \\;" + , "find . -type f -name '*.a' -exec sh -c \"strip -g {}\" \\;" + , "find . -type f -name '*.o' -exec sh -c \"strip -g {}\" \\;" + , "cp -r ${GCC_TOOLCHAIN}/include ${GCC_TOOLCHAIN}/lib* ${DESTDIR}/." + , "cp -rl ${DESTDIR}/lib[0-9]*/* ${DESTDIR}/lib/." + , "if [ -n \"${INCL_ARGS}${LINK_ARGS}\" ]; then" + , " cd ${DESTDIR}/bin" + , " mv clang clang.real" + , " mv clang++ clang++.real" + , " printf '#!/bin/sh\\nexec $(dirname $0)/clang.real %s \"$@\"' \"${INCL_ARGS} ${LINK_ARGS}\" >clang" + , " printf '#!/bin/sh\\nexec $(dirname $0)/clang++.real %s \"$@\"' \"${INCL_ARGS} ${LINK_ARGS}\" >clang++" + , " chmod +x clang clang++" + , "fi" + ] + , "out_dirs": ["."] + } +, "libstdc++": + { "type": ["@", "rules", "CC/prebuilt", "library"] + , "name": ["libstdc++"] + , "lib": ["libstdc++_files"] + , "deps": ["libgcc_s"] + } +, "libc++": + { "type": ["@", "rules", "CC/prebuilt", "library"] + , "name": ["libc++"] + , "lib": ["libc++_files"] + , "deps": ["libgcc_s", "libatomic", "libc++abi"] + } +, "libc++abi": + { "type": ["@", "rules", "CC/prebuilt", "library"] + , "name": ["libc++abi"] + , "lib": ["libc++abi_files"] + } +, "libgcc_s": + { "type": ["@", "rules", "CC/prebuilt", "library"] + , "name": ["libgcc_s"] + , "lib": ["libgcc_s_files"] + } +, "libatomic": + { "type": ["@", "rules", "CC/prebuilt", "library"] + , "name": ["libatomic"] + , "lib": ["libatomic_files"] + } +, "libstdc++_files": + { "type": "generic" + , "arguments_config": ["ENV"] + , "deps": ["toolchain"] + , "cmds": [":"] + , "outs": ["lib64/libstdc++.so.6"] + , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} + } +, "libc++_files": + { "type": "generic" + , "arguments_config": ["ENV"] + , "deps": ["toolchain"] + , "cmds": ["cp lib/$(uname -m)-*/libc++.so.1 ."] + , "outs": ["libc++.so.1"] + , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} + } +, "libc++abi_files": + { "type": "generic" + , "arguments_config": ["ENV"] + , "deps": ["toolchain"] + , "cmds": ["cp lib/$(uname -m)-*/libc++abi.so.1 ."] + , "outs": ["libc++abi.so.1"] + , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} + } +, "libgcc_s_files": + { "type": "generic" + , "arguments_config": ["ENV"] + , "deps": ["toolchain"] + , "cmds": [":"] + , "outs": ["lib64/libgcc_s.so.1"] + , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} + } +, "libatomic_files": + { "type": "generic" + , "arguments_config": ["ENV"] + , "deps": ["toolchain"] + , "cmds": [":"] + , "outs": ["lib64/libatomic.so.1"] + , "env": {"type": "var", "name": "ENV", "default": {"type": "empty_map"}} + } +} |