diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e05272..44dd7cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,8 +82,6 @@ option(FORCE_OPENSSL "Force usage of OpenSSL even under windows" OFF) if(ENABLE_CRYPTO OR ENABLE_NETSSL OR ENABLE_JWT) find_package(OpenSSL REQUIRED) -else() - find_package(OpenSSL) endif() if(OPENSSL_FOUND) @@ -113,24 +111,19 @@ else() option(ENABLE_APACHECONNECTOR "Enable ApacheConnector" OFF) endif() -if(ENABLE_DATA_MYSQL) - find_package(MySQL REQUIRED) -else() - find_package(MySQL) -endif() +option(ENABLE_DATA "Enable Data" OFF) +option(ENABLE_DATA_MYSQL "Enable Data MySQL or MariaDB" OFF) -if(MYSQL_FOUND) - option(ENABLE_DATA "Enable Data" ON) - option(ENABLE_DATA_MYSQL "Enable Data MySQL or MariaDB" ON) -else() - option(ENABLE_DATA "Enable Data" OFF) - option(ENABLE_DATA_MYSQL "Enable Data MySQL or MariaDB" OFF) +if(ENABLE_DATA_MYSQL) + find_package(libmysql) + if (NOT libmysql_FOUND) + find_package(unofficial-libmariadb CONFIG REQUIRED) + set(MYSQL_LIBRARIES unofficial::libmariadb) + endif() endif() if(ENABLE_DATA_POSTGRESQL) find_package(PostgreSQL REQUIRED) -else() - find_package(PostgreSQL) endif() if(PostgreSQL_FOUND) @@ -207,6 +200,9 @@ include(DefinePlatformSpecifc) # Collect the built libraries and include dirs, the will be used to create the PocoConfig.cmake file set(Poco_COMPONENTS "") +# Do not declare the link library in the code! +add_definitions(-DPOCO_NO_AUTOMATIC_LIBS) + if(ENABLE_TESTS) add_subdirectory(CppUnit) set(ENABLE_XML ON CACHE BOOL "Enable XML" FORCE) @@ -339,8 +335,11 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/Redis AND ENABLE_REDIS) list(APPEND Poco_COMPONENTS "Redis") endif() -if(EXISTS ${PROJECT_SOURCE_DIR}/PDF AND ENABLE_PDF) - add_subdirectory(PDF) +if(ENABLE_PDF) + include(SelectLibraryConfigurations) + find_library(PocoPDF_LIBRARY_RELEASE NAMES libhpdf) + find_library(PocoPDF_LIBRARY_DEBUG NAMES libhpdfd) + select_library_configurations(PocoPDF) list(APPEND Poco_COMPONENTS "PDF") endif() @@ -478,15 +477,6 @@ install( Devel ) -if(POCO_UNBUNDLED) - install(FILES cmake/FindPCRE.cmake - DESTINATION "${PocoConfigPackageLocation}") - install(FILES cmake/V39/FindEXPAT.cmake - DESTINATION "${PocoConfigPackageLocation}/V39") - install(FILES cmake/V313/FindSQLite3.cmake - DESTINATION "${PocoConfigPackageLocation}/V313") -endif() - message(STATUS "CMake ${CMAKE_VERSION} successfully configured ${PROJECT_NAME} using ${CMAKE_GENERATOR} generator") message(STATUS "${PROJECT_NAME} package version: ${PROJECT_VERSION}") if(BUILD_SHARED_LIBS) diff --git a/Data/CMakeLists.txt b/Data/CMakeLists.txt index 7d1e99e..9d0a85c 100644 --- a/Data/CMakeLists.txt +++ b/Data/CMakeLists.txt @@ -45,7 +45,7 @@ else(ENABLE_DATA_SQLITE) message(STATUS "SQLite Support Disabled") endif() -if(MYSQL_FOUND AND ENABLE_DATA_MYSQL) +if((MYSQL_FOUND OR unofficial-libmariadb_FOUND) AND ENABLE_DATA_MYSQL) message(STATUS "MySQL Support Enabled") add_subdirectory(MySQL) else() diff --git a/Data/MySQL/CMakeLists.txt b/Data/MySQL/CMakeLists.txt index f71b145..7034974 100644 --- a/Data/MySQL/CMakeLists.txt +++ b/Data/MySQL/CMakeLists.txt @@ -21,7 +21,7 @@ set_target_properties(DataMySQL DEFINE_SYMBOL MySQL_EXPORTS ) -target_link_libraries(DataMySQL PUBLIC Poco::Data MySQL::client) +target_link_libraries(DataMySQL PUBLIC Poco::Data ${MYSQL_LIBRARIES}) target_include_directories(DataMySQL PUBLIC $ diff --git a/Data/MySQL/include/Poco/Data/MySQL/MySQL.h b/Data/MySQL/include/Poco/Data/MySQL/MySQL.h index 6ddcd39..9e50803 100644 --- a/Data/MySQL/include/Poco/Data/MySQL/MySQL.h +++ b/Data/MySQL/include/Poco/Data/MySQL/MySQL.h @@ -57,8 +57,6 @@ #endif #if defined(LIBMARIADB) #pragma comment(lib, "libmariadb") - #else - #pragma comment(lib, "libmysql") #endif #endif diff --git a/Data/SQLite/CMakeLists.txt b/Data/SQLite/CMakeLists.txt index b52e2c5..0dcfae2 100644 --- a/Data/SQLite/CMakeLists.txt +++ b/Data/SQLite/CMakeLists.txt @@ -7,7 +7,7 @@ file(GLOB_RECURSE HDRS_G "include/*.h") POCO_HEADERS_AUTO(SQLITE_SRCS ${HDRS_G}) if(POCO_UNBUNDLED) - find_package(SQLite3 REQUIRED) + find_package(unofficial-sqlite3 CONFIG REQUIRED) else() # sqlite3 POCO_SOURCES(SQLITE_SRCS sqlite3 @@ -43,7 +43,7 @@ target_include_directories(DataSQLite ) if(POCO_UNBUNDLED) - target_link_libraries(DataSQLite PUBLIC SQLite::SQLite3) + target_link_libraries(DataSQLite PUBLIC unofficial::sqlite3::sqlite3) target_compile_definitions(DataSQLite PUBLIC POCO_UNBUNDLED SQLITE_THREADSAFE=1 diff --git a/Foundation/CMakeLists.txt b/Foundation/CMakeLists.txt index 6f5100f..c9fa2e5 100644 --- a/Foundation/CMakeLists.txt +++ b/Foundation/CMakeLists.txt @@ -35,7 +35,7 @@ POCO_MESSAGES(SRCS Logging src/pocomsg.mc) # If POCO_UNBUNDLED is enabled we try to find the required packages # The configuration will fail if the packages are not found if(POCO_UNBUNDLED) - find_package(PCRE REQUIRED) + find_package(unofficial-pcre CONFIG REQUIRED) find_package(ZLIB REQUIRED) #HACK: Unicode.cpp requires functions from these files. The can't be taken from the library @@ -101,7 +101,7 @@ set_target_properties(Foundation ) if(POCO_UNBUNDLED) - target_link_libraries(Foundation PUBLIC Pcre::Pcre ZLIB::ZLIB) + target_link_libraries(Foundation PUBLIC unofficial::pcre::pcre ZLIB::ZLIB) target_compile_definitions(Foundation PUBLIC POCO_UNBUNDLED) add_definitions( -D_pcre_utf8_table1=_poco_pcre_utf8_table1 diff --git a/Foundation/cmake/PocoFoundationConfig.cmake b/Foundation/cmake/PocoFoundationConfig.cmake index 46c2d3f..af2e78c 100644 --- a/Foundation/cmake/PocoFoundationConfig.cmake +++ b/Foundation/cmake/PocoFoundationConfig.cmake @@ -2,7 +2,7 @@ if(@POCO_UNBUNDLED@) include(CMakeFindDependencyMacro) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") find_dependency(ZLIB REQUIRED) - find_dependency(PCRE REQUIRED) + find_dependency(unofficial-pcre REQUIRED) endif() include("${CMAKE_CURRENT_LIST_DIR}/PocoFoundationTargets.cmake") diff --git a/XML/CMakeLists.txt b/XML/CMakeLists.txt index 4fbf06f..793285a 100644 --- a/XML/CMakeLists.txt +++ b/XML/CMakeLists.txt @@ -20,7 +20,7 @@ endif() # If POCO_UNBUNDLED is enabled we try to find the required packages # The configuration will fail if the packages are not found if(POCO_UNBUNDLED) - find_package(EXPAT REQUIRED) + find_package(expat CONFIG REQUIRED) else() POCO_SOURCES(SRCS expat src/xmlparse.cpp @@ -50,7 +50,7 @@ target_include_directories(XML ) if(POCO_UNBUNDLED) - target_link_libraries(XML PUBLIC EXPAT::EXPAT) + target_link_libraries(XML PUBLIC expat::expat) target_compile_definitions(XML PUBLIC POCO_UNBUNDLED) else() if(WIN32) diff --git a/XML/cmake/PocoXMLConfig.cmake b/XML/cmake/PocoXMLConfig.cmake index ef58207..4ed94ec 100644 --- a/XML/cmake/PocoXMLConfig.cmake +++ b/XML/cmake/PocoXMLConfig.cmake @@ -4,7 +4,7 @@ if(@POCO_UNBUNDLED@) if(CMAKE_VERSION VERSION_LESS "3.10") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/V39") endif() - find_dependency(EXPAT REQUIRED) + find_dependency(expat CONFIG REQUIRED) endif() include("${CMAKE_CURRENT_LIST_DIR}/PocoXMLTargets.cmake") diff --git a/cmake/PocoConfig.cmake.in b/cmake/PocoConfig.cmake.in index 173eacd..936edf4 100644 --- a/cmake/PocoConfig.cmake.in +++ b/cmake/PocoConfig.cmake.in @@ -8,6 +8,13 @@ if (NOT Poco_FIND_COMPONENTS) return() endif() +include(CMakeFindDependencyMacro) +find_dependency(ZLIB REQUIRED) +find_dependency(unofficial-pcre REQUIRED) +if(Poco_FIND_REQUIRED_XML) + find_dependency(expat CONFIG REQUIRED) +endif() + set(_Poco_FIND_PARTS_REQUIRED) if (Poco_FIND_REQUIRED) set(_Poco_FIND_PARTS_REQUIRED REQUIRED) @@ -23,7 +30,7 @@ set(_Poco_NOTFOUND_MESSAGE) # Let components find each other, but don't overwrite CMAKE_PREFIX_PATH set(_Poco_CMAKE_PREFIX_PATH_old ${CMAKE_PREFIX_PATH}) -set(CMAKE_PREFIX_PATH ${_Poco_install_prefix}) +set(CMAKE_PREFIX_PATH ${_Poco_install_prefix} ${CMAKE_PREFIX_PATH}) foreach(module ${Poco_FIND_COMPONENTS}) find_package(Poco${module}