|
| 1 | +diff --git a/CMakeLists.txt b/CMakeLists.txt |
| 2 | +index e715102..b000066 100644 |
| 3 | +--- a/CMakeLists.txt |
| 4 | ++++ b/CMakeLists.txt |
| 5 | +@@ -37,7 +37,7 @@ |
| 6 | + # Todo |
| 7 | + # Test build for Windows, Mac and mingw. |
| 8 | + |
| 9 | +-cmake_minimum_required(VERSION 3.12) |
| 10 | ++cmake_minimum_required(VERSION 3.19) |
| 11 | + project(godot-cpp LANGUAGES CXX) |
| 12 | + |
| 13 | + option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class's get_node." ON) |
| 14 | +@@ -65,9 +65,8 @@ if(NOT DEFINED BITS) |
| 15 | + endif() |
| 16 | + |
| 17 | + # Input from user for GDExtension interface header and the API JSON file |
| 18 | +-set(GODOT_GDEXTENSION_DIR "gdextension" CACHE STRING "") |
| 19 | ++set(GODOT_GDEXTENSION_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gdextension" CACHE STRING "") |
| 20 | + set(GODOT_CUSTOM_API_FILE "" CACHE STRING "") |
| 21 | +- |
| 22 | + set(GODOT_GDEXTENSION_API_FILE "${GODOT_GDEXTENSION_DIR}/extension_api.json") |
| 23 | + if (NOT "${GODOT_CUSTOM_API_FILE}" STREQUAL "") # User-defined override. |
| 24 | + set(GODOT_GDEXTENSION_API_FILE "${GODOT_CUSTOM_API_FILE}") |
| 25 | +@@ -85,9 +84,9 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") |
| 26 | + set(GODOT_COMPILE_FLAGS "/utf-8") # /GF /MP |
| 27 | + |
| 28 | + if(CMAKE_BUILD_TYPE MATCHES Debug) |
| 29 | +- set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /MDd") # /Od /RTC1 /Zi |
| 30 | ++ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /Od") # /Od /RTC1 /Zi |
| 31 | + else() |
| 32 | +- set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /MD /O2") # /Oy /GL /Gy |
| 33 | ++ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /O2") # /Oy /GL /Gy |
| 34 | + STRING(REGEX REPLACE "/RTC(su|[1su])" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") |
| 35 | + string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) |
| 36 | + endif(CMAKE_BUILD_TYPE MATCHES Debug) |
| 37 | +@@ -117,7 +116,6 @@ else() |
| 38 | + endif() |
| 39 | + |
| 40 | + # Generate source from the bindings file |
| 41 | +-find_package(Python3 3.4 REQUIRED) # pathlib should be present |
| 42 | + if(GENERATE_TEMPLATE_GET_NODE) |
| 43 | + set(GENERATE_BINDING_PARAMETERS "True") |
| 44 | + else() |
| 45 | +@@ -183,9 +181,10 @@ if (GODOT_CPP_SYSTEM_HEADERS) |
| 46 | + endif () |
| 47 | + |
| 48 | + target_include_directories(${PROJECT_NAME} ${GODOT_CPP_SYSTEM_HEADERS_ATTRIBUTE} PUBLIC |
| 49 | +- include |
| 50 | +- ${CMAKE_CURRENT_BINARY_DIR}/gen/include |
| 51 | +- ${GODOT_GDEXTENSION_DIR} |
| 52 | ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
| 53 | ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/gen/include> |
| 54 | ++ $<BUILD_INTERFACE:${GODOT_GDEXTENSION_DIR}> |
| 55 | ++ $<INSTALL_INTERFACE:include> |
| 56 | + ) |
| 57 | + |
| 58 | + # Add the compile flags |
| 59 | +@@ -213,4 +212,8 @@ set_target_properties(${PROJECT_NAME} |
| 60 | + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin" |
| 61 | + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin" |
| 62 | + OUTPUT_NAME "${OUTPUT_NAME}" |
| 63 | ++ EXPORT_NAME "cpp" |
| 64 | + ) |
| 65 | ++ |
| 66 | ++ |
| 67 | ++include("cmake/install.cmake") |
| 68 | +diff --git a/cmake/config.cmake b/cmake/config.cmake |
| 69 | +new file mode 100644 |
| 70 | +index 0000000..bcddb3c |
| 71 | +--- /dev/null |
| 72 | ++++ b/cmake/config.cmake |
| 73 | +@@ -0,0 +1 @@ |
| 74 | ++include("${CMAKE_CURRENT_LIST_DIR}/unofficial-godot-cpp-target.cmake") |
| 75 | +diff --git a/cmake/install.cmake b/cmake/install.cmake |
| 76 | +new file mode 100644 |
| 77 | +index 0000000..f48ab5c |
| 78 | +--- /dev/null |
| 79 | ++++ b/cmake/install.cmake |
| 80 | +@@ -0,0 +1,46 @@ |
| 81 | ++ |
| 82 | ++include("CMakePackageConfigHelpers") |
| 83 | ++include("GNUInstallDirs") |
| 84 | ++ |
| 85 | ++install(TARGETS "godot-cpp" |
| 86 | ++ EXPORT "unofficial-godot-cpp-target" |
| 87 | ++ ARCHIVE |
| 88 | ++ DESTINATION "${CMAKE_INSTALL_LIBDIR}" |
| 89 | ++) |
| 90 | ++install( |
| 91 | ++ DIRECTORY |
| 92 | ++ "${CMAKE_CURRENT_SOURCE_DIR}/include/" |
| 93 | ++ "${CMAKE_CURRENT_BINARY_DIR}/gen/include/" |
| 94 | ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" |
| 95 | ++) |
| 96 | ++ |
| 97 | ++install(FILES "${GODOT_GDEXTENSION_DIR}/gdextension_interface.h" |
| 98 | ++ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" |
| 99 | ++) |
| 100 | ++install(FILES "${GODOT_GDEXTENSION_API_FILE}" |
| 101 | ++ DESTINATION "${CMAKE_INSTALL_DATADIR}/godot-cpp" |
| 102 | ++) |
| 103 | ++ |
| 104 | ++install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake/config.cmake" |
| 105 | ++ RENAME "unofficial-godot-cpp-config.cmake" |
| 106 | ++ DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-godot-cpp" |
| 107 | ++) |
| 108 | ++install(EXPORT "unofficial-godot-cpp-target" |
| 109 | ++ NAMESPACE "unofficial::godot::" |
| 110 | ++ DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-godot-cpp" |
| 111 | ++) |
| 112 | ++ |
| 113 | ++file(READ "${GODOT_GDEXTENSION_API_FILE}" GODOT_GDEXTENSION_API_JSON) |
| 114 | ++string(JSON GODOT_API_VERSION_MAJOR GET "${GODOT_GDEXTENSION_API_JSON}" "header" "version_major") |
| 115 | ++string(JSON GODOT_API_VERSION_MINOR GET "${GODOT_GDEXTENSION_API_JSON}" "header" "version_minor") |
| 116 | ++string(JSON GODOT_API_VERSION_PATCH GET "${GODOT_GDEXTENSION_API_JSON}" "header" "version_patch") |
| 117 | ++set(GODOT_API_VERSION "${GODOT_API_VERSION_MAJOR}.${GODOT_API_VERSION_MINOR}.${GODOT_API_VERSION_PATCH}") |
| 118 | ++unset(GODOT_GDEXTENSION_API_JSON) |
| 119 | ++ |
| 120 | ++write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/unofficial-godot-cpp-config-version.cmake" |
| 121 | ++ VERSION "${GODOT_API_VERSION}" |
| 122 | ++ COMPATIBILITY SameMinorVersion |
| 123 | ++) |
| 124 | ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-godot-cpp-config-version.cmake" |
| 125 | ++ DESTINATION "${CMAKE_INSTALL_DATADIR}/unofficial-godot-cpp" |
| 126 | ++) |
0 commit comments