Warning, /graphics/digikam/core/cmake/rules/RulesWindows.cmake is written in an unsupported language. File is not indexed.
0001 # 0002 # SPDX-FileCopyrightText: 2010-2024 by Gilles Caulier, <caulier dot gilles at gmail dot com> 0003 # 0004 # SPDX-License-Identifier: BSD-3-Clause 0005 # 0006 0007 if(WIN32) 0008 0009 if(MINGW) 0010 0011 # For LibRaw 0012 0013 find_library(WSOCK32_LIBRARY wsock32) 0014 find_library(WS2_32_LIBRARY ws2_32) 0015 0016 # For MediaPlayer 0017 0018 find_library(NETAPI32_LIBRARY netapi32) 0019 find_library(USEENV_LIBRARY userenv) 0020 find_library(PSAPI_LIBRARY psapi) 0021 0022 else() # MSVC 0023 0024 # For LibRaw 0025 0026 set(WSOCK32_LIBRARY wsock32) 0027 set(WS2_32_LIBRARY ws2_32) 0028 0029 # For MediaPlayer 0030 0031 set(NETAPI32_LIBRARY netapi32) 0032 set(USEENV_LIBRARY userenv) 0033 set(PSAPI_LIBRARY psapi) 0034 0035 endif() 0036 0037 endif() 0038 0039 if(MINGW) 0040 0041 # NOTE: cross-compilation rules inspired from https://phabricator.kde.org/T3917 0042 0043 if(ENABLE_MINGW_HARDENING_LINKER) 0044 0045 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base") 0046 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base") 0047 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base") 0048 0049 if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") 0050 0051 # Enable high-entropy ASLR for 64-bit 0052 # The image base has to be >4GB for HEASLR to be enabled. 0053 # The values used here are kind of arbitrary. 0054 0055 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000") 0056 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000") 0057 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000") 0058 0059 endif() 0060 0061 message(STATUS "MinGW linker Security Flags enabled") 0062 0063 else() 0064 0065 message(WARNING "MinGW Linker Security Flags not enabled!") 0066 0067 endif() 0068 0069 endif() 0070 0071 # Increase the stack size to prevent crashes with GMic-qt. 0072 0073 if(MSVC) 0074 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:16777216") 0075 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:16777216") 0076 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:16777216") 0077 elseif(MINGW) 0078 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,16777216") 0079 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--stack,16777216") 0080 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--stack,16777216") 0081 endif() 0082 0083 # Disable indeep warnings from Visual Studio C++ 0084 0085 if(MSVC) 0086 0087 # To disable warnings about no suitable definition provided for explicit template instantiation request. 0088 add_compile_options(/wd4661) 0089 # To disable warnings about deprecated POSIX methods(). 0090 add_compile_options(/wd4996) 0091 # To disable warnings about qualifier applied to reference type ignored. 0092 add_compile_options(/wd4181) 0093 # To disable warnings about 'storage-class-keyword' no longer supported as storage class. 0094 add_compile_options(/wd5033) 0095 # To disable warnings about size_t to uint conversion data lost. 0096 add_compile_options(/wd4267) 0097 # To disable warnings about truncation from double to float. 0098 add_compile_options(/wd4305) 0099 # To disable warnings about linking object specified multiple times. 0100 add_link_options(/ignore:4197) 0101 0102 endif()