{"id":48353506,"url":"https://github.com/eclipse-4diac/4diac-toolchain","last_synced_at":"2026-04-05T10:04:34.295Z","repository":{"id":159221222,"uuid":"605931070","full_name":"eclipse-4diac/4diac-toolchain","owner":"eclipse-4diac","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-10T10:39:28.000Z","size":221,"stargazers_count":3,"open_issues_count":3,"forks_count":5,"subscribers_count":5,"default_branch":"release","last_synced_at":"2025-12-10T13:59:30.122Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CMake","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-4diac.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-24T08:01:23.000Z","updated_at":"2023-10-20T20:37:30.000Z","dependencies_parsed_at":"2023-05-04T01:31:31.265Z","dependency_job_id":"dab01850-f7ac-4f04-97be-8fc48a4c0df1","html_url":"https://github.com/eclipse-4diac/4diac-toolchain","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-4diac/4diac-toolchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-4diac%2F4diac-toolchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-4diac%2F4diac-toolchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-4diac%2F4diac-toolchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-4diac%2F4diac-toolchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-4diac","download_url":"https://codeload.github.com/eclipse-4diac/4diac-toolchain/tar.gz/refs/heads/release","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-4diac%2F4diac-toolchain/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31431454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T08:13:15.228Z","status":"ssl_error","status_checked_at":"2026-04-05T08:13:11.839Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-05T10:04:33.757Z","updated_at":"2026-04-05T10:04:34.287Z","avatar_url":"https://github.com/eclipse-4diac.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"Reliable Cross-Platform Cross-Compilation Toolchains\n====================================================\n\nThis repository contains a build environment that sets up native and\ncross-compilation toolchains for reproducible builds without any system library\ndependencies.  Tested host OSes are Windows (32/64-bit) and Linux (x86 64-bit),\ntested target OSes are Windows (32-bit) and Linux (x86 and ARM).\n\nToolchains are set up for fully static linking for Linux targets and mostly\nstatic for windows targets (only stock system DLLs are needed).  Thus, binaries\nproduced by these toolchains can easily be transferred to other systems and run\nthere.  It should even be possible to run x86_64 Linux binaries on FreeBSD due\nto the Linux syscall emulation in FreeBSD (this is untested).\n\nToolchains are set up for easy cross-compilation via CMake, which is also used\nby the bootstrap process itself (via the highly recommended cget utility).\nNinja is available and recommended as build driver.\n\nFinally, the toolchain also provides native versions of GNU make and busybox in\norder to compile non-CMake software in a reproducible environment regardless of\nOS.\n\n\nInstallation\n============\n\nIf using this as part of the 4diac FORTE build environment (4diac-fbe), you\ndon't need to do anything, 4diac-fbe handles this automatically for you.\n\nWhen using this as a standalone toolchain, the easiest way to install the\ntoolchain environment is through a binary release. Check out the `release`\nbranch of `4diac-toolchains` and run `etc/install-Linux.sh` or\n`etc/install-Windows.cmd` (as appropriate). This will securely download and\ninstall a pre-built release of the base toolchain for native compilation. To\ninstall cross-compilers for additional targets, see below.\n\nThese packages do not need administrative rights and can be installed into\nany folder.  In fact, there is no actual installation, you can extract the\nbinary archive wherever you want and it works out of the box.\n\nSome recommendations: You should use a new, empty folder as destination.  As\nsome programs do not like spaces in file names or very long path names, try\nto use a destination path that is short and without any spaces anywhere.\n\n\nAdding cross-compiler toolchains later\n======================================\n\nUse `./install-crosscompiler.sh` (or `.cmd` on Windows) to add pre-built\ncross-compilers. See `etc/crosscompilers.sha256sum` for a list of available\ntargets. If your target is not available as a pre-built release, use `bin/sh\netc/toolchain.sh \u003ctarget-triple\u003e` to build one from source. This probably\nonly works on Linux, so write a ticket in the issue tracker if you need\nanother target on Windows.\n\n\nUsage with plain CMake\n======================\n\nAfter bootstrap, use any of the top-level ``*.cmake`` files as\n``CMAKE_TOOLCHAIN_FILE``.  For best cross-platform compatibility, use the\nprovided Ninja as build system.  You can even set ``PATH`` to just the toolchain\nbuild directory, it should contain everything needed for building your code.\nThat will yield a predictable build environment across all supported\nmachines/OSes.\n\nExample::\n\n    cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=\"$TOOLCHAINS/native-toolchain.cmake\" .\n\tninja\n\n\nUsage with other plain code\n===========================\n\nThe toolchains directory contains a script that sets up canonical environment\nvariables for a given (cross-)compiler. Some of the variables are CC, CXX,\nCFLAGS, CXXFLAGS, and so on. Most build systems honour these.\n\nExample::\n\n    …/toolchains/cross-env.sh arm-linux-musleabihf\n\nOn Windows hosts, run this from ``bin\\sh.exe``.\n\nIn order to make builds isolated and reproducable, the script will open a new\nshell with an environment that tries very hard to prevent that system files are\nused by accident. Since this toolchain contains a predictable and reasonably\ncomplete shell environment on all supported platforms, this new shell should be\nsufficient to build most code out there.\n\nThe ``cross-env.sh`` script also supports sourcing instead of executing, but\nthat is not fully documented right now. Follow the on-screen messages if you use\nthis mode.\n\n\nUsage with CGet\n===============\n\nIf you want to manage multiple packages with dependencies, CGet is a good\nsolution to do so -- in fact, this entire toolchain is built with CGet.\n\nSee http://cget.readthedocs.io/en/latest/ for more information on CGet.  For\nsome samples, look at ``etc/cget/recipes`` for the CGet recipes for the\ntoolchain itself; useful examples are:\n\n * cmake: how to build a CMake-based package with some cross-compilation fixups\n * m4: how to build a basic GNU autoconf-package\n * ninja: how to build a package using none of these by hand\n\nThis toolchain contains a stand-alone re-implementation of CGet that is easier\nto distribute in binary archives.  It only needs basic shell tools and should be\ndrop-in compatible to the official CGet (minus some exotic features).\n\nThe bundled cget should behave like the original, except for one addition:\nsubcommand ``init`` has a new command line option ``--ccache``, which enables\nccache for that cget prefix.\n\nYou can use shell scripts to automate/orchestrate your top-level cget builds in\na cross-platform way. Example::\n\n    # prepare default environment\n    . …/toolchains/set-path.sh arm-linux-musleabihf\n    cget_init\n\n    # default config in current directory\n    cget install my-fancy-package # assumes you have a etc/cget/recipes dir\n\n\nList of available tools\n=======================\n\nA full toolchain build also includes various generic build and development\ntools.  At the time of this writing, included are:\n\n * A complete POSIX-like shell environment with many extra tools (busybox)\n * extra compression tools (lzip, 7zip)\n * cmake, GNU make, and ninja\n * ccache (config in subdirectory ``etc``, cache in ``.cache/ccache``)\n * curl (with SSL support)\n * flex and byacc\n * git\n * python (stripped down: no pip, no dynamic module loading)\n * ssh, scp, sftp (putty-based versions)\n\n\nInternals\n=========\n\nAdditional documentation for maintainers is in ``docs/README-MAINTAINER.rst``.\nIt also contains information on how to bootstrap a toolchain without pre-built\nbinary archives.\n\n\nAbout Licensing\n===============\n\nLicensing is an inherently difficult topic, so below statements are only a\nbest-effort attempt to summarise open-source licensing terms that apply to the\nprograms built as part of the toolchain.  This document does not contain legal\nadvice and is not a substitute for professional legal advice.\n\nWhen supplying *toolchain* binaries (e.g., the binary toolchain archives\nmentioned earlier) to people outside your organisation, the GPL says you must\ndistribute the full source code alongside the binaries.  Downloaded source\narchives are cached in subdirectory ``download-cache`` after building, so you could\njust make the contents of that directory available alongside your binary\narchives.\n\nThis does not apply to your *own* binaries produced with these toolchains.  Your\nown source code and binaries primarily fall under their own respective licensing\nterms.  GCC and its libraries will not affect that status if using the\ntoolchains as documented here.  Only the different C libraries impose additional\nobligations:\n\nBinaries using the musl C library (*-linux-musl* targets) need to obey a\npermissive MIT-style license, which basically states that you need to include\nits copyright notice, but othwerwise can do whatever you like.  Similar terms\napply for MinGW binaries (*-mingw* targets).  The GNU C library (*-linux-gnu*\ntargets) is more problematic, don't use it when distributing statically linked\nproprietary code (in-house use is fine, only distribution is problematic).\n\nSources:\n * https://www.gnu.org/licenses/gcc-exception-faq.html\n * https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT\n * http://www.mingw.org/license\n * https://lwn.net/Articles/117972/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-4diac%2F4diac-toolchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-4diac%2F4diac-toolchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-4diac%2F4diac-toolchain/lists"}