Skip to content

Commit

Permalink
Merge pull request xbmc#7192 from wsnipex/linux-addon-libpath
Browse files Browse the repository at this point in the history
[binary addons] linux: use the same install paths as kodi core
  • Loading branch information
wsnipex committed Jun 1, 2015
2 parents cdd0fee + d270b64 commit 65cb85c
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 77 deletions.
3 changes: 0 additions & 3 deletions Makefile.in
Expand Up @@ -624,9 +624,6 @@ endif
@for f in project/cmake/scripts/common/*.cmake; do \
install -m 0644 $$f $(DESTDIR)$(libdir)/@APP_NAME_LC@; \
done
ifeq ($(findstring linux,@host@),linux)
install -m 0644 project/cmake/scripts/linux/UseMultiArch.cmake $(DESTDIR)$(libdir)/@APP_NAME_LC@
endif
@cd $(DESTDIR)$(includedir); [ -L xbmc ] || [ -d xbmc ] || ln -s @APP_NAME_LC@ xbmc

uninstall:
Expand Down
10 changes: 8 additions & 2 deletions configure.ac
Expand Up @@ -119,6 +119,7 @@ AC_DEFUN([XB_PUSH_FLAGS], [
# version can be overridden by setting the following as ENV vars when running configure
APP_NAME=${APP_NAME-$(${AWK} '/APP_NAME/ {print $2}' version.txt)}
APP_NAME_LC=$(echo $APP_NAME | ${AWK} '{print tolower($0)}')
APP_NAME_UC=$(echo $APP_NAME | ${AWK} '{print toupper($0)}')
APP_VERSION_MAJOR=${APP_VERSION_MAJOR-$(${AWK} '/VERSION_MAJOR/ {print $2}' version.txt)}
APP_VERSION_MINOR=${APP_VERSION_MINOR-$(${AWK} '/VERSION_MINOR/ {print $2}' version.txt)}
APP_VERSION_TAG=${APP_VERSION_TAG-$(${AWK} '/VERSION_TAG/ {print $2}' version.txt)}
Expand All @@ -134,6 +135,7 @@ if test "$APP_NAME" != "" && test "$APP_VERSION_MAJOR" != "" && test "$APP_VERSI

AC_SUBST(APP_NAME)
AC_SUBST(APP_NAME_LC)
AC_SUBST(APP_NAME_UC)
AC_SUBST(APP_VERSION)
AC_SUBST(APP_VERSION_MAJOR)
AC_SUBST(APP_VERSION_MINOR)
Expand Down Expand Up @@ -2560,8 +2562,12 @@ if echo "$libdir" | grep -q '${exec_prefix}'; then
exec_prefix=${prefix}
fi
fi
eval "APP_LIBDIR=${libdir}"
AC_SUBST(APP_LIBDIR)
eval "APP_PREFIX=${prefix}"
eval "APP_LIB_DIR=${libdir}/${APP_NAME_LC}"
eval "APP_INCLUDE_DIR=${includedir}/${APP_NAME_LC}"
AC_SUBST(APP_PREFIX)
AC_SUBST(APP_LIB_DIR)
AC_SUBST(APP_INCLUDE_DIR)

# Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
# .dummy.am does nothing.
Expand Down
12 changes: 7 additions & 5 deletions project/cmake/addons/CMakeLists.txt
Expand Up @@ -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)
Expand All @@ -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)
Expand Down
8 changes: 6 additions & 2 deletions 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)
18 changes: 14 additions & 4 deletions project/cmake/scripts/common/addon-helpers.cmake
Expand Up @@ -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()

Expand Down
27 changes: 10 additions & 17 deletions project/cmake/scripts/common/prepare-env.cmake
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -50,21 +51,13 @@ 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})

if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
file(COPY ${APP_ROOT}/project/cmake/scripts/linux/UseMultiArch.cmake DESTINATION ${KODI_LIB_DIR})
endif()
DESTINATION ${APP_LIB_DIR})

# generate xbmc-config.cmake for backwards compatibility to xbmc
configure_file(${APP_ROOT}/project/cmake/xbmc-config.cmake.in ${XBMC_LIB_DIR}/xbmc-config.cmake @ONLY)
Expand All @@ -78,7 +71,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
Expand Down
44 changes: 0 additions & 44 deletions project/cmake/scripts/linux/UseMultiArch.cmake

This file was deleted.

0 comments on commit 65cb85c

Please sign in to comment.