mirror of
				https://github.com/pocoproject/poco.git
				synced 2025-11-04 12:17:37 +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()
 |