diff options
Diffstat (limited to 'tools/cmake/helpers/platform.cmake')
-rw-r--r-- | tools/cmake/helpers/platform.cmake | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/tools/cmake/helpers/platform.cmake b/tools/cmake/helpers/platform.cmake new file mode 100644 index 0000000000..a377dfd042 --- /dev/null +++ b/tools/cmake/helpers/platform.cmake @@ -0,0 +1,96 @@ +# Copyright (c) 2016, Ford Motor Company +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following +# disclaimer in the documentation and/or other materials provided with the +# distribution. +# +# Neither the name of the Ford Motor Company nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# SDL build platform includes three necessary components: +# OS, Architecture and SDK. Build parameters and sources code base +# could be varied depends on these three components combination. +# +# Platform helpers provide functionality to get supported by SDL +# OS, Architecture or SDK lists and specified for actual build these +# variables values. Values could be passed to cmake as parameters +# (f.e. "-DOS_WINDOWS=1 -DSDK_QT=1"), otherwise they will be detected +# related to current build environment. +# +# Full list of supported cmake flags: +# OS_POSIX +# OS_WINDOWS +# ARCH_X86 +# ARCH_X64 +# SDK_QT + +function(get_supported_os OS_LIST) + set(${OS_LIST} "posix" "win" PARENT_SCOPE) +endfunction() + +function(get_supported_arch ARCH_LIST) + set(${ARCH_LIST} "x86" "x64" PARENT_SCOPE) +endfunction() + +function(get_supported_sdk SDK_LIST) + set(${SDK_LIST} "qt" PARENT_SCOPE) +endfunction() + +function(get_os OS) + if(OS_POSIX) + set(${OS} "posix" PARENT_SCOPE) + elseif(OS_WINDOWS) + set(${OS} "win" PARENT_SCOPE) + else() + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(${OS} "posix" PARENT_SCOPE) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(${OS} "win" PARENT_SCOPE) + else() + message(FATAL_ERROR "Unsupported operation system") + endif() + endif() +endfunction() + +function(get_arch ARCH) + if(ARCH_X86) + set(${ARCH} "x86" PARENT_SCOPE) + elseif(ARCH_X64) + set(${ARCH} "x64" PARENT_SCOPE) + else() + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "i386") + set(${ARCH} "x86" PARENT_SCOPE) + elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(${ARCH} "x64" PARENT_SCOPE) + else() + message(FATAL_ERROR "Unsupported architecture") + endif() + endif() +endfunction() + +function(get_sdk SDK) + if(SDK_QT) + set(${SDK} "qt" PARENT_SCOPE) + endif() +endfunction() |