You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
9.3 KiB
CMake
295 lines
9.3 KiB
CMake
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)
|
|
string(REGEX REPLACE ".* ([^ @]+)@.*" "\\1" FILE_PATTERN "${ENUM}")
|
|
file(GLOB FILENAMES "${FILE_PATTERN}")
|
|
list(APPEND DEPENDENCIES ${FILENAMES})
|
|
endforeach()
|
|
list(REMOVE_DUPLICATES DEPENDENCIES)
|
|
|
|
# Add a command to generate script_window.hpp
|
|
add_custom_command_timestamp(OUTPUT ${CMAKE_BINARY_DIR}/generated/script/api/script_window.hpp
|
|
COMMAND ${CMAKE_COMMAND}
|
|
-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
|
|
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}
|
|
COMMENT "Generating script_window.hpp"
|
|
)
|
|
add_custom_target_timestamp(script_window
|
|
DEPENDS
|
|
${CMAKE_BINARY_DIR}/generated/script/api/script_window.hpp
|
|
)
|
|
target_include_directories(script_api
|
|
INTERFACE
|
|
${CMAKE_BINARY_DIR}/generated/script/api/
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
)
|
|
|
|
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()
|
|
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()
|
|
|
|
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")
|
|
set(API_FILES "${CMAKE_CURRENT_BINARY_DIR}/${APILC}.files")
|
|
file(GENERATE OUTPUT ${API_FILES} CONTENT "${SCRIPT_${APIUC}_BINARY_FILES}")
|
|
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}
|
|
-DAPI_FILES=${API_FILES}
|
|
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/SquirrelIncludes.cmake
|
|
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/script_includes.hpp.in
|
|
DEPENDS ${SCRIPT_${APIUC}_BINARY_FILES}
|
|
${API_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
|
|
)
|
|
|
|
# Documentation
|
|
if(DOXYGEN_EXECUTABLE)
|
|
add_custom_target(docs_${APILC}
|
|
${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/docs
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile_${APIUC}
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
COMMENT "Generating documentation for ${APILC} API"
|
|
)
|
|
add_dependencies(docs_${APILC}
|
|
find_version
|
|
script_window
|
|
)
|
|
add_dependencies(docs
|
|
docs_${APILC}
|
|
)
|
|
endif()
|
|
else()
|
|
add_dependencies(script_api
|
|
script_${APILC}
|
|
)
|
|
endif()
|
|
|
|
target_include_directories(script_api
|
|
INTERFACE
|
|
${CMAKE_BINARY_DIR}/generated/script
|
|
${CMAKE_BINARY_DIR}/generated/script/api/${APILC}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/${APILC}
|
|
)
|
|
endforeach()
|
|
|
|
if(OPTION_TOOLS_ONLY)
|
|
return()
|
|
endif()
|
|
|
|
add_library(openttd::script_api ALIAS script_api)
|
|
|
|
|
|
add_files(
|
|
ai_changelog.hpp
|
|
game_changelog.hpp
|
|
script_accounting.hpp
|
|
script_admin.hpp
|
|
script_airport.hpp
|
|
script_asyncmode.hpp
|
|
script_base.hpp
|
|
script_basestation.hpp
|
|
script_bridge.hpp
|
|
script_bridgelist.hpp
|
|
script_cargo.hpp
|
|
script_cargolist.hpp
|
|
script_cargomonitor.hpp
|
|
script_client.hpp
|
|
script_clientlist.hpp
|
|
script_company.hpp
|
|
script_companymode.hpp
|
|
script_controller.hpp
|
|
script_date.hpp
|
|
script_depotlist.hpp
|
|
script_engine.hpp
|
|
script_enginelist.hpp
|
|
script_error.hpp
|
|
script_event.hpp
|
|
script_event_types.hpp
|
|
script_execmode.hpp
|
|
script_game.hpp
|
|
script_gamesettings.hpp
|
|
script_goal.hpp
|
|
script_group.hpp
|
|
script_grouplist.hpp
|
|
script_industry.hpp
|
|
script_industrylist.hpp
|
|
script_industrytype.hpp
|
|
script_industrytypelist.hpp
|
|
script_inflation.hpp
|
|
script_info_docs.hpp
|
|
script_infrastructure.hpp
|
|
script_league.hpp
|
|
script_list.hpp
|
|
script_log.hpp
|
|
script_log_types.hpp
|
|
script_map.hpp
|
|
script_marine.hpp
|
|
script_newgrf.hpp
|
|
script_news.hpp
|
|
script_object.hpp
|
|
script_objecttype.hpp
|
|
script_objecttypelist.hpp
|
|
script_order.hpp
|
|
script_priorityqueue.hpp
|
|
script_rail.hpp
|
|
script_railtypelist.hpp
|
|
script_road.hpp
|
|
script_roadtypelist.hpp
|
|
script_sign.hpp
|
|
script_signlist.hpp
|
|
script_station.hpp
|
|
script_stationlist.hpp
|
|
script_story_page.hpp
|
|
script_storypagelist.hpp
|
|
script_storypageelementlist.hpp
|
|
script_subsidy.hpp
|
|
script_subsidylist.hpp
|
|
script_testmode.hpp
|
|
script_text.hpp
|
|
script_tile.hpp
|
|
script_tilelist.hpp
|
|
script_town.hpp
|
|
script_townlist.hpp
|
|
script_tunnel.hpp
|
|
script_types.hpp
|
|
script_vehicle.hpp
|
|
script_vehiclelist.hpp
|
|
script_viewport.hpp
|
|
script_waypoint.hpp
|
|
script_waypointlist.hpp
|
|
script_accounting.cpp
|
|
script_admin.cpp
|
|
script_airport.cpp
|
|
script_asyncmode.cpp
|
|
script_base.cpp
|
|
script_basestation.cpp
|
|
script_bridge.cpp
|
|
script_bridgelist.cpp
|
|
script_cargo.cpp
|
|
script_cargolist.cpp
|
|
script_cargomonitor.cpp
|
|
script_client.cpp
|
|
script_clientlist.cpp
|
|
script_company.cpp
|
|
script_companymode.cpp
|
|
script_controller.cpp
|
|
script_date.cpp
|
|
script_depotlist.cpp
|
|
script_engine.cpp
|
|
script_enginelist.cpp
|
|
script_error.cpp
|
|
script_event.cpp
|
|
script_event_types.cpp
|
|
script_execmode.cpp
|
|
script_game.cpp
|
|
script_gamesettings.cpp
|
|
script_goal.cpp
|
|
script_group.cpp
|
|
script_grouplist.cpp
|
|
script_industry.cpp
|
|
script_industrylist.cpp
|
|
script_industrytype.cpp
|
|
script_industrytypelist.cpp
|
|
script_inflation.cpp
|
|
script_infrastructure.cpp
|
|
script_league.cpp
|
|
script_list.cpp
|
|
script_log.cpp
|
|
script_map.cpp
|
|
script_marine.cpp
|
|
script_newgrf.cpp
|
|
script_news.cpp
|
|
script_object.cpp
|
|
script_objecttype.cpp
|
|
script_objecttypelist.cpp
|
|
script_order.cpp
|
|
script_priorityqueue.cpp
|
|
script_rail.cpp
|
|
script_railtypelist.cpp
|
|
script_road.cpp
|
|
script_roadtypelist.cpp
|
|
script_sign.cpp
|
|
script_signlist.cpp
|
|
script_station.cpp
|
|
script_stationlist.cpp
|
|
script_story_page.cpp
|
|
script_storypagelist.cpp
|
|
script_storypageelementlist.cpp
|
|
script_subsidy.cpp
|
|
script_subsidylist.cpp
|
|
script_testmode.cpp
|
|
script_text.cpp
|
|
script_tile.cpp
|
|
script_tilelist.cpp
|
|
script_town.cpp
|
|
script_townlist.cpp
|
|
script_tunnel.cpp
|
|
script_vehicle.cpp
|
|
script_vehiclelist.cpp
|
|
script_viewport.cpp
|
|
script_waypoint.cpp
|
|
script_waypointlist.cpp
|
|
script_window.cpp
|
|
)
|