aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Modules/FindAVCodec.cmake47
-rw-r--r--cmake/Modules/FindAVUtil.cmake47
-rw-r--r--cmake/Modules/FindFfmpeg.cmake22
-rw-r--r--cmake/Modules/FindGMP.cmake47
-rw-r--r--cmake/Modules/FindGmp.cmake17
-rw-r--r--cmake/Modules/FindIconv.cmake66
-rw-r--r--cmake/Modules/FindNettle.cmake70
-rw-r--r--cmake/Modules/FindPAM.cmake47
-rw-r--r--cmake/Modules/FindPWQuality.cmake47
-rw-r--r--cmake/Modules/FindPixman.cmake56
-rw-r--r--cmake/Modules/FindSELinux.cmake47
-rw-r--r--cmake/Modules/FindSWScale.cmake47
-rw-r--r--cmake/Modules/FindSystemd.cmake47
-rw-r--r--cmake/StaticBuild.cmake67
-rw-r--r--cmake/TargetLinkDirectories.cmake12
15 files changed, 495 insertions, 191 deletions
diff --git a/cmake/Modules/FindAVCodec.cmake b/cmake/Modules/FindAVCodec.cmake
new file mode 100644
index 00000000..9667160f
--- /dev/null
+++ b/cmake/Modules/FindAVCodec.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindAVCodec
+-----------
+
+Find the FFmpeg avcodec library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``AVCODEC_INCLUDE_DIRS``
+ where to find libavcodec/avcodec.h, etc.
+``AVCODEC_LIBRARIES``
+ the libraries to link against to use avcodec.
+``AVCODEC_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_AVCodec QUIET libavcodec)
+endif()
+
+find_path(AVCodec_INCLUDE_DIR NAMES libavcodec/avcodec.h
+ HINTS
+ ${PC_AVCodec_INCLUDE_DIRS}
+)
+mark_as_advanced(AVCodec_INCLUDE_DIR)
+
+find_library(AVCodec_LIBRARY NAMES avcodec
+ HINTS
+ ${PC_AVCodec_LIBRARY_DIRS}
+)
+mark_as_advanced(AVCodec_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(AVCodec
+ REQUIRED_VARS
+ AVCodec_LIBRARY AVCodec_INCLUDE_DIR
+)
+
+if(AVCodec_FOUND)
+ set(AVCODEC_INCLUDE_DIRS ${AVCodec_INCLUDE_DIR})
+ set(AVCODEC_LIBRARIES ${AVCodec_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindAVUtil.cmake b/cmake/Modules/FindAVUtil.cmake
new file mode 100644
index 00000000..4b7e17cc
--- /dev/null
+++ b/cmake/Modules/FindAVUtil.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindAVUtil
+----------
+
+Find the FFmpeg avutil library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``AVUTIL_INCLUDE_DIRS``
+ where to find libavutil/avutil.h, etc.
+``AVUTIL_LIBRARIES``
+ the libraries to link against to use avutil.
+``AVUTIL_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_AVUtil QUIET libavutil)
+endif()
+
+find_path(AVUtil_INCLUDE_DIR NAMES libavutil/avutil.h
+ HINTS
+ ${PC_AVUtil_INCLUDE_DIRS}
+)
+mark_as_advanced(AVUtil_INCLUDE_DIR)
+
+find_library(AVUtil_LIBRARY NAMES avutil
+ HINTS
+ ${PC_AVUtil_LIBRARY_DIRS}
+)
+mark_as_advanced(AVUtil_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(AVUtil
+ REQUIRED_VARS
+ AVUtil_LIBRARY AVUtil_INCLUDE_DIR
+)
+
+if(AVUtil_FOUND)
+ set(AVUTIL_INCLUDE_DIRS ${AVUtil_INCLUDE_DIR})
+ set(AVUTIL_LIBRARIES ${AVUtil_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindFfmpeg.cmake b/cmake/Modules/FindFfmpeg.cmake
deleted file mode 100644
index 1a082449..00000000
--- a/cmake/Modules/FindFfmpeg.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
-find_package(PkgConfig)
-
-if (PKG_CONFIG_FOUND)
- pkg_check_modules(AVCODEC libavcodec)
- pkg_check_modules(AVUTIL libavutil)
- pkg_check_modules(SWSCALE libswscale)
-else()
- find_path(AVCODEC_INCLUDE_DIRS NAMES avcodec.h PATH_SUFFIXES libavcodec)
- find_library(AVCODEC_LIBRARIES NAMES avcodec)
- find_package_handle_standard_args(AVCODEC DEFAULT_MSG AVCODEC_LIBRARIES AVCODEC_INCLUDE_DIRS)
- find_path(AVUTIL_INCLUDE_DIRS NAMES avutil.h PATH_SUFFIXES libavutil)
- find_library(AVUTIL_LIBRARIES NAMES avutil)
- find_package_handle_standard_args(AVUTIL DEFAULT_MSG AVUTIL_LIBRARIES AVUTIL_INCLUDE_DIRS)
- find_path(SWSCALE_INCLUDE_DIRS NAMES swscale.h PATH_SUFFIXES libswscale)
- find_library(SWSCALE_LIBRARIES NAMES swscale)
- find_package_handle_standard_args(SWSCALE DEFAULT_MSG SWSCALE_LIBRARIES SWSCALE_INCLUDE_DIRS)
-endif()
-
-if(Ffmpeg_FIND_REQUIRED AND
- (NOT AVCODEC_FOUND OR NOT AVUTIL_FOUND OR NOT SWSCALE_FOUND))
- message(FATAL_ERROR "Could not find FFMPEG")
-endif()
diff --git a/cmake/Modules/FindGMP.cmake b/cmake/Modules/FindGMP.cmake
new file mode 100644
index 00000000..956d3f19
--- /dev/null
+++ b/cmake/Modules/FindGMP.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindGMP
+-------
+
+Find the GNU MP bignum library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``GMP_INCLUDE_DIRS``
+ where to find gmp.h, etc.
+``GMP_LIBRARIES``
+ the libraries to link against to use GMP.
+``GMP_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_GMP QUIET gmp)
+endif()
+
+find_path(GMP_INCLUDE_DIR NAMES gmp.h
+ HINTS
+ ${PC_GMP_INCLUDE_DIRS}
+)
+mark_as_advanced(GMP_INCLUDE_DIR)
+
+find_library(GMP_LIBRARY NAMES gmp
+ HINTS
+ ${PC_GMP_LIBRARY_DIRS}
+)
+mark_as_advanced(GMP_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(GMP
+ REQUIRED_VARS
+ GMP_LIBRARY GMP_INCLUDE_DIR
+)
+
+if(GMP_FOUND)
+ set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})
+ set(GMP_LIBRARIES ${GMP_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindGmp.cmake b/cmake/Modules/FindGmp.cmake
deleted file mode 100644
index 8711d68e..00000000
--- a/cmake/Modules/FindGmp.cmake
+++ /dev/null
@@ -1,17 +0,0 @@
-find_package(PkgConfig)
-
-if (PKG_CONFIG_FOUND)
- pkg_check_modules(GMP gmp)
-endif()
-
-# Only very recent versions of gmp has pkg-config support, so we have to
-# fall back on a more classical search
-if(NOT GMP_FOUND)
- find_path(GMP_INCLUDE_DIRS NAMES gmp.h PATH_SUFFIXES)
- find_library(GMP_LIBRARIES NAMES gmp)
- find_package_handle_standard_args(GMP DEFAULT_MSG GMP_LIBRARIES GMP_INCLUDE_DIRS)
-endif()
-
-if(Gmp_FIND_REQUIRED AND NOT GMP_FOUND)
- message(FATAL_ERROR "Could not find GMP")
-endif()
diff --git a/cmake/Modules/FindIconv.cmake b/cmake/Modules/FindIconv.cmake
deleted file mode 100644
index cf268ea0..00000000
--- a/cmake/Modules/FindIconv.cmake
+++ /dev/null
@@ -1,66 +0,0 @@
-# From: http://gitorious.org/gammu/mainline/blobs/master/cmake/FindIconv.cmake
-
-# - Try to find Iconv
-# Once done this will define
-#
-# ICONV_FOUND - system has Iconv
-# ICONV_INCLUDE_DIR - the Iconv include directory
-# ICONV_LIBRARIES - Link these to use Iconv
-# ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const
-#
-include(CheckCCompilerFlag)
-include(CheckCXXSourceCompiles)
-
-IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
- # Already in cache, be silent
- SET(ICONV_FIND_QUIETLY TRUE)
-ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
-
-FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
-
-FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv c)
-
-IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
- SET(ICONV_FOUND TRUE)
-ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
-
-set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
-set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
-IF(ICONV_FOUND)
- check_c_compiler_flag("-Werror" ICONV_HAVE_WERROR)
- set (CMAKE_C_FLAGS_BACKUP "${CMAKE_C_FLAGS}")
- if(ICONV_HAVE_WERROR)
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
- endif(ICONV_HAVE_WERROR)
- check_c_source_compiles("
- #include <iconv.h>
- int main(){
- iconv_t conv = 0;
- const char* in = 0;
- size_t ilen = 0;
- char* out = 0;
- size_t olen = 0;
- iconv(conv, &in, &ilen, &out, &olen);
- return 0;
- }
-" ICONV_SECOND_ARGUMENT_IS_CONST )
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS_BACKUP}")
-ENDIF(ICONV_FOUND)
-set(CMAKE_REQUIRED_INCLUDES)
-set(CMAKE_REQUIRED_LIBRARIES)
-
-IF(ICONV_FOUND)
- IF(NOT ICONV_FIND_QUIETLY)
- MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}")
- ENDIF(NOT ICONV_FIND_QUIETLY)
-ELSE(ICONV_FOUND)
- IF(Iconv_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could not find Iconv")
- ENDIF(Iconv_FIND_REQUIRED)
-ENDIF(ICONV_FOUND)
-
-MARK_AS_ADVANCED(
- ICONV_INCLUDE_DIR
- ICONV_LIBRARIES
- ICONV_SECOND_ARGUMENT_IS_CONST
-)
diff --git a/cmake/Modules/FindNettle.cmake b/cmake/Modules/FindNettle.cmake
index f5acf6ac..cdad9754 100644
--- a/cmake/Modules/FindNettle.cmake
+++ b/cmake/Modules/FindNettle.cmake
@@ -1,21 +1,63 @@
-find_package(Gmp)
-find_package(PkgConfig)
+#[=======================================================================[.rst:
+FindNettle
+----------
-if (PKG_CONFIG_FOUND)
- pkg_check_modules(NETTLE nettle>=3.0)
- pkg_check_modules(HOGWEED hogweed)
+Find the Nettle and Hogweed libraries
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``NETTLE_INCLUDE_DIRS``
+ where to find nettle/eax.h, etc.
+``NETTLE_LIBRARIES``
+ the libraries to link against to use Nettle.
+``HOGWEED_LIBRARIES``
+ the libraries to link against to use Hogweed.
+``NETTLE_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+if(Nettle_FIND_REQUIRED)
+ find_package(GMP QUIET REQUIRED)
else()
- find_path(NETTLE_INCLUDE_DIRS NAMES eax.h PATH_SUFFIXES nettle)
- find_library(NETTLE_LIBRARIES NAMES nettle)
- find_package_handle_standard_args(NETTLE DEFAULT_MSG NETTLE_LIBRARIES NETTLE_INCLUDE_DIRS)
- find_library(HOGWEED_LIBRARIES NAMES hogweed)
- find_package_handle_standard_args(HOGWEED DEFAULT_MSG HOGWEED_LIBRARIES)
+ find_package(GMP QUIET)
endif()
-if (NOT HOGWEED_FOUND OR NOT GMP_FOUND)
- set(NETTLE_FOUND 0)
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_Nettle QUIET nettle)
+ pkg_check_modules(PC_Hogweed QUIET hogweed)
endif()
-if(Nettle_FIND_REQUIRED AND NOT NETTLE_FOUND)
- message(FATAL_ERROR "Could not find Nettle")
+find_path(Nettle_INCLUDE_DIR NAMES nettle/eax.h
+ HINTS
+ ${PC_Nettle_INCLUDE_DIRS}
+)
+mark_as_advanced(Nettle_INCLUDE_DIR)
+
+find_library(Nettle_LIBRARY NAMES nettle
+ HINTS
+ ${PC_Nettle_LIBRARY_DIRS}
+)
+mark_as_advanced(Nettle_LIBRARY)
+
+find_library(Hogweed_LIBRARY NAMES hogweed
+ HINTS
+ ${PC_Hogweed_LIBRARY_DIRS}
+)
+mark_as_advanced(Hogweed_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Nettle
+ REQUIRED_VARS
+ Nettle_LIBRARY Nettle_INCLUDE_DIR Hogweed_LIBRARY
+)
+
+if(Nettle_FOUND)
+ set(NETTLE_INCLUDE_DIRS ${Nettle_INCLUDE_DIR} ${GMP_INCLUDE_DIRS})
+ set(NETTLE_LIBRARIES ${Nettle_LIBRARY})
+ set(HOGWEED_LIBRARIES ${Hogweed_LIBRARY} ${GMP_LIBRARIES})
endif()
diff --git a/cmake/Modules/FindPAM.cmake b/cmake/Modules/FindPAM.cmake
new file mode 100644
index 00000000..a41cb421
--- /dev/null
+++ b/cmake/Modules/FindPAM.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindPAM
+-------
+
+Find the Pluggable Authentication Modules library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``PAM_INCLUDE_DIRS``
+ where to find security/pam_appl.h, etc.
+``PAM_LIBRARIES``
+ the libraries to link against to use PAM.
+``PAM_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_PAM QUIET pam)
+endif()
+
+find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h
+ HINTS
+ ${PC_PAM_INCLUDE_DIRS}
+)
+mark_as_advanced(PAM_INCLUDE_DIR)
+
+find_library(PAM_LIBRARY NAMES pam
+ HINTS
+ ${PC_PAM_LIBRARY_DIRS}
+)
+mark_as_advanced(PAM_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(PAM
+ REQUIRED_VARS
+ PAM_LIBRARY PAM_INCLUDE_DIR
+)
+
+if(PAM_FOUND)
+ set(PAM_INCLUDE_DIRS ${PAM_INCLUDE_DIR})
+ set(PAM_LIBRARIES ${PAM_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindPWQuality.cmake b/cmake/Modules/FindPWQuality.cmake
new file mode 100644
index 00000000..a1e5c1ff
--- /dev/null
+++ b/cmake/Modules/FindPWQuality.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindPWQuality
+-------------
+
+Find the password quality library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``PWQUALITY_INCLUDE_DIRS``
+ where to find pwquality.h, etc.
+``PWQUALITY_LIBRARIES``
+ the libraries to link against to use pwquality.
+``PWQUALITY_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_PWQuality QUIET pwquality)
+endif()
+
+find_path(PWQuality_INCLUDE_DIR NAMES pwquality.h
+ HINTS
+ ${PC_PWQuality_INCLUDE_DIRS}
+)
+mark_as_advanced(PWQuality_INCLUDE_DIR)
+
+find_library(PWQuality_LIBRARY NAMES pwquality
+ HINTS
+ ${PC_PWQuality_LIBRARY_DIRS}
+)
+mark_as_advanced(PWQuality_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(PWQuality
+ REQUIRED_VARS
+ PWQuality_LIBRARY PWQuality_INCLUDE_DIR
+)
+
+if(PWQuality_FOUND)
+ set(PWQUALITY_INCLUDE_DIRS ${PWQuality_INCLUDE_DIR})
+ set(PWQUALITY_LIBRARIES ${PWQuality_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindPixman.cmake b/cmake/Modules/FindPixman.cmake
index f024b71a..a6f2fad2 100644
--- a/cmake/Modules/FindPixman.cmake
+++ b/cmake/Modules/FindPixman.cmake
@@ -1,13 +1,49 @@
-find_package(PkgConfig)
-
-if (PKG_CONFIG_FOUND)
- pkg_check_modules(PIXMAN pixman-1)
-else()
- find_path(PIXMAN_INCLUDE_DIRS NAMES pixman.h PATH_SUFFIXES pixman-1)
- find_library(PIXMAN_LIBRARIES NAMES pixman-1)
- find_package_handle_standard_args(PIXMAN DEFAULT_MSG PIXMAN_LIBRARIES PIXMAN_INCLUDE_DIRS)
+#[=======================================================================[.rst:
+FindPixman
+----------
+
+Find the Pixman library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``PIXMAN_INCLUDE_DIRS``
+ where to find pixman.h, etc.
+``PIXMAN_LIBRARIES``
+ the libraries to link against to use Pixman.
+``PIXMAN_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_Pixman QUIET pixman-1)
endif()
-if(Pixman_FIND_REQUIRED AND NOT PIXMAN_FOUND)
- message(FATAL_ERROR "Could not find Pixman")
+find_path(Pixman_INCLUDE_DIR NAMES pixman.h
+ PATH_SUFFIXES
+ pixman-1
+ HINTS
+ ${PC_Pixman_INCLUDE_DIRS}
+)
+mark_as_advanced(Pixman_INCLUDE_DIR)
+
+find_library(Pixman_LIBRARY NAMES pixman-1
+ HINTS
+ ${PC_Pixman_LIBRARY_DIRS}
+)
+mark_as_advanced(Pixman_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Pixman
+ REQUIRED_VARS
+ Pixman_LIBRARY Pixman_INCLUDE_DIR
+)
+
+if(Pixman_FOUND)
+ set(PIXMAN_INCLUDE_DIRS ${Pixman_INCLUDE_DIR})
+ set(PIXMAN_LIBRARIES ${Pixman_LIBRARY})
endif()
diff --git a/cmake/Modules/FindSELinux.cmake b/cmake/Modules/FindSELinux.cmake
new file mode 100644
index 00000000..10be6736
--- /dev/null
+++ b/cmake/Modules/FindSELinux.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindSELinux
+-----------
+
+Find the SELinux library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``SELINUX_INCLUDE_DIRS``
+ where to find selinux/selinux.h, etc.
+``SELINUX_LIBRARIES``
+ the libraries to link against to use libselinux.
+``SELINUX_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_SELinux QUIET libselinux)
+endif()
+
+find_path(SELinux_INCLUDE_DIR NAMES selinux/selinux.h
+ HINTS
+ ${PC_SELinux_INCLUDE_DIRS}
+)
+mark_as_advanced(SELinux_INCLUDE_DIR)
+
+find_library(SELinux_LIBRARY NAMES selinux
+ HINTS
+ ${PC_SELinux_LIBRARY_DIRS}
+)
+mark_as_advanced(SELinux_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(SELinux
+ REQUIRED_VARS
+ SELinux_LIBRARY SELinux_INCLUDE_DIR
+)
+
+if(SELinux_FOUND)
+ set(SELINUX_INCLUDE_DIRS ${SELinux_INCLUDE_DIR})
+ set(SELINUX_LIBRARIES ${SELinux_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindSWScale.cmake b/cmake/Modules/FindSWScale.cmake
new file mode 100644
index 00000000..61edb595
--- /dev/null
+++ b/cmake/Modules/FindSWScale.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindSWScale
+-----------
+
+Find the FFmpeg swscale library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``SWSCALE_INCLUDE_DIRS``
+ where to find libswscale/swscale.h, etc.
+``SWSCALE_LIBRARIES``
+ the libraries to link against to use swscale.
+``SWSCALE_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_SWScale QUIET libswscale)
+endif()
+
+find_path(SWScale_INCLUDE_DIR NAMES libswscale/swscale.h
+ HINTS
+ ${PC_SWScale_INCLUDE_DIRS}
+)
+mark_as_advanced(SWScale_INCLUDE_DIR)
+
+find_library(SWScale_LIBRARY NAMES swscale
+ HINTS
+ ${PC_SWScale_LIBRARY_DIRS}
+)
+mark_as_advanced(SWScale_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(SWScale
+ REQUIRED_VARS
+ SWScale_LIBRARY SWScale_INCLUDE_DIR
+)
+
+if(SWScale_FOUND)
+ set(SWSCALE_INCLUDE_DIRS ${SWScale_INCLUDE_DIR})
+ set(SWSCALE_LIBRARIES ${SWScale_LIBRARY})
+endif()
diff --git a/cmake/Modules/FindSystemd.cmake b/cmake/Modules/FindSystemd.cmake
new file mode 100644
index 00000000..1a3e40f5
--- /dev/null
+++ b/cmake/Modules/FindSystemd.cmake
@@ -0,0 +1,47 @@
+#[=======================================================================[.rst:
+FindSystemd
+-----------
+
+Find the systemd library
+
+Result variables
+^^^^^^^^^^^^^^^^
+
+This module will set the following variables if found:
+
+``SYSTEMD_INCLUDE_DIRS``
+ where to find systemd/sd-daemon.h, etc.
+``SYSTEMD_LIBRARIES``
+ the libraries to link against to use libsystemd.
+``SYSTEMD_FOUND``
+ TRUE if found
+
+#]=======================================================================]
+
+find_package(PkgConfig QUIET)
+if(PKG_CONFIG_FOUND)
+ pkg_check_modules(PC_Systemd QUIET libsystemd)
+endif()
+
+find_path(Systemd_INCLUDE_DIR NAMES systemd/sd-daemon.h
+ HINTS
+ ${PC_Systemd_INCLUDE_DIRS}
+)
+mark_as_advanced(Systemd_INCLUDE_DIR)
+
+find_library(Systemd_LIBRARY NAMES systemd
+ HINTS
+ ${PC_Systemd_LIBRARY_DIRS}
+)
+mark_as_advanced(Systemd_LIBRARY)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Systemd
+ REQUIRED_VARS
+ Systemd_LIBRARY Systemd_INCLUDE_DIR
+)
+
+if(Systemd_FOUND)
+ set(SYSTEMD_INCLUDE_DIRS ${Systemd_INCLUDE_DIR})
+ set(SYSTEMD_LIBRARIES ${Systemd_LIBRARY})
+endif()
diff --git a/cmake/StaticBuild.cmake b/cmake/StaticBuild.cmake
index d518bc4a..f46e2154 100644
--- a/cmake/StaticBuild.cmake
+++ b/cmake/StaticBuild.cmake
@@ -23,34 +23,20 @@ if(BUILD_STATIC)
set(PIXMAN_LIBRARIES "-Wl,-Bstatic -lpixman-1 -Wl,-Bdynamic")
# gettext is included in libc on many unix systems
+ check_function_exists(dgettext LIBC_HAS_DGETTEXT)
if(NOT LIBC_HAS_DGETTEXT)
- FIND_LIBRARY(UNISTRING_LIBRARY NAMES unistring libunistring
- HINTS ${PC_GETTEXT_LIBDIR} ${PC_GETTEXT_LIBRARY_DIRS})
- FIND_LIBRARY(INTL_LIBRARY NAMES intl libintl
- HINTS ${PC_GETTEXT_LIBDIR} ${PC_GETTEXT_LIBRARY_DIRS})
- FIND_LIBRARY(ICONV_LIBRARY NAMES iconv libiconv
- HINTS ${PC_GETTEXT_LIBDIR} ${PC_GETTEXT_LIBRARY_DIRS})
+ FIND_LIBRARY(UNISTRING_LIBRARY NAMES unistring libunistring)
- set(GETTEXT_LIBRARIES "-Wl,-Bstatic")
+ set(Intl_LIBRARIES "-Wl,-Bstatic -lintl -liconv")
- if(INTL_LIBRARY)
- set(GETTEXT_LIBRARIES "${GETTEXT_LIBRARIES} -lintl")
- endif()
-
- if(ICONV_LIBRARY)
- set(GETTEXT_LIBRARIES "${GETTEXT_LIBRARIES} -liconv")
- endif()
-
- set(GETTEXT_LIBRARIES "${GETTEXT_LIBRARIES} -Wl,-Bdynamic")
-
- # FIXME: MSYS2 doesn't include a static version of this library, so
- # we'll have to link it dynamically for now
if(UNISTRING_LIBRARY)
- set(GETTEXT_LIBRARIES "${GETTEXT_LIBRARIES} -lunistring")
+ set(Intl_LIBRARIES "${Intl_LIBRARIES} -lunistring")
endif()
+ set(Intl_LIBRARIES "${Intl_LIBRARIES} -Wl,-Bdynamic")
+
if(APPLE)
- set(GETTEXT_LIBRARIES "${GETTEXT_LIBRARIES} -framework Carbon")
+ set(Intl_LIBRARIES "${Intl_LIBRARIES} -framework Carbon")
endif()
endif()
@@ -107,7 +93,7 @@ if(BUILD_STATIC)
# GnuTLS uses gettext and zlib, so make sure those are always
# included and in the proper order
set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} ${ZLIB_LIBRARIES}")
- set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} ${GETTEXT_LIBRARIES}")
+ set(GNUTLS_LIBRARIES "${GNUTLS_LIBRARIES} ${Intl_LIBRARIES}")
# The last variables might introduce whitespace, which CMake
# throws a hissy fit about
@@ -116,8 +102,7 @@ if(BUILD_STATIC)
if(NETTLE_FOUND)
set(NETTLE_LIBRARIES "-Wl,-Bstatic -lnettle -Wl,-Bdynamic")
- set(HOGWEED_LIBRARIES "-Wl,-Bstatic -lhogweed -Wl,-Bdynamic")
- set(GMP_LIBRARIES "-Wl,-Bstatic -lgmp -Wl,-Bdynamic")
+ set(HOGWEED_LIBRARIES "-Wl,-Bstatic -lhogweed -lnettle -lgmp -Wl,-Bdynamic")
endif()
if(DEFINED FLTK_LIBRARIES)
@@ -163,32 +148,14 @@ if(BUILD_STATIC)
endif()
if(BUILD_STATIC_GCC)
- set(STATIC_BASE_LIBRARIES "")
- if(ENABLE_ASAN AND NOT WIN32 AND NOT APPLE)
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -Wl,-Bstatic -lasan -Wl,-Bdynamic -ldl -lpthread")
- endif()
- if(ENABLE_TSAN AND NOT WIN32 AND NOT APPLE AND CMAKE_SIZEOF_VOID_P MATCHES 8)
- # libtsan redefines some C++ symbols which then conflict with a
- # statically linked libstdc++. Work around this by allowing multiple
- # definitions. The linker will pick the first one (i.e. the one
- # from libtsan).
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -Wl,-z -Wl,muldefs -Wl,-Bstatic -ltsan -Wl,-Bdynamic -ldl -lm")
+ set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -static-libgcc")
+ set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libstdc++ -static-libgcc")
+ if(ENABLE_ASAN)
+ set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -static-libasan")
+ set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libasan")
endif()
- if(WIN32)
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt")
- find_package(Threads)
- if(CMAKE_USE_PTHREADS_INIT)
- # pthread has to be statically linked after libraries above and before kernel32
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -Wl,-Bstatic -lpthread -Wl,-Bdynamic")
- endif()
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -luser32 -lkernel32 -ladvapi32 -lshell32")
- # mingw has some fun circular dependencies that requires us to link
- # these things again
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt")
- else()
- set(STATIC_BASE_LIBRARIES "${STATIC_BASE_LIBRARIES} -lm -lgcc -lgcc_eh -lc")
+ if(ENABLE_TSAN)
+ set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -static-libtsan")
+ set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -static-libtsan")
endif()
- # -nodefaultlibs ensures that we don't depend on libstdc++ or libgcc_s
- set(CMAKE_C_LINK_EXECUTABLE "${CMAKE_C_LINK_EXECUTABLE} -nodefaultlibs ${STATIC_BASE_LIBRARIES}")
- set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -nodefaultlibs -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic ${STATIC_BASE_LIBRARIES}")
endif()
diff --git a/cmake/TargetLinkDirectories.cmake b/cmake/TargetLinkDirectories.cmake
deleted file mode 100644
index 11b05670..00000000
--- a/cmake/TargetLinkDirectories.cmake
+++ /dev/null
@@ -1,12 +0,0 @@
-# Compatibility replacement of target_link_directories() for older cmake
-
-if(${CMAKE_VERSION} VERSION_LESS "3.13.0")
- function(target_link_directories TARGET SCOPE)
- get_target_property(INTERFACE_LINK_LIBRARIES ${TARGET} INTERFACE_LINK_LIBRARIES)
- foreach(DIRECTORY ${ARGN})
- list(INSERT INTERFACE_LINK_LIBRARIES 0 "-L${DIRECTORY}")
- endforeach()
- set_target_properties(${TARGET} PROPERTIES
- INTERFACE_LINK_LIBRARIES "${INTERFACE_LINK_LIBRARIES}")
- endfunction()
-endif()