diff --git a/CMakeLists.txt b/CMakeLists.txt index 7ca08fc9ac3..a3cd70bced2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,24 +13,47 @@ project( include(cmake/project-is-top-level.cmake) include(cmake/variables.cmake) +include(cmake/options.cmake) find_package(PkgConfig REQUIRED) -find_package(unofficial-sqlite3 CONFIG REQUIRED) -find_package(BZip2 REQUIRED) -find_package(LibArchive REQUIRED) -find_package(ZLIB REQUIRED) -find_package(pcre2 CONFIG REQUIRED) -find_package(CURL REQUIRED) - -set(lnav_LIBS - CURL::libcurl - unofficial::sqlite3::sqlite3 - BZip2::BZip2 - PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX - LibArchive::LibArchive - ZLIB::ZLIB - ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libunistring.a -) + +if (LNAV_USE_VCPKG) + find_package(unofficial-sqlite3 CONFIG REQUIRED) + find_package(BZip2 REQUIRED) + find_package(LibArchive REQUIRED) + find_package(ZLIB REQUIRED) + find_package(pcre2 CONFIG REQUIRED) + find_package(CURL REQUIRED) + + set(lnav_LIBS + CURL::libcurl + unofficial::sqlite3::sqlite3 + BZip2::BZip2 + PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX + LibArchive::LibArchive + ZLIB::ZLIB + ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/libunistring.a + ) +else () + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/packages) + + find_package(SQLite3 REQUIRED) + find_package(BZip2 REQUIRED) + find_package(LibArchive REQUIRED) + find_package(ZLIB REQUIRED) + find_package(pcre2 REQUIRED) + find_package(CURL REQUIRED) + find_package(Unistring REQUIRED) + + set(lnav_LIBS + CURL::libcurl + SQLite3::SQLite3 + BZip2::BZip2 + pcre2::pcre2 + LibArchive::LibArchive + ZLIB::ZLIB + Unistring::Unistring) +endif () add_subdirectory(src) add_subdirectory(test) diff --git a/cmake/options.cmake b/cmake/options.cmake new file mode 100644 index 00000000000..e1511224deb --- /dev/null +++ b/cmake/options.cmake @@ -0,0 +1 @@ +option(LNAV_USE_VCPKG "When disabled, libraries from the build host are used" ON) diff --git a/cmake/packages/FindUnistring.cmake b/cmake/packages/FindUnistring.cmake new file mode 100644 index 00000000000..abbe470a3d1 --- /dev/null +++ b/cmake/packages/FindUnistring.cmake @@ -0,0 +1,16 @@ +include(FindPackageHandleStandardArgs) + +find_library(UNISTRING_LIBRARY NAMES unistring) +find_path(UNISTRING_HDR NAMES unistr.h) + +find_package_handle_standard_args(Unistring +REQUIRED_VARS UNISTRING_LIBRARY UNISTRING_HDR) + +if (Unistring_FOUND) + mark_as_advanced(UNISTRING_LIBRARY) + mark_as_advanced(UNISTRING_HDR) + add_library(Unistring::Unistring UNKNOWN IMPORTED) + set_property(TARGET Unistring::Unistring PROPERTY IMPORTED_LOCATION ${UNISTRING_LIBRARY}) + cmake_path(GET UNISTRING_HDR PARENT_PATH UNISTRING_HDR) + target_include_directories(Unistring::Unistring INTERFACE ${UNISTRING_HDR_DIR}) +endif () diff --git a/cmake/packages/Findpcre2.cmake b/cmake/packages/Findpcre2.cmake new file mode 100644 index 00000000000..3341d91a19d --- /dev/null +++ b/cmake/packages/Findpcre2.cmake @@ -0,0 +1,4 @@ +find_package(PkgConfig REQUIRED) + +pkg_search_module(pcre2 REQUIRED libpcre2-8 libpcre2-16 libpcre2-32 libpcre2-posix IMPORTED_TARGET GLOBAL) +add_library(pcre2::pcre2 ALIAS PkgConfig::pcre2) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4b58209de29..127f52c493e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -148,7 +148,7 @@ add_custom_command( DEPENDS ptimec COMMAND ptimec ${TIME_FORMATS} > time_fmts.cc) -add_library(lnavdt STATIC config.h.in ptimec.hh ptimec_spec.hh ptimec_rt.cc time_fmts.cc) +add_library(lnavdt STATIC ${CMAKE_BINARY_DIR}/src/config.h ptimec.hh ptimec_spec.hh ptimec_rt.cc time_fmts.cc) target_include_directories(lnavdt PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} @@ -512,7 +512,7 @@ target_link_libraries(lnavfileio cppfmt spookyhash pcrepp base BZip2::BZip2 ZLIB add_library( diag STATIC ${GEN_SRCS} - config.h.in + ${CMAKE_BINARY_DIR}/src/config.h all_logs_vtab.cc apps.cc archive_manager.cc diff --git a/src/base/CMakeLists.txt b/src/base/CMakeLists.txt index 60d0edb401d..d101a2b8b93 100644 --- a/src/base/CMakeLists.txt +++ b/src/base/CMakeLists.txt @@ -1,6 +1,6 @@ add_library( base STATIC - ../config.h.in + ${CMAKE_BINARY_DIR}/src/config.h ansi_scrubber.cc attr_line.cc attr_line.builder.cc diff --git a/src/base/result.h b/src/base/result.h index e3e8ac54bc6..04f50417b12 100644 --- a/src/base/result.h +++ b/src/base/result.h @@ -11,12 +11,12 @@ #pragma once +#include +#include #include #include #include -#include - namespace types { template struct Ok { @@ -818,7 +818,7 @@ struct Result { { if (!isOk()) { ::fprintf(stderr, "%s\n", str); - abort(); + std::abort(); } return expect_impl(std::is_same()); } diff --git a/src/pcrepp/CMakeLists.txt b/src/pcrepp/CMakeLists.txt index da68aef97fe..1df4d185f69 100644 --- a/src/pcrepp/CMakeLists.txt +++ b/src/pcrepp/CMakeLists.txt @@ -1,12 +1,12 @@ add_library(pcrepp STATIC - ../config.h.in + ${CMAKE_BINARY_DIR}/src/config.h pcre2pp.hh pcre2pp_fwd.hh pcre2pp.cc) target_include_directories(pcrepp PUBLIC . .. ../third-party/scnlib/include ${CMAKE_CURRENT_BINARY_DIR}/..) -target_link_libraries(pcrepp cppfmt PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX) +target_link_libraries(pcrepp cppfmt pcre2::pcre2) add_executable(test_pcre2pp test_pcre2pp.cc) target_include_directories( diff --git a/src/remote/CMakeLists.txt b/src/remote/CMakeLists.txt index 7fd3c1d3680..0719617f91d 100644 --- a/src/remote/CMakeLists.txt +++ b/src/remote/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(remote STATIC ../config.h.in remote.ssh.cc remote.ssh.hh) +add_library(remote STATIC ${CMAKE_BINARY_DIR}/src/config.h remote.ssh.cc remote.ssh.hh) target_include_directories(remote PUBLIC . .. ../fmtlib ${CMAKE_CURRENT_BINARY_DIR}/..) diff --git a/src/yajlpp/CMakeLists.txt b/src/yajlpp/CMakeLists.txt index 0305a86c6c5..afaaa89a5ce 100644 --- a/src/yajlpp/CMakeLists.txt +++ b/src/yajlpp/CMakeLists.txt @@ -1,6 +1,6 @@ add_library( yajlpp STATIC - ../config.h.in + ${CMAKE_BINARY_DIR}/src/config.h json_op.hh json_ptr.hh yajlpp.hh @@ -16,6 +16,7 @@ target_include_directories(yajlpp PUBLIC . .. ../fmtlib ../third-party ) target_link_libraries(yajlpp + base pcrepp yajl ${CURSES_LIBRARIES} @@ -23,15 +24,15 @@ target_link_libraries(yajlpp ) add_executable(test_yajlpp test_yajlpp.cc) -target_link_libraries(test_yajlpp yajlpp base ${lnav_LIBS}) +target_link_libraries(test_yajlpp yajlpp) add_test(NAME test_yajlpp COMMAND test_yajlpp) add_executable(test_json_ptr test_json_ptr.cc) -target_link_libraries(test_json_ptr yajlpp base ${lnav_LIBS}) +target_link_libraries(test_json_ptr yajlpp) add_test(NAME test_json_ptr COMMAND test_json_ptr) add_executable(drive_json_op drive_json_op.cc) -target_link_libraries(drive_json_op base yajlpp ${lnav_LIBS}) +target_link_libraries(drive_json_op yajlpp) add_executable(drive_json_ptr_walk drive_json_ptr_walk.cc) -target_link_libraries(drive_json_ptr_walk base yajlpp ${lnav_LIBS}) +target_link_libraries(drive_json_ptr_walk yajlpp)