21 Commits

Author SHA1 Message Date
d0f5760c7a Add --no-cache to the correct place in the build command.
All checks were successful
Build / build (push) Successful in 27m11s
2024-07-23 22:48:53 +03:00
db4b7e7c46 Add --no-cache to build command.
Some checks failed
Build / build (push) Failing after 32s
2024-07-23 22:47:16 +03:00
165fd4f7f3 Add the .net 8.0 sdk to the build image.
Some checks failed
Build / build (push) Failing after 1m47s
2024-07-23 22:41:38 +03:00
518969e2c9 Merge branch 'stable' of https://git.mixedup.dev/ReFuel/docker-cross-compiler into stable
All checks were successful
Build / build (push) Successful in 36s
2024-06-20 12:57:36 +03:00
3b4d6cee18 Rename additional cmake variable. 2024-06-20 12:45:58 +03:00
5901e3e317 Update build_native to honor build options. 2024-06-14 22:11:22 +03:00
44c8ab3212 Update the cmake scripts by copying the correct commit. 2024-06-14 22:00:05 +03:00
36660bcf38 Add osx options again. 2024-06-14 21:52:51 +03:00
caafc898f3 Convert all files to lf. 2024-06-14 18:24:14 +03:00
797197b562 Revert "Remove init.sh."
All checks were successful
Build / build (push) Successful in 40s
This reverts commit 5959c1229f.
2024-06-13 21:20:50 +03:00
74e192bb05 Change workflow to use tags. 2024-06-13 21:17:13 +03:00
d3f2aee3c3 Fix .bashrc after removing init.sh 2024-06-13 21:16:38 +03:00
35f1d46e81 Fix typo 2024-06-13 21:01:26 +03:00
5959c1229f Remove init.sh. 2024-06-13 21:00:57 +03:00
7aeb3ab967 Rebrand as ReFuel. 2024-06-13 19:58:34 +02:00
57bd32ea77 Reintroduce build essentials into this repository. 2024-06-13 19:58:34 +02:00
4107bf9df4 Rebrand as ReFuel.
Some checks failed
Build / build (push) Failing after 30s
2024-06-13 20:57:08 +03:00
fe004342de Reintroduce build essentials into this repository. 2024-06-13 20:49:00 +03:00
9eb5f90a2e Merge branch 'stable' of https://git.mixedup.dev/QUIK/docker-cross-compiler into stable
All checks were successful
Build / build (push) Successful in 25m12s
2024-03-30 14:34:19 +03:00
9a1e45f9e3 Add support for osxcross. 2024-03-30 14:13:32 +03:00
ac01f7f2aa [v1.0] Add automatic build action.
All checks were successful
Build / build (push) Successful in 34s
Try adding secrets to the workflow script.

Fix workflow.

Fix typo.

fix docker name conflict.

Removed cmake files from this repository and added node and meson to the apt packages list.

Update .gitea/workflows/build.yaml

node -> nodejs
2024-03-23 11:33:28 +03:00
15 changed files with 279 additions and 13 deletions

View File

@@ -2,7 +2,8 @@ name: Build
run-name: Building docker container. run-name: Building docker container.
on: on:
push: push:
branches: stable tags:
- '*'
jobs: jobs:
build: build:
@@ -13,10 +14,14 @@ jobs:
- name: Gather dependencies. - name: Gather dependencies.
run: apt install -y docker.io run: apt install -y docker.io
- name: Log into Docker registry. - name: Log into Docker registry.
run: "echo ${{secrets.QUIK_API_KEY}} | docker login -u themixedupstuff --password-stdin git.mixedup.dev" run: "echo ${{secrets.REFUEL_API_KEY}} | docker login -u ${{vars.DOCKER_USER_NAME}} --password-stdin git.mixedup.dev"
- name: Check repository out. - name: Check repository out.
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Build Docker Image - name: Build Docker Image
run: docker build -t git.mixedup.dev/quik/docker-cross-compiler . run: "docker build --no-cache -t git.mixedup.dev/refuel/docker-cross-compiler:${{gitea.ref_name}} ."
- name: Upload Docker Image - name: Upload Docker Image
run: docker push git.mixedup.dev/quik/docker-cross-compiler run: "docker push git.mixedup.dev/refuel/docker-cross-compiler:${{gitea.ref_name}}"
- name: Alias image as latest and push.
run: |
docker tag git.mixedup.dev/refuel/docker-cross-compiler:${{gitea.ref_name}} git.mixedup.dev/refuel/docker-cross-compiler:latest && \
docker push git.mixedup.dev/refuel/docker-cross-compiler:latest

View File

@@ -26,15 +26,19 @@ RUN echo docker_cross_compiler > /etc/hostname
cmake \ cmake \
clang \ clang \
cpio \ cpio \
curl \
dotnet-sdk-6.0 \ dotnet-sdk-6.0 \
dotnet-sdk-8.0 \
gcc-arm-linux-gnueabihf \ gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu \ gcc-aarch64-linux-gnu \
gcc-i686-linux-gnu \ gcc-i686-linux-gnu \
git \ git \
libbz2-dev \
libharfbuzz-dev \ libharfbuzz-dev \
libpng-dev \ libpng-dev \
libssl-dev \ libssl-dev \
libxml2-dev \ libxml2-dev \
llvm \
lzma-dev \ lzma-dev \
mingw-w64 \ mingw-w64 \
meson \ meson \
@@ -43,25 +47,36 @@ RUN echo docker_cross_compiler > /etc/hostname
nodejs \ nodejs \
patch \ patch \
python3 \ python3 \
uuid \
xz-utils \ xz-utils \
zlib1g-dev zlib1g-dev
# Clone osxcross # Clone osxcross
# Let's do this later. # Let's do this later.
# RUN git clone https://github.com/tpoechtrager/osxcross.git osxcross RUN git clone --recurse-submodules "https://github.com/tpoechtrager/osxcross.git" osxcross
# Download packaged SDK from this random github (very safe i know)
WORKDIR /root/osxcross/tarballs
RUN wget "https://github.com/joseluisq/macosx-sdks/releases/download/14.0/MacOSX14.0.sdk.tar.xz" -O "MacOSX14.0.sdk.tar.xz"
WORKDIR /root/osxcross
ENV UNATTENDED=1 TARGET_DIR=/usr/local SDK_DIR=/usr/local/osxcross-sdk
RUN bash -c "./build.sh"
# Setup interactive shell. # Setup interactive shell.
# Setup sudo. Remove password prompt for group "wheel". # Setup sudo. Remove password prompt for group "wheel".
RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/quik_sudo_conf RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/refuel_sudo_conf
# Create a default user and switch. # Create a default user and switch.
RUN adduser --comment "" --disabled-password quik RUN adduser --comment "" --disabled-password refuel
USER quik RUN addgroup wheel
WORKDIR /home/quik RUN usermod -aG wheel refuel
USER refuel
WORKDIR /home/refuel
# Copy bashrc # Copy bashrc
RUN cp /etc/bash.bashrc ~/.bashrc RUN cp /etc/bash.bashrc ~/.bashrc
RUN echo source $HOME/src/sh/bashrc.sh >> ~/.bashrc COPY sh/bashrc.sh /home/refuel/.bashrc
# Execute an interactive shell. # Execute an interactive shell.
CMD bash CMD bash

13
cmake/linux-arm.cmake Normal file
View File

@@ -0,0 +1,13 @@
# ReFuel 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
View File

@@ -0,0 +1,13 @@
# ReFuel 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
View File

@@ -0,0 +1,9 @@
# ReFuel 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
View File

@@ -0,0 +1,14 @@
# ReFuel 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/osx-arm64.cmake Normal file
View File

@@ -0,0 +1,14 @@
# ReFuel Toolchain file for OSX-ARM64 systems.
# Copyright (C) 2024
set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_C_COMPILER aarch64-apple-darwin23-clang)
set(CMAKE_CXX_COMPILER aarch64-apple-darwin23-clang++)
set(CMAKE_FIND_ROOT_PATH "/usr/local/SDK/MacOSX14.0.sdk/usr"
"/usr/local/SDK/MacOSX14.0.sdk/System")
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/osx-x64.cmake Normal file
View File

@@ -0,0 +1,14 @@
# ReFuel Toolchain file for OSX-ARM64 systems.
# Copyright (C) 2024
set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_C_COMPILER x86_64-apple-darwin23-clang)
set(CMAKE_CXX_COMPILER x86_64-apple-darwin23-clang++)
set(CMAKE_FIND_ROOT_PATH "/usr/local/SDK/MacOSX14.0.sdk/usr"
"/usr/local/SDK/MacOSX14.0.sdk/System")
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
View File

@@ -0,0 +1,14 @@
# ReFuel 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
View File

@@ -0,0 +1,14 @@
# ReFuel 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)

54
include/rf_common.h Normal file
View File

@@ -0,0 +1,54 @@
#ifndef _REFUEL_COMMON_H_
#define _REFUEL_COMMON_H_
#include "stdlib.h"
#include "stdio.h"
#if __GNUC__ || _MSC_VER
#define __REFUEL_FUNCTION__ __FUNCTION__
#else
#define __REFUEL_FUNCTION__ NULL
#endif
#if WIN32 || _MSC_VER > 0 || __MINGW__
#define RFEXTERN __declspec(dllexport)
#else
#define RFEXTERN
#endif
/**
* @brief Callback for failed assert function for QUIK redist libraries.
* @param[in] expr The expression that failed.
* @param[in] file The failing file (if available)
* @param[in] line The failing line number (if available)
* @param[in] func The failing function (if available)
*/
typedef void (*rf_failed_assert_cb_t)(const char *expr, const char *file, int line, const char* func);
#define DECLARE_ASSERT_CB(NAME) \
RFEXTERN rf_failed_assert_cb_t NAME##_failed_assert
#define DECLARE_ASSERT_STORE(NAME) \
RFEXTERN void NAME##_failed_assert_store(rf_failed_assert_cb_t cb)
#define DEFINE_ASSERT_CB(NAME) \
rf_failed_assert_cb_t NAME##_failed_assert
#define DEFINE_ASSERT_STORE(NAME) \
void NAME##_failed_assert_store(rf_failed_assert_cb_t cb) { \
NAME##_failed_assert = cb != NULL ? cb : rf_default_assert; \
}
#define REFUEL_DECLARE_LIB(NAME) \
DECLARE_ASSERT_CB(NAME); \
DECLARE_ASSERT_STORE(NAME);
#define REFUEL_DEFINE_LIB(NAME) \
DEFINE_ASSERT_CB(NAME); \
DEFINE_ASSERT_STORE(NAME);
inline static void rf_default_assert(const char *expr, const char *file, int line, const char *function)
{
fprintf(stderr, "Assert failed at %s:%d in %s()\n %s", file, line, function, expr);
abort();
}
#endif

1
sh/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.sh text eof=lf

View File

@@ -1,5 +1,4 @@
source $HOME/src/sh/init.sh echo ReFuel Project - Copyright \(C\) 2023
echo QUIK Project Copyright \(C\) 2023
echo echo
echo This is an interactive shell for QUIK build image. echo This is an interactive shell for ReFuel build image.
echo SuperUser \(su/sudo\) commands are enabled without a password. Beware. echo SuperUser \(su/sudo\) commands are enabled without a password. Beware.

57
sh/build_native.sh Executable file
View File

@@ -0,0 +1,57 @@
#!/bin/bash
# $1 Source path of the project.
# $2 Target architecture list.
# DST is the destination directory.
# NOINSTALL = 1 to skip installing.
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 osx-arm64 osx-x64"
fi
if [ -z "$DST" ]
then
DST=$PWD
fi
if [ -z "$CMAKE_DIR"]
then
CMAKE_DIR="$SRC/docker-cross-compiler/cmake"
fi
for ARCH in $ARCHS; do
# Output directory.
PREFIX=$DST/runtimes/$ARCH/native
# Build directory.
BUILD=$DST/out/$ARCH
# Cmake toolchain file.
TOOLCHAIN=$CMAKE_DIR/$ARCH.cmake
# Create directories.
mkdir -p $PREFIX $BUILD
# Configure CMAKE.
cmake -B $BUILD -S $SRC \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN \
$REFUEL_ADDITIONAL_CMAKE
# Build and install.
ninja -C $BUILD all
if [ ! $NOINSTALL ]
then
ninja -C $BUILD install
fi
done

30
sh/publish.sh Normal file
View File

@@ -0,0 +1,30 @@
#!/bin/bash
if [-z "$1"]
then
$1 = $(dirname "$0")
fi
if [ -z "$NUGET_API_KEY" ]
then
echo "Please define NUGET_API_KEY"
exit 1
fi
if [ -z "$NUGET_USER_NAME" ]
then
echo "Please define NUGET_USER_NAME"
exit 1
fi
if [ -z "$NUGET_INDEX" ]
then
echo "Please define NUGET_INDEX"
exit 1
fi
cd $1
dotnet nuget add source \
-n ReFuel -u "$NUGET_USER_NAME" -p "$NUGET_API_KEY" \
--store-password-in-clear-text \
"$NUGET_INDEX"
dotnet nuget push -s ReFuel bin/*/*.nupkg