Skip to content

Commit 88cca3e

Browse files
authored
Merge pull request #553 from wasmx/cmake_package
cmake: Add configuration for Cmake Package
2 parents a3d547e + 9927571 commit 88cca3e

7 files changed

Lines changed: 80 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ if(FIZZY_FUZZING)
8686
add_link_options(${fuzzing_flags})
8787
endif()
8888

89+
90+
include(CMakePackageConfigHelpers)
91+
include(GNUInstallDirs)
92+
8993
# Public include directory.
9094
set(FIZZY_INCLUDE_DIR $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
9195

@@ -100,5 +104,12 @@ if(FIZZY_TESTING)
100104
add_subdirectory(test)
101105
endif()
102106

107+
set(CMAKE_INSTALL_CMAKEPACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
108+
109+
write_basic_package_version_file(fizzyConfigVersion.cmake COMPATIBILITY ExactVersion)
110+
configure_package_config_file(cmake/Config.cmake.in fizzyConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_CMAKEPACKAGEDIR})
111+
103112
install(TARGETS fizzy EXPORT fizzyTargets)
104113
install(DIRECTORY include/fizzy TYPE INCLUDE)
114+
install(EXPORT fizzyTargets NAMESPACE fizzy:: DESTINATION ${CMAKE_INSTALL_CMAKEPACKAGEDIR})
115+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/fizzyConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/fizzyConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_CMAKEPACKAGEDIR})

cmake/Config.cmake.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include(${CMAKE_CURRENT_LIST_DIR}/fizzyTargets.cmake)
4+
check_required_components(fizzy)

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ add_subdirectory(utils)
2626
add_subdirectory(bench)
2727
add_subdirectory(bench_internal)
2828
add_subdirectory(compilation)
29+
add_subdirectory(integration)
2930
add_subdirectory(smoketests)
3031
add_subdirectory(spectests)
3132
add_subdirectory(testfloat)

test/integration/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Fizzy: A fast WebAssembly interpreter
2+
# Copyright 2020 The Fizzy Authors.
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
add_subdirectory(cmake_package)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Fizzy: A fast WebAssembly interpreter
2+
# Copyright 2020 The Fizzy Authors.
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
set(INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/install)
6+
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/build)
7+
set(USE_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/use)
8+
9+
file(MAKE_DIRECTORY ${BUILD_DIR} ${USE_BUILD_DIR})
10+
11+
set(PREFIX ${PROJECT_NAME}/integration/cmake_package)
12+
13+
add_test(
14+
NAME ${PREFIX}/configure
15+
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${PROJECT_SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}
16+
WORKING_DIRECTORY ${BUILD_DIR}
17+
)
18+
19+
add_test(
20+
NAME ${PREFIX}/install
21+
COMMAND ${CMAKE_COMMAND} --build ${BUILD_DIR} --target install
22+
)
23+
set_tests_properties(${PREFIX}/install PROPERTIES DEPENDS ${PREFIX}/configure)
24+
25+
26+
add_test(
27+
NAME ${PREFIX}/use/configure
28+
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} ${CMAKE_CURRENT_SOURCE_DIR}/use_fizzy -DCMAKE_PREFIX_PATH=${INSTALL_DIR}
29+
WORKING_DIRECTORY ${USE_BUILD_DIR}
30+
)
31+
set_tests_properties(${PREFIX}/use/configure PROPERTIES DEPENDS ${PREFIX}/install)
32+
33+
add_test(
34+
NAME ${PREFIX}/use/build
35+
COMMAND ${CMAKE_COMMAND} --build ${USE_BUILD_DIR}
36+
)
37+
set_tests_properties(${PREFIX}/use/build PROPERTIES DEPENDS ${PREFIX}/use/configure)
38+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Fizzy: A fast WebAssembly interpreter
2+
# Copyright 2020 The Fizzy Authors.
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
# This example shows how to use the fizzy library from the fizzy CMake package.
6+
cmake_minimum_required(VERSION 3.15)
7+
project(use_fizzy LANGUAGES CXX)
8+
find_package(fizzy CONFIG REQUIRED)
9+
10+
add_executable(use_fizzy use_fizzy.cpp)
11+
target_link_libraries(use_fizzy PRIVATE fizzy::fizzy)
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Fizzy: A fast WebAssembly interpreter
2+
// Copyright 2020 The Fizzy Authors.
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
#include <fizzy/fizzy.h>
6+
7+
int main()
8+
{
9+
return fizzy_validate(nullptr, 0) ? 0 : 1;
10+
}

0 commit comments

Comments
 (0)