diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-19 07:55:09 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2022-10-19 07:55:09 +0200 |
commit | da5e3cb79656f9869918d7d9648cee751c324b26 (patch) | |
tree | d2a7ef64f6b7ea08f29f64d68f8ee18b7739b542 /CMakeLists.txt | |
parent | bafde6416401672cc7838f02af504561d34681fb (diff) |
add submodules
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 164 |
1 files changed, 162 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 682793a5..eb4e9922 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,10 @@ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR CMAKE_INSTALL_PREFIX STREQUAL set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "" FORCE) endif() +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR CMAKE_INSTALL_PREFIX STREQUAL "") + set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE STRING "" FORCE) +endif() + if(MSVC) add_compile_options(-EHsc) endif() @@ -38,16 +42,172 @@ set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS OFF) set_directory_properties(PROPERTIES CORRADE_CXX_STANDARD 20) set_directory_properties(PROPERTIES INTERFACE_CORRADE_CXX_STANDARD 20) +foreach(_module corrade magnum magnum-integration magnum-plugins) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${_module}/modules") +endforeach() + +function(sets type) + set(i 0) + list(LENGTH ARGN max) + math(EXPR foo "${max} % 2") + if(NOT foo EQUAL 0) + message(FATAL_ERROR "argument count not even") + endif() + while(i LESS max) + list(GET ARGN "${i}" name) + math(EXPR i "${i} + 1") + list(GET ARGN "${i}" value) + math(EXPR i "${i} + 1") + set(${name} "${value}" CACHE "${type}" "" FORCE) + endwhile() +endfunction() + +cmake_policy(SET CMP0063 NEW) + +sets(PATH ImGui_DIR "${CMAKE_SOURCE_DIR}/imgui") +sets(PATH ImGui_INCLUDE_DIR "${ImGui_DIR}") + +if(MSVC) + add_compile_options(/permissive-) + add_compile_options( + -wd4244 # warning C4244: 'argument': conversion from 'int' to 'float', possible loss of data + -wd4312 # warning C4312: 'reinterpret_cast': conversion from 'GLenum' to 'void *' of greater size + -wd4251 # warning C4251: 't::f': class 'x' needs to have dll-interface to be used by clients of class 'y' + -wd4456 # warning C4456: declaration of 'x' hides previous local declaration + ) + add_compile_options(-external:W0 -external:anglebrackets) + + if(CMAKE_SIZEOF_VOID_P GREATER_EQUAL 8) + add_link_options(-HIGHENTROPYVA) + endif() +endif() + +sets(BOOL + CORRADE_BUILD_STATIC OFF + CORRADE_BUILD_TESTS OFF + CORRADE_BUILD_DEPRECATED OFF + + CORRADE_MSVC_COMPATIBILITY OFF + + CORRADE_UTILITY_USE_ANSI_COLORS ON + CORRADE_WITH_TESTSUITE ON + + MAGNUM_BUILD_STATIC OFF + MAGNUM_BUILD_TESTS OFF + + MAGNUM_WITH_ANYIMAGECONVERTER ON + MAGNUM_WITH_ANYIMAGEIMPORTER ON + MAGNUM_WITH_DISTANCEFIELDCONVERTER ON + MAGNUM_WITH_FONTCONVERTER ON + MAGNUM_WITH_GL_INFO ON + MAGNUM_WITH_IMAGECONVERTER ON + MAGNUM_WITH_MAGNUMFONT ON + MAGNUM_WITH_MAGNUMFONTCONVERTER ON + MAGNUM_WITH_OBJIMPORTER ON + MAGNUM_WITH_OPENGLTESTER OFF + MAGNUM_WITH_SDL2APPLICATION ON + MAGNUM_WITH_SHADERCONVERTER ON + MAGNUM_WITH_SHADERS ON + MAGNUM_WITH_SHADERTOOLS ON + MAGNUM_WITH_TGAIMAGECONVERTER ON + MAGNUM_WITH_TGAIMPORTER ON + MAGNUM_WITH_WINDOWLESSWGLAPPLICATION ON + + MAGNUM_WITH_DDSIMPORTER ON + MAGNUM_WITH_ICOIMPORTER ON + MAGNUM_WITH_PRIMITIVEIMPORTER ON + MAGNUM_WITH_STBIMAGECONVERTER ON + MAGNUM_WITH_STBIMAGEIMPORTER ON + MAGNUM_WITH_STBTRUETYPEFONT ON + MAGNUM_WITH_TINYGLTFIMPORTER ON + + MAGNUM_WITH_BULLET OFF + MAGNUM_WITH_DART OFF + MAGNUM_WITH_EIGEN ON + MAGNUM_WITH_GLM ON + MAGNUM_WITH_IMGUI ON +) + +sets(BOOL + SDL_SHARED ON + SDL_STATIC OFF + + SDL_3DNOW OFF + SDL_ALTIVEC OFF + #SDL_ASSEMBLY OFF + SDL_ATOMIC OFF + SDL_AUDIO OFF + SDL_CPUINFO OFF + SDL_DIRECTX OFF + SDL_DISKAUDIO OFF + SDL_DUMMYAUDIO OFF + SDL_DUMMYVIDEO OFF + SDL_FILE OFF + SDL_FILESYSTEM OFF + SDL_HAPTIC OFF + SDL_HIDAPI OFF + SDL_HIDAPI_JOYSTICK OFF + SDL_JOYSTICK OFF + SDL_LIBC ON + SDL_LOADSO ON + SDL_LOCALE OFF + SDL_MISC OFF + #SDL_MMX OFF + SDL_OPENGL ON + SDL_OPENGLES OFF + SDL_POWER OFF + SDL_RENDER OFF + SDL_RENDER_D3D OFF + SDL_SENSOR OFF + #SDL_SSE OFF + #SDL_SSE2 OFF + #SDL_SSE3 OFF + #SDL_SSEMATH OFF + SDL_SYSTEM_ICONV OFF + SDL_TEST OFF + SDL_THREADS ON + SDL_TIMERS OFF + SDL_VIDEO ON + SDL_VIRTUAL_JOYSTICK OFF + SDL_VULKAN OFF + SDL_WASAPI OFF + SDL_XINPUT OFF + + SDL2_DISABLE_INSTALL OFF + SDL2_DISABLE_SDL2MAIN ON +) + +sets(BOOL + JSON_Diagnostics ON + JSON_Install ON + JSON_MultipleHeaders ON + JSON_SystemInclude ON +) + set(_userconfig "userconfig-${CMAKE_CXX_COMPILER_ID}.cmake") -if(EXISTS "${CMAKE_SOURCE_DIR}/${_userconfig}") +if(EXISTS "${PROJECT_SOURCE_DIR}/${_userconfig}/${_userconfig}") include("${CMAKE_SOURCE_DIR}/${_userconfig}" NO_POLICY_SCOPE) else() message(STATUS "user config '${_userconfig}' not found") endif() +find_package(ImGui QUIET REQUIRED) + +add_subdirectory(json) + +add_subdirectory(sdl2) +find_package(SDL2 QUIET REQUIRED) + +add_subdirectory(corrade) find_package(Corrade QUIET REQUIRED) -find_package(Magnum QUIET REQUIRED COMPONENTS GL Shaders Trade Sdl2Application) + +add_subdirectory(magnum) +find_package(Magnum QUIET REQUIRED) + +add_subdirectory(magnum-plugins) find_package(MagnumPlugins QUIET REQUIRED) + +add_subdirectory(magnum-integration) find_package(MagnumIntegration QUIET REQUIRED ImGui) include_directories(.) |