Warning, /graphics/krita/3rdparty_plugins/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 project (krita-external-plugins)
0002
0003 message( STATUS "Preparing Krita external plugins build...")
0004
0005 #
0006 # Build external Krita plugins.
0007 # Parameters: EXTERNALS_DOWNLOAD_DIR place to download all packages
0008 # INSTALL_ROOT place to install everything to
0009 # MXE_TOOLCHAIN: the toolchain file to cross-compile using MXE
0010 #
0011 # Example usage: cmake ..\kritadeposx -DEXTERNALS_DOWNLOAD_DIR=/dev2/d -DINSTALL_ROOT=/dev2/i -DWIN64_BUILD=TRUE -DBOOST_LIBRARYDIR=/dev2/i/lib -G "Visual Studio 11 Win64"
0012
0013 if(APPLE)
0014 execute_process(COMMAND sysctl -n hw.optional.arm64 OUTPUT_VARIABLE apple_has_arm64_optional)
0015 if(apple_has_arm64_optional)
0016 message(STATUS "Building on macos arm")
0017 cmake_minimum_required(VERSION 3.19.3)
0018 else()
0019 cmake_minimum_required(VERSION 3.7.2)
0020 endif()
0021 else(APPLE)
0022 cmake_minimum_required(VERSION 3.7.0 FATAL_ERROR)
0023 endif()
0024
0025 if(NOT SUBMAKE_JOBS)
0026 set(SUBMAKE_JOBS 1)
0027 endif()
0028
0029 if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
0030 message(FATAL_ERROR "Compiling in the source directory is not supported. Use for example 'mkdir build; cd build; cmake ..'.")
0031 endif (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
0032
0033 # Tools must be obtained to work with:
0034 include (ExternalProject)
0035
0036 # allow specification of a directory with pre-downloaded
0037 # requirements
0038 message( STATUS "EXTERNALS_DOWNLOAD_DIR: ${EXTERNALS_DOWNLOAD_DIR}")
0039 if(NOT IS_DIRECTORY ${EXTERNALS_DOWNLOAD_DIR})
0040 message(FATAL_ERROR "No externals download dir set. Use -DEXTERNALS_DOWNLOAD_DIR")
0041 endif()
0042
0043 message( STATUS "INSTALL_ROOT: ${INSTALL_ROOT}")
0044 if(NOT IS_DIRECTORY ${INSTALL_ROOT})
0045 message(FATAL_ERROR "No install dir set. Use -DINSTALL_ROOT")
0046 endif()
0047
0048 set(TOP_INST_DIR ${INSTALL_ROOT})
0049 set(EXTPREFIX "${TOP_INST_DIR}")
0050
0051 message( STATUS "CMAKE_GENERATOR: ${CMAKE_GENERATOR}")
0052 message( STATUS "CMAKE_CL_64: ${CMAKE_CL_64}")
0053 message( STATUS "CMAKE_PREFIX_PATH: ${CMAKE_PREFIX_PATH}")
0054
0055 set(GLOBAL_BUILD_TYPE RelWithDebInfo)
0056 set(GLOBAL_PROFILE ${GLOBAL_PROFILE} -DBUILD_TESTING=false)
0057
0058 set(SECURITY_EXE_LINKER_FLAGS "")
0059 set(SECURITY_SHARED_LINKER_FLAGS "")
0060 set(SECURITY_MODULE_LINKER_FLAGS "")
0061 if (MINGW)
0062 option(USE_MINGW_HARDENING_LINKER "Enable DEP (NX), ASLR and high-entropy ASLR linker flags (mingw-w64)" ON)
0063 if (USE_MINGW_HARDENING_LINKER)
0064 set(SECURITY_EXE_LINKER_FLAGS "-Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base")
0065 set(SECURITY_SHARED_LINKER_FLAGS "-Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base")
0066 set(SECURITY_MODULE_LINKER_FLAGS "-Wl,--dynamicbase -Wl,--nxcompat -Wl,--disable-auto-image-base")
0067 # Enable high-entropy ASLR for 64-bit
0068 # The image base has to be >4GB for HEASLR to be enabled.
0069 # The values used here are kind of arbitrary.
0070 set(SECURITY_EXE_LINKER_FLAGS "${SECURITY_EXE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000")
0071 set(SECURITY_SHARED_LINKER_FLAGS "${SECURITY_SHARED_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000")
0072 set(SECURITY_MODULE_LINKER_FLAGS "${SECURITY_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000")
0073 set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0074 -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0075 -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0076 -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0077 )
0078 else ()
0079 message(WARNING "Linker Security Flags not enabled!")
0080 endif ()
0081 elseif (MSVC)
0082 set(SECURITY_C_FLAGS ${CMAKE_C_FLAGS})
0083 set(SECURITY_CXX_FLAGS ${CMAKE_CXX_FLAGS})
0084 # Increase the stack size to match MinGW's. Prevents crashes with GMic.
0085 set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:4194304")
0086 set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:4194304")
0087 set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:4194304")
0088 option(USE_CONTROL_FLOW_GUARD "Enable Control Flow Guard hardening (MSVC)" ON)
0089 if (USE_CONTROL_FLOW_GUARD)
0090 set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} /guard:cf")
0091 set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} /guard:cf")
0092 set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /GUARD:CF")
0093 set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /GUARD:CF")
0094 set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /GUARD:CF")
0095 endif (USE_CONTROL_FLOW_GUARD)
0096 set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0097 -DCMAKE_C_FLAGS=${SECURITY_C_FLAGS}
0098 -DCMAKE_CXX_FLAGS=${SECURITY_CXX_FLAGS}
0099 -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0100 -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0101 -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0102 )
0103 endif ()
0104
0105 if (WIN32)
0106 set(PATCH_COMMAND patch)
0107 endif()
0108
0109 if (APPLE)
0110 string(REPLACE ";" "$<SEMICOLON>" CMAKE_OSX_ARCHITECTURES_ESCAPED "${CMAKE_OSX_ARCHITECTURES}")
0111 set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0112 -DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH}
0113 -DCMAKE_MACOSX_RPATH=ON
0114 -DKDE_SKIP_RPATH_SETTINGS=ON
0115 -DBUILD_WITH_INSTALL_RPATH=ON
0116 -DAPPLE_SUPPRESS_X11_WARNING=ON
0117 -DCMAKE_FIND_FRAMEWORK=LAST
0118 -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES_ESCAPED}
0119 )
0120 set(PATCH_COMMAND patch)
0121 endif ()
0122
0123 if (ANDROID)
0124 # Increase the stack size to match MinGW's. Prevents crashes with GMic.
0125 set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0126 set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0127 set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0128
0129 string(REPLACE ";" "$<SEMICOLON>" _escape_find_root_path "${CMAKE_FIND_ROOT_PATH}")
0130 set (GLOBAL_PROFILE ${GLOBAL_PROFILE}
0131 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
0132 -DANDROID_PLATFORM=${ANDROID_PLATFORM}
0133 -DANDROID_ABI=${ANDROID_ABI}
0134 -DCMAKE_FIND_ROOT_PATH="${_escape_find_root_path}"
0135 -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0136 -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0137 -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0138 )
0139 endif()
0140
0141 if (UNIX AND NOT APPLE)
0142 set(LINUX true)
0143 set(PATCH_COMMAND patch)
0144 endif ()
0145
0146 # this list must be dependency-ordered
0147 add_subdirectory( ext_gmic )