From 625ddc83690d39184291ef1641a097e0fe3c7db5 Mon Sep 17 00:00:00 2001 From: Kartatz <105828205+Kartatz@users.noreply.github.com> Date: Sat, 1 Feb 2025 15:37:52 -0300 Subject: [PATCH] Add toolchains for CentOS 7 --- README.md | 5 ++- .../i386-unknown-linux-gnu2.17.cmake | 25 +++++++++++ .../autotools/i386-unknown-linux-gnu2.17.sh | 45 +++++++++++++++++++ .../x86_64-unknown-linux-gnu2.17.cmake | 25 +++++++++++ .../autotools/x86_64-unknown-linux-gnu2.17.sh | 45 +++++++++++++++++++ 5 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 tools/dev/autotools/i386-unknown-linux-gnu2.17.cmake create mode 100644 tools/dev/autotools/i386-unknown-linux-gnu2.17.sh create mode 100644 tools/dev/autotools/x86_64-unknown-linux-gnu2.17.cmake create mode 100644 tools/dev/autotools/x86_64-unknown-linux-gnu2.17.sh diff --git a/README.md b/README.md index 68351fa..c08cf05 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,16 @@ OBGGCC can also be useful if you just want to test whether your program builds o ## Supported targets -Currently, OBGGCC provides cross-compilers targeting 7 major Debian releases on 16 system architectures. +Currently, OBGGCC provides cross-compilers targeting 7 major Debian releases and 1 major CentOS release on 16 system architectures. -### Debian releases +### Distributions | distribution_version | glibc_version | linux_version | availability_date | | ------------------------- | ---------------- | ---------------- | ------------------ | | Debian 5 (Lenny) | Glibc 2.7 | Linux 2.6 | 2009 | | Debian 6 (Squeeze) | Glibc 2.11 | Linux 2.6 | 2011 | | Debian 7 (Wheezy) | Glibc 2.13 | Linux 3.2 | 2013 | +| CentOS 7 | Glibc 2.17 | Linux 3.10 | 2014 | | Debian 8 (Jessie) | Glibc 2.19 | Linux 3.16 | 2015 | | Debian 9 (Stretch) | Glibc 2.24 | Linux 4.9 | 2017 | | Debian 10 (Buster) | Glibc 2.28 | Linux 4.19 | 2019 | diff --git a/tools/dev/autotools/i386-unknown-linux-gnu2.17.cmake b/tools/dev/autotools/i386-unknown-linux-gnu2.17.cmake new file mode 100644 index 0000000..7cc10cc --- /dev/null +++ b/tools/dev/autotools/i386-unknown-linux-gnu2.17.cmake @@ -0,0 +1,25 @@ +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_PROCESSOR "i386") + +set(TARGET_GLIBC "2.17") +set(TOOLCHAIN_PREFIX "${CMAKE_SYSTEM_PROCESSOR}-unknown-linux-gnu") + +set(TOOLCHAIN_PATH "$ENV{OBGGCC_HOME}") + +if ("${TOOLCHAIN_PATH}" STREQUAL "") + set(TOOLCHAIN_PATH "${CMAKE_CURRENT_LIST_DIR}/../..") +endif() + +set(CMAKE_C_COMPILER "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}${TARGET_GLIBC}-gcc" CACHE FILEPATH "cc") +set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}${TARGET_GLIBC}-g++" CACHE FILEPATH "c++") +set(CMAKE_AR "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-ar" CACHE FILEPATH "ar") +set(CMAKE_RANLIB "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-ranlib" CACHE FILEPATH "ranlib") +set(CMAKE_STRIP "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-strip" CACHE FILEPATH "strip") +set(CMAKE_OBJCOPY "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-objcopy" CACHE FILEPATH "objcopy") +set(CMAKE_NM "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-nm" CACHE FILEPATH "nm") + +set(CMAKE_FIND_ROOT_PATH "${TOOLCHAIN_PATH}/${TOOLCHAIN_PREFIX}${TARGET_GLIBC}" CACHE FILEPATH "sysroot") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/tools/dev/autotools/i386-unknown-linux-gnu2.17.sh b/tools/dev/autotools/i386-unknown-linux-gnu2.17.sh new file mode 100644 index 0000000..dfaf296 --- /dev/null +++ b/tools/dev/autotools/i386-unknown-linux-gnu2.17.sh @@ -0,0 +1,45 @@ +#/bin/bash + +set -e + +if [ -z "${OBGGCC_HOME}" ]; then + OBGGCC_HOME="$(realpath "$(dirname "${0}")")/../.." +fi + +set -u + +CROSS_COMPILE_TRIPLET='i386-unknown-linux-gnu' +CROSS_COMPILE_SYSTEM='linux' +CROSS_COMPILE_ARCHITECTURE='i386' +CROSS_COMPILE_GLIBCVER='2.17' +CROSS_COMPILE_SYSROOT="${OBGGCC_HOME}/${CROSS_COMPILE_TRIPLET}${CROSS_COMPILE_GLIBCVER}" + +CC="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}${CROSS_COMPILE_GLIBCVER}-gcc" +CXX="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}${CROSS_COMPILE_GLIBCVER}-g++" +AR="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-ar" +AS="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-as" +LD="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-ld" +NM="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-nm" +RANLIB="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-ranlib" +STRIP="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-strip" +OBJCOPY="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-objcopy" +READELF="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-readelf" + +export \ + CROSS_COMPILE_TRIPLET \ + CROSS_COMPILE_SYSTEM \ + CROSS_COMPILE_ARCHITECTURE \ + CROSS_COMPILE_GLIBCVER \ + CROSS_COMPILE_SYSROOT \ + CC \ + CXX \ + AR \ + AS \ + LD \ + NM \ + RANLIB \ + STRIP \ + OBJCOPY \ + READELF + +set +eu diff --git a/tools/dev/autotools/x86_64-unknown-linux-gnu2.17.cmake b/tools/dev/autotools/x86_64-unknown-linux-gnu2.17.cmake new file mode 100644 index 0000000..69ef3e9 --- /dev/null +++ b/tools/dev/autotools/x86_64-unknown-linux-gnu2.17.cmake @@ -0,0 +1,25 @@ +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(TARGET_GLIBC "2.17") +set(TOOLCHAIN_PREFIX "${CMAKE_SYSTEM_PROCESSOR}-unknown-linux-gnu") + +set(TOOLCHAIN_PATH "$ENV{OBGGCC_HOME}") + +if ("${TOOLCHAIN_PATH}" STREQUAL "") + set(TOOLCHAIN_PATH "${CMAKE_CURRENT_LIST_DIR}/../..") +endif() + +set(CMAKE_C_COMPILER "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}${TARGET_GLIBC}-gcc" CACHE FILEPATH "cc") +set(CMAKE_CXX_COMPILER "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}${TARGET_GLIBC}-g++" CACHE FILEPATH "c++") +set(CMAKE_AR "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-ar" CACHE FILEPATH "ar") +set(CMAKE_RANLIB "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-ranlib" CACHE FILEPATH "ranlib") +set(CMAKE_STRIP "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-strip" CACHE FILEPATH "strip") +set(CMAKE_OBJCOPY "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-objcopy" CACHE FILEPATH "objcopy") +set(CMAKE_NM "${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX}-nm" CACHE FILEPATH "nm") + +set(CMAKE_FIND_ROOT_PATH "${TOOLCHAIN_PATH}/${TOOLCHAIN_PREFIX}${TARGET_GLIBC}" CACHE FILEPATH "sysroot") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/tools/dev/autotools/x86_64-unknown-linux-gnu2.17.sh b/tools/dev/autotools/x86_64-unknown-linux-gnu2.17.sh new file mode 100644 index 0000000..9ca42c1 --- /dev/null +++ b/tools/dev/autotools/x86_64-unknown-linux-gnu2.17.sh @@ -0,0 +1,45 @@ +#/bin/bash + +set -e + +if [ -z "${OBGGCC_HOME}" ]; then + OBGGCC_HOME="$(realpath "$(dirname "${0}")")/../.." +fi + +set -u + +CROSS_COMPILE_TRIPLET='x86_64-unknown-linux-gnu' +CROSS_COMPILE_SYSTEM='linux' +CROSS_COMPILE_ARCHITECTURE='x86_64' +CROSS_COMPILE_GLIBCVER='2.17' +CROSS_COMPILE_SYSROOT="${OBGGCC_HOME}/${CROSS_COMPILE_TRIPLET}${CROSS_COMPILE_GLIBCVER}" + +CC="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}${CROSS_COMPILE_GLIBCVER}-gcc" +CXX="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}${CROSS_COMPILE_GLIBCVER}-g++" +AR="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-ar" +AS="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-as" +LD="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-ld" +NM="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-nm" +RANLIB="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-ranlib" +STRIP="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-strip" +OBJCOPY="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-objcopy" +READELF="${OBGGCC_HOME}/bin/${CROSS_COMPILE_TRIPLET}-readelf" + +export \ + CROSS_COMPILE_TRIPLET \ + CROSS_COMPILE_SYSTEM \ + CROSS_COMPILE_ARCHITECTURE \ + CROSS_COMPILE_GLIBCVER \ + CROSS_COMPILE_SYSROOT \ + CC \ + CXX \ + AR \ + AS \ + LD \ + NM \ + RANLIB \ + STRIP \ + OBJCOPY \ + READELF + +set +eu