diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..2ce5f846cc69cd88ad2780be4dcc2e88b15c8dce --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 2.8 FATAL_ERROR) + +macro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD _errorMessage ) +string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" _insource ) +if( _insource ) + message( SEND_ERROR "${_errorMessage}" ) + message( FATAL_ERROR + "In-source builds are not allowed. + + This process created the file `CMakeCache.txt' and the directory `CMakeFiles and overwrite the Makefile. + Please fix them with: + + rm -r CMakeCache.txt CMakeFiles + git checkout Makefile + + CMake would overwrite the makefiles distributed with Compiler-RT. + Please create a directory outside the source directory and run cmake + from there, passing the path to this source directory as the last argument. + Example for the lazy people: + + mkdir ../PacketLib_build + cd ../PacketLib_build + cmake ../PacketLib + " ) +endif( _insource ) +endmacro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD ) + +set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules) + +MACRO_ENSURE_OUT_OF_SOURCE_BUILD( "In-source build error." ) + +project(packet) +set(packet_MAJOR_VERSION 4) +set(packet_MINOR_VERSION 3) +set(packet_PATCH_VERSION 0) +set(packet_VERSION +${packet_MAJOR_VERSION}.${packet_MINOR_VERSION}.${packet_PATCH_VERSION}) +set(PROJECT_VERSION ${packet_VERSION}) + +add_subdirectory(src) diff --git a/CMakeModules/EnsureOutOfSourceBuild.cmake b/CMakeModules/EnsureOutOfSourceBuild.cmake new file mode 100644 index 0000000000000000000000000000000000000000..9b945b831361d04c792942437f78c4ce2103830c --- /dev/null +++ b/CMakeModules/EnsureOutOfSourceBuild.cmake @@ -0,0 +1,24 @@ +macro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD _errorMessage ) +string( COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" _insource ) +if( _insource ) + message( SEND_ERROR "${_errorMessage}" ) + message( FATAL_ERROR + "In-source builds are not allowed. + + This process created the file `CMakeCache.txt' and the directory `CMakeFiles and overwrite the Makefile. + Please fix them with: + + rm -r CMakeCache.txt CMakeFiles + git checkout Makefile + + CMake would overwrite the makefiles distributed with Compiler-RT. + Please create a directory outside the source directory and run cmake + from there, passing the path to this source directory as the last argument. + Example for the lazy people: + + mkdir ../PacketLib_build + cd ../PacketLib_build + cmake ../PacketLib + " ) +endif( _insource ) +endmacro( MACRO_ENSURE_OUT_OF_SOURCE_BUILD ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..6b62e9baff91cccd161bba384bcce5d80ca6913c --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,25 @@ +set(SOURCES ByteStream.cpp File.cpp InputPacketStream.cpp InputTextFile.cpp OutputPacketStream.cpp + PacketBufferV.cpp PacketHeader.cpp SDFBlock.cpp SocketServer.cpp ConfigurationFile.cpp + FileStream.cpp InputPacketStreamFile.cpp MSGQ.cpp OutputSerial.cpp PacketDataField.cpp + PacketIdentifier.cpp SHM.cpp SourceDataField.cpp DataFieldHeader.cpp FileStreamPointer.cpp + InputSerial.cpp MemoryBuffer.cpp OutputSocketClient.cpp PacketException.cpp + PacketNotRecognized.cpp Serial.cpp Utility.cpp Device.cpp Input.cpp InputSocketServer.cpp + Output.cpp Packet.cpp PacketExceptionFileFormat.cpp PacketStream.cpp Socket.cpp pugixml.cpp + Field.cpp InputFile.cpp InputText.cpp OutputFile.cpp PacketBufferQ.cpp PacketExceptionIO.cpp + PartOfPacket.cpp SocketClient.cpp + lz4.c lz4hc.c) + +# libpacket.a and libpacket.so +include_directories(${CMAKE_SOURCE_DIR}/include) +add_library(${CMAKE_PROJECT_NAME} SHARED ${SOURCES}) +add_library(${CMAKE_PROJECT_NAME}static STATIC ${SOURCES}) +set_target_properties(${CMAKE_PROJECT_NAME}static PROPERTIES OUTPUT_NAME ${CMAKE_PROJECT_NAME}) +set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) +target_link_libraries(${CMAKE_PROJECT_NAME} ${LIBS}) + +# make install +file(GLOB HEADERS "${PROJECT_SOURCE_DIR}/include/*.h") +install(FILES ${HEADERS} DESTINATION include/packet) +install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION lib) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../doc) +install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/../doc DESTINATION .)