diff --git a/CMakeLists.txt b/CMakeLists.txt index c66dced475..e243e0d4a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,8 +9,10 @@ project(openrct2 CXX) include(cmake/platform.cmake) include(CMakeDependentOption) +# vcpkg includes its own copy of duktapeConfig.cmake; only include ours as needed. if (NOT MSVC) include(FindPkgConfig) + set(CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") endif () include(CheckCXXCompilerFlag) include(GNUInstallDirs) diff --git a/cmake/duktapeConfig.cmake b/cmake/duktapeConfig.cmake new file mode 100644 index 0000000000..34ef8b5232 --- /dev/null +++ b/cmake/duktapeConfig.cmake @@ -0,0 +1,37 @@ +# This file was obtained from: +# https://github.com/microsoft/vcpkg/blob/master/ports/duktape/duktapeConfig.cmake.in +# It is used under the terms of the MIT License. + +# - Try to find duktape +# Once done this will define +# +# DUKTAPE_FOUND - system has Duktape +# DUKTAPE_INCLUDE_DIRS - the Duktape include directory +# DUKTAPE_LIBRARIES - Link these to use DUKTAPE +# DUKTAPE_DEFINITIONS - Compiler switches required for using Duktape +# + +find_package(PkgConfig QUIET) +pkg_check_modules(PC_DUK QUIET duktape libduktape) + +find_path(DUKTAPE_INCLUDE_DIR duktape.h + HINTS ${PC_DUK_INCLUDEDIR} ${PC_DUK_INCLUDE_DIRS} + PATH_SUFFIXES duktape) + +find_library(DUKTAPE_LIBRARY + NAMES duktape libduktape + HINTS ${PC_DUK_LIBDIR} ${PC_DUK_LIBRARY_DIRS}) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(duktape + REQUIRED_VARS DUKTAPE_LIBRARY DUKTAPE_INCLUDE_DIR) + +if (DUKTAPE_FOUND) + set (DUKTAPE_LIBRARIES ${DUKTAPE_LIBRARY}) + set (DUKTAPE_INCLUDE_DIRS ${DUKTAPE_INCLUDE_DIR} ) +endif () + +MARK_AS_ADVANCED( + DUKTAPE_INCLUDE_DIR + DUKTAPE_LIBRARY +) diff --git a/src/openrct2/CMakeLists.txt b/src/openrct2/CMakeLists.txt index 4421affdc8..08862756f3 100644 --- a/src/openrct2/CMakeLists.txt +++ b/src/openrct2/CMakeLists.txt @@ -101,16 +101,12 @@ if (NOT DISABLE_GOOGLE_BENCHMARK) endif () if (ENABLE_SCRIPTING) - if (MSVC) - find_package(duktape REQUIRED) + find_package(duktape CONFIG REQUIRED) + include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${DUKTAPE_INCLUDE_DIRS}) + if (STATIC) + target_link_libraries(${PROJECT_NAME} ${DUKTAPE_STATIC_LIBRARY}) else () - PKG_CHECK_MODULES(DUKTAPE REQUIRED duktape) - target_include_directories(${PROJECT_NAME} PRIVATE ${DUKTAPE_INCLUDE_DIRS}) - if (STATIC) - target_link_libraries(${PROJECT_NAME} ${DUKTAPE_STATIC_LIBRARIES}) - else () - target_link_libraries(${PROJECT_NAME} ${DUKTAPE_LIBRARIES}) - endif () + target_link_libraries(${PROJECT_NAME} ${DUKTAPE_LIBRARY}) endif () endif ()