mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-22 08:02:06 +02:00
adapted POCO C++ to biicode build system
This commit is contained in:
148
biicode/cmake/BiiPocoMacros.cmake
Normal file
148
biicode/cmake/BiiPocoMacros.cmake
Normal file
@@ -0,0 +1,148 @@
|
||||
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()
|
1
biicode/cmake/Crypto.cmake
Normal file
1
biicode/cmake/Crypto.cmake
Normal file
@@ -0,0 +1 @@
|
||||
TARGET_LINK_LIBRARIES(${BII_BLOCK_TARGET} INTERFACE ${OPENSSL_LIBRARIES})
|
41
biicode/cmake/Data.cmake
Normal file
41
biicode/cmake/Data.cmake
Normal file
@@ -0,0 +1,41 @@
|
||||
if (NOT POCO_STATIC)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DTHREADSAFE)
|
||||
endif (NOT POCO_STATIC)
|
||||
|
||||
if(MSVC AND NOT(MSVC_VERSION LESS 1400))
|
||||
set_source_files_properties(src/StatementImpl.cpp
|
||||
PROPERTIES COMPILE_FLAGS "/bigobj")
|
||||
endif()
|
||||
|
||||
if(ENABLE_DATA_SQLITE)
|
||||
# SQlite3 is built in any case
|
||||
include( SQLite )
|
||||
endif(ENABLE_DATA_SQLITE)
|
||||
|
||||
if(ENABLE_DATA_MYSQL)
|
||||
find_package(MySQL)
|
||||
if(MYSQL_FOUND)
|
||||
target_include_directories(${BII_BLOCK_TARGET} INTERFACE "${MYSQL_INCLUDE_DIR}")
|
||||
message(STATUS "MySQL Support Enabled")
|
||||
include( MySQL )
|
||||
else()
|
||||
message(STATUS "MySQL Support Disabled - no MySQL library")
|
||||
endif(MYSQL_FOUND)
|
||||
endif(ENABLE_DATA_MYSQL)
|
||||
|
||||
if(ENABLE_DATA_ODBC)
|
||||
find_package(ODBC)
|
||||
if(WIN32 AND NOT WINCE)
|
||||
set(ODBC_LIBRARIES "odbc32" "odbccp32")
|
||||
message(STATUS "Windows native ODBC Support Enabled")
|
||||
include( ODBC )
|
||||
else(WIN32 AND NOT WINCE)
|
||||
if(ODBC_FOUND)
|
||||
target_include_directories(${BII_BLOCK_TARGET} INTERFACE "${ODBC_INCLUDE_DIRECTORIES}")
|
||||
message(STATUS "ODBC Support Enabled")
|
||||
include( ODBC )
|
||||
else()
|
||||
message(STATUS "ODBC Support Disabled - no ODBC runtime")
|
||||
endif()
|
||||
endif(WIN32 AND NOT WINCE)
|
||||
endif(ENABLE_DATA_ODBC)
|
16
biicode/cmake/Foundation.cmake
Normal file
16
biicode/cmake/Foundation.cmake
Normal file
@@ -0,0 +1,16 @@
|
||||
# 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)
|
||||
set(SYSLIBS ${SYSLIBS} ${PCRE_LIBRARIES})
|
||||
target_include_directories(${BII_BLOCK_TARGET} INTERFACE ${PCRE_INCLUDE_DIRS})
|
||||
|
||||
find_package(ZLIB REQUIRED)
|
||||
set(SYSLIBS ${SYSLIBS} ${ZLIB_LIBRARIES})
|
||||
target_include_directories(${BII_BLOCK_TARGET} INTERFACE ${ZLIB_INCLUDE_DIRS})
|
||||
endif (POCO_UNBUNDLED)
|
||||
|
||||
if(WIN32)
|
||||
set(SYSLIBS ${SYSLIBS} iphlpapi)
|
||||
endif(WIN32)
|
||||
target_link_libraries(${BII_BLOCK_TARGET} INTERFACE ${SYSLIBS})
|
2
biicode/cmake/MySQL.cmake
Normal file
2
biicode/cmake/MySQL.cmake
Normal file
@@ -0,0 +1,2 @@
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DTHREADSAFE -DNO_TCL)
|
||||
target_link_libraries( ${BII_BLOCK_TARGET} INTERFACE ${MYSQL_LIB})
|
1
biicode/cmake/NetSSL_Win.cmake
Normal file
1
biicode/cmake/NetSSL_Win.cmake
Normal file
@@ -0,0 +1 @@
|
||||
target_link_libraries(${BII_BLOCK_TARGET} INTERFACE Crypt32.lib)
|
2
biicode/cmake/ODBC.cmake
Normal file
2
biicode/cmake/ODBC.cmake
Normal file
@@ -0,0 +1,2 @@
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE ${ODBC_CFLAGS} -DTHREADSAFE)
|
||||
target_link_libraries( ${BII_BLOCK_TARGET} INTERFACE ${ODBC_LIBRARIES})
|
6
biicode/cmake/PDF.cmake
Normal file
6
biicode/cmake/PDF.cmake
Normal file
@@ -0,0 +1,6 @@
|
||||
if (POCO_UNBUNDLED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
set(SYSLIBS ${SYSLIBS} ${ZLIB_LIBRARIES})
|
||||
include_directories(${ZLIB_INCLUDE_DIRS})
|
||||
endif (POCO_UNBUNDLED)
|
||||
target_link_libraries(${BII_BLOCK_TARGET} INTERFACE ${SYSLIBS} )
|
7
biicode/cmake/SQLite.cmake
Normal file
7
biicode/cmake/SQLite.cmake
Normal file
@@ -0,0 +1,7 @@
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DSQLITE_THREADSAFE=1
|
||||
-DSQLITE_DISABLE_LFS
|
||||
-DSQLITE_OMIT_UTF16
|
||||
-DSQLITE_OMIT_PROGRESS_CALLBACK
|
||||
-DSQLITE_OMIT_COMPLETE
|
||||
-DSQLITE_OMIT_TCL_VARIABLE
|
||||
-DSQLITE_OMIT_DEPRECATED)
|
15
biicode/cmake/XML.cmake
Normal file
15
biicode/cmake/XML.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
# 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)
|
||||
set(SYSLIBS ${SYSLIBS} ${EXPAT_LIBRARIES})
|
||||
include_directories(${EXPAT_INCLUDE_DIRS})
|
||||
endif (POCO_UNBUNDLED)
|
||||
|
||||
if(WIN32)
|
||||
#TODO: Is XML_STATIC only required with Windows? What does it do?
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DXML_STATIC -DXML_NS -DXML_DTD -DHAVE_EXPAT_CONFIG_H)
|
||||
else()
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DXML_NS -DXML_DTD -DHAVE_EXPAT_CONFIG_H)
|
||||
endif()
|
||||
target_link_libraries(${BII_BLOCK_TARGET} INTERFACE ${SYSLIBS})
|
84
biicode/cmake/biicode.cmake
Normal file
84
biicode/cmake/biicode.cmake
Normal file
@@ -0,0 +1,84 @@
|
||||
# Append biicode module directory to CMake
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/biicode/cmake)
|
||||
|
||||
include(BiiPocoMacros)
|
||||
|
||||
FILTER_BAD_DEPENDENCIES()
|
||||
|
||||
# Actually create targets: EXEcutables and libraries.
|
||||
ADD_BIICODE_TARGETS()
|
||||
|
||||
option(POCO_STATIC
|
||||
"Set to OFF|ON (default is OFF) to control build of POCO as STATIC library" ON)
|
||||
|
||||
# Uncomment from next two lines to force statitc or dynamic library, default is autodetection
|
||||
if(POCO_STATIC)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DPOCO_STATIC -DPOCO_NO_AUTOMATIC_LIBS)
|
||||
set( LIB_MODE STATIC )
|
||||
message(STATUS "Building static libraries")
|
||||
else(POCO_STATIC)
|
||||
set( LIB_MODE SHARED )
|
||||
message(STATUS "Building dynamic libraries")
|
||||
endif(POCO_STATIC)
|
||||
|
||||
# OS Detection
|
||||
if(WIN32)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DPOCO_OS_FAMILY_WINDOWS -DUNICODE -D_UNICODE)
|
||||
#set(SYSLIBS iphlpapi gdi32 odbc32)
|
||||
endif(WIN32)
|
||||
|
||||
if (UNIX AND NOT ANDROID )
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DPOCO_OS_FAMILY_UNIX )
|
||||
# Standard 'must be' defines
|
||||
if (APPLE)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DPOCO_HAVE_IPv6 -DPOCO_NO_STAT64)
|
||||
set(SYSLIBS dl)
|
||||
else (APPLE)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -D_XOPEN_SOURCE=500 -D_REENTRANT -D_THREAD_SAFE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64)
|
||||
set(SYSLIBS pthread dl rt)
|
||||
endif (APPLE)
|
||||
endif(UNIX AND NOT ANDROID )
|
||||
|
||||
if (CMAKE_COMPILER_IS_MINGW)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -DWC_NO_BEST_FIT_CHARS=0x400 -DPOCO_WIN32_UTF8)
|
||||
target_compile_definitions(${BII_BLOCK_TARGET} INTERFACE -D_WIN32 -DMINGW32 -DWINVER=0x500 -DODBCVER=0x0300 -DPOCO_THREAD_STACK_SIZE)
|
||||
endif (CMAKE_COMPILER_IS_MINGW)
|
||||
|
||||
# Collect the built libraries and include dirs, the will be used to create the PocoConfig.cmake file
|
||||
ENABLE_LIBRARIES()
|
||||
|
||||
include(Foundation)
|
||||
if(ENABLE_XML)
|
||||
include(XML)
|
||||
endif()
|
||||
if(ENABLE_PDF)
|
||||
include(PDF)
|
||||
endif()
|
||||
|
||||
#NetSSL
|
||||
|
||||
if(WIN32 AND ENABLE_NETSSL_WIN)
|
||||
include(NetSSL_Win)
|
||||
endif(WIN32 AND ENABLE_NETSSL_WIN)
|
||||
|
||||
find_package(OpenSSL)
|
||||
if(OPENSSL_FOUND)
|
||||
target_include_directories(${BII_BLOCK_TARGET} INTERFACE "${OPENSSL_INCLUDE_DIR}")
|
||||
if(ENABLE_NETSSL)
|
||||
target_link_libraries(${BII_BLOCK_TARGET} INTERFACE ${OPENSSL_SSL_LIBRARY})
|
||||
endif()
|
||||
if(ENABLE_CRYPTO)
|
||||
include(Crypto)
|
||||
endif()
|
||||
endif(OPENSSL_FOUND)
|
||||
|
||||
if(ENABLE_DATA)
|
||||
include(Data)
|
||||
endif()
|
||||
|
||||
find_package(APR)
|
||||
find_package(Apache2)
|
||||
if(APRUTIL_FOUND AND APACHE_FOUND)
|
||||
target_include_directories(${BII_BLOCK_TARGET} INTERFACE "${APACHE_INCLUDE_DIR}" "${APRUTIL_INCLUDE_DIR}" )
|
||||
endif(APRUTIL_FOUND AND APACHE_FOUND)
|
Reference in New Issue
Block a user