summaryrefslogtreecommitdiffstats
path: root/project/cmake/modules
diff options
context:
space:
mode:
authormanuel <manuel@mausz.at>2016-11-24 21:27:41 +0100
committermanuel <manuel@mausz.at>2016-11-24 21:27:41 +0100
commit8cdf8dec703d882b46ca50a769fabb95ffc48e2c (patch)
treef7fe8233508f79d3dc94f8f445ce6342e7dfbdbb /project/cmake/modules
parent5823b05feb29a59510c32a9c28ca18b50b9b6399 (diff)
downloadkodi-pvr-build-8cdf8dec703d882b46ca50a769fabb95ffc48e2c.tar.gz
kodi-pvr-build-8cdf8dec703d882b46ca50a769fabb95ffc48e2c.tar.bz2
kodi-pvr-build-8cdf8dec703d882b46ca50a769fabb95ffc48e2c.zip
sync with upstream
Diffstat (limited to 'project/cmake/modules')
-rw-r--r--project/cmake/modules/FindASS.cmake48
-rw-r--r--project/cmake/modules/FindAlsa.cmake52
-rw-r--r--project/cmake/modules/FindAvahi.cmake71
-rw-r--r--project/cmake/modules/FindBluetooth.cmake44
-rw-r--r--project/cmake/modules/FindBluray.cmake39
-rw-r--r--project/cmake/modules/FindCCache.cmake22
-rw-r--r--project/cmake/modules/FindCEC.cmake16
-rw-r--r--project/cmake/modules/FindCWiid.cmake44
-rw-r--r--project/cmake/modules/FindCXX11.cmake4
-rw-r--r--project/cmake/modules/FindCdio.cmake51
-rw-r--r--project/cmake/modules/FindCpluff.cmake44
-rw-r--r--project/cmake/modules/FindCrossGUID.cmake39
-rw-r--r--project/cmake/modules/FindCurl.cmake94
-rw-r--r--project/cmake/modules/FindD3DX11Effects.cmake25
-rw-r--r--project/cmake/modules/FindDBus.cmake52
-rw-r--r--project/cmake/modules/FindDbus.cmake21
-rw-r--r--project/cmake/modules/FindEMBEDDED.cmake3
-rw-r--r--project/cmake/modules/FindFFMPEG.cmake26
-rw-r--r--project/cmake/modules/FindFreeType.cmake49
-rw-r--r--project/cmake/modules/FindFribidi.cmake48
-rw-r--r--project/cmake/modules/FindJsonSchemaBuilder.cmake2
-rw-r--r--project/cmake/modules/FindLibDRM.cmake45
-rw-r--r--project/cmake/modules/FindLibDvd.cmake291
-rw-r--r--project/cmake/modules/FindLibSmbClient.cmake65
-rw-r--r--project/cmake/modules/FindLibXml2.cmake84
-rw-r--r--project/cmake/modules/FindLzo2.cmake45
-rw-r--r--project/cmake/modules/FindMicroHttpd.cmake125
-rw-r--r--project/cmake/modules/FindMySqlClient.cmake24
-rw-r--r--project/cmake/modules/FindNFS.cmake2
-rw-r--r--project/cmake/modules/FindOpenGLES.cmake2
-rw-r--r--project/cmake/modules/FindOpenGl.cmake4
-rw-r--r--project/cmake/modules/FindPulseAudio.cmake108
-rw-r--r--project/cmake/modules/FindPython.cmake51
-rw-r--r--project/cmake/modules/FindRTMP.cmake21
-rw-r--r--project/cmake/modules/FindSSE.cmake238
-rw-r--r--project/cmake/modules/FindSSH.cmake52
-rw-r--r--project/cmake/modules/FindSWIG.cmake27
-rw-r--r--project/cmake/modules/FindShairplay.cmake4
-rw-r--r--project/cmake/modules/FindSmbClient.cmake47
-rw-r--r--project/cmake/modules/FindSqlite3.cmake49
-rw-r--r--project/cmake/modules/FindTagLib.cmake4
-rw-r--r--project/cmake/modules/FindTinyXML.cmake2
-rw-r--r--project/cmake/modules/FindUDEV.cmake47
-rw-r--r--project/cmake/modules/FindUDev.cmake22
-rw-r--r--project/cmake/modules/FindVAAPI.cmake18
-rw-r--r--project/cmake/modules/FindVDPAU.cmake17
-rw-r--r--project/cmake/modules/FindX.cmake62
-rw-r--r--project/cmake/modules/FindXRandR.cmake51
-rw-r--r--project/cmake/modules/FindXSLT.cmake50
-rw-r--r--project/cmake/modules/FindXslt.cmake18
-rw-r--r--project/cmake/modules/FindYajl.cmake71
-rw-r--r--project/cmake/modules/LDGOLD.cmake45
-rw-r--r--project/cmake/modules/extra/ECMEnableSanitizers.cmake149
53 files changed, 1828 insertions, 806 deletions
diff --git a/project/cmake/modules/FindASS.cmake b/project/cmake/modules/FindASS.cmake
index 5f4b0c7..2d592fa 100644
--- a/project/cmake/modules/FindASS.cmake
+++ b/project/cmake/modules/FindASS.cmake
@@ -1,18 +1,44 @@
1# - Try to find ASS 1#.rst:
2# Once done this will define 2# FindASS
3# -------
4# Finds the ASS library
3# 5#
4# ASS_FOUND - system has libass 6# This will will define the following variables::
5# ASS_INCLUDE_DIRS - the libass include directory 7#
6# ASS_LIBRARIES - The libass libraries 8# ASS_FOUND - system has ASS
9# ASS_INCLUDE_DIRS - the ASS include directory
10# ASS_LIBRARIES - the ASS libraries
11#
12# and the following imported targets::
13#
14# ASS::ASS - The ASS library
7 15
8if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
9 pkg_check_modules (ASS libass) 17 pkg_check_modules(PC_ASS libass QUIET)
10else()
11 find_path(ASS_INCLUDE_DIRS ass/ass.h)
12 find_library(ASS_LIBRARIES NAMES ass libass)
13endif() 18endif()
14 19
20find_path(ASS_INCLUDE_DIR NAMES ass/ass.h
21 PATHS ${PC_ASS_INCLUDEDIR})
22find_library(ASS_LIBRARY NAMES ass libass
23 PATHS ${PC_ASS_LIBDIR})
24
25set(ASS_VERSION ${PC_ASS_VERSION})
26
15include(FindPackageHandleStandardArgs) 27include(FindPackageHandleStandardArgs)
16find_package_handle_standard_args(ASS DEFAULT_MSG ASS_INCLUDE_DIRS ASS_LIBRARIES) 28find_package_handle_standard_args(ASS
29 REQUIRED_VARS ASS_LIBRARY ASS_INCLUDE_DIR
30 VERSION_VAR ASS_VERSION)
31
32if(ASS_FOUND)
33 set(ASS_LIBRARIES ${ASS_LIBRARY})
34 set(ASS_INCLUDE_DIRS ${ASS_INCLUDE_DIR})
35
36 if(NOT TARGET ASS::ASS)
37 add_library(ASS::ASS UNKNOWN IMPORTED)
38 set_target_properties(ASS::ASS PROPERTIES
39 IMPORTED_LOCATION "${ASS_LIBRARY}"
40 INTERFACE_INCLUDE_DIRECTORIES "${ASS_INCLUDE_DIR}")
41 endif()
42endif()
17 43
18mark_as_advanced(ASS_INCLUDE_DIRS ASS_LIBRARIES) 44mark_as_advanced(ASS_INCLUDE_DIR ASS_LIBRARY)
diff --git a/project/cmake/modules/FindAlsa.cmake b/project/cmake/modules/FindAlsa.cmake
index b15a0cf..a282243 100644
--- a/project/cmake/modules/FindAlsa.cmake
+++ b/project/cmake/modules/FindAlsa.cmake
@@ -1,20 +1,46 @@
1# - Try to find ALSA 1#.rst:
2# Once done this will define 2# FindAlsa
3# --------
4# Finds the Alsa library
3# 5#
4# ALSA_FOUND - system has libALSA 6# This will will define the following variables::
5# ALSA_INCLUDE_DIRS - the libALSA include directory 7#
6# ALSA_LIBRARIES - The libALSA libraries 8# ALSA_FOUND - system has Alsa
9# ALSA_INCLUDE_DIRS - the Alsa include directory
10# ALSA_LIBRARIES - the Alsa libraries
11# ALSA_DEFINITIONS - the Alsa compile definitions
12#
13# and the following imported targets::
14#
15# ALSA::ALSA - The Alsa library
7 16
8if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
9 pkg_check_modules (ALSA alsa) 18 pkg_check_modules(PC_ALSA alsa QUIET)
10else()
11 find_path(ALSA_INCLUDE_DIRS asoundlib.h PATH_SUFFIXES alsa)
12 find_library(ALSA_LIBRARIES asound)
13endif() 19endif()
14 20
21find_path(ALSA_INCLUDE_DIR NAMES alsa/asoundlib.h
22 PATHS ${PC_ALSA_INCLUDEDIR})
23find_library(ALSA_LIBRARY NAMES asound
24 PATHS ${PC_ALSA_LIBDIR})
25
26set(ALSA_VERSION ${PC_ALSA_VERSION})
27
15include(FindPackageHandleStandardArgs) 28include(FindPackageHandleStandardArgs)
16find_package_handle_standard_args(Alsa DEFAULT_MSG ALSA_INCLUDE_DIRS ALSA_LIBRARIES) 29find_package_handle_standard_args(ALSA
30 REQUIRED_VARS ALSA_LIBRARY ALSA_INCLUDE_DIR
31 VERSION_VAR ALSA_VERSION)
32
33if(ALSA_FOUND)
34 set(ALSA_INCLUDE_DIRS "") # Don't want these added as 'timer.h' is a dangerous file
35 set(ALSA_LIBRARIES ${ALSA_LIBRARY})
36 set(ALSA_DEFINITIONS -DHAVE_ALSA=1 -DUSE_ALSA=1)
37
38 if(NOT TARGET ALSA::ALSA)
39 add_library(ALSA::ALSA UNKNOWN IMPORTED)
40 set_target_properties(ALSA::ALSA PROPERTIES
41 IMPORTED_LOCATION "${ALSA_LIBRARY}"
42 INTERFACE_COMPILE_DEFINITIONS "${ALSA_DEFINITIONS}")
43 endif()
44endif()
17 45
18set(ALSA_INCLUDE_DIRS "") # Dont want these added as 'timer.h' is a dangerous file 46mark_as_advanced(ALSA_INCLUDE_DIR ALSA_LIBRARY)
19mark_as_advanced(ALSA_INCLUDE_DIRS ALSA_LIBRARIES)
20list(APPEND ALSA_DEFINITIONS -DHAVE_ALSA=1 -DUSE_ALSA=1)
diff --git a/project/cmake/modules/FindAvahi.cmake b/project/cmake/modules/FindAvahi.cmake
index 24bf15c..77c3e4d 100644
--- a/project/cmake/modules/FindAvahi.cmake
+++ b/project/cmake/modules/FindAvahi.cmake
@@ -1,26 +1,63 @@
1# - Try to find avahi 1#.rst:
2# Once done this will define 2# FindAvahi
3# ---------
4# Finds the avahi library
5#
6# This will will define the following variables::
3# 7#
4# AVAHI_FOUND - system has avahi 8# AVAHI_FOUND - system has avahi
5# AVAHI_INCLUDE_DIRS - the avahi include directory 9# AVAHI_INCLUDE_DIRS - the avahi include directory
6# AVAHI_LIBRARIES - The avahi libraries 10# AVAHI_LIBRARIES - the avahi libraries
11# AVAHI_DEFINITIONS - the avahi definitions
12#
13# and the following imported targets::
14#
15# Avahi::Avahi - The avahi library
7 16
8if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
9 pkg_check_modules (AVAHI avahi-client) 18 pkg_check_modules(PC_AVAHI avahi-client QUIET)
10 list(APPEND AVAHI_INCLUDE_DIRS ${AVAHI_INCLUDEDIR})
11else()
12 find_path(AVAHI_CLIENT_INCLUDE_DIRS avahi-client/client.h)
13 find_path(AVAHI_COMMON_INCLUDE_DIRS avahi-common/defs.h)
14 find_library(AVAHI_COMMON_LIBRARIES avahi-common)
15 find_library(AVAHI_CLIENT_LIBRARIES avahi-common)
16 set(AVAHI_INCLUDE_DIRS ${AVAHI_CLIENT_INCLUDE_DIRS}
17 ${AVAHI_COMMON_INCLUDE_DIRS})
18 set(AVAHI_LIBRARIES ${AVAHI_CLIENT_LIBRARIES}
19 ${AVAHI_COMMON_LIBRARIES})
20endif() 19endif()
21 20
21find_path(AVAHI_CLIENT_INCLUDE_DIR NAMES avahi-client/client.h
22 PATHS ${PC_AVAHI_INCLUDEDIR})
23find_path(AVAHI_COMMON_INCLUDE_DIR NAMES avahi-common/defs.h
24 PATHS ${PC_AVAHI_INCLUDEDIR})
25find_library(AVAHI_CLIENT_LIBRARY NAMES avahi-client
26 PATHS ${PC_AVAHI_LIBDIR})
27find_library(AVAHI_COMMON_LIBRARY NAMES avahi-common
28 PATHS ${PC_AVAHI_LIBDIR})
29
30set(AVAHI_VERSION ${PC_AVAHI_VERSION})
31
22include(FindPackageHandleStandardArgs) 32include(FindPackageHandleStandardArgs)
23find_package_handle_standard_args(Avahi DEFAULT_MSG AVAHI_INCLUDE_DIRS AVAHI_LIBRARIES) 33find_package_handle_standard_args(Avahi
34 REQUIRED_VARS AVAHI_CLIENT_LIBRARY AVAHI_COMMON_LIBRARY
35 AVAHI_CLIENT_INCLUDE_DIR AVAHI_COMMON_INCLUDE_DIR
36 VERSION_VAR AVAHI_VERSION)
37
38if(AVAHI_FOUND)
39 set(AVAHI_INCLUDE_DIRS ${AVAHI_CLIENT_INCLUDE_DIR}
40 ${AVAHI_COMMON_INCLUDE_DIR})
41 set(AVAHI_LIBRARIES ${AVAHI_CLIENT_LIBRARY}
42 ${AVAHI_COMMON_LIBRARY})
43 set(AVAHI_DEFINITIONS -DHAVE_LIBAVAHI_CLIENT=1 -DHAVE_LIBAVAHI_COMMON=1)
44
45 if(NOT TARGET Avahi::Avahi)
46 add_library(Avahi::Avahi UNKNOWN IMPORTED)
47 set_target_properties(Avahi::Avahi PROPERTIES
48 IMPORTED_LOCATION "${AVAHI_CLIENT_LIBRARY}"
49 INTERFACE_INCLUDE_DIRECTORIES "${AVAHI_CLIENT_INCLUDE_DIR}"
50 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBAVAHI_CLIENT=1)
51 endif()
52 if(NOT TARGET Avahi::AvahiCommon)
53 add_library(Avahi::AvahiCommon UNKNOWN IMPORTED)
54 set_target_properties(Avahi::AvahiCommon PROPERTIES
55 IMPORTED_LOCATION "${AVAHI_COMMON_LIBRARY}"
56 INTERFACE_INCLUDE_DIRECTORIES "${AVAHI_COMMON_INCLUDE_DIR}"
57 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBAVAHI_COMMON=1
58 INTERFACE_LINK_LIBRARIES Avahi::Avahi)
59 endif()
60endif()
24 61
25mark_as_advanced(AVAHI_INCLUDE_DIRS AVAHI_LIBRARIES) 62mark_as_advanced(AVAHI_CLIENT_INCLUDE_DIR AVAHI_COMMON_INCLUDE_DIR
26list(APPEND AVAHI_DEFINITIONS -DHAVE_LIBAVAHI_COMMON=1 -DHAVE_LIBAVAHI_CLIENT=1) 63 AVAHI_CLIENT_LIBRARY AVAHI_COMMON_LIBRARY)
diff --git a/project/cmake/modules/FindBluetooth.cmake b/project/cmake/modules/FindBluetooth.cmake
new file mode 100644
index 0000000..538e89c
--- /dev/null
+++ b/project/cmake/modules/FindBluetooth.cmake
@@ -0,0 +1,44 @@
1#.rst:
2# FindBluetooth
3# ---------
4# Finds the Bluetooth library
5#
6# This will will define the following variables::
7#
8# BLUETOOTH_FOUND - system has Bluetooth
9# BLUETOOTH_INCLUDE_DIRS - the Bluetooth include directory
10# BLUETOOTH_LIBRARIES - the Bluetooth libraries
11#
12# and the following imported targets::
13#
14# Bluetooth::Bluetooth - The Bluetooth library
15
16if(PKG_CONFIG_FOUND)
17 pkg_check_modules(PC_BLUETOOTH bluetooth QUIET)
18endif()
19
20find_path(BLUETOOTH_INCLUDE_DIR NAMES bluetooth/bluetooth.h
21 PATHS ${PC_BLUETOOTH_INCLUDEDIR})
22find_library(BLUETOOTH_LIBRARY NAMES bluetooth
23 PATHS ${PC_BLUETOOTH_LIBDIR})
24
25set(BLUETOOTH_VERSION ${PC_BLUETOOTH_VERSION})
26
27include(FindPackageHandleStandardArgs)
28find_package_handle_standard_args(Bluetooth
29 REQUIRED_VARS BLUETOOTH_LIBRARY BLUETOOTH_INCLUDE_DIR
30 VERSION_VAR ${BLUETOOTH_VERSION})
31
32if(BLUETOOTH_FOUND)
33 set(BLUETOOTH_INCLUDE_DIRS ${BLUETOOTH_INCLUDE_DIR})
34 set(BLUETOOTH_LIBRARIES ${BLUETOOTH_LIBRARY})
35
36 if(NOT TARGET Bluetooth::Bluetooth)
37 add_library(Bluetooth::Bluetooth UNKNOWN IMPORTED)
38 set_target_properties(Bluetooth::Bluetooth PROPERTIES
39 IMPORTED_LOCATION "${BLUETOOTH_LIBRARY}"
40 INTERFACE_INCLUDE_DIRECTORIES "${BLUETOOTH_INCLUDE_DIR}")
41 endif()
42endif()
43
44mark_as_advanced(BLUETOOTH_INCLUDE_DIR BLUETOOTH_LIBRARY)
diff --git a/project/cmake/modules/FindBluray.cmake b/project/cmake/modules/FindBluray.cmake
index 2b0a449..b8422ed 100644
--- a/project/cmake/modules/FindBluray.cmake
+++ b/project/cmake/modules/FindBluray.cmake
@@ -15,26 +15,27 @@
15# Bluray::Bluray - The libblueray library 15# Bluray::Bluray - The libblueray library
16 16
17if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(BLURAY libbluray>=0.7.0) 18 pkg_check_modules(PC_BLURAY libbluray>=0.7.0 QUIET)
19 set(BLURAY_VERSION ${PC_BLURAY_VERSION}) 19endif()
20
21find_path(BLURAY_INCLUDE_DIR libbluray/bluray.h
22 PATHS ${PC_BLURAY_INCLUDEDIR})
23
24set(BLURAY_VERSION ${PC_BLURAY_VERSION})
25
26include(FindPackageHandleStandardArgs)
27if(NOT WIN32)
28 find_library(BLURAY_LIBRARY NAMES bluray
29 PATHS ${PC_BLURAY_LIBDIR})
30
31 find_package_handle_standard_args(Bluray
32 REQUIRED_VARS BLURAY_LIBRARY BLURAY_INCLUDE_DIR
33 VERSION_VAR BLURAY_VERSION)
20else() 34else()
21 find_path(BLURAY_INCLUDE_DIR libbluray/bluray.h 35 # Dynamically loaded DLL
22 PATHS ${PC_BLURAY_INCLUDEDIR}) 36 find_package_handle_standard_args(Bluray
23 37 REQUIRED_VARS BLURAY_INCLUDE_DIR
24 include(FindPackageHandleStandardArgs) 38 VERSION_VAR BLURAY_VERSION)
25 if(NOT WIN32)
26 find_library(BLURAY_LIBRARY NAMES bluray
27 PATHS ${PC_BLURAY_LIBDIR})
28
29 find_package_handle_standard_args(BLURAY
30 REQUIRED_VARS BLURAY_LIBRARY BLURAY_INCLUDE_DIR
31 VERSION_VAR BLURAY_VERSION)
32 else()
33 # Dynamically loaded DLL
34 find_package_handle_standard_args(BLURAY
35 REQUIRED_VARS BLURAY_INCLUDE_DIR
36 VERSION_VAR BLURAY_VERSION)
37 endif()
38endif() 39endif()
39 40
40if(BLURAY_FOUND) 41if(BLURAY_FOUND)
diff --git a/project/cmake/modules/FindCCache.cmake b/project/cmake/modules/FindCCache.cmake
index 4ad7d07..a7fd29f 100644
--- a/project/cmake/modules/FindCCache.cmake
+++ b/project/cmake/modules/FindCCache.cmake
@@ -1,6 +1,18 @@
1find_program(CCACHE_FOUND ccache) 1#.rst:
2if(CCACHE_FOUND) 2# FindCCache
3 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) 3# ----------
4 set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) 4# Finds ccache and sets it up as compiler wrapper.
5endif(CCACHE_FOUND) 5# This should ideally be called before the call to project().
6#
7# See: https://crascit.com/2016/04/09/using-ccache-with-cmake/
8
9find_program(CCACHE_PROGRAM ccache)
6 10
11include(FindPackageHandleStandardArgs)
12find_package_handle_standard_args(CCACHE REQUIRED_VARS CCACHE_PROGRAM)
13
14if(CCACHE_FOUND)
15 # Supports Unix Makefiles and Ninja
16 set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
17 set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}")
18endif()
diff --git a/project/cmake/modules/FindCEC.cmake b/project/cmake/modules/FindCEC.cmake
index 98e900d..bd6fd1d 100644
--- a/project/cmake/modules/FindCEC.cmake
+++ b/project/cmake/modules/FindCEC.cmake
@@ -15,13 +15,23 @@
15# CEC::CEC - The libCEC library 15# CEC::CEC - The libCEC library
16 16
17if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_CEC libCEC>=3.0.0 QUIET) 18 pkg_check_modules(PC_CEC libcec QUIET)
19endif() 19endif()
20 20
21find_path(CEC_INCLUDE_DIR libCEC/CEC.h 21find_path(CEC_INCLUDE_DIR NAMES libcec/cec.h libCEC/CEC.h
22 PATHS ${PC_CEC_INCLUDEDIR}) 22 PATHS ${PC_CEC_INCLUDEDIR})
23 23
24set(CEC_VERSION ${PC_CEC_VERSION}) 24if(PC_CEC_VERSION)
25 set(CEC_VERSION ${PC_CEC_VERSION})
26elseif(CEC_INCLUDE_DIR AND EXISTS "${CEC_INCLUDE_DIR}/libcec/version.h")
27 file(STRINGS "${CEC_INCLUDE_DIR}/libcec/version.h" cec_version_str REGEX "^[\t ]+LIBCEC_VERSION_TO_UINT\\(.*\\)")
28 string(REGEX REPLACE "^[\t ]+LIBCEC_VERSION_TO_UINT\\(([0-9]+), ([0-9]+), ([0-9]+)\\)" "\\1.\\2.\\3" CEC_VERSION "${cec_version_str}")
29 unset(cec_version_str)
30endif()
31
32if(NOT CEC_FIND_VERSION)
33 set(CEC_FIND_VERSION 4.0.0)
34endif()
25 35
26include(FindPackageHandleStandardArgs) 36include(FindPackageHandleStandardArgs)
27if(NOT WIN32) 37if(NOT WIN32)
diff --git a/project/cmake/modules/FindCWiid.cmake b/project/cmake/modules/FindCWiid.cmake
new file mode 100644
index 0000000..88cfbef
--- /dev/null
+++ b/project/cmake/modules/FindCWiid.cmake
@@ -0,0 +1,44 @@
1#.rst:
2# FindCWiid
3# ---------
4# Finds the CWiid library
5#
6# This will will define the following variables::
7#
8# CWIID_FOUND - system has CWiid
9# CWIID_INCLUDE_DIRS - the CWiid include directory
10# CWIID_LIBRARIES - the CWiid libraries
11#
12# and the following imported targets::
13#
14# CWiid::CWiid - The CWiid library
15
16if(PKG_CONFIG_FOUND)
17 pkg_check_modules(PC_CWIID cwiid QUIET)
18endif()
19
20find_path(CWIID_INCLUDE_DIR NAMES cwiid.h
21 PATHS ${PC_CWIID_INCLUDEDIR})
22find_library(CWIID_LIBRARY NAMES cwiid
23 PATHS ${PC_CWIID_LIBDIR})
24
25set(CWIID_VERSION ${PC_CWIID_VERSION})
26
27include(FindPackageHandleStandardArgs)
28find_package_handle_standard_args(CWIID
29 REQUIRED_VARS CWIID_LIBRARY CWIID_INCLUDE_DIR
30 VERSION_VAR CWIID_VERSION)
31
32if(CWIID_FOUND)
33 set(CWIID_INCLUDE_DIRS ${CWIID_INCLUDE_DIR})
34 set(CWIID_LIBRARIES ${CWIID_LIBRARY})
35
36 if(NOT TARGET CWiid::CWiid)
37 add_library(CWiid::CWiid UNKNOWN IMPORTED)
38 set_target_properties(CWiid::CWiid PROPERTIES
39 IMPORTED_LOCATION "${CWIID_LIBRARY}"
40 INTERFACE_INCLUDE_DIRECTORIES "${CWIID_INCLUDE_DIR}")
41 endif()
42endif()
43
44mark_as_advanced(CWIID_INCLUDE_DIR CWIID_LIBRARY)
diff --git a/project/cmake/modules/FindCXX11.cmake b/project/cmake/modules/FindCXX11.cmake
index f1b7346..c0b9a52 100644
--- a/project/cmake/modules/FindCXX11.cmake
+++ b/project/cmake/modules/FindCXX11.cmake
@@ -11,8 +11,8 @@ else()
11 if(CXX_FLAG_CXX0X) 11 if(CXX_FLAG_CXX0X)
12 add_options (CXX ALL_BUILDS "-std=c++0x") 12 add_options (CXX ALL_BUILDS "-std=c++0x")
13 set(CXX_STD11_FLAGS "-std=c++0x") 13 set(CXX_STD11_FLAGS "-std=c++0x")
14 endif(CXX_FLAG_CXX0X) 14 endif()
15endif(CXX_FLAG_CXX11) 15endif()
16 16
17include(FindPackageHandleStandardArgs) 17include(FindPackageHandleStandardArgs)
18find_package_handle_standard_args(CXX11 DEFAULT_MSG CXX_STD11_FLAGS) 18find_package_handle_standard_args(CXX11 DEFAULT_MSG CXX_STD11_FLAGS)
diff --git a/project/cmake/modules/FindCdio.cmake b/project/cmake/modules/FindCdio.cmake
index 1b6b8cd..aa089c2 100644
--- a/project/cmake/modules/FindCdio.cmake
+++ b/project/cmake/modules/FindCdio.cmake
@@ -1,20 +1,45 @@
1# - Try to find cdio 1#.rst:
2# Once done this will define 2# FindCdio
3# --------
4# Finds the cdio library
3# 5#
4# CDIO_FOUND - system has libcdio 6# This will will define the following variables::
5# CDIO_INCLUDE_DIRS - the libcdio include directory 7#
6# CDIO_LIBRARIES - The libcdio libraries 8# CDIO_FOUND - system has cdio
9# CDIO_INCLUDE_DIRS - the cdio include directory
10# CDIO_LIBRARIES - the cdio libraries
11#
12# and the following imported targets::
13#
14# CDIO::CDIO - The cdio library
7 15
8if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
9 pkg_check_modules (CDIO libcdio libiso9660) 17 pkg_check_modules(PC_CDIO libcdio libiso9660 QUIET)
10 list(APPEND CDIO_INCLUDE_DIRS ${CDIO_libcdio_INCLUDEDIR} ${CDIO_libiso9660_INCLUDEDIR})
11endif()
12if(NOT CDIO_FOUND)
13 find_path(CDIO_INCLUDE_DIRS cdio/cdio.h)
14 find_library(MODPLUG_LIBRARIES NAMES cdio)
15endif() 18endif()
16 19
20find_path(CDIO_INCLUDE_DIR NAMES cdio/cdio.h
21 PATHS ${PC_CDIO_libcdio_INCLUDEDIR}
22 ${PC_CDIO_libiso9660_INCLUDEDIR})
23find_library(CDIO_LIBRARY NAMES cdio
24 PATHS ${CDIO_libcdio_LIBDIR} ${CDIO_libiso9660_LIBDIR})
25
26set(CDIO_VERSION ${PC_CDIO_libcdio_VERSION})
27
17include(FindPackageHandleStandardArgs) 28include(FindPackageHandleStandardArgs)
18find_package_handle_standard_args(Cdio DEFAULT_MSG CDIO_INCLUDE_DIRS CDIO_LIBRARIES) 29find_package_handle_standard_args(CDIO
30 REQUIRED_VARS CDIO_LIBRARY CDIO_INCLUDE_DIR
31 VERSION_VAR CDIO_VERSION)
32
33if(CDIO_FOUND)
34 set(CDIO_LIBRARIES ${CDIO_LIBRARY})
35 set(CDIO_INCLUDE_DIRS ${CDIO_INCLUDE_DIR})
36
37 if(NOT TARGET CDIO::CDIO)
38 add_library(CDIO::CDIO UNKNOWN IMPORTED)
39 set_target_properties(CDIO::CDIO PROPERTIES
40 IMPORTED_LOCATION "${CDIO_LIBRARY}"
41 INTERFACE_INCLUDE_DIRECTORIES "${CDIO_INCLUDE_DIR}")
42 endif()
43endif()
19 44
20mark_as_advanced(CDIO_INCLUDE_DIRS CDIO_LIBRARIES) 45mark_as_advanced(CDIO_INCLUDE_DIR CDIO_LIBRARY)
diff --git a/project/cmake/modules/FindCpluff.cmake b/project/cmake/modules/FindCpluff.cmake
index c6693fa..fb2bb25 100644
--- a/project/cmake/modules/FindCpluff.cmake
+++ b/project/cmake/modules/FindCpluff.cmake
@@ -8,38 +8,46 @@
8 8
9if(NOT WIN32) 9if(NOT WIN32)
10 string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}") 10 string(REPLACE ";" " " defines "${CMAKE_C_FLAGS} ${SYSTEM_DEFINES} -I${EXPAT_INCLUDE_DIR}")
11 get_filename_component(expat_dir ${EXPAT_LIBRARY} PATH) 11 get_filename_component(expat_dir ${EXPAT_LIBRARY} DIRECTORY)
12 set(ldflags "-L${expat_dir}") 12 set(ldflags "-L${expat_dir}")
13 ExternalProject_Add(libcpluff SOURCE_DIR ${CORE_SOURCE_DIR}/lib/cpluff 13 ExternalProject_Add(libcpluff SOURCE_DIR ${CORE_SOURCE_DIR}/lib/cpluff
14 BUILD_IN_SOURCE 1 14 BUILD_IN_SOURCE 1
15 PREFIX ${CORE_BUILD_DIR}/cpluff 15 PREFIX ${CORE_BUILD_DIR}/cpluff
16 PATCH_COMMAND rm -f config.status
17 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
18 CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} ${CORE_SOURCE_DIR}/lib/cpluff/configure 16 CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} ${CORE_SOURCE_DIR}/lib/cpluff/configure
19 --disable-nls 17 --disable-nls
20 --enable-static 18 --enable-static
21 --disable-shared 19 --disable-shared
22 --with-pic 20 --with-pic
23 --prefix=<INSTALL_DIR> 21 --prefix=<INSTALL_DIR>
22 --libdir=<INSTALL_DIR>/lib
24 --host=${ARCH} 23 --host=${ARCH}
25 CFLAGS=${defines} 24 CFLAGS=${defines}
26 LDFLAGS=${ldflags} 25 LDFLAGS=${ldflags})
27 BUILD_COMMAND make V=1) 26 ExternalProject_Add_Step(libcpluff autoreconf
27 DEPENDEES download update patch
28 DEPENDERS configure
29 COMMAND rm -f config.status
30 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
31 WORKING_DIRECTORY <SOURCE_DIR>)
32
28 set(ldflags "${ldflags};-lexpat") 33 set(ldflags "${ldflags};-lexpat")
29 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/lib/libcpluff.a 34 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/lib/libcpluff.a
30 system/libcpluff libcpluff extras "${ldflags}") 35 system/libcpluff libcpluff extras "${ldflags}")
31 set(WRAP_FILES ${WRAP_FILES} PARENT_SCOPE) 36 set(CPLUFF_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/include)
37 set(CPLUFF_FOUND 1)
38 mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND)
32else() 39else()
33 ExternalProject_Add(libcpluff SOURCE_DIR ${CORE_SOURCE_DIR}/lib/cpluff 40 find_path(CPLUFF_INCLUDE_DIR cpluff.h)
34 PREFIX ${CORE_BUILD_DIR}/cpluff
35 CONFIGURE_COMMAND ""
36 # TODO: Building the project directly from lib/cpluff/libcpluff/win32/cpluff.vcxproj
37 # fails becaue it imports XBMC.defaults.props
38 BUILD_COMMAND msbuild ${CORE_SOURCE_DIR}/project/VS2010Express/XBMC\ for\ Windows.sln
39 /t:cpluff /p:Configuration=${CORE_BUILD_CONFIG}
40 INSTALL_COMMAND "")
41endif()
42 41
43set(CPLUFF_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cpluff/include) 42 include(FindPackageHandleStandardArgs)
44set(CPLUFF_FOUND 1) 43 find_package_handle_standard_args(CPLUFF
45mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND) 44 REQUIRED_VARS CPLUFF_INCLUDE_DIR)
45
46 if(CPLUFF_FOUND)
47 set(CPLUFF_INCLUDE_DIRS ${CPLUFF_INCLUDE_DIR})
48 endif()
49 mark_as_advanced(CPLUFF_INCLUDE_DIRS CPLUFF_FOUND)
50
51 add_custom_target(libcpluff)
52endif()
53set_target_properties(libcpluff PROPERTIES FOLDER "External Projects")
diff --git a/project/cmake/modules/FindCrossGUID.cmake b/project/cmake/modules/FindCrossGUID.cmake
index df40c9e..bcae3d3 100644
--- a/project/cmake/modules/FindCrossGUID.cmake
+++ b/project/cmake/modules/FindCrossGUID.cmake
@@ -5,8 +5,22 @@ if(ENABLE_INTERNAL_CROSSGUID)
5 list(GET CGUID_VER 0 CGUID_VER) 5 list(GET CGUID_VER 0 CGUID_VER)
6 string(SUBSTRING "${CGUID_VER}" 8 -1 CGUID_VER) 6 string(SUBSTRING "${CGUID_VER}" 8 -1 CGUID_VER)
7 7
8 # allow user to override the download URL with a local tarball
9 # needed for offline build envs
10 if(CROSSGUID_URL)
11 get_filename_component(CROSSGUID_URL "${CROSSGUID_URL}" ABSOLUTE)
12 else()
13 set(CROSSGUID_URL http://mirrors.kodi.tv/build-deps/sources/crossguid-${CGUID_VER}.tar.gz)
14 endif()
15 if(VERBOSE)
16 message(STATUS "CROSSGUID_URL: ${CROSSGUID_URL}")
17 endif()
18
19 set(CROSSGUID_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libcrossguid.a)
20 set(CROSSGUID_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
8 externalproject_add(crossguid 21 externalproject_add(crossguid
9 URL http://mirrors.kodi.tv/build-deps/sources/crossguid-${CGUID_VER}.tar.gz 22 URL ${CROSSGUID_URL}
23 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
10 PREFIX ${CORE_BUILD_DIR}/crossguid 24 PREFIX ${CORE_BUILD_DIR}/crossguid
11 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} 25 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
12 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} 26 -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
@@ -18,17 +32,19 @@ if(ENABLE_INTERNAL_CROSSGUID)
18 <SOURCE_DIR> && 32 <SOURCE_DIR> &&
19 ${CMAKE_COMMAND} -E copy 33 ${CMAKE_COMMAND} -E copy
20 ${CORE_SOURCE_DIR}/tools/depends/target/crossguid/FindCXX11.cmake 34 ${CORE_SOURCE_DIR}/tools/depends/target/crossguid/FindCXX11.cmake
21 <SOURCE_DIR>) 35 <SOURCE_DIR>
22 36 BUILD_BYPRODUCTS ${CROSSGUID_LIBRARY})
23 set(CROSSGUID_FOUND 1) 37 set_target_properties(crossguid PROPERTIES FOLDER "External Projects")
24 set(CROSSGUID_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libcrossguid.a)
25 set(CROSSGUID_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
26 38
27 include(FindPackageHandleStandardArgs) 39 include(FindPackageHandleStandardArgs)
28 find_package_handle_standard_args(CROSSGUID DEFAULT_MSG CROSSGUID_INCLUDE_DIRS CROSSGUID_LIBRARIES) 40 find_package_handle_standard_args(CrossGuid
29 mark_as_advanced(CROSSGUID_INCLUDE_DIRS CROSSGUID_LIBRARIES CROSSGUID_DEFINITIONS CROSSGUID_FOUND) 41 REQUIRED_VARS CROSSGUID_LIBRARY CROSSGUID_INCLUDE_DIR
42 VERSION_VAR CGUID_VER)
43
44 set(CROSSGUID_LIBRARIES ${CROSSGUID_LIBRARY})
45 set(CROSSGUID_INCLUDE_DIRS ${CROSSGUID_INCLUDE_DIR})
30else() 46else()
31 find_path(CROSSGUID_INCLUDE_DIR guid.h) 47 find_path(CROSSGUID_INCLUDE_DIR NAMES guid.h)
32 48
33 find_library(CROSSGUID_LIBRARY_RELEASE NAMES crossguid) 49 find_library(CROSSGUID_LIBRARY_RELEASE NAMES crossguid)
34 find_library(CROSSGUID_LIBRARY_DEBUG NAMES crossguidd) 50 find_library(CROSSGUID_LIBRARY_DEBUG NAMES crossguidd)
@@ -37,12 +53,15 @@ else()
37 select_library_configurations(CROSSGUID) 53 select_library_configurations(CROSSGUID)
38 54
39 include(FindPackageHandleStandardArgs) 55 include(FindPackageHandleStandardArgs)
40 find_package_handle_standard_args(CROSSGUID 56 find_package_handle_standard_args(CrossGuid
41 REQUIRED_VARS CROSSGUID_LIBRARY CROSSGUID_INCLUDE_DIR) 57 REQUIRED_VARS CROSSGUID_LIBRARY CROSSGUID_INCLUDE_DIR)
42 58
43 if(CROSSGUID_FOUND) 59 if(CROSSGUID_FOUND)
44 set(CROSSGUID_LIBRARIES ${CROSSGUID_LIBRARY}) 60 set(CROSSGUID_LIBRARIES ${CROSSGUID_LIBRARY})
45 set(CROSSGUID_INCLUDE_DIRS ${CROSSGUID_INCLUDE_DIR}) 61 set(CROSSGUID_INCLUDE_DIRS ${CROSSGUID_INCLUDE_DIR})
62
63 add_custom_target(crossguid)
64 set_target_properties(crossguid PROPERTIES FOLDER "External Projects")
46 endif() 65 endif()
47 mark_as_advanced(CROSSGUID_INCLUDE_DIR CROSSGUID_LIBRARY) 66 mark_as_advanced(CROSSGUID_INCLUDE_DIR CROSSGUID_LIBRARY)
48endif() 67endif()
diff --git a/project/cmake/modules/FindCurl.cmake b/project/cmake/modules/FindCurl.cmake
index a2e8862..ed4d81f 100644
--- a/project/cmake/modules/FindCurl.cmake
+++ b/project/cmake/modules/FindCurl.cmake
@@ -1,37 +1,83 @@
1# - Try to find CURL 1#.rst:
2# Once done this will define 2# FindCurl
3# --------
4# Finds the Curl library
3# 5#
4# CURL_FOUND - system has libcurl 6# This will will define the following variables::
5# CURL_INCLUDE_DIRS - the libcurl include directory 7#
6# CURL_LIBRARIES - The libcurl libraries 8# CURL_FOUND - system has Curl
9# CURL_INCLUDE_DIRS - the Curl include directory
10# CURL_LIBRARIES - the Curl libraries
11# CURL_DEFINITIONS - the Curl definitions
12#
13# and the following imported targets::
14#
15# Curl::Curl - The Curl library
7 16
8if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
9 pkg_check_modules (CURL libcurl) 18 pkg_check_modules(PC_CURL libcurl QUIET)
10 list(APPEND CURL_INCLUDE_DIRS ${CURL_INCLUDEDIR})
11else()
12 find_path(CURL_INCLUDE_DIRS curl/curl.h)
13 find_library(CURL_LIBRARIES NAMES curl libcurl)
14endif() 19endif()
15include(FindPackageHandleStandardArgs)
16find_package_handle_standard_args(Curl DEFAULT_MSG CURL_INCLUDE_DIRS CURL_LIBRARIES)
17 20
18mark_as_advanced(CURL_INCLUDE_DIRS CURL_LIBRARIES) 21find_path(CURL_INCLUDE_DIR NAMES curl/curl.h
22 PATHS ${PC_CURL_INCLUDEDIR})
23find_library(CURL_LIBRARY NAMES curl libcurl
24 PATHS ${PC_CURL_LIBDIR})
25
26set(CURL_VERSION ${PC_CURL_VERSION})
27
28include(FindPackageHandleStandardArgs)
29find_package_handle_standard_args(Curl
30 REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR
31 VERSION_VAR CURL_VERSION)
19 32
20if(CURL_FOUND) 33if(CURL_FOUND)
21 if(NOT CURL_LIBRARY_DIRS AND CURL_LIBDIR) 34 set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
22 set(CURL_LIBRARY_DIRS ${CURL_LIBDIR}) 35 set(CURL_LIBRARIES ${CURL_LIBRARY})
36
37 # Check whether OpenSSL inside libcurl is static.
38 if(UNIX)
39 if(NOT DEFINED HAS_CURL_STATIC)
40 get_filename_component(CURL_LIBRARY_DIR ${CURL_LIBRARY} DIRECTORY)
41 find_soname(CURL REQUIRED)
42
43 if(APPLE)
44 set(libchecker nm)
45 set(searchpattern "T [_]?CRYPTO_set_locking_call")
46 else()
47 set(libchecker readelf -s)
48 set(searchpattern "CRYPTO_set_locking_call")
49 endif()
50 execute_process(
51 COMMAND ${libchecker} ${CURL_LIBRARY_DIR}/${CURL_SONAME}
52 COMMAND grep -Eq ${searchpattern}
53 RESULT_VARIABLE HAS_CURL_STATIC)
54 unset(libchecker)
55 unset(searchpattern)
56 if(HAS_CURL_STATIC EQUAL 0)
57 set(HAS_CURL_STATIC TRUE)
58 else()
59 set(HAS_CURL_STATIC FALSE)
60 endif()
61 set(HAS_CURL_STATIC ${HAS_CURL_STATIC} CACHE INTERNAL
62 "OpenSSL is statically linked into Curl")
63 message(STATUS "OpenSSL is statically linked into Curl: ${HAS_CURL_STATIC}")
64 endif()
23 endif() 65 endif()
24 66
25 find_soname(CURL) 67 if(HAS_CURL_STATIC)
68 set(CURL_DEFINITIONS -DHAS_CURL_STATIC=1)
69 endif()
26 70
27 if(EXISTS "${CURL_LIBRARY_DIRS}/${CURL_SONAME}") 71 if(NOT TARGET Curl::Curl)
28 execute_process(COMMAND readelf -s ${CURL_LIBRARY_DIRS}/${CURL_SONAME} COMMAND grep CRYPTO_set_locking_call OUTPUT_VARIABLE HAS_CURL_STATIC) 72 add_library(Curl::Curl UNKNOWN IMPORTED)
29 else() 73 set_target_properties(Curl::Curl PROPERTIES
30 message(FATAL_ERROR "curl library not found") 74 IMPORTED_LOCATION "${CURL_LIBRARY}"
75 INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIR}")
76 if(HAS_CURL_STATIC)
77 set_target_properties(Curl::Curl PROPERTIES
78 INTERFACE_COMPILE_DEFINITIONS HAS_CURL_STATIC=1)
79 endif()
31 endif() 80 endif()
32endif() 81endif()
33 82
34if(HAS_CURL_STATIC) 83mark_as_advanced(CURL_INCLUDE_DIR CURL_LIBRARY)
35 mark_as_advanced(HAS_CURL_STATIC)
36 list(APPEND CURL_DEFINITIONS -DHAS_CURL_STATIC=1)
37endif()
diff --git a/project/cmake/modules/FindD3DX11Effects.cmake b/project/cmake/modules/FindD3DX11Effects.cmake
index 9de8c2b..d7468e1 100644
--- a/project/cmake/modules/FindD3DX11Effects.cmake
+++ b/project/cmake/modules/FindD3DX11Effects.cmake
@@ -1,28 +1,8 @@
1# - Builds D3DX11Effects as external project 1# - Finds D3DX11 dependencies
2# Once done this will define 2# Once done this will define
3# 3#
4# D3DX11EFFECTS_FOUND - system has D3DX11Effects
5# D3DX11EFFECTS_INCLUDE_DIRS - the D3DX11Effects include directories
6# D3DCOMPILER_DLL - Path to the Direct3D Compiler 4# D3DCOMPILER_DLL - Path to the Direct3D Compiler
7 5# FXC - Path to the DirectX Effects Compiler (FXC)
8include(ExternalProject)
9ExternalProject_Add(d3dx11effects
10 SOURCE_DIR ${CORE_SOURCE_DIR}/lib/win32/Effects11
11 PREFIX ${CORE_BUILD_DIR}/Effects11
12 CONFIGURE_COMMAND ""
13 BUILD_COMMAND msbuild ${CORE_SOURCE_DIR}/lib/win32/Effects11/Effects11_2013.sln
14 /t:Effects11 /p:Configuration=${CORE_BUILD_CONFIG}
15 INSTALL_COMMAND "")
16
17set(D3DX11EFFECTS_FOUND 1)
18set(D3DX11EFFECTS_INCLUDE_DIRS ${CORE_SOURCE_DIR}/lib/win32/Effects11/inc)
19
20set(D3DX11EFFECTS_LIBRARY_RELEASE ${CORE_SOURCE_DIR}/lib/win32/Effects11/libs/Effects11/Release/Effects11.lib)
21set(D3DX11EFFECTS_LIBRARY_DEBUG ${CORE_SOURCE_DIR}/lib/win32/Effects11/libs/Effects11/Debug/Effects11.lib)
22include(SelectLibraryConfigurations)
23select_library_configurations(D3DX11EFFECTS)
24
25mark_as_advanced(D3DX11EFFECTS_FOUND)
26 6
27find_file(D3DCOMPILER_DLL 7find_file(D3DCOMPILER_DLL
28 NAMES d3dcompiler_47.dll d3dcompiler_46.dll 8 NAMES d3dcompiler_47.dll d3dcompiler_46.dll
@@ -36,6 +16,7 @@ if(NOT D3DCOMPILER_DLL)
36 message(WARNING "Could NOT find Direct3D Compiler") 16 message(WARNING "Could NOT find Direct3D Compiler")
37endif() 17endif()
38mark_as_advanced(D3DCOMPILER_DLL) 18mark_as_advanced(D3DCOMPILER_DLL)
19copy_file_to_buildtree(${D3DCOMPILER_DLL} DIRECTORY .)
39 20
40find_program(FXC fxc 21find_program(FXC fxc
41 PATHS 22 PATHS
diff --git a/project/cmake/modules/FindDBus.cmake b/project/cmake/modules/FindDBus.cmake
new file mode 100644
index 0000000..2d64af4
--- /dev/null
+++ b/project/cmake/modules/FindDBus.cmake
@@ -0,0 +1,52 @@
1#.rst:
2# FindDBUS
3# -------
4# Finds the DBUS library
5#
6# This will will define the following variables::
7#
8# DBUS_FOUND - system has DBUS
9# DBUS_INCLUDE_DIRS - the DBUS include directory
10# DBUS_LIBRARIES - the DBUS libraries
11# DBUS_DEFINITIONS - the DBUS definitions
12#
13# and the following imported targets::
14#
15# DBus::DBus - The DBUS library
16
17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_DBUS dbus-1 QUIET)
19endif()
20
21find_path(DBUS_INCLUDE_DIR NAMES dbus/dbus.h
22 PATH_SUFFIXES dbus-1.0
23 PATHS ${PC_DBUS_INCLUDE_DIR})
24find_path(DBUS_ARCH_INCLUDE_DIR NAMES dbus/dbus-arch-deps.h
25 PATH_SUFFIXES dbus-1.0/include
26 PATHS ${PC_DBUS_LIBDIR}
27 /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE})
28find_library(DBUS_LIBRARY NAMES dbus-1
29 PATHS ${PC_DBUS_LIBDIR})
30
31set(DBUS_VERSION ${PC_DBUS_VERSION})
32
33include(FindPackageHandleStandardArgs)
34find_package_handle_standard_args(DBus
35 REQUIRED_VARS DBUS_LIBRARY DBUS_INCLUDE_DIR DBUS_ARCH_INCLUDE_DIR
36 VERSION_VAR DBUS_VERSION)
37
38if(DBUS_FOUND)
39 set(DBUS_LIBRARIES ${DBUS_LIBRARY})
40 set(DBUS_INCLUDE_DIRS ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
41 set(DBUS_DEFINITIONS -DHAVE_DBUS=1)
42
43 if(NOT TARGET DBus::DBus)
44 add_library(DBus::DBus UNKNOWN IMPORTED)
45 set_target_properties(DBus::DBus PROPERTIES
46 IMPORTED_LOCATION "${DBUS_LIBRARY}"
47 INTERFACE_INCLUDE_DIRECTORIES "${DBUS_INCLUDE_DIR}"
48 INTERFACE_COMPILE_DEFINITIONS HAVE_DBUS=1)
49 endif()
50endif()
51
52mark_as_advanced(DBUS_INCLUDE_DIR DBUS_LIBRARY)
diff --git a/project/cmake/modules/FindDbus.cmake b/project/cmake/modules/FindDbus.cmake
deleted file mode 100644
index cdc3f52..0000000
--- a/project/cmake/modules/FindDbus.cmake
+++ /dev/null
@@ -1,21 +0,0 @@
1# - Try to find dbus
2# Once done this will define
3#
4# DBUS_FOUND - system has libdbus
5# DBUS_INCLUDE_DIRS - the libdbus include directory
6# DBUS_LIBRARIES - The libdbus libraries
7
8if(PKG_CONFIG_FOUND)
9 pkg_check_modules (DBUS dbus-1)
10endif()
11
12if(DBUS_FOUND)
13 find_path(DBUS_INCLUDE_DIRS dbus/dbus.h PATH_SUFFIXES dbus-1.0)
14 find_library(DBUS_LIBRARIES dbus-1.0)
15endif()
16
17include(FindPackageHandleStandardArgs)
18find_package_handle_standard_args(Dbus DEFAULT_MSG DBUS_INCLUDE_DIRS DBUS_LIBRARIES)
19
20list(APPEND DBUS_DEFINITIONS -DHAVE_DBUS=1)
21mark_as_advanced(DBUS_INCLUDE_DIRS DBUS_LIBRARIES DBUS_DEFINITIONS)
diff --git a/project/cmake/modules/FindEMBEDDED.cmake b/project/cmake/modules/FindEMBEDDED.cmake
index bc1b456..aa938c5 100644
--- a/project/cmake/modules/FindEMBEDDED.cmake
+++ b/project/cmake/modules/FindEMBEDDED.cmake
@@ -11,7 +11,6 @@ endif()
11string(REGEX MATCH "^arm" TARGET_ARCH_ARM "${CMAKE_SYSTEM_PROCESSOR}") 11string(REGEX MATCH "^arm" TARGET_ARCH_ARM "${CMAKE_SYSTEM_PROCESSOR}")
12if(NOT CMAKE_CROSSCOMPILING AND NOT TARGET_ARCH_ARM) 12if(NOT CMAKE_CROSSCOMPILING AND NOT TARGET_ARCH_ARM)
13 return() 13 return()
14endif(NOT CMAKE_CROSSCOMPILING AND NOT TARGET_ARCH_ARM) 14endif()
15 15
16find_path(EMBEDDED_FOUND NAMES include/linux/imxfb.h include/bcm_host.h PATHS /opt/vc) 16find_path(EMBEDDED_FOUND NAMES include/linux/imxfb.h include/bcm_host.h PATHS /opt/vc)
17
diff --git a/project/cmake/modules/FindFFMPEG.cmake b/project/cmake/modules/FindFFMPEG.cmake
index 7f8e37f..a9f88fb 100644
--- a/project/cmake/modules/FindFFMPEG.cmake
+++ b/project/cmake/modules/FindFFMPEG.cmake
@@ -12,6 +12,18 @@ if(ENABLE_INTERNAL_FFMPEG)
12 if(FFMPEG_PATH) 12 if(FFMPEG_PATH)
13 message(WARNING "Internal FFmpeg enabled, but FFMPEG_PATH given, ignoring") 13 message(WARNING "Internal FFmpeg enabled, but FFMPEG_PATH given, ignoring")
14 endif() 14 endif()
15
16 # allow user to override the download URL with a local tarball
17 # needed for offline build envs
18 if(FFMPEG_URL)
19 get_filename_component(FFMPEG_URL "${FFMPEG_URL}" ABSOLUTE)
20 else()
21 set(FFMPEG_URL ${FFMPEG_BASE_URL}/${FFMPEG_VER}.tar.gz)
22 endif()
23 if(VERBOSE)
24 message(STATUS "FFMPEG_URL: ${FFMPEG_URL}")
25 endif()
26
15 if(CMAKE_CROSSCOMPILING) 27 if(CMAKE_CROSSCOMPILING)
16 set(CROSS_ARGS -DDEPENDS_PATH=${DEPENDS_PATH} 28 set(CROSS_ARGS -DDEPENDS_PATH=${DEPENDS_PATH}
17 -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} 29 -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}
@@ -28,7 +40,9 @@ if(ENABLE_INTERNAL_FFMPEG)
28 endif() 40 endif()
29 41
30 externalproject_add(ffmpeg 42 externalproject_add(ffmpeg
31 URL ${FFMPEG_BASE_URL}/${FFMPEG_VER}.tar.gz 43 URL ${FFMPEG_URL}
44 DOWNLOAD_NAME ffmpeg-${FFMPEG_VER}.tar.gz
45 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
32 PREFIX ${CORE_BUILD_DIR}/ffmpeg 46 PREFIX ${CORE_BUILD_DIR}/ffmpeg
33 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} 47 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
34 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} 48 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
@@ -44,7 +58,7 @@ if(ENABLE_INTERNAL_FFMPEG)
44 58
45 file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper 59 file(WRITE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg/ffmpeg-link-wrapper
46"#!/bin/bash 60"#!/bin/bash
47if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}-test* ]] 61if [[ $@ == *${APP_NAME_LC}.bin* || $@ == *${APP_NAME_LC}.so* || $@ == *${APP_NAME_LC}-test* ]]
48then 62then
49 avformat=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavcodec` 63 avformat=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavcodec`
50 avcodec=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavformat` 64 avcodec=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libavformat`
@@ -53,8 +67,7 @@ then
53 swscale=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswscale` 67 swscale=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswscale`
54 swresample=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswresample` 68 swresample=`PKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig ${PKG_CONFIG_EXECUTABLE} --libs --static libswresample`
55 gnutls=`PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig/ ${PKG_CONFIG_EXECUTABLE} --libs-only-l --static --silence-errors gnutls` 69 gnutls=`PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig/ ${PKG_CONFIG_EXECUTABLE} --libs-only-l --static --silence-errors gnutls`
56 vorbisenc=`PKG_CONFIG_PATH=${DEPENDS_PATH}/lib/pkgconfig/ ${PKG_CONFIG_EXECUTABLE} --libs-only-l --static --silence-errors vorbisenc` 70 $@ $avcodec $avformat $avcodec $avfilter $swscale $swresample -lpostproc $gnutls
57 $@ $avcodec $avformat $avcodec $avfilter $swscale $swresample -lpostproc $gnutls $vorbisenc
58else 71else
59 $@ 72 $@
60fi") 73fi")
@@ -62,6 +75,7 @@ fi")
62 DESTINATION ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR} 75 DESTINATION ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
63 FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE) 76 FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE)
64 set(FFMPEG_LINK_EXECUTABLE "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg-link-wrapper <CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" PARENT_SCOPE) 77 set(FFMPEG_LINK_EXECUTABLE "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg-link-wrapper <CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" PARENT_SCOPE)
78 set(FFMPEG_CREATE_SHARED_LIBRARY "${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/ffmpeg-link-wrapper <CMAKE_CXX_COMPILER> <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <SONAME_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>" PARENT_SCOPE)
65 set(FFMPEG_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) 79 set(FFMPEG_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
66 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\" 80 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\"
67 -DUSE_STATIC_FFMPEG=1) 81 -DUSE_STATIC_FFMPEG=1)
@@ -72,10 +86,11 @@ else()
72 endif() 86 endif()
73 set(FFMPEG_PKGS libavcodec>=56.26.100 libavfilter>=5.11.100 libavformat>=56.25.101 87 set(FFMPEG_PKGS libavcodec>=56.26.100 libavfilter>=5.11.100 libavformat>=56.25.101
74 libavutil>=54.20.100 libswscale>=3.1.101 libswresample>=1.1.100 libpostproc>=53.3.100) 88 libavutil>=54.20.100 libswscale>=3.1.101 libswresample>=1.1.100 libpostproc>=53.3.100)
75 if(PKG_CONFIG_FOUND) 89 if(PKG_CONFIG_FOUND AND NOT WIN32)
76 pkg_check_modules (FFMPEG ${FFMPEG_PKGS}) 90 pkg_check_modules (FFMPEG ${FFMPEG_PKGS})
77 string(REGEX REPLACE "framework;" "framework " FFMPEG_LDFLAGS "${FFMPEG_LDFLAGS}") 91 string(REGEX REPLACE "framework;" "framework " FFMPEG_LDFLAGS "${FFMPEG_LDFLAGS}")
78 set(FFMPEG_LIBRARIES ${FFMPEG_LDFLAGS}) 92 set(FFMPEG_LIBRARIES ${FFMPEG_LDFLAGS})
93 add_custom_target(ffmpeg)
79 else() 94 else()
80 find_path(FFMPEG_INCLUDE_DIRS libavcodec/avcodec.h PATH_SUFFIXES ffmpeg) 95 find_path(FFMPEG_INCLUDE_DIRS libavcodec/avcodec.h PATH_SUFFIXES ffmpeg)
81 find_library(FFMPEG_LIBAVCODEC NAMES avcodec libavcodec PATH_SUFFIXES ffmpeg/libavcodec) 96 find_library(FFMPEG_LIBAVCODEC NAMES avcodec libavcodec PATH_SUFFIXES ffmpeg/libavcodec)
@@ -94,5 +109,6 @@ else()
94 set(FFMPEG_FOUND 1) 109 set(FFMPEG_FOUND 1)
95 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\") 110 list(APPEND FFMPEG_DEFINITIONS -DFFMPEG_VER_SHA=\"${FFMPEG_VER}\")
96endif() 111endif()
112set_target_properties(ffmpeg PROPERTIES FOLDER "External Projects")
97 113
98mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES FFMPEG_DEFINITIONS FFMPEG_FOUND) 114mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES FFMPEG_DEFINITIONS FFMPEG_FOUND)
diff --git a/project/cmake/modules/FindFreeType.cmake b/project/cmake/modules/FindFreeType.cmake
index a1e69ab..fb4c668 100644
--- a/project/cmake/modules/FindFreeType.cmake
+++ b/project/cmake/modules/FindFreeType.cmake
@@ -1,18 +1,45 @@
1# - Try to find freetype 1#.rst:
2# Once done this will define 2# FindFreetype
3# ------------
4# Finds the FreeType library
3# 5#
4# FREETYPE_FOUND - system has freetype 6# This will will define the following variables::
5# FREETYPE_INCLUDE_DIRS - the freetype include directory 7#
6# FREETYPE_LIBRARIES - The freetype libraries 8# FREETYPE_FOUND - system has FreeType
9# FREETYPE_INCLUDE_DIRS - the FreeType include directory
10# FREETYPE_LIBRARIES - the FreeType libraries
11#
12# and the following imported targets::
13#
14# FreeType::FreeType - The FreeType library
7 15
8if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
9 pkg_check_modules (FREETYPE freetype2) 17 pkg_check_modules(PC_FREETYPE freetype2 QUIET)
10else()
11 find_path(FREETYPE_INCLUDE_DIRS freetype/freetype.h)
12 find_library(FREETYPE_LIBRARIES NAMES freetype freetype246MT)
13endif() 18endif()
14 19
20find_path(FREETYPE_INCLUDE_DIR NAMES freetype/freetype.h freetype.h
21 PATHS ${PC_FREETYPE_INCLUDEDIR}
22 ${PC_FREETYPE_INCLUDE_DIRS})
23find_library(FREETYPE_LIBRARY NAMES freetype freetype246MT
24 PATHS ${PC_FREETYPE_LIBDIR})
25
26set(FREETYPE_VERSION ${PC_FREETYPE_VERSION})
27
15include(FindPackageHandleStandardArgs) 28include(FindPackageHandleStandardArgs)
16find_package_handle_standard_args(FreeType DEFAULT_MSG FREETYPE_INCLUDE_DIRS FREETYPE_LIBRARIES) 29find_package_handle_standard_args(FreeType
30 REQUIRED_VARS FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR
31 VERSION_VAR FREETYPE_VERSION)
32
33if(FREETYPE_FOUND)
34 set(FREETYPE_LIBRARIES ${FREETYPE_LIBRARY})
35 set(FREETYPE_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR})
36
37 if(NOT TARGET FreeType::FreeType)
38 add_library(FreeType::FreeType UNKNOWN IMPORTED)
39 set_target_properties(FreeType::FreeType PROPERTIES
40 IMPORTED_LOCATION "${FREETYPE_LIBRARY}"
41 INTERFACE_INCLUDE_DIRECTORIES "${FREETYPE_INCLUDE_DIR}")
42 endif()
43endif()
17 44
18mark_as_advanced(FREETYPE_INCLUDE_DIRS FREETYPE_LIBRARIES) 45mark_as_advanced(FREETYPE_INCLUDE_DIR FREETYPE_LIBRARY)
diff --git a/project/cmake/modules/FindFribidi.cmake b/project/cmake/modules/FindFribidi.cmake
index 65a8d8b..03c2f53 100644
--- a/project/cmake/modules/FindFribidi.cmake
+++ b/project/cmake/modules/FindFribidi.cmake
@@ -1,18 +1,44 @@
1# - Try to find Fribidi 1#.rst:
2# Once done this will define 2# FindFribidi
3# -----------
4# Finds the GNU FriBidi library
3# 5#
4# FRIBIDI_FOUND - system has fribidi 6# This will will define the following variables::
5# FRIBIDI_INCLUDE_DIRS - the fribidi include directory 7#
6# FRIBIDI_LIBRARIES - The fribidi libraries 8# FRIBIDI_FOUND - system has FriBidi
9# FRIBIDI_INCLUDE_DIRS - the FriBidi include directory
10# FRIBIDI_LIBRARIES - the FriBidi libraries
11#
12# and the following imported targets::
13#
14# FriBidi::FriBidi - The FriBidi library
7 15
8if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
9 pkg_check_modules (FRIBIDI fribidi) 17 pkg_check_modules(PC_FRIBIDI fribidi QUIET)
10else()
11 find_path(FRIBIDI_INCLUDE_DIRS fribidi/fribidi.h)
12 find_library(FRIBIDI_LIBRARIES NAMES fribidi libfribidi)
13endif() 18endif()
14 19
20find_path(FRIBIDI_INCLUDE_DIR NAMES fribidi/fribidi.h
21 PATHS ${PC_FRIBIDI_INCLUDEDIR})
22find_library(FRIBIDI_LIBRARY NAMES fribidi libfribidi
23 PATHS ${PC_FRIBIDI_LIBDIR})
24
25set(FRIBIDI_VERSION ${PC_FRIBIDI_VERSION})
26
15include(FindPackageHandleStandardArgs) 27include(FindPackageHandleStandardArgs)
16find_package_handle_standard_args(Fribidi DEFAULT_MSG FRIBIDI_INCLUDE_DIRS FRIBIDI_LIBRARIES) 28find_package_handle_standard_args(FriBidi
29 REQUIRED_VARS FRIBIDI_LIBRARY FRIBIDI_INCLUDE_DIR
30 VERSION_VAR FRIBIDI_VERSION)
31
32if(FRIBIDI_FOUND)
33 set(FRIBIDI_LIBRARIES ${FRIBIDI_LIBRARY})
34 set(FRIBIDI_INCLUDE_DIRS ${FRIBIDI_INCLUDE_DIR})
35
36 if(NOT TARGET FriBidi::FriBidi)
37 add_library(FriBidi::FriBidi UNKNOWN IMPORTED)
38 set_target_properties(FriBidi::FriBidi PROPERTIES
39 IMPORTED_LOCATION "${FRIBIDI_LIBRARY}"
40 INTERFACE_INCLUDE_DIRECTORIES "${FRIBIDI_INCLUDE_DIR}")
41 endif()
42endif()
17 43
18mark_as_advanced(FRIBIDI_INCLUDE_DIRS FRIBIDI_LIBRARIES) 44mark_as_advanced(FRIBIDI_INCLUDE_DIR FRIBIDI_LIBRARY)
diff --git a/project/cmake/modules/FindJsonSchemaBuilder.cmake b/project/cmake/modules/FindJsonSchemaBuilder.cmake
index 78e8d0a..ecff1e4 100644
--- a/project/cmake/modules/FindJsonSchemaBuilder.cmake
+++ b/project/cmake/modules/FindJsonSchemaBuilder.cmake
@@ -12,8 +12,10 @@ if(NOT TARGET JsonSchemaBuilder::JsonSchemaBuilder)
12 add_executable(JsonSchemaBuilder::JsonSchemaBuilder IMPORTED GLOBAL) 12 add_executable(JsonSchemaBuilder::JsonSchemaBuilder IMPORTED GLOBAL)
13 set_target_properties(JsonSchemaBuilder::JsonSchemaBuilder PROPERTIES 13 set_target_properties(JsonSchemaBuilder::JsonSchemaBuilder PROPERTIES
14 IMPORTED_LOCATION "${NATIVEPREFIX}/bin/JsonSchemaBuilder") 14 IMPORTED_LOCATION "${NATIVEPREFIX}/bin/JsonSchemaBuilder")
15 set_target_properties(JsonSchemaBuilder::JsonSchemaBuilder PROPERTIES FOLDER Tools)
15 else() 16 else()
16 add_subdirectory(${CORE_SOURCE_DIR}/tools/depends/native/JsonSchemaBuilder build/jsonschemabuilder) 17 add_subdirectory(${CORE_SOURCE_DIR}/tools/depends/native/JsonSchemaBuilder build/jsonschemabuilder)
17 add_executable(JsonSchemaBuilder::JsonSchemaBuilder ALIAS JsonSchemaBuilder) 18 add_executable(JsonSchemaBuilder::JsonSchemaBuilder ALIAS JsonSchemaBuilder)
19 set_target_properties(JsonSchemaBuilder PROPERTIES FOLDER Tools)
18 endif() 20 endif()
19endif() 21endif()
diff --git a/project/cmake/modules/FindLibDRM.cmake b/project/cmake/modules/FindLibDRM.cmake
new file mode 100644
index 0000000..35d632e
--- /dev/null
+++ b/project/cmake/modules/FindLibDRM.cmake
@@ -0,0 +1,45 @@
1#.rst:
2# FindLibDRM
3# ----------
4# Finds the LibDRM library
5#
6# This will will define the following variables::
7#
8# LIBDRM_FOUND - system has LibDRM
9# LIBDRM_INCLUDE_DIRS - the LibDRM include directory
10# LIBDRM_LIBRARIES - the LibDRM libraries
11#
12# and the following imported targets::
13#
14# LibDRM::LibDRM - The LibDRM library
15
16if(PKG_CONFIG_FOUND)
17 pkg_check_modules(PC_LIBDRM libdrm QUIET)
18endif()
19
20find_path(LIBDRM_INCLUDE_DIR NAMES drm.h
21 PATH_SUFFIXES libdrm drm
22 PATHS ${PC_LIBDRM_INCLUDEDIR})
23find_library(LIBDRM_LIBRARY NAMES drm
24 PATHS ${PC_LIBDRM_LIBDIR})
25
26set(LIBDRM_VERSION ${PC_LIBDRM_VERSION})
27
28include(FindPackageHandleStandardArgs)
29find_package_handle_standard_args(LibDRM
30 REQUIRED_VARS LIBDRM_LIBRARY LIBDRM_INCLUDE_DIR
31 VERSION_VAR LIBDRM_VERSION)
32
33if(LIBDRM_FOUND)
34 set(LIBDRM_LIBRARIES ${LIBDRM_LIBRARY})
35 set(LIBDRM_INCLUDE_DIRS ${LIBDRM_INCLUDE_DIR})
36
37 if(NOT TARGET LIBDRM::LIBDRM)
38 add_library(LIBDRM::LIBDRM UNKNOWN IMPORTED)
39 set_target_properties(LIBDRM::LIBDRM PROPERTIES
40 IMPORTED_LOCATION "${LIBDRM_LIBRARY}"
41 INTERFACE_INCLUDE_DIRECTORIES "${LIBDRM_INCLUDE_DIR}")
42 endif()
43endif()
44
45mark_as_advanced(LIBDRM_INCLUDE_DIR LIBDRM_LIBRARY)
diff --git a/project/cmake/modules/FindLibDvd.cmake b/project/cmake/modules/FindLibDvd.cmake
index f281773..fa644d6 100644
--- a/project/cmake/modules/FindLibDvd.cmake
+++ b/project/cmake/modules/FindLibDvd.cmake
@@ -1,106 +1,206 @@
1set(dvdlibs libdvdread libdvdnav)
2if(ENABLE_DVDCSS)
3 list(APPEND dvdlibs libdvdcss)
4endif()
5
6if(NOT WIN32) 1if(NOT WIN32)
7 foreach(dvdlib ${dvdlibs})
8 file(GLOB VERSION_FILE ${CORE_SOURCE_DIR}/tools/depends/target/${dvdlib}/DVD*-VERSION)
9 file(STRINGS ${VERSION_FILE} VER)
10 string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}")
11 list(GET ${dvdlib}_VER 0 ${dvdlib}_VER)
12 string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER)
13 string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}")
14 list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL)
15 string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL)
16 endforeach()
17
18 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
19 if(CMAKE_CROSSCOMPILING) 2 if(CMAKE_CROSSCOMPILING)
20 set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}") 3 set(_dvdlibs dvdread dvdnav)
21 endif() 4 set(_handlevars LIBDVD_INCLUDE_DIRS DVDREAD_LIBRARY DVDNAV_LIBRARY)
5 if(ENABLE_DVDCSS)
6 list(APPEND _dvdlibs libdvdcss)
7 list(APPEND _handlevars DVDCSS_LIBRARY)
8 endif()
9
10 if(PKG_CONFIG_FOUND)
11 pkg_check_modules(PC_DVD ${_dvdlibs} QUIET)
12 endif()
13
14 find_path(LIBDVD_INCLUDE_DIRS dvdnav/dvdnav.h PATHS ${PC_DVD_INCLUDE_DIRS})
15 find_library(DVDREAD_LIBRARY NAMES dvdread libdvdread PATHS ${PC_DVD_dvdread_LIBDIR})
16 find_library(DVDNAV_LIBRARY NAMES dvdnav libdvdnav PATHS ${PC_DVD_dvdnav_LIBDIR})
17 if(ENABLE_DVDCSS)
18 find_library(DVDCSS_LIBRARY NAMES dvdcss libdvdcss PATHS ${PC_DVD_libdvdcss_LIBDIR})
19 endif()
20
21 include(FindPackageHandleStandardArgs)
22 find_package_handle_standard_args(LIBDVD REQUIRED_VARS ${_handlevars})
23 if(LIBDVD_FOUND)
24 add_library(dvdnav UNKNOWN IMPORTED)
25 set_target_properties(dvdnav PROPERTIES
26 FOLDER "External Projects"
27 IMPORTED_LOCATION "${DVDNAV_LIBRARY}")
28
29 add_library(dvdread UNKNOWN IMPORTED)
30 set_target_properties(dvdread PROPERTIES
31 FOLDER "External Projects"
32 IMPORTED_LOCATION "${DVDREAD_LIBRARY}")
33 add_library(dvdcss UNKNOWN IMPORTED)
34 set_target_properties(dvdcss PROPERTIES
35 FOLDER "External Projects"
36 IMPORTED_LOCATION "${DVDCSS_LIBRARY}")
22 37
23 if(APPLE) 38 set(_linklibs ${DVDREAD_LIBRARY})
39 if(ENABLE_DVDCSS)
40 list(APPEND _linklibs ${DVDCSS_LIBRARY})
41 endif()
42 core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_linklibs}")
43 set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY})
44 mark_as_advanced(LIBDVD_INCLUDE_DIRS LIBDVD_LIBRARIES)
45 endif()
46 else()
47 set(dvdlibs libdvdread libdvdnav)
48 if(ENABLE_DVDCSS)
49 list(APPEND dvdlibs libdvdcss)
50 endif()
51 foreach(dvdlib ${dvdlibs})
52 file(GLOB VERSION_FILE ${CORE_SOURCE_DIR}/tools/depends/target/${dvdlib}/DVD*-VERSION)
53 file(STRINGS ${VERSION_FILE} VER)
54 string(REGEX MATCH "VERSION=[^ ]*$.*" ${dvdlib}_VER "${VER}")
55 list(GET ${dvdlib}_VER 0 ${dvdlib}_VER)
56 string(SUBSTRING "${${dvdlib}_VER}" 8 -1 ${dvdlib}_VER)
57 string(REGEX MATCH "BASE_URL=([^ ]*)" ${dvdlib}_BASE_URL "${VER}")
58 list(GET ${dvdlib}_BASE_URL 0 ${dvdlib}_BASE_URL)
59 string(SUBSTRING "${${dvdlib}_BASE_URL}" 9 -1 ${dvdlib}_BASE_URL)
60 string(TOUPPER ${dvdlib} DVDLIB)
61
62 # allow user to override the download URL with a local tarball
63 # needed for offline build envs
64 # allow upper and lowercase var name
65 if(${dvdlib}_URL)
66 set(${DVDLIB}_URL ${${dvdlib}_URL})
67 endif()
68 if(${DVDLIB}_URL)
69 get_filename_component(${DVDLIB}_URL "${${DVDLIB}_URL}" ABSOLUTE)
70 else()
71 set(${DVDLIB}_URL ${${dvdlib}_BASE_URL}/archive/${${dvdlib}_VER}.tar.gz)
72 endif()
73 if(VERBOSE)
74 message(STATUS "${DVDLIB}_URL: ${${DVDLIB}_URL}")
75 endif()
76 endforeach()
77
78 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
79 if(CMAKE_CROSSCOMPILING)
80 set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}")
81 endif()
82
83 if(APPLE)
24 set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation") 84 set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation")
25 endif() 85 endif()
86
87 set(HOST_ARCH ${ARCH})
88 if(CORE_SYSTEM_NAME STREQUAL android)
89 if(ARCH STREQUAL arm)
90 set(HOST_ARCH arm-linux-androideabi)
91 elseif(ARCH STREQUAL aarch64)
92 set(HOST_ARCH aarch64-linux-android)
93 elseif(ARCH STREQUAL i486-linux)
94 set(HOST_ARCH i686-linux-android)
95 endif()
96 endif()
26 97
27 if(ENABLE_DVDCSS) 98 if(ENABLE_DVDCSS)
28 ExternalProject_ADD(dvdcss URL ${libdvdcss_BASE_URL}/archive/${libdvdcss_VER}.tar.gz 99 set(DVDCSS_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a)
100 ExternalProject_Add(dvdcss URL ${LIBDVDCSS_URL}
101 DOWNLOAD_NAME libdvdcss-${libdvdcss_VER}.tar.gz
102 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
103 PREFIX ${CORE_BUILD_DIR}/libdvd
104 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
105 --target=${HOST_ARCH}
106 --host=${HOST_ARCH}
107 --disable-doc
108 --enable-static
109 --disable-shared
110 --with-pic
111 --prefix=<INSTALL_DIR>
112 --libdir=<INSTALL_DIR>/lib
113 "${EXTRA_FLAGS}"
114 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
115 "LDFLAGS=${CMAKE_LD_FLAGS}"
116 BUILD_BYPRODUCTS ${DVDCSS_LIBRARY})
117 ExternalProject_Add_Step(dvdcss autoreconf
118 DEPENDEES download update patch
119 DEPENDERS configure
120 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
121 WORKING_DIRECTORY <SOURCE_DIR>)
122
123 set_target_properties(dvdcss PROPERTIES FOLDER "External Projects")
124 endif()
125
126 set(DVDREAD_CFLAGS "-D_XBMC")
127 if(ENABLE_DVDCSS)
128 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
129 endif()
130
131 set(DVDREAD_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a)
132 ExternalProject_Add(dvdread URL ${LIBDVDREAD_URL}
133 DOWNLOAD_NAME libdvdread-${libdvdread_VER}.tar.gz
134 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
135 PREFIX ${CORE_BUILD_DIR}/libdvd
136 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
137 --target=${HOST_ARCH}
138 --host=${HOST_ARCH}
139 --enable-static
140 --disable-shared
141 --with-pic
142 --prefix=<INSTALL_DIR>
143 --libdir=<INSTALL_DIR>/lib
144 "${EXTRA_FLAGS}"
145 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
146 "LDFLAGS=${CMAKE_LD_FLAGS}"
147 BUILD_BYPRODUCTS ${DVDREAD_LIBRARY})
148 ExternalProject_Add_Step(dvdread autoreconf
149 DEPENDEES download update patch
150 DEPENDERS configure
151 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
152 WORKING_DIRECTORY <SOURCE_DIR>)
153 if(ENABLE_DVDCSS)
154 add_dependencies(dvdread dvdcss)
155 endif()
156
157 set_target_properties(dvdread PROPERTIES FOLDER "External Projects")
158
159 if(ENABLE_DVDCSS)
160 set(DVDNAV_LIBS -ldvdcss)
161 endif()
162
163 set(DVDNAV_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a)
164 ExternalProject_Add(dvdnav URL ${LIBDVDNAV_URL}
165 DOWNLOAD_NAME libdvdnav-${libdvdnav_VER}.tar.gz
166 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
29 PREFIX ${CORE_BUILD_DIR}/libdvd 167 PREFIX ${CORE_BUILD_DIR}/libdvd
30 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
31 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure 168 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
32 --target=${ARCH} 169 --target=${HOST_ARCH}
33 --host=${ARCH} 170 --host=${HOST_ARCH}
34 --disable-doc 171 --enable-static
35 --enable-static 172 --disable-shared
36 --disable-shared 173 --with-pic
37 --with-pic 174 --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd
38 --prefix=<INSTALL_DIR> 175 --libdir=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib
39 "${EXTRA_FLAGS}" 176 "${EXTRA_FLAGS}"
40 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" 177 "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib"
41 "LDFLAGS=${CMAKE_LD_FLAGS}") 178 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
42 179 "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}"
43 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a 180 "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la"
44 system/players/VideoPlayer/libdvdcss dvdcss) 181 "LIBS=${DVDNAV_LIBS}"
45 endif() 182 BUILD_BYPRODUCTS ${DVDNAV_LIBRARY})
183 ExternalProject_Add_Step(dvdnav autoreconf
184 DEPENDEES download update patch
185 DEPENDERS configure
186 COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
187 WORKING_DIRECTORY <SOURCE_DIR>)
188 add_dependencies(dvdnav dvdread)
189 set_target_properties(dvdnav PROPERTIES FOLDER "External Projects")
46 190
47 set(DVDREAD_CFLAGS "-D_XBMC") 191 set(_dvdlibs ${DVDREAD_LIBRARY} ${DVDCSS_LIBRARY})
48 if(ENABLE_DVDCSS) 192 # link a shared dvdnav library that includes the whole archives of dvdread and dvdcss as well
49 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -DHAVE_DVDCSS_DVDCSS_H -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") 193 # the quotes around _dvdlibs are on purpose, since we want to pass a list to the function that will be unpacked automatically
50 endif(ENABLE_DVDCSS) 194 core_link_library(${DVDNAV_LIBRARY} system/players/VideoPlayer/libdvdnav dvdnav archives "${_dvdlibs}")
51
52 ExternalProject_ADD(dvdread URL ${libdvdread_BASE_URL}/archive/${libdvdread_VER}.tar.gz
53 PREFIX ${CORE_BUILD_DIR}/libdvd
54 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
55 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
56 --target=${ARCH}
57 --host=${ARCH}
58 --enable-static
59 --disable-shared
60 --with-pic
61 --prefix=<INSTALL_DIR>
62 "${EXTRA_FLAGS}"
63 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
64 "LDFLAGS=${CMAKE_LD_FLAGS}")
65 if(ENABLE_DVDCSS)
66 add_dependencies(dvdread dvdcss)
67 endif()
68 195
69 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a 196 set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include)
70 system/players/VideoPlayer/libdvdread dvdread) 197 set(LIBDVD_LIBRARIES ${DVDNAV_LIBRARY} ${DVDREAD_LIBRARY})
71 198 if(ENABLE_DVDCSS)
72 if(ENABLE_DVDCSS) 199 list(APPEND LIBDVD_LIBRARIES ${DVDCSS_LIBRARY})
73 set(DVDNAV_LIBS -ldvdcss) 200 endif()
74 endif(ENABLE_DVDCSS) 201 set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE)
75 202 set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE)
76 ExternalProject_ADD(dvdnav URL ${libdvdnav_BASE_URL}/archive/${libdvdnav_VER}.tar.gz 203 endif()
77 PREFIX ${CORE_BUILD_DIR}/libdvd
78 UPDATE_COMMAND PATH=${NATIVEPREFIX}/bin:$ENV{PATH} autoreconf -vif
79 CONFIGURE_COMMAND ac_cv_path_GIT= <SOURCE_DIR>/configure
80 --target=${ARCH}
81 --host=${ARCH}
82 --enable-static
83 --disable-shared
84 --with-pic
85 --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd
86 "${EXTRA_FLAGS}"
87 "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib"
88 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
89 "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}"
90 "DVDREAD_LIBS=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.la"
91 "LIBS=${DVDNAV_LIBS}")
92 add_dependencies(dvdnav dvdread)
93 core_link_library(${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a
94 system/players/VideoPlayer/libdvdnav dvdnav)
95
96 set(LIBDVD_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include)
97 set(LIBDVD_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdnav.a
98 ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdread.a)
99 if(ENABLE_DVDCSS)
100 list(APPEND LIBDVD_LIBRARIES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib/libdvdcss.a)
101 endif()
102 set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE)
103 set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE)
104else() 204else()
105 # Dynamically loaded on Windows 205 # Dynamically loaded on Windows
106 find_path(LIBDVD_INCLUDE_DIR dvdcss/dvdcss.h PATHS ${CORE_SOURCE_DIR}/lib/libdvd/include) 206 find_path(LIBDVD_INCLUDE_DIR dvdcss/dvdcss.h PATHS ${CORE_SOURCE_DIR}/lib/libdvd/include)
@@ -110,6 +210,9 @@ else()
110 210
111 if(LIBDVD_FOUND) 211 if(LIBDVD_FOUND)
112 set(LIBDVD_INCLUDE_DIRS ${LIBDVD_INCLUDE_DIR}) 212 set(LIBDVD_INCLUDE_DIRS ${LIBDVD_INCLUDE_DIR})
213
214 add_custom_target(dvdnav)
215 set_target_properties(dvdnav PROPERTIES FOLDER "External Projects")
113 endif() 216 endif()
114 217
115 mark_as_advanced(LIBDVD_INCLUDE_DIR) 218 mark_as_advanced(LIBDVD_INCLUDE_DIR)
diff --git a/project/cmake/modules/FindLibSmbClient.cmake b/project/cmake/modules/FindLibSmbClient.cmake
deleted file mode 100644
index 897fa7b..0000000
--- a/project/cmake/modules/FindLibSmbClient.cmake
+++ /dev/null
@@ -1,65 +0,0 @@
1# - Try to find Libsmbclient
2
3if(PKGCONFIG_FOUND)
4 pkg_check_modules(LIBSMBCLIENT smbclient)
5 set(LIBSMBCLIENT_DEFINITIONS -DHAVE_LIBSMBCLIENT=1)
6endif()
7
8if (LIBSMBCLIENT_LIBRARIES AND LIBSMBCLIENT_INCLUDE_DIRS)
9 # in cache already
10 set(LIBSMBCLIENT_FOUND TRUE)
11else (LIBSMBCLIENT_LIBRARIES AND LIBSMBCLIENT_INCLUDE_DIRS)
12 find_path(LIBSMBCLIENT_INCLUDE_DIR
13 NAMES
14 libsmbclient.h
15 PATHS
16 /usr/include
17 /usr/local/include
18 /opt/local/include
19 /sw/include
20 )
21
22 find_library(SMBCLIENT_LIBRARY
23 NAMES
24 smbclient
25 PATHS
26 /usr/lib
27 /usr/local/lib
28 /opt/local/lib
29 /sw/lib
30 )
31
32 if (SMBCLIENT_LIBRARY)
33 set(SMBCLIENT_FOUND TRUE)
34 endif (SMBCLIENT_LIBRARY)
35
36 set(LIBSMBCLIENT_INCLUDE_DIRS
37 ${LIBSMBCLIENT_INCLUDE_DIR}
38 )
39
40 if (SMBCLIENT_FOUND)
41 set(LIBSMBCLIENT_LIBRARIES
42 ${LIBSMBCLIENT_LIBRARIES}
43 ${SMBCLIENT_LIBRARY}
44 )
45 endif (SMBCLIENT_FOUND)
46
47 if (LIBSMBCLIENT_INCLUDE_DIRS AND LIBSMBCLIENT_LIBRARIES)
48 set(LIBSMBCLIENT_FOUND TRUE)
49 endif (LIBSMBCLIENT_INCLUDE_DIRS AND LIBSMBCLIENT_LIBRARIES)
50
51 if (LIBSMBCLIENT_FOUND)
52 if (NOT Libsmbclient_FIND_QUIETLY)
53 message(STATUS "Found Libsmbclient: ${LIBSMBCLIENT_LIBRARIES}")
54 endif (NOT Libsmbclient_FIND_QUIETLY)
55 else (LIBSMBCLIENT_FOUND)
56 if (Libsmbclient_FIND_REQUIRED)
57 message(FATAL_ERROR "Could not find Libsmbclient")
58 endif (Libsmbclient_FIND_REQUIRED)
59 endif (LIBSMBCLIENT_FOUND)
60 set(LIBSMBCLIENT_DEFINITIONS -DHAVE_LIBSMBCLIENT=1)
61
62 # show the LIBSMBCLIENT_INCLUDE_DIRS and LIBSMBCLIENT_LIBRARIES variables only in the advanced view
63 mark_as_advanced(LIBSMBCLIENT_INCLUDE_DIRS LIBSMBCLIENT_LIBRARIES LIBSMBCLIENT_DEFINITIONS)
64
65endif (LIBSMBCLIENT_LIBRARIES AND LIBSMBCLIENT_INCLUDE_DIRS)
diff --git a/project/cmake/modules/FindLibXml2.cmake b/project/cmake/modules/FindLibXml2.cmake
new file mode 100644
index 0000000..caeb945
--- /dev/null
+++ b/project/cmake/modules/FindLibXml2.cmake
@@ -0,0 +1,84 @@
1#.rst:
2# FindLibXml2
3# -----------
4#
5# Try to find the LibXml2 xml processing library
6#
7# Once done this will define
8#
9# ::
10#
11# LIBXML2_FOUND - System has LibXml2
12# LIBXML2_INCLUDE_DIR - The LibXml2 include directory
13# LIBXML2_LIBRARIES - The libraries needed to use LibXml2
14# LIBXML2_DEFINITIONS - Compiler switches required for using LibXml2
15# LIBXML2_XMLLINT_EXECUTABLE - The XML checking tool xmllint coming with LibXml2
16# LIBXML2_VERSION_STRING - the version of LibXml2 found (since CMake 2.8.8)
17
18#=============================================================================
19# Copyright 2006-2009 Kitware, Inc.
20# Copyright 2006 Alexander Neundorf <neundorf@kde.org>
21# Copyright 2016 Team Kodi
22#
23# Distributed under the OSI-approved BSD License (the "License");
24# see accompanying file Copyright.txt for details.
25#
26# This software is distributed WITHOUT ANY WARRANTY; without even the
27# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
28# See the License for more information.
29#=============================================================================
30# (To distribute this file outside of CMake, substitute the full
31# License text for the above reference.)
32
33# use pkg-config to get the directories and then use these values
34# in the find_path() and find_library() calls
35find_package(PkgConfig QUIET)
36PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
37set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
38
39find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
40 HINTS
41 ${PC_LIBXML_INCLUDEDIR}
42 ${PC_LIBXML_INCLUDE_DIRS}
43 PATH_SUFFIXES libxml2
44 )
45
46find_library(LIBXML2_LIBRARY NAMES xml2 libxml2
47 HINTS
48 ${PC_LIBXML_LIBDIR}
49 ${PC_LIBXML_LIBRARY_DIRS}
50 )
51
52find_program(LIBXML2_XMLLINT_EXECUTABLE xmllint)
53# for backwards compat. with KDE 4.0.x:
54set(XMLLINT_EXECUTABLE "${LIBXML2_XMLLINT_EXECUTABLE}")
55
56# Make sure to use static flags if apropriate
57if(PC_LIBXML_FOUND)
58 if(${LIBXML2_LIBRARY} MATCHES ".+\.a$" AND PC_LIBXML_STATIC_LDFLAGS)
59 set(LIBXML2_LIBRARY ${LIBXML2_LIBRARY} ${PC_LIBXML_STATIC_LDFLAGS})
60 endif()
61endif()
62
63if(PC_LIBXML_VERSION)
64 set(LIBXML2_VERSION_STRING ${PC_LIBXML_VERSION})
65elseif(LIBXML2_INCLUDE_DIR AND EXISTS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h")
66 file(STRINGS "${LIBXML2_INCLUDE_DIR}/libxml/xmlversion.h" libxml2_version_str
67 REGEX "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\".*\"")
68 string(REGEX REPLACE "^#define[\t ]+LIBXML_DOTTED_VERSION[\t ]+\"([^\"]*)\".*" "\\1"
69 LIBXML2_VERSION_STRING "${libxml2_version_str}")
70 unset(libxml2_version_str)
71endif()
72
73
74include(FindPackageHandleStandardArgs)
75FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2
76 REQUIRED_VARS LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR
77 VERSION_VAR LIBXML2_VERSION_STRING)
78
79if(LibXml2_FOUND)
80 set(LIBXML2_LIBRARIES ${LIBXML2_LIBRARY})
81 set(LIBXML2_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
82endif()
83
84mark_as_advanced(LIBXML2_INCLUDE_DIRS LIBXML2_LIBRARIES LIBXML2_XMLLINT_EXECUTABLE)
diff --git a/project/cmake/modules/FindLzo2.cmake b/project/cmake/modules/FindLzo2.cmake
index 33eee10..4f7313f 100644
--- a/project/cmake/modules/FindLzo2.cmake
+++ b/project/cmake/modules/FindLzo2.cmake
@@ -1,22 +1,37 @@
1# - Try to find Lzo2 1#.rst:
2# Once done this will define 2# FindLzo2
3# --------
4# Finds the Lzo2 library
3# 5#
4# Lzo2_FOUND - system has Lzo2 6# This will will define the following variables::
5# Lzo2_INCLUDE_DIR - the Lzo2 include directory
6# Lzo2_LIBRARIES - Link these to use Lzo2
7# Lzo2_NEED_PREFIX - this is set if the functions are prefixed with BZ2_
8
9# Copyright (c) 2006, Alexander Neundorf, <neundorf@kde.org>
10# 7#
11# Redistribution and use is allowed according to the terms of the BSD license. 8# LZO2_FOUND - system has Lzo2
12# For details see the accompanying COPYING-CMAKE-SCRIPTS file. 9# LZO2_INCLUDE_DIRS - the Lzo2 include directory
13 10# LZO2_LIBRARIES - the Lzo2 libraries
11#
12# and the following imported targets::
13#
14# Lzo2::Lzo2 - The Lzo2 library
14 15
15FIND_PATH(LZO2_INCLUDE_DIRS lzo1x.h PATH_SUFFIXES lzo) 16find_path(LZO2_INCLUDE_DIR NAMES lzo1x.h
17 PATH_SUFFIXES lzo)
16 18
17FIND_LIBRARY(LZO2_LIBRARIES NAMES lzo2 liblzo2) 19find_library(LZO2_LIBRARY NAMES lzo2 liblzo2)
18 20
19include(FindPackageHandleStandardArgs) 21include(FindPackageHandleStandardArgs)
20find_package_handle_standard_args(Lzo2 DEFAULT_MSG LZO2_INCLUDE_DIRS LZO2_LIBRARIES) 22find_package_handle_standard_args(Lzo2
23 REQUIRED_VARS LZO2_LIBRARY LZO2_INCLUDE_DIR)
24
25if(LZO2_FOUND)
26 set(LZO2_LIBRARIES ${LZO2_LIBRARY})
27 set(LZO2_INCLUDE_DIRS ${LZO2_INCLUDE_DIR})
28
29 if(NOT TARGET Lzo2::Lzo2)
30 add_library(Lzo2::Lzo2 UNKNOWN IMPORTED)
31 set_target_properties(Lzo2::Lzo2 PROPERTIES
32 IMPORTED_LOCATION "${LZO2_LIBRARY}"
33 INTERFACE_INCLUDE_DIRECTORIES "${LZO2_INCLUDE_DIR}")
34 endif()
35endif()
21 36
22MARK_AS_ADVANCED(LZO2_INCLUDE_DIRS LZO2_LIBRARIES) 37mark_as_advanced(LZO2_INCLUDE_DIR LZO2_LIBRARY)
diff --git a/project/cmake/modules/FindMicroHttpd.cmake b/project/cmake/modules/FindMicroHttpd.cmake
index f73dc77..7d011fa 100644
--- a/project/cmake/modules/FindMicroHttpd.cmake
+++ b/project/cmake/modules/FindMicroHttpd.cmake
@@ -1,106 +1,49 @@
1IF (NOT WIN32) 1#.rst:
2 include(FindPkgConfig) 2# FindMicroHttpd
3 if ( PKG_CONFIG_FOUND ) 3# --------------
4 4# Finds the MicroHttpd library
5 pkg_check_modules (MICROHTTPD libmicrohttpd>=0.4)
6
7 set(MICROHTTPD_DEFINITIONS ${MICROHTTPD_CFLAGS_OTHER})
8 endif(PKG_CONFIG_FOUND)
9endif (NOT WIN32)
10
11# 5#
12# set defaults 6# This will will define the following variables::
13if(NOT MICROHTTPD_FOUND) 7#
14 SET(_microhttpd_HOME "/usr/local") 8# MICROHTTPD_FOUND - system has MicroHttpd
15 SET(_microhttpd_INCLUDE_SEARCH_DIRS 9# MICROHTTPD_INCLUDE_DIRS - the MicroHttpd include directory
16 ${CMAKE_INCLUDE_PATH} 10# MICROHTTPD_LIBRARIES - the MicroHttpd libraries
17 /usr/local/include 11# MICROHTTPD_DEFINITIONS - the MicroHttpd definitions
18 /usr/include 12#
19 ) 13# and the following imported targets::
20 14#
21 SET(_microhttpd_LIBRARIES_SEARCH_DIRS 15# MicroHttpd::MicroHttpd - The MicroHttpd library
22 ${CMAKE_LIBRARY_PATH}
23 /usr/local/lib
24 /usr/lib
25 )
26
27 ##
28 if( "${MICROHTTPD_HOME}" STREQUAL "")
29 if("" MATCHES "$ENV{MICROHTTPD_HOME}")
30 message(STATUS "MICROHTTPD_HOME env is not set, setting it to /usr/local")
31 set (MICROHTTPD_HOME ${_microhttpd_HOME})
32 else("" MATCHES "$ENV{MICROHTTPD_HOME}")
33 set (MICROHTTPD_HOME "$ENV{MICROHTTPD_HOME}")
34 endif("" MATCHES "$ENV{MICROHTTPD_HOME}")
35 else( "${MICROHTTPD_HOME}" STREQUAL "")
36 message(STATUS "MICROHTTPD_HOME is not empty: \"${MICROHTTPD_HOME}\"")
37 endif( "${MICROHTTPD_HOME}" STREQUAL "")
38 ##
39
40 message(STATUS "Looking for microhttpd in ${MICROHTTPD_HOME}")
41
42 IF( NOT ${MICROHTTPD_HOME} STREQUAL "" )
43 SET(_microhttpd_INCLUDE_SEARCH_DIRS ${MICROHTTPD_HOME}/include ${_microhttpd_INCLUDE_SEARCH_DIRS})
44 SET(_microhttpd_LIBRARIES_SEARCH_DIRS ${MICROHTTPD_HOME}/lib ${_microhttpd_LIBRARIES_SEARCH_DIRS})
45 SET(_microhttpd_HOME ${MICROHTTPD_HOME})
46 ENDIF( NOT ${MICROHTTPD_HOME} STREQUAL "" )
47
48 IF( NOT $ENV{MICROHTTPD_INCLUDEDIR} STREQUAL "" )
49 SET(_microhttpd_INCLUDE_SEARCH_DIRS $ENV{MICROHTTPD_INCLUDEDIR} ${_microhttpd_INCLUDE_SEARCH_DIRS})
50 ENDIF( NOT $ENV{MICROHTTPD_INCLUDEDIR} STREQUAL "" )
51 16
52 IF( NOT $ENV{MICROHTTPD_LIBRARYDIR} STREQUAL "" ) 17if(PKG_CONFIG_FOUND)
53 SET(_microhttpd_LIBRARIES_SEARCH_DIRS $ENV{MICROHTTPD_LIBRARYDIR} ${_microhttpd_LIBRARIES_SEARCH_DIRS}) 18 pkg_check_modules(PC_MICROHTTPD libmicrohttpd>=0.4 QUIET)
54 ENDIF( NOT $ENV{MICROHTTPD_LIBRARYDIR} STREQUAL "" ) 19endif()
55 20
56 IF( MICROHTTPD_HOME ) 21find_path(MICROHTTPD_INCLUDE_DIR NAMES microhttpd.h
57 SET(_microhttpd_INCLUDE_SEARCH_DIRS ${MICROHTTPD_HOME}/include ${_microhttpd_INCLUDE_SEARCH_DIRS}) 22 PATHS ${PC_MICROHTTPD_INCLUDEDIR})
58 SET(_microhttpd_LIBRARIES_SEARCH_DIRS ${MICROHTTPD_HOME}/lib ${_microhttpd_LIBRARIES_SEARCH_DIRS}) 23find_library(MICROHTTPD_LIBRARY NAMES microhttpd libmicrohttpd
59 SET(_microhttpd_HOME ${MICROHTTPD_HOME}) 24 PATHS ${PC_MICROHTTPD_LIBDIR})
60 ENDIF( MICROHTTPD_HOME )
61 25
62 # find the include files 26set(MICROHTTPD_VERSION ${PC_MICROHTTPD_VERSION})
63 FIND_PATH(MICROHTTPD_INCLUDE_DIRS microhttpd.h
64 HINTS
65 ${_microhttpd_INCLUDE_SEARCH_DIRS}
66 ${PC_MICROHTTPD_INCLUDEDIR}
67 ${PC_MICROHTTPD_INCLUDE_DIRS}
68 ${CMAKE_INCLUDE_PATH}
69 )
70 27
71 # locate the library 28include(FindPackageHandleStandardArgs)
72 IF(WIN32) 29find_package_handle_standard_args(MicroHttpd
73 SET(MICROHTTPD_LIBRARY_NAMES ${MICROHTTPD_LIBRARY_NAMES} libmicrohttpd.lib) 30 REQUIRED_VARS MICROHTTPD_LIBRARY MICROHTTPD_INCLUDE_DIR
74 ELSE(WIN32) 31 VERSION_VAR MICROHTTPD_VERSION)
75 SET(MICROHTTPD_LIBRARY_NAMES ${MICROHTTPD_LIBRARY_NAMES} libmicrohttpd.a)
76 ENDIF(WIN32)
77 FIND_LIBRARY(MICROHTTPD_LIBRARIES NAMES ${MICROHTTPD_LIBRARY_NAMES}
78 HINTS
79 ${_microhttpd_LIBRARIES_SEARCH_DIRS}
80 ${PC_MICROHTTPD_LIBDIR}
81 ${PC_MICROHTTPD_LIBRARY_DIRS}
82 )
83 32
84 # if the include and the program are found then we have it 33if(MICROHTTPD_FOUND)
85 IF(MICROHTTPD_INCLUDE_DIRS AND MICROHTTPD_LIBRARIES) 34 set(MICROHTTPD_LIBRARIES ${MICROHTTPD_LIBRARY})
86 SET(MICROHTTPD_FOUND "YES") 35 set(MICROHTTPD_INCLUDE_DIRS ${MICROHTTPD_INCLUDE_DIR})
87 ENDIF(MICROHTTPD_INCLUDE_DIRS AND MICROHTTPD_LIBRARIES) 36 set(MICROHTTPD_DEFINITIONS -DHAVE_LIBMICROHTTPD=1)
88 37
89 if( NOT WIN32) 38 if(NOT WIN32)
90 find_library(GCRYPT_LIBRARY gcrypt) 39 find_library(GCRYPT_LIBRARY gcrypt)
91 find_library(GPGERROR_LIBRARY gpg-error) 40 find_library(GPGERROR_LIBRARY gpg-error)
92 list(APPEND MICROHTTPD_LIBRARIES ${GCRYPT_LIBRARY} ${GPGERROR_LIBRARY}) 41 list(APPEND MICROHTTPD_LIBRARIES ${GCRYPT_LIBRARY} ${GPGERROR_LIBRARY})
42 mark_as_advanced(GCRYPT_LIBRARY GPGERROR_LIBRARY)
93 if(NOT APPLE AND NOT CORE_SYSTEM_NAME STREQUAL android) 43 if(NOT APPLE AND NOT CORE_SYSTEM_NAME STREQUAL android)
94 list(APPEND MICROHTTPD_LIBRARIES "-lrt") 44 list(APPEND MICROHTTPD_LIBRARIES "-lrt")
95 endif() 45 endif()
96 endif( NOT WIN32) 46 endif()
97endif() 47endif()
98 48
99list(APPEND MICROHTTPD_DEFINITIONS -DHAVE_LIBMICROHTTPD=1) 49mark_as_advanced(MICROHTTPD_LIBRARY MICROHTTPD_INCLUDE_DIR)
100
101MARK_AS_ADVANCED(
102 MICROHTTPD_FOUND
103 MICROHTTPD_LIBRARIES
104 MICROHTTPD_DEFINITIONS
105 MICROHTTPD_INCLUDE_DIRS
106)
diff --git a/project/cmake/modules/FindMySqlClient.cmake b/project/cmake/modules/FindMySqlClient.cmake
index 2295c81..ceccea3 100644
--- a/project/cmake/modules/FindMySqlClient.cmake
+++ b/project/cmake/modules/FindMySqlClient.cmake
@@ -14,18 +14,34 @@
14# 14#
15# MySqlClient::MySqlClient - The MySqlClient library 15# MySqlClient::MySqlClient - The MySqlClient library
16 16
17# Don't find system wide installed version on Windows
18if(WIN32)
19 set(EXTRA_FIND_ARGS NO_SYSTEM_ENVIRONMENT_PATH)
20else()
21 set(EXTRA_FIND_ARGS)
22endif()
23
17find_path(MYSQLCLIENT_INCLUDE_DIR mysql/mysql_time.h) 24find_path(MYSQLCLIENT_INCLUDE_DIR mysql/mysql_time.h)
18find_library(MYSQLCLIENT_LIBRARY_RELEASE NAMES mysqlclient libmysql 25find_library(MYSQLCLIENT_LIBRARY_RELEASE NAMES mysqlclient libmysql
19 PATH_SUFFIXES mysql) 26 PATH_SUFFIXES mysql
27 ${EXTRA_FIND_ARGS})
20find_library(MYSQLCLIENT_LIBRARY_DEBUG NAMES mysqlclient libmysql 28find_library(MYSQLCLIENT_LIBRARY_DEBUG NAMES mysqlclient libmysql
21 PATH_SUFFIXES mysql) 29 PATH_SUFFIXES mysql
30 ${EXTRA_FIND_ARGS})
31
32if(MYSQLCLIENT_INCLUDE_DIR AND EXISTS "${MYSQLCLIENT_INCLUDE_DIR}/mysql/mysql_version.h")
33 file(STRINGS "${MYSQLCLIENT_INCLUDE_DIR}/mysql/mysql_version.h" mysql_version_str REGEX "^#define[\t ]+LIBMYSQL_VERSION[\t ]+\".*\".*")
34 string(REGEX REPLACE "^#define[\t ]+LIBMYSQL_VERSION[\t ]+\"([^\"]+)\".*" "\\1" MYSQLCLIENT_VERSION_STRING "${mysql_version_str}")
35 unset(mysql_version_str)
36endif()
22 37
23include(SelectLibraryConfigurations) 38include(SelectLibraryConfigurations)
24select_library_configurations(MYSQLCLIENT) 39select_library_configurations(MYSQLCLIENT)
25 40
26include(FindPackageHandleStandardArgs) 41include(FindPackageHandleStandardArgs)
27find_package_handle_standard_args(MYSQLCLIENT 42find_package_handle_standard_args(MySqlClient
28 REQUIRED_VARS MYSQLCLIENT_LIBRARY MYSQLCLIENT_INCLUDE_DIR) 43 REQUIRED_VARS MYSQLCLIENT_LIBRARY MYSQLCLIENT_INCLUDE_DIR
44 VERSION_VAR MYSQLCLIENT_VERSION_STRING)
29 45
30if(MYSQLCLIENT_FOUND) 46if(MYSQLCLIENT_FOUND)
31 set(MYSQLCLIENT_LIBRARIES ${MYSQLCLIENT_LIBRARY}) 47 set(MYSQLCLIENT_LIBRARIES ${MYSQLCLIENT_LIBRARY})
diff --git a/project/cmake/modules/FindNFS.cmake b/project/cmake/modules/FindNFS.cmake
index 3fd9d61..646ee33 100644
--- a/project/cmake/modules/FindNFS.cmake
+++ b/project/cmake/modules/FindNFS.cmake
@@ -15,7 +15,7 @@
15# NFS::NFS - The libnfs library 15# NFS::NFS - The libnfs library
16 16
17if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(NFS libnfs QUIET) 18 pkg_check_modules(PC_NFS libnfs QUIET)
19endif() 19endif()
20 20
21find_path(NFS_INCLUDE_DIR nfsc/libnfs.h 21find_path(NFS_INCLUDE_DIR nfsc/libnfs.h
diff --git a/project/cmake/modules/FindOpenGLES.cmake b/project/cmake/modules/FindOpenGLES.cmake
index 5d71dd4..ab06f96 100644
--- a/project/cmake/modules/FindOpenGLES.cmake
+++ b/project/cmake/modules/FindOpenGLES.cmake
@@ -13,7 +13,7 @@
13find_package(EMBEDDED) 13find_package(EMBEDDED)
14 14
15if(PKG_CONFIG_FOUND AND NOT PLATFORM STREQUAL "raspberry-pi") 15if(PKG_CONFIG_FOUND AND NOT PLATFORM STREQUAL "raspberry-pi")
16 pkg_check_modules(PC_OPENGLES glesv2) 16 pkg_check_modules(PC_OPENGLES glesv2 QUIET)
17 if(NOT OPENGLES_FOUND AND EMBEDDED_FOUND) 17 if(NOT OPENGLES_FOUND AND EMBEDDED_FOUND)
18 set(CMAKE_PREFIX_PATH ${EMBEDDED_FOUND} ${CMAKE_PREFIX_PATH}) 18 set(CMAKE_PREFIX_PATH ${EMBEDDED_FOUND} ${CMAKE_PREFIX_PATH})
19 endif() 19 endif()
diff --git a/project/cmake/modules/FindOpenGl.cmake b/project/cmake/modules/FindOpenGl.cmake
index 9d6ec01..b8cff79 100644
--- a/project/cmake/modules/FindOpenGl.cmake
+++ b/project/cmake/modules/FindOpenGl.cmake
@@ -11,10 +11,10 @@
11# OPENGL_DEFINITIONS - the OpenGl definitions 11# OPENGL_DEFINITIONS - the OpenGl definitions
12 12
13if(PKG_CONFIG_FOUND) 13if(PKG_CONFIG_FOUND)
14 pkg_check_modules(PC_OPENGL gl glu) 14 pkg_check_modules(PC_OPENGL gl glu QUIET)
15endif() 15endif()
16 16
17if(NOT CORE_SYSTEM_NAME STREQUAL darwin) 17if(NOT CORE_SYSTEM_NAME STREQUAL osx)
18 find_path(OPENGL_INCLUDE_DIR GL/gl.h 18 find_path(OPENGL_INCLUDE_DIR GL/gl.h
19 PATHS ${PC_OPENGL_gl_INCLUDEDIR}) 19 PATHS ${PC_OPENGL_gl_INCLUDEDIR})
20 find_library(OPENGL_gl_LIBRARY NAMES GL 20 find_library(OPENGL_gl_LIBRARY NAMES GL
diff --git a/project/cmake/modules/FindPulseAudio.cmake b/project/cmake/modules/FindPulseAudio.cmake
index 5b57364..5761005 100644
--- a/project/cmake/modules/FindPulseAudio.cmake
+++ b/project/cmake/modules/FindPulseAudio.cmake
@@ -1,72 +1,68 @@
1# Try to find the PulseAudio library 1#.rst:
2# FindPulseAudio
3# --------------
4# Finds the PulseAudio library
2# 5#
3# Once done this will define: 6# This will define the following variables::
4# 7#
5# PULSEAUDIO_FOUND - system has the PulseAudio library 8# PULSEAUDIO_FOUND - system has the PulseAudio library
6# PULSEAUDIO_INCLUDE_DIR - the PulseAudio include directory 9# PULSEAUDIO_INCLUDE_DIRS - the PulseAudio include directory
7# PULSEAUDIO_LIBRARY - the libraries needed to use PulseAudio 10# PULSEAUDIO_LIBRARIES - the libraries needed to use PulseAudio
8# PULSEAUDIO_MAINLOOP_LIBRARY - the libraries needed to use PulsAudio Mailoop 11# PULSEAUDIO_DEFINITIONS - the definitions needed to use PulseAudio
9# 12#
10# Copyright (c) 2008, Matthias Kretz, <kretz@kde.org> 13# and the following imported targets::
11# Copyright (c) 2009, Marcus Hufgard, <Marcus.Hufgard@hufgard.de>
12# 14#
13# Redistribution and use is allowed according to the terms of the BSD license. 15# PulseAudio::PulseAudio - The PulseAudio library
14# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
15 16
16if (NOT PULSEAUDIO_MINIMUM_VERSION) 17if(NOT PulseAudio_FIND_VERSION)
17 set(PULSEAUDIO_MINIMUM_VERSION "1.0.0") 18 set(PulseAudio_FIND_VERSION 2.0.0)
18endif (NOT PULSEAUDIO_MINIMUM_VERSION) 19endif()
19
20if (PULSEAUDIO_INCLUDE_DIRS AND PULSEAUDIO_LIBRARY AND PULSEAUDIO_MAINLOOP_LIBRARY)
21 # Already in cache, be silent
22 set(PULSEAUDIO_FIND_QUIETLY TRUE)
23endif (PULSEAUDIO_INCLUDE_DIRS AND PULSEAUDIO_LIBRARY AND PULSEAUDIO_MAINLOOP_LIBRARY)
24 20
25if (NOT WIN32) 21if(PKG_CONFIG_FOUND)
26 include(FindPkgConfig) 22 pkg_check_modules(PC_PULSEAUDIO libpulse>=${PulseAudio_FIND_VERSION} QUIET)
27 pkg_check_modules(PC_PULSEAUDIO libpulse>=${PULSEAUDIO_MINIMUM_VERSION}) 23 pkg_check_modules(PC_PULSEAUDIO_MAINLOOP libpulse-mainloop-glib QUIET)
28 pkg_check_modules(PC_PULSEAUDIO_MAINLOOP libpulse-mainloop-glib) 24endif()
29endif (NOT WIN32)
30 25
31FIND_PATH(PULSEAUDIO_INCLUDE_DIRS pulse/pulseaudio.h 26find_path(PULSEAUDIO_INCLUDE_DIR NAMES pulse/pulseaudio.h
32 HINTS 27 PATHS ${PC_PULSEAUDIO_INCLUDEDIR} ${PC_PULSEAUDIO_INCLUDE_DIRS})
33 ${PC_PULSEAUDIO_INCLUDEDIR}
34 ${PC_PULSEAUDIO_INCLUDE_DIRS}
35 )
36 28
37FIND_LIBRARY(PULSEAUDIO_LIBRARY NAMES pulse libpulse 29find_library(PULSEAUDIO_LIBRARY NAMES pulse libpulse
38 HINTS 30 PATHS ${PC_PULSEAUDIO_LIBDIR} ${PC_PULSEAUDIO_LIBRARY_DIRS})
39 ${PC_PULSEAUDIO_LIBDIR}
40 ${PC_PULSEAUDIO_LIBRARY_DIRS}
41 )
42 31
43FIND_LIBRARY(PULSEAUDIO_MAINLOOP_LIBRARY NAMES pulse-mainloop pulse-mainloop-glib libpulse-mainloop-glib 32find_library(PULSEAUDIO_MAINLOOP_LIBRARY NAMES pulse-mainloop pulse-mainloop-glib libpulse-mainloop-glib
44 HINTS 33 PATHS ${PC_PULSEAUDIO_LIBDIR} ${PC_PULSEAUDIO_LIBRARY_DIRS})
45 ${PC_PULSEAUDIO_LIBDIR}
46 ${PC_PULSEAUDIO_LIBRARY_DIRS}
47 )
48 34
49if (NOT PULSEAUDIO_INCLUDE_DIRS OR NOT PULSEAUDIO_LIBRARY) 35if(PC_PULSEAUDIO_VERSION)
50 set(PULSEAUDIO_FOUND FALSE) 36 set(PULSEAUDIO_VERSION_STRING ${PC_PULSEAUDIO_VERSION})
51else() 37elseif(PULSEAUDIO_INCLUDE_DIR AND EXISTS "${PULSEAUDIO_INCLUDE_DIR}/pulse/version.h")
52 set(PULSEAUDIO_FOUND TRUE) 38 file(STRINGS "${PULSEAUDIO_INCLUDE_DIR}/pulse/version.h" pulseaudio_version_str REGEX "^#define[\t ]+pa_get_headers_version\\(\\)[\t ]+\\(\".*\"\\).*")
39 string(REGEX REPLACE "^#define[\t ]+pa_get_headers_version\\(\\)[\t ]+\\(\"([^\"]+)\"\\).*" "\\1" PULSEAUDIO_VERSION_STRING "${pulseaudio_version_str}")
40 unset(pulseaudio_version_str)
53endif() 41endif()
54 42
55if (PULSEAUDIO_FOUND) 43include(FindPackageHandleStandardArgs)
56 if (NOT PULSEAUDIO_FIND_QUIETLY) 44find_package_handle_standard_args(PulseAudio
57 message(STATUS "Found PulseAudio: ${PULSEAUDIO_LIBRARY}") 45 REQUIRED_VARS PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY PULSEAUDIO_INCLUDE_DIR
58 if (PULSEAUDIO_MAINLOOP_LIBRARY) 46 VERSION_VAR PULSEAUDIO_VERSION_STRING)
59 message(STATUS "Found PulseAudio Mainloop: ${PULSEAUDIO_MAINLOOP_LIBRARY}")
60 else (PULSAUDIO_MAINLOOP_LIBRARY)
61 message(STATUS "Could NOT find PulseAudio Mainloop Library")
62 endif (PULSEAUDIO_MAINLOOP_LIBRARY)
63 endif (NOT PULSEAUDIO_FIND_QUIETLY)
64else (PULSEAUDIO_FOUND)
65 message(STATUS "Could NOT find PulseAudio")
66endif (PULSEAUDIO_FOUND)
67 47
68set(PULSEAUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY}) 48if(PULSEAUDIO_FOUND)
49 set(PULSEAUDIO_INCLUDE_DIRS ${PULSEAUDIO_INCLUDE_DIR})
50 set(PULSEAUDIO_LIBRARIES ${PULSEAUDIO_LIBRARY} ${PULSEAUDIO_MAINLOOP_LIBRARY})
51 set(PULSEAUDIO_DEFINITIONS -DHAVE_LIBPULSE=1)
69 52
70list(APPEND PULSEAUDIO_DEFINITIONS -DHAVE_LIBPULSE=1) 53 if(NOT TARGET PulseAudio::PulseAudioMainloop)
54 add_library(PulseAudio::PulseAudioMainloop UNKNOWN IMPORTED)
55 set_target_properties(PulseAudio::PulseAudioMainloop PROPERTIES
56 IMPORTED_LOCATION "${PULSEAUDIO_MAINLOOP_LIBRARY}")
57 endif()
58 if(NOT TARGET PulseAudio::PulseAudio)
59 add_library(PulseAudio::PulseAudio UNKNOWN IMPORTED)
60 set_target_properties(PulseAudio::PulseAudio PROPERTIES
61 IMPORTED_LOCATION "${PULSEAUDIO_LIBRARY}"
62 INTERFACE_INCLUDE_DIRECTORIES "${PULSEAUDIO_INCLUDE_DIR}"
63 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBPULSE=1
64 INTERFACE_LINK_LIBRARIES PulseAudio::PulseAudioMainloop)
65 endif()
66endif()
71 67
72mark_as_advanced(PULSEAUDIO_INCLUDE_DIRS PULSEAUDIO_LIBRARIES PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY) 68mark_as_advanced(PULSEAUDIO_INCLUDE_DIR PULSEAUDIO_LIBRARY PULSEAUDIO_MAINLOOP_LIBRARY)
diff --git a/project/cmake/modules/FindPython.cmake b/project/cmake/modules/FindPython.cmake
index 6f9f236..68b7359 100644
--- a/project/cmake/modules/FindPython.cmake
+++ b/project/cmake/modules/FindPython.cmake
@@ -5,39 +5,34 @@
5# PYTHON_INCLUDE_DIRS - the python include directory 5# PYTHON_INCLUDE_DIRS - the python include directory
6# PYTHON_LIBRARIES - The python libraries 6# PYTHON_LIBRARIES - The python libraries
7 7
8if(PKG_CONFIG_FOUND AND NOT CMAKE_CROSSCOMPILING) 8if(PKG_CONFIG_FOUND)
9 pkg_check_modules (PYTHON python) 9 pkg_check_modules(PC_PYTHON python >= 2.7 QUIET)
10endif() 10endif()
11 11
12if(NOT PYTHON_FOUND) 12find_program(PYTHON_EXECUTABLE python ONLY_CMAKE_FIND_ROOT_PATH)
13 if(CMAKE_CROSSCOMPILING) 13find_library(PYTHON_LIBRARY NAMES python2.7 PATHS ${PC_PYTHON_LIBDIR})
14 find_program(PYTHON_EXECUTABLE python ONLY_CMAKE_FIND_ROOT_PATH) 14find_path(PYTHON_INCLUDE_DIR NAMES Python.h PATHS ${PC_PYTHON_INCLUDE_DIRS} ${DEPENDS_PATH}/include/python2.7)
15 find_library(PYTHON_LIBRARY NAMES python2.6 python2.7) 15
16 find_path(PYTHON_INCLUDE_DIRS NAMES Python.h PATHS ${DEPENDS_PATH}/include/python2.6 ${DEPENDS_PATH}/include/python2.7) 16if(CMAKE_CROSSCOMPILING)
17 set(PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIRS} CACHE PATH "python include dir" FORCE) 17 find_library(FFI_LIBRARY ffi REQUIRED)
18 18 find_library(EXPAT_LIBRARY expat REQUIRED)
19 find_library(FFI_LIBRARY ffi) 19 find_library(INTL_LIBRARY intl REQUIRED)
20 find_library(EXPAT_LIBRARY expat) 20 find_library(GMP_LIBRARY gmp REQUIRED)
21 find_library(INTL_LIBRARY intl) 21
22 22 if(NOT CORE_SYSTEM_NAME STREQUAL android)
23 if(NOT CORE_SYSTEM_NAME STREQUAL android) 23 set(PYTHON_DEP_LIBRARIES -lpthread -ldl -lutil)
24 set(PYTHON_DEP_LIBRARIES -lpthread -ldl -lutil)
25 endif()
26
27 set(PYTHON_LIBRARIES ${PYTHON_LIBRARY} ${FFI_LIBRARY} ${EXPAT_LIBRARY} ${INTL_LIBRARY} ${PYTHON_DEP_LIBRARIES}
28 CACHE INTERNAL "python libraries" FORCE)
29 else()
30 find_package(PythonLibs)
31 endif() 24 endif()
25
26 set(PYTHON_LIBRARIES ${PYTHON_LIBRARY} ${FFI_LIBRARY} ${EXPAT_LIBRARY} ${INTL_LIBRARY} ${GMP_LIBRARY} ${PYTHON_DEP_LIBRARIES})
27else()
28 find_package(PythonLibs 2.7 REQUIRED)
32endif() 29endif()
33 30
34include(FindPackageHandleStandardArgs)
35find_package_handle_standard_args(Python DEFAULT_MSG PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES)
36 31
37if(CMAKE_SYSTEM_NAME STREQUAL Darwin) 32include(FindPackageHandleStandardArgs)
38 find_library(FFI_LIBRARY ffi REQUIRED) 33find_package_handle_standard_args(PYTHON REQUIRED_VARS PYTHON_INCLUDE_DIR PYTHON_LIBRARY PYTHON_LIBRARIES)
39 find_library(INTL_LIBRARY intl) 34if(PYTHON_FOUND)
40 list(APPEND PYTHON_LIBRARIES ${FFI_LIBRARY} ${INTL_LIBRARY}) 35 set(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR})
41endif() 36endif()
42 37
43mark_as_advanced(PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES PYTHON_LDFLAGS) 38mark_as_advanced(PYTHON_EXECUTABLE PYTHON_INCLUDE_DIRS PYTHON_INCLUDE_DIR PYTHON_LIBRARY PYTHON_LIBRARIES PYTHON_LDFLAGS FFI_LIBRARY EXPAT_LIBRARY INTL_LIBRARY GMP_LIBRARY)
diff --git a/project/cmake/modules/FindRTMP.cmake b/project/cmake/modules/FindRTMP.cmake
deleted file mode 100644
index 432b77d..0000000
--- a/project/cmake/modules/FindRTMP.cmake
+++ /dev/null
@@ -1,21 +0,0 @@
1# - Try to find rtmp
2# Once done this will define
3#
4# RTMP_FOUND - system has librtmp
5# RTMP_INCLUDE_DIRS - the librtmp include directory
6# RTMP_LIBRARIES - The librtmp libraries
7
8if(PKG_CONFIG_FOUND)
9 pkg_check_modules (RTMP librtmp)
10 list(APPEND RTMP_INCLUDE_DIRS ${RTMP_INCLUDEDIR})
11else()
12 find_path(RTMP_INCLUDE_DIRS librtmp/rtmp.h)
13 find_library(RTMP_LIBRARIES rtmp)
14endif()
15
16include(FindPackageHandleStandardArgs)
17find_package_handle_standard_args(RTMP DEFAULT_MSG RTMP_INCLUDE_DIRS RTMP_LIBRARIES)
18
19list(APPEND RTMP_DEFINITIONS -DHAS_LIBRTMP=1)
20
21mark_as_advanced(RTMP_INCLUDE_DIRS RTMP_LIBRARIES RTMP_DEFINITIONS)
diff --git a/project/cmake/modules/FindSSE.cmake b/project/cmake/modules/FindSSE.cmake
index c76b811..0554663 100644
--- a/project/cmake/modules/FindSSE.cmake
+++ b/project/cmake/modules/FindSSE.cmake
@@ -1,105 +1,143 @@
1# Check if SSE instructions are available on the machine where 1# Check if SSE instructions are available on the machine where
2# the project is compiled. 2# the project is compiled.
3include(TestCXXAcceptsFlag)
3 4
4IF(CMAKE_SYSTEM_NAME MATCHES "Linux") 5if(CMAKE_SYSTEM_NAME MATCHES "Linux")
5 EXEC_PROGRAM(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO) 6 if(CPU MATCHES "x86_64" OR CPU MATCHES "i.86")
6 7 exec_program(cat ARGS "/proc/cpuinfo" OUTPUT_VARIABLE CPUINFO)
7 STRING(REGEX REPLACE "^.*(sse2).*$" "\\1" SSE_THERE ${CPUINFO}) 8
8 STRING(COMPARE EQUAL "sse2" "${SSE_THERE}" SSE2_TRUE) 9 string(REGEX REPLACE "^.*(sse).*$" "\\1" _SSE_THERE ${CPUINFO})
9 IF (SSE2_TRUE) 10 string(COMPARE EQUAL "sse" "${_SSE_THERE}" _SSE_TRUE)
10 set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") 11 CHECK_CXX_ACCEPTS_FLAG("-msse" _SSE_OK)
11 ELSE (SSE2_TRUE) 12
12 set(SSE2_FOUND false CACHE BOOL "SSE2 available on host") 13 string(REGEX REPLACE "^.*(sse2).*$" "\\1" _SSE_THERE ${CPUINFO})
13 ENDIF (SSE2_TRUE) 14 string(COMPARE EQUAL "sse2" "${_SSE_THERE}" _SSE2_TRUE)
14 15 CHECK_CXX_ACCEPTS_FLAG("-msse2" _SSE2_OK)
15 # /proc/cpuinfo apparently omits sse3 :( 16
16 STRING(REGEX REPLACE "^.*[^s](sse3).*$" "\\1" SSE_THERE ${CPUINFO}) 17 # /proc/cpuinfo apparently omits sse3 :(
17 STRING(COMPARE EQUAL "sse3" "${SSE_THERE}" SSE3_TRUE) 18 string(REGEX REPLACE "^.*[^s](sse3).*$" "\\1" _SSE_THERE ${CPUINFO})
18 IF (NOT SSE3_TRUE) 19 string(COMPARE EQUAL "sse3" "${_SSE_THERE}" _SSE3_TRUE)
19 STRING(REGEX REPLACE "^.*(T2300).*$" "\\1" SSE_THERE ${CPUINFO}) 20 if(NOT _SSE3_TRUE)
20 STRING(COMPARE EQUAL "T2300" "${SSE_THERE}" SSE3_TRUE) 21 string(REGEX REPLACE "^.*(T2300).*$" "\\1" _SSE_THERE ${CPUINFO})
21 ENDIF (NOT SSE3_TRUE) 22 string(COMPARE EQUAL "T2300" "${_SSE_THERE}" _SSE3_TRUE)
22 23 endif()
23 STRING(REGEX REPLACE "^.*(ssse3).*$" "\\1" SSE_THERE ${CPUINFO}) 24 CHECK_CXX_ACCEPTS_FLAG("-msse3" _SSE3_OK)
24 STRING(COMPARE EQUAL "ssse3" "${SSE_THERE}" SSSE3_TRUE) 25
25 IF (SSE3_TRUE OR SSSE3_TRUE) 26 string(REGEX REPLACE "^.*(ssse3).*$" "\\1" _SSE_THERE ${CPUINFO})
26 set(SSE3_FOUND true CACHE BOOL "SSE3 available on host") 27 string(COMPARE EQUAL "ssse3" "${_SSE_THERE}" _SSSE3_TRUE)
27 ELSE (SSE3_TRUE OR SSSE3_TRUE) 28 CHECK_CXX_ACCEPTS_FLAG("-mssse3" _SSSE3_OK)
28 set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") 29
29 ENDIF (SSE3_TRUE OR SSSE3_TRUE) 30 string(REGEX REPLACE "^.*(sse4_1).*$" "\\1" _SSE_THERE ${CPUINFO})
30 IF (SSSE3_TRUE) 31 string(COMPARE EQUAL "sse4_1" "${_SSE_THERE}" _SSE41_TRUE)
31 set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host") 32 CHECK_CXX_ACCEPTS_FLAG("-msse4.1" _SSE41_OK)
32 ELSE (SSSE3_TRUE) 33
33 set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") 34 string(REGEX REPLACE "^.*(sse4_2).*$" "\\1" _SSE_THERE ${CPUINFO})
34 ENDIF (SSSE3_TRUE) 35 string(COMPARE EQUAL "sse4_2" "${_SSE_THERE}" _SSE42_TRUE)
35 36 CHECK_CXX_ACCEPTS_FLAG("-msse4.2" _SSE42_OK)
36 STRING(REGEX REPLACE "^.*(sse4_1).*$" "\\1" SSE_THERE ${CPUINFO}) 37
37 STRING(COMPARE EQUAL "sse4_1" "${SSE_THERE}" SSE41_TRUE) 38 string(REGEX REPLACE "^.*(avx).*$" "\\1" _SSE_THERE ${CPUINFO})
38 IF (SSE41_TRUE) 39 string(COMPARE EQUAL "avx" "${_SSE_THERE}" _AVX_TRUE)
39 set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host") 40 CHECK_CXX_ACCEPTS_FLAG("-mavx" _AVX_OK)
40 ELSE (SSE41_TRUE) 41
41 set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") 42 string(REGEX REPLACE "^.*(avx2).*$" "\\1" _SSE_THERE ${CPUINFO})
42 ENDIF (SSE41_TRUE) 43 string(COMPARE EQUAL "avx2" "${_SSE_THERE}" _AVX2_TRUE)
43ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin") 44 CHECK_CXX_ACCEPTS_FLAG("-mavx2" _AVX2_OK)
44 EXEC_PROGRAM("/usr/sbin/sysctl -n machdep.cpu.features" OUTPUT_VARIABLE 45 endif()
45 CPUINFO) 46elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
46 47 if(NOT CPU MATCHES "arm")
47 STRING(REGEX REPLACE "^.*[^S](SSE2).*$" "\\1" SSE_THERE ${CPUINFO}) 48 exec_program("/usr/sbin/sysctl -n machdep.cpu.features machdep.cpu.leaf7_features" OUTPUT_VARIABLE CPUINFO)
48 STRING(COMPARE EQUAL "SSE2" "${SSE_THERE}" SSE2_TRUE) 49
49 IF (SSE2_TRUE) 50 string(REGEX REPLACE "^.*[^S](SSE).*$" "\\1" _SSE_THERE ${CPUINFO})
50 set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") 51 string(COMPARE EQUAL "SSE" "${_SSE_THERE}" _SSE_TRUE)
51 ELSE (SSE2_TRUE) 52 CHECK_CXX_ACCEPTS_FLAG("-msse" _SSE_OK)
52 set(SSE2_FOUND false CACHE BOOL "SSE2 available on host") 53
53 ENDIF (SSE2_TRUE) 54 string(REGEX REPLACE "^.*[^S](SSE2).*$" "\\1" _SSE_THERE ${CPUINFO})
54 55 string(COMPARE EQUAL "SSE2" "${_SSE_THERE}" _SSE2_TRUE)
55 STRING(REGEX REPLACE "^.*[^S](SSE3).*$" "\\1" SSE_THERE ${CPUINFO}) 56 CHECK_CXX_ACCEPTS_FLAG("-msse2" _SSE2_OK)
56 STRING(COMPARE EQUAL "SSE3" "${SSE_THERE}" SSE3_TRUE) 57
57 IF (SSE3_TRUE) 58 string(REGEX REPLACE "^.*[^S](SSE3).*$" "\\1" _SSE_THERE ${CPUINFO})
58 set(SSE3_FOUND true CACHE BOOL "SSE3 available on host") 59 string(COMPARE EQUAL "SSE3" "${_SSE_THERE}" _SSE3_TRUE)
59 ELSE (SSE3_TRUE) 60 CHECK_CXX_ACCEPTS_FLAG("-msse3" _SSE3_OK)
60 set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") 61
61 ENDIF (SSE3_TRUE) 62 string(REGEX REPLACE "^.*(SSSE3).*$" "\\1" _SSE_THERE ${CPUINFO})
62 63 string(COMPARE EQUAL "SSSE3" "${_SSE_THERE}" _SSSE3_TRUE)
63 STRING(REGEX REPLACE "^.*(SSSE3).*$" "\\1" SSE_THERE ${CPUINFO}) 64 CHECK_CXX_ACCEPTS_FLAG("-mssse3" _SSSE3_OK)
64 STRING(COMPARE EQUAL "SSSE3" "${SSE_THERE}" SSSE3_TRUE) 65
65 IF (SSSE3_TRUE) 66 string(REGEX REPLACE "^.*(SSE4.1).*$" "\\1" _SSE_THERE ${CPUINFO})
66 set(SSSE3_FOUND true CACHE BOOL "SSSE3 available on host") 67 string(COMPARE EQUAL "SSE4.1" "${_SSE_THERE}" _SSE41_TRUE)
67 ELSE (SSSE3_TRUE) 68 CHECK_CXX_ACCEPTS_FLAG("-msse4.1" _SSE41_OK)
68 set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") 69
69 ENDIF (SSSE3_TRUE) 70 string(REGEX REPLACE "^.*(SSE4.2).*$" "\\1" _SSE_THERE ${CPUINFO})
70 71 string(COMPARE EQUAL "SSE4.2" "${_SSE_THERE}" _SSE42_TRUE)
71 STRING(REGEX REPLACE "^.*(SSE4.1).*$" "\\1" SSE_THERE ${CPUINFO}) 72 CHECK_CXX_ACCEPTS_FLAG("-msse4.2" _SSE42_OK)
72 STRING(COMPARE EQUAL "SSE4.1" "${SSE_THERE}" SSE41_TRUE) 73
73 IF (SSE41_TRUE) 74 string(REGEX REPLACE "^.*(AVX).*$" "\\1" _SSE_THERE ${CPUINFO})
74 set(SSE4_1_FOUND true CACHE BOOL "SSE4.1 available on host") 75 string(COMPARE EQUAL "AVX" "${_SSE_THERE}" _AVX_TRUE)
75 ELSE (SSE41_TRUE) 76 CHECK_CXX_ACCEPTS_FLAG("-mavx" _AVX_OK)
76 set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") 77
77 ENDIF (SSE41_TRUE) 78 string(REGEX REPLACE "^.*(AVX2).*$" "\\1" _SSE_THERE ${CPUINFO})
78ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows") 79 string(COMPARE EQUAL "AVX2" "${_SSE_THERE}" _AVX2_TRUE)
80 CHECK_CXX_ACCEPTS_FLAG("-mavx2" _AVX2_OK)
81 endif()
82elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
79 # TODO 83 # TODO
80 set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") 84 set(_SSE_TRUE true)
81 set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") 85 set(_SSE_OK true)
82 set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") 86 set(_SSE2_TRUE true)
83 set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") 87 set(_SSE2_OK true)
84ELSE(CMAKE_SYSTEM_NAME MATCHES "Linux") 88endif()
85 set(SSE2_FOUND true CACHE BOOL "SSE2 available on host") 89
86 set(SSE3_FOUND false CACHE BOOL "SSE3 available on host") 90include(FindPackageHandleStandardArgs)
87 set(SSSE3_FOUND false CACHE BOOL "SSSE3 available on host") 91find_package_handle_standard_args(SSE
88 set(SSE4_1_FOUND false CACHE BOOL "SSE4.1 available on host") 92 REQUIRED_VARS _SSE_TRUE _SSE_OK
89ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux") 93 FAIL_MESSAGE "Could not find hardware support for SSE")
90 94find_package_handle_standard_args(SSE2
91if(NOT SSE2_FOUND) 95 REQUIRED_VARS _SSE2_TRUE _SSE2_OK
92 MESSAGE(STATUS "Could not find hardware support for SSE2 on this machine.") 96 FAIL_MESSAGE "Could not find hardware support for SSE2")
93endif(NOT SSE2_FOUND) 97find_package_handle_standard_args(SSE3
94if(NOT SSE3_FOUND) 98 REQUIRED_VARS _SSE3_TRUE _SSE3_OK
95 MESSAGE(STATUS "Could not find hardware support for SSE3 on this machine.") 99 FAIL_MESSAGE "Could not find hardware support for SSE3")
96endif(NOT SSE3_FOUND) 100find_package_handle_standard_args(SSSE3
97if(NOT SSSE3_FOUND) 101 REQUIRED_VARS _SSSE3_TRUE _SSSE3_OK
98 MESSAGE(STATUS "Could not find hardware support for SSSE3 on this machine.") 102 FAIL_MESSAGE "Could not find hardware support for SSSE3")
99endif(NOT SSSE3_FOUND) 103find_package_handle_standard_args(SSE4_1
100if(NOT SSE4_1_FOUND) 104 REQUIRED_VARS _SSE41_TRUE _SSE41_OK
101 MESSAGE(STATUS "Could not find hardware support for SSE4.1 on this machine.") 105 FAIL_MESSAGE "Could not find hardware support for SSE4.1")
102endif(NOT SSE4_1_FOUND) 106find_package_handle_standard_args(SSE4_2
103 107 REQUIRED_VARS _SSE42_TRUE _SSE42_OK
104mark_as_advanced(SSE2_FOUND SSE3_FOUND SSSE3_FOUND SSE4_1_FOUND) 108 FAIL_MESSAGE "Could not find hardware support for SSE4.2")
109find_package_handle_standard_args(AVX
110 REQUIRED_VARS _AVX_TRUE _AVX_OK
111 FAIL_MESSAGE "Could not find hardware support for AVX")
112find_package_handle_standard_args(AVX2
113 REQUIRED_VARS _AVX2_TRUE _AVX2_OK
114 FAIL_MESSAGE "Could not find hardware support for AVX2")
115
116mark_as_advanced(SSE2_FOUND SSE3_FOUND SSSE3_FOUND SSE4_1_FOUND SSE4_2_FOUND AVX_FOUND AVX2_FOUND)
117
118unset(_SSE_THERE)
119unset(_SSE_TRUE)
120unset(_SSE_OK)
121unset(_SSE_OK CACHE)
122unset(_SSE2_TRUE)
123unset(_SSE2_OK)
124unset(_SSE2_OK CACHE)
125unset(_SSE3_TRUE)
126unset(_SSE3_OK)
127unset(_SSE3_OK CACHE)
128unset(_SSSE3_TRUE)
129unset(_SSSE3_OK)
130unset(_SSSE3_OK CACHE)
131unset(_SSE4_1_TRUE)
132unset(_SSE41_OK)
133unset(_SSE41_OK CACHE)
134unset(_SSE4_2_TRUE)
135unset(_SSE42_OK)
136unset(_SSE42_OK CACHE)
137unset(_AVX_TRUE)
138unset(_AVX_OK)
139unset(_AVX_OK CACHE)
140unset(_AVX2_TRUE)
141unset(_AVX2_OK)
142unset(_AVX2_OK CACHE)
105 143
diff --git a/project/cmake/modules/FindSSH.cmake b/project/cmake/modules/FindSSH.cmake
index 60c3537..538c699 100644
--- a/project/cmake/modules/FindSSH.cmake
+++ b/project/cmake/modules/FindSSH.cmake
@@ -1,21 +1,47 @@
1# - Try to find libssh 1#.rst:
2# Once done this will define 2# FindSSH
3# -------
4# Finds the SSH library
3# 5#
4# SSH_FOUND - system has libssh 6# This will will define the following variables::
5# SSH_INCLUDE_DIRS - the libssh include directory 7#
6# SSH_LIBRARIES - The libssh libraries 8# SSH_FOUND - system has SSH
9# SSH_INCLUDE_DIRS - the SSH include directory
10# SSH_LIBRARIES - the SSH libraries
11# SSH_DEFINITIONS - the SSH definitions
12#
13# and the following imported targets::
14#
15# SSH::SSH - The SSH library
7 16
8if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
9 pkg_check_modules (SSH libssh) 18 pkg_check_modules(PC_SSH libssh QUIET)
10 list(APPEND SSH_INCLUDE_DIRS /usr/include)
11else()
12 find_path(SSH_INCLUDE_DIRS libssh/libssh.h)
13 find_library(SSH_LIBRARIES ssh)
14endif() 19endif()
15 20
21find_path(SSH_INCLUDE_DIR NAMES libssh/libssh.h
22 PATHS ${PC_SSH_INCLUDEDIR})
23find_library(SSH_LIBRARY NAMES ssh
24 PATHS ${PC_SSH_LIBDIR})
25
26set(SSH_VERSION ${PC_SSH_VERSION})
27
16include(FindPackageHandleStandardArgs) 28include(FindPackageHandleStandardArgs)
17find_package_handle_standard_args(SSH DEFAULT_MSG SSH_INCLUDE_DIRS SSH_LIBRARIES) 29find_package_handle_standard_args(SSH
30 REQUIRED_VARS SSH_LIBRARY SSH_INCLUDE_DIR
31 VERSION_VAR SSH_VERSION)
32
33if(SSH_FOUND)
34 set(SSH_LIBRARIES ${SSH_LIBRARY})
35 set(SSH_INCLUDE_DIRS ${SSH_INCLUDE_DIR})
36 set(SSH_DEFINITIONS -DHAVE_LIBSSH=1)
18 37
19list(APPEND SSH_DEFINITIONS -DHAVE_LIBSSH=1) 38 if(NOT TARGET SSH::SSH)
39 add_library(SSH::SSH UNKNOWN IMPORTED)
40 set_target_properties(SSH::SSH PROPERTIES
41 IMPORTED_LOCATION "${SSH_LIBRARY}"
42 INTERFACE_INCLUDE_DIRECTORIES "${SSH_INCLUDE_DIR}"
43 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBSSH=1)
44 endif()
45endif()
20 46
21mark_as_advanced(SSH_INCLUDE_DIRS SSH_LIBRARIES SSH_DEFINITIONS) 47mark_as_advanced(SSH_INCLUDE_DIR SSH_LIBRARY)
diff --git a/project/cmake/modules/FindSWIG.cmake b/project/cmake/modules/FindSWIG.cmake
index 84c7a51..523b49b 100644
--- a/project/cmake/modules/FindSWIG.cmake
+++ b/project/cmake/modules/FindSWIG.cmake
@@ -1,14 +1,29 @@
1if(NOT SWIG_EXECUTABLE) 1#.rst:
2 find_program(SWIG_EXECUTABLE NAMES swig2.0 swig PATH_SUFFIXES swig) 2# FindSWIG
3endif() 3# --------
4# Finds the SWIG executable
5#
6# This will will define the following variables::
7#
8# SWIG_FOUND - system has SWIG
9# SWIG_EXECUTABLE - the SWIG executable
10
11find_program(SWIG_EXECUTABLE NAMES swig3.0 swig2.0 swig
12 PATH_SUFFIXES swig)
4if(SWIG_EXECUTABLE) 13if(SWIG_EXECUTABLE)
5 execute_process(COMMAND ${SWIG_EXECUTABLE} -swiglib 14 execute_process(COMMAND ${SWIG_EXECUTABLE} -swiglib
6 OUTPUT_VARIABLE SWIG_DIR 15 OUTPUT_VARIABLE SWIG_DIR
7 ERROR_VARIABLE SWIG_swiglib_error 16 ERROR_VARIABLE SWIG_swiglib_error
8 RESULT_VARIABLE SWIG_swiglib_result) 17 RESULT_VARIABLE SWIG_swiglib_result)
18 execute_process(COMMAND ${SWIG_EXECUTABLE} -version
19 OUTPUT_VARIABLE SWIG_version_output
20 ERROR_VARIABLE SWIG_version_output
21 RESULT_VARIABLE SWIG_version_result)
22 string(REGEX REPLACE ".*SWIG Version[^0-9.]*\([0-9.]+\).*" "\\1"
23 SWIG_VERSION "${SWIG_version_output}")
9endif() 24endif()
10 25
11
12include(FindPackageHandleStandardArgs) 26include(FindPackageHandleStandardArgs)
13FIND_PACKAGE_HANDLE_STANDARD_ARGS(SWIG REQUIRED_VARS SWIG_EXECUTABLE SWIG_DIR 27find_package_handle_standard_args(SWIG
14 VERSION_VAR SWIG_VERSION ) 28 REQUIRED_VARS SWIG_EXECUTABLE SWIG_DIR
29 VERSION_VAR SWIG_VERSION)
diff --git a/project/cmake/modules/FindShairplay.cmake b/project/cmake/modules/FindShairplay.cmake
index 4804686..87d3107 100644
--- a/project/cmake/modules/FindShairplay.cmake
+++ b/project/cmake/modules/FindShairplay.cmake
@@ -35,11 +35,11 @@ if(NOT WIN32)
35 " HAVE_SHAIRPLAY_CALLBACK_CLS) 35 " HAVE_SHAIRPLAY_CALLBACK_CLS)
36 endif() 36 endif()
37 37
38 find_package_handle_standard_args(SHAIRPLAY 38 find_package_handle_standard_args(Shairplay
39 REQUIRED_VARS SHAIRPLAY_LIBRARY SHAIRPLAY_INCLUDE_DIR HAVE_SHAIRPLAY_CALLBACK_CLS) 39 REQUIRED_VARS SHAIRPLAY_LIBRARY SHAIRPLAY_INCLUDE_DIR HAVE_SHAIRPLAY_CALLBACK_CLS)
40else() 40else()
41 # Dynamically loaded DLL 41 # Dynamically loaded DLL
42 find_package_handle_standard_args(SHAIRPLAY 42 find_package_handle_standard_args(Shairplay
43 REQUIRED_VARS SHAIRPLAY_INCLUDE_DIR) 43 REQUIRED_VARS SHAIRPLAY_INCLUDE_DIR)
44endif() 44endif()
45 45
diff --git a/project/cmake/modules/FindSmbClient.cmake b/project/cmake/modules/FindSmbClient.cmake
new file mode 100644
index 0000000..6455cce
--- /dev/null
+++ b/project/cmake/modules/FindSmbClient.cmake
@@ -0,0 +1,47 @@
1#.rst:
2# FindSmbClient
3# -------------
4# Finds the SMB Client library
5#
6# This will will define the following variables::
7#
8# SMBCLIENT_FOUND - system has SmbClient
9# SMBCLIENT_INCLUDE_DIRS - the SmbClient include directory
10# SMBCLIENT_LIBRARIES - the SmbClient libraries
11# SMBCLIENT_DEFINITIONS - the SmbClient definitions
12#
13# and the following imported targets::
14#
15# SmbClient::SmbClient - The SmbClient library
16
17if(PKGCONFIG_FOUND)
18 pkg_check_modules(PC_SMBCLIENT smbclient QUIET)
19endif()
20
21find_path(SMBCLIENT_INCLUDE_DIR NAMES libsmbclient.h
22 PATHS ${PC_SMBCLIENT_INCLUDEDIR})
23find_library(SMBCLIENT_LIBRARY NAMES smbclient
24 PATHS ${PC_SMBCLIENT_LIBDIR})
25
26set(SMBCLIENT_VERSION ${PC_SMBCLIENT_VERSION})
27
28include(FindPackageHandleStandardArgs)
29find_package_handle_standard_args(SmbClient
30 REQUIRED_VARS SMBCLIENT_LIBRARY SMBCLIENT_INCLUDE_DIR
31 VERSION_VAR SMBCLIENT_VERSION)
32
33if(SMBCLIENT_FOUND)
34 set(SMBCLIENT_LIBRARIES ${SMBCLIENT_LIBRARY})
35 set(SMBCLIENT_INCLUDE_DIRS ${SMBCLIENT_INCLUDE_DIR})
36 set(SMBCLIENT_DEFINITIONS -DHAVE_LIBSMBCLIENT=1)
37
38 if(NOT TARGET SmbClient::SmbClient)
39 add_library(SmbClient::SmbClient UNKNOWN IMPORTED)
40 set_target_properties(SmbClient::SmbClient PROPERTIES
41 IMPORTED_LOCATION "${SMBCLIENT_LIBRARY}"
42 INTERFACE_INCLUDE_DIRECTORIES "${SMBCLIENT_INCLUDE_DIR}"
43 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBSMBCLIENT=1)
44 endif()
45endif()
46
47mark_as_advanced(LIBSMBCLIENT_INCLUDE_DIR LIBSMBCLIENT_LIBRARY)
diff --git a/project/cmake/modules/FindSqlite3.cmake b/project/cmake/modules/FindSqlite3.cmake
index a47944e..abde0cf 100644
--- a/project/cmake/modules/FindSqlite3.cmake
+++ b/project/cmake/modules/FindSqlite3.cmake
@@ -1,19 +1,44 @@
1# - Try to find SQLITE3 1#.rst:
2# Once done this will define 2# FindSqlite3
3# -----------
4# Finds the SQLite3 library
3# 5#
4# SQLITE3_FOUND - system has sqlite3 6# This will will define the following variables::
5# SQLITE3_INCLUDE_DIRS - the sqlite3 include directory 7#
6# SQLITE3_LIBRARIES - The sqlite3 libraries 8# SQLITE3_FOUND - system has SQLite3
9# SQLITE3_INCLUDE_DIRS - the SQLite3 include directory
10# SQLITE3_LIBRARIES - the SQLite3 libraries
11#
12# and the following imported targets::
13#
14# SQLite3::SQLite3 - The SQLite3 library
7 15
8if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
9 pkg_check_modules (SQLITE3 sqlite3) 17 pkg_check_modules(PC_SQLITE3 sqlite3 QUIET)
10 list(APPEND SQLITE3_INCLUDE_DIRS ${SQLITE3_INCLUDEDIR})
11else()
12 find_path(SQLITE3_INCLUDE_DIRS sqlite3.h)
13 find_library(SQLITE3_LIBRARIES sqlite3)
14endif() 18endif()
15 19
20find_path(SQLITE3_INCLUDE_DIR NAMES sqlite3.h
21 PATHS ${PC_SQLITE3_INCLUDEDIR})
22find_library(SQLITE3_LIBRARY NAMES sqlite3
23 PATHS ${PC_SQLITE3_LIBDIR})
24
25set(SQLITE3_VERSION ${PC_SQLITE3_VERSION})
26
16include(FindPackageHandleStandardArgs) 27include(FindPackageHandleStandardArgs)
17find_package_handle_standard_args(Sqlite3 DEFAULT_MSG SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES) 28find_package_handle_standard_args(Sqlite3
29 REQUIRED_VARS SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR
30 VERSION_VAR SQLITE3_VERSION)
31
32if(SQLITE3_FOUND)
33 set(SQLITE3_INCLUDE_DIRS ${SQLITE3_INCLUDE_DIR})
34 set(SQLITE3_LIBRARIES ${SQLITE3_LIBRARY})
35
36 if(NOT TARGET SQLite3::SQLite3)
37 add_library(SQLite3::SQLite3 UNKNOWN IMPORTED)
38 set_target_properties(SQLite3::SQLite3 PROPERTIES
39 IMPORTED_LOCATION "${SQLITE3_LIBRARY}"
40 INTERFACE_INCLUDE_DIRECTORIES "${SQLITE3_INCLUDE_DIR}")
41 endif()
42endif()
18 43
19mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES) 44mark_as_advanced(SQLITE3_INCLUDE_DIR SQLITE3_LIBRARY)
diff --git a/project/cmake/modules/FindTagLib.cmake b/project/cmake/modules/FindTagLib.cmake
index 06b615d..8c8c2f3 100644
--- a/project/cmake/modules/FindTagLib.cmake
+++ b/project/cmake/modules/FindTagLib.cmake
@@ -14,7 +14,7 @@
14# TagLib::TagLib - The TagLib library 14# TagLib::TagLib - The TagLib library
15 15
16if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
17 pkg_check_modules(PC_TAGLIB taglib>=1.8.0 QUIET) 17 pkg_check_modules(PC_TAGLIB taglib>=1.9.0 QUIET)
18endif() 18endif()
19 19
20find_path(TAGLIB_INCLUDE_DIR taglib/tag.h 20find_path(TAGLIB_INCLUDE_DIR taglib/tag.h
@@ -29,7 +29,7 @@ include(SelectLibraryConfigurations)
29select_library_configurations(TAGLIB) 29select_library_configurations(TAGLIB)
30 30
31include(FindPackageHandleStandardArgs) 31include(FindPackageHandleStandardArgs)
32find_package_handle_standard_args(TAGLIB 32find_package_handle_standard_args(TagLib
33 REQUIRED_VARS TAGLIB_LIBRARY TAGLIB_INCLUDE_DIR 33 REQUIRED_VARS TAGLIB_LIBRARY TAGLIB_INCLUDE_DIR
34 VERSION_VAR TAGLIB_VERSION) 34 VERSION_VAR TAGLIB_VERSION)
35 35
diff --git a/project/cmake/modules/FindTinyXML.cmake b/project/cmake/modules/FindTinyXML.cmake
index 54ec946..1220a94 100644
--- a/project/cmake/modules/FindTinyXML.cmake
+++ b/project/cmake/modules/FindTinyXML.cmake
@@ -33,7 +33,7 @@ include(SelectLibraryConfigurations)
33select_library_configurations(TINYXML) 33select_library_configurations(TINYXML)
34 34
35include(FindPackageHandleStandardArgs) 35include(FindPackageHandleStandardArgs)
36find_package_handle_standard_args(TINYXML 36find_package_handle_standard_args(TinyXML
37 REQUIRED_VARS TINYXML_LIBRARY TINYXML_INCLUDE_DIR 37 REQUIRED_VARS TINYXML_LIBRARY TINYXML_INCLUDE_DIR
38 VERSION_VAR TINYXML_VERSION) 38 VERSION_VAR TINYXML_VERSION)
39 39
diff --git a/project/cmake/modules/FindUDEV.cmake b/project/cmake/modules/FindUDEV.cmake
new file mode 100644
index 0000000..422c437
--- /dev/null
+++ b/project/cmake/modules/FindUDEV.cmake
@@ -0,0 +1,47 @@
1#.rst:
2# FindUDEV
3# -------
4# Finds the UDEV library
5#
6# This will will define the following variables::
7#
8# UDEV_FOUND - system has UDEV
9# UDEV_INCLUDE_DIRS - the UDEV include directory
10# UDEV_LIBRARIES - the UDEV libraries
11# UDEV_DEFINITIONS - the UDEV definitions
12#
13# and the following imported targets::
14#
15# UDEV::UDEV - The UDEV library
16
17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_UDEV libudev QUIET)
19endif()
20
21find_path(UDEV_INCLUDE_DIR NAMES libudev.h
22 PATHS ${PC_UDEV_INCLUDEDIR})
23find_library(UDEV_LIBRARY NAMES udev
24 PATHS ${PC_UDEV_LIBDIR})
25
26set(UDEV_VERSION ${PC_UDEV_VERSION})
27
28include(FindPackageHandleStandardArgs)
29find_package_handle_standard_args(UDEV
30 REQUIRED_VARS UDEV_LIBRARY UDEV_INCLUDE_DIR
31 VERSION_VAR UDEV_VERSION)
32
33if(UDEV_FOUND)
34 set(UDEV_LIBRARIES ${UDEV_LIBRARY})
35 set(UDEV_INCLUDE_DIRS ${UDEV_INCLUDE_DIR})
36 set(UDEV_DEFINITIONS -DHAVE_LIBUDEV=1)
37
38 if(NOT TARGET UDEV::UDEV)
39 add_library(UDEV::UDEV UNKNOWN IMPORTED)
40 set_target_properties(UDEV::UDEV PROPERTIES
41 IMPORTED_LOCATION "${UDEV_LIBRARY}"
42 INTERFACE_INCLUDE_DIRECTORIES "${UDEV_INCLUDE_DIR}"
43 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBUDEV=1)
44 endif()
45endif()
46
47mark_as_advanced(UDEV_INCLUDE_DIR UDEV_LIBRARY)
diff --git a/project/cmake/modules/FindUDev.cmake b/project/cmake/modules/FindUDev.cmake
deleted file mode 100644
index 97fa956..0000000
--- a/project/cmake/modules/FindUDev.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
1# - Try to find udev
2# Once done this will define
3#
4# UDEV_FOUND - system has libudev
5# UDEV_INCLUDE_DIRS - the libudev include directory
6# UDEV_LIBRARIES - The libudev libraries
7
8if(PKG_CONFIG_FOUND)
9 pkg_check_modules (UDEV libudev)
10 list(APPEND UDEV_INCLUDE_DIRS ${UDEV_INCLUDEDIR})
11endif()
12
13if(NOT UDEV_FOUND)
14 find_path(UDEV_INCLUDE_DIRS libudev.h)
15 find_library(UDEV_LIBRARIES udev)
16endif()
17
18include(FindPackageHandleStandardArgs)
19find_package_handle_standard_args(UDev DEFAULT_MSG UDEV_INCLUDE_DIRS UDEV_LIBRARIES)
20
21mark_as_advanced(UDEV_INCLUDE_DIRS UDEV_LIBRARIES)
22list(APPEND UDEV_DEFINITIONS -DHAVE_LIBUDEV=1)
diff --git a/project/cmake/modules/FindVAAPI.cmake b/project/cmake/modules/FindVAAPI.cmake
index 08e821f..ce3fe1a 100644
--- a/project/cmake/modules/FindVAAPI.cmake
+++ b/project/cmake/modules/FindVAAPI.cmake
@@ -9,6 +9,10 @@
9# VAAPI_INCLUDE_DIRS - the VAAPI include directory 9# VAAPI_INCLUDE_DIRS - the VAAPI include directory
10# VAAPI_LIBRARIES - the VAAPI libraries 10# VAAPI_LIBRARIES - the VAAPI libraries
11# VAAPI_DEFINITIONS - the VAAPI definitions 11# VAAPI_DEFINITIONS - the VAAPI definitions
12#
13# and the following imported targets::
14#
15# VAAPI::VAAPI - The VAAPI library
12 16
13if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
14 pkg_check_modules(PC_VAAPI libva libva-x11 QUIET) 18 pkg_check_modules(PC_VAAPI libva libva-x11 QUIET)
@@ -42,6 +46,20 @@ if(VAAPI_FOUND)
42 set(VAAPI_INCLUDE_DIRS ${VAAPI_INCLUDE_DIR}) 46 set(VAAPI_INCLUDE_DIRS ${VAAPI_INCLUDE_DIR})
43 set(VAAPI_LIBRARIES ${VAAPI_libva_LIBRARY} ${VAAPI_libva-x11_LIBRARY}) 47 set(VAAPI_LIBRARIES ${VAAPI_libva_LIBRARY} ${VAAPI_libva-x11_LIBRARY})
44 set(VAAPI_DEFINITIONS -DHAVE_LIBVA=1) 48 set(VAAPI_DEFINITIONS -DHAVE_LIBVA=1)
49
50 if(NOT TARGET VAAPI::VAAPI_X11)
51 add_library(VAAPI::VAAPI_X11 UNKNOWN IMPORTED)
52 set_target_properties(VAAPI::VAAPI_X11 PROPERTIES
53 IMPORTED_LOCATION "${VAAPI_libva-x11_LIBRARY}")
54 endif()
55 if(NOT TARGET VAAPI::VAAPI)
56 add_library(VAAPI::VAAPI UNKNOWN IMPORTED)
57 set_target_properties(VAAPI::VAAPI PROPERTIES
58 IMPORTED_LOCATION "${VAAPI_libva_LIBRARY}"
59 INTERFACE_INCLUDE_DIRECTORIES "${VAAPI_INCLUDE_DIR}"
60 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBVA=1
61 INTERFACE_LINK_LIBRARIES VAAPI::VAAPI_X11)
62 endif()
45endif() 63endif()
46 64
47mark_as_advanced(VAAPI_INCLUDE_DIR VAAPI_libva_LIBRARY VAAPI_libva-x11_LIBRARY) 65mark_as_advanced(VAAPI_INCLUDE_DIR VAAPI_libva_LIBRARY VAAPI_libva-x11_LIBRARY)
diff --git a/project/cmake/modules/FindVDPAU.cmake b/project/cmake/modules/FindVDPAU.cmake
index 680b45f..b99e03f 100644
--- a/project/cmake/modules/FindVDPAU.cmake
+++ b/project/cmake/modules/FindVDPAU.cmake
@@ -9,6 +9,10 @@
9# VDPAU_INCLUDE_DIRS - the VDPAU include directory 9# VDPAU_INCLUDE_DIRS - the VDPAU include directory
10# VDPAU_LIBRARIES - the VDPAU libraries 10# VDPAU_LIBRARIES - the VDPAU libraries
11# VDPAU_DEFINITIONS - the VDPAU definitions 11# VDPAU_DEFINITIONS - the VDPAU definitions
12#
13# and the following imported targets::
14#
15# VDPAU::VDPAU - The VDPAU library
12 16
13if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
14 pkg_check_modules(PC_VDPAU vdpau QUIET) 18 pkg_check_modules(PC_VDPAU vdpau QUIET)
@@ -19,14 +23,25 @@ find_path(VDPAU_INCLUDE_DIR NAMES vdpau/vdpau.h vdpau/vdpau_x11.h
19find_library(VDPAU_LIBRARY NAMES vdpau 23find_library(VDPAU_LIBRARY NAMES vdpau
20 PATHS ${PC_VDPAU_LIBDIR}) 24 PATHS ${PC_VDPAU_LIBDIR})
21 25
26set(VDPAU_VERSION ${PC_VDPAU_VERSION})
27
22include(FindPackageHandleStandardArgs) 28include(FindPackageHandleStandardArgs)
23find_package_handle_standard_args(VDPAU 29find_package_handle_standard_args(VDPAU
24 REQUIRED_VARS VDPAU_LIBRARY VDPAU_INCLUDE_DIR) 30 REQUIRED_VARS VDPAU_LIBRARY VDPAU_INCLUDE_DIR
31 VERSION_VAR VDPAU_VERSION)
25 32
26if(VDPAU_FOUND) 33if(VDPAU_FOUND)
27 set(VDPAU_INCLUDE_DIRS ${VDPAU_INCLUDE_DIR}) 34 set(VDPAU_INCLUDE_DIRS ${VDPAU_INCLUDE_DIR})
28 set(VDPAU_LIBRARIES ${VDPAU_LIBRARY}) 35 set(VDPAU_LIBRARIES ${VDPAU_LIBRARY})
29 set(VDPAU_DEFINITIONS -DHAVE_LIBVDPAU=1) 36 set(VDPAU_DEFINITIONS -DHAVE_LIBVDPAU=1)
37
38 if(NOT TARGET VDPAU::VDPAU)
39 add_library(VDPAU::VDPAU UNKNOWN IMPORTED)
40 set_target_properties(VDPAU::VDPAU PROPERTIES
41 IMPORTED_LOCATION "${VDPAU_LIBRARY}"
42 INTERFACE_INCLUDE_DIRECTORIES "${VDPAU_INCLUDE_DIR}"
43 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBVDPAU=1)
44 endif()
30endif() 45endif()
31 46
32mark_as_advanced(VDPAU_INCLUDE_DIR VDPAU_LIBRARY) 47mark_as_advanced(VDPAU_INCLUDE_DIR VDPAU_LIBRARY)
diff --git a/project/cmake/modules/FindX.cmake b/project/cmake/modules/FindX.cmake
index d9ab5bc..19bb770 100644
--- a/project/cmake/modules/FindX.cmake
+++ b/project/cmake/modules/FindX.cmake
@@ -1,21 +1,57 @@
1# - Try to find X11 1#.rst:
2# Once done this will define 2# FindX
3# -----
4# Finds the X11 library
3# 5#
4# X11_FOUND - system has X11 6# This will will define the following variables::
5# X11_INCLUDE_DIRS - the X11 include directory 7#
6# X11_LIBRARIES - The X11 libraries 8# X_FOUND - system has X11
9# X_INCLUDE_DIRS - the X11 include directory
10# X_LIBRARIES - the X11 libraries
11# X_DEFINITIONS - the X11 definitions
12#
13# and the following imported targets::
14#
15# X::X - The X11 library
16# X::Xext - The X11 extension library
7 17
8if(PKG_CONFIG_FOUND) 18if(PKG_CONFIG_FOUND)
9 pkg_check_modules (X x11 xext libdrm egl) 19 pkg_check_modules(PC_X x11 xext QUIET)
10 list(APPEND X_INCLUDE_DIRS /usr/include)
11else()
12 find_path(X_INCLUDE_DIRS X11/Xlib.h)
13 find_library(X_LIBRARIES X11)
14endif() 20endif()
15 21
22find_path(X_INCLUDE_DIR NAMES X11/Xlib.h
23 PATHS ${PC_X_x11_INCLUDEDIR})
24find_library(X_LIBRARY NAMES X11
25 PATHS ${PC_X_x11_LIBDIR})
26find_library(X_EXT_LIBRARY NAMES Xext
27 PATHS ${PC_X_xext_LIBDIR})
28
29set(X_VERSION ${PC_X_x11_VERSION})
30
16include(FindPackageHandleStandardArgs) 31include(FindPackageHandleStandardArgs)
17find_package_handle_standard_args(X DEFAULT_MSG X_INCLUDE_DIRS X_LIBRARIES) 32find_package_handle_standard_args(X
33 REQUIRED_VARS X_LIBRARY X_EXT_LIBRARY X_INCLUDE_DIR
34 VERSION_VAR X_VERSION)
35
36if(X_FOUND)
37 set(X_LIBRARIES ${X_LIBRARY} ${X_EXT_LIBRARY})
38 set(X_INCLUDE_DIRS ${X_INCLUDE_DIR})
39 set(X_DEFINITIONS -DHAVE_X11=1)
18 40
19list(APPEND X_DEFINITIONS -DHAVE_X11=1) 41 if(NOT TARGET X::X)
42 add_library(X::X UNKNOWN IMPORTED)
43 set_target_properties(X::X PROPERTIES
44 IMPORTED_LOCATION "${X_LIBRARY}"
45 INTERFACE_INCLUDE_DIRECTORIES "${X_INCLUDE_DIR}"
46 INTERFACE_COMPILE_DEFINITIONS HAVE_X11=1)
47 endif()
48 if(NOT TARGET X::Xext)
49 add_library(X::Xext UNKNOWN IMPORTED)
50 set_target_properties(X::Xext PROPERTIES
51 IMPORTED_LOCATION "${X_EXT_LIBRARY}"
52 INTERFACE_INCLUDE_DIRECTORIES "${X_INCLUDE_DIR}"
53 INTERFACE_LINK_LIBRARIES X::X)
54 endif()
55endif()
20 56
21mark_as_advanced(X_INCLUDE_DIRS X_LIBRARIES X_DEFINITIONS) 57mark_as_advanced(X_INCLUDE_DIR X_LIBRARY X_EXT_LIBRARY)
diff --git a/project/cmake/modules/FindXRandR.cmake b/project/cmake/modules/FindXRandR.cmake
index 57ff750..9feaedc 100644
--- a/project/cmake/modules/FindXRandR.cmake
+++ b/project/cmake/modules/FindXRandR.cmake
@@ -1,22 +1,47 @@
1# - Try to find xrandr 1#.rst:
2# Once done this will define 2# FindXRandR
3# ----------
4# Finds the XRandR library
3# 5#
4# XRANDR_FOUND - system has lixrandr 6# This will will define the following variables::
5# XRANDR_INCLUDE_DIRS - the libxrandr include directory 7#
6# XRANDR_LIBRARIES - The libxrandr libraries 8# XRANDR_FOUND - system has XRANDR
9# XRANDR_INCLUDE_DIRS - the XRANDR include directory
10# XRANDR_LIBRARIES - the XRANDR libraries
11# XRANDR_DEFINITIONS - the XRANDR definitions
12#
13# and the following imported targets::
14#
15# XRandR::XRandR - The XRANDR library
7 16
8if(PKG_CONFIG_FOUND) 17if(PKG_CONFIG_FOUND)
9 pkg_check_modules (XRANDR xrandr) 18 pkg_check_modules(PC_XRANDR xrandr QUIET)
10 list(APPEND XRANDR_INCLUDE_DIRS ${XRANDR_INCLUDEDIR})
11else()
12 find_library(XRANDR_LIBRARIES Xrandr)
13endif() 19endif()
14 20
15if(XRANDR_FOUND) 21find_path(XRANDR_INCLUDE_DIR NAMES X11/extensions/Xrandr.h
22 PATHS ${PC_XRANDR_INCLUDEDIR})
23find_library(XRANDR_LIBRARY NAMES Xrandr
24 PATHS ${PC_XRANDR_LIBDIR})
25
26set(XRANDR_VERSION ${PC_XRANDR_VERSION})
27
16include(FindPackageHandleStandardArgs) 28include(FindPackageHandleStandardArgs)
17 find_package_handle_standard_args(XRandR DEFAULT_MSG XRANDR_INCLUDE_DIRS XRANDR_LIBRARIES) 29find_package_handle_standard_args(XRandR
30 REQUIRED_VARS XRANDR_LIBRARY XRANDR_INCLUDE_DIR
31 VERSION_VAR XRANDR_VERSION)
18 32
19 list(APPEND XRANDR_DEFINITIONS -DHAVE_LIBXRANDR=1) 33if(XRANDR_FOUND)
34 set(XRANDR_LIBRARIES ${XRANDR_LIBRARY})
35 set(XRANDR_INCLUDE_DIRS ${XRANDR_INCLUDE_DIR})
36 set(XRANDR_DEFINITIONS -DHAVE_LIBXRANDR=1)
20 37
21 mark_as_advanced(XRANDR_INCLUDE_DIRS XRANDR_LIBRARIES XRANDR_DEFINITIONS) 38 if(NOT TARGET XRandR::XRandR)
39 add_library(XRandR::XRandR UNKNOWN IMPORTED)
40 set_target_properties(XRandR::XRandR PROPERTIES
41 IMPORTED_LOCATION "${XRANDR_LIBRARY}"
42 INTERFACE_INCLUDE_DIRECTORIES "${XRANDR_INCLUDE_DIR}"
43 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBXRANDR=1)
44 endif()
22endif() 45endif()
46
47mark_as_advanced(XRANDR_INCLUDE_DIR XRANDR_LIBRARY)
diff --git a/project/cmake/modules/FindXSLT.cmake b/project/cmake/modules/FindXSLT.cmake
new file mode 100644
index 0000000..9be51d3
--- /dev/null
+++ b/project/cmake/modules/FindXSLT.cmake
@@ -0,0 +1,50 @@
1#.rst:
2# FindXSLT
3# --------
4# Finds the XSLT library
5#
6# This will will define the following variables::
7#
8# XSLT_FOUND - system has XSLT
9# XSLT_INCLUDE_DIRS - the XSLT include directory
10# XSLT_LIBRARIES - the XSLT libraries
11# XSLT_DEFINITIONS - the XSLT definitions
12#
13# and the following imported targets::
14#
15# XSLT::XSLT - The XSLT library
16
17find_package(LibXml2 REQUIRED)
18
19if(PKG_CONFIG_FOUND)
20 pkg_check_modules(PC_XSLT libxslt QUIET)
21endif()
22
23find_path(XSLT_INCLUDE_DIR NAMES libxslt/xslt.h
24 PATHS ${PC_XSLT_INCLUDEDIR})
25find_library(XSLT_LIBRARY NAMES xslt libxslt
26 PATHS ${PC_XSLT_LIBDIR})
27
28set(XSLT_VERSION ${PC_XSLT_VERSION})
29
30include(FindPackageHandleStandardArgs)
31find_package_handle_standard_args(XSLT
32 REQUIRED_VARS XSLT_LIBRARY XSLT_INCLUDE_DIR
33 VERSION_VAR XSLT_VERSION)
34
35if(XSLT_FOUND)
36 set(XSLT_LIBRARIES ${XSLT_LIBRARY} ${LIBXML2_LIBRARIES})
37 set(XSLT_INCLUDE_DIRS ${XSLT_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR})
38 set(XSLT_DEFINITIONS -DHAVE_LIBXSLT=1)
39
40 if(NOT TARGET XSLT::XSLT)
41 add_library(XSLT::XSLT UNKNOWN IMPORTED)
42 set_target_properties(XSLT::XSLT PROPERTIES
43 IMPORTED_LOCATION "${XSLT_LIBRARY}"
44 INTERFACE_INCLUDE_DIRECTORIES "${XSLT_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}"
45 INTERFACE_COMPILE_DEFINITIONS HAVE_LIBXSLT=1
46 ITERFACE_LINK_LIBRARIES "${LIBXML2_LIBRARIES}")
47 endif()
48endif()
49
50mark_as_advanced(XSLT_INCLUDE_DIR XSLT_LIBRARY)
diff --git a/project/cmake/modules/FindXslt.cmake b/project/cmake/modules/FindXslt.cmake
deleted file mode 100644
index 442ba43..0000000
--- a/project/cmake/modules/FindXslt.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
1# - Try to find XSLT
2# Once done this will define
3#
4# XSLT_FOUND - system has libxslt
5# XSLT_INCLUDE_DIRS - the libxslt include directory
6# XSLT_LIBRARIES - The libxslt libraries
7
8if(PKG_CONFIG_FOUND)
9 pkg_check_modules (XSLT libxslt)
10else()
11 find_path(XSLT_INCLUDE_DIRS libxslt/xslt.h)
12 find_library(XSLT_LIBRARIES NAMES xslt libxslt)
13endif()
14
15include(FindPackageHandleStandardArgs)
16find_package_handle_standard_args(Xslt DEFAULT_MSG XSLT_INCLUDE_DIRS XSLT_LIBRARIES)
17
18mark_as_advanced(XSLT_INCLUDE_DIRS XSLT_LIBRARIES)
diff --git a/project/cmake/modules/FindYajl.cmake b/project/cmake/modules/FindYajl.cmake
index c27b03a..c73a67b 100644
--- a/project/cmake/modules/FindYajl.cmake
+++ b/project/cmake/modules/FindYajl.cmake
@@ -1,27 +1,62 @@
1# Base Io build system 1#.rst:
2# Written by Jeremy Tregunna <jeremy.tregunna@me.com> 2# FindYajl
3# --------
4# Finds the Yajl library
3# 5#
4# Find libyajl 6# This will will define the following variables::
5pkg_check_modules(YAJL yajl>=2.0) 7#
6if(YAJL_FOUND) 8# YAJL_FOUND - system has Yajl
7 list(APPEND YAJL_DEFINITIONS -DYAJL_MAJOR=2) 9# YAJL_INCLUDE_DIRS - Yajl include directory
10# YAJL_LIBRARIES - the Yajl libraries
11#
12# and the following imported targets::
13#
14# Yajl::Yajl - The Yajl library
15
16if(NOT Yajl_FIND_VERSION)
17 set(Yajl_FIND_VERSION 2.0.0)
18endif()
19
20if(PKG_CONFIG_FOUND)
21 pkg_check_modules(PC_YAJL yajl>=${Yajl_FIND_VERSION} QUIET)
8endif() 22endif()
9 23
10if(NOT YAJL_FOUND) 24find_path(YAJL_INCLUDE_DIR NAMES yajl/yajl_common.h
11 find_path(YAJL_INCLUDE_DIRS yajl/yajl_common.h) 25 PATHS ${PC_YAJL_INCLUDEDIR})
12 find_library(YAJL_LIBRARIES NAMES yajl) 26find_library(YAJL_LIBRARY NAMES yajl
27 PATHS ${PC_YAJL_LIBDIR})
13 28
14 file(STRINGS ${YAJL_INCLUDE_DIRS}/yajl/yajl_version.h version_header) 29if(PC_YAJL_VERSION)
15 string(REGEX MATCH "YAJL_MAJOR ([0-9]+)" YAJL_VERSION_MAJOR ${version_header}) 30 set(YAJL_VERSION_STRING ${PC_YAJL_VERSION})
31elseif(YAJL_INCLUDE_DIR AND EXISTS "${YAJL_INCLUDE_DIR}/yajl/yajl_version.h")
32 file(STRINGS "${YAJL_INCLUDE_DIR}/yajl/yajl_version.h" yajl_version_str REGEX "^[ \t]*#define[ \t]+YAJL_(MAJOR|MINOR|MICRO)")
16 string(REGEX REPLACE "YAJL_MAJOR ([0-9]+)" "\\1" YAJL_VERSION_MAJOR "${YAJL_VERSION_MAJOR}") 33 string(REGEX REPLACE "YAJL_MAJOR ([0-9]+)" "\\1" YAJL_VERSION_MAJOR "${YAJL_VERSION_MAJOR}")
17 if (YAJL_VERSION_MINOR LESS 2) 34
18 set(YAJL_INCLUDE_DIRS) 35 string(REGEX REPLACE ".*YAJL_MAJOR ([0-9]+).*" "\\1" yajl_major "${yajl_version_str}")
19 set(YALJ_LIBRARIES) 36 string(REGEX REPLACE ".*YAJL_MINOR ([0-9]+).*" "\\1" yajl_minor "${yajl_version_str}")
20 endif() 37 string(REGEX REPLACE ".*YAJL_MICRO ([0-9]+).*" "\\1" yajl_micro "${yajl_version_str}")
21 list(APPEND YAJL_DEFINITIONS -DYAJL_MAJOR=${YAJL_VERSION_MAJOR}) 38 set(YAJL_VERSION_STRING "${yajl_major}.${yajl_minor}.${yajl_micro}")
39 unset(yajl_version_str)
40 unset(yajl_major)
41 unset(yajl_minor)
42 unset(yajl_micro)
22endif() 43endif()
23 44
24include(FindPackageHandleStandardArgs) 45include(FindPackageHandleStandardArgs)
25find_package_handle_standard_args(Yajl DEFAULT_MSG YAJL_INCLUDE_DIRS YAJL_LIBRARIES) 46find_package_handle_standard_args(Yajl
47 REQUIRED_VARS YAJL_LIBRARY YAJL_INCLUDE_DIR
48 VERSION_VAR YAJL_VERSION_STRING)
49
50if(YAJL_FOUND)
51 set(YAJL_INCLUDE_DIRS ${YAJL_INCLUDE_DIR})
52 set(YAJL_LIBRARIES ${YAJL_LIBRARY})
53
54 if(NOT TARGET Yajl::Yajl)
55 add_library(Yajl::Yajl UNKNOWN IMPORTED)
56 set_target_properties(Yajl::Yajl PROPERTIES
57 IMPORTED_LOCATION "${YAJL_LIBRARY}"
58 INTERFACE_INCLUDE_DIRECTORIES "${YAJL_INCLUDE_DIR}")
59 endif()
60endif()
26 61
27mark_as_advanced(YAJL_INCLUDE_DIRS YAJL_LIBRARIES YAJL_DEFINITIONS) 62mark_as_advanced(YAJL_INCLUDE_DIR YAJL_LIBRARY)
diff --git a/project/cmake/modules/LDGOLD.cmake b/project/cmake/modules/LDGOLD.cmake
new file mode 100644
index 0000000..ad19c6b
--- /dev/null
+++ b/project/cmake/modules/LDGOLD.cmake
@@ -0,0 +1,45 @@
1option(ENABLE_LDGOLD "Use GNU gold linker" ON)
2
3set(LDGOLD_FOUND FALSE)
4if(ENABLE_LDGOLD)
5 execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
6 if(LD_VERSION MATCHES "GNU gold")
7 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
8 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
9 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
10 set(LDGOLD_FOUND TRUE)
11 message(STATUS "Linker: GNU gold")
12 else()
13 message(WARNING "GNU gold linker is not available, falling back to default system linker")
14 endif()
15else()
16 message(STATUS "Linker: Default system linker")
17endif()
18
19set(DEFAULT_ENABLE_DEBUGFISSION FALSE)
20if(CMAKE_BUILD_TYPE STREQUAL Debug OR
21 CMAKE_BUILD_TYPE STREQUAL RelWithDebInfo AND
22 LDGOLD_FOUND)
23 set(DEFAULT_ENABLE_DEBUGFISSION TRUE)
24endif()
25
26include(CMakeDependentOption)
27cmake_dependent_option(ENABLE_DEBUGFISSION "Enable Debug Fission support" ON
28 "DEFAULT_ENABLE_DEBUGFISSION" OFF)
29
30set(DEBUGFISSION_FOUND FALSE)
31if(ENABLE_DEBUGFISSION)
32 include(TestCXXAcceptsFlag)
33 check_cxx_accepts_flag(-gsplit-dwarf CXX_ACCEPTS_GSPLIT_DWARF)
34 if(CXX_ACCEPTS_GSPLIT_DWARF)
35 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -gsplit-dwarf")
36 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -gsplit-dwarf")
37 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gdb-index")
38 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gdb-index")
39 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gdb-index")
40 set(DEBUGFISSION_FOUND TRUE)
41 message(STATUS "Debug Fission enabled")
42 else()
43 message(WARNING "Debug Fission is not available")
44 endif()
45endif()
diff --git a/project/cmake/modules/extra/ECMEnableSanitizers.cmake b/project/cmake/modules/extra/ECMEnableSanitizers.cmake
new file mode 100644
index 0000000..aa7092d
--- /dev/null
+++ b/project/cmake/modules/extra/ECMEnableSanitizers.cmake
@@ -0,0 +1,149 @@
1#.rst:
2# ECMEnableSanitizers
3# -------------------
4#
5# Enable compiler sanitizer flags.
6#
7# The following sanitizers are supported:
8#
9# - Address Sanitizer
10# - Memory Sanitizer
11# - Thread Sanitizer
12# - Leak Sanitizer
13# - Undefined Behaviour Sanitizer
14#
15# All of them are implemented in Clang, depending on your version, and
16# there is an work in progress in GCC, where some of them are currently
17# implemented.
18#
19# This module will check your current compiler version to see if it
20# supports the sanitizers that you want to enable
21#
22# Usage
23# =====
24#
25# Simply add::
26#
27# include(ECMEnableSanitizers)
28#
29# to your ``CMakeLists.txt``. Note that this module is included in
30# KDECompilerSettings, so projects using that module do not need to also
31# include this one.
32#
33# The sanitizers are not enabled by default. Instead, you must set
34# ``ECM_ENABLE_SANITIZERS`` (either in your ``CMakeLists.txt`` or on the
35# command line) to a semicolon-separated list of sanitizers you wish to enable.
36# The options are:
37#
38# - address
39# - memory
40# - thread
41# - leak
42# - undefined
43#
44# The sanitizers "address", "memory" and "thread" are mutually exclusive. You
45# cannot enable two of them in the same build.
46#
47# "leak" requires the "address" sanitizer.
48#
49# .. note::
50#
51# To reduce the overhead induced by the instrumentation of the sanitizers, it
52# is advised to enable compiler optimizations (``-O1`` or higher).
53#
54# Example
55# =======
56#
57# This is an example of usage::
58#
59# mkdir build
60# cd build
61# cmake -DECM_ENABLE_SANITIZERS='address;leak;undefined' ..
62#
63# .. note::
64#
65# Most of the sanitizers will require Clang. To enable it, use::
66#
67# -DCMAKE_CXX_COMPILER=clang++
68#
69# Since 1.3.0.
70
71#=============================================================================
72# Copyright 2014 Mathieu Tarral <mathieu.tarral@gmail.com>
73#
74# Distributed under the OSI-approved BSD License (the "License");
75# see accompanying file COPYING-CMAKE-SCRIPTS for details.
76#
77# This software is distributed WITHOUT ANY WARRANTY; without even the
78# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
79# See the License for more information.
80#=============================================================================
81# (To distribute this file outside of extra-cmake-modules, substitute the full
82# License text for the above reference.)
83
84# MACRO check_compiler_version
85#-----------------------------
86macro (check_compiler_version gcc_required_version clang_required_version)
87 if (
88 (
89 CMAKE_CXX_COMPILER_ID MATCHES "GNU"
90 AND
91 CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${gcc_required_version}
92 )
93 OR
94 (
95 CMAKE_CXX_COMPILER_ID MATCHES "Clang"
96 AND
97 CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${clang_required_version}
98 )
99 )
100 # error !
101 message(FATAL_ERROR "You ask to enable the sanitizer ${CUR_SANITIZER},
102 but your compiler ${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION}
103 does not support it !
104 You should use at least GCC ${gcc_required_version} or Clang ${clang_required_version}
105 (99.99 means not implemented yet)")
106 endif ()
107endmacro ()
108
109# MACRO check_compiler_support
110#------------------------------
111macro (enable_sanitizer_flags sanitize_option)
112 if (${sanitize_option} MATCHES "address")
113 check_compiler_version("4.8" "3.1")
114 set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
115 set(XSAN_LINKER_FLAGS "asan")
116 elseif (${sanitize_option} MATCHES "thread")
117 check_compiler_version("4.8" "3.1")
118 set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
119 set(XSAN_LINKER_FLAGS "tsan")
120 elseif (${sanitize_option} MATCHES "memory")
121 check_compiler_version("99.99" "3.1")
122 set(XSAN_COMPILE_FLAGS "-fsanitize=memory")
123 elseif (${sanitize_option} MATCHES "leak")
124 check_compiler_version("4.9" "3.4")
125 set(XSAN_COMPILE_FLAGS "-fsanitize=leak")
126 set(XSAN_LINKER_FLAGS "lsan")
127 elseif (${sanitize_option} MATCHES "undefined")
128 check_compiler_version("4.9" "3.1")
129 set(XSAN_COMPILE_FLAGS "-fsanitize=undefined -fno-omit-frame-pointer -fno-optimize-sibling-calls")
130 else ()
131 message(FATAL_ERROR "Compiler sanitizer option \"${sanitize_option}\" not supported.")
132 endif ()
133endmacro ()
134
135# for each element of the ECM_ENABLE_SANITIZERS list
136foreach ( CUR_SANITIZER ${ECM_ENABLE_SANITIZERS} )
137 # lowercase filter
138 string(TOLOWER ${CUR_SANITIZER} CUR_SANITIZER)
139 # check option and enable appropriate flags
140 enable_sanitizer_flags ( ${CUR_SANITIZER} )
141 set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${XSAN_COMPILE_FLAGS}" )
142 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
143 link_libraries(${XSAN_LINKER_FLAGS})
144 endif()
145 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
146 string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
147 string(REPLACE "-Wl,--no-undefined" "" CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS}")
148 endif ()
149endforeach ()