poco/Foundation/CMakeLists.txt
Mathäus Mendel e3649153b8 Fixed build with CMake
Used CMAKE_DEBUG_POSTFIX instead LIB_EXT for library name decoration on debug builds (less intrusive and more flexible)
2012-12-08 15:54:38 -02:00

258 lines
6.1 KiB
CMake

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)
if (X64)
set(sdk_bindir "${sdk_dir}/bin/x64")
else (X64)
set(sdk_bindir "${sdk_dir}/bin")
endif (X64)
endif ()
find_program(CMAKE_MC_COMPILER mc.exe HINTS "${sdk_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)
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/BinaryReader.cpp
src/BinaryWriter.cpp
src/Bugcheck.cpp
src/ByteOrder.cpp
src/Channel.cpp
src/Checksum.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/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/OpcomChannel.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/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/Void.cpp
src/Windows1250Encoding.cpp
src/Windows1251Encoding.cpp
src/Windows1252Encoding.cpp
src/adler32.c
src/compress.c
src/crc32.c
src/deflate.c
src/gzclose.c
src/gzlib.c
src/gzread.c
src/gzwrite.c
src/uncompr.c
src/infback.c
src/inffast.c
src/inflate.c
src/inftrees.c
src/pcre_chartables.c
src/pcre_compile.c
src/pcre_exec.c
src/pcre_fullinfo.c
src/pcre_globals.c
src/pcre_maketables.c
src/pcre_newline.c
src/pcre_ord2utf8.c
src/pcre_study.c
src/pcre_tables.c
src/pcre_try_flipped.c
src/pcre_ucd.c
src/pcre_valid_utf8.c
src/pcre_xclass.c
src/pocomsg.mc
src/trees.c
src/zutil.c
)
set(WIN_SRCS
src/EventLogChannel.cpp
src/WindowsConsoleChannel.cpp
)
if (WIN32)
set(RES_SRCS ${CMAKE_SOURCE_DIR}/Foundation/include/Poco/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
)
if(CMAKE_SYSTEM MATCHES "Windows")
set(SRCS ${BASE_SRCS} ${WIN_SRCS})
add_definitions( -DPCRE_STATIC -DFoundation_EXPORTS)
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} )
if (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
set_target_properties( ${LIBNAME} PROPERTIES LINK_FLAGS "-library=stlport4")
endif (${CMAKE_CXX_COMPILER_ID} MATCHES "SunPro")
target_link_libraries( ${LIBNAME} ${SYSLIBS})
install(
DIRECTORY include/Poco
DESTINATION include
PATTERN ".svn" EXCLUDE
)
install(
TARGETS ${LIBNAME}
DESTINATION lib
)
if (ENABLE_TESTS)
add_subdirectory( samples )
add_subdirectory( testsuite )
endif ()