From d722a4561dfa7cbb2c2e94e97eb94df4e7500446 Mon Sep 17 00:00:00 2001 From: "H. Utku Maden" Date: Tue, 19 Mar 2024 21:50:50 +0300 Subject: [PATCH] Move common build files into this repository. --- cmake/linux-arm.cmake | 13 +++++++++++ cmake/linux-arm64.cmake | 13 +++++++++++ cmake/linux-x64.cmake | 9 ++++++++ cmake/linux-x86.cmake | 14 ++++++++++++ cmake/win-x64.cmake | 14 ++++++++++++ cmake/win-x86.cmake | 14 ++++++++++++ sh/quik_build_native.sh | 49 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 126 insertions(+) create mode 100644 cmake/linux-arm.cmake create mode 100644 cmake/linux-arm64.cmake create mode 100644 cmake/linux-x64.cmake create mode 100644 cmake/linux-x86.cmake create mode 100644 cmake/win-x64.cmake create mode 100644 cmake/win-x86.cmake create mode 100644 sh/quik_build_native.sh diff --git a/cmake/linux-arm.cmake b/cmake/linux-arm.cmake new file mode 100644 index 0000000..a973557 --- /dev/null +++ b/cmake/linux-arm.cmake @@ -0,0 +1,13 @@ +# QUIK Toolchain file for Linux-arm systems. +# Copyright (C) 2023 + +set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc) +set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++) + +set(CMAKE_FIND_ROOT_PATH "/usr/arm-linux-gnueabihf") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/linux-arm64.cmake b/cmake/linux-arm64.cmake new file mode 100644 index 0000000..5008591 --- /dev/null +++ b/cmake/linux-arm64.cmake @@ -0,0 +1,13 @@ +# QUIK Toolchain file for Linux-arm64 (aarch64) systems. +# Copyright (C) 2023 + +set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++) + +set(CMAKE_FIND_ROOT_PATH "/usr/aarch64-linux-gnu") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/linux-x64.cmake b/cmake/linux-x64.cmake new file mode 100644 index 0000000..1366483 --- /dev/null +++ b/cmake/linux-x64.cmake @@ -0,0 +1,9 @@ +# QUIK Toolchain file for Linux-x64 (amd64) systems. +# Copyright (C) 2023 + +set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_C_COMPILER gcc) +set(CMAKE_CXX_COMPILER g++) + +add_compile_options(-m64) diff --git a/cmake/linux-x86.cmake b/cmake/linux-x86.cmake new file mode 100644 index 0000000..2f2a27b --- /dev/null +++ b/cmake/linux-x86.cmake @@ -0,0 +1,14 @@ +# QUIK Toolchain file for Linux-x86 (i386) systems. +# Copyright (C) 2023 + +set(CMAKE_SYSTEM_NAME Linux) + +set(CMAKE_C_COMPILER i686-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER i686-linux-gnu-g++) + +add_compile_options(-m32 -march=i686) + +set(CMAKE_FIND_ROOT_PATH "/usr/i686-linux-gnu") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/win-x64.cmake b/cmake/win-x64.cmake new file mode 100644 index 0000000..7224a0d --- /dev/null +++ b/cmake/win-x64.cmake @@ -0,0 +1,14 @@ +# QUIK Toolchain file for Windows-x64 systems. +# Copyright (C) 2023 + +set(CMAKE_SYSTEM_NAME Windows) + +set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) + +set(CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32") +add_compile_options(-m64) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/cmake/win-x86.cmake b/cmake/win-x86.cmake new file mode 100644 index 0000000..1808cc4 --- /dev/null +++ b/cmake/win-x86.cmake @@ -0,0 +1,14 @@ +# QUIK Toolchain file for Windows-x86 systems. +# Copyright (C) 2023 + +set(CMAKE_SYSTEM_NAME Windows) + +set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) + +set(CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32") +add_compile_options(-m32) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/sh/quik_build_native.sh b/sh/quik_build_native.sh new file mode 100644 index 0000000..cc5b191 --- /dev/null +++ b/sh/quik_build_native.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# $1 Source path of the project. +# $2 Target architecture list. +# DST is the destination directory. + +SRC=$1 +ARCHS=$2 + +if [ -z "$SRC" ] +then + echo You need to provide a source path. + return +fi + +if [ -z "$ARCHS" ] +then + ARCHS="linux-arm linux-arm64 linux-x64 win-x64 win-x86" +fi + +if [ -z "$DST" ] +then + DST=$PWD +fi + +for ARCH in $ARCHS; do + # Output directory. + PREFIX=$DST/runtimes/$ARCH/native + # Build directory. + BUILD=$DST/out/$ARCH + # Cmake toolchain file. + TOOLCHAIN=$DST/../cmake/$ARCH.cmake + + # Create directories. + mkdir -p $PREFIX $BUILD + # Configure CMAKE. + cmake -B $BUILD -S $SRC \ + -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS=-static-libgcc \ + -DCMAKE_CXX_FLAGS=-static-libgcc \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN \ + $QUIK_ADDITIONAL_CMAKE + + # Build and install. + ninja -C $BUILD all + ninja -C $BUILD install +done