109 cedaRunXcppOnWorkspace
cedaRunXcppOnWorkspace is a private function which is called at the end of the
configure step to set the command used to execute Xcpp to translate all the files in the ceda
projects in the virtual tree.
CMAKE_HOST_SYSTEM_NAME is the name of the OS CMake is running on.
On systems that have the uname command, this variable is set to the output of uname -s.
Linux, Windows, and Darwin for Mac OS X are the values found on the big three operating systems.
CMAKE_SYSTEM_NAME can have values such as "Windows", "WindowsCE", "WindowsPhone",
"WindowsStore", "Linux", "Darwin" or "Android".
CMAKE_HOST_SYSTEM_PROCESSOR is the name of the CPU CMake is running on.
On systems that support uname, this variable is set to the output of uname -p,
on windows it is set to the value of the environment variable PROCESSOR_ARCHITECTURE (which can be AMD64, IA64 or x86).
CMAKE_CXX_COMPILER_ID can have values such as "MSVC", "GNU" or "Clang".
MSVC_VERSION is the version of Microsoft Visual C/C++ being used if any.
Known version numbers are:
1200 = VS 6.0
1300 = VS 7.0
1310 = VS 7.1
1400 = VS 8.0
1500 = VS 9.0
1600 = VS 10.0
1700 = VS 11.0
1800 = VS 12.0
1900 = VS 14.0
platform='${cedaPlatform}'
Example 1: Run windows_build_ceda_sdk_android.bat on a x64 machine:
CMAKE_HOST_SYSTEM_NAME = Windows
CMAKE_HOST_SYSTEM_PROCESSOR = AMD64
CMAKE_HOST_SYSTEM_VERSION = 10.0.17134
CMAKE_SYSTEM_NAME = Android
CMAKE_SYSTEM_PROCESSOR = aarch64
CMAKE_SYSTEM_VERSION = 1
CMAKE_CXX_COMPILER_ID = Clang
Example 2: Run windows_package_ceda_sdk.bat on a x64 machine:
CMAKE_HOST_SYSTEM_NAME = Windows
CMAKE_HOST_SYSTEM_PROCESSOR = AMD64
CMAKE_HOST_SYSTEM_VERSION = 10.0.17134
CMAKE_SYSTEM_NAME = Windows
CMAKE_SYSTEM_PROCESSOR = AMD64
CMAKE_SYSTEM_VERSION = 10.0.17134
CMAKE_CXX_COMPILER_ID = MSVC
MSVC_VERSION = 1915
function(cedaRunXcppOnWorkspace)
get_property(cedaByProducts GLOBAL PROPERTY GP_CEDA_BYPRODUCTS)
get_property(cedaProjects GLOBAL PROPERTY GP_CEDA_PROJECTS)
get_property(cedaDependentProjects GLOBAL PROPERTY GP_DEPENDENT_CEDA_PROJECTS)
get_property(cedaSourceRoots GLOBAL PROPERTY GP_CEDA_SOURCE_ROOTS)
get_property(cedaRunXcppDeps GLOBAL PROPERTY GP_RUN_XCPP_DEPS)
get_property(cedaHostOs GLOBAL PROPERTY GP_CEDA_HOST_OS)
get_property(cedaHostOsVersion GLOBAL PROPERTY GP_CEDA_HOST_OS_VERSION)
get_property(cedaTargetOs GLOBAL PROPERTY GP_CEDA_TARGET_OS)
get_property(cedaTargetOsVersion GLOBAL PROPERTY GP_CEDA_TARGET_OS_VERSION)
get_property(cedaPlatform GLOBAL PROPERTY GP_CEDA_PLATFORM)
get_property(cedaConfig GLOBAL PROPERTY GP_CEDA_CONFIG)
get_property(cedaXcpp GLOBAL PROPERTY GP_CEDA_XCPP)
get_property(cedaXcppConfig GLOBAL PROPERTY GP_CEDA_XCPPCONFIG)
set(defaultToDll false)
if (BUILD_SHARED_LIBS)
set(defaultToDll true)
endif()
add_custom_target(CEDA_RUN_XCPP)
if (NOT cedaRunXcppDeps STREQUAL "")
add_dependencies(CEDA_RUN_XCPP ${cedaRunXcppDeps})
endif()
if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
set(wslist "")
foreach(s ${cedaProjects})
if (NOT wslist STREQUAL "")
set(wslist "${wslist} ")
endif()
set(wslist "${wslist}'${s}'")
endforeach()
set(vtlist "")
foreach(s ${cedaSourceRoots})
if (NOT vtlist STREQUAL "")
set(vtlist "${vtlist} ")
endif()
set(vtlist "${vtlist}'${s}'")
endforeach()
add_custom_command(TARGET CEDA_RUN_XCPP
COMMAND ${cedaXcpp}
HOST_SYSTEM_NAME='${CMAKE_HOST_SYSTEM_NAME}'
HOST_SYSTEM_PROCESSOR='${CMAKE_HOST_SYSTEM_PROCESSOR}'
HOST_SYSTEM_VERSION='${CMAKE_HOST_SYSTEM_VERSION}'
SYSTEM_NAME='${CMAKE_SYSTEM_NAME}'
SYSTEM_PROCESSOR='${CMAKE_SYSTEM_PROCESSOR}'
SYSTEM_VERSION='${CMAKE_SYSTEM_VERSION}'
SIZEOF_VOID_P='${CMAKE_SIZEOF_VOID_P}'
CXX_COMPILER_ID='${CMAKE_CXX_COMPILER_ID}'
MSVC_VERSION='${MSVC_VERSION}'
PLATFORM='${cedaPlatform}'
Ceda_XCPPCONFIG='${cedaXcppConfig}'
${cedaXcppConfig}/base.xcpp
mode=build
config='${cedaConfig}'
defaultToDll=${defaultToDll}
workspaces={${wslist}} virtualTree={${vtlist}}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/ceda-build
BYPRODUCTS ${cedaByProducts})
else()
set(wslist "")
foreach(s ${cedaProjects})
if (NOT wslist STREQUAL "")
set(wslist "${wslist} ")
endif()
set(wslist "${wslist}\\'${s}\\'")
endforeach()
set(vtlist "")
foreach(s ${cedaSourceRoots})
if (NOT vtlist STREQUAL "")
set(vtlist "${vtlist} ")
endif()
set(vtlist "${vtlist}\\'${s}\\'")
endforeach()
add_custom_command(TARGET CEDA_RUN_XCPP
COMMAND ${cedaXcpp}
HOST_SYSTEM_NAME=\\'${CMAKE_HOST_SYSTEM_NAME}\\'
HOST_SYSTEM_PROCESSOR=\\'${CMAKE_HOST_SYSTEM_PROCESSOR}\\'
HOST_SYSTEM_VERSION=\\'${CMAKE_HOST_SYSTEM_VERSION}\\'
SYSTEM_NAME=\\'${CMAKE_SYSTEM_NAME}\\'
SYSTEM_PROCESSOR=\\'${CMAKE_SYSTEM_PROCESSOR}\\'
SYSTEM_VERSION=\\'${CMAKE_SYSTEM_VERSION}\\'
SIZEOF_VOID_P=\\'${CMAKE_SIZEOF_VOID_P}\\'
CXX_COMPILER_ID=\\'${CMAKE_CXX_COMPILER_ID}\\'
MSVC_VERSION=\\'${MSVC_VERSION}\\'
PLATFORM=\\'${cedaPlatform}\\'
Ceda_XCPPCONFIG=\\'${cedaXcppConfig}\\'
${cedaXcppConfig}/base.xcpp
mode=build
config=\\'${cedaConfig}\\'
defaultToDll=${defaultToDll}
workspaces={${wslist}} virtualTree={${vtlist}}
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/ceda-build
BYPRODUCTS ${cedaByProducts})
endif()
if(TARGET Xcpp)
# The executable Xcpp must be built before it can be used to translate files from xc++ to c++
# Xcpp ---> CEDA_RUN_XCPP
add_dependencies(CEDA_RUN_XCPP Xcpp)
endif()
foreach(s ${cedaDependentProjects})
add_dependencies(${s} CEDA_RUN_XCPP)
endforeach()
endfunction(cedaRunXcppOnWorkspace)