summaryrefslogtreecommitdiffstats
path: root/cmake/scripts
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2020-07-02 23:09:26 +0200
committermanuel <manuel@mausz.at>2020-07-02 23:09:26 +0200
commit5f8335c1e49ce108ef3481863833c98efa00411b (patch)
treef02b5c1c9765bb6a14c8eb42bb4f81b9face0b55 /cmake/scripts
parente317daf081a1048904fdf0b548946fa3ba6593a7 (diff)
downloadkodi-pvr-build-5f8335c1e49ce108ef3481863833c98efa00411b.tar.gz
kodi-pvr-build-5f8335c1e49ce108ef3481863833c98efa00411b.tar.bz2
kodi-pvr-build-5f8335c1e49ce108ef3481863833c98efa00411b.zip
sync with upstreamHEADmaster
Diffstat (limited to 'cmake/scripts')
-rw-r--r--cmake/scripts/android/ArchSetup.cmake9
-rw-r--r--cmake/scripts/android/Install.cmake6
-rw-r--r--cmake/scripts/common/AddonHelpers.cmake53
-rw-r--r--cmake/scripts/common/AddonHelpers.dox59
-rw-r--r--cmake/scripts/common/ArchSetup.cmake26
-rw-r--r--cmake/scripts/common/CheckTargetPlatform.cmake5
-rw-r--r--cmake/scripts/common/CompilerSettings.cmake7
-rw-r--r--cmake/scripts/common/GenerateVersionedFiles.cmake3
-rw-r--r--cmake/scripts/common/HandleDepends.cmake20
-rw-r--r--cmake/scripts/common/Macros.cmake72
-rw-r--r--cmake/scripts/common/PrepareEnv.cmake17
-rw-r--r--cmake/scripts/darwin/Macros.cmake8
-rw-r--r--cmake/scripts/darwin_embedded/ArchSetup.cmake (renamed from cmake/scripts/ios/ArchSetup.cmake)50
-rw-r--r--cmake/scripts/darwin_embedded/ExtraTargets.cmake25
-rw-r--r--cmake/scripts/darwin_embedded/Install.cmake135
-rw-r--r--cmake/scripts/darwin_embedded/Macros.cmake118
-rw-r--r--cmake/scripts/darwin_embedded/PathSetup.cmake7
-rw-r--r--cmake/scripts/freebsd/ArchSetup.cmake7
-rw-r--r--cmake/scripts/ios/Install.cmake99
l---------cmake/scripts/ios/Macros.cmake1
l---------cmake/scripts/ios/PathSetup.cmake1
-rw-r--r--cmake/scripts/linux/ArchSetup.cmake40
-rw-r--r--cmake/scripts/osx/ArchSetup.cmake14
-rw-r--r--cmake/scripts/osx/Install.cmake1
-rw-r--r--cmake/scripts/osx/Macros.cmake2
-rw-r--r--cmake/scripts/windows/ArchSetup.cmake11
-rw-r--r--cmake/scripts/windowsstore/ArchSetup.cmake13
-rw-r--r--cmake/scripts/windowsstore/Macros.cmake2
28 files changed, 532 insertions, 279 deletions
diff --git a/cmake/scripts/android/ArchSetup.cmake b/cmake/scripts/android/ArchSetup.cmake
index 69bb88d..1e529de 100644
--- a/cmake/scripts/android/ArchSetup.cmake
+++ b/cmake/scripts/android/ArchSetup.cmake
@@ -2,7 +2,7 @@ if(NOT CMAKE_TOOLCHAIN_FILE)
2 message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for android. See ${CMAKE_SOURCE_DIR}/cmake/README.md") 2 message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for android. See ${CMAKE_SOURCE_DIR}/cmake/README.md")
3endif() 3endif()
4 4
5set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -DTARGET_ANDROID) 5set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_LINUX -DTARGET_ANDROID)
6set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_LARGEFILE64_SOURCE 6set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_LARGEFILE64_SOURCE
7 -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64=1) 7 -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64=1)
8 8
@@ -10,6 +10,7 @@ set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_LARGEFILE64_SOURCE
10set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/android/activity/XBMCApp.cpp) 10set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/android/activity/XBMCApp.cpp)
11 11
12set(PLATFORM_DIR platform/linux) 12set(PLATFORM_DIR platform/linux)
13set(PLATFORMDEFS_DIR platform/posix)
13if(WITH_ARCH) 14if(WITH_ARCH)
14 set(ARCH ${WITH_ARCH}) 15 set(ARCH ${WITH_ARCH})
15else() 16else()
@@ -26,16 +27,18 @@ else()
26 elseif(CPU STREQUAL i686) 27 elseif(CPU STREQUAL i686)
27 set(ARCH i486-linux) 28 set(ARCH i486-linux)
28 set(NEON False) 29 set(NEON False)
30 elseif(CPU STREQUAL x86_64)
31 set(ARCH x86_64)
32 set(NEON False)
29 else() 33 else()
30 message(SEND_ERROR "Unknown CPU: ${CPU}") 34 message(SEND_ERROR "Unknown CPU: ${CPU}")
31 endif() 35 endif()
32endif() 36endif()
33 37
34# Additional SYSTEM_DEFINES 38# Additional SYSTEM_DEFINES
35list(APPEND SYSTEM_DEFINES -DHAS_ZEROCONF -DHAS_LINUX_NETWORK) 39list(APPEND SYSTEM_DEFINES -DHAS_ZEROCONF)
36 40
37set(ENABLE_X11 OFF CACHE BOOL "" FORCE) 41set(ENABLE_X11 OFF CACHE BOOL "" FORCE)
38set(ENABLE_AML OFF CACHE BOOL "" FORCE)
39set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) 42set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE)
40set(ENABLE_MDNS OFF CACHE BOOL "" FORCE) 43set(ENABLE_MDNS OFF CACHE BOOL "" FORCE)
41 44
diff --git a/cmake/scripts/android/Install.cmake b/cmake/scripts/android/Install.cmake
index a121295..5b7b411 100644
--- a/cmake/scripts/android/Install.cmake
+++ b/cmake/scripts/android/Install.cmake
@@ -107,7 +107,7 @@ add_custom_target(bundle
107 ${CMAKE_BINARY_DIR}/tools/android/packaging/media 107 ${CMAKE_BINARY_DIR}/tools/android/packaging/media
108 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/tools/android/packaging/xbmc/res 108 COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/tools/android/packaging/xbmc/res
109 ${CMAKE_BINARY_DIR}/tools/android/packaging/xbmc/res 109 ${CMAKE_BINARY_DIR}/tools/android/packaging/xbmc/res
110 COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPENDS_PATH}/lib/python2.7 ${libdir}/python2.7 110 COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPENDS_PATH}/lib/python${PYTHON_VERSION} ${libdir}/python${PYTHON_VERSION}
111 COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPENDS_PATH}/share/${APP_NAME_LC} ${datadir}/${APP_NAME_LC} 111 COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPENDS_PATH}/share/${APP_NAME_LC} ${datadir}/${APP_NAME_LC}
112 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_NAME_LC}> 112 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_NAME_LC}>
113 ${libdir}/${APP_NAME_LC}/$<TARGET_FILE_NAME:${APP_NAME_LC}>) 113 ${libdir}/${APP_NAME_LC}/$<TARGET_FILE_NAME:${APP_NAME_LC}>)
@@ -153,13 +153,12 @@ foreach(lib IN LISTS required_dyload dyload_optional ITEMS Shairplay)
153 endif() 153 endif()
154endforeach() 154endforeach()
155add_bundle_file(${ASS_LIBRARY} ${libdir} "") 155add_bundle_file(${ASS_LIBRARY} ${libdir} "")
156add_bundle_file(${BLURAY_LIBRARY} ${libdir} "") 156add_bundle_file(${SHAIRPLAY_LIBRARY} ${libdir} "")
157add_bundle_file(${SMBCLIENT_LIBRARY} ${libdir} "") 157add_bundle_file(${SMBCLIENT_LIBRARY} ${libdir} "")
158 158
159# Main targets from Makefile.in 159# Main targets from Makefile.in
160if(CPU MATCHES i686) 160if(CPU MATCHES i686)
161 set(CPU x86) 161 set(CPU x86)
162 set(ARCH x86)
163endif() 162endif()
164foreach(target apk obb apk-unsigned apk-obb apk-obb-unsigned apk-noobb apk-clean apk-sign) 163foreach(target apk obb apk-unsigned apk-obb apk-obb-unsigned apk-noobb apk-clean apk-sign)
165 add_custom_target(${target} 164 add_custom_target(${target}
@@ -168,7 +167,6 @@ foreach(target apk obb apk-unsigned apk-obb apk-obb-unsigned apk-noobb apk-clean
168 CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR} 167 CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
169 CC=${CMAKE_C_COMPILER} 168 CC=${CMAKE_C_COMPILER}
170 CPU=${CPU} 169 CPU=${CPU}
171 ARCH=${ARCH}
172 HOST=${HOST} 170 HOST=${HOST}
173 TOOLCHAIN=${TOOLCHAIN} 171 TOOLCHAIN=${TOOLCHAIN}
174 PREFIX=${prefix} 172 PREFIX=${prefix}
diff --git a/cmake/scripts/common/AddonHelpers.cmake b/cmake/scripts/common/AddonHelpers.cmake
index 2f3f302..c541ad7 100644
--- a/cmake/scripts/common/AddonHelpers.cmake
+++ b/cmake/scripts/common/AddonHelpers.cmake
@@ -92,6 +92,7 @@ macro (build_addon target prefix libs)
92 endforeach() 92 endforeach()
93 endif() 93 endif()
94 94
95 message(STATUS "Addon dependency check ...")
95 # Set defines used in addon.xml.in and read from versions.h to set add-on 96 # Set defines used in addon.xml.in and read from versions.h to set add-on
96 # version parts automatically 97 # version parts automatically
97 file(STRINGS ${KODI_INCLUDE_DIR}/versions.h BIN_ADDON_PARTS) 98 file(STRINGS ${KODI_INCLUDE_DIR}/versions.h BIN_ADDON_PARTS)
@@ -108,7 +109,8 @@ macro (build_addon target prefix libs)
108 if("${include_name}" MATCHES "_DEPENDS") 109 if("${include_name}" MATCHES "_DEPENDS")
109 # Use start definition name as base for other value type 110 # Use start definition name as base for other value type
110 list(GET loop_var 0 list_name) 111 list(GET loop_var 0 list_name)
111 string(REPLACE "_DEPENDS" "" depends_name ${list_name}) 112 string(REPLACE "_DEPENDS" "_MIN" depends_minver ${list_name})
113 string(REPLACE "_DEPENDS" "" depends_ver ${list_name})
112 string(REPLACE "_DEPENDS" "_XML_ID" xml_entry_name ${list_name}) 114 string(REPLACE "_DEPENDS" "_XML_ID" xml_entry_name ${list_name})
113 string(REPLACE "_DEPENDS" "_USED" used_type_name ${list_name}) 115 string(REPLACE "_DEPENDS" "_USED" used_type_name ${list_name})
114 116
@@ -120,16 +122,14 @@ macro (build_addon target prefix libs)
120 foreach(src_file ${USED_SOURCES}) 122 foreach(src_file ${USED_SOURCES})
121 file(STRINGS ${src_file} BIN_ADDON_SRC_PARTS) 123 file(STRINGS ${src_file} BIN_ADDON_SRC_PARTS)
122 foreach(loop_var ${BIN_ADDON_SRC_PARTS}) 124 foreach(loop_var ${BIN_ADDON_SRC_PARTS})
123 string(FIND "${loop_var}" "#include" matchres) 125 string(REGEX MATCH "^[ \t]*#[ \t]*(include|import)[ \t]*[<\"](kodi\/)?(.+)[\">]" include_name "${loop_var}")
124 if("${matchres}" EQUAL 0) 126 if(include_name AND CMAKE_MATCH_3 MATCHES ^${depend_header})
125 string(REPLACE " " ";" loop_var "${loop_var}") 127 get_directory_property(CURRENT_DEFS COMPILE_DEFINITIONS)
126 list(GET loop_var 1 include_name) 128 if(NOT used_type_name IN_LIST CURRENT_DEFS)
127 string(REGEX REPLACE "[<>\"]|kodi/" "" include_name "${include_name}") 129 set(ADDON_DEPENDS "${ADDON_DEPENDS}\n<import addon=\"${${xml_entry_name}}\" minversion=\"${${depends_minver}}\" version=\"${${depends_ver}}\"/>")
128 if(include_name MATCHES ${depend_header}) 130 # Inform with them the addon header about used type, if not present before
129 set(ADDON_DEPENDS "${ADDON_DEPENDS}\n<import addon=\"${${xml_entry_name}}\" version=\"${${depends_name}}\"/>")
130 # Inform with them the addon header about used type
131 add_definitions(-D${used_type_name}) 131 add_definitions(-D${used_type_name})
132 message(STATUS "Added usage definition: ${used_type_name}") 132 message(STATUS " - Added API usage definition: ${used_type_name} (Version: \"${${depends_ver}}\", Min. Version: \"${${depends_minver}}\")")
133 set(FOUND_HEADER_USAGE 1) 133 set(FOUND_HEADER_USAGE 1)
134 endif() 134 endif()
135 endif() 135 endif()
@@ -276,6 +276,18 @@ macro (build_addon target prefix libs)
276 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target} 276 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}
277 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) 277 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
278 endif() 278 endif()
279 if(${prefix}_ADDITIONAL_BINARY_EXE)
280 install(PROGRAMS ${${prefix}_ADDITIONAL_BINARY_EXE} DESTINATION ${target}
281 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
282 endif()
283 if(${prefix}_ADDITIONAL_BINARY_PARTS)
284 install(FILES ${${prefix}_ADDITIONAL_BINARY_PARTS} DESTINATION ${target}
285 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
286 endif()
287 if(${prefix}_ADDITIONAL_BINARY_DIRS)
288 install(DIRECTORY ${${prefix}_ADDITIONAL_BINARY_DIRS} DESTINATION ${target} USE_SOURCE_PERMISSIONS
289 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
290 endif()
279 else() # NOT WIN32 291 else() # NOT WIN32
280 if(NOT CPACK_PACKAGE_DIRECTORY) 292 if(NOT CPACK_PACKAGE_DIRECTORY)
281 set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}) 293 set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR})
@@ -296,6 +308,18 @@ macro (build_addon target prefix libs)
296 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target} 308 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${target}
297 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG}) 309 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
298 endif() 310 endif()
311 if(${prefix}_ADDITIONAL_BINARY_EXE)
312 install(PROGRAMS ${${prefix}_ADDITIONAL_BINARY_EXE} DESTINATION ${target}
313 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
314 endif()
315 if(${prefix}_ADDITIONAL_BINARY_PARTS)
316 install(FILES ${${prefix}_ADDITIONAL_BINARY_PARTS} DESTINATION ${target}
317 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
318 endif()
319 if(${prefix}_ADDITIONAL_BINARY_DIRS)
320 install(DIRECTORY ${${prefix}_ADDITIONAL_BINARY_DIRS} DESTINATION ${target} USE_SOURCE_PERMISSIONS
321 COMPONENT ${target}-${${prefix}_VERSION}-${PLATFORM_TAG})
322 endif()
299 endif() 323 endif()
300 add_cpack_workaround(${target} ${${prefix}_VERSION} ${ext}) 324 add_cpack_workaround(${target} ${${prefix}_VERSION} ${ext})
301 else() 325 else()
@@ -339,6 +363,15 @@ macro (build_addon target prefix libs)
339 if(${prefix}_ADDITIONAL_BINARY) 363 if(${prefix}_ADDITIONAL_BINARY)
340 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target}) 364 install(FILES ${${prefix}_ADDITIONAL_BINARY} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
341 endif() 365 endif()
366 if(${prefix}_ADDITIONAL_BINARY_EXE)
367 install(PROGRAMS ${${prefix}_ADDITIONAL_BINARY_EXE} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
368 endif()
369 if(${prefix}_ADDITIONAL_BINARY_PARTS)
370 install(FILES ${${prefix}_ADDITIONAL_BINARY_PARTS} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
371 endif()
372 if(${prefix}_ADDITIONAL_BINARY_DIRS)
373 install(DIRECTORY ${${prefix}_ADDITIONAL_BINARY_DIRS} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target} USE_SOURCE_PERMISSIONS)
374 endif()
342 endif() 375 endif()
343 if(${APP_NAME_UC}_BUILD_DIR) 376 if(${APP_NAME_UC}_BUILD_DIR)
344 file(GLOB_RECURSE files ${CMAKE_CURRENT_SOURCE_DIR}/${target}/*) 377 file(GLOB_RECURSE files ${CMAKE_CURRENT_SOURCE_DIR}/${target}/*)
diff --git a/cmake/scripts/common/AddonHelpers.dox b/cmake/scripts/common/AddonHelpers.dox
new file mode 100644
index 0000000..d3acec0
--- /dev/null
+++ b/cmake/scripts/common/AddonHelpers.dox
@@ -0,0 +1,59 @@
1/*!
2\addtogroup cpp_cmake
3
4Kodi which uses it as a library for its binary addons has a special build
5system for this.
6
7To implement this, a CMake macro brought by Kodi is used, this is
8"build_addon (...)". This processes various definitions passed by the addon to
9process the construction.
10
11
12--------------------------------------------------------------------------------
13
14<b>Here a minmal example of the for addon used CMakeLists.txt:</b>
15
16~~~~~~~~~~~~~{.cmake}
17cmake_minimum_required(VERSION 3.5)
18project(example.addon)
19
20set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR})
21
22find_package(Kodi REQUIRED)
23
24include_directories(${KODI_INCLUDE_DIR}
25
26set(DEPLIBS ) # Here empty
27set(EXAMPLE_SOURCES src/main.cpp)
28set(EXAMPLE_HEADERS src/main.h)
29
30build_addon((example.addon EXAMPLE DEPLIBS)
31
32include(CPack)
33~~~~~~~~~~~~~
34
35
36--------------------------------------------------------------------------------
37
38This is a list of special variables that can be passed to the macro.
39The parts defined with "*" must be given the second name given to the macro.
40
41Here to define the necessary creation and installation files on addon CMakeLists.txt:
42| Name | Description
43|-----------------------------|-------------------------------------------------
44| *_SOURCES | List of source code files to be complicated.
45| *_HEADERS | List of used source code header files.
46| *_CUSTOM_BINARY | For special cases where an already created library from an external source is inserted, the <b>"* _SOURCES"</b> and <b>"* _HEADERS"</b> are unused in this case.<br>This is currently used primarily on game addons.
47| *_CUSTOM_DATA | To add additional required data from a folder, which are stored in the shared folder of the addon.<br>With a "/" at the end of the content given to the folder is used, without the folder itself.
48| *_ADDITIONAL_BINARY | In case the additional library has to be installed for the addon, the path or CMake name can be given here.
49| *_ADDITIONAL_BINARY_EXE | In case you need to addon an additional application you can give the path or CMake name, it will be in the same folder as the addon library.<br>The mode bits are set there as EXE.
50| *_ADDITIONAL_BINARY_DIRS | To add complete folders additionally to folders containing the addon library.<br>With a "/" at the end of the content given to the folder is used, without the folder itself.
51
52External creation Options, given by `-D...`:
53| Name | Description
54|-----------------------------|-------------------------------------------------
55| PACKAGE_ZIP | To create a package as a ZIP file. This is also used to install locally addon together.<br>Default is OFF.
56| PACKAGE_TGZ | To create a package as a TGZ file.<br>Default is OFF.
57| BUILD_SHARED_LIBS | To define if addon library is shared or static.<br>Default is ON to have shared.
58| USE_LTO | Use link time optimization.<br>Default is OFF.
59*/
diff --git a/cmake/scripts/common/ArchSetup.cmake b/cmake/scripts/common/ArchSetup.cmake
index 07ce6d4..2e1eb12 100644
--- a/cmake/scripts/common/ArchSetup.cmake
+++ b/cmake/scripts/common/ArchSetup.cmake
@@ -18,24 +18,7 @@ include(CheckCXXSourceCompiles)
18include(CheckSymbolExists) 18include(CheckSymbolExists)
19include(CheckFunctionExists) 19include(CheckFunctionExists)
20include(CheckIncludeFile) 20include(CheckIncludeFile)
21 21include(CheckTypeSize)
22# Macro to check if a given type exists in a given header
23# Arguments:
24# header the header to check
25# type the type to check for existence
26# var the compiler definition to set if type exists
27# On return:
28# If type was found, the definition is added to SYSTEM_DEFINES
29macro(check_type header type var)
30 check_cxx_source_compiles("#include <${header}>
31 int main()
32 {
33 ${type} s;
34 }" ${var})
35 if(${var})
36 list(APPEND SYSTEM_DEFINES -D${var}=1)
37 endif()
38endmacro()
39 22
40# Macro to check if a given builtin function exists 23# Macro to check if a given builtin function exists
41# Arguments: 24# Arguments:
@@ -95,17 +78,12 @@ endif()
95include(${CMAKE_SOURCE_DIR}/cmake/scripts/${CORE_SYSTEM_NAME}/ArchSetup.cmake) 78include(${CMAKE_SOURCE_DIR}/cmake/scripts/${CORE_SYSTEM_NAME}/ArchSetup.cmake)
96 79
97message(STATUS "Core system type: ${CORE_SYSTEM_NAME}") 80message(STATUS "Core system type: ${CORE_SYSTEM_NAME}")
98message(STATUS "Platform: ${PLATFORM}") 81message(STATUS "Platform: ${CORE_PLATFORM_NAME}")
99message(STATUS "CPU: ${CPU}, ARCH: ${ARCH}") 82message(STATUS "CPU: ${CPU}, ARCH: ${ARCH}")
100message(STATUS "Cross-Compiling: ${CMAKE_CROSSCOMPILING}") 83message(STATUS "Cross-Compiling: ${CMAKE_CROSSCOMPILING}")
101message(STATUS "Execute build artefacts on host: ${CORE_HOST_IS_TARGET}") 84message(STATUS "Execute build artefacts on host: ${CORE_HOST_IS_TARGET}")
102message(STATUS "Depends based build: ${KODI_DEPENDSBUILD}") 85message(STATUS "Depends based build: ${KODI_DEPENDSBUILD}")
103 86
104check_type(string std::u16string HAVE_STD__U16_STRING)
105check_type(string std::u32string HAVE_STD__U32_STRING)
106check_type(string char16_t HAVE_CHAR16_T)
107check_type(string char32_t HAVE_CHAR32_T)
108check_type(stdint.h uint_least16_t HAVE_STDINT_H)
109check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE) 87check_symbol_exists(posix_fadvise fcntl.h HAVE_POSIX_FADVISE)
110check_symbol_exists(PRIdMAX inttypes.h HAVE_INTTYPES_H) 88check_symbol_exists(PRIdMAX inttypes.h HAVE_INTTYPES_H)
111check_builtin("long* temp=0; long ret=__sync_add_and_fetch(temp, 1)" HAS_BUILTIN_SYNC_ADD_AND_FETCH) 89check_builtin("long* temp=0; long ret=__sync_add_and_fetch(temp, 1)" HAS_BUILTIN_SYNC_ADD_AND_FETCH)
diff --git a/cmake/scripts/common/CheckTargetPlatform.cmake b/cmake/scripts/common/CheckTargetPlatform.cmake
index 526e4bd..d776085 100644
--- a/cmake/scripts/common/CheckTargetPlatform.cmake
+++ b/cmake/scripts/common/CheckTargetPlatform.cmake
@@ -29,7 +29,10 @@ function(check_target_platform dir target_platform build)
29 string(SUBSTRING ${platform} 1 ${platform_length} platform) 29 string(SUBSTRING ${platform} 1 ${platform_length} platform)
30 30
31 # check if the current platform does not match the extracted platform 31 # check if the current platform does not match the extracted platform
32 if(NOT ${platform} STREQUAL ${target_platform}) 32 if(${platform} STREQUAL ${target_platform})
33 set(${build} FALSE)
34 break()
35 elseif(NOT ${platform} STREQUAL ${target_platform})
33 set(${build} TRUE) 36 set(${build} TRUE)
34 endif() 37 endif()
35 endif() 38 endif()
diff --git a/cmake/scripts/common/CompilerSettings.cmake b/cmake/scripts/common/CompilerSettings.cmake
new file mode 100644
index 0000000..b4e7e89
--- /dev/null
+++ b/cmake/scripts/common/CompilerSettings.cmake
@@ -0,0 +1,7 @@
1# Languages and global compiler settings
2if(NOT DEFINED CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 14)
3 set(CMAKE_CXX_STANDARD 14)
4endif()
5set(CMAKE_CXX_STANDARD_REQUIRED ON)
6set(CMAKE_CXX_EXTENSIONS OFF)
7set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp")
diff --git a/cmake/scripts/common/GenerateVersionedFiles.cmake b/cmake/scripts/common/GenerateVersionedFiles.cmake
index 1d324db..d54b524 100644
--- a/cmake/scripts/common/GenerateVersionedFiles.cmake
+++ b/cmake/scripts/common/GenerateVersionedFiles.cmake
@@ -24,9 +24,6 @@ foreach(loop_var ${ADDON_XML_IN_FILE})
24 string(REPLACE ${CORE_SOURCE_DIR} ${CMAKE_BINARY_DIR} dest_dir ${source_dir}) 24 string(REPLACE ${CORE_SOURCE_DIR} ${CMAKE_BINARY_DIR} dest_dir ${source_dir})
25 file(MAKE_DIRECTORY ${dest_dir}) 25 file(MAKE_DIRECTORY ${dest_dir})
26 26
27 # copy everything except addon.xml.in to build folder
28 file(COPY "${source_dir}" DESTINATION "${CMAKE_BINARY_DIR}/addons" REGEX ".xml.in" EXCLUDE)
29
30 configure_file(${source_dir}/addon.xml.in ${dest_dir}/addon.xml @ONLY) 27 configure_file(${source_dir}/addon.xml.in ${dest_dir}/addon.xml @ONLY)
31 28
32 unset(source_dir) 29 unset(source_dir)
diff --git a/cmake/scripts/common/HandleDepends.cmake b/cmake/scripts/common/HandleDepends.cmake
index 40e382b..7cacd25 100644
--- a/cmake/scripts/common/HandleDepends.cmake
+++ b/cmake/scripts/common/HandleDepends.cmake
@@ -68,8 +68,8 @@ function(add_addon_depends addon searchpath)
68 -DCORE_SYSTEM_NAME=${CORE_SYSTEM_NAME} 68 -DCORE_SYSTEM_NAME=${CORE_SYSTEM_NAME}
69 -DENABLE_STATIC=1 69 -DENABLE_STATIC=1
70 -DBUILD_SHARED_LIBS=0) 70 -DBUILD_SHARED_LIBS=0)
71 # windows store args 71 # windows args
72 if (CMAKE_SYSTEM_NAME STREQUAL WindowsStore) 72 if (CMAKE_SYSTEM_NAME STREQUAL WindowsStore OR CMAKE_SYSTEM_NAME STREQUAL Windows)
73 list(APPEND BUILD_ARGS -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} 73 list(APPEND BUILD_ARGS -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
74 -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION}) 74 -DCMAKE_SYSTEM_VERSION=${CMAKE_SYSTEM_VERSION})
75 endif() 75 endif()
@@ -78,8 +78,10 @@ function(add_addon_depends addon searchpath)
78 # make sure we create strings, not lists 78 # make sure we create strings, not lists
79 set(TMP_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_DEFINES}") 79 set(TMP_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH_DEFINES}")
80 set(TMP_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_DEFINES}") 80 set(TMP_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARCH_DEFINES}")
81 set(TMP_EXE_LINKER_FLAGS "-L${OUTPUT_DIR}/lib ${CMAKE_EXE_LINKER_FLAGS}")
81 list(APPEND BUILD_ARGS -DCMAKE_C_FLAGS=${TMP_C_FLAGS} 82 list(APPEND BUILD_ARGS -DCMAKE_C_FLAGS=${TMP_C_FLAGS}
82 -DCMAKE_CXX_FLAGS=${TMP_CXX_FLAGS}) 83 -DCMAKE_CXX_FLAGS=${TMP_CXX_FLAGS}
84 -DCMAKE_EXE_LINKER_FLAGS=${TMP_EXE_LINKER_FLAGS})
83 endif() 85 endif()
84 86
85 if(CMAKE_TOOLCHAIN_FILE) 87 if(CMAKE_TOOLCHAIN_FILE)
@@ -88,6 +90,17 @@ function(add_addon_depends addon searchpath)
88 message(${BUILD_ARGS}) 90 message(${BUILD_ARGS})
89 endif() 91 endif()
90 92
93 # used for addons where need special folders to store there content (if
94 # not set the addon define it byself).
95 # e.g. Google Chromium addon where his git bring:
96 # - "unable to create file" ... "Filename too long"
97 # see also WARNING by Windows on: https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart
98 if(THIRD_PARTY_PATH)
99 message(STATUS "Third party lib path specified")
100 message(STATUS ${THIRD_PARTY_PATH})
101 list(APPEND BUILD_ARGS -DTHIRD_PARTY_PATH=${THIRD_PARTY_PATH})
102 endif()
103
91 set(PATCH_COMMAND) 104 set(PATCH_COMMAND)
92 105
93 # if there's a CMakeLists.txt use it to prepare the build 106 # if there's a CMakeLists.txt use it to prepare the build
@@ -215,7 +228,6 @@ function(add_addon_depends addon searchpath)
215 -DOUTPUT_DIR=${OUTPUT_DIR} 228 -DOUTPUT_DIR=${OUTPUT_DIR}
216 -DCMAKE_PREFIX_PATH=${OUTPUT_DIR} 229 -DCMAKE_PREFIX_PATH=${OUTPUT_DIR}
217 -DCMAKE_INSTALL_PREFIX=${OUTPUT_DIR} 230 -DCMAKE_INSTALL_PREFIX=${OUTPUT_DIR}
218 -DCMAKE_EXE_LINKER_FLAGS=-L${OUTPUT_DIR}/lib
219 -DCMAKE_INCLUDE_PATH=${OUTPUT_DIR}/include) 231 -DCMAKE_INCLUDE_PATH=${OUTPUT_DIR}/include)
220 endif() 232 endif()
221 233
diff --git a/cmake/scripts/common/Macros.cmake b/cmake/scripts/common/Macros.cmake
index eefd7c8..f7327e3 100644
--- a/cmake/scripts/common/Macros.cmake
+++ b/cmake/scripts/common/Macros.cmake
@@ -111,26 +111,6 @@ function(core_add_test_library name)
111 endforeach() 111 endforeach()
112endfunction() 112endfunction()
113 113
114# Add an addon callback library
115# Arguments:
116# name name of the library to add
117# Implicit arguments:
118# SOURCES the sources of the library
119# HEADERS the headers of the library (only for IDE support)
120# OTHERS other library related files (only for IDE support)
121# On return:
122# Library target is defined and added to LIBRARY_FILES
123function(core_add_addon_library name)
124 get_filename_component(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} NAME)
125 list(APPEND SOURCES lib${name}.cpp)
126 core_add_shared_library(${name} OUTPUT_DIRECTORY addons/${DIRECTORY})
127 set_target_properties(${name} PROPERTIES FOLDER addons)
128 target_include_directories(${name} PRIVATE
129 ${CMAKE_CURRENT_SOURCE_DIR}
130 ${CMAKE_SOURCE_DIR}/xbmc/addons/kodi-addon-dev-kit/include/kodi
131 ${CMAKE_SOURCE_DIR}/xbmc)
132endfunction()
133
134# Add an dl-loaded shared library 114# Add an dl-loaded shared library
135# Arguments: 115# Arguments:
136# name name of the library to add 116# name name of the library to add
@@ -386,25 +366,6 @@ function(core_require_dep)
386 endforeach() 366 endforeach()
387endfunction() 367endfunction()
388 368
389# add required dyloaded dependencies of main application
390# Arguments:
391# dep_list One or many dependency specifications (see split_dependency_specification)
392# for syntax). The dependency name is used uppercased as variable prefix.
393# On return:
394# dependency added to ${SYSTEM_INCLUDES}, ${dep}_SONAME is set up
395function(core_require_dyload_dep)
396 foreach(depspec ${ARGN})
397 split_dependency_specification(${depspec} dep version)
398 find_package_with_ver(${dep} ${version} REQUIRED)
399 string(TOUPPER ${dep} depup)
400 list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS})
401 list(APPEND DEP_DEFINES ${${depup}_DEFINITIONS})
402 find_soname(${depup} REQUIRED)
403 export_dep()
404 set(${depup}_SONAME ${${depup}_SONAME} PARENT_SCOPE)
405 endforeach()
406endfunction()
407
408# helper macro for optional deps 369# helper macro for optional deps
409macro(setup_enable_switch) 370macro(setup_enable_switch)
410 string(TOUPPER ${dep} depup) 371 string(TOUPPER ${dep} depup)
@@ -450,39 +411,6 @@ function(core_optional_dep)
450 set(final_message ${final_message} PARENT_SCOPE) 411 set(final_message ${final_message} PARENT_SCOPE)
451endfunction() 412endfunction()
452 413
453# add optional dyloaded dependencies of main application
454# Arguments:
455# dep_list One or many dependency specifications (see split_dependency_specification)
456# for syntax). The dependency name is used uppercased as variable prefix.
457# On return:
458# dependency optionally added to ${SYSTEM_INCLUDES}, ${DEP_DEFINES}, ${dep}_SONAME is set up
459function(core_optional_dyload_dep)
460 foreach(depspec ${ARGN})
461 set(_required False)
462 split_dependency_specification(${depspec} dep version)
463 setup_enable_switch()
464 if(${enable_switch} STREQUAL AUTO)
465 find_package_with_ver(${dep} ${version})
466 elseif(${${enable_switch}})
467 find_package_with_ver(${dep} ${version} REQUIRED)
468 set(_required True)
469 endif()
470
471 if(${depup}_FOUND)
472 list(APPEND SYSTEM_INCLUDES ${${depup}_INCLUDE_DIRS})
473 find_soname(${depup} REQUIRED)
474 list(APPEND DEP_DEFINES ${${depup}_DEFINITIONS})
475 set(final_message ${final_message} "${depup} enabled: Yes" PARENT_SCOPE)
476 export_dep()
477 set(${depup}_SONAME ${${depup}_SONAME} PARENT_SCOPE)
478 elseif(_required)
479 message(FATAL_ERROR "${depup} enabled but not found")
480 else()
481 set(final_message ${final_message} "${depup} enabled: No" PARENT_SCOPE)
482 endif()
483 endforeach()
484endfunction()
485
486function(core_file_read_filtered result filepattern) 414function(core_file_read_filtered result filepattern)
487 # Reads STRINGS from text files 415 # Reads STRINGS from text files
488 # with comments filtered out 416 # with comments filtered out
diff --git a/cmake/scripts/common/PrepareEnv.cmake b/cmake/scripts/common/PrepareEnv.cmake
index 753dca1..559788f 100644
--- a/cmake/scripts/common/PrepareEnv.cmake
+++ b/cmake/scripts/common/PrepareEnv.cmake
@@ -34,6 +34,14 @@ endif()
34 34
35set(PLATFORM_TAG ${CORE_SYSTEM_NAME}) 35set(PLATFORM_TAG ${CORE_SYSTEM_NAME})
36 36
37# The CPU variable is given either by ./tools/depends or by the
38# ./cmake/scripts/common/ArchSetup.cmake (which refers to the Kodi building
39# itself). However, this file is only used by addons, so CPU can not always
40# be defined, so in this case, if empty, the base CPU will be used.
41if(NOT CPU)
42 set(CPU ${CMAKE_SYSTEM_PROCESSOR})
43endif()
44
37if(CORE_SYSTEM_NAME STREQUAL android) 45if(CORE_SYSTEM_NAME STREQUAL android)
38 if (CPU MATCHES "v7a") 46 if (CPU MATCHES "v7a")
39 set(PLATFORM_TAG ${PLATFORM_TAG}-armv7) 47 set(PLATFORM_TAG ${PLATFORM_TAG}-armv7)
@@ -41,13 +49,14 @@ if(CORE_SYSTEM_NAME STREQUAL android)
41 set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64) 49 set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64)
42 elseif (CPU MATCHES "i686") 50 elseif (CPU MATCHES "i686")
43 set(PLATFORM_TAG ${PLATFORM_TAG}-i686) 51 set(PLATFORM_TAG ${PLATFORM_TAG}-i686)
52 elseif (CPU MATCHES "x86_64")
53 set(PLATFORM_TAG ${PLATFORM_TAG}-x86_64)
44 else() 54 else()
45 message(FATAL_ERROR "Unsupported architecture") 55 message(FATAL_ERROR "Unsupported architecture")
46 endif() 56 endif()
47elseif(CORE_SYSTEM_NAME STREQUAL ios) 57elseif(CORE_SYSTEM_NAME STREQUAL darwin_embedded)
48 if (CPU MATCHES armv7) 58 set(PLATFORM_TAG ${CORE_PLATFORM_NAME})
49 set(PLATFORM_TAG ${PLATFORM_TAG}-armv7) 59 if (CPU MATCHES arm64)
50 elseif (CPU MATCHES arm64)
51 set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64) 60 set(PLATFORM_TAG ${PLATFORM_TAG}-aarch64)
52 else() 61 else()
53 message(FATAL_ERROR "Unsupported architecture") 62 message(FATAL_ERROR "Unsupported architecture")
diff --git a/cmake/scripts/darwin/Macros.cmake b/cmake/scripts/darwin/Macros.cmake
new file mode 100644
index 0000000..9a805c4
--- /dev/null
+++ b/cmake/scripts/darwin/Macros.cmake
@@ -0,0 +1,8 @@
1macro(enable_arc)
2 if(CMAKE_GENERATOR STREQUAL Xcode)
3 set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES)
4 else()
5 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-arc")
6 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc")
7 endif()
8endmacro()
diff --git a/cmake/scripts/ios/ArchSetup.cmake b/cmake/scripts/darwin_embedded/ArchSetup.cmake
index b6c626f..7160da9 100644
--- a/cmake/scripts/ios/ArchSetup.cmake
+++ b/cmake/scripts/darwin_embedded/ArchSetup.cmake
@@ -1,33 +1,33 @@
1if(NOT CMAKE_TOOLCHAIN_FILE) 1if(NOT CMAKE_TOOLCHAIN_FILE)
2 message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for ios. See ${CMAKE_SOURCE_DIR}/cmake/README.md") 2 message(FATAL_ERROR "CMAKE_TOOLCHAIN_FILE required for ios/tvos. See ${CMAKE_SOURCE_DIR}/cmake/README.md")
3endif() 3endif()
4 4
5set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/XBMCApplication.mm) 5set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/${CORE_PLATFORM_NAME_LC}/XBMCApplication.mm)
6set(PLATFORM_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/${CORE_PLATFORM_NAME_LC}/Info.plist.in)
6 7
7set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_IOS) 8set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_EMBEDDED)
9if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
10 list(APPEND ARCH_DEFINES -DTARGET_DARWIN_TVOS)
11else()
12 list(APPEND ARCH_DEFINES -DTARGET_DARWIN_IOS)
13endif()
8set(SYSTEM_DEFINES -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE 14set(SYSTEM_DEFINES -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
9 -D__STDC_CONSTANT_MACROS) 15 -D__STDC_CONSTANT_MACROS -DHAS_IOS_NETWORK -DHAS_ZEROCONF)
10set(PLATFORM_DIR platform/linux) 16set(PLATFORM_DIR platform/darwin)
17set(PLATFORMDEFS_DIR platform/posix)
11set(CMAKE_SYSTEM_NAME Darwin) 18set(CMAKE_SYSTEM_NAME Darwin)
12if(WITH_ARCH) 19if(WITH_ARCH)
13 set(ARCH ${WITH_ARCH}) 20 set(ARCH ${WITH_ARCH})
14else() 21else()
15 if(CPU STREQUAL armv7) 22 if(CPU STREQUAL arm64)
16 set(CMAKE_OSX_ARCHITECTURES ${CPU})
17 set(ARCH arm)
18 set(NEON True)
19 elseif(CPU STREQUAL arm64)
20 set(CMAKE_OSX_ARCHITECTURES ${CPU})
21 set(ARCH aarch64) 23 set(ARCH aarch64)
22 set(NEON True)
23 else() 24 else()
24 message(SEND_ERROR "Unknown CPU: ${CPU}") 25 message(SEND_ERROR "Unknown CPU: ${CPU}")
25 endif() 26 endif()
27 set(CMAKE_OSX_ARCHITECTURES ${CPU})
28 set(NEON True)
26endif() 29endif()
27 30
28# Additional SYSTEM_DEFINES
29list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK -DHAS_ZEROCONF)
30
31list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${NATIVEPREFIX}) 31list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${NATIVEPREFIX})
32 32
33list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo" 33list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo"
@@ -36,24 +36,28 @@ list(APPEND DEPLIBS "-framework CoreFoundation" "-framework CoreVideo"
36 "-framework CFNetwork" "-framework CoreGraphics" 36 "-framework CFNetwork" "-framework CoreGraphics"
37 "-framework Foundation" "-framework UIKit" 37 "-framework Foundation" "-framework UIKit"
38 "-framework CoreMedia" "-framework AVFoundation" 38 "-framework CoreMedia" "-framework AVFoundation"
39 "-framework VideoToolbox") 39 "-framework VideoToolbox" "-lresolv" "-ObjC"
40 "-framework AVKit" "-framework GameController")
40 41
41set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE) 42set(ENABLE_OPTICAL OFF CACHE BOOL "" FORCE)
42 43
43set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "9.0") 44# AppleTV already has built-in AirPlay support
44set(CMAKE_XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2") 45if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
45 46 set(ENABLE_AIRTUNES OFF CACHE BOOL "" FORCE)
47endif()
46set(CMAKE_XCODE_ATTRIBUTE_INLINES_ARE_PRIVATE_EXTERN OFF) 48set(CMAKE_XCODE_ATTRIBUTE_INLINES_ARE_PRIVATE_EXTERN OFF)
47set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN OFF) 49set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN OFF)
48set(CMAKE_XCODE_ATTRIBUTE_COPY_PHASE_STRIP OFF) 50set(CMAKE_XCODE_ATTRIBUTE_COPY_PHASE_STRIP OFF)
49 51
52include(cmake/scripts/darwin/Macros.cmake)
53enable_arc()
54
50# Xcode strips dead code by default which breaks wrapping 55# Xcode strips dead code by default which breaks wrapping
51set(CMAKE_XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING OFF) 56set(CMAKE_XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING OFF)
52 57
53# Unify output directories for iOS packaging scripts 58option(ENABLE_XCODE_ADDONBUILD "Enable Xcode automatic addon building?" OFF)
54if(NOT CMAKE_GENERATOR MATCHES Xcode) 59
55 set(CORE_BUILD_CONFIG "${CORE_BUILD_CONFIG}-iphoneos") 60# Unify output directories for iOS/tvOS packaging scripts
56endif()
57set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CORE_BUILD_DIR}/${CORE_BUILD_CONFIG}) 61set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CORE_BUILD_DIR}/${CORE_BUILD_CONFIG})
58foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) 62foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
59 string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) 63 string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
diff --git a/cmake/scripts/darwin_embedded/ExtraTargets.cmake b/cmake/scripts/darwin_embedded/ExtraTargets.cmake
new file mode 100644
index 0000000..2b9980a
--- /dev/null
+++ b/cmake/scripts/darwin_embedded/ExtraTargets.cmake
@@ -0,0 +1,25 @@
1if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
2 # top shelf extension
3 set(TOPSHELF_EXTENSION_NAME "${APP_NAME_LC}-topshelf")
4 set(TOPSHELF_BUNDLE_EXTENSION appex)
5 set(TOPSHELF_DIR "${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/tvos/TopShelf")
6 # same path as the output Info.plist, taken from cmGlobalXCodeGenerator::ComputeInfoPListLocation()
7 set(ENTITLEMENTS_OUT_PATH "${CMAKE_BINARY_DIR}/CMakeFiles/${TOPSHELF_EXTENSION_NAME}.dir/TopShelf.entitlements")
8
9 set(SOURCES
10 ${TOPSHELF_DIR}/ServiceProvider.m
11 ${TOPSHELF_DIR}/../tvosShared.m)
12 set(HEADERS
13 ${TOPSHELF_DIR}/ServiceProvider.h
14 ${TOPSHELF_DIR}/../tvosShared.h)
15 add_executable(${TOPSHELF_EXTENSION_NAME} MACOSX_BUNDLE ${SOURCES} ${HEADERS})
16
17 configure_file(${TOPSHELF_DIR}/TopShelf.entitlements.in ${ENTITLEMENTS_OUT_PATH} @ONLY)
18 set_target_properties(${TOPSHELF_EXTENSION_NAME} PROPERTIES BUNDLE_EXTENSION ${TOPSHELF_BUNDLE_EXTENSION}
19 MACOSX_BUNDLE_INFO_PLIST ${TOPSHELF_DIR}/Info.plist.in
20 XCODE_PRODUCT_TYPE com.apple.product-type.tv-app-extension
21 XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${ENTITLEMENTS_OUT_PATH})
22 target_link_libraries(${TOPSHELF_EXTENSION_NAME} "-framework TVServices" "-framework Foundation")
23
24 add_dependencies(${APP_NAME_LC} ${TOPSHELF_EXTENSION_NAME})
25endif()
diff --git a/cmake/scripts/darwin_embedded/Install.cmake b/cmake/scripts/darwin_embedded/Install.cmake
new file mode 100644
index 0000000..af18277
--- /dev/null
+++ b/cmake/scripts/darwin_embedded/Install.cmake
@@ -0,0 +1,135 @@
1# IOS/TVOS packaging
2if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
3 # asset catalog
4 set(ASSET_CATALOG "${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/tvos/Assets.xcassets")
5 set(ASSET_CATALOG_ASSETS Assets)
6 set(ASSET_CATALOG_LAUNCH_IMAGE LaunchImage)
7
8 message("generating missing asset catalog images...")
9 execute_process(COMMAND ${CMAKE_SOURCE_DIR}/tools/darwin/Support/GenerateMissingImages-tvos.py "${ASSET_CATALOG}" ${ASSET_CATALOG_ASSETS} ${ASSET_CATALOG_LAUNCH_IMAGE})
10
11 target_sources(${APP_NAME_LC} PRIVATE "${ASSET_CATALOG}")
12 set_source_files_properties("${ASSET_CATALOG}" PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") # adds to Copy Bundle Resources build phase
13
14 # entitlements
15 set(ENTITLEMENTS_OUT_PATH "${CMAKE_BINARY_DIR}/CMakeFiles/${APP_NAME_LC}.dir/Kodi.entitlements")
16 configure_file(${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/tvos/Kodi.entitlements.in ${ENTITLEMENTS_OUT_PATH} @ONLY)
17
18 set_target_properties(${APP_NAME_LC} PROPERTIES XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME ${ASSET_CATALOG_ASSETS}
19 XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME ${ASSET_CATALOG_LAUNCH_IMAGE}
20 XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS ${ENTITLEMENTS_OUT_PATH})
21
22else()
23 set(BUNDLE_RESOURCES ${CMAKE_SOURCE_DIR}/media/splash.jpg
24 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon29x29.png
25 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon29x29@2x.png
26 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon40x40.png
27 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon40x40@2x.png
28 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon50x50.png
29 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon50x50@2x.png
30 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon57x57.png
31 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon57x57@2x.png
32 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon60x60.png
33 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon60x60@2x.png
34 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon72x72.png
35 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon72x72@2x.png
36 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon76x76.png
37 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon76x76@2x.png)
38
39 target_sources(${APP_NAME_LC} PRIVATE ${BUNDLE_RESOURCES})
40 foreach(file IN LISTS BUNDLE_RESOURCES)
41 set_source_files_properties(${file} PROPERTIES MACOSX_PACKAGE_LOCATION .)
42 endforeach()
43
44 target_sources(${APP_NAME_LC} PRIVATE ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchScreen.storyboard)
45 set_source_files_properties(${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchScreen.storyboard PROPERTIES MACOSX_PACKAGE_LOCATION "Resources")
46
47endif()
48
49# setup code signing
50# dev team ID / identity (certificate)
51set(DEVELOPMENT_TEAM "" CACHE STRING "Development Team")
52set(CODE_SIGN_IDENTITY $<IF:$<BOOL:${DEVELOPMENT_TEAM}>,iPhone\ Developer,> CACHE STRING "Code Sign Identity")
53
54# app provisioning profile
55set(CODE_SIGN_STYLE_APP Automatic)
56set(PROVISIONING_PROFILE_APP "" CACHE STRING "Provisioning profile name for the Kodi app")
57if(PROVISIONING_PROFILE_APP)
58 set(CODE_SIGN_STYLE_APP Manual)
59endif()
60
61# top shelf provisioning profile
62if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
63 set(CODE_SIGN_STYLE_TOPSHELF Automatic)
64 set(PROVISIONING_PROFILE_TOPSHELF "" CACHE STRING "Provisioning profile name for the Top Shelf")
65 if(PROVISIONING_PROFILE_TOPSHELF)
66 set(CODE_SIGN_STYLE_TOPSHELF Manual)
67 endif()
68 set_target_properties(${TOPSHELF_EXTENSION_NAME} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${CODE_SIGN_IDENTITY}"
69 XCODE_ATTRIBUTE_CODE_SIGN_STYLE ${CODE_SIGN_STYLE_TOPSHELF}
70 XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${DEVELOPMENT_TEAM}"
71 XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "${PROVISIONING_PROFILE_TOPSHELF}")
72 # copy extension inside PlugIns dir of the app bundle
73 add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
74 COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory $<TARGET_BUNDLE_DIR:${TOPSHELF_EXTENSION_NAME}>
75 $<TARGET_BUNDLE_DIR:${APP_NAME_LC}>/PlugIns/${TOPSHELF_EXTENSION_NAME}.${TOPSHELF_BUNDLE_EXTENSION}
76 MAIN_DEPENDENCY ${TOPSHELF_EXTENSION_NAME})
77endif()
78set_target_properties(${APP_NAME_LC} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${CODE_SIGN_IDENTITY}"
79 XCODE_ATTRIBUTE_CODE_SIGN_STYLE ${CODE_SIGN_STYLE_APP}
80 XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${DEVELOPMENT_TEAM}"
81 XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "${PROVISIONING_PROFILE_APP}")
82
83# Create xcode target that allows to build binary-addons.
84if(ADDONS_TO_BUILD)
85 set(_addons "ADDONS=${ADDONS_TO_BUILD}")
86endif()
87add_custom_target(binary-addons
88 COMMAND $(MAKE) -C ${CMAKE_SOURCE_DIR}/tools/depends/target/binary-addons clean
89 COMMAND $(MAKE) -C ${CMAKE_SOURCE_DIR}/tools/depends/target/binary-addons VERBOSE=1 V=99
90 INSTALL_PREFIX="${CMAKE_BINARY_DIR}/addons" CROSS_COMPILING=yes ${_addons})
91if(ENABLE_XCODE_ADDONBUILD)
92 add_dependencies(${APP_NAME_LC} binary-addons)
93endif()
94unset(_addons)
95
96add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
97 # TODO: Remove in sync with CopyRootFiles-darwin_embedded expecting the ".bin" file
98 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_NAME_LC}>
99 $<TARGET_FILE_DIR:${APP_NAME_LC}>/${APP_NAME}.bin
100
101 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/DllPaths_generated.h
102 ${CMAKE_BINARY_DIR}/xbmc/DllPaths_generated.h
103 COMMAND "ACTION=build"
104 "APP_NAME=${APP_NAME}"
105 "XBMC_DEPENDS=${DEPENDS_PATH}"
106 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/CopyRootFiles-darwin_embedded.command
107 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}"
108 "PYTHON_VERSION=${PYTHON_VERSION}"
109 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-darwin_embedded.command
110 COMMAND ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-dylibs2frameworks.command
111 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}"
112 "NATIVEPREFIX=${NATIVEPREFIX}"
113 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/Codesign.command
114)
115
116if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
117 add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
118 COMMAND ${CMAKE_COMMAND} -E copy_directory ${DEPENDS_PATH}/share/${APP_NAME_LC} $<TARGET_FILE_DIR:${APP_NAME_LC}>/AppData/AppHome
119 )
120endif()
121
122set(DEPENDS_ROOT_FOR_XCODE ${NATIVEPREFIX}/..)
123configure_file(${CMAKE_SOURCE_DIR}/tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh.in
124 ${CMAKE_BINARY_DIR}/tools/darwin/packaging/darwin_embedded/mkdeb-darwin_embedded.sh @ONLY)
125
126if(CORE_PLATFORM_NAME_LC STREQUAL ios)
127 configure_file(${CMAKE_SOURCE_DIR}/tools/darwin/packaging/darwin_embedded/migrate_to_kodi.sh.in
128 ${CMAKE_BINARY_DIR}/tools/darwin/packaging/darwin_embedded/migrate_to_kodi.sh @ONLY)
129endif()
130
131add_custom_target(deb
132 COMMAND sh ./mkdeb-darwin_embedded.sh ${CORE_BUILD_CONFIG}
133 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tools/darwin/packaging/darwin_embedded)
134add_dependencies(deb ${APP_NAME_LC})
135
diff --git a/cmake/scripts/darwin_embedded/Macros.cmake b/cmake/scripts/darwin_embedded/Macros.cmake
new file mode 100644
index 0000000..91f2d86
--- /dev/null
+++ b/cmake/scripts/darwin_embedded/Macros.cmake
@@ -0,0 +1,118 @@
1function(core_link_library lib wraplib)
2 if(CMAKE_GENERATOR MATCHES "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL Ninja)
3 set(wrapper_obj cores/dll-loader/exports/CMakeFiles/wrapper.dir/wrapper.c.o)
4 elseif(CMAKE_GENERATOR MATCHES "Xcode")
5 set(wrapper_obj cores/dll-loader/exports/kodi.build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/wrapper.build/Objects-$(CURRENT_VARIANT)/$(CURRENT_ARCH)/wrapper.o)
6 else()
7 message(FATAL_ERROR "Unsupported generator in core_link_library")
8 endif()
9
10 set(export -bundle -undefined dynamic_lookup
11 -Wl,-alias_list,${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cores/dll-loader/exports/wrapper.def
12 ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${wrapper_obj})
13 set(extension ${CMAKE_SHARED_MODULE_SUFFIX})
14 set(check_arg "")
15 if(TARGET ${lib})
16 set(target ${lib})
17 set(link_lib $<TARGET_FILE:${lib}>)
18 set(check_arg ${ARGV2})
19 set(data_arg ${ARGV3})
20
21 # iOS: EFFECTIVE_PLATFORM_NAME is not resolved
22 # http://public.kitware.com/pipermail/cmake/2016-March/063049.html
23 if(CORE_SYSTEM_NAME STREQUAL darwin_embedded)
24 get_target_property(dir ${lib} BINARY_DIR)
25 set(link_lib ${dir}/${CORE_BUILD_CONFIG}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
26 endif()
27 else()
28 set(target ${ARGV2})
29 set(link_lib ${lib})
30 set(check_arg ${ARGV3})
31 set(data_arg ${ARGV4})
32 endif()
33 if(check_arg STREQUAL export)
34 set(export ${export}
35 -Wl,--version-script=${ARGV3})
36 elseif(check_arg STREQUAL extras)
37 foreach(arg ${data_arg})
38 list(APPEND export ${arg})
39 endforeach()
40 elseif(check_arg STREQUAL archives)
41 set(extra_libs ${data_arg})
42 endif()
43 get_filename_component(dir ${wraplib} DIRECTORY)
44
45 # We can't simply pass the linker flags to the args section of the custom command
46 # because cmake will add quotes around it (and the linker will fail due to those).
47 # We need to do this handstand first ...
48 string(REPLACE " " ";" CUSTOM_COMMAND_ARGS_LDFLAGS ${CMAKE_SHARED_LINKER_FLAGS})
49
50 add_custom_command(OUTPUT ${wraplib}-${ARCH}${extension}
51 COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
52 COMMAND ${CMAKE_C_COMPILER}
53 ARGS ${CUSTOM_COMMAND_ARGS_LDFLAGS} ${export} -Wl,-force_load ${link_lib} ${extra_libs}
54 -o ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${extension}
55 DEPENDS ${target} wrapper.def wrapper
56 VERBATIM)
57
58 get_filename_component(libname ${wraplib} NAME_WE)
59 add_custom_target(wrap_${libname} ALL DEPENDS ${wraplib}-${ARCH}${extension})
60 set_target_properties(wrap_${libname} PROPERTIES FOLDER lib/wrapped)
61 add_dependencies(${APP_NAME_LC}-libraries wrap_${libname})
62
63 set(LIBRARY_FILES ${LIBRARY_FILES} ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${extension} CACHE STRING "" FORCE)
64endfunction()
65
66function(find_soname lib)
67 cmake_parse_arguments(arg "REQUIRED" "" "" ${ARGN})
68
69 string(TOLOWER ${lib} liblow)
70 if(${lib}_LDFLAGS)
71 set(link_lib "${${lib}_LDFLAGS}")
72 else()
73 set(link_lib "${${lib}_LIBRARIES}")
74 endif()
75
76 execute_process(COMMAND ${CMAKE_C_COMPILER} -print-search-dirs
77 COMMAND fgrep libraries:
78 COMMAND sed "s/[^=]*=\\(.*\\)/\\1/"
79 COMMAND sed "s/:/ /g"
80 ERROR_QUIET
81 OUTPUT_VARIABLE cc_lib_path
82 OUTPUT_STRIP_TRAILING_WHITESPACE)
83 execute_process(COMMAND echo ${link_lib}
84 COMMAND sed "s/-L[ ]*//g"
85 COMMAND sed "s/-l[^ ]*//g"
86 ERROR_QUIET
87 OUTPUT_VARIABLE env_lib_path
88 OUTPUT_STRIP_TRAILING_WHITESPACE)
89
90 foreach(path ${cc_lib_path} ${env_lib_path})
91 if(IS_DIRECTORY ${path})
92 execute_process(COMMAND ls -- ${path}/lib${liblow}.dylib
93 ERROR_QUIET
94 OUTPUT_VARIABLE lib_file
95 OUTPUT_STRIP_TRAILING_WHITESPACE)
96 else()
97 set(lib_file ${path})
98 endif()
99 if(lib_file)
100 # we want the path/name that is embedded in the dylib
101 execute_process(COMMAND otool -L ${lib_file}
102 COMMAND grep -v lib${liblow}.dylib
103 COMMAND grep ${liblow}
104 COMMAND awk "{V=1; print $V}"
105 ERROR_QUIET
106 OUTPUT_VARIABLE filename
107 OUTPUT_STRIP_TRAILING_WHITESPACE)
108 get_filename_component(${lib}_SONAME "${filename}" NAME)
109 if(VERBOSE)
110 message(STATUS "${lib} soname: ${${lib}_SONAME}")
111 endif()
112 endif()
113 endforeach()
114 if(arg_REQUIRED AND NOT ${lib}_SONAME)
115 message(FATAL_ERROR "Could not find dynamically loadable library ${lib}")
116 endif()
117 set(${lib}_SONAME ${${lib}_SONAME} PARENT_SCOPE)
118endfunction()
diff --git a/cmake/scripts/darwin_embedded/PathSetup.cmake b/cmake/scripts/darwin_embedded/PathSetup.cmake
new file mode 100644
index 0000000..efaca0b
--- /dev/null
+++ b/cmake/scripts/darwin_embedded/PathSetup.cmake
@@ -0,0 +1,7 @@
1set(BUNDLE_IDENTIFIER_DESC "Bundle ID")
2if(CORE_PLATFORM_NAME_LC STREQUAL tvos)
3 string(CONCAT BUNDLE_IDENTIFIER_DESC "${BUNDLE_IDENTIFIER_DESC}" " (app, top shelf, group ID)")
4endif()
5set(PLATFORM_BUNDLE_IDENTIFIER "${APP_PACKAGE}-${CORE_PLATFORM_NAME_LC}" CACHE STRING "${BUNDLE_IDENTIFIER_DESC}")
6list(APPEND final_message "Bundle ID: ${PLATFORM_BUNDLE_IDENTIFIER}")
7include(cmake/scripts/osx/PathSetup.cmake)
diff --git a/cmake/scripts/freebsd/ArchSetup.cmake b/cmake/scripts/freebsd/ArchSetup.cmake
index 3d5599c..7da6c51 100644
--- a/cmake/scripts/freebsd/ArchSetup.cmake
+++ b/cmake/scripts/freebsd/ArchSetup.cmake
@@ -1,7 +1,8 @@
1set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_FREEBSD) 1set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_FREEBSD)
2set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_LARGEFILE64_SOURCE 2set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_LARGEFILE64_SOURCE
3 -D_FILE_OFFSET_BITS=64) 3 -D_FILE_OFFSET_BITS=64 -DHAS_OSS)
4set(PLATFORM_DIR platform/linux) 4set(PLATFORM_DIR platform/linux)
5set(PLATFORMDEFS_DIR platform/posix)
5set(SYSTEM_LDFLAGS -L/usr/local/lib) 6set(SYSTEM_LDFLAGS -L/usr/local/lib)
6if(WITH_ARCH) 7if(WITH_ARCH)
7 set(ARCH ${WITH_ARCH}) 8 set(ARCH ${WITH_ARCH})
@@ -30,4 +31,4 @@ if(NOT ENABLE_ALSA)
30endif() 31endif()
31 32
32# Additional SYSTEM_DEFINES 33# Additional SYSTEM_DEFINES
33list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK) 34list(APPEND SYSTEM_DEFINES -DHAS_POSIX_NETWORK -DHAS_FREEBSD_NETWORK)
diff --git a/cmake/scripts/ios/Install.cmake b/cmake/scripts/ios/Install.cmake
deleted file mode 100644
index 7668e7c..0000000
--- a/cmake/scripts/ios/Install.cmake
+++ /dev/null
@@ -1,99 +0,0 @@
1# IOS packaging
2
3set(BUNDLE_RESOURCES ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1100-Landscape-2436h@3x.png
4 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1100-Portrait-2436h@3x.png
5 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Landscape-1792h@2x.png
6 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Portrait-2224h@2x.png
7 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Landscape-2224h@2x.png
8 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Portrait-2388h@2x.png
9 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Landscape-2388h@2x.png
10 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Landscape-2688h@3x.png
11 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Portrait-1792h@2x.png
12 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-1200-Portrait-2688h@3x.png
13 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-568h@2x.png
14 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-700-568h@2x.png
15 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-700-Landscape@2x~ipad.png
16 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-700-Portrait@2x~ipad.png
17 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-700@2x.png
18 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-800-667h@2x.png
19 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-800-Landscape-736h@3x.png
20 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-800-Portrait-736h@3x.png
21 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-Landscape@2x~ipad.png
22 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage-Portrait@2x~ipad.png
23 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/LaunchImage@2x.png
24 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon29x29.png
25 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon29x29@2x.png
26 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon40x40.png
27 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon40x40@2x.png
28 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon50x50.png
29 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon50x50@2x.png
30 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon57x57.png
31 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon57x57@2x.png
32 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon60x60.png
33 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon60x60@2x.png
34 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon72x72.png
35 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon72x72@2x.png
36 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon76x76.png
37 ${CMAKE_SOURCE_DIR}/tools/darwin/packaging/media/ios/rounded/AppIcon76x76@2x.png)
38
39target_sources(${APP_NAME_LC} PRIVATE ${BUNDLE_RESOURCES})
40foreach(file IN LISTS BUNDLE_RESOURCES)
41 set_source_files_properties(${file} PROPERTIES MACOSX_PACKAGE_LOCATION .)
42endforeach()
43
44target_sources(${APP_NAME_LC} PRIVATE ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/English.lproj/InfoPlist.strings)
45set_source_files_properties(${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/ios/English.lproj/InfoPlist.strings PROPERTIES MACOSX_PACKAGE_LOCATION "./English.lproj")
46
47# Options for code signing propagated as env vars to Codesign.command via Xcode
48set(IOS_CODE_SIGN_IDENTITY "" CACHE STRING "Code Sign Identity")
49if(IOS_CODE_SIGN_IDENTITY)
50 set_target_properties(${APP_NAME_LC} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED TRUE
51 XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${IOS_CODE_SIGN_IDENTITY})
52endif()
53
54add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
55 # TODO: Remove in sync with CopyRootFiles-ios expecting the ".bin" file
56 COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${APP_NAME_LC}>
57 $<TARGET_FILE_DIR:${APP_NAME_LC}>/${APP_NAME}.bin
58
59 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/DllPaths_generated.h
60 ${CMAKE_BINARY_DIR}/xbmc/DllPaths_generated.h
61 COMMAND "ACTION=build"
62 "TARGET_BUILD_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.."
63 "TARGET_NAME=${APP_NAME}.app"
64 "APP_NAME=${APP_NAME}"
65 "PRODUCT_NAME=${APP_NAME}"
66 "WRAPPER_EXTENSION=app"
67 "SRCROOT=${CMAKE_BINARY_DIR}"
68 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/CopyRootFiles-ios.command
69 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}"
70 "TARGET_BUILD_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.."
71 "TARGET_NAME=${APP_NAME}.app"
72 "APP_NAME=${APP_NAME}"
73 "PRODUCT_NAME=${APP_NAME}"
74 "FULL_PRODUCT_NAME=${APP_NAME}.app"
75 "WRAPPER_EXTENSION=app"
76 "SRCROOT=${CMAKE_BINARY_DIR}"
77 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-ios.command
78 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}"
79 "NATIVEPREFIX=${NATIVEPREFIX}"
80 "PLATFORM_NAME=${PLATFORM}"
81 "CODESIGNING_FOLDER_PATH=$<TARGET_FILE_DIR:${APP_NAME_LC}>"
82 "BUILT_PRODUCTS_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.."
83 "WRAPPER_NAME=${APP_NAME}.app"
84 "APP_NAME=${APP_NAME}"
85 "CURRENT_ARCH=${ARCH}"
86 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/Codesign.command
87)
88
89set(DEPENDS_ROOT_FOR_XCODE ${NATIVEPREFIX}/..)
90configure_file(${CMAKE_SOURCE_DIR}/tools/darwin/packaging/ios/mkdeb-ios.sh.in
91 ${CMAKE_BINARY_DIR}/tools/darwin/packaging/ios/mkdeb-ios.sh @ONLY)
92configure_file(${CMAKE_SOURCE_DIR}/tools/darwin/packaging/migrate_to_kodi_ios.sh.in
93 ${CMAKE_BINARY_DIR}/tools/darwin/packaging/migrate_to_kodi_ios.sh @ONLY)
94
95add_custom_target(deb
96 COMMAND sh ./mkdeb-ios.sh ${CORE_BUILD_CONFIG}
97 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/tools/darwin/packaging/ios)
98add_dependencies(deb ${APP_NAME_LC})
99
diff --git a/cmake/scripts/ios/Macros.cmake b/cmake/scripts/ios/Macros.cmake
deleted file mode 120000
index 54c1b28..0000000
--- a/cmake/scripts/ios/Macros.cmake
+++ /dev/null
@@ -1 +0,0 @@
1../osx/Macros.cmake \ No newline at end of file
diff --git a/cmake/scripts/ios/PathSetup.cmake b/cmake/scripts/ios/PathSetup.cmake
deleted file mode 120000
index d7f25b2..0000000
--- a/cmake/scripts/ios/PathSetup.cmake
+++ /dev/null
@@ -1 +0,0 @@
1../osx/PathSetup.cmake \ No newline at end of file
diff --git a/cmake/scripts/linux/ArchSetup.cmake b/cmake/scripts/linux/ArchSetup.cmake
index 602ef3d..04fc6e3 100644
--- a/cmake/scripts/linux/ArchSetup.cmake
+++ b/cmake/scripts/linux/ArchSetup.cmake
@@ -1,8 +1,8 @@
1# we always want to use GNU features if available, so set _GNU_SOURCE 1# we always want to use GNU features if available, so set _GNU_SOURCE
2set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_LINUX -D_GNU_SOURCE) 2set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_LINUX -D_GNU_SOURCE)
3set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_FILE_DEFINED 3set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_FILE_OFFSET_BITS=64)
4 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64)
5set(PLATFORM_DIR platform/linux) 4set(PLATFORM_DIR platform/linux)
5set(PLATFORMDEFS_DIR platform/posix)
6set(CMAKE_SYSTEM_NAME Linux) 6set(CMAKE_SYSTEM_NAME Linux)
7if(WITH_ARCH) 7if(WITH_ARCH)
8 set(ARCH ${WITH_ARCH}) 8 set(ARCH ${WITH_ARCH})
@@ -84,10 +84,27 @@ endif()
84include(LDGOLD) 84include(LDGOLD)
85 85
86include(CheckIncludeFiles) 86include(CheckIncludeFiles)
87check_include_files("linux/memfd.h" HAVE_LINUX_MEMFD) 87check_include_files("linux/udmabuf.h" HAVE_LINUX_UDMABUF)
88if(HAVE_LINUX_MEMFD) 88if(HAVE_LINUX_UDMABUF)
89 list(APPEND ARCH_DEFINES "-DHAVE_LINUX_MEMFD=1") 89 list(APPEND ARCH_DEFINES "-DHAVE_LINUX_UDMABUF=1")
90else()
91 message(STATUS "include/linux/udmabuf.h not found")
92endif()
93
94check_include_files("linux/dma-heap.h" HAVE_LINUX_DMA_HEAP)
95if(HAVE_LINUX_DMA_HEAP)
96 list(APPEND ARCH_DEFINES "-DHAVE_LINUX_DMA_HEAP=1")
97else()
98 message(STATUS "include/linux/dma-heap.h not found")
99endif()
100
101check_include_files("linux/dma-buf.h" HAVE_LINUX_DMA_BUF)
102if(HAVE_LINUX_DMA_BUF)
103 list(APPEND ARCH_DEFINES "-DHAVE_LINUX_DMA_BUF=1")
104else()
105 message(STATUS "include/linux/dma-buf.h not found")
90endif() 106endif()
107
91include(CheckSymbolExists) 108include(CheckSymbolExists)
92set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE") 109set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
93check_symbol_exists("mkostemp" "stdlib.h" HAVE_MKOSTEMP) 110check_symbol_exists("mkostemp" "stdlib.h" HAVE_MKOSTEMP)
@@ -96,8 +113,17 @@ if(HAVE_MKOSTEMP)
96 list(APPEND ARCH_DEFINES "-DHAVE_MKOSTEMP=1") 113 list(APPEND ARCH_DEFINES "-DHAVE_MKOSTEMP=1")
97endif() 114endif()
98 115
116set(CMAKE_REQUIRED_DEFINITIONS "-D_GNU_SOURCE")
117check_symbol_exists("memfd_create" "sys/mman.h" HAVE_LINUX_MEMFD)
118set(CMAKE_REQUIRED_DEFINITIONS "")
119if(HAVE_LINUX_MEMFD)
120 list(APPEND ARCH_DEFINES "-DHAVE_LINUX_MEMFD=1")
121else()
122 message(STATUS "memfd_create() not found")
123endif()
124
99# Additional SYSTEM_DEFINES 125# Additional SYSTEM_DEFINES
100list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK) 126list(APPEND SYSTEM_DEFINES -DHAS_POSIX_NETWORK -DHAS_LINUX_NETWORK)
101 127
102# Code Coverage 128# Code Coverage
103if(CMAKE_BUILD_TYPE STREQUAL Coverage) 129if(CMAKE_BUILD_TYPE STREQUAL Coverage)
diff --git a/cmake/scripts/osx/ArchSetup.cmake b/cmake/scripts/osx/ArchSetup.cmake
index 74f2ed4..7d8f58b 100644
--- a/cmake/scripts/osx/ArchSetup.cmake
+++ b/cmake/scripts/osx/ArchSetup.cmake
@@ -6,10 +6,11 @@ set(CORE_MAIN_SOURCE ${CMAKE_SOURCE_DIR}/xbmc/platform/posix/main.cpp
6 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/osx/SDLMain.mm 6 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/osx/SDLMain.mm
7 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/osx/SDLMain.h) 7 ${CMAKE_SOURCE_DIR}/xbmc/platform/darwin/osx/SDLMain.h)
8 8
9set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX) 9set(ARCH_DEFINES -DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX)
10set(SYSTEM_DEFINES -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE 10set(SYSTEM_DEFINES -D_REENTRANT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
11 -D__STDC_CONSTANT_MACROS) 11 -D__STDC_CONSTANT_MACROS)
12set(PLATFORM_DIR platform/linux) 12set(PLATFORM_DIR platform/darwin)
13set(PLATFORMDEFS_DIR platform/posix)
13set(CMAKE_SYSTEM_NAME Darwin) 14set(CMAKE_SYSTEM_NAME Darwin)
14if(WITH_ARCH) 15if(WITH_ARCH)
15 set(ARCH ${WITH_ARCH}) 16 set(ARCH ${WITH_ARCH})
@@ -23,7 +24,7 @@ else()
23endif() 24endif()
24 25
25# Additional SYSTEM_DEFINES 26# Additional SYSTEM_DEFINES
26list(APPEND SYSTEM_DEFINES -DHAS_LINUX_NETWORK -DHAS_SDL -DHAS_ZEROCONF) 27list(APPEND SYSTEM_DEFINES -DHAS_POSIX_NETWORK -DHAS_OSX_NETWORK -DHAS_SDL -DHAS_ZEROCONF)
27 28
28list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${NATIVEPREFIX}) 29list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${NATIVEPREFIX})
29 30
@@ -32,7 +33,10 @@ list(APPEND DEPLIBS "-framework DiskArbitration" "-framework IOKit"
32 "-framework ApplicationServices" "-framework AppKit" 33 "-framework ApplicationServices" "-framework AppKit"
33 "-framework CoreAudio" "-framework AudioToolbox" 34 "-framework CoreAudio" "-framework AudioToolbox"
34 "-framework CoreGraphics" "-framework CoreMedia" 35 "-framework CoreGraphics" "-framework CoreMedia"
35 "-framework VideoToolbox") 36 "-framework VideoToolbox" "-framework Security")
36 37
37set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9) 38set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13)
38set(CMAKE_XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME OFF) 39set(CMAKE_XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME OFF)
40
41include(cmake/scripts/darwin/Macros.cmake)
42enable_arc()
diff --git a/cmake/scripts/osx/Install.cmake b/cmake/scripts/osx/Install.cmake
index 77c771c..aca31b4 100644
--- a/cmake/scripts/osx/Install.cmake
+++ b/cmake/scripts/osx/Install.cmake
@@ -22,6 +22,7 @@ add_custom_target(bundle
22 "APP_NAME=${APP_NAME}" 22 "APP_NAME=${APP_NAME}"
23 "FULL_PRODUCT_NAME=${APP_NAME}.app" 23 "FULL_PRODUCT_NAME=${APP_NAME}.app"
24 "SRCROOT=${CMAKE_BINARY_DIR}" 24 "SRCROOT=${CMAKE_BINARY_DIR}"
25 "PYTHON_VERSION=${PYTHON_VERSION}"
25 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-osx.command) 26 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-osx.command)
26set_target_properties(bundle PROPERTIES FOLDER "Build Utilities") 27set_target_properties(bundle PROPERTIES FOLDER "Build Utilities")
27add_dependencies(bundle ${APP_NAME_LC}) 28add_dependencies(bundle ${APP_NAME_LC})
diff --git a/cmake/scripts/osx/Macros.cmake b/cmake/scripts/osx/Macros.cmake
index 52f87d1..251cc79 100644
--- a/cmake/scripts/osx/Macros.cmake
+++ b/cmake/scripts/osx/Macros.cmake
@@ -20,7 +20,7 @@ function(core_link_library lib wraplib)
20 20
21 # iOS: EFFECTIVE_PLATFORM_NAME is not resolved 21 # iOS: EFFECTIVE_PLATFORM_NAME is not resolved
22 # http://public.kitware.com/pipermail/cmake/2016-March/063049.html 22 # http://public.kitware.com/pipermail/cmake/2016-March/063049.html
23 if(CORE_SYSTEM_NAME STREQUAL ios AND CMAKE_GENERATOR STREQUAL Xcode) 23 if(CORE_SYSTEM_NAME STREQUAL darwin_embedded)
24 get_target_property(dir ${lib} BINARY_DIR) 24 get_target_property(dir ${lib} BINARY_DIR)
25 set(link_lib ${dir}/${CORE_BUILD_CONFIG}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX}) 25 set(link_lib ${dir}/${CORE_BUILD_CONFIG}/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX})
26 endif() 26 endif()
diff --git a/cmake/scripts/windows/ArchSetup.cmake b/cmake/scripts/windows/ArchSetup.cmake
index 032632c..f3628f2 100644
--- a/cmake/scripts/windows/ArchSetup.cmake
+++ b/cmake/scripts/windows/ArchSetup.cmake
@@ -35,7 +35,6 @@ set(MINGW_LIBS_DIR ${CMAKE_SOURCE_DIR}/${DEPS_FOLDER_RELATIVE}/mingwlibs/${ARCH}
35list(APPEND CMAKE_PREFIX_PATH ${MINGW_LIBS_DIR}) 35list(APPEND CMAKE_PREFIX_PATH ${MINGW_LIBS_DIR})
36list(APPEND CMAKE_LIBRARY_PATH ${MINGW_LIBS_DIR}/bin) 36list(APPEND CMAKE_LIBRARY_PATH ${MINGW_LIBS_DIR}/bin)
37list(APPEND CMAKE_PREFIX_PATH ${DEPENDENCIES_DIR}) 37list(APPEND CMAKE_PREFIX_PATH ${DEPENDENCIES_DIR})
38set(PYTHON_INCLUDE_DIR ${DEPENDENCIES_DIR}/include/python)
39 38
40# -------- Compiler options --------- 39# -------- Compiler options ---------
41 40
@@ -46,12 +45,9 @@ set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_M
46 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi" 45 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi"
47 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi" 46 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi"
48 -DUNICODE -D_UNICODE 47 -DUNICODE -D_UNICODE
48 -DFRIBIDI_STATIC
49 $<$<CONFIG:Debug>:-DD3D_DEBUG_INFO>) 49 $<$<CONFIG:Debug>:-DD3D_DEBUG_INFO>)
50 50
51if(${ARCH} STREQUAL win32)
52 list(APPEND SYSTEM_DEFINES $<$<CONFIG:Debug>:-D_ITERATOR_DEBUG_LEVEL=0>)
53endif()
54
55# Additional SYSTEM_DEFINES 51# Additional SYSTEM_DEFINES
56list(APPEND SYSTEM_DEFINES -DHAS_WIN32_NETWORK -DHAS_FILESYSTEM_SMB) 52list(APPEND SYSTEM_DEFINES -DHAS_WIN32_NETWORK -DHAS_FILESYSTEM_SMB)
57 53
@@ -74,7 +70,8 @@ link_directories(${DEPENDENCIES_DIR}/lib)
74 70
75# Additional libraries 71# Additional libraries
76list(APPEND DEPLIBS bcrypt.lib d3d11.lib DInput8.lib DSound.lib winmm.lib Mpr.lib Iphlpapi.lib WS2_32.lib 72list(APPEND DEPLIBS bcrypt.lib d3d11.lib DInput8.lib DSound.lib winmm.lib Mpr.lib Iphlpapi.lib WS2_32.lib
77 PowrProf.lib setupapi.lib Shlwapi.lib dwmapi.lib dxguid.lib DelayImp.lib) 73 PowrProf.lib setupapi.lib Shlwapi.lib dwmapi.lib dxguid.lib DelayImp.lib version.lib
74 crypt32.lib Mfplat.lib Mfuuid.lib Strmiids.lib)
78 75
79# NODEFAULTLIB option 76# NODEFAULTLIB option
80set(_nodefaultlibs_RELEASE libcmt) 77set(_nodefaultlibs_RELEASE libcmt)
@@ -87,7 +84,7 @@ foreach(_lib ${_nodefaultlibs_DEBUG})
87endforeach() 84endforeach()
88 85
89# DELAYLOAD option 86# DELAYLOAD option
90set(_delayloadlibs zlib.dll libmysql.dll libxslt.dll dnssd.dll dwmapi.dll sqlite3.dll 87set(_delayloadlibs zlib.dll libmariadb.dll libxslt.dll dnssd.dll dwmapi.dll sqlite3.dll
91 d3dcompiler_47.dll) 88 d3dcompiler_47.dll)
92foreach(_lib ${_delayloadlibs}) 89foreach(_lib ${_delayloadlibs})
93 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:\"${_lib}\"") 90 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:\"${_lib}\"")
diff --git a/cmake/scripts/windowsstore/ArchSetup.cmake b/cmake/scripts/windowsstore/ArchSetup.cmake
index 2e6d7cb..ad55a01 100644
--- a/cmake/scripts/windowsstore/ArchSetup.cmake
+++ b/cmake/scripts/windowsstore/ArchSetup.cmake
@@ -53,8 +53,6 @@ list(APPEND CMAKE_PREFIX_PATH ${MINGW_LIBS_DIR})
53list(APPEND CMAKE_LIBRARY_PATH ${MINGW_LIBS_DIR}/bin) 53list(APPEND CMAKE_LIBRARY_PATH ${MINGW_LIBS_DIR}/bin)
54# dependencies 54# dependencies
55list(APPEND CMAKE_PREFIX_PATH ${DEPENDENCIES_DIR}) 55list(APPEND CMAKE_PREFIX_PATH ${DEPENDENCIES_DIR})
56# for python
57set(PYTHON_INCLUDE_DIR ${DEPENDENCIES_DIR}/include/python)
58 56
59 57
60# -------- Compiler options --------- 58# -------- Compiler options ---------
@@ -64,22 +62,24 @@ add_options(CXX ALL_BUILDS "/wd\"4146\"")
64add_options(CXX ALL_BUILDS "/wd\"4251\"") 62add_options(CXX ALL_BUILDS "/wd\"4251\"")
65add_options(CXX ALL_BUILDS "/wd\"4668\"") 63add_options(CXX ALL_BUILDS "/wd\"4668\"")
66add_options(CXX ALL_BUILDS "/wd\"5033\"") 64add_options(CXX ALL_BUILDS "/wd\"5033\"")
67set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_STORE -DXBMC_EXPORT -DMS_UWP) 65set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_STORE -DXBMC_EXPORT -DMS_UWP -DMS_STORE)
68if(NOT SDK_TARGET_ARCH STREQUAL arm) 66if(NOT SDK_TARGET_ARCH STREQUAL arm)
69 list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__) 67 list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__)
70endif() 68endif()
71set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS 69set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS
72 -DFMT_HEADER_ONLY -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING 70 -DTAGLIB_STATIC -DNPT_CONFIG_ENABLE_LOGGING
73 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi" 71 -DPLT_HTTP_DEFAULT_USER_AGENT="UPnP/1.0 DLNADOC/1.50 Kodi"
74 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi" 72 -DPLT_HTTP_DEFAULT_SERVER="UPnP/1.0 DLNADOC/1.50 Kodi"
75 -DUNICODE -D_UNICODE 73 -DUNICODE -D_UNICODE
74 -DFRIBIDI_STATIC
76 $<$<CONFIG:Debug>:-DD3D_DEBUG_INFO>) 75 $<$<CONFIG:Debug>:-DD3D_DEBUG_INFO>)
77 76
78# Additional SYSTEM_DEFINES 77# Additional SYSTEM_DEFINES
79list(APPEND SYSTEM_DEFINES -DHAS_WIN10_NETWORK) 78list(APPEND SYSTEM_DEFINES -DHAS_WIN10_NETWORK)
80 79
81# The /MP option enables /FS by default. 80# The /MP option enables /FS by default.
82set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /EHsc /await /std:c++latest") 81set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /EHsc /await")
82set(CMAKE_CXX_STANDARD 17)
83# Google Test needs to use shared version of runtime libraries 83# Google Test needs to use shared version of runtime libraries
84set(gtest_force_shared_crt ON CACHE STRING "" FORCE) 84set(gtest_force_shared_crt ON CACHE STRING "" FORCE)
85 85
@@ -91,7 +91,8 @@ set(gtest_force_shared_crt ON CACHE STRING "" FORCE)
91link_directories(${MINGW_LIBS_DIR}/lib 91link_directories(${MINGW_LIBS_DIR}/lib
92 ${DEPENDENCIES_DIR}/lib) 92 ${DEPENDENCIES_DIR}/lib)
93 93
94list(APPEND DEPLIBS bcrypt.lib d3d11.lib WS2_32.lib dxguid.lib dloadhelper.lib WindowsApp.lib) 94list(APPEND DEPLIBS bcrypt.lib d3d11.lib WS2_32.lib dxguid.lib dloadhelper.lib WindowsApp.lib
95 Mfplat.lib Mfuuid.lib Strmiids.lib)
95 96
96set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /WINMD:NO") 97set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /WINMD:NO")
97set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt /DEBUG:FASTLINK /OPT:NOREF /OPT:NOICF") 98set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt /DEBUG:FASTLINK /OPT:NOREF /OPT:NOICF")
diff --git a/cmake/scripts/windowsstore/Macros.cmake b/cmake/scripts/windowsstore/Macros.cmake
index de89c62..c8cb960 100644
--- a/cmake/scripts/windowsstore/Macros.cmake
+++ b/cmake/scripts/windowsstore/Macros.cmake
@@ -112,7 +112,7 @@ endmacro()
112 112
113macro(winstore_append_props target) 113macro(winstore_append_props target)
114 # exclude debug dlls from packaging 114 # exclude debug dlls from packaging
115 set(DEBUG_DLLS zlibd.dll freetyped.dll sqlite3d.dll) 115 set(DEBUG_DLLS zlibd.dll)
116 foreach(_dll ${DEBUG_DLLS}) 116 foreach(_dll ${DEBUG_DLLS})
117 if (DEBUG_DLLS_EXCLUDE) 117 if (DEBUG_DLLS_EXCLUDE)
118 list(APPEND DEBUG_DLLS_EXCLUDE "\;$(BuildRootPath)/dlls/${_dll}") 118 list(APPEND DEBUG_DLLS_EXCLUDE "\;$(BuildRootPath)/dlls/${_dll}")