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