aboutsummaryrefslogtreecommitdiff
path: root/project/cmake/scripts/common/ArchSetup.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'project/cmake/scripts/common/ArchSetup.cmake')
-rw-r--r--project/cmake/scripts/common/ArchSetup.cmake156
1 files changed, 0 insertions, 156 deletions
diff --git a/project/cmake/scripts/common/ArchSetup.cmake b/project/cmake/scripts/common/ArchSetup.cmake
deleted file mode 100644
index 4b862c8b50..0000000000
--- a/project/cmake/scripts/common/ArchSetup.cmake
+++ /dev/null
@@ -1,156 +0,0 @@
-# This script configures the build for a given architecture.
-# Flags and stringified arch is set up.
-# General compiler tests belongs here.
-#
-# On return, the following variables are set:
-# CMAKE_SYSTEM_NAME - a lowercased system name
-# CPU - the CPU on the target
-# ARCH - the system architecture
-# ARCH_DEFINES - list of compiler definitions for this architecture
-# SYSTEM_DEFINES - list of compiler definitions for this system
-# DEP_DEFINES - compiler definitions for system dependencies (e.g. LIRC)
-# + the results of compiler tests etc.
-
-include(CheckCXXSourceCompiles)
-include(CheckSymbolExists)
-include(CheckFunctionExists)
-include(CheckIncludeFile)
-
-# Macro to check if a given type exists in a given header
-# Arguments:
-# header the header to check
-# type the type to check for existence
-# var the compiler definition to set if type exists
-# On return:
-# If type was found, the definition is added to SYSTEM_DEFINES
-macro(check_type header type var)
- check_cxx_source_compiles("#include <${header}>
- int main()
- {
- ${type} s;
- }" ${var})
- if(${var})
- list(APPEND SYSTEM_DEFINES -D${var}=1)
- endif()
-endmacro()
-
-# Macro to check if a given builtin function exists
-# Arguments:
-# func the function to check
-# var the compiler definition to set if type exists
-# On return:
-# If type was found, the definition is added to SYSTEM_DEFINES
-macro(check_builtin func var)
- check_cxx_source_compiles("
- int main()
- {
- ${func};
- }" ${var})
- if(${var})
- list(APPEND SYSTEM_DEFINES -D${var}=1)
- endif()
-endmacro()
-
-
-# -------- Main script ---------
-message(STATUS "System type: ${CMAKE_SYSTEM_NAME}")
-if(NOT CORE_SYSTEM_NAME)
- string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME)
-endif()
-
-if(WITH_CPU)
- set(CPU ${WITH_CPU})
-elseif(NOT KODI_DEPENDSBUILD)
- set(CPU ${CMAKE_SYSTEM_PROCESSOR})
-endif()
-
-if(CMAKE_TOOLCHAIN_FILE)
- if(NOT EXISTS "${CMAKE_TOOLCHAIN_FILE}")
- message(FATAL_ERROR "Toolchain file ${CMAKE_TOOLCHAIN_FILE} does not exist.")
- elseif(KODI_DEPENDSBUILD AND (NOT DEPENDS_PATH OR NOT NATIVEPREFIX))
- message(FATAL_ERROR "Toolchain did not define DEPENDS_PATH or NATIVEPREFIX. Possibly outdated depends.")
- endif()
-endif()
-
-# While CMAKE_CROSSCOMPILING is set unconditionally if there's a toolchain file,
-# this variable is set if we can execute build artefacts on the host system (for example unit tests).
-if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR AND
- CMAKE_HOST_SYSTEM_NAME STREQUAL CMAKE_SYSTEM_NAME)
- set(CORE_HOST_IS_TARGET TRUE)
-else()
- set(CORE_HOST_IS_TARGET FALSE)
-endif()
-
-# Main cpp
-set(CORE_MAIN_SOURCE ${CORE_SOURCE_DIR}/xbmc/platform/posix/main.cpp)
-
-# system specific arch setup
-if(NOT EXISTS ${PROJECT_SOURCE_DIR}/scripts/${CORE_SYSTEM_NAME}/ArchSetup.cmake)
- message(FATAL_ERROR "Couldn't find configuration for '${CORE_SYSTEM_NAME}' "
- "Either the platform is not (yet) supported "
- "or a toolchain file has to be specified. "
- "Consult ${CMAKE_SOURCE_DIR}/README.md for instructions. "
- "Note: Specifying a toolchain requires a clean build directory!")
-endif()
-include(${PROJECT_SOURCE_DIR}/scripts/${CORE_SYSTEM_NAME}/ArchSetup.cmake)
-
-message(STATUS "Core system type: ${CORE_SYSTEM_NAME}")
-message(STATUS "Platform: ${PLATFORM}")
-message(STATUS "CPU: ${CPU}, ARCH: ${ARCH}")
-message(STATUS "Cross-Compiling: ${CMAKE_CROSSCOMPILING}")
-message(STATUS "Execute build artefacts on host: ${CORE_HOST_IS_TARGET}")
-message(STATUS "Depends based build: ${KODI_DEPENDSBUILD}")
-
-check_type(string std::u16string HAVE_STD__U16_STRING)
-check_type(string std::u32string HAVE_STD__U32_STRING)
-check_type(string char16_t HAVE_CHAR16_T)
-check_type(string char32_t HAVE_CHAR32_T)
-check_type(stdint.h uint_least16_t HAVE_STDINT_H)
-check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE)
-check_symbol_exists(PRIdMAX inttypes.h HAVE_INTTYPES_H)
-check_builtin("long* temp=0; long ret=__sync_add_and_fetch(temp, 1)" HAS_BUILTIN_SYNC_ADD_AND_FETCH)
-check_builtin("long* temp=0; long ret=__sync_sub_and_fetch(temp, 1)" HAS_BUILTIN_SYNC_SUB_AND_FETCH)
-check_builtin("long* temp=0; long ret=__sync_val_compare_and_swap(temp, 1, 1)" HAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP)
-check_include_file(sys/inotify.h HAVE_INOTIFY)
-if(HAVE_INOTIFY)
- list(APPEND SYSTEM_DEFINES -DHAVE_INOTIFY=1)
-endif()
-if(HAVE_POSIX_FADVISE)
- list(APPEND SYSTEM_DEFINES -DHAVE_POSIX_FADVISE=1)
-endif()
-check_function_exists(localtime_r HAVE_LOCALTIME_R)
-if(HAVE_LOCALTIME_R)
- list(APPEND SYSTEM_DEFINES -DHAVE_LOCALTIME_R=1)
-endif()
-if(HAVE_INTTYPES_H)
- list(APPEND SYSTEM_DEFINES -DHAVE_INTTYPES_H=1)
-endif()
-
-find_package(SSE)
-foreach(_sse SSE SSE2 SSE3 SSSE3 SSE4_1 SSE4_2 AVX AVX2)
- if(${${_sse}_FOUND})
- # enable SSE versions up to 4.1 by default, if available
- if(NOT ${_sse} MATCHES "AVX" AND NOT ${_sse} STREQUAL "SSE4_2")
- option(ENABLE_${_sse} "Enable ${_sse}" ON)
- else()
- option(ENABLE_${_sse} "Enable ${_sse}" OFF)
- endif()
- endif()
- if(ENABLE_${_sse})
- set(HAVE_${_sse} TRUE CACHE STRING "${_sse} enabled")
- list(APPEND ARCH_DEFINES -DHAVE_${_sse}=1)
- endif()
-endforeach()
-
-if(NOT DEFINED NEON OR NEON)
- option(ENABLE_NEON "Enable NEON optimization" ${NEON})
- if(ENABLE_NEON)
- message(STATUS "NEON optimization enabled")
- add_options(CXX ALL_BUILDS "-mfpu=neon -mvectorize-with-neon-quad")
- endif()
-endif()
-
-if(CMAKE_BUILD_TYPE STREQUAL "Debug")
- add_options (ALL_LANGUAGES DEBUG "-g" "-D_DEBUG" "-Wall")
-endif()
-