# ================================================================================================= # ADOBE SYSTEMS INCORPORATED # Copyright 2013 Adobe Systems Incorporated # All Rights Reserved # # NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms # of the Adobe license agreement accompanying it. # ================================================================================================= # ============================================================================== # define minimum cmake version # For Android always build with make 3.6 if(ANDROID) cmake_minimum_required(VERSION 3.5.2) else(ANDROID) cmake_minimum_required(VERSION 3.15.5) endif(ANDROID) SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configurations" FORCE) # Enable folder grouping of projects in IDEs set_property(GLOBAL PROPERTY USE_FOLDERS ON) # ============================================================================== # This project # ============================================================================== set(PRODUCT_NAME PluginTemplate) set(TARGET_NAME ${PRODUCT_NAME}) if(CMAKE_CL_64) project(${TARGET_NAME}64) set(BITS 64) else() project(${TARGET_NAME}) set(BITS 32) endif() # ============================================================================== # Shared config # ============================================================================== # setup some values before calling shared config set(XMP_THIS_PROJECT_RELATIVEPATH "../../..") include(${CMAKE_CURRENT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}/build/XMP_Config.cmake) # ============================================================================== # Add or overwite shared config variables # ============================================================================== # Windows specific if(WIN32) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_WINDOWS") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WINDOWS") SET(CMAKE_EXE_LINKER_FLAGS /NODEFAULTLIB:LIBCMT) endif() # all platform set(CXX_FLAGS_DEBUG "-D_DEBUG=1 -DDEBUG=1") set(CXX_FLAGS_RELEASE "-DNDEBUG=1") # ============================================================================== # Locations # ============================================================================== SetPluginOutputPath() # ============================================================================== # For convenience we define the sources as a variable. You can add # header files and cpp/c files and CMake will sort them out # ============================================================================== AddPluginApiFiles("../../..") list (APPEND COMMON_SOURCE_FILES ${XMPROOT_DIR}/source/UnicodeConversions.cpp) list (APPEND COMMON_SOURCE_FILES ${XMPROOT_DIR}/source/PerfUtils.cpp) list (APPEND COMMON_SOURCE_FILES ${XMPROOT_DIR}/source/XMP_ProgressTracker.cpp) if(UNIX) list(APPEND COMMON_SOURCE_FILES ${XMPROOT_DIR}/source/Host_IO-POSIX.cpp) else() list(APPEND COMMON_SOURCE_FILES ${XMPROOT_DIR}/source/Host_IO-Win.cpp) endif() source_group("Source Files\\common" FILES ${COMMON_SOURCE_FILES}) list(APPEND SOURCE_FILES ${SOURCE_ROOT}/Template_Handler.cpp ) source_group("Source Files" FILES ${SOURCE_FILES}) # resources AddPluginResourceFiles() # merge list elements list(APPEND SOURCE_FILES ${API_INCLUDE_FILES} ${API_SOURCE_FILES} ${COMMON_SOURCE_FILES} ${SOURCE_FILES} ${RESOURCE_FILES}) # include directories include_directories( ${XMPROOT_DIR} ${XMPROOT_DIR}/public/include ) if(UNIX) if(APPLE) set(XMPCORE_LIB "XMPCoreStatic") else(APPLE) set(XMPCORE_LIB "staticXMPCore") endif(APPLE) else(UNIX) if(WIN32) set(XMPCORE_LIB "XMPCoreStatic") endif(WIN32) endif(UNIX) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() #link directories link_directories(${XMPROOT_DIR}/public/libraries/${XMP_PLATFORM_FOLDER}) # ============================================================================== # Define what to do, lib, exe, etc set(DEPENDENCY_LIST "LIB:$(XMPCORE_LIB)") AddLibraryAndDependencies("${TARGET_NAME}" "${XMP_BUILD_STATIC}" "YES" "SHARED" "SOURCE_FILES" "DEPENDENCY_LIST") # ============================================================================== # Link dependencies if(WIN32) target_link_libraries( ${TARGET_NAME} ${XMPCORE_LIB} ${XMP_PLATFORM_LINK} ) else(WIN32) if(UNIX AND NOT APPLE) target_link_libraries( ${TARGET_NAME} ${XMPROOT_DIR}/public/libraries/${XMP_PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}.ar ${XMP_PLATFORM_LINK} ) else(UNIX AND NOT APPLE) target_link_libraries( ${TARGET_NAME} ${XMPCORE_LIB} ) endif() endif() set(FRAMEWORK_LIST "Mac:CoreFoundation" "Mac:Foundation" "Mac:CoreServices" "Mac:${XMP_PLATFORM_LINK}") AddMacFramework(${TARGET_NAME} FRAMEWORK_LIST) SetWinLinkFlags(${TARGET_NAME} "" "${TARGET_NAME}") if(APPLE) set_target_properties(${TARGET_NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH ON BUILD_WITH_INSTALL_NAME_DIR ON INSTALL_NAME_DIR "@executable_path/../Frameworks") endif() set(DEPEND_LIBS "") CreatePlugin(${TARGET_NAME} ${XMPPLUGIN_OUTPUT_DIR} "${PROJECT_ROOT}/resource/txt/*.txt" XMP_PLUGIN_DEPENDENCIES DEPEND_LIBS) # ============================================================================== # Post build # ============================================================================== if (UNIX) if(APPLE) add_custom_command (TARGET ${TARGET_NAME} POST_BUILD COMMAND cp -f ${PROJECT_ROOT}/resource/txt/MODULE_IDENTIFIER.txt ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.xpi/Versions/A/Resources/MODULE_IDENTIFIER.txt COMMAND cp -f ${PROJECT_ROOT}/resource/txt/XMPPLUGINUIDS-${BITS}.txt ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.xpi/Versions/A/Resources/XMPPLUGINUIDS.txt COMMENT "Copy resource") else() if((${CMAKE_BUILD_TYPE} MATCHES "Debug") OR (${CMAKE_BUILD_TYPE} MATCHES "debug") ) add_custom_command (TARGET ${TARGET_NAME} POST_BUILD COMMAND ls -l ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.xpi ) else() add_custom_command (TARGET ${TARGET_NAME} POST_BUILD COMMAND strip ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.xpi COMMAND ls -l ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.xpi ) endif() add_custom_command (TARGET ${TARGET_NAME} POST_BUILD COMMAND mkdir -p ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.resources COMMAND cp -f ${PROJECT_ROOT}/resource/txt/MODULE_IDENTIFIER.txt ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.resources/MODULE_IDENTIFIER.txt COMMAND cp -f ${PROJECT_ROOT}/resource/txt/XMPPLUGINUIDS-${BITS}.txt ${XMPPLUGIN_OUTPUT_DIR}/${TARGET_NAME}.resources/XMPPLUGINUIDS.txt COMMENT "Copy resource") endif() endif() #disable cmake warning "Manually-specified variables were not used by the project" set(ignore "${XMP_CMAKEFOLDER_NAME}") # ============================================================================== # configuration feedback # ============================================================================== message (STATUS "===========================================================================") message (STATUS " ${TARGET_NAME} ") message (STATUS "===========================================================================")