🛠 Prepare for the a sol4 release...
- 🎨 Refactor the CMake a whle bunch
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
2
.gitignore
vendored
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
@ -22,10 +22,10 @@
|
||||||
|
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# # # Required minimum version statement
|
# # # Required minimum version statement
|
||||||
cmake_minimum_required(VERSION 3.5.0)
|
cmake_minimum_required(VERSION 3.15.0)
|
||||||
|
|
||||||
# # # project declaration
|
# # # project declaration
|
||||||
project(sol2 VERSION 3.2.3 LANGUAGES CXX C)
|
project(sol2 VERSION 3.2.5 LANGUAGES CXX C)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
|
@ -36,13 +36,15 @@ include(GNUInstallDirs)
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" "${CMAKE_MODULE_PATH}")
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules" "${CMAKE_MODULE_PATH}")
|
||||||
|
|
||||||
# Include standard modules
|
# Include standard modules
|
||||||
include(CMakeDependentOption)
|
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
include(CMakeDependentOption)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(FetchContent)
|
||||||
|
|
||||||
# # # Configuration
|
# # # Configuration
|
||||||
# # Cached defines, strings, paths and options
|
# # Cached defines, strings, paths and options
|
||||||
set(SOL2_LUA_VERSION "5.3.5" CACHE STRING "The version of Lua needed. Can be 5.1, 5.2, 5.3, 5.4, LuaJIT, or a more specific 3-part version number for a specifc Lua (e.g., 5.3.4 or luajit-2.0.5)")
|
set(SOL2_LUA_VERSION "5.3.5" CACHE STRING "The version of Lua needed. Can be 5.1, 5.2, 5.3, 5.4, LuaJIT, or a more specific 3-part version number for a specifc Lua (e.g., 5.3.5 or luajit-2.0.5)")
|
||||||
set(SOL2_BUILD_LUA TRUE CACHE BOOL "Always build Lua, do not search for it in the system")
|
set(SOL2_BUILD_LUA TRUE CACHE BOOL "Always build Lua, do not search for it in the system")
|
||||||
set(SOL2_PLATFORM "x64" CACHE STRING "Target platform to compile for when building binaries (x86, x64)")
|
set(SOL2_PLATFORM "x64" CACHE STRING "Target platform to compile for when building binaries (x86, x64)")
|
||||||
option(SOL2_CI "Whether or not we are in continguous integration mode" OFF)
|
option(SOL2_CI "Whether or not we are in continguous integration mode" OFF)
|
||||||
|
@ -161,7 +163,7 @@ endif()
|
||||||
# Generates the docs
|
# Generates the docs
|
||||||
if (SOL2_DOCS)
|
if (SOL2_DOCS)
|
||||||
message(STATUS "sol2 adding docs...")
|
message(STATUS "sol2 adding docs...")
|
||||||
add_subdirectory(docs)
|
add_subdirectory(documentation)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SOL2_ENABLE_INSTALL)
|
if(SOL2_ENABLE_INSTALL)
|
||||||
|
@ -277,13 +279,9 @@ if (SOL2_IS_TOP_LEVEL AND (SOL2_DO_TESTS OR SOL2_DO_EXAMPLES))
|
||||||
set_target_properties(${lualib}
|
set_target_properties(${lualib}
|
||||||
PROPERTIES
|
PROPERTIES
|
||||||
INTERFACE_INCLUDE_DIRECTORIES ${LUA_INCLUDE_DIR}
|
INTERFACE_INCLUDE_DIRECTORIES ${LUA_INCLUDE_DIR}
|
||||||
INTERFACE_LINK_LIBRARIES ${LUA_SEARCH_DEPENDENCY_LIBS}
|
INTERFACE_LINK_LIBRARIES ${LUA_SEARCH_DEPENDENCY_LIBS} ${CMAKE_DL_LIBS}
|
||||||
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
IMPORTED_LINK_INTERFACE_LANGUAGES C
|
||||||
IMPORTED_LOCATION ${lualiblocation})
|
IMPORTED_LOCATION ${lualiblocation})
|
||||||
if (CMAKE_DL_LIBS)
|
|
||||||
set_property(TARGET ${lualib}
|
|
||||||
APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
set(LUA_LIBRARIES ${lualib})
|
set(LUA_LIBRARIES ${lualib})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
# # # # sol3
|
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
|
||||||
# the Software without restriction, including without limitation the rights to
|
|
||||||
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
# the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
# subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
include(ExternalProject)
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
include(Common/Core)
|
|
||||||
|
|
||||||
# # Base variables
|
|
||||||
if (Catch_FIND_VERSION)
|
|
||||||
set(catch_version ${Catch_FIND_VERSION})
|
|
||||||
else()
|
|
||||||
set(catch_version 2.11.1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(catch_lib catch_lib_${catch_version})
|
|
||||||
|
|
||||||
# # Useful locations
|
|
||||||
set(catch_build_toplevel "${CMAKE_BINARY_DIR}/vendor/catch_${catch_version}")
|
|
||||||
set(catch_include_dirs "${catch_build_toplevel}")
|
|
||||||
|
|
||||||
# # catch library sources
|
|
||||||
set(catch_sources catch.hpp)
|
|
||||||
prepend(catch_sources "${catch_build_toplevel}/" ${catch_sources})
|
|
||||||
|
|
||||||
# # !! CMake 3.5 does not have DOWNLOAD_NO_EXTRACT e.e
|
|
||||||
# # Now I know why people don't like CMake that much: the earlier versions were kind of garbage
|
|
||||||
# # External project to get sources
|
|
||||||
#ExternalProject_Add(CATCH_BUILD_SOURCE
|
|
||||||
# BUILD_IN_SOURCE TRUE
|
|
||||||
# BUILD_ALWAYS FALSE
|
|
||||||
# DOWNLOAD_NO_EXTRACT TRUE
|
|
||||||
# URL https://github.com/catchorg/Catch2/releases/download/v${catch_version}/catch.hpp
|
|
||||||
# TLS_VERIFY TRUE
|
|
||||||
# PREFIX ${catch_build_toplevel}
|
|
||||||
# SOURCE_DIR ${catch_build_toplevel}
|
|
||||||
# DOWNLOAD_DIR ${catch_build_toplevel}
|
|
||||||
# TMP_DIR "${catch_build_toplevel}-tmp"
|
|
||||||
# STAMP_DIR "${catch_build_toplevel}-stamp"
|
|
||||||
# INSTALL_DIR "${catch_build_toplevel}/local"
|
|
||||||
# CONFIGURE_COMMAND ""
|
|
||||||
# BUILD_COMMAND ""
|
|
||||||
# INSTALL_COMMAND ""
|
|
||||||
# TEST_COMMAND ""
|
|
||||||
# BUILD_BYPRODUCTS "${catch_sources}")
|
|
||||||
|
|
||||||
file(MAKE_DIRECTORY "${catch_build_toplevel}")
|
|
||||||
file(DOWNLOAD https://github.com/catchorg/Catch2/releases/download/v${catch_version}/catch.hpp ${catch_sources})
|
|
||||||
|
|
||||||
add_library(${catch_lib} INTERFACE)
|
|
||||||
# add_dependencies(${catch_lib} CATCH_BUILD_SOURCE)
|
|
||||||
target_include_directories(${catch_lib} INTERFACE ${catch_include_dirs})
|
|
||||||
|
|
||||||
if (MSVC)
|
|
||||||
target_compile_definitions(${catch_lib} INTERFACE
|
|
||||||
_SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CATCH_FOUND TRUE)
|
|
||||||
set(CATCH_LIBRARIES ${catch_lib})
|
|
||||||
set(CATCH_INCLUDE_DIRS ${catch_include_dirs})
|
|
||||||
|
|
||||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Catch
|
|
||||||
FOUND_VAR CATCH_FOUND
|
|
||||||
REQUIRED_VARS CATCH_LIBRARIES CATCH_INCLUDE_DIRS
|
|
||||||
VERSION_VAR catch_version)
|
|
|
@ -2,7 +2,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
@ -415,6 +415,8 @@ add_library(${lualib} INTERFACE)
|
||||||
add_dependencies(${lualib} LUA_JIT-move)
|
add_dependencies(${lualib} LUA_JIT-move)
|
||||||
target_include_directories(${lualib}
|
target_include_directories(${lualib}
|
||||||
INTERFACE "${LUA_JIT_SOURCE_DIR}")
|
INTERFACE "${LUA_JIT_SOURCE_DIR}")
|
||||||
|
target_link_libraries(${lualib}
|
||||||
|
INTERFACE ${CMAKE_DL_LIBS})
|
||||||
if (BUILD_LUA_AS_DLL)
|
if (BUILD_LUA_AS_DLL)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
target_link_libraries(${lualib}
|
target_link_libraries(${lualib}
|
||||||
|
@ -428,10 +430,6 @@ else()
|
||||||
INTERFACE "${LUA_JIT_DESTINATION_LUA_LIB}")
|
INTERFACE "${LUA_JIT_DESTINATION_LUA_LIB}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_DL_LIBS)
|
|
||||||
target_link_libraries(${lualib}
|
|
||||||
INTERFACE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
if (XCODE)
|
if (XCODE)
|
||||||
target_compile_options(${lualib}
|
target_compile_options(${lualib}
|
||||||
INTERFACE -pagezero_size 10000 -image_base 100000000)
|
INTERFACE -pagezero_size 10000 -image_base 100000000)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
@ -360,9 +360,7 @@ endif()
|
||||||
target_compile_options(${liblua}
|
target_compile_options(${liblua}
|
||||||
PRIVATE ${LUA_VANILLA_LUALIB_COMPILER_OPTIONS})
|
PRIVATE ${LUA_VANILLA_LUALIB_COMPILER_OPTIONS})
|
||||||
add_dependencies(${liblua} LUA_VANILLA)
|
add_dependencies(${liblua} LUA_VANILLA)
|
||||||
if (CMAKE_DL_LIBS)
|
target_link_libraries(${liblua} PRIVATE ${CMAKE_DL_LIBS})
|
||||||
target_link_libraries(${liblua} PRIVATE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
target_link_libraries(${liblua} PRIVATE m)
|
target_link_libraries(${liblua} PRIVATE m)
|
||||||
endif()
|
endif()
|
||||||
|
@ -399,10 +397,7 @@ if (LUA_BUILD_LUA_INTERPRETER)
|
||||||
target_compile_definitions(${luainterpreter}
|
target_compile_definitions(${luainterpreter}
|
||||||
PRIVATE LUA_USE_LINUX)
|
PRIVATE LUA_USE_LINUX)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(${luainterpreter} PRIVATE ${liblua})
|
target_link_libraries(${luainterpreter} PRIVATE ${liblua} ${CMAKE_DL_LIBS})
|
||||||
if (CMAKE_DL_LIBS)
|
|
||||||
target_link_libraries(${luainterpreter} PRIVATE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
target_link_libraries(${luainterpreter} PRIVATE m readline)
|
target_link_libraries(${luainterpreter} PRIVATE m readline)
|
||||||
endif()
|
endif()
|
||||||
|
@ -437,10 +432,7 @@ if (LUA_BUILD_LUA_COMPILER)
|
||||||
target_compile_definitions(${luacompiler}
|
target_compile_definitions(${luacompiler}
|
||||||
PRIVATE LUA_USE_LINUX)
|
PRIVATE LUA_USE_LINUX)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(${luacompiler} PRIVATE ${liblua})
|
target_link_libraries(${luacompiler} PRIVATE ${liblua} ${CMAKE_DL_LIBS})
|
||||||
if (CMAKE_DL_LIBS)
|
|
||||||
target_link_libraries(${luacompiler} PRIVATE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
# TODO: make readline optional?
|
# TODO: make readline optional?
|
||||||
target_link_libraries(${luacompiler} PRIVATE m readline)
|
target_link_libraries(${luacompiler} PRIVATE m readline)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
68
cmake/Modules/FindSphinx.cmake
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
# # # # sol3
|
||||||
|
# The MIT License (MIT)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
# the Software without restriction, including without limitation the rights to
|
||||||
|
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
# the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
# subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
include(FeatureSummary)
|
||||||
|
|
||||||
|
find_program(Sphinx_Build_EXECUTABLE NAMES sphinx-build DOC "Path to sphinx-build executable")
|
||||||
|
|
||||||
|
if (Sphinx_Build_EXECUTABLE)
|
||||||
|
set(Sphinx_Build_FOUND YES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (Sphinx_Build_FOUND)
|
||||||
|
execute_process(
|
||||||
|
COMMAND ${Sphinx_Build_EXECUTABLE} --version
|
||||||
|
OUTPUT_VARIABLE Sphinx_Build_VERSION_OUTPUT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ENCODING UTF-8)
|
||||||
|
if (Sphinx_Build_VERSION_OUTPUT)
|
||||||
|
string(REGEX
|
||||||
|
MATCH "[^0-9]*([0-9]+)[.]([0-9]+)?[.]?([0-9]+)?[.]?([0-9]+)?.*"
|
||||||
|
Sphinx_Build_VERSION_CHECK ${Sphinx_Build_VERSION_OUTPUT})
|
||||||
|
endif()
|
||||||
|
if (Sphinx_Build_VERSION_CHECK)
|
||||||
|
string(JOIN "." Sphinx_Build_VERSION
|
||||||
|
${CMAKE_MATCH_1}
|
||||||
|
${CMAKE_MATCH_2}
|
||||||
|
${CMAKE_MATCH_3}
|
||||||
|
${CMAKE_MATCH_4})
|
||||||
|
set(Sphinx_Build_VERSION "${Sphinx_Build_VERSION}" CACHE STRING "sphinx-build version" FORCE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package_handle_standard_args(Sphinx
|
||||||
|
REQUIRED_VARS Sphinx_Build_EXECUTABLE
|
||||||
|
VERSION_VAR Sphinx_Build_VERSION
|
||||||
|
HANDLE_COMPONENTS)
|
||||||
|
|
||||||
|
set_package_properties(Sphinx
|
||||||
|
PROPERTIES
|
||||||
|
DESCRIPTION "Sphinx Documentation Generator"
|
||||||
|
URL "https://sphinx-doc.org")
|
||||||
|
|
||||||
|
if (Sphinx_Build_FOUND AND NOT TARGET Sphinx::Build)
|
||||||
|
add_executable(Sphinx::Build IMPORTED)
|
||||||
|
set_property(TARGET Sphinx::Build PROPERTY IMPORTED_LOCATION ${Sphinx_Build_EXECUTABLE})
|
||||||
|
set_property(TARGET Sphinx::Build PROPERTY VERSION ${Sphinx_Build_VERSION})
|
||||||
|
mark_as_advanced(Sphinx_Build_EXECUTABLE Sphinx_Build_VERSION)
|
||||||
|
endif()
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
@ -65,7 +65,7 @@ set_target_properties(${toluapp_lib} PROPERTIES
|
||||||
POSITION_INDEPENDENT_CODE TRUE)
|
POSITION_INDEPENDENT_CODE TRUE)
|
||||||
target_include_directories(${toluapp_lib}
|
target_include_directories(${toluapp_lib}
|
||||||
PUBLIC ${toluapp_include_dirs})
|
PUBLIC ${toluapp_include_dirs})
|
||||||
target_link_libraries(${toluapp_lib} PRIVATE ${LUA_LIBRARIES})
|
target_link_libraries(${toluapp_lib} PRIVATE ${LUA_LIBRARIES} ${CMAKE_DL_LIBS})
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
target_compile_options(${toluapp_lib}
|
target_compile_options(${toluapp_lib}
|
||||||
PRIVATE /W1)
|
PRIVATE /W1)
|
||||||
|
@ -77,9 +77,6 @@ else()
|
||||||
INTERFACE -Wno-noexcept-type
|
INTERFACE -Wno-noexcept-type
|
||||||
PUBLIC -Wno-ignored-qualifiers -Wno-unused-parameter)
|
PUBLIC -Wno-ignored-qualifiers -Wno-unused-parameter)
|
||||||
endif()
|
endif()
|
||||||
if (CMAKE_DL_LIBS)
|
|
||||||
target_link_libraries(${toluapp_lib} PRIVATE ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
# add compatibility define
|
# add compatibility define
|
||||||
target_compile_definitions(${toluapp_lib}
|
target_compile_definitions(${toluapp_lib}
|
||||||
PRIVATE COMPAT53_PREFIX=toluapp_compat53)
|
PRIVATE COMPAT53_PREFIX=toluapp_compat53)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# # # # sol3
|
# # # # sol3
|
||||||
# The MIT License (MIT)
|
# The MIT License (MIT)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
# # # # sol3
|
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c) 2013-2020 Rapptz, ThePhD, and contributors
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
# this software and associated documentation files (the "Software"), to deal in
|
|
||||||
# the Software without restriction, including without limitation the rights to
|
|
||||||
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
# the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
# subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
# # # # sol3, documentation generation
|
|
||||||
# # # Required minimum version statement
|
|
||||||
cmake_minimum_required(VERSION 3.5.0)
|
|
||||||
|
|
||||||
find_package(Python3 COMPONENTS Interpreter)
|
|
||||||
|
|
||||||
if (NOT Python3_FOUND AND NOT Python3_Interpreter_FOUND)
|
|
||||||
message(FATAL_ERROR "sol2 documentation cannot be generated as python 3 has not been found: install or set the python 3 interpreter for the docs to find it and be sure to pip install sphinx")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_program(sol2_make_executable make make.exe mingw32-make mingw32-make.exe)
|
|
||||||
if(NOT sol2_make_executable)
|
|
||||||
message(FATAL_ERROR "could not find a suitable make executable to build Sphinx documentation")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_custom_command(OUTPUT docs_invisible_file_always_generate
|
|
||||||
USES_TERMINAL
|
|
||||||
COMMAND "${sol2_make_executable}" -C "${CMAKE_CURRENT_SOURCE_DIR}" html "BUILDDIR=${CMAKE_CURRENT_BINARY_DIR}")
|
|
||||||
add_custom_target(docs
|
|
||||||
DEPENDS docs_invisible_file_always_generate)
|
|
||||||
|
|
||||||
if(SOL2_ENABLE_INSTALL)
|
|
||||||
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/docs/html" DESTINATION "${CMAKE_INSTALL_DOCDIR}")
|
|
||||||
endif()
|
|
110
documentation/.clang-format
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
# # # # sol3
|
||||||
|
# The MIT License (MIT)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
# the Software without restriction, including without limitation the rights to
|
||||||
|
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
# the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
# subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
---
|
||||||
|
BasedOnStyle: WebKit
|
||||||
|
IndentWidth: 5
|
||||||
|
TabWidth: 5
|
||||||
|
ContinuationIndentWidth: 5
|
||||||
|
UseTab: ForIndentation
|
||||||
|
|
||||||
|
# Namespaces
|
||||||
|
NamespaceIndentation: All
|
||||||
|
CompactNamespaces: true
|
||||||
|
FixNamespaceComments: true
|
||||||
|
|
||||||
|
# Overall Alignment
|
||||||
|
ColumnLimit: 75
|
||||||
|
AlignAfterOpenBracket: DontAlign # uses ContinuationIndentWidth for this instead
|
||||||
|
AccessModifierOffset: -5 # do not push public: or private: around
|
||||||
|
#AlignConsecutiveAssignments: true # affects more than what's expected: do not use
|
||||||
|
#AlignConsecutiveDeclarations: true # affects more than what's expected: do not use
|
||||||
|
|
||||||
|
# Type Alignment
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
PointerAlignment: Left
|
||||||
|
AlwaysBreakTemplateDeclarations: true
|
||||||
|
AlwaysBreakBeforeMultilineStrings: true
|
||||||
|
|
||||||
|
# Comments
|
||||||
|
AlignTrailingComments: true
|
||||||
|
ReflowComments: true
|
||||||
|
|
||||||
|
# Macros
|
||||||
|
AlignEscapedNewlines: Left
|
||||||
|
#IndentPPDirectives: None
|
||||||
|
|
||||||
|
# Functions
|
||||||
|
AllowShortFunctionsOnASingleLine: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
BreakConstructorInitializers: BeforeComma
|
||||||
|
ConstructorInitializerIndentWidth: 0
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: true
|
||||||
|
|
||||||
|
# Classes
|
||||||
|
BreakBeforeInheritanceComma: false
|
||||||
|
|
||||||
|
# Braces
|
||||||
|
Cpp11BracedListStyle: false
|
||||||
|
BreakBeforeBraces: Custom
|
||||||
|
BraceWrapping:
|
||||||
|
AfterEnum: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterControlStatement: false
|
||||||
|
AfterClass: false
|
||||||
|
AfterNamespace: false
|
||||||
|
AfterStruct: false
|
||||||
|
AfterUnion: false
|
||||||
|
BeforeElse: true
|
||||||
|
BeforeCatch: true
|
||||||
|
IndentBraces: false
|
||||||
|
SplitEmptyFunction: false
|
||||||
|
SplitEmptyRecord: false
|
||||||
|
SplitEmptyNamespace: true
|
||||||
|
|
||||||
|
# Control Statements
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
IndentCaseLabels: false
|
||||||
|
|
||||||
|
# Spaces
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
MaxEmptyLinesToKeep: 3
|
||||||
|
|
||||||
|
# OCD
|
||||||
|
SortUsingDeclarations: true
|
||||||
|
SortIncludes: false
|
||||||
|
|
||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
Standard: Cpp11
|
104
documentation/CMakeLists.txt
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
# # # # sol3
|
||||||
|
# The MIT License (MIT)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2013-2021 Rapptz, ThePhD, and contributors
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
|
# this software and associated documentation files (the "Software"), to deal in
|
||||||
|
# the Software without restriction, including without limitation the rights to
|
||||||
|
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||||
|
# the Software, and to permit persons to whom the Software is furnished to do so,
|
||||||
|
# subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
|
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
|
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
# # # # sol3, documentation generation
|
||||||
|
# # # Required minimum version statement
|
||||||
|
cmake_minimum_required(VERSION 3.15.0)
|
||||||
|
|
||||||
|
find_package(Doxygen REQUIRED)
|
||||||
|
find_package(Python3 REQUIRED)
|
||||||
|
find_package(Sphinx REQUIRED)
|
||||||
|
|
||||||
|
# Find all the public headers
|
||||||
|
file(GLOB_RECURSE sol2_public_headers
|
||||||
|
LIST_DIRECTORIES NO
|
||||||
|
CONFIGURE_DEPENDS ${PROJECT_SOURCE_DIR}/include/**.*)
|
||||||
|
# make a list copy for use with dependency tracking later down below
|
||||||
|
set(sol2_doxygen_public_headers ${sol2_public_headers})
|
||||||
|
# Remove every single public header
|
||||||
|
list(FILTER sol2_doxygen_public_headers EXCLUDE REGEX /detail/.*)
|
||||||
|
# separate text with spaces and surround them with quotes for Doxygen to understand them all
|
||||||
|
list(TRANSFORM sol2_doxygen_public_headers REPLACE "(.+)" [["\1"]])
|
||||||
|
list(JOIN sol2_doxygen_public_headers " " sol2_doxygen_public_headers)
|
||||||
|
|
||||||
|
set(SOL2_DOXYGEN_PROJECT_DESCRIPTION ${PROJECT_DESCRIPTION})
|
||||||
|
set(SOL2_DOXYGEN_PROJECT_VERSION ${PROJECT_VERSION})
|
||||||
|
set(SOL2_DOXYGEN_PROJECT_NAME ${PROJECT_NAME})
|
||||||
|
set(SOL2_DOXYGEN_INPUT ${sol2_doxygen_public_headers})
|
||||||
|
set(SOL2_DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen)
|
||||||
|
set(SOL2_DOXYGEN_XML_OUTPUT_DIR ${SOL2_DOXYGEN_OUTPUT_DIR}/xml)
|
||||||
|
set(SOL2_DOXYGEN_HTML_OUTPUT_DIR ${SOL2_DOXYGEN_OUTPUT_DIR}/html)
|
||||||
|
set(SOL2_DOXYGEN_INDEX_FILE ${SOL2_DOXYGEN_XML_OUTPUT_DIR}/index.xml)
|
||||||
|
set(SOL2_DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
|
||||||
|
set(SOL2_DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
|
||||||
|
set(SOL2_SPHINX_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source)
|
||||||
|
set(SOL2_SPHINX_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/sphinx)
|
||||||
|
|
||||||
|
# Get all Sphinx source files
|
||||||
|
file(GLOB_RECURSE sol2_sphinx_sources
|
||||||
|
LIST_DIRECTORIES NO
|
||||||
|
CONFIGURE_DEPENDS ${SOL2_SPHINX_SOURCE_DIR}/**.*)
|
||||||
|
|
||||||
|
#Replace variables inside @@ with the current values
|
||||||
|
configure_file(${SOL2_DOXYFILE_IN} ${SOL2_DOXYFILE_OUT} @ONLY)
|
||||||
|
|
||||||
|
# Ensure Doxygen/Sphinx won't crash because it doesn't create directories for us
|
||||||
|
file(MAKE_DIRECTORY ${SOL2_DOXYGEN_OUTPUT_DIR})
|
||||||
|
file(MAKE_DIRECTORY ${SOL2_DOXYGEN_XML_OUTPUT_DIR})
|
||||||
|
file(MAKE_DIRECTORY ${SOL2_DOXYGEN_HTML_OUTPUT_DIR})
|
||||||
|
file(MAKE_DIRECTORY ${SOL2_SPHINX_BUILD_DIR})
|
||||||
|
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES
|
||||||
|
${SOL2_DOXYGEN_XML_OUTPUT_DIR}
|
||||||
|
${SOL2_DOXYGEN_HTML_OUTPUT_DIR}
|
||||||
|
${SOL2_DOXYGEN_OUTPUT_DIR}
|
||||||
|
${SOL2_SPHINX_BUILD_DIR})
|
||||||
|
|
||||||
|
add_custom_command(OUTPUT ${SOL2_DOXYGEN_INDEX_FILE}
|
||||||
|
COMMAND ${DOXYGEN_EXECUTABLE} ${SOL2_DOXYFILE_OUT}
|
||||||
|
MAIN_DEPENDENCY ${SOL2_DOXYFILE_IN} ${SOL2_DOXYFILE_OUT}
|
||||||
|
DEPENDS ${sol2_public_headers}
|
||||||
|
COMMENT "[sol2/documentation] Generating Doxygen XML..."
|
||||||
|
)
|
||||||
|
add_custom_target(sol2.documentation.doxygen ALL DEPENDS ${SOL2_DOXYGEN_INDEX_FILE})
|
||||||
|
|
||||||
|
if (NOT SOL2_DOCUMENTATION_NO_SPHINX)
|
||||||
|
add_custom_target(sol2.documentation.sphinx ALL
|
||||||
|
COMMAND Sphinx::Build
|
||||||
|
-b html
|
||||||
|
-Dbreathe_projects.sol2=${SOL2_DOXYGEN_XML_OUTPUT_DIR}
|
||||||
|
${SOL2_SPHINX_SOURCE_DIR}
|
||||||
|
${SOL2_SPHINX_BUILD_DIR}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
DEPENDS ${SOL2_DOXYGEN_INDEX_FILE} ${sol2_sphinx_sources}
|
||||||
|
COMMENT "[sol2/documentation] Generating Sphinx documentation..."
|
||||||
|
COMMAND_EXPAND_LISTS
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
add_dependencies(sol2.documentation.sphinx sol2.documentation.doxygen)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# For the install target
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
install(DIRECTORY ${SOL2_SPHINX_BUILD_DIR}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DOCDIR}
|
||||||
|
)
|
2678
documentation/Doxyfile.in
Normal file
3
documentation/requirements.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
breathe
|
||||||
|
cmake
|
||||||
|
ninja
|
|
@ -105,7 +105,8 @@ Get and set the Lua entity that is used as the default error handler. The defaul
|
||||||
:caption: variable: handler
|
:caption: variable: handler
|
||||||
:name: protected-function-error-handler
|
:name: protected-function-error-handler
|
||||||
|
|
||||||
reference error_handler;
|
reference get_error_handler() const;
|
||||||
|
void set_error_handler(reference handler);
|
||||||
|
|
||||||
The error-handler that is called should a runtime error that Lua can detect occurs. The error handler function needs to take a single string argument (use type std::string if you want to use a C++ function bound to lua as the error handler) and return a single string argument (again, return a std::string or string-alike argument from the C++ function if you're using one as the error handler). If :doc:`exceptions<../exceptions>` are enabled, sol will attempt to convert the ``.what()`` argument of the exception into a string and then call the error handling function. It is a :doc:`reference<reference>`, as it must refer to something that exists in the lua registry or on the Lua stack. This is automatically set to the default error handler when ``protected_function`` is constructed.
|
The error-handler that is called should a runtime error that Lua can detect occurs. The error handler function needs to take a single string argument (use type std::string if you want to use a C++ function bound to lua as the error handler) and return a single string argument (again, return a std::string or string-alike argument from the C++ function if you're using one as the error handler). If :doc:`exceptions<../exceptions>` are enabled, sol will attempt to convert the ``.what()`` argument of the exception into a string and then call the error handling function. It is a :doc:`reference<reference>`, as it must refer to something that exists in the lua registry or on the Lua stack. This is automatically set to the default error handler when ``protected_function`` is constructed.
|
||||||
|
|
|
@ -26,4 +26,4 @@ Finally, there is a special abstraction that provides further stack optimization
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
|
|
||||||
Do not use ``sol::stack_count`` with a ``sol::stack_aligned_protected_function``. The default behavior checks if the ``error_handler`` member variable is valid, and attempts to push the handler onto the stack in preparation for calling the function. This inevitably changes the stack. Only use ``sol::stack_aligned_protected_function`` with ``sol::stack_count`` if you know that the handler is not valid (it is ``nil`` or its ``error_handler.valid()`` function returns ``false``), or if you use ``sol::stack_aligned_stack_handler_protected_function``, which references an existing stack index that can be before the precise placement of the function and its arguments.
|
Do not use ``sol::stack_count`` with a ``sol::stack_aligned_protected_function``. The default behavior checks if the ``get_error_handler`` function returns a valid object, and attempts to push the handler onto the stack in preparation for calling the function. This inevitably changes the stack. Only use ``sol::stack_aligned_protected_function`` with ``sol::stack_count`` if you know that the handler is not valid (it is ``nil`` or the ``get_error_handler().valid()`` function call returns ``false``), or if you use ``sol::stack_aligned_stack_handler_protected_function``, which references an existing stack index that can be before the precise placement of the function and its arguments.
|
|
@ -13,8 +13,10 @@
|
||||||
# All configuration values have a default; values that are commented out
|
# All configuration values have a default; values that are commented out
|
||||||
# serve to show the default.
|
# serve to show the default.
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
import typing
|
||||||
|
|
||||||
# If extensions (or modules to document with autodoc) are in another directory,
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
# add these directories to sys.path here. If the directory is relative to the
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
|
@ -29,7 +31,10 @@ import os
|
||||||
# Add any Sphinx extension module names here, as strings. They can be
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
# ones.
|
# ones.
|
||||||
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo']
|
extensions = [
|
||||||
|
'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'breathe',
|
||||||
|
'sphinx.ext.autosectionlabel'
|
||||||
|
]
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ['_templates']
|
templates_path = ['_templates']
|
||||||
|
@ -46,8 +51,8 @@ source_suffix = '.rst'
|
||||||
master_doc = 'index'
|
master_doc = 'index'
|
||||||
|
|
||||||
# General information about the project.
|
# General information about the project.
|
||||||
project = 'sol'
|
project = 'sol2'
|
||||||
copyright = '2019, ThePhD'
|
copyright = '2021, ThePhD'
|
||||||
author = 'ThePhD'
|
author = 'ThePhD'
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for
|
# The version info for the project you're documenting, acts as replacement for
|
||||||
|
@ -55,9 +60,9 @@ author = 'ThePhD'
|
||||||
# built documents.
|
# built documents.
|
||||||
#
|
#
|
||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = '3.2'
|
version = '4.0'
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = '3.2.3'
|
release = '4.0.0-alpha'
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
@ -74,7 +79,7 @@ language = None
|
||||||
|
|
||||||
# List of patterns, relative to source directory, that match files and
|
# List of patterns, relative to source directory, that match files and
|
||||||
# directories to ignore when looking for source files.
|
# directories to ignore when looking for source files.
|
||||||
exclude_patterns = []
|
exclude_patterns: typing.List[str] = []
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all
|
# The reST default role (used for this markup: `text`) to use for all
|
||||||
# documents.
|
# documents.
|
||||||
|
@ -95,7 +100,7 @@ exclude_patterns = []
|
||||||
pygments_style = 'sphinx'
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
# The default highlighting language: default is python
|
# The default highlighting language: default is python
|
||||||
highlight_language = 'c++'
|
highlight_language = 'cpp'
|
||||||
|
|
||||||
# A list of ignored prefixes for module index sorting.
|
# A list of ignored prefixes for module index sorting.
|
||||||
#modindex_common_prefix = []
|
#modindex_common_prefix = []
|
||||||
|
@ -141,7 +146,7 @@ html_theme_path = [
|
||||||
# Add any paths that contain custom static files (such as style sheets) here,
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
# relative to this directory. They are copied after the builtin static files,
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
html_static_path = []
|
html_static_path: typing.List[str] = []
|
||||||
|
|
||||||
# Add any extra paths that contain custom files (such as robots.txt or
|
# Add any extra paths that contain custom files (such as robots.txt or
|
||||||
# .htaccess) here, relative to this directory. These files are copied
|
# .htaccess) here, relative to this directory. These files are copied
|
||||||
|
@ -208,7 +213,7 @@ htmlhelp_basename = 'Soldoc'
|
||||||
|
|
||||||
# -- Options for LaTeX output ---------------------------------------------
|
# -- Options for LaTeX output ---------------------------------------------
|
||||||
|
|
||||||
latex_elements = {
|
latex_elements: dict = {
|
||||||
# The paper size ('letterpaper' or 'a4paper').
|
# The paper size ('letterpaper' or 'a4paper').
|
||||||
#'papersize': 'letterpaper',
|
#'papersize': 'letterpaper',
|
||||||
|
|
||||||
|
@ -279,3 +284,69 @@ texinfo_documents = [
|
||||||
|
|
||||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
||||||
#texinfo_no_detailmenu = False
|
#texinfo_no_detailmenu = False
|
||||||
|
|
||||||
|
# -- Options for Breathe -------------------------------------------
|
||||||
|
|
||||||
|
# C++ Index Configuration
|
||||||
|
#
|
||||||
|
cpp_index_common_prefix = ['sol::']
|
||||||
|
|
||||||
|
# Breathe Configuration
|
||||||
|
#
|
||||||
|
breathe_projects = {}
|
||||||
|
breathe_default_project = "sol2"
|
||||||
|
|
||||||
|
# -- Options for autosectionlabel ---------------------------------
|
||||||
|
|
||||||
|
# autosectionlabel Configuration
|
||||||
|
#
|
||||||
|
autosectionlabel_prefix_document = True
|
||||||
|
|
||||||
|
# ReadTheDocs Build Help
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
def run_cmake_doxygen():
|
||||||
|
"""Run the cmake command to get the doxygen sources"""
|
||||||
|
|
||||||
|
# Make sure the directory exists
|
||||||
|
cmake_dir = os.path.join(os.getcwd(), '_build/cmake-build')
|
||||||
|
xml_dir = os.path.join(cmake_dir, 'documentation/doxygen/xml')
|
||||||
|
os.makedirs(cmake_dir, exist_ok=True)
|
||||||
|
os.makedirs(xml_dir, exist_ok=True)
|
||||||
|
print("[conf.py] CMake Directory: %s" % cmake_dir)
|
||||||
|
print("[conf.py] XML Directory: %s" % xml_dir)
|
||||||
|
|
||||||
|
try:
|
||||||
|
retcode = subprocess.call(
|
||||||
|
"cmake -DZTD_TEXT_DOCUMENTATION:BOOL=TRUE -DZTD_TEXT_DOCUMENTATION_NO_SPHINX:BOOL=TRUE ../../../..",
|
||||||
|
shell=True,
|
||||||
|
cwd=cmake_dir)
|
||||||
|
except OSError as e:
|
||||||
|
sys.stderr.write("cmake generation execution failed: %s\n" % e)
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
retcode = subprocess.call("cmake --build .",
|
||||||
|
shell=True,
|
||||||
|
cwd=cmake_dir)
|
||||||
|
except OSError as e:
|
||||||
|
sys.stderr.write("cmake generation execution failed: %s\n" % e)
|
||||||
|
return
|
||||||
|
|
||||||
|
breathe_projects["sol2"] = xml_dir
|
||||||
|
|
||||||
|
|
||||||
|
def generate_doxygen_xml(app):
|
||||||
|
"""Run the doxygen make commands if we're on the ReadTheDocs server"""
|
||||||
|
|
||||||
|
read_the_docs_build = os.environ.get('READTHEDOCS', None) == 'True'
|
||||||
|
|
||||||
|
if read_the_docs_build:
|
||||||
|
run_cmake_doxygen()
|
||||||
|
|
||||||
|
|
||||||
|
def setup(app):
|
||||||
|
|
||||||
|
# Add hook for building doxygen xml when needed
|
||||||
|
app.connect("builder-inited", generate_doxygen_xml)
|
|
@ -29,7 +29,7 @@ what sol supports
|
||||||
- Pull out any Lua function with :doc:`sol::function<api/function>`: ``sol::function fx = table["socket_send"];``
|
- Pull out any Lua function with :doc:`sol::function<api/function>`: ``sol::function fx = table["socket_send"];``
|
||||||
- Can also set callables into :doc:`operator[] proxies<api/proxy>`: ``table["move_dude"] = &engine::move_dude;``
|
- Can also set callables into :doc:`operator[] proxies<api/proxy>`: ``table["move_dude"] = &engine::move_dude;``
|
||||||
- Safety: use :doc:`sol::protected_function<api/protected_function>` to catch any kind of error
|
- Safety: use :doc:`sol::protected_function<api/protected_function>` to catch any kind of error
|
||||||
+ ANY kind: C++ exception or Lua erors are trapped and run through the optional ``error_handler`` variable
|
+ ANY kind: C++ exception or Lua errors are trapped and run through the optional error handler stored in the protected function
|
||||||
- *Advanced:* :doc:`overloading of a single function name<api/overload>` so you don't need to do boring typechecks
|
- *Advanced:* :doc:`overloading of a single function name<api/overload>` so you don't need to do boring typechecks
|
||||||
- *Advanced:* :doc:`efficient handling and well-documented<functions>` way of dealing with arguments
|
- *Advanced:* :doc:`efficient handling and well-documented<functions>` way of dealing with arguments
|
||||||
|
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |