Commit Graph

43 Commits

Author SHA1 Message Date
Peter Keresztes Schmidt 7d501a6585 Remove libavresample support
libavresample hasn't been maintained for a long time by FFmpeg since libswresample superseded it.
In 2018 it was officially deprecated [1].

Let's remove the support for it since there is no need to maintain this option further.

[1] https://patchwork.ffmpeg.org/project/ffmpeg/patch/20171225175335.18183-1-atomnuker@gmail.com/
2021-06-04 23:46:58 +02:00
Peter Keresztes Schmidt db9b739562 Build: Add CMake package module for FFmpeg 2021-06-04 23:18:30 +02:00
Peter Keresztes Schmidt e724a93395 Build: Remove in-tree version of CheckPrototypeDefinition
We currently don't use the module and all supported CMake versions ship this module if needed.
2021-06-01 08:41:44 +02:00
Peter Keresztes Schmidt 45654cb514 Build: Make the JWT backend selectable
Introduce the -DZM_JWT_BACKEND CMake option through which the JWT backend can be selected.
Supported values: jwt_cpp (default; in-tree) and libjwt

When libjwt is chosen ZM_CRYPTO_BACKEND is taken into account to select the corresponding flavour of libjwt.
2021-05-29 21:37:30 +02:00
Peter Keresztes Schmidt e8adf5d331 Build: Enable std::vector ASAN annotation in libstdc++
By defining _GLIBCXX_SANITIZE_VECTOR when ASAN is enabled `std::vector` operations
will be annotated so ASAN can detect invalid accesses.

See https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html
2021-05-29 19:55:17 +02:00
Peter Keresztes Schmidt 8379ab70be Build: Disable Wstringop-truncation in GCC ASAN builds
These two options don't work well together and lead to false positives.

Follow-up on e5cac38521
2021-05-28 00:08:46 +02:00
Peter Keresztes Schmidt e232b5d1a7 Build: Disable Wmissing-field-initializers on older GCC versions
GCC 5.1 corrected the behaviour in regard that the C++11 initialisation behaviour is respected.
2021-05-24 01:15:00 +02:00
Peter Keresztes Schmidt c8f2a813e3 Build: Enable VLA warnings
VLAs (variable-length arrays) are a C99 feature and were never standardised for C++.
There are better alternatives in C++ (mainly std::vector). Enable the warnings
so no new ones can be introduced.
2021-05-17 22:12:04 +02:00
Peter Keresztes Schmidt bf08502b9c Build: Add CMake option to enable Werror
With -DENABLE_WERROR the -Werror flag will be passed to the compiler failing the build if a warning is emitted.
2021-05-01 00:07:12 +02:00
Isaac Connor 03b8a98bae xenial has cmake 3.5.1. VERSION_LESS_EQUAL was introduced in 3.7. So lets use VERSION_LESS,11 instead 2021-04-19 17:06:54 -04:00
Peter Keresztes Schmidt 0676f71cd6 Build/GCC: Suppress -Wclobbered warnings on older compilers
There were a high number of false positives with old compilers. Suppress these warnings on them.
2021-04-12 08:58:57 +02:00
Peter Keresztes Schmidt b93d5556b2 Build: Re-enable Wtype-limits on GCC 2021-04-12 00:25:04 +02:00
Peter Keresztes Schmidt e8565b0704 Build: Enable implicit fallthrough warnings on clang 2021-04-11 23:39:35 +02:00
Peter Keresztes Schmidt 0ab6b04fa1 build: Enable Woverloaded-virtual on GCC 2021-04-11 01:28:23 +02:00
Andrew Bauer 663c7f51f5 don't set -Wconditionally-supported on older gcc 2021-04-07 10:01:46 -05:00
Peter Keresztes Schmidt d1bbfdaf6b Build: Enable -Wconditionally-supported on GCC
We want to have warnings if we use some implementation-specific features of GCC
to be able to keep compatibility with clang.
2021-03-18 20:02:23 +01:00
Isaac Connor 0da9ee2e4c Remove live555 detection 2021-03-11 08:08:01 -05:00
Peter Keresztes Schmidt 0796a2262e Utils: Replace stringtf with a type-safe version that can't overflow 2021-03-06 00:12:18 +01:00
Peter Keresztes Schmidt b0f0731b47 build: Add base target for dependencies
The zm-dependency-interface target sets compiler flags in a way suitable for external dependencies.
This means mainly to disable compile warnings since they concern upstream and not us.
2021-02-27 15:40:38 +01:00
Peter Keresztes Schmidt 6e2f8bfedb build: Enable Wextra with some exceptions
-Wno-cast-function-type:
Signal handler code relies on this.

-Wno-type-limits:
Some of the color space conversion code in zm_image throws this warning. To not break anything let's ignore this warning for the time being.

Note that clang enables -Woverloaded-virtual with -Wextra. To not flood the GCC build log with warnings let's not enable this at the moment.
This will be done in a second step, when the currently throwing code will be cleaned up.
2021-02-27 02:08:14 +01:00
Peter Keresztes Schmidt 4c07bf5aae Build: Add ThreadSanitizer (TSan) support
Enable it by setting -DTSAN=1
This setting is mutually exclusive with -DASAN
2021-02-11 00:38:31 +01:00
Peter Keresztes Schmidt 4ebfbdef5d Build: Work around CMake version on Xenial not supporting cxx_std_* flags
Closes #3146
2021-02-09 13:20:27 +01:00
Peter Keresztes Schmidt 424e6e14f6 Build: Add -DASAN option to build with AddressSanitizer support
Use this option only for debugging purposes.
2021-02-08 23:13:31 +01:00
Peter Keresztes Schmidt 825ca07561 Build: Use zm-* interfaces to set cxx standard and warning flags 2021-02-08 23:08:22 +01:00
Peter Keresztes Schmidt 44be2ccf6c Build: Add a set of interface targets which can be used to set compilation options
zm-compile-option-interface:
  Use to set various compiler/linker flags

zm-feature-interface:
  Use to set required compiler features.
  See https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html

zm-warning-interface:
  Use to set compiler warning flags. If need be a zm-no-warning-interface can be added which suppresses all warning for targets linked against it. Useful for in-tree dependencies from which we don't want compiler warnings.

zm-core-interface:
  That's the interface one should normally link against to get all the options.
2021-02-08 23:08:22 +01:00
Peter Keresztes Schmidt 407ea70991 Build: Add support for compiler detection
Using this system we can separate settings for different compilers nicely.
2021-02-08 23:08:22 +01:00
Peter Keresztes Schmidt 36253048f5 Build: Move platform detection to its own module 2021-02-08 23:08:22 +01:00
Isaac Connor d571b2dd98 Add live555 detection and HAVE_RTSP_SERVER config 2020-12-08 15:59:06 -05:00
Andrew Bauer 92cc03dbe8 fix pod2man out-of-source builds 2020-08-04 21:07:49 -05:00
hax0kartik 2091ad8c92 Add libjwt and remove gnutls-openssl wrapper 2020-03-05 09:29:27 -08:00
Andrew Bauer 08899b69c3 update ENDMACRO 2018-12-08 12:04:57 -06:00
Andrew Bauer db81465fa2 allow one to set manpage destination 2018-12-07 09:47:00 -06:00
Isaac Connor f5a29bb679 Revert "add recipes to detect libv4l2"
This reverts commit d67cb0d0df.
2016-09-29 09:29:57 -04:00
Isaac Connor d67cb0d0df add recipes to detect libv4l2 2016-09-28 09:14:44 -04:00
Isaac Connor 58448adb51 Merge pull request #896 from knnniggett/pod2man
Generate man pages for perl scripts & C Binaries in the bin folder
2015-07-03 11:40:24 -04:00
Andrew Bauer 005d880453 typo 2015-06-25 08:07:31 -05:00
Andrew Bauer 3f6333a33d modify polkit checks & move host os check 2015-06-25 08:01:24 -05:00
Andrew Bauer fd239f6545 Generate man pages for perl scripts in the bin folder 2015-06-20 15:22:11 -05:00
Isaac Connor 199c94e7db Add Sendfile checks for cmake 2015-03-31 23:07:19 -04:00
Andrew Bauer 1e8e710f5a full systemd support 2014-08-10 08:47:11 -05:00
Kfir Itzhak f5f573af93 Added an uninstall target to cmake and few text corrections to the INSTALL file 2013-10-21 16:11:37 +03:00
Kfir Itzhak b558d42cdc Improvements to cmake: Better support for CMAKE_PREFIX_PATH enviroment variable (and similar ones), added ZM_PERL_SUBPREFIX and ZM_PERL_USE_PATH options and improved detection of libraries and headers 2013-10-09 15:41:14 +03:00
mastertheknife 48f11a8064 Add cmake to zoneminder 2013-09-28 12:59:50 +03:00