diff --git a/CMakeLists.txt b/CMakeLists.txt index f0d45df..f346003 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,8 @@ set(librw_AUTHOR aap) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") +set(LIBRW_STATIC_RUNTIME_DEFAULT OFF) + if(WIN32) set(LIBRW_PLATFORMS "NULL" "GL3" "D3D9") set(LIBRW_PLATFORM_GL3_REQUIRES_OPENGL ON) @@ -65,6 +67,11 @@ include(CMakeDependentOption) option(LIBRW_TOOLS "Build librw tools" ${librw_MAINPROJECT}) option(LIBRW_INSTALL "Install librw files" ${librw_MAINPROJECT}) cmake_dependent_option(LIBRW_EXAMPLES "Build librw examples" ON "NOT LIBRW_PLATFORM_PS2;NOT LIBRW_PLATFORM_NULL" OFF) +option(LIBRW_STATIC_RUNTIME "Try very hard to link to static libraries" ${LIBRW_STATIC_RUNTIME_DEFAULT}) + +if(LIBRW_STATIC_RUNTIME) + include(UseStaticRuntime) +endif() if(LIBRW_INSTALL) include(GNUInstallDirs) diff --git a/cmake/UseStaticRuntime.cmake b/cmake/UseStaticRuntime.cmake new file mode 100644 index 0000000..f61fa26 --- /dev/null +++ b/cmake/UseStaticRuntime.cmake @@ -0,0 +1,7 @@ +if(CMAKE_C_COMPILER_ID MATCHES "^MSVC$") + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") +endif() + +if(CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang)$") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") +endif() diff --git a/cmake/win/WinFunctions.cmake b/cmake/win/WinFunctions.cmake index d06280a..b7f0267 100644 --- a/cmake/win/WinFunctions.cmake +++ b/cmake/win/WinFunctions.cmake @@ -1,5 +1,7 @@ set(SDL2_STATIC_INIT ON) set(GLFW3_STATIC_INIT ON) +set(LIBRW_STATIC_RUNTIME_DEFAULT ON) + function(librw_platform_target TARGET) endfunction()