diff --git a/toolchain/.gitignore b/toolchain/.gitignore index 355164c1..51b4cfda 100644 --- a/toolchain/.gitignore +++ b/toolchain/.gitignore @@ -1 +1 @@ -*/ +local/ diff --git a/toolchain/build.sh b/toolchain/build.sh index 29e9cf42..8d227e15 100755 --- a/toolchain/build.sh +++ b/toolchain/build.sh @@ -193,6 +193,8 @@ build_cmake() { cp -r ./bin/* $BANAN_TOOLCHAIN_PREFIX/bin/ cp -r ./share/* $BANAN_TOOLCHAIN_PREFIX/share/ + + cp $BANAN_TOOLCHAIN_DIR/cmake-platform/* $BANAN_TOOLCHAIN_PREFIX/share/cmake-3.26/Modules/Platform/ } BUILD_BINUTILS=1 diff --git a/toolchain/cmake-platform/banan-os-GNU-ASM.cmake b/toolchain/cmake-platform/banan-os-GNU-ASM.cmake new file mode 100644 index 00000000..c2964019 --- /dev/null +++ b/toolchain/cmake-platform/banan-os-GNU-ASM.cmake @@ -0,0 +1,2 @@ +include(Platform/banan-os-GNU) +__banan_os_compiler_gnu(ASM) diff --git a/toolchain/cmake-platform/banan-os-GNU-C.cmake b/toolchain/cmake-platform/banan-os-GNU-C.cmake new file mode 100644 index 00000000..455580dc --- /dev/null +++ b/toolchain/cmake-platform/banan-os-GNU-C.cmake @@ -0,0 +1,2 @@ +include(Platform/banan-os-GNU) +__banan_os_compiler_gnu(C) diff --git a/toolchain/cmake-platform/banan-os-GNU-CXX.cmake b/toolchain/cmake-platform/banan-os-GNU-CXX.cmake new file mode 100644 index 00000000..2f8a4460 --- /dev/null +++ b/toolchain/cmake-platform/banan-os-GNU-CXX.cmake @@ -0,0 +1,2 @@ +include(Platform/banan-os-GNU) +__banan_os_compiler_gnu(CXX) diff --git a/toolchain/cmake-platform/banan-os-GNU.cmake b/toolchain/cmake-platform/banan-os-GNU.cmake new file mode 100644 index 00000000..300abe6e --- /dev/null +++ b/toolchain/cmake-platform/banan-os-GNU.cmake @@ -0,0 +1,20 @@ +# This module is shared by multiple languages; use include blocker. +include_guard() + +macro(__banan_os_compiler_gnu lang) + set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG "-Wl,-rpath,") + set(CMAKE_SHARED_LIBRARY_RUNTIME_${lang}_FLAG_SEP ":") + set(CMAKE_SHARED_LIBRARY_RPATH_LINK_${lang}_FLAG "-Wl,-rpath-link,") + set(CMAKE_SHARED_LIBRARY_SONAME_${lang}_FLAG "-Wl,-soname,") + set(CMAKE_EXE_EXPORTS_${lang}_FLAG "-Wl,--export-dynamic") + + # Initialize link type selection flags. These flags are used when + # building a shared library, shared module, or executable that links + # to other libraries to select whether to use the static or shared + # versions of the libraries. + foreach(type SHARED_LIBRARY SHARED_MODULE EXE) + set(CMAKE_${type}_LINK_STATIC_${lang}_FLAGS "-Wl,-Bstatic") + set(CMAKE_${type}_LINK_DYNAMIC_${lang}_FLAGS "-Wl,-Bdynamic") + endforeach() + +endmacro() diff --git a/toolchain/cmake-platform/banan-os-Initialize.cmake b/toolchain/cmake-platform/banan-os-Initialize.cmake new file mode 100644 index 00000000..e5fa117d --- /dev/null +++ b/toolchain/cmake-platform/banan-os-Initialize.cmake @@ -0,0 +1,2 @@ +set(BANAN_OS 1) +set(UNIX 1) diff --git a/toolchain/cmake-platform/banan-os.cmake b/toolchain/cmake-platform/banan-os.cmake new file mode 100644 index 00000000..fa3d3ce2 --- /dev/null +++ b/toolchain/cmake-platform/banan-os.cmake @@ -0,0 +1,9 @@ +set(CMAKE_DL_LIBS "") +set(CMAKE_SHARED_LIBRARY_RPATH_ORIGIN_TOKEN "\$ORIGIN") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".so") + +# Shared libraries with no builtin soname may not be linked safely by +# specifying the file path. +set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1) + +include(Platform/UnixPaths)