Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
973137f
save point
johnpatek Feb 27, 2026
278cc4a
save point
johnpatek Feb 27, 2026
09cc924
trying to add missing package to ubuntu build
johnpatek Feb 28, 2026
eb5e570
testing linux build again
johnpatek Feb 28, 2026
e83e1a0
making sure CEF can be static
johnpatek Feb 28, 2026
0d51433
added hyperpage port
johnpatek Mar 1, 2026
8843901
cleaned up actions
johnpatek Mar 1, 2026
1fe18d5
making sure overlay ports work on windows
johnpatek Mar 1, 2026
76f8cc3
save point
johnpatek Mar 1, 2026
6100630
forgot to add wxwidgets port
johnpatek Mar 1, 2026
87b213d
trying to fix cmake build
johnpatek Mar 1, 2026
b7df1d6
save point
johnpatek Mar 22, 2026
4789309
save point
johnpatek Mar 22, 2026
0467ae5
typo in vcpkg cache
johnpatek Mar 22, 2026
522f113
changes cmake flags
johnpatek Mar 22, 2026
b573321
added package configuration step
johnpatek Mar 22, 2026
ac0f67a
added explicit cache
johnpatek Mar 22, 2026
2e61980
fixed script path
johnpatek Mar 22, 2026
1740705
fixed CEF problem in windows build
johnpatek Mar 22, 2026
66526a9
fixing mismatched cef package name
johnpatek Mar 22, 2026
b6fdd7a
changing cef to CEF
johnpatek Mar 22, 2026
a5e7185
save point
johnpatek Mar 22, 2026
d00c614
added dummy runtime files
johnpatek Mar 22, 2026
a483e39
trying to fix cache key issue
johnpatek Mar 22, 2026
26b833c
added basic unit testing
johnpatek Mar 23, 2026
2a3110c
implemented server runtime
johnpatek Mar 23, 2026
2cae9ac
trying to run tests
johnpatek Mar 23, 2026
91592b0
finished server runtime and example
johnpatek Mar 23, 2026
94f47b1
added desktop runtime
johnpatek Mar 24, 2026
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
18 changes: 0 additions & 18 deletions .github/cache/action.yml

This file was deleted.

3 changes: 1 addition & 2 deletions .github/scripts/osx_setup.sh
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
brew install autoconf autoconf-archive automake libtool ninja
/Users/runner/work/vcpkg/bootstrap-vcpkg.sh
brew install autoconf autoconf-archive automake libtool
23 changes: 4 additions & 19 deletions .github/scripts/ubuntu_setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,9 @@
# causing unpredictable behavior and build failures.
#
echo "=============================================================================="
echo "Freeing up disk space on CI system"
echo "Installing Ubuntu dependencies"
echo "=============================================================================="

echo "Listing 100 largest packages"
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n | tail -n 100
df -h
echo "Removing large packages"
sudo apt-get remove -y '^ghc-8.*'
sudo apt-get remove -y '^dotnet-.*'
sudo apt-get remove -y '^llvm-.*'
sudo apt-get remove -y 'php.*'
sudo apt-get remove -y azure-cli google-cloud-sdk hhvm google-chrome-stable firefox powershell mono-devel
sudo apt-get autoremove -y
sudo apt-get clean
echo "Removing large directories"
# deleting 15GB
rm -rf /usr/share/dotnet/
rm -rf /opt/hostedtoolcache
rm -rf /opt/ghc
sudo rm -rf /usr/local/lib/android
df -h
sudo apt-get update
sudo apt-get install -y \
Expand Down Expand Up @@ -76,7 +59,9 @@ sudo apt-get install -y \
libxcb-xinerama0-dev \
libxcb-xkb-dev \
libxi-dev \
libxtst-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
libxrender-dev
libxrender-dev \
libxrandr-dev
df -h
25 changes: 0 additions & 25 deletions .github/vcpkg/action.yml

This file was deleted.

12 changes: 0 additions & 12 deletions .github/vcpkg/setup.py

This file was deleted.

67 changes: 0 additions & 67 deletions .github/workflows/build.yml

This file was deleted.

102 changes: 102 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: WebFrame CI/CD Pipeline

on:
push:

permissions:
contents: write
packages: write

jobs:
test:
name: Unit Tests
runs-on: ubuntu-latest
env:
VCPKG_BINARY_SOURCES: >-
clear;files,${{ github.workspace }}/vcpkg-test-cache,readwrite
steps:
- name: Checkout vcpkg
uses: actions/checkout@v6
with:
repository: microsoft/vcpkg
path: vcpkg
ref: '2026.01.16'

- name: Checkout code
uses: actions/checkout@v6
with:
repository: maxtek6/WebFrame
path: WebFrame
ref: ${{ github.ref }}

- name: "Restore VCPKG cache"
uses: actions/cache/restore@v4
with:
path: ${{ github.workspace }}/vcpkg-test-cache
key: vcpkg-test-cache-${{ github.run_id }}
restore-keys: vcpkg-test-cache

- name: CMake Build
run: |
cmake -S WebFrame -B build -DBUILD_TESTING=ON -DBUILD_RUNTIME=OFF -DVCPKG_ROOT=${{ github.workspace }}/vcpkg
cd build
make -j4
make test

- name: "Save VCPKG cache"
uses: actions/cache/save@v4
with:
path: ${{ github.workspace }}/vcpkg-test-cache
key: vcpkg-test-cache-${{ github.run_id }}

build:
needs: test
name: Build Runtime
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
env:
VCPKG_BINARY_SOURCES: >-
clear;files,${{ github.workspace }}/vcpkg-${{ matrix.os }},readwrite
steps:
- name: Checkout vcpkg
uses: actions/checkout@v6
with:
repository: microsoft/vcpkg
path: vcpkg
ref: '2026.01.16'

- name: Checkout code
uses: actions/checkout@v6
with:
repository: maxtek6/WebFrame
path: WebFrame
ref: ${{ github.ref }}

- name: "Restore VCPKG cache"
uses: actions/cache/restore@v5
with:
path: ${{ github.workspace }}/vcpkg-${{ matrix.os }}
key: vcpkg-${{ matrix.os }}-${{ github.run_id }}
restore-keys: vcpkg-${{ matrix.os }}

- name: Ubuntu setup
if: matrix.os == 'ubuntu-latest'
run: ./WebFrame/.github/scripts/ubuntu_setup.sh

- name: MacOS setup
if: matrix.os == 'macos-latest'
run: ./WebFrame/.github/scripts/osx_setup.sh

- name: CMake Build
run: |
cmake -S WebFrame -B build -DBUILD_TESTING=OFF -DBUILD_RUNTIME=ON -DVCPKG_ROOT=${{ github.workspace }}/vcpkg
cmake --build build

- name: "Save VCPKG cache"
uses: actions/cache/save@v5
with:
path: ${{ github.workspace }}/vcpkg-${{ matrix.os }}
key: vcpkg-${{ matrix.os }}-${{ github.run_id }}
36 changes: 33 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,39 @@
option(BUILD_TESTING "Build testing" OFF)
option(BUILD_RUNTIME "Build runtime" ON)
option(BUILD_EXAMPLE "Build example" OFF)
option(BUILD_DOXYGEN "Build doxygen documentation" OFF)

include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/webframe.cmake)
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/configure.cmake)

if(NOT VCPKG_ROOT)
set(VCPKG_ROOT $ENV{VCPKG_ROOT})
if(NOT VCPKG_ROOT)
message(FATAL_ERROR "VCPKG_ROOT environment variable is not set. Please set it to the root of your vcpkg installation.")
endif()
endif()

configure_vcpkg_features()

set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")

cmake_minimum_required(VERSION 3.15)

project(webframe VERSION 0.1.0)

#add_library(webframe_shell STATIC src/shell/shell.cpp)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

configure_packages()

add_subdirectory(src)

#add_library(webframe_desktop SHARED)
if(BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
endif()

#add_library(webframe_browser SHARED)
if(BUILD_EXAMPLE)
add_subdirectory(example)
endif()
34 changes: 34 additions & 0 deletions cmake/configure.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
function(configure_vcpkg_features)
if(BUILD_TESTING)
list(APPEND VCPKG_MANIFEST_FEATURES "testing")
endif()

if(BUILD_RUNTIME)
list(APPEND VCPKG_MANIFEST_FEATURES "runtime")
endif()

if(BUILD_EXAMPLE)
list(APPEND VCPKG_MANIFEST_FEATURES "example")
endif()

set(VCPKG_MANIFEST_FEATURES "${VCPKG_MANIFEST_FEATURES}" PARENT_SCOPE)
endfunction()

function(configure_packages)
if(BUILD_TESTING)
find_package(maxtest CONFIG REQUIRED)
endif()
if(BUILD_RUNTIME)
find_package(Libevent CONFIG REQUIRED)
if(NOT WIN32)
find_package(CEF CONFIG REQUIRED)
endif()
find_package(wxWidgets CONFIG REQUIRED)
endif()
if(BUILD_EXAMPLE)
find_package(unofficial-sqlite3 REQUIRED)
find_package(yyjson CONFIG REQUIRED)
find_package(megamimes CONFIG REQUIRED)
find_package(hyperpage CONFIG REQUIRED)
endif()
endfunction()
Loading
Loading