Initial Commit.
This commit is contained in:
commit
0131d764b9
65
Dockerfile
Normal file
65
Dockerfile
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# This is going to create an environment for you to cross compile all the
|
||||||
|
# packages needed to build this project.
|
||||||
|
#
|
||||||
|
# As always, debian > ubuntu <3
|
||||||
|
FROM debian:stable-slim
|
||||||
|
WORKDIR /root
|
||||||
|
|
||||||
|
# Set host name.
|
||||||
|
RUN echo docker_cross_compiler > /etc/hostname
|
||||||
|
|
||||||
|
# Download and Install dependencies.
|
||||||
|
# Install WGET
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y sudo wget
|
||||||
|
|
||||||
|
# Add the .NET package repository to the repository listing.
|
||||||
|
RUN wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
|
||||||
|
RUN dpkg -i packages-microsoft-prod.deb
|
||||||
|
RUN rm packages-microsoft-prod.deb
|
||||||
|
|
||||||
|
# APT dependencies.
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
bzip2 \
|
||||||
|
cmake \
|
||||||
|
clang \
|
||||||
|
cpio \
|
||||||
|
dotnet-sdk-6.0 \
|
||||||
|
gcc-arm-linux-gnueabihf \
|
||||||
|
gcc-aarch64-linux-gnu \
|
||||||
|
gcc-i686-linux-gnu \
|
||||||
|
git \
|
||||||
|
libharfbuzz-dev \
|
||||||
|
libpng-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
lzma-dev \
|
||||||
|
mingw-w64 \
|
||||||
|
nuget \
|
||||||
|
ninja-build \
|
||||||
|
patch \
|
||||||
|
python3 \
|
||||||
|
xz-utils \
|
||||||
|
zlib1g-dev
|
||||||
|
|
||||||
|
# Clone osxcross
|
||||||
|
# Let's do this later.
|
||||||
|
# RUN git clone https://github.com/tpoechtrager/osxcross.git osxcross
|
||||||
|
|
||||||
|
# Setup interactive shell.
|
||||||
|
# Setup sudo. Remove password prompt for group "wheel".
|
||||||
|
RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/quik_sudo_conf
|
||||||
|
|
||||||
|
# Create a default user and switch.
|
||||||
|
RUN adduser --comment "" --disabled-password quik
|
||||||
|
USER quik
|
||||||
|
WORKDIR /home/quik
|
||||||
|
|
||||||
|
# Copy bashrc
|
||||||
|
RUN cp /etc/bash.bashrc ~/.bashrc
|
||||||
|
RUN echo source $HOME/src/sh/bashrc.sh >> ~/.bashrc
|
||||||
|
|
||||||
|
# Execute an interactive shell.
|
||||||
|
CMD bash
|
4
README.md
Normal file
4
README.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
QUIK Docker Cross Compiler
|
||||||
|
===========================
|
||||||
|
This is the cross compilation C/C++ toolchain intended for QUIK. Use the Docker
|
||||||
|
container from this repository to cross compile natives for QUIK projects.
|
13
cmake/linux-arm.cmake
Normal file
13
cmake/linux-arm.cmake
Normal file
@ -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)
|
13
cmake/linux-arm64.cmake
Normal file
13
cmake/linux-arm64.cmake
Normal file
@ -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)
|
9
cmake/linux-x64.cmake
Normal file
9
cmake/linux-x64.cmake
Normal file
@ -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)
|
14
cmake/linux-x86.cmake
Normal file
14
cmake/linux-x86.cmake
Normal file
@ -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)
|
14
cmake/win-x64.cmake
Normal file
14
cmake/win-x64.cmake
Normal file
@ -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)
|
14
cmake/win-x86.cmake
Normal file
14
cmake/win-x86.cmake
Normal file
@ -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)
|
5
sh/bashrc.sh
Normal file
5
sh/bashrc.sh
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
source $HOME/src/sh/init.sh
|
||||||
|
echo QUIK Project Copyright \(C\) 2023
|
||||||
|
echo
|
||||||
|
echo This is an interactive shell for QUIK build image.
|
||||||
|
echo SuperUser \(su/sudo\) commands are enabled without a password. Beware.
|
13
sh/init.sh
Normal file
13
sh/init.sh
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Change to source directory
|
||||||
|
cd $HOME/src
|
||||||
|
|
||||||
|
export QUIK_SRC=$PWD
|
||||||
|
export QNUGET_LOCAL=QuikLocal
|
||||||
|
export QNUGET_LOCAL_PATH=$QUIK_SRC/nuget_repo
|
||||||
|
# export QNUGET_REMOTE=nuget
|
||||||
|
|
||||||
|
# Create nuget repository.
|
||||||
|
mkdir -p $QUIK_SRC/nuget_repo
|
||||||
|
nuget sources Add -Name $QNUGET_LOCAL -Source $QNUGET_LOCAL_PATH -NonInteractive
|
49
sh/quik_build_native.sh
Normal file
49
sh/quik_build_native.sh
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user