8 Commits

Author SHA1 Message Date
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
9a1e45f9e3 Add support for osxcross. 2024-03-30 14:13:32 +03:00
15 changed files with 280 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 -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,18 @@ RUN echo docker_cross_compiler > /etc/hostname
cmake \ cmake \
clang \ clang \
cpio \ cpio \
curl \
dotnet-sdk-6.0 \ dotnet-sdk-6.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 +46,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 OSX)
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 OSX)
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.

59
sh/build_native.sh Normal file
View File

@@ -0,0 +1,59 @@
#!/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"
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_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
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