mirror of
https://github.com/nesbox/TIC-80.git
synced 2026-04-18 22:42:27 +00:00
132 lines
6.9 KiB
CMake
132 lines
6.9 KiB
CMake
set(TIC_RT_LUA "unknown")
|
|
set(TIC_RT_RUBY "unknown")
|
|
set(TIC_RT_JS "unknown")
|
|
set(TIC_RT_MOON "unknown")
|
|
set(TIC_RT_YUE "unknown")
|
|
set(TIC_RT_FENNEL "unknown")
|
|
set(TIC_RT_SCHEME "unknown")
|
|
set(TIC_RT_SQUIRREL "unknown")
|
|
set(TIC_RT_WREN "unknown")
|
|
set(TIC_RT_WASM "unknown")
|
|
set(TIC_RT_JANET "unknown")
|
|
set(TIC_RT_PYTHON "unknown")
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/lua/lua.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/lua/lua.h" LUA_VERSION_MAJOR_LINE REGEX "^#define LUA_VERSION_MAJOR[ \t]+\"[^\"]+\"")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/lua/lua.h" LUA_VERSION_MINOR_LINE REGEX "^#define LUA_VERSION_MINOR[ \t]+\"[^\"]+\"")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/lua/lua.h" LUA_VERSION_RELEASE_LINE REGEX "^#define LUA_VERSION_RELEASE[ \t]+\"[^\"]+\"")
|
|
|
|
if(LUA_VERSION_MAJOR_LINE AND LUA_VERSION_MINOR_LINE AND LUA_VERSION_RELEASE_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" LUA_VERSION_MAJOR "${LUA_VERSION_MAJOR_LINE}")
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" LUA_VERSION_MINOR "${LUA_VERSION_MINOR_LINE}")
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" LUA_VERSION_RELEASE "${LUA_VERSION_RELEASE_LINE}")
|
|
set(TIC_RT_LUA "Lua ${LUA_VERSION_MAJOR}.${LUA_VERSION_MINOR}.${LUA_VERSION_RELEASE}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/mruby/include/mruby/version.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/mruby/include/mruby/version.h" MRUBY_RELEASE_MAJOR_LINE REGEX "^#define MRUBY_RELEASE_MAJOR[ \t]+[0-9]+")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/mruby/include/mruby/version.h" MRUBY_RELEASE_MINOR_LINE REGEX "^#define MRUBY_RELEASE_MINOR[ \t]+[0-9]+")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/mruby/include/mruby/version.h" MRUBY_RELEASE_TEENY_LINE REGEX "^#define MRUBY_RELEASE_TEENY[ \t]+[0-9]+")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/mruby/include/mruby/version.h" MRUBY_RUBY_VERSION_LINE REGEX "^#define MRUBY_RUBY_VERSION[ \t]+.*")
|
|
|
|
if(MRUBY_RELEASE_MAJOR_LINE AND MRUBY_RELEASE_MINOR_LINE AND MRUBY_RELEASE_TEENY_LINE AND MRUBY_RUBY_VERSION_LINE)
|
|
string(REGEX REPLACE "^#define MRUBY_RELEASE_MAJOR[ \t]+([0-9]+).*" "\\1" MRUBY_RELEASE_MAJOR "${MRUBY_RELEASE_MAJOR_LINE}")
|
|
string(REGEX REPLACE "^#define MRUBY_RELEASE_MINOR[ \t]+([0-9]+).*" "\\1" MRUBY_RELEASE_MINOR "${MRUBY_RELEASE_MINOR_LINE}")
|
|
string(REGEX REPLACE "^#define MRUBY_RELEASE_TEENY[ \t]+([0-9]+).*" "\\1" MRUBY_RELEASE_TEENY "${MRUBY_RELEASE_TEENY_LINE}")
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" MRUBY_RUBY_VERSION "${MRUBY_RUBY_VERSION_LINE}")
|
|
set(MRUBY_VERSION "${MRUBY_RELEASE_MAJOR}.${MRUBY_RELEASE_MINOR}.${MRUBY_RELEASE_TEENY}")
|
|
set(TIC_RT_RUBY "mruby ${MRUBY_VERSION} (Ruby ${MRUBY_RUBY_VERSION})")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/quickjs/VERSION")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/quickjs/VERSION" QUICKJS_VERSION_LINE LIMIT_COUNT 1)
|
|
if(QUICKJS_VERSION_LINE)
|
|
set(TIC_RT_JS "QuickJS ${QUICKJS_VERSION_LINE}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/moonscript/README.txt")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/moonscript/README.txt" MOON_VERSION_LINE REGEX "^MoonScript[ \t]+[0-9]+\\.[0-9]+\\.[0-9]+")
|
|
if(MOON_VERSION_LINE)
|
|
string(REGEX REPLACE "^MoonScript[ \t]+([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" MOON_VERSION "${MOON_VERSION_LINE}")
|
|
set(TIC_RT_MOON "MoonScript ${MOON_VERSION} (${TIC_RT_LUA})")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/yuescript/src/yuescript/yue_compiler.cpp")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/yuescript/src/yuescript/yue_compiler.cpp" YUE_VERSION_LINE REGEX "^const std::string_view version = \"[0-9]+\\.[0-9]+\\.[0-9]+\"sv;")
|
|
if(YUE_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([0-9]+\\.[0-9]+\\.[0-9]+)\".*" "\\1" YUE_VERSION "${YUE_VERSION_LINE}")
|
|
set(TIC_RT_YUE "YueScript ${YUE_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/fennel/fennel.lua")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/fennel/fennel.lua" FENNEL_VERSION_LINE REGEX "^[ \t]*local version = \"[0-9]+\\.[0-9]+\\.[0-9]+\"")
|
|
if(FENNEL_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([0-9]+\\.[0-9]+\\.[0-9]+)\".*" "\\1" FENNEL_VERSION "${FENNEL_VERSION_LINE}")
|
|
set(TIC_RT_FENNEL "Fennel ${FENNEL_VERSION} (${TIC_RT_LUA})")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/s7/s7.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/s7/s7.h" S7_VERSION_LINE REGEX "^#define S7_VERSION \"[^\"]+\"")
|
|
if(S7_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" S7_VERSION "${S7_VERSION_LINE}")
|
|
set(TIC_RT_SCHEME "s7 ${S7_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/squirrel/include/squirrel.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/squirrel/include/squirrel.h" SQUIRREL_VERSION_LINE REGEX "^#define SQUIRREL_VERSION[ \t]+.*")
|
|
if(SQUIRREL_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" SQUIRREL_VERSION "${SQUIRREL_VERSION_LINE}")
|
|
set(TIC_RT_SQUIRREL "${SQUIRREL_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/wren/src/include/wren.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/wren/src/include/wren.h" WREN_VERSION_LINE REGEX "^#define WREN_VERSION_STRING \"[^\"]+\"")
|
|
if(WREN_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" WREN_VERSION "${WREN_VERSION_LINE}")
|
|
set(TIC_RT_WREN "Wren ${WREN_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/wasm3/source/wasm3.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/wasm3/source/wasm3.h" WASM_VERSION_LINE REGEX "^#define M3_VERSION[ \t]+\"[^\"]+\"")
|
|
if(WASM_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" WASM_VERSION "${WASM_VERSION_LINE}")
|
|
set(TIC_RT_WASM "wasm3 ${WASM_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/build/janet/janetconf.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/build/janet/janetconf.h" JANET_VERSION_LINE REGEX "^#define JANET_VERSION \"[^\"]+\"")
|
|
elseif(EXISTS "${CMAKE_SOURCE_DIR}/vendor/janet/src/include/janet.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/janet/src/include/janet.h" JANET_VERSION_LINE REGEX "^#define JANET_VERSION \"[^\"]+\"")
|
|
endif()
|
|
|
|
if(JANET_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" JANET_VERSION "${JANET_VERSION_LINE}")
|
|
if(NOT JANET_VERSION STREQUAL "latest")
|
|
set(TIC_RT_JANET "Janet ${JANET_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
if(EXISTS "${CMAKE_SOURCE_DIR}/vendor/pocketpy/include/pocketpy/config.h")
|
|
file(STRINGS "${CMAKE_SOURCE_DIR}/vendor/pocketpy/include/pocketpy/config.h" PYTHON_VERSION_LINE REGEX "^#define PK_VERSION[ \t]+\"[^\"]+\"")
|
|
if(PYTHON_VERSION_LINE)
|
|
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" PYTHON_VERSION "${PYTHON_VERSION_LINE}")
|
|
set(TIC_RT_PYTHON "pocketpy ${PYTHON_VERSION}")
|
|
endif()
|
|
endif()
|
|
|
|
configure_file(
|
|
"${CMAKE_SOURCE_DIR}/cmake/runtime_versions.h.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/runtime_versions.h"
|
|
@ONLY
|
|
)
|