summaryrefslogtreecommitdiff
path: root/src/script/api/CMakeLists.txt
diff options
context:
space:
mode:
authorglx <glx@openttd.org>2019-03-12 15:37:57 +0100
committerglx22 <glx22@users.noreply.github.com>2020-07-16 00:53:26 +0200
commit4079c47b6cd5d210bdc31eff2040fb5aeb0f10de (patch)
treed4b685a3709ee7f98bfac6ff352af405da8014ec /src/script/api/CMakeLists.txt
parent8794c61f25dfe055296ed500c54d22613fbcb73f (diff)
downloadopenttd-4079c47b6cd5d210bdc31eff2040fb5aeb0f10de.tar.xz
Change: rewrote squirrel_export in CMake
Diffstat (limited to 'src/script/api/CMakeLists.txt')
-rw-r--r--src/script/api/CMakeLists.txt96
1 files changed, 87 insertions, 9 deletions
diff --git a/src/script/api/CMakeLists.txt b/src/script/api/CMakeLists.txt
index f9f5fb7c8..c22867928 100644
--- a/src/script/api/CMakeLists.txt
+++ b/src/script/api/CMakeLists.txt
@@ -1,3 +1,7 @@
+add_library(script_api
+ INTERFACE
+)
+
# Get script_window.hpp dependencies
file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/script_window.hpp.in ENUM_LINES REGEX "@enum")
foreach(ENUM IN LISTS ENUM_LINES)
@@ -13,7 +17,6 @@ add_custom_command_timestamp(OUTPUT ${CMAKE_BINARY_DIR}/generated/script/api/scr
-DGENERATE_SOURCE_FILE=${CMAKE_CURRENT_SOURCE_DIR}/script_window.hpp.in
-DGENERATE_BINARY_FILE=${CMAKE_BINARY_DIR}/generated/script/api/script_window.hpp
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/GenerateWidget.cmake
- COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/generated/script/api/dummy # dummy directory for #include "../script_window.hpp"
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/script_window.hpp.in
DEPENDS ${CMAKE_SOURCE_DIR}/cmake/scripts/GenerateWidget.cmake ${DEPENDENCIES}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
@@ -23,19 +26,94 @@ add_custom_target_timestamp(script_window
DEPENDS
${CMAKE_BINARY_DIR}/generated/script/api/script_window.hpp
)
-
-add_library(script_api
- INTERFACE
-)
target_include_directories(script_api
INTERFACE
${CMAKE_BINARY_DIR}/generated/script/api/
- ${CMAKE_BINARY_DIR}/generated/script/api/dummy # dummy path so #include "../script_window.hpp" works
${CMAKE_CURRENT_SOURCE_DIR}
)
-add_dependencies(script_api
- script_window
-)
+
+file(GLOB SCRIPT_API_FILES "script_*.hpp")
+list(APPEND SCRIPT_API_FILES ${CMAKE_BINARY_DIR}/generated/script/api/script_window.hpp)
+
+foreach(API "ai;AI" "game;GS" "template;Template")
+ list(GET API 0 APILC)
+ list(GET API 1 APIUC)
+
+ foreach(SCRIPT_API_FILE IN LISTS SCRIPT_API_FILES)
+ if ("${SCRIPT_API_FILE}" MATCHES ".*script_controller.*")
+ continue()
+ endif ("${SCRIPT_API_FILE}" MATCHES ".*script_controller.*")
+ get_filename_component(SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE}" NAME)
+ string(REPLACE "script_" "${APILC}_" SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE_NAME}")
+ set(SCRIPT_API_BINARY_FILE "${CMAKE_BINARY_DIR}/generated/script/api/${APILC}/${SCRIPT_API_FILE_NAME}.sq")
+
+ add_custom_command_timestamp(OUTPUT ${SCRIPT_API_BINARY_FILE}
+ COMMAND ${CMAKE_COMMAND}
+ -DSCRIPT_API_SOURCE_FILE=${CMAKE_CURRENT_SOURCE_DIR}/squirrel_export.hpp.sq.in
+ -DSCRIPT_API_BINARY_FILE=${SCRIPT_API_BINARY_FILE}
+ -DSCRIPT_API_FILE=${SCRIPT_API_FILE}
+ -DAPIUC=${APIUC}
+ -DAPILC=${APILC}
+ -P ${CMAKE_SOURCE_DIR}/cmake/scripts/SquirrelExport.cmake
+ MAIN_DEPENDENCY ${SCRIPT_API_FILE}
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/squirrel_export.hpp.sq.in
+ ${CMAKE_SOURCE_DIR}/cmake/scripts/SquirrelExport.cmake
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating ${APILC}/${SCRIPT_API_FILE_NAME}.sq"
+ )
+ list(APPEND SCRIPT_${APIUC}_BINARY_FILES ${SCRIPT_API_BINARY_FILE})
+ endforeach(SCRIPT_API_FILE)
+
+ add_custom_target_timestamp(script_${APILC}
+ DEPENDS
+ ${SCRIPT_${APIUC}_BINARY_FILES}
+ )
+ add_dependencies(script_${APILC}
+ script_window
+ )
+
+ if (NOT "${APILC}" STREQUAL "template")
+ list(APPEND SCRIPT_${APIUC}_BINARY_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${APILC}/${APILC}_controller.hpp.sq")
+ set(INCLUDES_BINARY_FILE "${CMAKE_BINARY_DIR}/generated/script/api/${APILC}/${APILC}_includes.hpp")
+ add_custom_command_timestamp(OUTPUT ${INCLUDES_BINARY_FILE}
+ COMMAND ${CMAKE_COMMAND}
+ -DINCLUDES_SOURCE_FILE=${CMAKE_CURRENT_SOURCE_DIR}/script_includes.hpp.in
+ -DINCLUDES_BINARY_FILE=${INCLUDES_BINARY_FILE}
+ -DAPIUC=${APIUC}
+ -DAPILC=${APILC}
+ -P ${CMAKE_SOURCE_DIR}/cmake/scripts/SquirrelIncludes.cmake
+ --
+ ${SCRIPT_${APIUC}_BINARY_FILES}
+ MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/script_includes.hpp.in
+ DEPENDS ${SCRIPT_${APIUC}_BINARY_FILES}
+ ${CMAKE_SOURCE_DIR}/cmake/scripts/SquirrelIncludes.cmake
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMENT "Generating ${APILC}/${APILC}_includes.hpp"
+ )
+ add_custom_target_timestamp(script_${APILC}_includes
+ DEPENDS
+ ${INCLUDES_BINARY_FILE}
+ )
+ add_dependencies(script_${APILC}_includes
+ script_${APILC}
+ )
+ add_dependencies(script_api
+ script_${APILC}_includes
+ )
+ else (NOT "${APILC}" STREQUAL "template")
+ add_dependencies(script_api
+ script_${APILC}
+ )
+ endif (NOT "${APILC}" STREQUAL "template")
+
+ target_include_directories(script_api
+ INTERFACE
+ ${CMAKE_BINARY_DIR}/generated/script
+ ${CMAKE_BINARY_DIR}/generated/script/api/${APILC}
+ ${CMAKE_CURRENT_SOURCE_DIR}/${APILC}
+ )
+endforeach(API)
+
add_library(openttd::script_api ALIAS script_api)