diff options
Diffstat (limited to 'XMPCore/build/CMakeListsCommon.txt')
-rw-r--r-- | XMPCore/build/CMakeListsCommon.txt | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/XMPCore/build/CMakeListsCommon.txt b/XMPCore/build/CMakeListsCommon.txt new file mode 100644 index 0000000..b757273 --- /dev/null +++ b/XMPCore/build/CMakeListsCommon.txt @@ -0,0 +1,240 @@ +# ============================================================================== +cmake_minimum_required(VERSION 2.8.6) + +# Enable folder grouping of projects in IDEs +set_property(GLOBAL PROPERTY USE_FOLDERS ON) + + + +# ============================================================================== +# For convenience we define the sources as a variable. You can add +# header files and cpp/c files and CMake will sort them out +# ============================================================================== + +list (APPEND INTERNAL_HEADER_FILES + ${XMPROOT_DIR}/source/ExpatAdapter.hpp + ${XMPROOT_DIR}/source/UnicodeConversions.hpp + ${XMPROOT_DIR}/source/UnicodeInlines.incl_cpp + ${XMPROOT_DIR}/source/XMLParserAdapter.hpp + ${XMPROOT_DIR}/build/XMP_BuildInfo.h + ${SOURCE_ROOT}/XMPCore_Impl.hpp + ${SOURCE_ROOT}/XMPIterator.hpp + ${SOURCE_ROOT}/XMPMeta.hpp + ${SOURCE_ROOT}/XMPUtils.hpp + ) +source_group("Header Files\\Private\\XMPCore" FILES ${INTERNAL_HEADER_FILES}) + +file (GLOB PRIVATE_XMPCOMMON_HEADERS ${XMPROOT_DIR}/XMPCommon/ImplHeaders/*.h) +source_group("Header Files\\Private\\XMPCommon" FILES ${PRIVATE_XMPCOMMON_HEADERS}) + +file (GLOB PRIVATE_XMPCORE_HEADERS ${XMPROOT_DIR}/XMPCore/headers/*.h ${XMPROOT_DIR}/XMPCore/Interfaces/*.h) +source_group("Header Files\\Private\\XMPCore" FILES ${PRIVATE_XMPCORE_HEADERS}) + +file (GLOB_RECURSE PUBLIC_CLIENTGLUE_HEADER_FILES ${XMPROOT_DIR}/public/include/client-glue/*.*) +list (REMOVE_ITEM PUBLIC_CLIENTGLUE_HEADER_FILES + ${XMPROOT_DIR}/public/include/client-glue/TXMPFiles.incl_cpp + ${XMPROOT_DIR}/public/include/client-glue/WXMPFiles.hpp + ) +source_group("Header Files\\Public\\Client Glue" FILES ${PUBLIC_CLIENTGLUE_HEADER_FILES}) + +file (GLOB PUBLIC_HEADER_FILES ${XMPROOT_DIR}/public/include/*.*) +list (REMOVE_ITEM PUBLIC_HEADER_FILES + ${XMPROOT_DIR}/public/include/TXMPFiles.hpp + ${XMPROOT_DIR}/public/include/XMP_IO.hpp + ) +source_group("Header Files\\Public" FILES ${PUBLIC_HEADER_FILES}) + +file (GLOB_RECURSE PUBLIC_XMPCOMMON_HEADERS ${XMPROOT_DIR}/public/include/XMPCommon/*.h ${XMPROOT_DIR}/XMPCommon/*.h) +source_group("Header Files\\Public\\XMPCommon" FILES ${PUBLIC_XMPCOMMON_HEADERS}) + +file (GLOB_RECURSE PUBLIC_XMPCORE_HEADERS ${XMPROOT_DIR}/public/include/XMPCore/*.h) +source_group("Header Files\\Public\\XMPCore" FILES ${PUBLIC_XMPCORE_HEADERS}) + +file (GLOB ABIWRAPPER_SOURCE_FILES ${SOURCE_ROOT}/WXMP*.cpp) +source_group("Source Files\\ABI Wrappers" FILES ${ABIWRAPPER_SOURCE_FILES}) + +#XMP Core classes +file (GLOB CORECLASS_SOURCE_FILES ${SOURCE_ROOT}/XMP*.cpp) +list (REMOVE_ITEM CORECLASS_SOURCE_FILES ${SOURCE_ROOT}/XMPCore_Impl.cpp) +source_group("Source Files\\Core Classes" FILES ${CORECLASS_SOURCE_FILES}) + +file (GLOB THIRDPARTY_SOURCE_FILES ${TP_ZUID_PATH}/*.cpp) +list (APPEND THIRDPARTY_SOURCE_FILES + ${TP_EXPAT_PATH}/xmlparse.c + ${TP_EXPAT_PATH}/xmlrole.c + ${TP_EXPAT_PATH}/xmltok.c + ) +list (APPEND THIRDPARTY_SOURCE_FILES ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/expat_config.h) +source_group("Source Files\\Third Party" FILES ${THIRDPARTY_SOURCE_FILES}) + +file (GLOB XMPCOMMON_SOURCES ${XMPROOT_DIR}/XMPCommon/source/*.cpp) +source_group("Source Files\\Private\\XMPCommon" FILES ${XMPCOMMON_SOURCES}) + +list (APPEND UTILITY_SOURCE_FILES + ${SOURCE_ROOT}/ExpatAdapter.cpp + ${SOURCE_ROOT}/ParseRDF.cpp + ${SOURCE_ROOT}/XMPCore_Impl.cpp + ${XMPROOT_DIR}/source/UnicodeConversions.cpp + ${XMPROOT_DIR}/source/XML_Node.cpp + ${XMPROOT_DIR}/source/XMP_LibUtils.cpp + ) +source_group("Source Files\\Utilities" FILES ${UTILITY_SOURCE_FILES}) + +#resource files +file (GLOB RESOURCE_FILES ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/*.*) +if(WIN32 AND ${XMP_BUILD_STATIC}) + list(REMOVE_ITEM RESOURCE_FILES ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/${TARGET_NAME}.rc) +endif() +source_group("Resource Files" FILES ${RESOURCE_FILES}) + +if (WIN32 OR (UNIX AND APPLE)) + list(APPEND SOURCE_FILES + ${PUBLIC_CLIENTGLUE_HEADER_FILES} + ${PUBLIC_HEADER_FILES} + ${INTERNAL_HEADER_FILES} + ${ABIWRAPPER_SOURCE_FILES} + ${ABIWRAPPER_SOURCE_FILES} + ${CORECLASS_SOURCE_FILES} + ${THIRDPARTY_SOURCE_FILES} + ${UTILITY_SOURCE_FILES} + ${PRIVATE_XMPCOMMON_HEADERS} + ${PRIVATE_XMPCORE_HEADERS} + ${PUBLIC_XMPCOMMON_HEADERS} + ${PUBLIC_XMPCORE_HEADERS} + ${XMPCOMMON_SOURCES} + ${RESOURCE_FILES} + ) +else() + list (REMOVE_ITEM CORECLASS_SOURCE_FILES + ${SOURCE_ROOT}/XMPArrayNode_v1_Impl.cpp + ${SOURCE_ROOT}/XMPArrayNodeIterator_v1_Impl.cpp + ${SOURCE_ROOT}/XMPCoreObjectFactory_Impl.cpp + ${SOURCE_ROOT}/XMPMetadata_v1_Impl.cpp + ${SOURCE_ROOT}/XMPNode_v1_Impl.cpp + ${SOURCE_ROOT}/XMPPathSegment_v1_Impl.cpp + ${SOURCE_ROOT}/XMPPath_v1_Impl.cpp + ${SOURCE_ROOT}/XMPQName_v1_Impl.cpp + ${SOURCE_ROOT}/XMPQualifiers_v1_Impl.cpp + ${SOURCE_ROOT}/XMPSimpleNode_v1_Impl.cpp + ${SOURCE_ROOT}/XMPStructNode_v1_Impl.cpp + ${SOURCE_ROOT}/XMPStructNodeIterator_v1_Impl.cpp + ) + + list(APPEND SOURCE_FILES + ${PUBLIC_CLIENTGLUE_HEADER_FILES} + ${PUBLIC_HEADER_FILES} + ${INTERNAL_HEADER_FILES} + ${ABIWRAPPER_SOURCE_FILES} + ${ABIWRAPPER_SOURCE_FILES} + ${CORECLASS_SOURCE_FILES} + ${THIRDPARTY_SOURCE_FILES} + ${UTILITY_SOURCE_FILES} + ${RESOURCE_FILES} + ) + +endif() +# include directories +include_directories(${XMPROOT_DIR}) +include_directories(${XMPROOT_DIR}/public/include) +include_directories(${XMPROOT_DIR}/third-party/expat/public/lib) +include_directories(${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}) + + + +# ============================================================================== +# Define what to do, lib, exe, etc +if (UNIX AND APPLE AND NOT ${XMP_BUILD_STATIC}) + # preprocess Info.plist + #if (${CMAKE_BUILD_TYPE} strequal "Debug") + if((${CMAKE_BUILD_TYPE} MATCHES "Debug") OR (${CMAKE_BUILD_TYPE} MATCHES "debug")) + set (INFO_PLIST_FLAGS "-DDEBUG=1") + else() + set (INFO_PLIST_FLAGS "-DNDEBUG=1") + endif() + + add_custom_target(${TARGET_NAME}InfoPlist + COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} + COMMAND if [ $(CONFIGURATION) != Debug ]; then + ${GCCTOOL} -E -P -x c ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/${TARGET_NAME}.plist + -F${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ + -DPRODUCT_NAME=${TARGET_NAME} -DMAC_ENV=1 -DNDEBUG=1 + -include ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/${TARGET_NAME}PList.h + -o ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Info.plist + \; else + ${GCCTOOL} -E -P -x c ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/${TARGET_NAME}.plist + -F${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/ + -DPRODUCT_NAME=${TARGET_NAME} -DMAC_ENV=1 -DDEBUG=1 + -include ${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/${TARGET_NAME}PList.h + -o ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Info.plist + \; fi + COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../CMakeFiles/${TARGET_NAME}.dir/Info.plist + COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Info.plist ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/../CMakeFiles/${TARGET_NAME}.dir/Info.plist + COMMENT "Preprocessing Info-plist" + ) + set(DEPENDENCY_LIST "ALL:${TARGET_NAME}InfoPlist") +else () + set(DEPENDENCY_LIST "") +endif() + +AddLibraryAndDependencies(${TARGET_NAME} ${XMP_BUILD_STATIC} YES "SHARED" SOURCE_FILES DEPENDENCY_LIST) + +#set the output name +set_target_properties(${TARGET_NAME} PROPERTIES OUTPUT_NAME ${XMPCORE_LIB}) + +# ============================================================================== +# Link dependencies +set(FRAMEWORK_LIST "Mac:CoreFoundation" "Mac:CoreServices") +AddMacFramework(${TARGET_NAME} FRAMEWORK_LIST) + + +if(WIN32) + SetWinLinkFlags(${TARGET_NAME} "rpcrt4.lib" "${XMPCORE_LIB}") +else(WIN32) + if(UNIX AND NOT APPLE) + SetWinLinkFlags(${TARGET_NAME} "-Xlinker --version-script -Xlinker \"${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/${TARGET_NAME}.exp\"" "") + else() + set_target_properties(${TARGET_NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH ON INSTALL_NAME_DIR "@executable_path/../Frameworks") + SetWinLinkFlags(${TARGET_NAME} "-unexported_symbols_list \"${RESOURCE_ROOT}/${XMP_PLATFORM_SHORT}/XMPCore.unexp\"" "${XMPCORE_LIB}") + set_target_properties(${TARGET_NAME} PROPERTIES XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES") + endif() +endif() + +# ============================================================================== +# Define output +SetOutputPath(${OUTPUT_DIR} 0) + +# ============================================================================== +# Post build +# ============================================================================== +if(UNIX) + if (NOT APPLE) + if (${XMP_BUILD_STATIC}) + add_custom_command (TARGET ${TARGET_NAME} + POST_BUILD + COMMAND mv ${OUTPUT_DIR}/lib${XMPCORE_LIB}.a ${OUTPUT_DIR}/${XMPCORE_LIB}.ar + ) + else() + if((${CMAKE_BUILD_TYPE} MATCHES "Debug") OR (${CMAKE_BUILD_TYPE} MATCHES "debug") ) + add_custom_command (TARGET ${TARGET_NAME} + POST_BUILD + COMMAND ls -l ${OUTPUT_DIR}/lib${XMPCORE_LIB}.so + ) + else() + add_custom_command (TARGET ${TARGET_NAME} + POST_BUILD + COMMAND strip ${OUTPUT_DIR}/lib${XMPCORE_LIB}.so + COMMAND ls -l ${OUTPUT_DIR}/lib${XMPCORE_LIB}.so + ) + endif() + endif() + endif() +else() + set_target_properties(${TARGET_NAME} PROPERTIES PROJECT_LABEL ${PROJECT_LABEL_STR}) +endif() + +message (STATUS "===========================================================================") +message (STATUS " ${PROJECT_NAME} ") +message (STATUS "===========================================================================") +message (STATUS " OUTPUT_DIR = ${OUTPUT_DIR}") + + |