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         if ("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
0068             # Enable high-entropy ASLR for 64-bit
0069             # The image base has to be >4GB for HEASLR to be enabled.
0070             # The values used here are kind of arbitrary.
0071             set(SECURITY_EXE_LINKER_FLAGS "${SECURITY_EXE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000")
0072             set(SECURITY_SHARED_LINKER_FLAGS "${SECURITY_SHARED_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000")
0073             set(SECURITY_MODULE_LINKER_FLAGS "${SECURITY_MODULE_LINKER_FLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x180000000")
0074             set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0075                 -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0076                 -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0077                 -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0078             )
0079         endif ()
0080     else ()
0081         message(WARNING "Linker Security Flags not enabled!")
0082     endif ()
0083 elseif (MSVC)
0084     set(SECURITY_C_FLAGS ${CMAKE_C_FLAGS})
0085     set(SECURITY_CXX_FLAGS ${CMAKE_CXX_FLAGS})
0086     # Increase the stack size to match MinGW's. Prevents crashes with GMic.
0087     set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:4194304")
0088     set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /STACK:4194304")
0089     set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /STACK:4194304")
0090     option(USE_CONTROL_FLOW_GUARD "Enable Control Flow Guard hardening (MSVC)" ON)
0091     if (USE_CONTROL_FLOW_GUARD)
0092         set(SECURITY_C_FLAGS "${SECURITY_C_FLAGS} /guard:cf")
0093         set(SECURITY_CXX_FLAGS "${SECURITY_CXX_FLAGS} /guard:cf")
0094         set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /GUARD:CF")
0095         set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /GUARD:CF")
0096         set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /GUARD:CF")
0097     endif (USE_CONTROL_FLOW_GUARD)
0098     set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0099         -DCMAKE_C_FLAGS=${SECURITY_C_FLAGS}
0100         -DCMAKE_CXX_FLAGS=${SECURITY_CXX_FLAGS}
0101         -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0102         -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0103         -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0104     )
0105 endif ()
0106 
0107 if (WIN32)
0108    set(PATCH_COMMAND myptch)
0109 endif()
0110 
0111 if (APPLE)
0112     set(GLOBAL_PROFILE ${GLOBAL_PROFILE}
0113                         -DCMAKE_PREFIX_PATH:PATH=${CMAKE_PREFIX_PATH}
0114                         -DCMAKE_MACOSX_RPATH=ON
0115                         -DKDE_SKIP_RPATH_SETTINGS=ON
0116                         -DBUILD_WITH_INSTALL_RPATH=ON
0117                         -DAPPLE_SUPPRESS_X11_WARNING=ON)
0118     set(PATCH_COMMAND patch)
0119 endif ()
0120 
0121 if (ANDROID)
0122  # Increase the stack size to match MinGW's. Prevents crashes with GMic.
0123   set(SECURITY_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0124   set(SECURITY_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0125   set(SECURITY_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,stack-size=4194304")
0126 
0127   string(REPLACE ";" "|" _escape_find_root_path "${CMAKE_FIND_ROOT_PATH}")
0128   set (GLOBAL_PROFILE ${GLOBAL_PROFILE}
0129                      -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
0130                      -DANDROID_PLATFORM=${ANDROID_PLATFORM}
0131                      -DANDROID_ABI=${ANDROID_ABI}
0132                      -DCMAKE_FIND_ROOT_PATH="${_escape_find_root_path}"
0133                      -DCMAKE_EXE_LINKER_FLAGS=${SECURITY_EXE_LINKER_FLAGS}
0134                      -DCMAKE_SHARED_LINKER_FLAGS=${SECURITY_SHARED_LINKER_FLAGS}
0135                      -DCMAKE_MODULE_LINKER_FLAGS=${SECURITY_MODULE_LINKER_FLAGS}
0136                      )
0137 
0138   # see: https://github.com/android/ndk/issues/929
0139   unset (CMAKE_SYSROOT)
0140 endif()
0141 
0142 if (UNIX AND NOT APPLE)
0143     set(LINUX true)
0144     set(PATCH_COMMAND patch)
0145 endif ()
0146 
0147 # this list must be dependency-ordered
0148 add_subdirectory( ext_gmic )