Introduce compiler wrappers
For a long time orchestra has been struggling to make sure each component was getting the C/C++ flags we wanted. Each build systems do that differently. Morover, since we have certain "contradictory" options for compile- and link-time, we have been having issues with build systems building and linking in a single shot. This commit radically solves this issue by introducing `hard-flags-compiler-wrapper.py`, a wrapper script for compilers that: 1. Splits linking and compilation inspecting the command line. 2. Detects from environment variables which additional flags to pass. Depending on the name of the environment variable, the flag can be used only for a certain compiler (e.g., `clang`), only for a certain language (e.g., `cxx`) or only for a certain action (e.g., "compile" vs "link"). This provides us the maximum flexibility and, since this new method is "embedded" in the compiler, bypasses all the build systems specific-issues. Also, it significantly makes the description much more readable and compact.
Showing
- .orchestra/config/components.yml 5 additions, 0 deletions.orchestra/config/components.yml
- .orchestra/config/components/boost.yml 4 additions, 6 deletions.orchestra/config/components/boost.yml
- .orchestra/config/components/clang_release.yml 4 additions, 0 deletions.orchestra/config/components/clang_release.yml
- .orchestra/config/components/cmake.yml 3 additions, 5 deletions.orchestra/config/components/cmake.yml
- .orchestra/config/components/elfutils.yml 1 addition, 2 deletions.orchestra/config/components/elfutils.yml
- .orchestra/config/components/glib.yml 0 additions, 2 deletions.orchestra/config/components/glib.yml
- .orchestra/config/components/gmp.yml 3 additions, 3 deletions.orchestra/config/components/gmp.yml
- .orchestra/config/components/libedit.yml 1 addition, 3 deletions.orchestra/config/components/libedit.yml
- .orchestra/config/components/libffi.yml 1 addition, 3 deletions.orchestra/config/components/libffi.yml
- .orchestra/config/components/libltdl.yml 1 addition, 2 deletions.orchestra/config/components/libltdl.yml
- .orchestra/config/components/libunwind.yml 1 addition, 3 deletions.orchestra/config/components/libunwind.yml
- .orchestra/config/components/llvm.yml 1 addition, 1 deletion.orchestra/config/components/llvm.yml
- .orchestra/config/components/llvm_common.lib.yml 4 additions, 4 deletions.orchestra/config/components/llvm_common.lib.yml
- .orchestra/config/components/mpc.yml 3 additions, 3 deletions.orchestra/config/components/mpc.yml
- .orchestra/config/components/mpfr.yml 3 additions, 3 deletions.orchestra/config/components/mpfr.yml
- .orchestra/config/components/ncurses.yml 1 addition, 3 deletions.orchestra/config/components/ncurses.yml
- .orchestra/config/components/qemu.yml 1 addition, 2 deletions.orchestra/config/components/qemu.yml
- .orchestra/config/components/toolchain/arch/host.yml 5 additions, 4 deletions.orchestra/config/components/toolchain/arch/host.yml
- .orchestra/config/components/toolchain/lib/binutils.lib.yml 2 additions, 4 deletions.orchestra/config/components/toolchain/lib/binutils.lib.yml
- .orchestra/config/components/toolchain/lib/common.lib.yml 0 additions, 2 deletions.orchestra/config/components/toolchain/lib/common.lib.yml
Loading
Please register or sign in to comment