From a747053a481dbb508e104ae8b1fdbb6d459a52ee Mon Sep 17 00:00:00 2001 From: Green Sky Date: Thu, 14 Dec 2023 18:13:58 +0100 Subject: [PATCH] make cmake project embedable --- CMakeLists.txt | 77 +++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ae5ad2..83e44a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,48 +1,61 @@ cmake_minimum_required(VERSION 3.9 FATAL_ERROR) # cmake setup begin -project(tomato) +project(totato) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -# defaulting to debug mode, if not specified -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Debug") +if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(TOTATO_STANDALONE ON) +else() + set(TOTATO_STANDALONE OFF) endif() +message("II TOTATO_STANDALONE " ${TOTATO_STANDALONE}) -# setup my vim ycm :D -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +#option(TOTATO_BUILD_PLUGINS "Build the toxic_games plugins" ${TOTATO_STANDALONE}) -# 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") +if (TOTATO_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) # before increasing warn levels, sad :( -set(CMAKE_CXX_EXTENSIONS OFF) +if (TOTATO_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 - ) + # 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,undefined) - #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") + if (NOT WIN32) + #link_libraries(-fsanitize=address,undefined) + #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()