commit 70b745267f6ab42ea8db1d47d75e7c30ac843b2d Author: Green Sky Date: Fri Mar 8 21:32:48 2024 +0100 starting repo diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a1a3be6 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,75 @@ +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) + +# cmake setup begin +project(solDOOM) + +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(SOLDOOM_STANDALONE ON) + # why the f do i need this >:( + set(NOT_SOLDOOM_STANDALONE OFF) +else() + set(SOLDOOM_STANDALONE OFF) + set(NOT_SOLDOOM_STANDALONE ON) +endif() +message("II SOLDOOM_STANDALONE " ${SOLDOOM_STANDALONE}) + +option(SOLDOOM_BUILD_PLUGINS "Build the solDOOM plugins" ${SOLDOOM_STANDALONE}) + +if (SOLDOOM_STANDALONE) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + + # defaulting to debug mode, if not specified + if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Debug") + endif() + + # setup my vim ycm :D + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + + # more paths + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") +endif() + +# external libs +add_subdirectory(./external EXCLUDE_FROM_ALL) # before increasing warn levels, sad :( + +if (SOLDOOM_STANDALONE) + set(CMAKE_CXX_EXTENSIONS OFF) + + # bump up warning levels appropriately for clang, gcc & msvc + if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + add_compile_options( + -Wall -Wextra # Reasonable and standard + -Wpedantic # Warn if non-standard C++ is used + -Wunused # Warn on anything being unused + #-Wconversion # Warn on type conversions that may lose data + #-Wsign-conversion # Warn on sign conversions + -Wshadow # Warn if a variable declaration shadows one from a parent context + ) + + if (NOT WIN32) + #link_libraries(-fsanitize=address) + #link_libraries(-fsanitize=address,undefined) + #link_libraries(-fsanitize-address-use-after-scope) + #link_libraries(-fsanitize=undefined) + endif() + elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") + if (CMAKE_CXX_FLAGS MATCHES "/W[0-4]") + string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + endif() + endif() + +endif() + +# cmake setup end + +add_subdirectory(./src) + +if (SOLDOOM_BUILD_PLUGINS) + add_subdirectory(./plugins) +endif() + diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt new file mode 100644 index 0000000..30d6ce1 --- /dev/null +++ b/external/CMakeLists.txt @@ -0,0 +1,62 @@ +cmake_minimum_required(VERSION 3.24 FATAL_ERROR) + +include(FetchContent) + +# TODO: move entt dep into solanaceae_contact +if (NOT TARGET EnTT::EnTT) + FetchContent_Declare(EnTT + GIT_REPOSITORY https://github.com/skypjack/entt.git + GIT_TAG v3.12.2 + EXCLUDE_FROM_ALL + ) + FetchContent_MakeAvailable(EnTT) +endif() + +#if (NOT TARGET solanaceae_util) + #FetchContent_Declare(solanaceae_util + #GIT_REPOSITORY https://github.com/Green-Sky/solanaceae_util.git + #GIT_TAG master + #EXCLUDE_FROM_ALL + #) + #FetchContent_MakeAvailable(solanaceae_util) +#endif() + +#if (NOT TARGET solanaceae_contact) + #FetchContent_Declare(solanaceae_contact + #GIT_REPOSITORY https://github.com/Green-Sky/solanaceae_contact.git + #GIT_TAG master + #EXCLUDE_FROM_ALL + #) + #FetchContent_MakeAvailable(solanaceae_contact) +#endif() + +#if (NOT TARGET solanaceae_message3) + #FetchContent_Declare(solanaceae_message3 + #GIT_REPOSITORY https://github.com/Green-Sky/solanaceae_message3.git + #GIT_TAG master + #EXCLUDE_FROM_ALL + #) + #FetchContent_MakeAvailable(solanaceae_message3) +#endif() + +if (NOT TARGET solanaceae_plugin) + FetchContent_Declare(solanaceae_plugin + GIT_REPOSITORY https://github.com/Green-Sky/solanaceae_plugin.git + GIT_TAG master + EXCLUDE_FROM_ALL + ) + FetchContent_MakeAvailable(solanaceae_plugin) +endif() + +#if (NOT TARGET oatpp) + #set(OATPP_INSTALL OFF CACHE BOOL "" FORCE) + #set(OATPP_BUILD_TESTS OFF CACHE BOOL "" FORCE) + #set(OATPP_LINK_TEST_LIBRARY OFF CACHE BOOL "" FORCE) + #FetchContent_Declare(oatpp + #GIT_REPOSITORY https://github.com/oatpp/oatpp.git + #GIT_TAG master + #EXCLUDE_FROM_ALL + #) + #FetchContent_MakeAvailable(oatpp) +#endif() +