diff --git a/.github/workflows/beta-build.yml b/.github/workflows/beta-build.yml
index 1d5480312..4d5da7a51 100644
--- a/.github/workflows/beta-build.yml
+++ b/.github/workflows/beta-build.yml
@@ -45,7 +45,7 @@ jobs:
ref: ${{ github.ref }}
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
- cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: beta
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
@@ -59,7 +59,7 @@ jobs:
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: windows-cuda-11-7
- cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=C:/w/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
+ cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
channel: beta
@@ -75,7 +75,7 @@ jobs:
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: ubuntu-20-04
- cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=/home/runner/actions-runner/_work/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: beta
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
@@ -90,7 +90,7 @@ jobs:
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: ubuntu-2004-arm64
- cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=/home/runner/actions-runner/_work/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=beta -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: beta
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
diff --git a/.github/workflows/cortex-cpp-quality-gate.yml b/.github/workflows/cortex-cpp-quality-gate.yml
index fc2d52b63..55c30cc24 100644
--- a/.github/workflows/cortex-cpp-quality-gate.yml
+++ b/.github/workflows/cortex-cpp-quality-gate.yml
@@ -21,43 +21,72 @@ jobs:
fail-fast: false
matrix:
include:
- - os: "linux"
- name: "arm64"
- runs-on: "ubuntu-2004-arm64"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
- build-deps-cmake-flags: ""
- ccache-dir: ""
- - os: "linux"
- name: "amd64"
- runs-on: "ubuntu-20-04-cuda-12-0"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
- build-deps-cmake-flags: ""
- ccache-dir: ""
- - os: "mac"
- name: "amd64"
- runs-on: "macos-selfhosted-12"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
- build-deps-cmake-flags: ""
- ccache-dir: ""
- - os: "mac"
- name: "arm64"
- runs-on: "macos-selfhosted-12-arm64"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DMAC_ARM64=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
- build-deps-cmake-flags: ""
- ccache-dir: ""
+ # - os: "linux"
+ # name: "arm64"
+ # runs-on: "ubuntu-2004-arm64"
+ # cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON"
+ # build-deps-cmake-flags: ""
+ # ccache-dir: ""
+ # - os: "linux"
+ # name: "amd64"
+ # runs-on: "ubuntu-20-04-cuda-12-0"
+ # cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON"
+ # build-deps-cmake-flags: ""
+ # ccache-dir: ""
+ # - os: "mac"
+ # name: "amd64"
+ # runs-on: "macos-selfhosted-12"
+ # cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON"
+ # build-deps-cmake-flags: ""
+ # ccache-dir: ""
+ # - os: "mac"
+ # name: "arm64"
+ # runs-on: "macos-selfhosted-12-arm64"
+ # cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DMAC_ARM64=ON"
+ # build-deps-cmake-flags: ""
+ # ccache-dir: ""
- os: "windows"
name: "amd64"
runs-on: "windows-cuda-12-0"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=C:/w/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
+ # runs-on: "windows-2019"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
build-deps-cmake-flags: "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
+ # ccache-dir: ""
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
+
steps:
+ # - name: perl -V
+ # run: perl -V
+ # - name: Ensure we have a working toolchain
+ # run: cpanm ExtUtils::Manifest App::cpanminus
+ # - name: Install Dependencies
+ # run: cpanm -n --installdeps .
+ # - name: Run Tests
+ # run: cpanm --test-only -v .
+
+
- name: Clone
id: checkout
uses: actions/checkout@v3
with:
submodules: recursive
+ - name: Setup Perl
+ if: runner.os == 'Windows'
+ uses: shogo82148/actions-setup-perl@v1
+ with:
+ perl-version: "5.38"
+ distribution: strawberry
+
+ # - name: Set Perl environment variables
+ # if: runner.os == 'Windows'
+ # run: |
+ # echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
+ # # echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
+ # cd engine
+ # cmake -S ./third-party -B ./build_deps
+ # cmake --build ./build_deps --config Release -j4
+
- name: use python
continue-on-error: true
uses: actions/setup-python@v5
@@ -97,42 +126,42 @@ jobs:
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}"
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}"
- - name: Configure vcpkg
+ - name: Build 0
if: runner.os != 'Linux'
run: |
- cd engine
- make configure-vcpkg
-
- - name: Configure vcpkg linux amd64
- if: runner.os != 'Linux'
- run: |
- cd engine
- make configure-vcpkg
-
- - name: Configure vcpkg linux arm64
- if: runner.os == 'Linux'
- run: |
- cd engine
- # Set env if arch is arm64
- if [ "${{ matrix.name }}" == "arm64" ]; then
- sudo apt install ninja-build pkg-config -y
- export VCPKG_FORCE_SYSTEM_BINARIES=1
- fi
- make configure-vcpkg
-
- - name: Build
+ echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
+ # echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
+ cd engine
+ cmake -S ./third-party -B ./build_deps
+ cmake --build ./build_deps --config Release -j4
+ # make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ matrix.build-deps-cmake-flags }}"
+ # mkdir -p build
+ # cd build
+ # cmake .. ${{ matrix.cmake-flags }}
+ # cmake --build . --config Release -j4
+ set PATH=%PATH:C:\hostedtoolcache\windows\strawberry-perl\5.38.2\x64\perl\site\bin;=%
+ set PATH=%PATH:C:\hostedtoolcache\windows\strawberry-perl\5.38.2\x64\perl\bin;=%
+ set PATH=%PATH:C:\hostedtoolcache\windows\strawberry-perl\5.38.2\x64\c\bin;=%
+
+ - name: Build 1
if: runner.os != 'Linux'
run: |
+ # echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
+ # echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
cd engine
- make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ matrix.build-deps-cmake-flags }}"
+ # cmake -S ./third-party -B ./build_deps
+ # cmake --build ./build_deps --config Release -j4
+ make build
+ # make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ matrix.build-deps-cmake-flags }}"
+ # mkdir -p build
+ # cd build
+ # cmake .. ${{ matrix.cmake-flags }}
+ # cmake --build . --config Release -j4
- name: Build
if: runner.os == 'Linux'
run: |
cd engine
- if [ "${{ matrix.name }}" == "arm64" ]; then
- export VCPKG_FORCE_SYSTEM_BINARIES=1
- fi
make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ matrix.build-deps-cmake-flags }}"
@@ -357,31 +386,31 @@ jobs:
- os: "linux"
name: "arm64"
runs-on: "ubuntu-2004-arm64"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON"
build-deps-cmake-flags: ""
ccache-dir: ""
- os: "linux"
name: "amd64"
runs-on: "ubuntu-20-04-cuda-12-0"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON"
build-deps-cmake-flags: ""
ccache-dir: ""
- os: "mac"
name: "amd64"
runs-on: "macos-selfhosted-12"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON"
build-deps-cmake-flags: ""
ccache-dir: ""
- os: "mac"
name: "arm64"
runs-on: "macos-selfhosted-12-arm64"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DMAC_ARM64=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DMAC_ARM64=ON"
build-deps-cmake-flags: ""
ccache-dir: ""
- os: "windows"
name: "amd64"
runs-on: "windows-cuda-12-0"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=C:/w/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.event.pull_request.head.sha}} -DCMAKE_BUILD_TEST=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
build-deps-cmake-flags: "-DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
steps:
@@ -407,29 +436,6 @@ jobs:
run: |
choco install make pkgconfiglite ccache awscli 7zip ninja -y
- - name: Configure vcpkg
- if: runner.os != 'Linux'
- run: |
- cd engine
- make configure-vcpkg
-
- - name: Configure vcpkg linux amd64
- if: runner.os != 'Linux'
- run: |
- cd engine
- make configure-vcpkg
-
- - name: Configure vcpkg linux arm64
- if: runner.os == 'Linux'
- run: |
- cd engine
- # Set env if arch is arm64
- if [ "${{ matrix.name }}" == "arm64" ]; then
- sudo apt install ninja-build pkg-config -y
- export VCPKG_FORCE_SYSTEM_BINARIES=1
- fi
- make configure-vcpkg
-
- name: Build
if: runner.os != 'Linux'
run: |
@@ -440,9 +446,6 @@ jobs:
if: runner.os == 'Linux'
run: |
cd engine
- if [ "${{ matrix.name }}" == "arm64" ]; then
- export VCPKG_FORCE_SYSTEM_BINARIES=1
- fi
make build CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ matrix.build-deps-cmake-flags }}"
- name: Run setup config
diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml
index efdbfdf6f..0203fb4a8 100644
--- a/.github/workflows/nightly-build.yml
+++ b/.github/workflows/nightly-build.yml
@@ -54,7 +54,7 @@ jobs:
ref: ${{ needs.set-public-provider.outputs.ref }}
public_provider: ${{ needs.set-public-provider.outputs.public_provider }}
new_version: ${{ needs.get-update-version.outputs.new_version }}
- cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: nightly
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
@@ -67,7 +67,7 @@ jobs:
public_provider: ${{ needs.set-public-provider.outputs.public_provider }}
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: windows-cuda-11-7
- cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=C:/w/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
+ cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
channel: nightly
@@ -82,7 +82,7 @@ jobs:
public_provider: ${{ needs.set-public-provider.outputs.public_provider }}
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: ubuntu-20-04
- cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=/home/runner/actions-runner/_work/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: nightly
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
arch: amd64
@@ -96,7 +96,7 @@ jobs:
public_provider: ${{ needs.set-public-provider.outputs.public_provider }}
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: ubuntu-2004-arm64
- cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=/home/runner/actions-runner/_work/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=nightly -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: nightly
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
arch: arm64
diff --git a/.github/workflows/stable-build.yml b/.github/workflows/stable-build.yml
index c4b5f53f3..88022807a 100644
--- a/.github/workflows/stable-build.yml
+++ b/.github/workflows/stable-build.yml
@@ -45,7 +45,7 @@ jobs:
ref: ${{ github.ref }}
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
- cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: stable
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
@@ -59,7 +59,7 @@ jobs:
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: windows-cuda-11-7
- cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=C:/w/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
+ cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
build-deps-cmake-flags: "-DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja"
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache'
channel: stable
@@ -75,7 +75,7 @@ jobs:
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: ubuntu-20-04
- cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=/home/runner/actions-runner/_work/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: stable
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
@@ -90,7 +90,7 @@ jobs:
public_provider: github
new_version: ${{ needs.get-update-version.outputs.new_version }}
runs-on: ubuntu-2004-arm64
- cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}' -DCMAKE_TOOLCHAIN_FILE=/home/runner/actions-runner/_work/cortex.cpp/cortex.cpp/engine/vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_VARIANT=prod -DCORTEX_CPP_VERSION='v${{ needs.get-update-version.outputs.new_version }}'"
channel: stable
upload_url: ${{ needs.create-draft-release.outputs.upload_url }}
llamacpp-version: ${{ needs.get-llamacpp-latest-version.outputs.llamacpp_latest_version }}
diff --git a/.github/workflows/template-build-linux.yml b/.github/workflows/template-build-linux.yml
index 0ebd04176..8d1e20e50 100644
--- a/.github/workflows/template-build-linux.yml
+++ b/.github/workflows/template-build-linux.yml
@@ -127,23 +127,9 @@ jobs:
sudo apt update && sudo apt install gettext-base -y
python3 -m pip install awscli
- - name: Configure vcpkg
- run: |
- cd engine
- # Set env if arch is arm64
- if [ "${{ inputs.arch }}" == "arm64" ]; then
- sudo apt install ninja-build pkg-config -y
- export VCPKG_FORCE_SYSTEM_BINARIES=1
- fi
- make configure-vcpkg
-
- name: Build
run: |
cd engine
- # Set env if arch is arm64
- if [ "${{ inputs.arch }}" == "arm64" ]; then
- export VCPKG_FORCE_SYSTEM_BINARIES=1
- fi
make build CMAKE_EXTRA_FLAGS="${{ inputs.cmake-flags }}" BUILD_DEPS_CMAKE_EXTRA_FLAGS="${{ inputs.build-deps-cmake-flags }}"
- name: Install Python
diff --git a/.github/workflows/template-build-macos.yml b/.github/workflows/template-build-macos.yml
index 038546097..3b5e18392 100644
--- a/.github/workflows/template-build-macos.yml
+++ b/.github/workflows/template-build-macos.yml
@@ -139,11 +139,6 @@ jobs:
- name: Install jq
uses: dcarbone/install-jq-action@v2.0.1
-
- - name: Configure vcpkg
- run: |
- cd engine
- make configure-vcpkg
- name: Build
run: |
diff --git a/.github/workflows/template-build-windows-x64.yml b/.github/workflows/template-build-windows-x64.yml
index 399e3dd3e..3d25280ae 100644
--- a/.github/workflows/template-build-windows-x64.yml
+++ b/.github/workflows/template-build-windows-x64.yml
@@ -156,12 +156,6 @@ jobs:
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}"
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}"
- - name: Configure vcpkg
- shell: cmd
- run: |
- cd engine
- make configure-vcpkg
-
- name: Build
run: |
cd engine
diff --git a/.github/workflows/test-cortexso-model-hub.yml b/.github/workflows/test-cortexso-model-hub.yml
index 3bf7f96ab..bf3d451d5 100644
--- a/.github/workflows/test-cortexso-model-hub.yml
+++ b/.github/workflows/test-cortexso-model-hub.yml
@@ -16,7 +16,7 @@ jobs:
- os: "linux"
name: "amd64"
runs-on: "ubuntu-20-04-e2e-cortexcpp-model-hub"
- cmake-flags: "-DCORTEX_CPP_VERSION=${{github.head_ref}} -DCMAKE_BUILD_TEST=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ cmake-flags: "-DCORTEX_CPP_VERSION=${{github.head_ref}} -DCMAKE_BUILD_TEST=ON"
build-deps-cmake-flags: ""
ccache-dir: ""
steps:
@@ -45,11 +45,6 @@ jobs:
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}"
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}"
- - name: Configure vcpkg
- run: |
- cd engine
- make configure-vcpkg
-
- name: Build
run: |
cd engine
diff --git a/.gitignore b/.gitignore
index 258550dc5..bd6062daf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ prism.log
api.json
openai-python/*
build
+build_deps
platform/cortex.exe
platform/package-lock.json
.vscode
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index da05bcdd8..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "engine/vcpkg"]
- path = engine/vcpkg
- url = https://github.com/microsoft/vcpkg.git
diff --git a/BUILDING.md b/BUILDING.md
index 9c71d808b..77bae0557 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -28,12 +28,12 @@ cd vcpkg
./vcpkg install
```
-3. Build the Cortex.cpp inside the `engine/build` folder (you can change `-DCMAKE_TOOLCHAIN_FILE` to use your own `vcpkg`):
+3. Build the Cortex.cpp inside the `engine/build` folder:
```bash
mkdir build
cd build
-cmake .. -DBUILD_SHARED_LIBS=OFF "-DCMAKE_TOOLCHAIN_FILE=..\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-static
+cmake .. -DBUILD_SHARED_LIBS=OFF
cmake --build . --config Release -j4
```
@@ -54,12 +54,12 @@ cd vcpkg
./vcpkg install
```
-3. Build the Cortex.cpp inside the `engine/build` folder (you can change `-DCMAKE_TOOLCHAIN_FILE` to use your own `vcpkg`):
+3. Build the Cortex.cpp inside the `engine/build` folder:
```bash
mkdir build
cd build
-cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake
+cmake ..
make -j4
```
@@ -93,7 +93,7 @@ export VCPKG_FORCE_SYSTEM_BINARIES="$([[ $(uname -m) == 'arm64' ]] && echo '1' |
cd engine
mkdir -p build
cd build
-cmake .. -DCMAKE_TOOLCHAIN_FILE=$(realpath ..)/vcpkg/scripts/buildsystems/vcpkg.cmake
+cmake ..
make -j$(grep -c ^processor /proc/cpuinfo)
```
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 5f04da12e..b9b38ff16 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -62,7 +62,7 @@ COPY ./docs/static/openapi/cortex.json /app/docs/static/openapi/cortex.json
# Build project
# Configure vcpkg binary sources
-RUN cd engine && make configure-vcpkg && make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=${CORTEX_CPP_VERSION} -DCMAKE_BUILD_TEST=OFF -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ${CMAKE_EXTRA_FLAGS}"
+RUN cd engine && make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=${CORTEX_CPP_VERSION} -DCMAKE_BUILD_TEST=OFF ${CMAKE_EXTRA_FLAGS}"
# Stage 3: Runtime
FROM common as runtime
diff --git a/docker/Dockerfile.cache b/docker/Dockerfile.cache
index 3eabc5dce..4d3342476 100644
--- a/docker/Dockerfile.cache
+++ b/docker/Dockerfile.cache
@@ -92,7 +92,7 @@ COPY ./docs/static/openapi/cortex.json /app/docs/static/openapi/cortex.json
# Build project
# Configure vcpkg binary sources
RUN export VCPKG_BINARY_SOURCES="files,${LOCAL_CACHE_DIR},readwrite;default"; \
- cd engine && make configure-vcpkg && make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=${CORTEX_CPP_VERSION} -DCMAKE_BUILD_TEST=OFF -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake ${CMAKE_EXTRA_FLAGS}"
+ cd engine && make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=${CORTEX_CPP_VERSION} -DCMAKE_BUILD_TEST=OFF ${CMAKE_EXTRA_FLAGS}"
# Upload updated cache to MinIO (if remote cache is provided)
RUN if [ -n "${REMOTE_CACHE_URL}" ]; then \
diff --git a/docs/docs/installation/linux.mdx b/docs/docs/installation/linux.mdx
index debcbce1b..623b6dd03 100644
--- a/docs/docs/installation/linux.mdx
+++ b/docs/docs/installation/linux.mdx
@@ -91,8 +91,7 @@ sudo /usr/bin/cortex-uninstall.sh
```bash
cd engine
- make configure-vcpkg
- make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=$(git rev-parse HEAD) -DCMAKE_BUILD_TEST=OFF -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=$(git rev-parse HEAD) -DCMAKE_BUILD_TEST=OFF"
```
3. Verify that Cortex.cpp is builded correctly by getting help information.
diff --git a/docs/docs/installation/mac.mdx b/docs/docs/installation/mac.mdx
index 646a30571..dd407fac9 100644
--- a/docs/docs/installation/mac.mdx
+++ b/docs/docs/installation/mac.mdx
@@ -90,15 +90,13 @@ The script requires sudo permission.
```sh
cd engine
- make configure-vcpkg
- make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=latest -DCMAKE_BUILD_TEST=OFF -DMAC_ARM64=ON -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=latest -DCMAKE_BUILD_TEST=OFF -DMAC_ARM64=ON"
```
```sh
cd engine
- make configure-vcpkg
- make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=latest -DCMAKE_BUILD_TEST=OFF -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake"
+ make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=latest -DCMAKE_BUILD_TEST=OFF"
```
diff --git a/docs/docs/installation/windows.mdx b/docs/docs/installation/windows.mdx
index eeb3c3be1..da38cef7f 100644
--- a/docs/docs/installation/windows.mdx
+++ b/docs/docs/installation/windows.mdx
@@ -85,8 +85,7 @@ Follow the [linux installation steps](linux) to install Cortex.cpp on the WSL.
```cmd
cd engine
- make configure-vcpkg
- make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=latest -DCMAKE_BUILD_TEST=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=vcpkg\\scripts\\buildsystems\\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_BUILD_TYPE=RELEASE -GNinja"
+ make build CMAKE_EXTRA_FLAGS="-DCORTEX_CPP_VERSION=latest -DCMAKE_BUILD_TEST=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=RELEASE -GNinja"
```
3. Verify that Cortex.cpp is builded correctly by getting help information.
diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt
index 39052b08e..af5789d0c 100644
--- a/engine/CMakeLists.txt
+++ b/engine/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.22)
project(cortex-server C CXX)
@@ -15,46 +15,47 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
option(CORTEX_CQA "Enable Cortex Code Quality Assurance(DO NOT TURN THIS ON unless you know what you are doing)" OFF)
if(CORTEX_CQA)
- message(STATUS "CORTEX_CQA is ON: Enabling debug symbols, ASan, All Warnings, and treating Warnings as Errors")
-
- if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
- add_compile_options(-fsanitize=address -Wall -Wextra -Wpedantic -Werror -g)
- add_link_options(-fsanitize=address)
- elseif(MSVC)
- # TODO: Sang, test on Windows and setup MSVC accordingly
- add_compile_options(/INFERASAN /Wall /WX /Zi)
- add_link_options(/DEBUG)
- message(WARNING "Address Sanitizer might require additional setup on MSVC. Please refer to MSVC documentation for ASan.")
- else()
- message(WARNING "Address Sanitizer and warning flags are not automatically configured for this compiler. Please configure them manually if supported.")
- endif()
+ message(STATUS "CORTEX_CQA is ON: Enabling debug symbols, ASan, All Warnings, and treating Warnings as Errors")
+
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
+ add_compile_options(-fsanitize=address -Wall -Wextra -Wpedantic -Werror -g)
+ add_link_options(-fsanitize=address)
+ elseif(MSVC)
+ # TODO: Sang, test on Windows and setup MSVC accordingly
+ add_compile_options(/INFERASAN /Wall /WX /Zi)
+ add_link_options(/DEBUG)
+ message(WARNING "Address Sanitizer might require additional setup on MSVC. Please refer to MSVC documentation for ASan.")
+ else()
+ message(WARNING "Address Sanitizer and warning flags are not automatically configured for this compiler. Please configure them manually if supported.")
+ endif()
else()
- message(STATUS "CORTEX_CQA is OFF.")
+ message(STATUS "CORTEX_CQA is OFF.")
endif()
if(NOT CORTEX_CQA)
- message(STATUS "Setting up optimization flags for Release builds")
- if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
- # Add optimization flags for GCC/Clang
- add_compile_options($<$:-O3>)
- add_compile_options($<$:-flto>)
- add_link_options($<$:-flto>)
- elseif(MSVC)
- # Add optimization flags for MSVC
- add_compile_options($<$:/O2>)
- # Optional: Link-time optimization
- add_compile_options($<$:/GL>)
- add_link_options($<$:/LTCG>)
- endif()
+ message(STATUS "Setting up optimization flags for Release builds")
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
+ # Add optimization flags for GCC/Clang
+ add_compile_options($<$:-O3>)
+ add_compile_options($<$:-flto>)
+ add_link_options($<$:-flto>)
+ elseif(MSVC)
+ # Add optimization flags for MSVC
+ add_compile_options($<$:/O2>)
+ # Optional: Link-time optimization
+ add_compile_options($<$:/GL>)
+ add_link_options($<$:/LTCG>)
+ endif()
endif()
if(MSVC)
+ # set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
add_compile_options(
- $<$:/MT> #---------|
- $<$:/MTd> #---|-- Statically link the runtime libraries
- $<$:/MT> #--|
- $<$:/O2> #--|-- Optimize for speed in Release mode
- $<$:/Ob2> #-|-- Inline any suitable function
+ # $<$:/MT> #---------|
+ # $<$:/MTd> #---|-- Statically link the runtime libraries
+ # $<$:/MT> #--|
+ $<$:/O2> #--|-- Optimize for speed in Release mode
+ $<$:/Ob2> #-|-- Inline any suitable function
)
add_compile_options(/utf-8)
@@ -89,27 +90,47 @@ add_compile_definitions(CORTEX_VARIANT="${CORTEX_VARIANT}")
add_compile_definitions(CORTEX_CPP_VERSION="${CORTEX_CPP_VERSION}")
add_compile_definitions(CORTEX_CONFIG_FILE_PATH="${CORTEX_CONFIG_FILE_PATH}")
-option(CMAKE_BUILD_TEST "Enable testing" OFF)
+option(CMAKE_BUILD_TEST "Enable testing" ON)
option(CMAKE_BUILD_INJA_TEST "Enable inja example" OFF)
+set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/openssl)
+set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
+if(EXISTS ${OPENSSL_INSTALL_DIR}/lib64)
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib64)
+else()
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib)
+endif()
+find_package(OpenSSL REQUIRED)
+
if(CMAKE_BUILD_TEST)
add_subdirectory(test)
endif()
add_subdirectory(cli)
+
+
if(CMAKE_BUILD_INJA_TEST)
add_subdirectory(examples/inja)
endif()
-
-find_package(jsoncpp CONFIG REQUIRED)
-find_package(Drogon CONFIG REQUIRED)
-find_package(yaml-cpp CONFIG REQUIRED)
-find_package(unofficial-minizip CONFIG REQUIRED)
-find_package(LibArchive REQUIRED)
-find_package(CURL REQUIRED)
-find_package(SQLiteCpp REQUIRED)
-find_package(eventpp CONFIG REQUIRED)
-find_package(lfreist-hwinfo CONFIG REQUIRED)
+include(cmake/cli11.cmake)
+include(cmake/libarchive.cmake)
+include(cmake/curl.cmake)
+include(cmake/drogon.cmake)
+include(cmake/eventpp.cmake)
+include(cmake/gtest.cmake)
+include(cmake/indicators.cmake)
+include(cmake/inja.cmake)
+
+include(cmake/lfreist-hwinfo.cmake)
+include(cmake/minizip.cmake)
+include(cmake/sqlitecpp.cmake)
+include(cmake/tabulate.cmake)
+include(cmake/yaml-cpp.cmake)
+
+find_library(JSONCPP
+ NAMES jsoncpp
+ HINTS ${CMAKE_CURRENT_SOURCE_DIR}/build_deps/jsoncpp-lib/lib/
+)
## Generating openapi json
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/../docs/static/openapi/cortex.json" JSON_CONTENT)
@@ -117,10 +138,10 @@ string(LENGTH "${JSON_CONTENT}" CONTENT_LENGTH)
message("Content length: ${CONTENT_LENGTH}")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
- "#pragma once\n"
- "#include \n"
- "#include \n\n"
- "namespace CortexOpenApi {\n"
+ "#pragma once\n"
+ "#include \n"
+ "#include \n\n"
+ "namespace CortexOpenApi {\n"
)
set(CHUNK_SIZE 2000)
@@ -128,74 +149,89 @@ set(OFFSET 0)
set(CHUNK_INDEX 0)
while(${OFFSET} LESS ${CONTENT_LENGTH})
- math(EXPR REMAINING "${CONTENT_LENGTH} - ${OFFSET}")
-
- if(${REMAINING} LESS ${CHUNK_SIZE})
- string(SUBSTRING "${JSON_CONTENT}" ${OFFSET} ${REMAINING} CHUNK_CONTENT)
- math(EXPR OFFSET "${OFFSET} + ${REMAINING}")
- else()
- string(SUBSTRING "${JSON_CONTENT}" ${OFFSET} ${CHUNK_SIZE} CHUNK_CONTENT)
- math(EXPR OFFSET "${OFFSET} + ${CHUNK_SIZE}")
- endif()
-
- # Escape special characters
- string(REPLACE "\\" "\\\\" CHUNK_CONTENT "${CHUNK_CONTENT}")
- string(REPLACE "\"" "\\\"" CHUNK_CONTENT "${CHUNK_CONTENT}")
- string(REPLACE "\n" "\\n" CHUNK_CONTENT "${CHUNK_CONTENT}")
-
- file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
- " inline std::string const json_part_${CHUNK_INDEX} = \"${CHUNK_CONTENT}\";\n"
- )
-
- math(EXPR CHUNK_INDEX "${CHUNK_INDEX} + 1")
+ math(EXPR REMAINING "${CONTENT_LENGTH} - ${OFFSET}")
+
+ if(${REMAINING} LESS ${CHUNK_SIZE})
+ string(SUBSTRING "${JSON_CONTENT}" ${OFFSET} ${REMAINING} CHUNK_CONTENT)
+ math(EXPR OFFSET "${OFFSET} + ${REMAINING}")
+ else()
+ string(SUBSTRING "${JSON_CONTENT}" ${OFFSET} ${CHUNK_SIZE} CHUNK_CONTENT)
+ math(EXPR OFFSET "${OFFSET} + ${CHUNK_SIZE}")
+ endif()
+
+ # Escape special characters
+ string(REPLACE "\\" "\\\\" CHUNK_CONTENT "${CHUNK_CONTENT}")
+ string(REPLACE "\"" "\\\"" CHUNK_CONTENT "${CHUNK_CONTENT}")
+ string(REPLACE "\n" "\\n" CHUNK_CONTENT "${CHUNK_CONTENT}")
+
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
+ " inline std::string const json_part_${CHUNK_INDEX} = \"${CHUNK_CONTENT}\";\n"
+ )
+
+ math(EXPR CHUNK_INDEX "${CHUNK_INDEX} + 1")
endwhile()
# Add the get function that concatenates all parts
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
- "\n inline std::string GetOpenApiJson() {\n"
- " std::ostringstream ss;\n"
+ "\n inline std::string GetOpenApiJson() {\n"
+ " std::ostringstream ss;\n"
)
# Add each part to the stream
set(INDEX 0)
while(${INDEX} LESS ${CHUNK_INDEX})
- file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
- " ss << json_part_${INDEX};\n"
- )
- math(EXPR INDEX "${INDEX} + 1")
+ file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
+ " ss << json_part_${INDEX};\n"
+ )
+ math(EXPR INDEX "${INDEX} + 1")
endwhile()
file(APPEND "${CMAKE_CURRENT_BINARY_DIR}/cortex_openapi.h"
- " return ss.str();\n"
- " }\n"
- "}\n"
+ " return ss.str();\n"
+ " }\n"
+ "}\n"
)
## End of generating openapi json
-
+MESSAGE("SOURCE_DIR"${CMAKE_CURRENT_SOURCE_DIR})
add_executable(${TARGET_NAME} main.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/utils/cpuid/cpu_info.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/utils/file_logger.cc
-
- ${CMAKE_CURRENT_SOURCE_DIR}/extensions/template_renderer.cc
-
- ${CMAKE_CURRENT_SOURCE_DIR}/utils/dylib_path_manager.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/utils/process/utils.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/cpuid/cpu_info.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/file_logger.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/extensions/remote-engine/remote_engine.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/extensions/local-engine/local_engine.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/extensions/template_renderer.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/dylib_path_manager.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/process/utils.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/utils/curl_utils.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/extensions/remote-engine/remote_engine.cc
+ ${CMAKE_CURRENT_SOURCE_DIR}/extensions/local-engine/local_engine.cc
)
target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
+# MESSAGE("ssl="${CMAKE_CURRENT_BINARY_DIR}/openssl-src/include)
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/openssl/include)
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/jsoncpp-lib/include)
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../build/_deps/libarchive-src/libarchive)
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/../build/_deps/minizip-src)
+
+if(APPLE)
+ find_library(COREFOUNDATION_LIB CoreFoundation)
+ find_library(FOUNDATION_LIB Foundation)
+ find_library(CORESERVICES_LIB CoreServices)
+ target_link_libraries(${TARGET_NAME} PRIVATE ${COREFOUNDATION_LIB} ${FOUNDATION_LIB} ${CORESERVICES_LIB})
+endif()
-target_link_libraries(${TARGET_NAME} PRIVATE unofficial::minizip::minizip)
-target_link_libraries(${TARGET_NAME} PRIVATE LibArchive::LibArchive)
-target_link_libraries(${TARGET_NAME} PRIVATE CURL::libcurl)
-target_link_libraries(${TARGET_NAME} PRIVATE JsonCpp::JsonCpp Drogon::Drogon OpenSSL::SSL OpenSSL::Crypto yaml-cpp::yaml-cpp
- ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET_NAME} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+target_link_libraries(${TARGET_NAME} PRIVATE minizip)
+target_link_libraries(${TARGET_NAME} PRIVATE archive)
+target_link_libraries(${TARGET_NAME} PRIVATE trantor)
+target_link_libraries(${TARGET_NAME} PRIVATE drogon)
target_link_libraries(${TARGET_NAME} PRIVATE SQLiteCpp)
-target_link_libraries(${TARGET_NAME} PRIVATE eventpp::eventpp)
-target_link_libraries(${TARGET_NAME} PRIVATE lfreist-hwinfo::hwinfo)
+target_link_libraries(${TARGET_NAME} PRIVATE ${JSONCPP})
+target_link_libraries(${TARGET_NAME} PRIVATE libcurl)
+target_link_libraries(${TARGET_NAME} PRIVATE eventpp)
+target_link_libraries(${TARGET_NAME} PRIVATE yaml-cpp)
+target_link_libraries(${TARGET_NAME} PRIVATE hwinfo)
+target_link_libraries(${TARGET_NAME} PRIVATE inja)
# ##############################################################################
@@ -219,14 +255,14 @@ aux_source_directory(extensions EX_SRC)
aux_source_directory(migrations MIGR_SRC)
aux_source_directory(utils UTILS_SRC)
-target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} )
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_sources(${TARGET_NAME} PRIVATE ${UTILS_SRC} ${CONFIG_SRC} ${CTL_SRC} ${COMMON_SRC} ${SERVICES_SRC} ${DB_SRC} ${EX_SRC} ${MIGR_SRC} ${REPO_SRC})
set_target_properties(${TARGET_NAME} PROPERTIES
- RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}
- RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}
- RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
+ RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}
+ RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}
)
if(MSVC)
@@ -236,4 +272,4 @@ if(MSVC)
${CMAKE_CURRENT_SOURCE_DIR}/../.github/patches/windows
${CMAKE_BINARY_DIR}/
)
-endif()
\ No newline at end of file
+endif()
diff --git a/engine/Makefile b/engine/Makefile
index 1a70dee7f..bab7f72f0 100644
--- a/engine/Makefile
+++ b/engine/Makefile
@@ -30,28 +30,20 @@ ARCH ?= amd64
all:
@echo "Specify a target to run"
-configure-vcpkg:
-ifeq ($(OS),Windows_NT)
- @cd vcpkg && cmd /c bootstrap-vcpkg.bat;
- @cd vcpkg && cmd /c vcpkg install
-else ifeq ($(shell uname -s),Linux)
- @cd vcpkg && ./bootstrap-vcpkg.sh;
- @cd vcpkg && ./vcpkg install;
-else
- @cd vcpkg && ./bootstrap-vcpkg.sh;
- @cd vcpkg && ./vcpkg install;
-endif
-
# Build the Cortex engine
build:
ifeq ($(OS),Windows_NT)
@powershell -Command "mkdir -p build; cd build; cmake .. $(CMAKE_EXTRA_FLAGS); cmake --build . --config Release -j4;"
else ifeq ($(shell uname -s),Linux)
- @mkdir -p build && cd build; \
+ @cmake -S ./third-party -B ./build_deps; \
+ make -C build_deps/ -j4; \
+ mkdir -p build && cd build; \
cmake .. $(CMAKE_EXTRA_FLAGS); \
make -j4;
else
- @mkdir -p build && cd build; \
+ @cmake -S ./third-party -B ./build_deps; \
+ make -C build_deps/ -j4; \
+ mkdir -p build && cd build; \
cmake .. $(CMAKE_EXTRA_FLAGS); \
make -j4;
endif
diff --git a/engine/cli/CMakeLists.txt b/engine/cli/CMakeLists.txt
index bb18433fe..97279dc46 100644
--- a/engine/cli/CMakeLists.txt
+++ b/engine/cli/CMakeLists.txt
@@ -8,11 +8,11 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(MSVC)
- add_compile_options(
- $<$:/MT> #---------|
- $<$:/MTd> #---|-- Statically link the runtime libraries
- $<$:/MT> #--|
- )
+ # add_compile_options(
+ # $<$:/MT> #---------|
+ # $<$:/MTd> #---|-- Statically link the runtime libraries
+ # $<$:/MT> #--|
+ # )
add_compile_options(/utf-8)
add_definitions(-DUNICODE -D_UNICODE)
@@ -46,17 +46,26 @@ add_compile_definitions(CORTEX_VARIANT="${CORTEX_VARIANT}")
add_compile_definitions(CORTEX_CPP_VERSION="${CORTEX_CPP_VERSION}")
add_compile_definitions(CORTEX_CONFIG_FILE_PATH="${CORTEX_CONFIG_FILE_PATH}")
-find_package(jsoncpp CONFIG REQUIRED)
-find_package(yaml-cpp CONFIG REQUIRED)
-find_package(CLI11 CONFIG REQUIRED)
-find_package(unofficial-minizip CONFIG REQUIRED)
-find_package(LibArchive REQUIRED)
-find_package(tabulate CONFIG REQUIRED)
-find_package(CURL REQUIRED)
-find_package(SQLiteCpp REQUIRED)
-find_package(Trantor CONFIG REQUIRED)
-find_package(indicators CONFIG REQUIRED)
-find_package(lfreist-hwinfo CONFIG REQUIRED)
+set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/openssl)
+set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
+if(EXISTS ${OPENSSL_INSTALL_DIR}/lib64)
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib64)
+else()
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib)
+endif()
+find_package(OpenSSL REQUIRED)
+
+# find_package(jsoncpp CONFIG REQUIRED)
+# find_package(yaml-cpp CONFIG REQUIRED)
+# find_package(CLI11 CONFIG REQUIRED)
+# find_package(unofficial-minizip CONFIG REQUIRED)
+# find_package(LibArchive REQUIRED)
+# find_package(tabulate CONFIG REQUIRED)
+# find_package(CURL REQUIRED)
+# find_package(SQLiteCpp REQUIRED)
+# find_package(Trantor CONFIG REQUIRED)
+# find_package(indicators CONFIG REQUIRED)
+# find_package(lfreist-hwinfo CONFIG REQUIRED)
add_executable(${TARGET_NAME} main.cc
@@ -85,17 +94,19 @@ add_executable(${TARGET_NAME} main.cc
${CMAKE_CURRENT_SOURCE_DIR}/../utils/process/utils.cc
)
-target_link_libraries(${TARGET_NAME} PRIVATE CLI11::CLI11)
-target_link_libraries(${TARGET_NAME} PRIVATE unofficial::minizip::minizip)
-target_link_libraries(${TARGET_NAME} PRIVATE LibArchive::LibArchive)
-target_link_libraries(${TARGET_NAME} PRIVATE tabulate::tabulate)
-target_link_libraries(${TARGET_NAME} PRIVATE CURL::libcurl)
-target_link_libraries(${TARGET_NAME} PRIVATE JsonCpp::JsonCpp OpenSSL::SSL OpenSSL::Crypto yaml-cpp::yaml-cpp
- ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${TARGET_NAME} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+target_link_libraries(${TARGET_NAME} PRIVATE CLI11)
target_link_libraries(${TARGET_NAME} PRIVATE SQLiteCpp)
-target_link_libraries(${TARGET_NAME} PRIVATE Trantor::Trantor)
-target_link_libraries(${TARGET_NAME} PRIVATE indicators::indicators)
-target_link_libraries(${TARGET_NAME} PRIVATE lfreist-hwinfo::hwinfo)
+target_link_libraries(${TARGET_NAME} PRIVATE minizip)
+target_link_libraries(${TARGET_NAME} PRIVATE drogon)
+target_link_libraries(${TARGET_NAME} PRIVATE archive)
+target_link_libraries(${TARGET_NAME} PRIVATE tabulate)
+target_link_libraries(${TARGET_NAME} PRIVATE libcurl)
+target_link_libraries(${TARGET_NAME} PRIVATE eventpp)
+target_link_libraries(${TARGET_NAME} PRIVATE yaml-cpp)
+target_link_libraries(${TARGET_NAME} PRIVATE hwinfo)
+target_link_libraries(${TARGET_NAME} PRIVATE inja)
+target_link_libraries(${TARGET_NAME} PRIVATE indicators)
# ##############################################################################
@@ -120,6 +131,8 @@ aux_source_directory(../extensions EX_SRC)
target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/.. )
target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../build_deps/openssl/include)
+target_include_directories(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../build_deps/jsoncpp-lib/include)
target_sources(${TARGET_NAME} PRIVATE ${COMMANDS_SRC} ${CONFIG_SRC} ${COMMON_SRC} ${DB_SRC} ${EX_SRC})
diff --git a/engine/cli/main.cc b/engine/cli/main.cc
index 1fa45d6fd..2c310ef6a 100644
--- a/engine/cli/main.cc
+++ b/engine/cli/main.cc
@@ -90,7 +90,7 @@ int main(int argc, char* argv[]) {
return 1;
}
- SSL_library_init();
+ // SSL_library_init();
curl_global_init(CURL_GLOBAL_DEFAULT);
bool should_install_server = false;
diff --git a/engine/cmake/c-ares.cmake b/engine/cmake/c-ares.cmake
new file mode 100644
index 000000000..ca6937648
--- /dev/null
+++ b/engine/cmake/c-ares.cmake
@@ -0,0 +1,20 @@
+include(ExternalProject)
+
+# c-ares setup
+set(CARES_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/c-ares-lib)
+ExternalProject_Add(c-ares-project
+ GIT_REPOSITORY https://github.com/c-ares/c-ares.git
+ GIT_TAG v1.34.4
+ SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/c-ares-src
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/c-ares-build
+ INSTALL_DIR ${CARES_INSTALL_DIR}
+ CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${CARES_INSTALL_DIR}"
+)
+
+ExternalProject_Get_Property(c-ares-project INSTALL_DIR)
+add_library(c-ares STATIC IMPORTED)
+set(CARES_LIBRARIES ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}cares${CMAKE_STATIC_LIBRARY_SUFFIX})
+set(CARES_INCLUDE_DIRS ${INSTALL_DIR}/include)
+set_property(TARGET c-ares PROPERTY IMPORTED_LOCATION ${CARES_LIBRARIES})
+set_property(TARGET c-ares PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CARES_INCLUDE_DIRS})
+add_dependencies(c-ares c-ares-project)
\ No newline at end of file
diff --git a/engine/cmake/cli11.cmake b/engine/cmake/cli11.cmake
new file mode 100644
index 000000000..451ec3937
--- /dev/null
+++ b/engine/cmake/cli11.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(cli11
+ GIT_REPOSITORY https://github.com/CLIUtils/CLI11.git
+ GIT_TAG v2.5.0
+)
+
+FetchContent_MakeAvailable(cli11)
diff --git a/engine/cmake/curl.cmake b/engine/cmake/curl.cmake
new file mode 100644
index 000000000..4cd92c15c
--- /dev/null
+++ b/engine/cmake/curl.cmake
@@ -0,0 +1,23 @@
+include(FetchContent)
+
+set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/openssl)
+set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
+if(EXISTS ${OPENSSL_INSTALL_DIR}/lib64)
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib64)
+else()
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib)
+endif()
+
+find_package(OpenSSL REQUIRED)
+
+FetchContent_Declare(curl
+ GIT_REPOSITORY https://github.com/curl/curl.git
+ GIT_TAG curl-8_13_0
+)
+
+
+FetchContent_MakeAvailableWithArgs(curl
+ CURL_USE_LIBPSL=OFF
+ BUILD_EXAMPLES=OFF
+)
+
diff --git a/engine/cmake/drogon.cmake b/engine/cmake/drogon.cmake
new file mode 100644
index 000000000..76ec440c0
--- /dev/null
+++ b/engine/cmake/drogon.cmake
@@ -0,0 +1,55 @@
+include(FetchContent)
+
+set(USE_OSSP_UUID TRUE)
+
+
+set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/openssl)
+set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
+if(EXISTS ${OPENSSL_INSTALL_DIR}/lib64)
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib64)
+else()
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib)
+endif()
+
+
+set(ZLIB_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/zlib/install)
+set(ZLIB_INCLUDE_DIR ${ZLIB_INSTALL_DIR}/include)
+if(WIN32)
+ set(ZLIB_LIBRARY ${ZLIB_INSTALL_DIR}/lib/zlib.lib)
+elseif(APPLE)
+ set(ZLIB_LIBRARY ${ZLIB_INSTALL_DIR}/lib/libz.dylib)
+else()
+ set(ZLIB_LIBRARY ${ZLIB_INSTALL_DIR}/lib/libz.so)
+endif()
+
+
+set(JSONCPP_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/jsoncpp-lib)
+if(WIN32)
+ set(JSONCPP_LIBRARIES ${JSONCPP_INSTALL_DIR}/lib/jsoncpp.lib)
+elseif(APPLE)
+ set(JSONCPP_LIBRARIES ${JSONCPP_INSTALL_DIR}/lib/libjsoncpp.dylib)
+else()
+ set(JSONCPP_LIBRARIES ${JSONCPP_INSTALL_DIR}/lib/libjsoncpp.so)
+endif()
+set(JSONCPP_INCLUDE_DIRS ${JSONCPP_INSTALL_DIR}/include)
+
+set(C-ARES_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/c-ares-lib)
+if(WIN32)
+ set(ARES_LIBRARIES ${ARES_INSTALL_DIR}/lib/cares.lib)
+elseif(APPLE)
+ set(ARES_LIBRARIES ${ARES_INSTALL_DIR}/lib/libcares.dylib)
+else()
+ set(ARES_LIBRARIES ${ARES_INSTALL_DIR}/lib/libcares.so)
+endif()
+set(C-ARES_INCLUDE_DIRS ${C-ARES_INSTALL_DIR}/include)
+
+find_package(OpenSSL REQUIRED)
+
+FetchContent_Declare(drogon
+ GIT_REPOSITORY https://github.com/drogonframework/drogon.git
+ GIT_TAG v1.9.10
+)
+
+FetchContent_MakeAvailableWithArgs(drogon
+ BUILD_CTL=OFF
+)
diff --git a/engine/cmake/eventpp.cmake b/engine/cmake/eventpp.cmake
new file mode 100644
index 000000000..28844567f
--- /dev/null
+++ b/engine/cmake/eventpp.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(eventpp
+ GIT_REPOSITORY https://github.com/wqking/eventpp.git
+ GIT_TAG v0.1.3
+)
+
+FetchContent_MakeAvailable(eventpp)
diff --git a/engine/cmake/gtest.cmake b/engine/cmake/gtest.cmake
new file mode 100644
index 000000000..5b11febdb
--- /dev/null
+++ b/engine/cmake/gtest.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(googletest
+ GIT_REPOSITORY https://github.com/google/googletest.git
+ GIT_TAG v1.16.0
+)
+set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+FetchContent_MakeAvailable(googletest)
diff --git a/engine/cmake/indicators.cmake b/engine/cmake/indicators.cmake
new file mode 100644
index 000000000..eab98d478
--- /dev/null
+++ b/engine/cmake/indicators.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(indicators
+ GIT_REPOSITORY https://github.com/p-ranav/indicators.git
+ GIT_TAG v2.3
+)
+
+FetchContent_MakeAvailable(indicators)
diff --git a/engine/cmake/inja.cmake b/engine/cmake/inja.cmake
new file mode 100644
index 000000000..13a28a04b
--- /dev/null
+++ b/engine/cmake/inja.cmake
@@ -0,0 +1,9 @@
+include(FetchContent)
+MESSAGE("Start inja")
+FetchContent_Declare(inja
+ GIT_REPOSITORY https://github.com/pantor/inja.git
+ GIT_TAG v3.4.0
+)
+
+FetchContent_MakeAvailable(inja)
+MESSAGE("Stop inja")
diff --git a/engine/cmake/jsoncpp.cmake b/engine/cmake/jsoncpp.cmake
new file mode 100644
index 000000000..d53e889f1
--- /dev/null
+++ b/engine/cmake/jsoncpp.cmake
@@ -0,0 +1,44 @@
+# include(FetchContent)
+
+# FetchContent_Declare(jsoncpp
+# GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp.git
+# GIT_TAG 1.9.5
+# )
+
+# FetchContent_GetProperties(jsoncpp)
+# if (NOT jsoncpp_POPULATED)
+# FetchContent_Populate(jsoncpp)
+# add_subdirectory(${jsoncpp_SOURCE_DIR} ${jsoncpp_BINARY_DIR})
+# message(${jsoncpp_SOURCE_DIR})
+# message(${jsoncpp_BINARY_DIR})
+# endif ()
+
+# #FetchContent_MakeAvailable(jsoncpp)
+
+# FetchContent_MakeAvailable(jsoncpp)
+# find_package(jsoncpp)
+
+include(ExternalProject)
+
+set(jsoncpp_install_prefix ${CMAKE_CURRENT_BINARY_DIR}/jsoncpp-lib)
+ExternalProject_Add(jsoncpp-project
+ GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp.git
+ GIT_TAG 1.9.6
+ SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/jsoncpp-src
+ BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/jsoncpp-build
+ INSTALL_DIR ${jsoncpp_install_prefix}
+ CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${jsoncpp_install_prefix}"
+)
+
+ExternalProject_Get_Property(jsoncpp-project INSTALL_DIR)
+add_library(jsoncpp STATIC IMPORTED)
+set(JSONCPP_LIBRARIES ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}jsoncpp${CMAKE_STATIC_LIBRARY_SUFFIX})
+set(JSONCPP_INCLUDE_DIRS ${INSTALL_DIR}/include)
+
+set_property(TARGET jsoncpp PROPERTY IMPORTED_LOCATION ${JSONCPP_LIBRARIES})
+set_property(TARGET jsoncpp PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${JSONCPP_INCLUDE_DIRS})
+add_dependencies(jsoncpp jsoncpp-project)
+
+
+
+
diff --git a/engine/cmake/lfreist-hwinfo.cmake b/engine/cmake/lfreist-hwinfo.cmake
new file mode 100644
index 000000000..9208355ea
--- /dev/null
+++ b/engine/cmake/lfreist-hwinfo.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(lfreist-hwinfo
+ GIT_REPOSITORY https://github.com/lfreist/hwinfo.git
+ GIT_TAG main
+)
+
+FetchContent_MakeAvailable(lfreist-hwinfo)
diff --git a/engine/cmake/libarchive.cmake b/engine/cmake/libarchive.cmake
new file mode 100644
index 000000000..03e7a0385
--- /dev/null
+++ b/engine/cmake/libarchive.cmake
@@ -0,0 +1,15 @@
+include(FetchContent)
+
+include(cmake/utils.cmake)
+# set(ENABLE_TEST OFF)
+
+MESSAGE("Start libarchive")
+FetchContent_Declare(libarchive
+ GIT_REPOSITORY https://github.com/libarchive/libarchive.git
+ GIT_TAG v3.7.8
+)
+
+# FetchContent_MakeAvailable(libarchive)
+MESSAGE("End libarchive")
+
+FetchContent_MakeAvailableWithArgs(libarchive ENABLE_TEST=OFF)
\ No newline at end of file
diff --git a/engine/cmake/minizip.cmake b/engine/cmake/minizip.cmake
new file mode 100644
index 000000000..6656aaff2
--- /dev/null
+++ b/engine/cmake/minizip.cmake
@@ -0,0 +1,14 @@
+include(FetchContent)
+
+include(cmake/utils.cmake)
+
+FetchContent_Declare(minizip
+ GIT_REPOSITORY https://github.com/zlib-ng/minizip-ng.git
+ GIT_TAG 4.0.8
+)
+
+if(MSVC)
+ FetchContent_MakeAvailableWithArgs(minizip MZ_BUILD_TESTS=OFF BUILD_SHARED_LIBS=OFF)
+else()
+ FetchContent_MakeAvailable(minizip)
+endif()
diff --git a/engine/cmake/nlohmann-json.cmake b/engine/cmake/nlohmann-json.cmake
new file mode 100644
index 000000000..3bb0c4085
--- /dev/null
+++ b/engine/cmake/nlohmann-json.cmake
@@ -0,0 +1,29 @@
+# # include(FetchContent)
+
+# # FetchContent_Declare(nlohmann-json
+# # GIT_REPOSITORY https://github.com/nlohmann/json.git
+# # GIT_TAG v3.11.3
+# # )
+
+# # FetchContent_MakeAvailable(nlohmann-json)
+# # FetchContent_MakeAvailableWithArgs(nlohmann-json)
+
+# include(ExternalProject)
+
+# set(NLOHMANN_JSON_DIR ${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json-lib)
+# ExternalProject_Add(nlohmann_json-project
+# GIT_REPOSITORY https://github.com/nlohmann/json.git
+# GIT_TAG v3.11.3
+# SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json-src
+# BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json-build
+# INSTALL_DIR ${NLOHMANN_JSON_DIR}
+# CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${NLOHMANN_JSON_DIR}"
+# )
+
+# ExternalProject_Get_Property(nlohmann_json-project INSTALL_DIR)
+# add_library(nlohmann_json STATIC IMPORTED)
+# set(NLOHMANN_JSON_LIBRARIES ${INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}nlohmann_json${CMAKE_STATIC_LIBRARY_SUFFIX})
+# set(NLOHMANN_JSON_INCLUDE_DIRS ${INSTALL_DIR}/include)
+# set_property(TARGET nlohmann_json PROPERTY IMPORTED_LOCATION ${NLOHMANN_JSON_LIBRARIES})
+# set_property(TARGET nlohmann_json PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${NLOHMANN_JSON_INCLUDE_DIRS})
+# add_dependencies(nlohmann_json nlohmann_json-project)
\ No newline at end of file
diff --git a/engine/cmake/openssl.cmake b/engine/cmake/openssl.cmake
new file mode 100644
index 000000000..576a2ebf8
--- /dev/null
+++ b/engine/cmake/openssl.cmake
@@ -0,0 +1,71 @@
+include(ExternalProject)
+
+# Define directories for dependencies
+set(DEPS_DIR ${CMAKE_BINARY_DIR}/)
+set(ZLIB_INSTALL_DIR ${DEPS_DIR}/zlib/install)
+
+ExternalProject_Add(
+ zlib
+ GIT_REPOSITORY https://github.com/madler/zlib.git
+ GIT_TAG v1.2.11
+ CMAKE_ARGS
+ -DBUILD_SHARED_LIBS=ON
+ -DCMAKE_INSTALL_PREFIX=${ZLIB_INSTALL_DIR}
+)
+
+# Set variables for zlib include and library directories
+set(ZLIB_INCLUDE_DIR ${ZLIB_INSTALL_DIR}/include)
+set(ZLIB_LIBRARY_DIR ${ZLIB_INSTALL_DIR}/lib)
+
+set(OPENSSL_SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/openssl-src) # default path by CMake
+set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/openssl)
+set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
+
+set(OPENSSL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/config)
+if(MSVC)
+ ExternalProject_Add(
+ OpenSSL
+ SOURCE_DIR ${OPENSSL_SOURCE_DIR}
+ GIT_REPOSITORY https://github.com/openssl/openssl.git
+ GIT_TAG openssl-3.4.1
+ USES_TERMINAL_DOWNLOAD TRUE
+ CONFIGURE_COMMAND perl Configure VC-WIN64A no-idea no-mdc2 no-rc5 --prefix= --openssldir=/ssl
+ BUILD_IN_SOURCE 1
+ BUILD_COMMAND nmake
+ INSTALL_COMMAND nmake install
+ INSTALL_DIR ${OPENSSL_INSTALL_DIR}
+ )
+else()
+ ExternalProject_Add(
+ OpenSSL
+ SOURCE_DIR ${OPENSSL_SOURCE_DIR}
+ GIT_REPOSITORY https://github.com/openssl/openssl.git
+ GIT_TAG openssl-3.4.1
+ USES_TERMINAL_DOWNLOAD TRUE
+ CONFIGURE_COMMAND
+ ${OPENSSL_CONFIGURE_COMMAND}
+ --prefix=${OPENSSL_INSTALL_DIR}
+ --openssldir=${OPENSSL_INSTALL_DIR}
+ BUILD_COMMAND make
+ TEST_COMMAND ""
+ INSTALL_COMMAND make install
+ INSTALL_DIR ${OPENSSL_INSTALL_DIR}
+ )
+endif()
+
+
+
+# We cannot use find_library because ExternalProject_Add() is performed at build time.
+# And to please the property INTERFACE_INCLUDE_DIRECTORIES,
+# we make the include directory in advance.
+file(MAKE_DIRECTORY ${OPENSSL_INCLUDE_DIR})
+
+add_library(OpenSSL::SSL STATIC IMPORTED GLOBAL)
+set_property(TARGET OpenSSL::SSL PROPERTY IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib64/libssl.${OPENSSL_LIBRARY_SUFFIX})
+set_property(TARGET OpenSSL::SSL PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INCLUDE_DIR})
+add_dependencies(OpenSSL::SSL OpenSSL)
+
+add_library(OpenSSL::Crypto STATIC IMPORTED GLOBAL)
+set_property(TARGET OpenSSL::Crypto PROPERTY IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib64/libcrypto.${OPENSSL_LIBRARY_SUFFIX})
+set_property(TARGET OpenSSL::Crypto PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INCLUDE_DIR})
+add_dependencies(OpenSSL::Crypto OpenSSL)
diff --git a/engine/cmake/sqlitecpp.cmake b/engine/cmake/sqlitecpp.cmake
new file mode 100644
index 000000000..ced3ddfd5
--- /dev/null
+++ b/engine/cmake/sqlitecpp.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(sqlitecpp
+ GIT_REPOSITORY https://github.com/SRombauts/SQLiteCpp.git
+ GIT_TAG 3.3.2
+)
+
+FetchContent_MakeAvailable(sqlitecpp)
diff --git a/engine/cmake/tabulate.cmake b/engine/cmake/tabulate.cmake
new file mode 100644
index 000000000..a2b4a42d5
--- /dev/null
+++ b/engine/cmake/tabulate.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(tabulate
+ GIT_REPOSITORY https://github.com/p-ranav/tabulate.git
+ GIT_TAG v1.5
+)
+
+FetchContent_MakeAvailable(tabulate)
diff --git a/engine/cmake/trantor.cmake b/engine/cmake/trantor.cmake
new file mode 100644
index 000000000..25ef3ac5d
--- /dev/null
+++ b/engine/cmake/trantor.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(trantor
+ GIT_REPOSITORY https://github.com/an-tao/trantor.git
+ GIT_TAG v1.5.23
+)
+
+FetchContent_MakeAvailable(trantor)
diff --git a/engine/cmake/utils.cmake b/engine/cmake/utils.cmake
new file mode 100644
index 000000000..fd82917f7
--- /dev/null
+++ b/engine/cmake/utils.cmake
@@ -0,0 +1,68 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+include_guard()
+
+include(FetchContent)
+
+macro(parse_var arg key value)
+ string(REGEX REPLACE "^(.+)=(.+)$" "\\1;\\2" REGEX_RESULT ${arg})
+ list(GET REGEX_RESULT 0 ${key})
+ list(GET REGEX_RESULT 1 ${value})
+endmacro()
+
+function(FetchContent_MakeAvailableWithArgs dep)
+ if(NOT ${dep}_POPULATED)
+ message("Fetching ${dep}...")
+ FetchContent_Populate(${dep})
+
+ foreach(arg IN LISTS ARGN)
+ parse_var(${arg} key value)
+ set(${key}_OLD ${${key}})
+ set(${key} ${value} CACHE INTERNAL "")
+ message("In ${dep}: ${key} set to ${value}")
+ endforeach()
+
+ add_subdirectory(${${dep}_SOURCE_DIR} ${${dep}_BINARY_DIR} EXCLUDE_FROM_ALL)
+
+ foreach(arg IN LISTS ARGN)
+ parse_var(${arg} key value)
+ set(${key} ${${key}_OLD} CACHE INTERNAL "")
+ endforeach()
+ endif()
+endfunction()
+
+function(FetchContent_DeclareWithMirror dep url hash)
+ FetchContent_Declare(${dep}
+ URL ${DEPS_FETCH_PROXY}${url}
+ URL_HASH ${hash}
+ )
+endfunction()
+
+function(FetchContent_DeclareGitHubWithMirror dep repo tag hash)
+ FetchContent_DeclareWithMirror(${dep}
+ https://github.com/${repo}/archive/${tag}.zip
+ ${hash}
+ )
+endfunction()
+
+function(FetchContent_DeclareGitHubTarWithMirror dep repo tag hash)
+ FetchContent_DeclareWithMirror(${dep}
+ https://github.com/${repo}/archive/${tag}.tar.gz
+ ${hash}
+ )
+endfunction()
\ No newline at end of file
diff --git a/engine/cmake/yaml-cpp.cmake b/engine/cmake/yaml-cpp.cmake
new file mode 100644
index 000000000..b77494814
--- /dev/null
+++ b/engine/cmake/yaml-cpp.cmake
@@ -0,0 +1,8 @@
+include(FetchContent)
+
+FetchContent_Declare(yaml-cpp
+ GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git
+ GIT_TAG 0.8.0
+)
+
+FetchContent_MakeAvailable(yaml-cpp)
diff --git a/engine/cmake/zlib.cmake b/engine/cmake/zlib.cmake
new file mode 100644
index 000000000..225988b39
--- /dev/null
+++ b/engine/cmake/zlib.cmake
@@ -0,0 +1,27 @@
+cmake_minimum_required(VERSION 3.25...3.31)
+
+project(zlib_build LANGUAGES C)
+
+include(ExternalProject)
+
+ExternalProject_Add(
+ zlib1
+ DOWNLOAD_EXTRACT_TIMESTAMP TRUE
+ PREFIX ${CMAKE_CURRENT_BINARY_DIR}
+ #--Download step--------------
+ GIT_REPOSITORY https://github.com/ClausKlein/zlib.git
+ GIT_TAG release/v1.2.5
+ #--Update/Patch step----------
+ #--Configure step-------------
+ USES_TERMINAL_CONFIGURE TRUE
+ CONFIGURE_COMMAND cmake -G "${CMAKE_GENERATOR}" -S ../zlib1 -B . -D CMAKE_BUILD_TYPE=$
+ #--Build step-----------------
+ USES_TERMINAL_BUILD TRUE
+ # BUILD_IN_SOURCE 1
+ BUILD_COMMAND cmake --build . -j 8
+ #--Install step---------------
+ USES_TERMINAL_INSTALL TRUE
+ INSTALL_COMMAND cmake --install --prefix=${CMAKE_INSTALL_PREFIX}
+ #--Logging -------------------
+ LOG_BUILD ON
+)
\ No newline at end of file
diff --git a/engine/config/gguf_parser.h b/engine/config/gguf_parser.h
index 3dfefe1b0..ebfad20a8 100644
--- a/engine/config/gguf_parser.h
+++ b/engine/config/gguf_parser.h
@@ -1,5 +1,6 @@
#pragma once
#include
+#include
#include "yaml_config.h"
namespace config {
diff --git a/engine/database/engines.h b/engine/database/engines.h
index 1312a9c67..35460863f 100644
--- a/engine/database/engines.h
+++ b/engine/database/engines.h
@@ -2,6 +2,7 @@
#include
#include
+#include
#include
#include
#include
@@ -45,7 +46,7 @@ struct EngineEntry {
if (success) {
root["metadata"] = metadataJson;
} else {
- root["metadata"] = Json::Value::null;
+ root["metadata"] = Json::Value(Json::nullValue);
}
} else {
root["metadata"] = Json::Value(Json::objectValue); // empty object
diff --git a/engine/main.cc b/engine/main.cc
index abde0441b..d7e1f2f93 100644
--- a/engine/main.cc
+++ b/engine/main.cc
@@ -478,7 +478,7 @@ int main(int argc, char* argv[]) {
return 1;
}
- SSL_library_init();
+ // SSL_library_init();
curl_global_init(CURL_GLOBAL_DEFAULT);
// avoid printing logs to terminal
diff --git a/engine/services/inference_service.cc b/engine/services/inference_service.cc
index 75d95f06d..35d6baea2 100644
--- a/engine/services/inference_service.cc
+++ b/engine/services/inference_service.cc
@@ -14,8 +14,8 @@ cpp::result InferenceService::HandleChatCompletion(
}
CTL_DBG("engine_type: " << engine_type);
function_calling_utils::PreprocessRequest(json_body);
- CTL_DBG("engine_type: " << engine_type);
- auto tool_choice = json_body->get("tool_choice", Json::Value::null);
+ auto tool_choice =
+ json_body->get("tool_choice", Json::Value(Json::nullValue));
auto model_id = json_body->get("model", "").asString();
if (saved_models_.find(model_id) != saved_models_.end()) {
// check if model is started, if not start it first
@@ -273,7 +273,7 @@ InferResult InferenceService::GetModels(
for (auto r : res["data"]) {
resp_data.append(r);
}
- (void) status;
+ (void)status;
};
for (const auto& loaded_engine : loaded_engines) {
if (std::holds_alternative(loaded_engine)) {
diff --git a/engine/test/components/CMakeLists.txt b/engine/test/components/CMakeLists.txt
index 6ca836158..019bbfac4 100644
--- a/engine/test/components/CMakeLists.txt
+++ b/engine/test/components/CMakeLists.txt
@@ -3,9 +3,18 @@ project(test-components)
enable_testing()
-add_executable(${PROJECT_NAME}
- ${SRCS}
- ${CMAKE_CURRENT_SOURCE_DIR}/../../config/yaml_config.cc
+set(OPENSSL_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/../build_deps/openssl)
+set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include)
+if(EXISTS ${OPENSSL_INSTALL_DIR}/lib64)
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib64)
+else()
+ set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}/lib)
+endif()
+find_package(OpenSSL REQUIRED)
+
+add_executable(${PROJECT_NAME}
+ ${SRCS}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../config/yaml_config.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../config/gguf_parser.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../cli/commands/cortex_upd_cmd.cc
${CMAKE_CURRENT_SOURCE_DIR}/../../cli/commands/server_stop_cmd.cc
@@ -19,22 +28,29 @@ add_executable(${PROJECT_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/../../extensions/template_renderer.cc
)
-find_package(Drogon CONFIG REQUIRED)
-find_package(GTest CONFIG REQUIRED)
-find_package(yaml-cpp CONFIG REQUIRED)
-find_package(unofficial-minizip CONFIG REQUIRED)
-find_package(LibArchive REQUIRED)
-find_package(CURL REQUIRED)
-find_package(SQLiteCpp REQUIRED)
-
-target_link_libraries(${PROJECT_NAME} PRIVATE Drogon::Drogon GTest::gtest GTest::gtest_main yaml-cpp::yaml-cpp
- ${CMAKE_THREAD_LIBS_INIT})
-
-target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::minizip::minizip)
-target_link_libraries(${PROJECT_NAME} PRIVATE LibArchive::LibArchive)
-target_link_libraries(${PROJECT_NAME} PRIVATE CURL::libcurl)
-target_link_libraries(${PROJECT_NAME} PRIVATE SQLiteCpp)
+# find_package(Drogon CONFIG REQUIRED)
+# find_package(GTest CONFIG REQUIRED)
+# find_package(yaml-cpp CONFIG REQUIRED)
+# find_package(unofficial-minizip CONFIG REQUIRED)
+# find_package(LibArchive REQUIRED)
+# find_package(CURL REQUIRED)
+# find_package(SQLiteCpp REQUIRED)
+
+target_link_libraries(${PROJECT_NAME} PRIVATE GTest::gtest GTest::gtest_main GTest::gmock_main
+ ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(${PROJECT_NAME} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
+target_link_libraries(${PROJECT_NAME} PRIVATE minizip)
+target_link_libraries(${PROJECT_NAME} PRIVATE archive)
+target_link_libraries(${PROJECT_NAME} PRIVATE libcurl)
+target_link_libraries(${PROJECT_NAME} PRIVATE SQLiteCpp)
+
+target_link_libraries(${PROJECT_NAME} PRIVATE eventpp)
+target_link_libraries(${PROJECT_NAME} PRIVATE yaml-cpp)
+target_link_libraries(${PROJECT_NAME} PRIVATE hwinfo)
+target_link_libraries(${PROJECT_NAME} PRIVATE drogon)
+
+target_link_libraries(${PROJECT_NAME} PRIVATE inja)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../)
add_test(NAME ${PROJECT_NAME}
- COMMAND ${PROJECT_NAME})
+ COMMAND ${PROJECT_NAME})
diff --git a/engine/test/components/test_cortex_config.cc b/engine/test/components/test_cortex_config.cc
index 12eebc6f3..7c98f9af9 100644
--- a/engine/test/components/test_cortex_config.cc
+++ b/engine/test/components/test_cortex_config.cc
@@ -4,6 +4,7 @@
#include
#include "gtest/gtest.h"
#include "utils/config_yaml_utils.h"
+#include
namespace config_yaml_utils {
namespace cyu = config_yaml_utils;
diff --git a/engine/test/components/test_function_calling.cc b/engine/test/components/test_function_calling.cc
index 7a4810b29..24ac3e030 100644
--- a/engine/test/components/test_function_calling.cc
+++ b/engine/test/components/test_function_calling.cc
@@ -30,7 +30,7 @@ TEST_F(FunctionCallingUtilsTest, HasTools) {
(*request)["tools"] = "random";
EXPECT_FALSE(function_calling_utils::HasTools(request));
- (*request)["tools"] = Json::Value::null;
+ (*request)["tools"] = Json::Value(Json::nullValue);
EXPECT_FALSE(function_calling_utils::HasTools(request));
}
diff --git a/engine/third-party/CMakeLists.txt b/engine/third-party/CMakeLists.txt
new file mode 100644
index 000000000..f0f5fb2ed
--- /dev/null
+++ b/engine/third-party/CMakeLists.txt
@@ -0,0 +1,10 @@
+cmake_minimum_required(VERSION 3.12.0 FATAL_ERROR)
+project(MyProject)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+set(THIRD_PARTY_INSTALL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../build_deps/_install)
+
+include(../cmake/nlohmann-json.cmake)
+include(../cmake/c-ares.cmake)
+include(../cmake/jsoncpp.cmake)
+include(../cmake/openssl.cmake)
\ No newline at end of file
diff --git a/engine/utils/archive_utils.h b/engine/utils/archive_utils.h
index dba698731..a5f5f92ef 100644
--- a/engine/utils/archive_utils.h
+++ b/engine/utils/archive_utils.h
@@ -1,6 +1,7 @@
#include
#include
-#include
+// #include
+#include "unzip.h"
#include
#include
#include
diff --git a/engine/utils/config_yaml_utils.h b/engine/utils/config_yaml_utils.h
index c871fd100..963bc09fb 100644
--- a/engine/utils/config_yaml_utils.h
+++ b/engine/utils/config_yaml_utils.h
@@ -2,10 +2,10 @@
#include
#include
+#include
#include "utils/engine_constants.h"
#include "utils/logging_utils.h"
-
-#include
+#include "yaml-cpp/yaml.h"
#include "utils/engine_constants.h"
diff --git a/engine/utils/curl_utils.h b/engine/utils/curl_utils.h
index 9035b6b3c..11d33e255 100644
--- a/engine/utils/curl_utils.h
+++ b/engine/utils/curl_utils.h
@@ -5,6 +5,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -37,8 +38,8 @@ cpp::result ReadRemoteYaml(const std::string& url);
*/
cpp::result SimpleGetJson(const std::string& url,
const int timeout = -1);
-cpp::result SimpleGetJsonRecursive(const std::string& url,
- const int timeout = -1);
+cpp::result SimpleGetJsonRecursive(
+ const std::string& url, const int timeout = -1);
cpp::result SimplePostJson(
const std::string& url, const std::string& body = "");
diff --git a/engine/utils/file_logger.h b/engine/utils/file_logger.h
index 58b719019..c946917ab 100644
--- a/engine/utils/file_logger.h
+++ b/engine/utils/file_logger.h
@@ -7,6 +7,8 @@
#include
#include
#include
+#include
+#include
#ifdef _WIN32
#include
@@ -16,7 +18,7 @@
namespace trantor {
-class TRANTOR_EXPORT FileLogger : public AsyncFileLogger {
+class FileLogger : public AsyncFileLogger {
public:
FileLogger();
~FileLogger();
diff --git a/engine/utils/minja.hpp b/engine/utils/minja.hpp
index 47f9694ca..8ea3dfd16 100644
--- a/engine/utils/minja.hpp
+++ b/engine/utils/minja.hpp
@@ -1754,14 +1754,30 @@ struct ArgumentsExpression {
}
};
-static std::string strip(const std::string& s) {
- auto start = s.find_first_not_of(" \t\n\r");
+static std::string strip(const std::string& s, const std::string& chars = "",
+ bool left = true, bool right = true) {
+ auto charset = chars.empty() ? " \t\n\r" : chars;
+ auto start = left ? s.find_first_not_of(charset) : 0;
if (start == std::string::npos)
return "";
- auto end = s.find_last_not_of(" \t\n\r");
+ auto end = right ? s.find_last_not_of(charset) : s.size() - 1;
return s.substr(start, end - start + 1);
}
+static std::vector split(const std::string& s,
+ const std::string& sep) {
+ std::vector result;
+ size_t start = 0;
+ size_t end = s.find(sep);
+ while (end != std::string::npos) {
+ result.push_back(s.substr(start, end - start));
+ start = end + sep.length();
+ end = s.find(sep, start);
+ }
+ result.push_back(s.substr(start));
+ return result;
+}
+
static std::string capitalize(const std::string& s) {
if (s.empty())
return s;
@@ -1867,8 +1883,26 @@ class MethodCallExpr : public Expression {
} else if (obj.is_string()) {
auto str = obj.get();
if (method->get_name() == "strip") {
- vargs.expectArgs("strip method", {0, 0}, {0, 0});
- return Value(strip(str));
+ vargs.expectArgs("strip method", {0, 1}, {0, 0});
+ auto chars = vargs.args.empty() ? "" : vargs.args[0].get();
+ return Value(strip(str, chars));
+ } else if (method->get_name() == "lstrip") {
+ vargs.expectArgs("lstrip method", {0, 1}, {0, 0});
+ auto chars = vargs.args.empty() ? "" : vargs.args[0].get();
+ return Value(strip(str, chars, /* left= */ true, /* right= */ false));
+ } else if (method->get_name() == "rstrip") {
+ vargs.expectArgs("rstrip method", {0, 1}, {0, 0});
+ auto chars = vargs.args.empty() ? "" : vargs.args[0].get();
+ return Value(strip(str, chars, /* left= */ false, /* right= */ true));
+ } else if (method->get_name() == "split") {
+ vargs.expectArgs("split method", {1, 1}, {0, 0});
+ auto sep = vargs.args[0].get();
+ auto parts = split(str, sep);
+ Value result = Value::array();
+ for (const auto& part : parts) {
+ result.push_back(Value(part));
+ }
+ return result;
} else if (method->get_name() == "capitalize") {
vargs.expectArgs("capitalize method", {0, 0}, {0, 0});
return Value(capitalize(str));
diff --git a/engine/utils/nlohmann/json.hpp b/engine/utils/nlohmann/json.hpp
new file mode 100644
index 000000000..799d41f30
--- /dev/null
+++ b/engine/utils/nlohmann/json.hpp
@@ -0,0 +1,25510 @@
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++
+// | | |__ | | | | | | version 3.11.3
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann
+// SPDX-License-Identifier: MIT
+
+/****************************************************************************\
+ * Note on documentation: The source files contain links to the online *
+ * documentation of the public API at https://json.nlohmann.me. This URL *
+ * contains the most recent documentation and should also be applicable to *
+ * previous versions; documentation for deprecated functions is not *
+ * removed, but marked deprecated. See "Generate documentation" section in *
+ * file docs/README.md. *
+\****************************************************************************/
+
+#ifndef INCLUDE_NLOHMANN_JSON_HPP_
+#define INCLUDE_NLOHMANN_JSON_HPP_
+
+#include // all_of, find, for_each
+#include // nullptr_t, ptrdiff_t, size_t
+#include // hash, less
+#include // initializer_list
+#ifndef JSON_NO_IO
+ #include // istream, ostream
+#endif // JSON_NO_IO
+#include // random_access_iterator_tag
+#include // unique_ptr
+#include // string, stoi, to_string
+#include // declval, forward, move, pair, swap
+#include // vector
+
+// #include
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++
+// | | |__ | | | | | | version 3.11.3
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann
+// SPDX-License-Identifier: MIT
+
+
+
+#include
+
+// #include
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++
+// | | |__ | | | | | | version 3.11.3
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann
+// SPDX-License-Identifier: MIT
+
+
+
+// This file contains all macro definitions affecting or depending on the ABI
+
+#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK
+ #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
+ #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3
+ #warning "Already included a different version of the library!"
+ #endif
+ #endif
+#endif
+
+#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum)
+#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum)
+#define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum)
+
+#ifndef JSON_DIAGNOSTICS
+ #define JSON_DIAGNOSTICS 0
+#endif
+
+#ifndef JSON_DIAGNOSTIC_POSITIONS
+ #define JSON_DIAGNOSTIC_POSITIONS 0
+#endif
+
+#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
+ #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0
+#endif
+
+#if JSON_DIAGNOSTICS
+ #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag
+#else
+ #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS
+#endif
+
+#if JSON_DIAGNOSTIC_POSITIONS
+ #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp
+#else
+ #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS
+#endif
+
+#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
+ #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp
+#else
+ #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON
+#endif
+
+#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION
+ #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0
+#endif
+
+// Construct the namespace ABI tags component
+#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c
+#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \
+ NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c)
+
+#define NLOHMANN_JSON_ABI_TAGS \
+ NLOHMANN_JSON_ABI_TAGS_CONCAT( \
+ NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \
+ NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \
+ NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS)
+
+// Construct the namespace version component
+#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \
+ _v ## major ## _ ## minor ## _ ## patch
+#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \
+ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch)
+
+#if NLOHMANN_JSON_NAMESPACE_NO_VERSION
+#define NLOHMANN_JSON_NAMESPACE_VERSION
+#else
+#define NLOHMANN_JSON_NAMESPACE_VERSION \
+ NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \
+ NLOHMANN_JSON_VERSION_MINOR, \
+ NLOHMANN_JSON_VERSION_PATCH)
+#endif
+
+// Combine namespace components
+#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b
+#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \
+ NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b)
+
+#ifndef NLOHMANN_JSON_NAMESPACE
+#define NLOHMANN_JSON_NAMESPACE \
+ nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \
+ NLOHMANN_JSON_ABI_TAGS, \
+ NLOHMANN_JSON_NAMESPACE_VERSION)
+#endif
+
+#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN
+#define NLOHMANN_JSON_NAMESPACE_BEGIN \
+ namespace nlohmann \
+ { \
+ inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \
+ NLOHMANN_JSON_ABI_TAGS, \
+ NLOHMANN_JSON_NAMESPACE_VERSION) \
+ {
+#endif
+
+#ifndef NLOHMANN_JSON_NAMESPACE_END
+#define NLOHMANN_JSON_NAMESPACE_END \
+ } /* namespace (inline namespace) NOLINT(readability/namespace) */ \
+ } // namespace nlohmann
+#endif
+
+// #include
+// __ _____ _____ _____
+// __| | __| | | | JSON for Modern C++
+// | | |__ | | | | | | version 3.11.3
+// |_____|_____|_____|_|___| https://github.com/nlohmann/json
+//
+// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann
+// SPDX-License-Identifier: MIT
+
+
+
+#include // transform
+#include // array
+#include // forward_list
+#include // inserter, front_inserter, end
+#include