Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
39 changes: 39 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: CMake

on:
push:
branches-ignore:
- 'ci/**'
- '!ci/gha**'
- 'dependabot/**'
pull_request:
branches:
- 'master'

concurrency:
group: cmake-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
test-install:
name: CMake - ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm]

steps:
- uses: actions/checkout@v6

- uses: ilammy/msvc-dev-cmd@v1

- name: Configure SIMDe
run: cmake -G Ninja -S . -B build

- name: Build SIMDe
run: cmake --build build

- name: Test SIMDe Package
run: ctest --test-dir build --output-on-failure --verbose

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

project(
simde
DESCRIPTION
"Implementations of SIMD instruction sets for systems which don't natively support them."
HOMEPAGE_URL "https://github.com/simd-everywhere/simde"
LANGUAGES C CXX
VERSION 0.8.4
)

# Options
option(SIMDE_TEST_CMAKE_PACKAGING "Test cmake packaging" ${PROJECT_IS_TOP_LEVEL})

# The main simde library
add_library(simde INTERFACE)
add_library(simde::simde ALIAS simde)

target_compile_features(simde INTERFACE c_std_99)

target_include_directories(
simde
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include>
)

if(SIMDE_TEST_CMAKE_PACKAGING)
include(CTest)
enable_testing()
add_subdirectory(test/cmake-packaging)
endif()

include(GNUInstallDirs)

# Install headers
install(DIRECTORY simde DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

# Export targets
install(TARGETS simde EXPORT simde-targets)

# Package Configuration
include(CMakePackageConfigHelpers)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/simde-config-version.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

file(
WRITE
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake.in
"@PACKAGE_INIT@\n"
"include(\"\${CMAKE_CURRENT_LIST_DIR}/simde-config-targets.cmake\")\n"
)

configure_package_config_file(
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simde
NO_SET_AND_CHECK_MACRO
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)

install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/simde-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/simde-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simde
)

install(
EXPORT simde-targets
FILE simde-config-targets.cmake
NAMESPACE simde::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simde
)
2 changes: 1 addition & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ RUN \
apt-get upgrade -y && \
apt-get install -yq --no-install-recommends \
git build-essential vim \
ccache cmake ninja-build \
ccache ninja-build \
'^clang-[0-9\.]+$' \
'^llvm-[0-9\.]+$' \
'^g(cc|\+\+)-[0-9\.]+$' \
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.ubuntu
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ RUN \
apt-get upgrade -y && \
apt-get install -yq --no-install-recommends \
git build-essential vim \
ccache cmake ninja-build \
ccache ninja-build \
'^clang-[0-9\.]+$' \
'^llvm-[0-9\.]+$' \
'^g(cc|\+\+)-[0-9\.]+$' \
Expand Down
2 changes: 1 addition & 1 deletion docker/Dockerfile.ubuntu_bionic
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ RUN \
apt-get upgrade -y && \
apt-get install -yq --no-install-recommends \
git build-essential vim \
ccache cmake ninja-build \
ccache ninja-build \
'^clang-[0-9\.]+$' \
'^llvm-[0-9\.]+$' \
'^g(cc|\+\+)-[0-9\.]+$' \
Expand Down
204 changes: 0 additions & 204 deletions test/CMakeLists.txt

This file was deleted.

27 changes: 27 additions & 0 deletions test/cmake-packaging/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
add_test(
NAME simde-cmake-install
COMMAND ${CMAKE_CTEST_COMMAND}
--build-and-test "${PROJECT_SOURCE_DIR}"
"${PROJECT_BINARY_DIR}/build"
--build-generator ${CMAKE_GENERATOR}
--build-target install
--build-options "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/install"
)

add_test(
NAME simde-cmake-find-package
COMMAND ${CMAKE_CTEST_COMMAND}
--build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/cmake-find-package"
"${PROJECT_BINARY_DIR}/cmake-find-package/build"
--build-generator "${CMAKE_GENERATOR}"
--build-options "-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}/install"
)
set_tests_properties(simde-cmake-find-package PROPERTIES DEPENDS simde-cmake-install)

add_test(
NAME simde-cmake-fetchcontent
COMMAND ${CMAKE_CTEST_COMMAND}
--build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/cmake-fetchcontent"
"${PROJECT_BINARY_DIR}/cmake-fetchcontent/build"
--build-generator "${CMAKE_GENERATOR}"
)
16 changes: 16 additions & 0 deletions test/cmake-packaging/cmake-fetchcontent/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 3.22)
project(simde-fetchcontent-consumer LANGUAGES C CXX)

include(FetchContent)
FetchContent_Declare(simde SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../)
FetchContent_MakeAvailable(simde)

add_executable(consumer-fc-c main.c)
target_link_libraries(consumer-fc-c PRIVATE simde::simde)

add_executable(consumer-fc-cpp main.cpp)
target_link_libraries(consumer-fc-cpp PRIVATE simde::simde)

enable_testing()
add_test(NAME consumer-fc-c COMMAND consumer-fc-c)
add_test(NAME consumer-fc-cpp COMMAND consumer-fc-cpp)
Loading
Loading