1 cmake_minimum_required(VERSION 3.13)
4 set(duktape_MAJOR_VERSION 2)
5 set(duktape_MINOR_VERSION 4)
6 set(duktape_PATCH_VERSION 0)
7 set(duktape_VERSION ${duktape_MAJOR_VERSION}.${duktape_MINOR_VERSION}.${duktape_PATCH_VERSION})
9 option(CMAKE_VERBOSE_MAKEFILE "Create verbose makefile" OFF)
10 option(BUILD_SHARED_LIBS "Create duktape as a shared library" ON)
12 project(duktape VERSION ${duktape_VERSION})
14 file(GLOB_RECURSE DUKTAPE_SOURCES "${CMAKE_CURRENT_LIST_DIR}/src/*.c")
15 file(GLOB_RECURSE DUKTAPE_HEADERS "${CMAKE_CURRENT_LIST_DIR}/src/*.h")
17 add_library(duktape ${DUKTAPE_SOURCES} ${DUKTAPE_HEADERS})
18 target_include_directories(duktape PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src")
19 set_target_properties(duktape PROPERTIES PUBLIC_HEADER "${DUKTAPE_HEADERS}")
20 set_target_properties(duktape PROPERTIES VERSION ${duktape_VERSION})
21 set_target_properties(duktape PROPERTIES SOVERSION ${duktape_MAJOR_VERSION})
23 if (BUILD_SHARED_LIBS)
24 target_compile_definitions(duktape PRIVATE -DDUK_F_DLL_BUILD)
27 install(TARGETS duktape
29 ARCHIVE DESTINATION "lib"
30 LIBRARY DESTINATION "lib"
31 RUNTIME DESTINATION "bin"
32 PUBLIC_HEADER DESTINATION "include"
36 install(EXPORT duktapeTargets
37 FILE duktapeTargets.cmake
39 DESTINATION "share/duktape"
42 export(PACKAGE duktape)
44 include(CMakePackageConfigHelpers)
45 write_basic_package_version_file("${PROJECT_BINARY_DIR}/duktapeConfigVersion.cmake"
46 COMPATIBILITY SameMajorVersion
49 configure_file(duktapeConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/duktapeConfig.cmake" @ONLY)
52 "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/duktapeConfig.cmake"
53 "${PROJECT_BINARY_DIR}/duktapeConfigVersion.cmake"
54 DESTINATION "share/duktape"