summaryrefslogtreecommitdiff
path: root/build/XMP_Linux.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'build/XMP_Linux.cmake')
-rw-r--r--build/XMP_Linux.cmake143
1 files changed, 143 insertions, 0 deletions
diff --git a/build/XMP_Linux.cmake b/build/XMP_Linux.cmake
new file mode 100644
index 0000000..8e668b7
--- /dev/null
+++ b/build/XMP_Linux.cmake
@@ -0,0 +1,143 @@
+# =================================================================================================
+# 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
+cmake_minimum_required(VERSION 2.8.6)
+
+# ==============================================================================
+# Shared config for linux
+# ==============================================================================
+
+# ==============================================================================
+# Linux: Setup cross-compiling 32/64bit
+# ==============================================================================
+if(NOT CMAKE_CROSSCOMPILING)
+ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
+ # running on 64bit machine
+ set(XMP_EXTRA_BUILDMACHINE "Buildmachine is 64bit")
+ else()
+ # running on 32bit machine
+ set(XMP_EXTRA_BUILDMACHINE "Buildmachine is 32bit")
+ endif()
+
+ if(CMAKE_CL_64)
+ set(XMP_EXTRA_COMPILE_FLAGS "-m64")
+ set(XMP_EXTRA_LINK_FLAGS "-m64")
+ set(XMP_PLATFORM_FOLDER "i80386linux_x64") # add XMP_BUILDMODE_DIR to follow what other platforms do
+ set(XMP_GCC_LIBPATH /usr/lib64/gcc/x86_64-redhat-linux/4.4.4/)
+ else()
+ set(XMP_EXTRA_LINK_FLAGS "-m32 -mtune=i686")
+ set(XMP_PLATFORM_FOLDER "i80386linux") # add XMP_BUILDMODE_DIR to follow what other platforms do
+ set(XMP_GCC_LIBPATH /usr/lib/gcc/i686-redhat-linux/4.4.4/)
+ endif()
+else()
+ # running toolchain
+ if(CMAKE_CL_64)
+ set(XMP_EXTRA_COMPILE_FLAGS "-m64")
+ set(XMP_EXTRA_LINK_FLAGS "-m64")
+ set(XMP_PLATFORM_FOLDER "i80386linux_x64") # add XMP_BUILDMODE_DIR to follow what other platforms do
+ set(XMP_GCC_LIBPATH /usr/lib64/gcc/x86_64-redhat-linux/4.4.4/)
+ else()
+ set(XMP_EXTRA_COMPILE_FLAGS "-m32 -mtune=i686")
+ set(XMP_EXTRA_LINK_FLAGS "-m32")
+ set(XMP_PLATFORM_FOLDER "i80386linux") # add XMP_BUILDMODE_DIR to follow what other platforms do
+ set(XMP_GCC_LIBPATH /usr/lib/gcc/i686-redhat-linux/4.4.4/)
+ endif()
+
+ set(XMP_EXTRA_BUILDMACHINE "Cross compiling")
+endif()
+set(XMP_PLATFORM_VERSION "linux2.6") # add XMP_BUILDMODE_DIR to follow what other platforms do
+
+add_definitions(-DUNIX_ENV=1)
+# Linux -------------------------------------------
+set(XMP_PLATFORM_SHORT "linux")
+#gcc path is not set correctly
+
+set(XMP_PLATFORM_LINK "-z defs -Xlinker -Bsymbolic -Wl,--no-undefined ${XMP_EXTRA_LINK_FLAGS} ${XMP_TOOLCHAIN_LINK_FLAGS} -lrt -ldl -luuid -lpthread")
+
+if(XMP_ENABLE_SECURE_SETTINGS)
+ set(XMP_PLATFORM_LINK "${XMP_PLATFORM_LINK} ${XMP_GCC_LIBPATH}/libssp.a")
+endif()
+set(XMP_SHARED_COMPILE_FLAGS "-Wno-multichar -Wno-implicit -D_FILE_OFFSET_BITS=64 -funsigned-char ${XMP_EXTRA_COMPILE_FLAGS} ${XMP_TOOLCHAIN_COMPILE_FLAGS}")
+set(XMP_SHARED_COMPILE_DEBUG_FLAGS " ")
+set(XMP_SHARED_COMPILE_RELEASE_FLAGS "-fwrapv ")
+
+
+# ==============================================================================
+# Function: architecture related settings
+# ==============================================================================
+function(SetupTargetArchitecture)
+ if(APPLE_IOS)
+ set(XMP_CPU_FOLDERNAME "$(ARCHS_STANDARD_32_BIT)" PARENT_SCOPE)
+ else()
+ if(CMAKE_CL_64)
+ set(XMP_BITDEPTH "64" PARENT_SCOPE)
+ set(XMP_CPU_FOLDERNAME "intel_64" PARENT_SCOPE)
+ else()
+ set(XMP_BITDEPTH "32" PARENT_SCOPE)
+ set(XMP_CPU_FOLDERNAME "intel" PARENT_SCOPE)
+ endif()
+ endif()
+endfunction(SetupTargetArchitecture)
+
+# ==============================================================================
+# Function: Set internal build target directory. See XMP_PLATFORM_FOLDER for
+# further construction and when CMAKE_CFG_INTDIR/CMAKE_BUILD_TYPE are set
+# (generator dependent).
+# ==============================================================================
+function(SetupInternalBuildDirectory)
+ if(CMAKE_CFG_INTDIR STREQUAL ".")
+ # CMAKE_BUILD_TYPE only available for makefile builds
+ set(XMP_IS_MAKEFILE_BUILD "ON" PARENT_SCOPE)
+ if((${CMAKE_BUILD_TYPE} MATCHES "Debug") OR (${CMAKE_BUILD_TYPE} MATCHES "debug") )
+ set(XMP_BUILDMODE_DIR "debug" PARENT_SCOPE)
+ else()
+ set(XMP_BUILDMODE_DIR "release" PARENT_SCOPE)
+ endif()
+ else()
+ # Visual/XCode have dedicated Debug/Release target modes. CMAKE_CFG_INTDIR is set.
+ if(APPLE_IOS)
+ # TODO: fixme
+ # set(XMP_BUILDMODE_DIR "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" PARENT_SCOPE)
+ set(XMP_BUILDMODE_DIR "$(CONFIGURATION)" PARENT_SCOPE)
+ else()
+ set(XMP_BUILDMODE_DIR ${CMAKE_CFG_INTDIR} PARENT_SCOPE)
+ endif()
+ set(XMP_IS_MAKEFILE_BUILD "OFF" PARENT_SCOPE)
+ endif()
+ endfunction(SetupInternalBuildDirectory)
+
+ # ==============================================================================
+ # Function: Setup general and specific folder structures
+ # ==============================================================================
+ function(SetupGeneralDirectories)
+ set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR} PARENT_SCOPE)
+ set(PROJECT_ROOT ${PROJECT_SOURCE_DIR} PARENT_SCOPE)
+ set(SOURCE_ROOT ${PROJECT_SOURCE_DIR}/../source PARENT_SCOPE)
+ set(RESOURCE_ROOT ${PROJECT_SOURCE_DIR}/../resource PARENT_SCOPE)
+
+ # ==============================================================================
+ # XMP specific defines
+ # ==============================================================================
+
+ # Construct output directory
+ # The CMAKE_CFG_INTDIR gets automatically set for generators which differenciate different build targets (eg. VS, XCode), but is emtpy for Linux !
+ # In this case Debug/Release is added to the OUTPUT_DIR when used for LIBRARY_OUTPUT_PATH.
+ string(TOLOWER ${XMP_BUILDMODE_DIR} LOWERCASE_XMP_BUILDMODE_DIR)
+ set(OUTPUT_DIR ${PROJECT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}/public/libraries/${XMP_PLATFORM_FOLDER}/${LOWERCASE_XMP_BUILDMODE_DIR} PARENT_SCOPE)
+
+ # XMP lib locations constructed with ${XMP_PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}, since the target folder (Debug/Release) isn't added automatically
+ set(XMPROOT_DIR ${PROJECT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH} PARENT_SCOPE)
+ set(XMPLIBRARIES_DIR ${PROJECT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}/public/libraries/${XMP_PLATFORM_FOLDER}/${LOWERCASE_XMP_BUILDMODE_DIR} PARENT_SCOPE)
+ set(XMPPLUGIN_DIR ${PROJECT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}/XMPPlugin PARENT_SCOPE)
+ set(XMPPLUGIN_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}/XMPFilesPlugins/public/${XMP_PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} PARENT_SCOPE)
+
+ # each plugin project should implement function named SetupProjectSpecifiedDirectories to specify the directories used by project itself
+endfunction(SetupGeneralDirectories)