aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
authorwsnipex <wsnipex@a1.net>2015-05-25 09:30:24 +0200
committerwsnipex <wsnipex@a1.net>2015-05-31 09:34:39 +0200
commit60eb0b2bc81121438e23e9c19715118e70aa3304 (patch)
treed74689edad2ced27bbdc1dc25f038a3621355a89 /project
parent0f1aea5f0c1991b75c15955d55f5518614e70fe1 (diff)
[binary addons] use kodi core install paths by default
Diffstat (limited to 'project')
-rw-r--r--project/cmake/addons/CMakeLists.txt12
-rw-r--r--project/cmake/kodi-config.cmake.in8
-rw-r--r--project/cmake/scripts/common/addon-helpers.cmake18
-rw-r--r--project/cmake/scripts/common/prepare-env.cmake25
4 files changed, 38 insertions, 25 deletions
diff --git a/project/cmake/addons/CMakeLists.txt b/project/cmake/addons/CMakeLists.txt
index 070c7c7532..54f73d0c20 100644
--- a/project/cmake/addons/CMakeLists.txt
+++ b/project/cmake/addons/CMakeLists.txt
@@ -101,12 +101,14 @@ if(ADDON_SRC_PREFIX)
message(STATUS "Overriding addon source directory prefix: ${ADDON_SRC_PREFIX}")
endif()
-if(NOT KODI_LIB_DIR)
- set(KODI_LIB_DIR "${DEPENDS_PATH}/lib/kodi")
+if(NOT APP_LIB_DIR)
+ set(APP_LIB_DIR "${DEPENDS_PATH}/lib/kodi")
else()
- file(TO_CMAKE_PATH "${KODI_LIB_DIR}" KODI_LIB_DIR)
+ file(TO_CMAKE_PATH "${APP_LIB_DIR}" APP_LIB_DIR)
endif()
+set(APP_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
# check for platform specific stuff
if(EXISTS ${PLATFORM_DIR}/defines.txt)
file(STRINGS ${PLATFORM_DIR}/defines.txt platformdefines)
@@ -130,10 +132,10 @@ endif()
### prepare the build environment for the binary addons
# copy the prepare-env.cmake script to the depends path so that we can include it
-file(COPY ${APP_ROOT}/project/cmake/scripts/common/prepare-env.cmake DESTINATION ${KODI_LIB_DIR})
+file(COPY ${APP_ROOT}/project/cmake/scripts/common/prepare-env.cmake DESTINATION ${APP_LIB_DIR})
# add the location of prepare-env.cmake to CMAKE_MODULE_PATH so that it is found
-list(APPEND CMAKE_MODULE_PATH ${KODI_LIB_DIR})
+list(APPEND CMAKE_MODULE_PATH ${APP_LIB_DIR})
# include prepare-env.cmake which contains the logic to install the addon header bindings etc
include(prepare-env)
diff --git a/project/cmake/kodi-config.cmake.in b/project/cmake/kodi-config.cmake.in
index bd7065c009..76626ec123 100644
--- a/project/cmake/kodi-config.cmake.in
+++ b/project/cmake/kodi-config.cmake.in
@@ -1,11 +1,15 @@
-SET(KODI_INCLUDE_DIR @prefix@/include)
SET(APP_NAME @APP_NAME@)
+SET(APP_NAME_LC @APP_NAME_LC@)
+SET(APP_NAME_UC @APP_NAME_UC@)
SET(APP_VERSION_MAJOR @APP_VERSION_MAJOR@)
SET(APP_VERSION_MINOR @APP_VERSION_MINOR@)
+SET(@APP_NAME_UC@_PREFIX @APP_PREFIX@)
+SET(@APP_NAME_UC@_INCLUDE_DIR @APP_INCLUDE_DIR@)
+SET(@APP_NAME_UC@_LIB_DIR @APP_LIB_DIR@)
IF(NOT WIN32)
SET(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} @CXX11_SWITCH@")
ENDIF()
-LIST(APPEND CMAKE_MODULE_PATH @APP_LIBDIR@/@APP_NAME_LC@)
+LIST(APPEND CMAKE_MODULE_PATH @APP_LIB_DIR@)
ADD_DEFINITIONS(@ARCH_DEFINES@ -DBUILD_KODI_ADDON)
include(addon-helpers)
diff --git a/project/cmake/scripts/common/addon-helpers.cmake b/project/cmake/scripts/common/addon-helpers.cmake
index fa42b4b184..c44266ca19 100644
--- a/project/cmake/scripts/common/addon-helpers.cmake
+++ b/project/cmake/scripts/common/addon-helpers.cmake
@@ -77,12 +77,22 @@ macro (build_addon target prefix libs)
add_cpack_workaround(${target} ${${prefix}_VERSION} ${ext})
ELSE(PACKAGE_ZIP OR PACKAGE_TGZ)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- include(UseMultiArch)
+ if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT OR NOT CMAKE_INSTALL_PREFIX)
+ message(STATUS "setting install paths to match ${APP_NAME}: CMAKE_INSTALL_PREFIX: ${${APP_NAME_UC}_PREFIX}")
+ set(CMAKE_INSTALL_PREFIX "${${APP_NAME_UC}_PREFIX}" CACHE PATH "${APP_NAME} install prefix" FORCE)
+ set(CMAKE_INSTALL_LIBDIR "${${APP_NAME_UC}_LIB_DIR}" CACHE PATH "${APP_NAME} install libdir" FORCE)
+ elseif(NOT CMAKE_INSTALL_PREFIX STREQUAL "${${APP_NAME_UC}_PREFIX}" AND NOT OVERRIDE_PATHS)
+ message(FATAL_ERROR "CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} differs from ${APP_NAME} prefix ${${APP_NAME_UC}_PREFIX}. Please pass -DOVERRIDE_PATHS=1 to skip this check")
+ else()
+ if(NOT CMAKE_INSTALL_LIBDIR)
+ set(CMAKE_INSTALL_LIBDIR "${CMAKE_INSTALL_PREFIX}/lib/${APP_NAME_LC}")
+ endif()
+ endif()
else()
- set(CMAKE_INSTALL_LIBDIR "lib")
+ set(CMAKE_INSTALL_LIBDIR "lib/${APP_NAME_LC}")
endif()
- INSTALL(TARGETS ${target} DESTINATION ${CMAKE_INSTALL_LIBDIR}/kodi/addons/${target})
- INSTALL(DIRECTORY ${target} DESTINATION share/kodi/addons)
+ INSTALL(TARGETS ${target} DESTINATION ${CMAKE_INSTALL_LIBDIR}/addons/${target})
+ INSTALL(DIRECTORY ${target} DESTINATION share/${APP_NAME_LC}/addons)
ENDIF(PACKAGE_ZIP OR PACKAGE_TGZ)
endmacro()
diff --git a/project/cmake/scripts/common/prepare-env.cmake b/project/cmake/scripts/common/prepare-env.cmake
index a616ed8400..455ad512ff 100644
--- a/project/cmake/scripts/common/prepare-env.cmake
+++ b/project/cmake/scripts/common/prepare-env.cmake
@@ -13,6 +13,7 @@ if(EXISTS "${APP_ROOT}/version.txt")
endif()
endforeach()
string(TOLOWER ${APP_NAME} APP_NAME_LC)
+ string(TOUPPER ${APP_NAME} APP_NAME_UC)
endif()
# bail if we can't parse versions
@@ -22,14 +23,14 @@ endif()
### copy all the addon binding header files to include/kodi
# make sure include/kodi exists and is empty
-set(KODI_LIB_DIR ${DEPENDS_PATH}/lib/kodi)
-if(NOT EXISTS "${KODI_LIB_DIR}/")
- file(MAKE_DIRECTORY ${KODI_LIB_DIR})
+set(APP_LIB_DIR ${DEPENDS_PATH}/lib/${APP_NAME_LC})
+if(NOT EXISTS "${APP_LIB_DIR}/")
+ file(MAKE_DIRECTORY ${APP_LIB_DIR})
endif()
-set(KODI_INCLUDE_DIR ${DEPENDS_PATH}/include/kodi)
-if(NOT EXISTS "${KODI_INCLUDE_DIR}/")
- file(MAKE_DIRECTORY ${KODI_INCLUDE_DIR})
+set(APP_INCLUDE_DIR ${DEPENDS_PATH}/include/${APP_NAME_LC})
+if(NOT EXISTS "${APP_INCLUDE_DIR}/")
+ file(MAKE_DIRECTORY ${APP_INCLUDE_DIR})
endif()
# we still need XBMC_INCLUDE_DIR and XBMC_LIB_DIR for backwards compatibility to xbmc
@@ -50,20 +51,16 @@ if(NOT WIN32)
endif()
endif()
-# kodi-config.cmake.in (further down) expects "prefix" and "APP_LIBDIR" variables
-get_filename_component(prefix "${DEPENDS_PATH}" ABSOLUTE)
-set(APP_LIBDIR "${prefix}/lib")
-
# generate the proper kodi-config.cmake file
-configure_file(${APP_ROOT}/project/cmake/kodi-config.cmake.in ${KODI_LIB_DIR}/kodi-config.cmake @ONLY)
+configure_file(${APP_ROOT}/project/cmake/kodi-config.cmake.in ${APP_LIB_DIR}/kodi-config.cmake @ONLY)
# copy cmake helpers to lib/kodi
file(COPY ${APP_ROOT}/project/cmake/scripts/common/addon-helpers.cmake
${APP_ROOT}/project/cmake/scripts/common/addoptions.cmake
- DESTINATION ${KODI_LIB_DIR})
+ DESTINATION ${APP_LIB_DIR})
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- file(COPY ${APP_ROOT}/project/cmake/scripts/linux/UseMultiArch.cmake DESTINATION ${KODI_LIB_DIR})
+ file(COPY ${APP_ROOT}/project/cmake/scripts/linux/UseMultiArch.cmake DESTINATION ${APP_LIB_DIR})
endif()
# generate xbmc-config.cmake for backwards compatibility to xbmc
@@ -78,7 +75,7 @@ foreach(binding ${bindings})
string(REPLACE "+=" ";" binding "${binding}")
list(GET binding 1 header)
# copy the header file to include/kodi
- file(COPY ${APP_ROOT}/${header} DESTINATION ${KODI_INCLUDE_DIR})
+ file(COPY ${APP_ROOT}/${header} DESTINATION ${APP_INCLUDE_DIR})
# auto-generate header files for backwards compatibility to xbmc with deprecation warning
# but only do it if the file doesn't already exist