Skip to content

Commit

Permalink
emsdk test
Browse files Browse the repository at this point in the history
  • Loading branch information
YGXXD committed Apr 18, 2024
1 parent 4dc3341 commit a7bc586
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 24 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: cmake ktm action
name: cmake ktm test

on:
push:
branches: [ "main" ]
branches: [ "dev_v0.1.3" ]
pull_request:
branches: [ "main" ]
branches: [ "dev_v0.1.3" ]

jobs:
build:
Expand Down Expand Up @@ -67,6 +67,7 @@ jobs:
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
echo "build-output-test-dir=${{ github.workspace }}/build/test" >> "$GITHUB_OUTPUT"
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
Expand All @@ -84,12 +85,11 @@ jobs:
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}

- name: Test
working-directory: ${{ steps.strings.outputs.build-output-dir }}
working-directory: ${{ steps.strings.outputs.build-output-test-dir }}
# Execute tests defined by the CMake configuration. Note that --build-config is needed because the default Windows generator is a multi-config generator (Visual Studio generator).
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
run: ctest --build-config ${{ matrix.build_type }}

- name: Install
# Install your program with the given configuration.
run: ${{ matrix.root }} cmake --install ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}

run: ${{ matrix.root }} cmake --install ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
59 changes: 59 additions & 0 deletions .github/workflows/cmake_ktm_wasm_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# This starter workflow is for a CMake project running on multiple platforms. There is a different starter workflow if you just want a single platform.
# See: https://github.com/actions/starter-workflows/blob/main/ci/cmake-single-platform.yml
name: cmake ktm wasm test

on:
push:
branches: [ "dev_v0.1.3" ]
pull_request:
branches: [ "dev_v0.1.3" ]

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false

matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
build_type: [Release]
include:
- os: macos-latest
- os: ubuntu-latest
- os: windows-latest

steps:
- uses: actions/checkout@v3

- name: Setup emsdk
uses: mymindstorm/setup-emsdk@v14
with:
version: "latest"
actions-cache-folder: 'emsdk-cache'

- name: Set reusable strings
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"
echo "build-output-test-dir=${{ github.workspace }}/build/test" >> "$GITHUB_OUTPUT"
- name: Configure CMake
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-DKTM_BUILD_TESTING=ON
-DKTM_BUILD_WASM=ON
-DCMAKE_TOOLCHAIN_FILE="$EMSDK/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
-S ${{ github.workspace }}
- name: Build
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}

- name: Test
working-directory: ${{ steps.strings.outputs.build-output-test-dir }}
run: ctest --build-config ${{ matrix.build_type }}

- name: Install
run: cmake --install ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
14 changes: 13 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,27 @@ cmake_minimum_required(VERSION 3.20)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

project(ktm)

add_executable(ktm ${CMAKE_CURRENT_SOURCE_DIR}/src/ktm.cpp)
if(KTM_BUILD_WASM)
add_compile_options(-msimd128)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
add_compile_options(/source-charset:utf-8)
add_compile_options(/execution-charset:utf-8)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR
"${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
add_compile_options(-march=native)
endif()

if(KTM_BUILD_TESTING)
add_subdirectory(test)
endif()

add_executable(ktm ${CMAKE_CURRENT_SOURCE_DIR}/src/ktm.cpp)

install(DIRECTORY ktm DESTINATION include)

if(NOT TARGET uninstall)
Expand Down
29 changes: 12 additions & 17 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
enable_testing()

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
add_compile_options(/std:c++17)
add_compile_options(/source-charset:utf-8)
add_compile_options(/execution-charset:utf-8)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-std=gnu++17)
add_compile_options(-march=native)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
add_compile_options(-std=gnu++17)
add_compile_options(-Wc++17-extensions)
add_compile_options(-march=native)
endif()

add_executable(geometry_test geometry_test.cpp)
add_executable(matrix_test matrix_test.cpp)
add_executable(quaternion_test quaternion_test.cpp)
add_executable(vector_test vector_test.cpp)

add_test(geometry_test geometry_test)
add_test(matrix_test matrix_test)
add_test(quaternion_test quaternion_test)
add_test(vector_test vector_test)
if(KTM_BUILD_WASM)
find_program(NODE node)
add_test(geometry_test ${NODE} geometry_test.js)
add_test(matrix_test ${NODE} matrix_test.js)
add_test(quaternion_test ${NODE} quaternion_test.js)
add_test(vector_test ${NODE} vector_test.js)
else()
add_test(geometry_test geometry_test)
add_test(matrix_test matrix_test)
add_test(quaternion_test quaternion_test)
add_test(vector_test vector_test)
endif()

0 comments on commit a7bc586

Please sign in to comment.