cmake: Cleanup CMakeLists.txt for all components

- Add missing CMakeLists.txt
- Use POCO_ macros to improve code structure in XCode/VisualStudio
- Better ODBC detection
- Remove unnecessary commented out code

The CMake documentation recommends explicitly listing source files, but because CMake is not the primary build system GLOB patterns are used for the moment.
This commit is contained in:
Pascal Bach
2014-08-22 17:10:24 +02:00
parent 65fcaf65a0
commit 7950001803
96 changed files with 630 additions and 1296 deletions

View File

@@ -1,182 +1,32 @@
set(LIBNAME "PocoFoundation")
if (WIN32)
# cmake has CMAKE_RC_COMPILER, but no message compiler
if ("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
# this path is only present for 2008+, but we currently require PATH to
# be set up anyway
get_filename_component(sdk_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Microsoft SDKs\\Windows;CurrentInstallFolder]" REALPATH)
get_filename_component(kit_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot]" REALPATH)
if (X64)
set(sdk_bindir "${sdk_dir}/bin/x64")
set(kit_bindir "${kit_dir}/bin/x64")
else (X64)
set(sdk_bindir "${sdk_dir}/bin")
set(kit_bindir "${kit_dir}/bin/x86")
endif (X64)
endif ()
find_program(CMAKE_MC_COMPILER mc.exe HINTS "${sdk_bindir}" "${kit_bindir}"
DOC "path to message compiler")
if (NOT CMAKE_MC_COMPILER)
message(FATAL_ERROR "message compiler not found: required to build")
endif (NOT CMAKE_MC_COMPILER)
message(STATUS "Found message compiler: ${CMAKE_MC_COMPILER}")
mark_as_advanced(CMAKE_MC_COMPILER)
endif(WIN32)
# Sources
file(GLOB SRCS_G "src/*.cpp")
POCO_SOURCES_AUTO( SRCS ${SRCS_G})
set( BASE_SRCS
src/ASCIIEncoding.cpp
src/Ascii.cpp
src/AtomicCounter.cpp
src/AbstractObserver.cpp
src/ActiveDispatcher.cpp
src/ArchiveStrategy.cpp
src/AsyncChannel.cpp
src/Base64Decoder.cpp
src/Base64Encoder.cpp
src/Base32Decoder.cpp
src/Base32Encoder.cpp
src/BinaryReader.cpp
src/BinaryWriter.cpp
src/Bugcheck.cpp
src/ByteOrder.cpp
src/Channel.cpp
src/Checksum.cpp
src/Clock.cpp
src/Condition.cpp
src/Configurable.cpp
src/ConsoleChannel.cpp
src/CountingStream.cpp
src/DateTime.cpp
src/DateTimeFormat.cpp
src/DateTimeFormatter.cpp
src/DateTimeParser.cpp
src/Debugger.cpp
src/DeflatingStream.cpp
src/DigestEngine.cpp
src/DigestStream.cpp
src/DirectoryIterator.cpp
src/DirectoryIteratorStrategy.cpp
src/DirectoryWatcher.cpp
src/Environment.cpp
src/Error.cpp
src/ErrorHandler.cpp
src/Event.cpp
src/EventArgs.cpp
src/Exception.cpp
src/FPEnvironment.cpp
src/File.cpp
src/FIFOBufferStream.cpp
src/FileChannel.cpp
src/FileStream.cpp
src/FileStreamFactory.cpp
src/Format.cpp
src/Formatter.cpp
src/FormattingChannel.cpp
src/Glob.cpp
src/Hash.cpp
src/HashStatistic.cpp
src/HexBinaryDecoder.cpp
src/HexBinaryEncoder.cpp
src/InflatingStream.cpp
src/Latin1Encoding.cpp
src/Latin2Encoding.cpp
src/Latin9Encoding.cpp
src/LineEndingConverter.cpp
src/LocalDateTime.cpp
src/LogFile.cpp
src/LogStream.cpp
src/Logger.cpp
src/LoggingFactory.cpp
src/LoggingRegistry.cpp
src/MD4Engine.cpp
src/MD5Engine.cpp
src/Manifest.cpp
src/MemoryPool.cpp
src/MemoryStream.cpp
src/Message.cpp
src/Mutex.cpp
src/NamedEvent.cpp
src/NamedMutex.cpp
src/NestedDiagnosticContext.cpp
src/Notification.cpp
src/NotificationCenter.cpp
src/NotificationQueue.cpp
src/TimedNotificationQueue.cpp
src/PriorityNotificationQueue.cpp
src/NullChannel.cpp
src/NullStream.cpp
src/NumberFormatter.cpp
src/NumberParser.cpp
src/NumericString.cpp
src/Path.cpp
src/PatternFormatter.cpp
src/Pipe.cpp
src/PipeImpl.cpp
src/PipeStream.cpp
src/Process.cpp
src/PurgeStrategy.cpp
src/RWLock.cpp
src/Random.cpp
src/RandomStream.cpp
src/RefCountedObject.cpp
src/RegularExpression.cpp
src/RotateStrategy.cpp
src/Runnable.cpp
src/SHA1Engine.cpp
src/Semaphore.cpp
src/SharedLibrary.cpp
src/SharedMemory.cpp
src/SignalHandler.cpp
src/SimpleFileChannel.cpp
src/SortedDirectoryIterator.cpp
src/SplitterChannel.cpp
src/Stopwatch.cpp
src/StreamChannel.cpp
src/StreamConverter.cpp
src/StreamCopier.cpp
src/StreamTokenizer.cpp
src/String.cpp
src/NumericString.cpp
src/StringTokenizer.cpp
src/SynchronizedObject.cpp
src/Task.cpp
src/TaskManager.cpp
src/TaskNotification.cpp
src/TeeStream.cpp
src/TemporaryFile.cpp
src/TextConverter.cpp
src/TextEncoding.cpp
src/TextIterator.cpp
src/TextBufferIterator.cpp
src/Thread.cpp
src/ThreadTarget.cpp
src/ThreadLocal.cpp
src/ThreadPool.cpp
src/Timer.cpp
src/Timespan.cpp
src/Timestamp.cpp
src/Timezone.cpp
src/Token.cpp
src/URI.cpp
src/URIStreamFactory.cpp
src/URIStreamOpener.cpp
src/UTF16Encoding.cpp
src/UTF32Encoding.cpp
src/UTF8Encoding.cpp
src/UTF8String.cpp
src/UUID.cpp
src/UUIDGenerator.cpp
src/Unicode.cpp
src/UnicodeConverter.cpp
src/Var.cpp
src/VarHolder.cpp
src/VarIterator.cpp
src/Void.cpp
src/Windows1250Encoding.cpp
src/Windows1251Encoding.cpp
src/Windows1252Encoding.cpp
)
# Headers
file(GLOB_RECURSE HDRS_G "include/*.h" )
POCO_HEADERS_AUTO( SRCS ${HDRS_G})
# Platform Specific
POCO_SOURCES_AUTO_PLAT( SRCS OPENVMS src/OpcomChannel.cpp )
POCO_HEADERS_AUTO( SRCS include/Poco/OpcomChannel.h )
POCO_SOURCES_AUTO_PLAT( SRCS UNIX src/SyslogChannel.cpp )
POCO_HEADERS_AUTO( SRCS include/Poco/SyslogChannel.h )
POCO_SOURCES_AUTO_PLAT( SRCS WIN32
src/WindowsConsoleChannel.cpp
src/EventLogChannel.cpp
)
POCO_HEADERS_AUTO( SRCS
include/Poco/WindowsConsoleChannel.h
include/Poco/EventLogChannel.h
)
# Messages
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
@@ -186,7 +36,7 @@ if (POCO_UNBUNDLED)
include_directories(${PCRE_INCLUDE_DIRS})
#HACK: Unicode.cpp requires functions from these files. The can't be taken from the library
list(APPEND BASE_SRCS
POCO_SOURCES( SRCS RegExp
src/pcre_ucd.c
src/pcre_tables.c
)
@@ -195,8 +45,8 @@ if (POCO_UNBUNDLED)
set(SYSLIBS ${SYSLIBS} ${ZLIB_LIBRARIES})
include_directories(${ZLIB_INCLUDE_DIRS})
else()
# PCRE
list(APPEND BASE_SRCS
# pcre
POCO_SOURCES( SRCS pcre
src/pcre_chartables.c
src/pcre_compile.c
src/pcre_exec.c
@@ -213,8 +63,13 @@ else()
src/pcre_xclass.c
)
# ZLIB
list(APPEND BASE_SRCS
# zlib
POCO_HEADERS( SRCS zlib
include/Poco/zconf.h
include/Poco/zlib.h
)
POCO_SOURCES( SRCS zlib
src/adler32.c
src/compress.c
src/crc32.c
@@ -228,47 +83,18 @@ else()
)
endif (POCO_UNBUNDLED)
set(WIN_SRCS
src/EventLogChannel.cpp
src/WindowsConsoleChannel.cpp
)
if (WIN32)
set(RES_SRCS ${CMAKE_SOURCE_DIR}/Foundation/src/pocomsg.h)
set_source_files_properties(${RES_SRCS} PROPERTIES GENERATED true)
add_custom_command(
OUTPUT ${RES_SRCS}
DEPENDS ${CMAKE_SOURCE_DIR}/Foundation/src/pocomsg.mc
COMMAND ${CMAKE_MC_COMPILER}
ARGS
-h ${CMAKE_SOURCE_DIR}/Foundation/src
-r ${CMAKE_SOURCE_DIR}/Foundation/src
${CMAKE_SOURCE_DIR}/Foundation/src/pocomsg.mc
VERBATIM # recommended: p260
)
list(APPEND WIN_SRCS ${RES_SRCS})
endif (WIN32)
set(LIN_SRCS
src/SyslogChannel.cpp
)
# TODO: Use this sources somewhere if built on OpenVMS
set(OPENVMS_SRCS
src/OpcomChannel.cpp
)
if(CMAKE_SYSTEM MATCHES "Windows")
set(SRCS ${BASE_SRCS} ${WIN_SRCS})
add_definitions( -DPCRE_STATIC -DFoundation_EXPORTS)
add_definitions( -DPCRE_STATIC)
set(SYSLIBS ${SYSLIBS} iphlpapi)
else (CMAKE_SYSTEM MATCHES "Windows")
set(SRCS ${BASE_SRCS} ${LIN_SRCS})
add_definitions( -DPCRE_STATIC)
endif(CMAKE_SYSTEM MATCHES "Windows")
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS} )
set_target_properties( ${LIBNAME} PROPERTIES VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION} )
add_library( ${LIBNAME} ${LIB_MODE} ${SRCS})
set_target_properties( ${LIBNAME}
PROPERTIES
VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
DEFINE_SYMBOL Foundation_EXPORTS)
if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
set_target_properties( ${LIBNAME} PROPERTIES LINK_FLAGS "-library=stlport4")
endif (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")