mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-19 04:26:55 +01:00
149 lines
4.8 KiB
CMake
149 lines
4.8 KiB
CMake
macro(ENABLE_LIBRARIES )
|
|
if(NOT BII_LIB_SRC)
|
|
return()
|
|
endif()
|
|
string(FIND "${BII_LIB_SRC}" "Data/MySQL/include" MySQL_SINGLE_MATCHED )
|
|
IF(MySQL_SINGLE_MATCHED)
|
|
SET(ENABLE_DATA_MYSQL ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Data/ODBC/include" ODBC_SINGLE_MATCHED)
|
|
IF(ODBC_SINGLE_MATCHED)
|
|
SET(ENABLE_DATA_ODBC ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Data/SQLite/include" SQLite_SINGLE_MATCHED )
|
|
IF(SQLite_SINGLE_MATCHED)
|
|
SET(ENABLE_DATA_SQLITE ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "JSON/include" JSON_SINGLE_MATCHED )
|
|
IF(JSON_SINGLE_MATCHED)
|
|
SET(ENABLE_JSON ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "MongoDB/include" MONGODB_SINGLE_MATCHED )
|
|
IF(MONGODB_SINGLE_MATCHED)
|
|
SET(ENABLE_MONGODB ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Util/include" UTIL_SINGLE_MATCHED )
|
|
IF(UTIL_SINGLE_MATCHED)
|
|
SET(ENABLE_UTIL ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Net/include" NET_SINGLE_MATCHED )
|
|
IF(NET_SINGLE_MATCHED)
|
|
SET(ENABLE_NET ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Zip/include" ZIP_SINGLE_MATCHED )
|
|
IF(ZIP_SINGLE_MATCHED)
|
|
SET(ENABLE_ZIP ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "ApacheConnector/include" APACHECONNECTOR_SINGLE_MATCHED )
|
|
IF(APACHECONNECTOR_SINGLE_MATCHED)
|
|
SET(ENABLE_APACHECONNECTOR ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "CppParser/include" CPPPARSER_SINGLE_MATCHED )
|
|
IF(CPPPARSER_SINGLE_MATCHED)
|
|
SET(ENABLE_CPPPARSER ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "XML/include" XML_SINGLE_MATCHED )
|
|
IF(XML_SINGLE_MATCHED)
|
|
SET(ENABLE_XML ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Crypto/include" CRYPTO_SINGLE_MATCHED )
|
|
IF(CRYPTO_SINGLE_MATCHED)
|
|
SET(ENABLE_CRYPTO ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "Data/include" DATA_SINGLE_MATCHED )
|
|
IF(DATA_SINGLE_MATCHED)
|
|
SET(ENABLE_DATA ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "NetSSL_OpenSSL/include" NETSSL_OPENSSL_SINGLE_MATCHED )
|
|
IF(NETSSL_OPENSSL_SINGLE_MATCHED)
|
|
SET(ENABLE_NETSSL ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "NetSSL_Win/include" NETSSL_WIN_SINGLE_MATCHED )
|
|
IF(NETSSL_WIN_SINGLE_MATCHED)
|
|
SET(ENABLE_NETSSL_WIN ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "PDF/include" PDF_SINGLE_MATCHED )
|
|
IF(PDF_SINGLE_MATCHED)
|
|
SET(ENABLE_PDF ON)
|
|
ENDIF()
|
|
|
|
string(FIND "${BII_LIB_SRC}" "SevenZip/include" SEVENZIP_SINGLE_MATCHED )
|
|
IF(SEVENZIP_SINGLE_MATCHED)
|
|
SET(ENABLE_SEVENZIP ON)
|
|
ENDIF()
|
|
endmacro()
|
|
|
|
macro(FILTER_BII_LIB_SRC PATTERN)
|
|
if(NOT BII_LIB_SRC)
|
|
return()
|
|
endif()
|
|
SET(ALL_MATCHES )
|
|
foreach(RESOURCE_FILE ${BII_LIB_SRC})
|
|
set(SINGLE_MATCHED )
|
|
string(REGEX MATCH "${PATTERN}" SINGLE_MATCHED "${RESOURCE_FILE}")
|
|
IF(DEFINED SINGLE_MATCHED)
|
|
SET(ALL_MATCHES ${ALL_MATCHES} ${SINGLE_MATCHED})
|
|
ENDIF(DEFINED SINGLE_MATCHED)
|
|
endforeach(RESOURCE_FILE ${BII_LIB_SRC})
|
|
|
|
FOREACH(BAD_ITEM ${ALL_MATCHES})
|
|
LIST(REMOVE_ITEM BII_LIB_SRC ${BAD_ITEM})
|
|
ENDFOREACH(BAD_ITEM ${ALL_MATCHES})
|
|
endmacro()
|
|
|
|
# Delete all the bad implementations which biicode detects
|
|
macro(FILTER_BAD_DEPENDENCIES)
|
|
if(NOT BII_LIB_SRC)
|
|
return()
|
|
endif()
|
|
SET(BAD_DEPS_PATTERN "(.*)(_WIN32U|_UNIX|_POSIX|_STD|_C99|_DEC|_DUMMY|_SUN|_VMS|_WINCE|_WIN32|_VX|_Android|_HPUX)(.*)")
|
|
# First filter: selected the pattern "_WIN32" or similars
|
|
FILTER_BII_LIB_SRC(${BAD_DEPS_PATTERN})
|
|
|
|
# Second filter: special cases
|
|
SET(SPECIAL_BAD_DEPENDENCIES_WIN Foundation/include/Poco/SyslogChannel.h
|
|
Foundation/src/SyslogChannel.cpp
|
|
Foundation/include/Poco/OpcomChannel.h
|
|
Foundation/src/OpcomChannel.cpp)
|
|
|
|
SET(SPECIAL_BAD_DEPENDENCIES_UNIX Foundation/include/Poco/EventLogChannel.h
|
|
Foundation/src/EventLogChannel.cpp
|
|
Foundation/include/Poco/WindowsConsoleChannel.h
|
|
Foundation/src/WindowsConsoleChannel.cpp
|
|
Foundation/include/Poco/OpcomChannel.h
|
|
Foundation/src/OpcomChannel.cpp
|
|
Util/src/WinRegistryKey.cpp
|
|
Util/src/WinRegistryConfiguration.cpp
|
|
Util/src/WinService.cpp)
|
|
IF(WIN32)
|
|
FOREACH(SPECIAL_DEP ${SPECIAL_BAD_DEPENDENCIES_WIN})
|
|
list(FIND BII_LIB_SRC ${SPECIAL_DEP} DEP_MATCH)
|
|
if(DEP_MATCH)
|
|
LIST(REMOVE_ITEM BII_LIB_SRC ${SPECIAL_DEP})
|
|
endif()
|
|
ENDFOREACH()
|
|
ELSEIF(UNIX)
|
|
FOREACH(SPECIAL_DEP ${SPECIAL_BAD_DEPENDENCIES_UNIX})
|
|
list(FIND BII_LIB_SRC ${SPECIAL_DEP} DEP_MATCH)
|
|
if(DEP_MATCH)
|
|
LIST(REMOVE_ITEM BII_LIB_SRC ${SPECIAL_DEP})
|
|
endif()
|
|
ENDFOREACH()
|
|
ENDIF()
|
|
endmacro()
|