summaryrefslogtreecommitdiff
path: root/cmake
Commit message (Collapse)AuthorAgeFilesLines
* Make dependency paths relocatableIngo Bauersachs2023-05-163-33/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The generated configurations for both CMake and pkg-config included absolute paths to dependencies (OpenSSL, MbedTLS). This is contrary to the general CMake advise to create relocatable packages [1]. Additionally, when building both mbedtls and libevent via CMake's FetchContent in the same project, loading the project would fail with INTERFACE_INCLUDE_DIRECTORIES property contains path: "/home/user/project/cmake-build/_deps/mbedtls-build/include" which is prefixed in the source directory. The required changes include: - Adding the outer includes only to the BUILD_INTERFACE solves the makes the CMake paths relocatable and thus solves the FetchContent problem. - Updates to libevent_*.pc.in fixes the relocatable issues for pkg-config and properly declares currently missing dependencies. - Using components for linking to OpenSSL (requiring CMake 3.4) and MbedTLS. The new MbedTLS target names now match the component names of the MbedTLS' CMake project. - Use the Threads CMake library reference instead of a direct reference to support both built-in pthread and -lpthread. v2 (azat): get back CMAKE_REQUIRED_LIBRARIES [1] https://cmake.org/cmake/help/v3.25/manual/cmake-packages.7.html#creating-relocatable-packages
* cmake: Only use relative paths for install DESTINATION option (#1405)Jeremy W. Murphy2023-05-151-2/+2
| | | | | | | | | | | | | | | | | As described in #1404, the explicit use of CMAKE_INSTALL_PREFIX conflicts with using command-line --prefix. This simply removes all explicit use of CMAKE_INSTALL_PREFIX. Otherwise this path will be duplicated: $ cmake -DCMAKE_BUILD_TYPE=debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_INSTALL_PREFIX=inst .. $ DESTDIR=inst ninja install ... -- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/util.h -- Installing: inst/src/le/libevent/.cmake-debug/inst/include/event2/ws.h ... Fixes: #1404 Co-authored-by: Jeremy Murphy <jeremymu@blackmagicdesign.com>
* Make sure exported include dirs are correctTobias Mayer2023-05-141-70/+11
| | | | | | | | CMake config files don't need any logic to detect the location of installed headers or DSOs, because these locations are already determined at project configuration time. They also don't need to distinguish between build and install trees, because that is already handled by the generated `LibeventTargets-*.cmake` files.
* Use GNUInstallDirs for mapping installation directoriesJonathan Ringer2023-05-143-11/+9
|
* Search library name of Debug for find_event_lib.Haowei Hsu2022-08-071-4/+14
|
* Initial Mbed-TLS 3 support to get the GitHub Actions working againWilliam Marlow2022-07-091-5/+18
| | | | | | | | mingw has upgraded to Mbed-TLS 3.1.0, so all the mingw tests that need Mbed-TLS currently don't work. v2: add missing mbedtls/version.h into test/regress_mbedtls.c v3: suppress #warning "Including compat-2.x.h is deprecated" for mbedtls/compat-2.x.h
* Support build dir of the MbedTLSAzat Khuzhin2022-07-091-3/+5
|
* Set RPATH only if installation is done into non system directoryAzat Khuzhin2022-01-151-2/+1
| | | | | | v2: use CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES Fixes: #1245
* CheckWorkingKqueue.cmake: fix missing headersChristopher Chavez2021-11-111-0/+2
| | | | | | Avoid implicitly declaring functions memset() and exit() as it is considered an error by some compilers (e.g. Xcode clang 12 and later)
* cmake: Fix generted pkgconfig files.Biswapriyo Nath2021-05-051-2/+2
| | | | Use lowercase 'L' option for library names because uppercase 'L' is used with library search directory.
* cmake: do not link libevent with libevent_coreLoïc Yhuel2020-11-231-0/+1
| | | | | When add_event_library macro was called without the INNER_LIBRARIES parameter, it reused the value set by a previous call, since the INNER_LIBRARIES variable was not reset.
* Change prefix for man pages from "le_" to "libevent_"Azat Khuzhin2020-10-042-5/+5
| | | | | | | | As pointed by @kloczek: "With only two characters it would be harder to guess under what kind of name are libevent lvl 3 man pages. Longer name with bash/fix/zsh tab competition should not be a problem :)" Refs: #1099
* Add prefix (le_) for man pagesAzat Khuzhin2020-10-042-2/+26
| | | | | | | | This will: - avoid overlapping (since there is util.h.3 page) - group everything under some prefix (man le_<TAB><TAB> will show everything) Fixes: #1099
* Drop DOXYGEN_MAN_LINKS unsupported cmake flagAzat Khuzhin2020-10-041-1/+0
| | | | MAN_LINKS is not a variable in Doxyfile anyway.
* fix build system and add test and cleanup codeokhowang(王沛文)2020-07-221-1/+1
|
* mbed TLS cmake supportJesse Fang2020-07-221-0/+159
| | | | | | | | FindMbedTLS.cmake is come from https://github.com/AVSystem/avs_commons/blob/master/cmake/FindMbedTLS.cmake, which is licensed under Apache 2.0 alternatives: https://github.com/curl/curl/blob/master/CMake/FindMbedTLS.cmake without variable MBEDTLS_ROOT_DIR https://github.com/libgit2/libgit2/blob/master/cmake/Modules/FindmbedTLS.cmake GPLv2 with a special Linking Exception
* remove FindGit.cmake, improve `git describe` commandyuangongji2020-05-282-47/+4
|
* cmake: set a default value for LIBEVENT_STATIC_LINKyuangongji2020-05-011-2/+2
|
* cmake: replace CheckFunctionExists with CheckSymbolExistsyuangongji2020-03-222-20/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Checking functions with `CheckFunctionExists` may get wrong results, we should replace it with `CheckSymbolExists`, which is recommended by the cmake official documentation. Before using `CheckSymbolExists`, we use `CheckIncludeFiles` to check header files and save the available header files in a variable that guarantees `CheckSymbolExists` and `CheckTypeSize` to work correctly. This approach is modeled after the cmake scripts of `curl`. The following functions or files were not found before modification, they can now be found: - msys2 + mingw-8.1.0 on Windows10 or mingw-7.3.0 on Ubuntu-18.04 timerclear timercmp timerisset - windows10 getaddrinfo getnameinfo getprotobynumber getservbyname putenv strtoll timerclear timercmp timerisset - ubuntu-18.04 sys/sysctl.h timeradd timerclear timercmp timerisset - MacOS 10.13 sys/random.h timeradd timerclear timercmp timerisset
* LibeventConfig.cmake: restore CMAKE_FIND_LIBRARY_SUFFIXES and ↵Mario Emmenlauer2020-03-171-39/+45
| | | | | | | | | | | | | | | | | | | | | | | | LIBEVENT_STATIC_LINK default The current cmake/LibeventConfig.cmake.in has a few problems and I'm not sure how cleanly developed it is. It seems rater complex for the little things I would assume it needs to do. I found two problems that are fixed in this PR: - If the downstream user does not explicitly set LIBEVENT_STATIC_LINK before calling find_package(libevent) then they will not be able to detect the static library, even if its the only one that exists. Since this may be rather strict, I've changed the behavior so that LIBEVENT_STATIC_LINK can be set to ON or OFF, but if unset, it defaults to whatever configuration libevent was built as. - The other problem is a bug. The package configuration needs to unset CMAKE_FIND_LIBRARY_SUFFIXES after use, otherwise all packages that are detected after libevent will be "infected" by this setting. This was a significant problem for us, and is very hard to detect in downstream project, because the order of dependencies will lead to different search results.
* cmake: fix getaddrinfo checking erroryuangongji2020-03-171-0/+20
| | | | | | | Using `CheckFunctionExists` on Windows to check `getaddrinfo` will get `not found`, but it actually exists. Using `CheckSymbolExists` with headers will get correct results. Other functions such as `getnameinfo`,`inet_ntop`,etc. have the same issue.
* cmake: remove CheckFunctionExistsExyuangongji2020-03-172-97/+0
| | | | | | | `CheckFunctionExistsEx` is copied from the cmake modules before 3.1.2, which is the minimum required version of libevent. The internal module `CheckFunctionExists`of cmake can completely replace it.
* cmake: set rpath for libraries on linuxyuangongji2020-01-241-1/+2
|
* coverage: 'lcov --remove' need full pathyuangongji2020-01-241-9/+4
|
* cmake: use CMAKE_LIBRARY_OUTPUT_DIRECTORY for the final shared library symlinkAzat Khuzhin2019-11-301-2/+2
| | | | Fixes: 669a53f3 ("cmake: set library names to be the same as with autotools")
* cmake: improve package config fileyuangongji2019-11-143-49/+231
|
* cmake: eliminate duplicate installation of public headersyuangongji2019-10-251-11/+0
|
* Doxygen documentation improvementsyuangongji2019-08-291-0/+1
| | | | | | | | | | | | | | | - Documentation for `bufferevent_compat.h` and `rpc.h` is not generated since the `@file` command is missing. It can be fixed by adding `@file` in file comment block. - The briefs of buffer.h,bufferevent.h and some other files are missing. Adding `@brief` command can fix it. - The parameters in the function declaration are different from the parameters following the `@param` command.We should change them to the same. - Documentation of `watch.h` is not generated since `watch.h` has not been added to the Doxyfile `INPUT` tag. - Add link to the watch.h in event.h
* cmake: attach doxygen target into all targetyuangongji2019-08-281-0/+111
| | | | | v2: Disable non-html generator for doxygen by default v3: convert cmake option to doxygen config
* cmake: install shared library only if it was requestedAzat Khuzhin2019-07-121-1/+1
| | | | | | | | | | | | | | $ cmake -DEVENT__LIBRARY_TYPE=static .. ... CMake Error: Error evaluating generator expression: $<TARGET_FILE_DIR:event_core_shared> No target "event_core_shared" Fixes: #853 Fixes: 669a53f3 ("cmake: set library names to be the same as with autotools")
* cmake: set library names to be the same as with autotoolsyuangongji2019-07-111-8/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | libtool has VERSION_INFO [1], cmake has SOVERSION/VERSION instead (although it has different format). Also libtool has RELEASE [2] while cmake do not have analog yet [3], hence manual symlinks should be created. [1]: https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html [2]: https://www.gnu.org/software/libtool/manual/html_node/Release-numbers.html [3]: https://gitlab.kitware.com/cmake/cmake/issues/17652 Plus osx has compatibility_version/current_version dylib properties and cmake do not have separate properties for them [4], hence manual LINK_FLAGS. And also there INSTALL_NAME_DIR property which should be adjusted too. [4]: https://public.kitware.com/Bug/view.php?id=4383 So after all changes, here is an example before/after for osx and linux: # osx # autotools .libs/libevent_pthreads-2.2.1.dylib .libs/libevent_pthreads.dylib -> libevent_pthreads-2.2.1.dylib /usr/local/lib/libevent_pthreads-2.2.1.dylib (compatibility version 2.0.0, current version 2.0.0) # cmake # before patch lib/libevent_pthreads.2.2.0.dylib lib/libevent_pthreads.dylib -> libevent_pthreads.2.2.0.dylib @rpath/libevent_pthreads.2.2.0.dylib (compatibility version 2.2.0, current version 0.0.0) # after patch lib/libevent_pthreads-2.2.1.dylib lib/libevent_pthreads.dylib -> libevent_pthreads-2.2.1.dylib /vagrant/.cmake/inst/lib/libevent_pthreads-2.2.1.dylib (compatibility version 2.0.0, current version 2.0.0) # linux # autotools .libs/libevent_pthreads-2.2.so.1 -> libevent_pthreads-2.2.so.1.0.0 .libs/libevent_pthreads-2.2.so.1.0.0 .libs/libevent_pthreads.so -> libevent_pthreads-2.2.so.1.0.0 # cmake # before patch lib/libevent_pthreads.so -> libevent_pthreads.so.2.2.0 lib/libevent_pthreads.so.2.2.0 # after patch lib/libevent_pthreads-2.2.so -> libevent_pthreads-2.2.so.1 lib/libevent_pthreads-2.2.so.1 -> libevent_pthreads-2.2.so.1.0.0 lib/libevent_pthreads-2.2.so.1.0.0 lib/libevent_pthreads.so -> libevent_pthreads-2.2.so.1.0.0 Closes: #838 (cherry-picked) Closes: #760
* cmake: add missing autotools targets (doxygen, uninstall, event_rpcgen.py)yuangongji2019-06-131-0/+23
| | | | Close: #832 (cherry-picked)
* Fix typos in a comment describing the purpose of `VersionViaGit.cmake`Enji Cooper2019-02-281-1/+1
| | | | Signed-off-by: Enji Cooper <yaneurabeya@gmail.com>
* cmake: introduce EVENT__LIBRARY_TYPE optionAzat Khuzhin2018-11-231-33/+48
| | | | | | | | | | | | | | | | | | | | | | | | | Long time ago in [1] cmake build was forced to compile both libraries (SHARED and STATIC), since this is how our autotools build works. [1]: 7182c2f561570cd9ceb704623ebe9ae3608c7b43 ("cmake: build SHARED and STATIC libraries (like autoconf does)") And there is no way to configure this (and indeed you need to do this for MSVC for example), so let's introduce option for this -- EVENT__LIBRARY_TYPE. Plus now we have INTERFACE libraries, that we can use internally in libevent's cmake rules to avoid strict to _shared/_static variant of the libraries to link with samples/tests (we prefer SHARED over STATIC for linking). Also bump minimal cmake required version to 3.1 by the following reasons: - 3.1 is required for RPATH configuration under APPLE - 3.0 is required for add_library(INTERFACE) (did not found it in 2.8.x documentation) - remove extra conditions (anyway 3.1 was release 4 years ago, so I guess that most of the systems will have it)
* Make cmake's check_const_exists() rely on cacheAzat Khuzhin2018-10-181-14/+16
|
* Fix CheckFunctionExistsEx() cmake macro on win32Azat Khuzhin2018-04-261-15/+13
| | | | | | | | | | | | | | | | | | For example under mingw64 it could not detect that strtok_r() exists, because it checks with: void *p = func_name; And for this you need the function to be defined, so just sync our CheckFunctionExistsEx.c with CheckFunctionExists.c from cmake (and later we should drop them out) since it does correct things to detech functions existence. Also for WIN32 there is -FIwinsock2.h -FIws2tcpip.h, and I guess that is not works for mingw gcc (since -F in gcc is framework, and in windows -FI is like -include in gcc). But looks like we do not need them already (due to fixed CheckFunctionExistsEx()). Refs: #605
* cmake: ensure windows dll's are installed as well as lib filesPhilip Herron2018-04-091-0/+1
| | | | Closes: #621
* configure: avoid false positive in DragonFlyBSDCarlo Marcelo Arenas Belón2017-09-111-3/+3
| | | | | | | | | | | | | | | | | | by default, the max buffer size is 16K and histeresis is at 50%, so a bigger read is needed to unlock writes than you would expect from other BSD (512 bytes) this doesn't introduce any regression on FreeBSD 11.1, OpenBSD 6.1, NetBSD 7.1, macOS 10.12.6 and of course DragonFlyBSD 4.8.1, and most of them show a max pipe size of 64K, so the read call should drain them all regardless of how conservative they are on the free pipe space they will require (usually 512 bytes) before kevent reports the fd as ready for write. I couldn't find a reference to which bug this code was trying to look for and it seems to be there from the beginning of git history so it might be no longer relevant. Issue: #548
* cmake: use APPEND during exporting targets (for old cmake)Azat Khuzhin2017-03-141-0/+1
| | | | | | | | | | | | | | | On centos with cmake 2.8.12.2: CMake Error at cmake/AddEventLibrary.cmake:92 (export): export called with target "event_extra_shared" which requires target "event_core_shared" that is not in the export list. If the required target is not easy to reference in this call, consider using the APPEND option with multiple separate calls. But on newer cmake I guess everything is ok. Fixes: 7182c2f561570cd9ceb704623ebe9ae3608c7b43 ("cmake: build SHARED and STATIC libraries (like autoconf does)")
* cmake: fix pkgconfig generation (copy-paste typo)Azat Khuzhin2017-03-131-2/+2
|
* cmake: fix export absolute path and relative path and cleanup a bitAzat Khuzhin2017-03-131-6/+3
| | | | | | | | | | Remove next vars, since I don't think that somebody want to change it: - bin - lib - include And fix exports problem: CMake Error: INSTALL(EXPORT "LibeventTargets") given absolute DESTINATION "/usr/lib/cmake/libevent" but the export references an installation of target "event_core_static" which has relative DESTINATION "lib".
* cmake: generate and install pkgconfig filesAzat Khuzhin2017-03-131-0/+29
| | | | Fixes: #443
* cmake: build SHARED and STATIC libraries (like autoconf does)Azat Khuzhin2017-03-132-4/+87
| | | | | | | | | | | | Since they are useful for debugging, and if autotools build them then cmamke has to do this too, to make migration more simple. And now: - tests: uses shared libraries (since this is upstreams one) - other binaries: uses static libraries This removes next private config: - EVENT__NEED_DLLIMPORT
* cmake: add missing event_openssl/event_pthreads librariesAzat Khuzhin2017-03-131-1/+1
| | | | | | | | | | | | This will remove openssl requirement if you don't use it (i.e. if you not link with openssl_pthreads). Plus it fixes some linking dependencies: - libm required only for test-ratelim And fix some coding style alignment issues. Refs: #246
* cmake: fix extracting of the version from git (check for number of matches)Azat Khuzhin2017-03-081-18/+21
|
* Check for WNOWAIT in waitpid() in runtime (not in cmake/configure)Azat Khuzhin2017-03-081-18/+0
| | | | | | | | | | | | | Because checking in cmake breaks cross-compiling. Introduced-in: 43eb56c7c738e3642f0981e3dd6ab9e082eec798. Fixes: #482 Fixes: #462 Refs: #475 v2: use waitid() with WNOWAIT v3: use WNOWAIT only if it available in waitpid(), because not all netbsd supports it
* cmake: Fix checking of enum values from sysctl.hAzat Khuzhin2017-03-081-0/+23
| | | | | | | CheckSymbolExists do not do this, so add new CheckConstExists that will use CheckCSourceCompiles() to check this. v2: use set() instead of string(APPEND)
* Do not overwrite version from GIT if it is older then defaultsAzat Khuzhin2017-01-291-9/+17
|
* Bump version in master to 2.2.0-alpha-devAzat Khuzhin2017-01-291-3/+3
| | | | | | And according to f8d80a285cf941505277d9060d0357b5b7e543d2 ("Bump version to 2.1.3-alpha-dev") numeric version have 1 at the end, since it means "-dev".
* Bump version to 2.1.8-stable everywhereAzat Khuzhin2017-01-261-1/+1
| | | | | | | | P.S. in referenced commit I made a mistake and instead of *-rc* I wrote *-beta*. See-also: f4489b8323cda0bf8eed7c1353911a852d7a947c ("Bump version to 2.1.7-beta everywhere")