summaryrefslogtreecommitdiffstats
path: root/project/cmake/scripts/linux
diff options
context:
space:
mode:
Diffstat (limited to 'project/cmake/scripts/linux')
-rw-r--r--project/cmake/scripts/linux/archsetup.cmake21
-rw-r--r--project/cmake/scripts/linux/install.cmake93
-rw-r--r--project/cmake/scripts/linux/macros.cmake79
-rw-r--r--project/cmake/scripts/linux/pathsetup.cmake34
4 files changed, 227 insertions, 0 deletions
diff --git a/project/cmake/scripts/linux/archsetup.cmake b/project/cmake/scripts/linux/archsetup.cmake
new file mode 100644
index 0000000..d0e149e
--- /dev/null
+++ b/project/cmake/scripts/linux/archsetup.cmake
@@ -0,0 +1,21 @@
1set(ARCH_DEFINES -D_LINUX -DTARGET_POSIX -DTARGET_LINUX)
2set(SYSTEM_DEFINES -D__STDC_CONSTANT_MACROS -D_FILE_DEFINED
3 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64)
4set(PLATFORM_DIR linux)
5set(CMAKE_SYSTEM_NAME Linux)
6if(WITH_ARCH)
7 set(ARCH ${WITH_ARCH})
8else()
9 if(CPU STREQUAL x86_64)
10 set(ARCH x86_64-linux)
11 elseif(CPU MATCHES "i.86")
12 set(ARCH i486-linux)
13 else()
14 message(SEND_ERROR "Unknown CPU: ${CPU}")
15 endif()
16endif()
17
18find_package(CXX11 REQUIRED)
19
20set(LIRC_DEVICE "\"/dev/lircd\"" CACHE STRING "LIRC device to use")
21set(DEP_DEFINES -DLIRC_DEVICE=${LIRC_DEVICE})
diff --git a/project/cmake/scripts/linux/install.cmake b/project/cmake/scripts/linux/install.cmake
new file mode 100644
index 0000000..b887610
--- /dev/null
+++ b/project/cmake/scripts/linux/install.cmake
@@ -0,0 +1,93 @@
1if(X_FOUND)
2 set(USE_X11 1)
3else()
4 set(USE_X11 0)
5endif()
6if(OPENGL_FOUND)
7 set(USE_OPENGL 1)
8else()
9 set(USE_OPENGL 0)
10endif()
11if(OPENGLES_FOUND)
12 set(USE_OPENGLES 1)
13else()
14 set(USE_OPENGLES 0)
15endif()
16
17configure_file(${CORE_SOURCE_DIR}/tools/Linux/kodi.sh.in
18 ${CORE_BUILD_DIR}/scripts/${APP_NAME_LC} @ONLY)
19configure_file(${CORE_SOURCE_DIR}/tools/Linux/kodi-standalone.sh.in
20 ${CORE_BUILD_DIR}/scripts/${APP_NAME_LC}-standalone @ONLY)
21
22install(TARGETS ${APP_NAME_LC} DESTINATION ${libdir}/kodi)
23if(ENABLE_X11 AND XRANDR_FOUND)
24 install(TARGETS ${APP_NAME_LC}-xrandr DESTINATION ${libdir}/${APP_NAME_LC})
25endif()
26install(FILES ${addon_bindings} DESTINATION ${includedir}/kodi)
27install(FILES ${cmake-files}
28 DESTINATION ${libdir}/kodi)
29install(PROGRAMS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/scripts/${APP_NAME_LC}
30 ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/scripts/${APP_NAME_LC}-standalone
31 DESTINATION ${bindir})
32
33configure_file(${CORE_SOURCE_DIR}/tools/Linux/kodi-xsession.desktop.in
34 ${CORE_BUILD_DIR}/${APP_NAME_LC}-xsession.desktop)
35install(FILES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${APP_NAME_LC}-xsession.desktop
36 DESTINATION ${datarootdir}/xsessions)
37
38install(FILES ${CORE_SOURCE_DIR}/LICENSE.GPL
39 ${CORE_SOURCE_DIR}/docs/README.linux
40 DESTINATION ${datarootdir}/doc/kodi)
41
42install(FILES ${CORE_SOURCE_DIR}/tools/Linux/kodi.desktop
43 DESTINATION ${datarootdir}/applications)
44
45foreach(texture ${XBT_FILES})
46 string(REPLACE "${CMAKE_BINARY_DIR}/" "" dir ${texture})
47 get_filename_component(dir ${dir} PATH)
48 install(FILES ${texture}
49 DESTINATION ${datarootdir}/kodi/${dir})
50endforeach()
51
52foreach(wraplib ${WRAP_FILES})
53 get_filename_component(dir ${wraplib} PATH)
54 install(PROGRAMS ${CMAKE_BINARY_DIR}/${wraplib}
55 DESTINATION ${libdir}/kodi/${dir})
56endforeach()
57
58foreach(file ${install_data})
59 get_filename_component(dir ${file} PATH)
60 install(FILES ${CMAKE_BINARY_DIR}/${file}
61 DESTINATION ${datarootdir}/kodi/${dir})
62endforeach()
63
64if(EXISTS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/extra-installs)
65 install(CODE "file(STRINGS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/extra-installs dirs)
66 foreach(dir \${dirs})
67 file(GLOB_RECURSE FILES RELATIVE ${CMAKE_BINARY_DIR} \${dir}/*)
68 foreach(file \${FILES})
69 get_filename_component(dir \${file} PATH)
70 file(INSTALL \${file} DESTINATION ${datarootdir}/kodi/\${dir})
71 endforeach()
72 endforeach()")
73endif()
74
75if(NOT "$ENV{DESTDIR}" STREQUAL "")
76 set(DESTDIR ${CMAKE_BINARY_DIR}/$ENV{DESTDIR})
77endif()
78foreach(subdir ${build_dirs})
79 if(NOT subdir MATCHES kodi-platform)
80 string(REPLACE " " ";" subdir ${subdir})
81 list(GET subdir 0 id)
82 install(CODE "execute_process(COMMAND make -C ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${id}/src/${id}-build install DESTDIR=${DESTDIR})")
83 endif()
84endforeach()
85
86install(FILES ${CORE_SOURCE_DIR}/media/icon48x48.png
87 RENAME ${APP_NAME_LC}.png
88 DESTINATION ${datarootdir}/icons/hicolor/48x48/apps)
89install(FILES ${CORE_SOURCE_DIR}/media/icon256x256.png
90 RENAME ${APP_NAME_LC}.png
91 DESTINATION ${datarootdir}/icons/hicolor/256x256/apps)
92
93install(CODE "execute_process(COMMAND gtk-update-icon-cache -f -q -t $ENV{DESTDIR}${datarootdir}/icons/hicolor ERROR_QUIET)")
diff --git a/project/cmake/scripts/linux/macros.cmake b/project/cmake/scripts/linux/macros.cmake
new file mode 100644
index 0000000..7453a1c
--- /dev/null
+++ b/project/cmake/scripts/linux/macros.cmake
@@ -0,0 +1,79 @@
1function(core_link_library lib wraplib)
2 set(export -Wl,--unresolved-symbols=ignore-all
3 `cat ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cores/dll-loader/exports/wrapper.def`
4 ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cores/dll-loader/exports/CMakeFiles/wrapper.dir/wrapper.c.o)
5 set(check_arg "")
6 if(TARGET ${lib})
7 set(target ${lib})
8 set(link_lib ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/${lib}/${lib}.a)
9 set(check_arg ${ARGV2})
10 set(data_arg ${ARGV3})
11 else()
12 set(target ${ARGV2})
13 set(link_lib ${lib})
14 set(check_arg ${ARGV3})
15 set(data_arg ${ARGV4})
16 endif()
17 if(check_arg STREQUAL export)
18 set(export ${export}
19 -Wl,--version-script=${ARGV3})
20 elseif(check_arg STREQUAL nowrap)
21 set(export ${data_arg})
22 elseif(check_arg STREQUAL extras)
23 foreach(arg ${data_arg})
24 list(APPEND export ${arg})
25 endforeach()
26 endif()
27 get_filename_component(dir ${wraplib} PATH)
28 add_custom_command(OUTPUT ${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
29 COMMAND cmake -E make_directory ${dir}
30 COMMAND ${CMAKE_C_COMPILER}
31 ARGS -Wl,--whole-archive
32 ${link_lib}
33 -Wl,--no-whole-archive -lm
34 -shared -o ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
35 ${export}
36 DEPENDS ${target} wrapper.def wrapper)
37 list(APPEND WRAP_FILES ${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX})
38 set(WRAP_FILES ${WRAP_FILES} PARENT_SCOPE)
39endfunction()
40
41function(find_soname lib)
42 cmake_parse_arguments(arg "REQUIRED" "" "" ${ARGN})
43
44 string(TOLOWER ${lib} liblow)
45 if(${lib}_LDFLAGS)
46 set(link_lib "${${lib}_LDFLAGS}")
47 else()
48 if(IS_ABSOLUTE "${${lib}_LIBRARIES}")
49 set(link_lib "${${lib}_LIBRARIES}")
50 else()
51 set(link_lib -l${${lib}_LIBRARIES})
52 endif()
53 endif()
54 execute_process(COMMAND ${CMAKE_C_COMPILER} -nostdlib -o /dev/null -Wl,-M ${link_lib}
55 COMMAND grep LOAD.*${liblow}
56 ERROR_QUIET
57 OUTPUT_VARIABLE ${lib}_FILENAME)
58 string(REPLACE "LOAD " "" ${lib}_FILENAME "${${lib}_FILENAME}")
59 string(STRIP "${${lib}_FILENAME}" ${lib}_FILENAME)
60 if(NOT ${lib}_FILENAME)
61 execute_process(COMMAND ${CMAKE_C_COMPILER} -nostdlib -o /dev/null -Wl,-t ${link_lib}
62 OUTPUT_QUIET
63 ERROR_VARIABLE _TMP_FILENAME)
64 string(REGEX MATCH ".*lib${liblow}.so" ${lib}_FILENAME ${_TMP_FILENAME})
65 endif()
66 if(${lib}_FILENAME)
67 execute_process(COMMAND objdump -p ${${lib}_FILENAME}
68 COMMAND grep SONAME.*${liblow}
69 ERROR_QUIET
70 OUTPUT_VARIABLE ${lib}_SONAME)
71 string(REPLACE "SONAME " "" ${lib}_SONAME ${${lib}_SONAME})
72 string(STRIP ${${lib}_SONAME} ${lib}_SONAME)
73 message(STATUS "${lib} soname: ${${lib}_SONAME}")
74 set(${lib}_SONAME ${${lib}_SONAME} PARENT_SCOPE)
75 endif()
76 if(arg_REQUIRED AND NOT ${lib}_SONAME)
77 message(FATAL_ERROR "Could not find dynamically loadable library ${lib}")
78 endif()
79endfunction()
diff --git a/project/cmake/scripts/linux/pathsetup.cmake b/project/cmake/scripts/linux/pathsetup.cmake
new file mode 100644
index 0000000..940fb62
--- /dev/null
+++ b/project/cmake/scripts/linux/pathsetup.cmake
@@ -0,0 +1,34 @@
1if(NOT prefix)
2 set(prefix ${CMAKE_INSTALL_PREFIX})
3else()
4 set(CMAKE_INSTALL_PREFIX ${prefix})
5endif()
6if(NOT exec_prefix)
7 set(exec_prefix \${prefix})
8endif()
9if(NOT libdir)
10 set(libdir ${prefix}/lib)
11endif()
12if(NOT bindir)
13 set(bindir ${prefix}/bin)
14endif()
15if(NOT includedir)
16 set(includedir ${prefix}/include)
17endif()
18if(NOT datarootdir)
19 set(datarootdir ${prefix}/share)
20endif()
21if(NOT datadir)
22 set(datadir \${datarootdir})
23endif()
24
25list(APPEND final_message "-- PATH config --")
26list(APPEND final_message "Prefix: ${prefix}")
27list(APPEND final_message "Libdir: ${libdir}")
28list(APPEND final_message "Bindir: ${bindir}")
29list(APPEND final_message "Includedir: ${includedir}")
30list(APPEND final_message "Datarootdir: ${datarootdir}")
31list(APPEND final_message "Datadir: ${datadir}")
32
33set(PATH_DEFINES -DBIN_INSTALL_PATH=\"${libdir}/xbmc\"
34 -DINSTALL_PATH=\"${datarootdir}/xbmc\")