diff options
author | wsnipex <wsnipex@a1.net> | 2015-05-25 09:30:24 +0200 |
---|---|---|
committer | wsnipex <wsnipex@a1.net> | 2015-05-31 09:34:39 +0200 |
commit | 60eb0b2bc81121438e23e9c19715118e70aa3304 (patch) | |
tree | d74689edad2ced27bbdc1dc25f038a3621355a89 /project | |
parent | 0f1aea5f0c1991b75c15955d55f5518614e70fe1 (diff) |
[binary addons] use kodi core install paths by default
Diffstat (limited to 'project')
-rw-r--r-- | project/cmake/addons/CMakeLists.txt | 12 | ||||
-rw-r--r-- | project/cmake/kodi-config.cmake.in | 8 | ||||
-rw-r--r-- | project/cmake/scripts/common/addon-helpers.cmake | 18 | ||||
-rw-r--r-- | project/cmake/scripts/common/prepare-env.cmake | 25 |
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 |