Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b15423e
Create CMakeLists.txt
dreamer-coding Jan 23, 2025
a31d61c
Create CMakeLists.txt
dreamer-coding Jan 23, 2025
1e73994
Create CMakeLists.txt
dreamer-coding Jan 23, 2025
0dba8be
Update CMakeLists.txt
dreamer-coding Jan 23, 2025
721ff27
Create CMakeLists.txt
dreamer-coding Jan 23, 2025
b9d314c
Create cmake_ci.yml
dreamer-coding Jan 23, 2025
ac5a6a2
Update Dockerfile.archlinux
dreamer-coding Jan 23, 2025
a4f31c5
Update Dockerfile.debian
dreamer-coding Jan 23, 2025
a5e7dc9
Update Dockerfile.fedora
dreamer-coding Jan 23, 2025
b6303cc
Update Dockerfile.ubuntu
dreamer-coding Jan 23, 2025
100097a
Update CMakeLists.txt
dreamer-coding Jan 23, 2025
59e76e0
Update testing.c
dreamer-coding Jan 23, 2025
4a53f06
Update cmake_ci.yml
dreamer-coding Jan 23, 2025
d40043b
Update testing.c
dreamer-coding Jan 23, 2025
d6070d0
Update cmake_ci.yml
dreamer-coding Jan 23, 2025
90d4399
Update testing.c
dreamer-coding Jan 23, 2025
c03d611
Update Dockerfile.debian
dreamer-coding Jan 23, 2025
7402bec
Update testing.c
dreamer-coding Jan 23, 2025
f3d8288
Update CMakeLists.txt
dreamer-coding Jan 23, 2025
96e7e7c
Update testing.c
dreamer-coding Jan 23, 2025
cd513f7
Update cmake_ci.yml
dreamer-coding Jan 23, 2025
56241b2
Update testing.c
dreamer-coding Jan 23, 2025
38b3f33
Update README.md
dreamer-coding Jan 23, 2025
6204fd2
Update cmake_ci.yml
dreamer-coding Jan 23, 2025
b0c18b1
Update testing.c
dreamer-coding Jan 23, 2025
8ca035d
remove test step for now
dreamer-coding Jan 23, 2025
856b79b
add cross targets to CI file
dreamer-coding Jan 23, 2025
823bc80
trigger CI
dreamer-coding Jan 23, 2025
f37fc49
1.1.5 to 1.1.6
dreamer-coding Jan 23, 2025
80b65b5
remove newlines
dreamer-coding Jan 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/ciimage/Dockerfile.archlinux
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ RUN pacman -Syu --noconfirm && \
python \
python-pip \
git \
cmake \
meson \
ninja \
tzdata && \
Expand All @@ -31,4 +32,4 @@ ENV LD_LIBRARY_PATH=/usr/local/lib
WORKDIR /workspace

# Default command
CMD ["bash"]
CMD ["bash"]
5 changes: 2 additions & 3 deletions .github/ciimage/Dockerfile.debian
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ RUN apt-get update && \
gdb \
llvm \
libstdc++-8-dev \
rustc \
cargo \
cmake \
wget \
python3 \
python3-pip \
Expand All @@ -36,4 +35,4 @@ ENV LD_LIBRARY_PATH=/usr/local/lib
WORKDIR /workspace

# Default command
CMD ["bash"]
CMD ["bash"]
4 changes: 2 additions & 2 deletions .github/ciimage/Dockerfile.fedora
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ RUN dnf -y update && \
git && \
dnf clean all
# Install Meson and Ninja using pip
RUN python3 -m pip install --no-cache-dir meson ninja
RUN python3 -m pip install --no-cache-dir cmake meson ninja

# Set environment variables
ENV CC=/usr/bin/clang
Expand All @@ -32,4 +32,4 @@ ENV LD_LIBRARY_PATH=/usr/local/lib64
WORKDIR /workspace

# Default command
CMD ["bash"]
CMD ["bash"]
2 changes: 1 addition & 1 deletion .github/ciimage/Dockerfile.ubuntu
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ RUN apt-get update && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

RUN python3 -m pip install --no-cache-dir meson ninja
RUN python3 -m pip install --no-cache-dir cmake meson ninja

# Set environment variables
ENV CC=/usr/bin/gcc
Expand Down
283 changes: 283 additions & 0 deletions .github/workflows/cmake_ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,283 @@
name: CMake CI

on:
push:
paths:
- "**.c"
- "**.h"
- "**.cpp"
- "**.hpp"
- "**.py"
- "**.build"
- "**.options"
pull_request:
paths:
- "**.c"
- "**.h"
- "**.cpp"
- "**.hpp"
- "**.py"
- "**.build"
- "**.options"

jobs:
build_msvc:
name: Building on MSVC ${{ matrix.msvc_version }}
runs-on: windows-latest
strategy:
matrix:
msvc_version: [2015, 2017, 2019, 2022]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install CMake and Ninja
shell: pwsh
run: |
python -m pip install --upgrade pip
python -m pip install cmake ninja
if ($env:msvc_version -eq "2015") {
choco install visualstudio2015buildtools --package-parameters "--add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --includeRecommended --includeOptional --passive"
} elseif ($env:msvc_version -eq "2017") {
choco install visualstudio2017buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive"
} elseif ($env:msvc_version -eq "2019") {
choco install visualstudio2019buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive"
} elseif ($env:msvc_version -eq "2022") {
choco install visualstudio2022buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --includeOptional --passive"
}
$env:CC="cl.exe"
$env:CXX="cl.exe"

- name: Configure CMake
run: cmake -S . -B build_msvc_${{ matrix.msvc_version }} -G "Ninja" -DWITH_TESTS=ON

- name: Build
run: cmake --build build_msvc_${{ matrix.msvc_version }} --config Release

- name: Upload Build Log
if: failure()
uses: actions/upload-artifact@v4
with:
name: windows_msvc_${{ matrix.msvc_version }}_cmake_buildlog
path: build_msvc_${{ matrix.msvc_version }}/build.ninja

build_macosx:
name: Building on macOS with Xcode ${{ matrix.xcode_version }}
runs-on: macos-latest
strategy:
matrix:
xcode_version: ["15.2", "15.3"]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install Xcode
run: sudo xcode-select --switch /Applications/Xcode_${{ matrix.xcode_version }}.app

- name: Install CMake and Ninja
run: |
python -m pip install cmake ninja

- name: Configure CMake
run: cmake -S . -B builddir -G "Ninja" -DWITH_TESTS=ON

- name: Build
run: cmake --build builddir --config Release

- name: Upload Build Log
if: failure()
uses: actions/upload-artifact@v4
with:
name: macos_xcode_${{ matrix.xcode_version }}_cmake_buildlog
path: builddir/build.ninja

build_msys:
name: Building on MSYS ${{ matrix.architecture }}
runs-on: windows-latest
strategy:
matrix:
architecture: [x86, x64]
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
update: true

- name: Set environment variables
run: |
echo "CC=/mingw${{ matrix.architecture }}/bin/gcc.exe" >> $GITHUB_ENV
echo "CXX=/mingw${{ matrix.architecture }}/bin/g++.exe" >> $GITHUB_ENV

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install CMake and Ninja
run: |
python -m pip install cmake ninja

- name: Configure CMake
run: cmake -S . -B builddir -G "Ninja" -DWITH_TESTS=ON

- name: Build
run: cmake --build builddir --config Release

- name: Upload Build Log
if: failure()
uses: actions/upload-artifact@v4
with:
name: msys_${{ matrix.architecture }}_cmake_buildlog
path: builddir/build.ninja

build_posix:
name: Build on Linux ${{ matrix.distro }}
runs-on: ubuntu-latest

strategy:
matrix:
distro: [ubuntu, fedora, archlinux, debian]

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Cache Docker layers
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ matrix.distro }}
restore-keys: |
${{ runner.os }}-buildx

- name: Build Docker Image
run: |
docker build \
--file .github/ciimage/Dockerfile.${{ matrix.distro }} \
--tag ${GITHUB_REPOSITORY}:${{ matrix.distro }} .

- name: Run CMake Build in Docker Container
run: |
docker run --rm \
-v ${{ github.workspace }}:/workspace \
-w /workspace \
${GITHUB_REPOSITORY}:${{ matrix.distro }} \
/bin/bash -c "
apt-get update
cmake -S . -B builddir -G Ninja -DWITH_TESTS=ON
cmake --build builddir --config Release"

build_cross:
name: Building on Bedrock ${{ matrix.architecture }}
runs-on: ubuntu-latest # Using Ubuntu as the base system for cross-compilation

strategy:
matrix:
architecture: [arm, arm64, mips, mipsel, riscv64, ppc, ppc64le, sparc64, s390x]

steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Install Cross-Compilation Toolchain
run: |
sudo apt-get update
if [ "${{ matrix.architecture }}" == "arm" ]; then
sudo apt-get install -y gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
elif [ "${{ matrix.architecture }}" == "arm64" ]; then
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
elif [ "${{ matrix.architecture }}" == "mips" ]; then
sudo apt-get install -y gcc-mips-linux-gnu g++-mips-linux-gnu
elif [ "${{ matrix.architecture }}" == "mipsel" ]; then
sudo apt-get install -y gcc-mipsel-linux-gnu g++-mipsel-linux-gnu
elif [ "${{ matrix.architecture }}" == "riscv64" ]; then
sudo apt-get install -y gcc-riscv64-linux-gnu g++-riscv64-linux-gnu
elif [ "${{ matrix.architecture }}" == "ppc" ]; then
sudo apt-get install -y gcc-powerpc-linux-gnu g++-powerpc-linux-gnu
elif [ "${{ matrix.architecture }}" == "ppc64le" ]; then
sudo apt-get install -y gcc-powerpc64le-linux-gnu g++-powerpc64le-linux-gnu
elif [ "${{ matrix.architecture }}" == "sparc64" ]; then
sudo apt-get install -y gcc-sparc64-linux-gnu g++-sparc64-linux-gnu
elif [ "${{ matrix.architecture }}" == "s390x" ]; then
sudo apt-get install -y gcc-s390x-linux-gnu g++-s390x-linux-gnu
fi

- name: Set Cross-Compilation Environment Variables
run: |
if [ "${{ matrix.architecture }}" == "arm" ]; then
echo "CC=arm-linux-gnueabi-gcc" >> $GITHUB_ENV
echo "CXX=arm-linux-gnueabi-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "arm64" ]; then
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=aarch64-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "mips" ]; then
echo "CC=mips-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=mips-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "mipsel" ]; then
echo "CC=mipsel-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=mipsel-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "riscv64" ]; then
echo "CC=riscv64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=riscv64-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "ppc" ]; then
echo "CC=powerpc-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=powerpc-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "ppc64le" ]; then
echo "CC=powerpc64le-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=powerpc64le-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "sparc64" ]; then
echo "CC=sparc64-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=sparc64-linux-gnu-g++" >> $GITHUB_ENV
elif [ "${{ matrix.architecture }}" == "s390x" ]; then
echo "CC=s390x-linux-gnu-gcc" >> $GITHUB_ENV
echo "CXX=s390x-linux-gnu-g++" >> $GITHUB_ENV
fi

- name: Install CMake and Ninja
run: |
python -m pip install cmake ninja

- name: Configure CMake
run: cmake -S . -B builddir -G "Ninja" -DWITH_TESTS=ON

- name: Build
run: cmake --build builddir --config Release

- name: Upload Build Log
if: failure()
uses: actions/upload-artifact@v4
with:
name: cross_${{ matrix.architecture }}_cmake_buildlog
path: builddir/build.ninja

17 changes: 17 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# CMakeLists.txt
cmake_minimum_required(VERSION 3.13.4)

# Project metadata
project(FossilTest VERSION 1.1.6 LANGUAGES C CXX)

# Set the C and C++ standards
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_EXTENSIONS OFF) # Ensure strict C11 compliance
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_EXTENSIONS OFF) # Ensure strict C++20 compliance

# Options
option(WITH_TEST "Enable Fossil Test for this project" OFF)

# Add subdirectory for source code
add_subdirectory(code)
Loading
Loading