summaryrefslogtreecommitdiff
path: root/tools/cmake/helpers/platform.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tools/cmake/helpers/platform.cmake')
-rw-r--r--tools/cmake/helpers/platform.cmake92
1 files changed, 92 insertions, 0 deletions
diff --git a/tools/cmake/helpers/platform.cmake b/tools/cmake/helpers/platform.cmake
new file mode 100644
index 0000000000..961b41d689
--- /dev/null
+++ b/tools/cmake/helpers/platform.cmake
@@ -0,0 +1,92 @@
+# 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( CMAKE_SIZEOF_VOID_P MATCHES 8 )
+ # void ptr = 8 byte --> x86_64
+ set(${ARCH} "x64" PARENT_SCOPE)
+ elseif( CMAKE_SIZEOF_VOID_P MATCHES 4 )
+ # void ptr = 4 byte --> x86
+ set(${ARCH} "x86" PARENT_SCOPE)
+ else()
+ message(FATAL_ERROR "Unsupported architecture")
+ endif()
+endfunction(get_arch ARCH)
+
+function(get_sdk SDK)
+ if(SDK_QT)
+ set(${SDK} "qt" PARENT_SCOPE)
+ endif()
+endfunction()