Files
@ r28520:f9aebe299cae
Branch filter:
Location: cpp/openttd-patchpack/source/src/script/api/CMakeLists.txt
r28520:f9aebe299cae
9.2 KiB
text/plain
Codechange: MacOS already has MIN/MAX macros defined
This is caused because we use PreCompile Headers, and one of them
includes a system headers which defines MIN/MAX.
This is caused because we use PreCompile Headers, and one of them
includes a system headers which defines MIN/MAX.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | 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_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_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
)
|