summaryrefslogtreecommitdiffstats
path: root/cmake/scripts/common/PrepareEnv.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/scripts/common/PrepareEnv.cmake')
-rw-r--r--cmake/scripts/common/PrepareEnv.cmake107
1 files changed, 107 insertions, 0 deletions
diff --git a/cmake/scripts/common/PrepareEnv.cmake b/cmake/scripts/common/PrepareEnv.cmake
new file mode 100644
index 0000000..559788f
--- /dev/null
+++ b/cmake/scripts/common/PrepareEnv.cmake
@@ -0,0 +1,107 @@
+# parse version.txt and versions.h to get the version and API info
+include(${CORE_SOURCE_DIR}/cmake/scripts/common/Macros.cmake)
+core_find_versions()
+
+# in case we need to download something, set KODI_MIRROR to the default if not already set
+if(NOT DEFINED KODI_MIRROR)
+ set(KODI_MIRROR "http://mirrors.kodi.tv")
+endif()
+
+### copy all the addon binding header files to include/kodi
+# make sure include/kodi exists and is empty
+set(APP_LIB_DIR ${ADDON_DEPENDS_PATH}/lib/${APP_NAME_LC})
+if(NOT EXISTS "${APP_LIB_DIR}/")
+ file(MAKE_DIRECTORY ${APP_LIB_DIR})
+endif()
+
+set(APP_DATA_DIR ${ADDON_DEPENDS_PATH}/share/${APP_NAME_LC})
+if(NOT EXISTS "${APP_DATA_DIR}/")
+ file(MAKE_DIRECTORY ${APP_DATA_DIR})
+endif()
+
+set(APP_INCLUDE_DIR ${ADDON_DEPENDS_PATH}/include/${APP_NAME_LC})
+if(NOT EXISTS "${APP_INCLUDE_DIR}/")
+ file(MAKE_DIRECTORY ${APP_INCLUDE_DIR})
+endif()
+
+if(NOT CORE_SYSTEM_NAME)
+ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+ set(CORE_SYSTEM_NAME "osx")
+ else()
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} CORE_SYSTEM_NAME)
+ endif()
+endif()
+
+set(PLATFORM_TAG ${CORE_SYSTEM_NAME})
+
+# The CPU variable is given either by ./tools/depends or by the
+# ./cmake/scripts/common/ArchSetup.cmake (which refers to the Kodi building
+# itself). However, this file is only used by addons, so CPU can not always
+# be defined, so in this case, if empty, the base CPU will be used.
+if(NOT CPU)
+ set(CPU ${CMAKE_SYSTEM_PROCESSOR})
+endif()
+
+if(CORE_SYSTEM_NAME STREQUAL android)
+ if (CPU MATCHES "v7a")
+ set(PLATFORM_TAG ${PLATFORM_TAG}-armv7)
+ elseif (CPU MATCHES "arm64")
+ set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64)
+ elseif (CPU MATCHES "i686")
+ set(PLATFORM_TAG ${PLATFORM_TAG}-i686)
+ elseif (CPU MATCHES "x86_64")
+ set(PLATFORM_TAG ${PLATFORM_TAG}-x86_64)
+ else()
+ message(FATAL_ERROR "Unsupported architecture")
+ endif()
+elseif(CORE_SYSTEM_NAME STREQUAL darwin_embedded)
+ set(PLATFORM_TAG ${CORE_PLATFORM_NAME})
+ if (CPU MATCHES arm64)
+ set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64)
+ else()
+ message(FATAL_ERROR "Unsupported architecture")
+ endif()
+elseif(CORE_SYSTEM_NAME STREQUAL osx)
+ set(PLATFORM_TAG ${PLATFORM_TAG}-${CPU})
+elseif(CORE_SYSTEM_NAME STREQUAL windows)
+ include(CheckSymbolExists)
+ check_symbol_exists(_X86_ "Windows.h" _X86_)
+ check_symbol_exists(_AMD64_ "Windows.h" _AMD64_)
+
+ if(_X86_)
+ set(PLATFORM_TAG ${PLATFORM_TAG}-i686)
+ elseif(_AMD64_)
+ set(PLATFORM_TAG ${PLATFORM_TAG}-x86_64)
+ else()
+ message(FATAL_ERROR "Unsupported architecture")
+ endif()
+
+ unset(_X86_)
+ unset(_AMD64_)
+endif()
+
+# generate the proper KodiConfig.cmake file
+configure_file(${CORE_SOURCE_DIR}/cmake/KodiConfig.cmake.in ${APP_LIB_DIR}/KodiConfig.cmake @ONLY)
+
+# copy cmake helpers to lib/kodi
+file(COPY ${CORE_SOURCE_DIR}/cmake/scripts/common/AddonHelpers.cmake
+ ${CORE_SOURCE_DIR}/cmake/scripts/common/AddOptions.cmake
+ DESTINATION ${APP_LIB_DIR})
+
+### copy all the addon binding header files to include/kodi
+include(${CORE_SOURCE_DIR}/xbmc/addons/AddonBindings.cmake)
+file(COPY ${CORE_ADDON_BINDINGS_FILES} ${CORE_ADDON_BINDINGS_DIRS}/
+ DESTINATION ${APP_INCLUDE_DIR}
+ REGEX ".txt" EXCLUDE)
+
+### processing additional tools required by the platform
+if(EXISTS ${CORE_SOURCE_DIR}/cmake/scripts/${CORE_SYSTEM_NAME}/tools/)
+ file(GLOB platform_tools ${CORE_SOURCE_DIR}/cmake/scripts/${CORE_SYSTEM_NAME}/tools/*.cmake)
+ foreach(platform_tool ${platform_tools})
+ get_filename_component(platform_tool_name ${platform_tool} NAME_WE)
+ message(STATUS "Processing ${CORE_SYSTEM_NAME} specific tool: ${platform_tool_name}")
+
+ # include the file
+ include(${platform_tool})
+ endforeach()
+endif()