2014-06-08 14:05:33 +00:00
|
|
|
CMAKE_MINIMUM_REQUIRED (VERSION 2.6.4)
|
2014-06-05 10:02:46 +09:00
|
|
|
PROJECT (msgpack)
|
|
|
|
|
2014-06-08 15:23:02 +00:00
|
|
|
SET (VERSION 0.5.8)
|
|
|
|
SET (VERSION_MAJOR 0)
|
|
|
|
SET (VERSION_MINOR 5)
|
|
|
|
|
|
|
|
SET (prefix ${CMAKE_INSTALL_PREFIX})
|
|
|
|
SET (exec_prefix "\${prefix}")
|
|
|
|
SET (libdir "\${exec_prefix}/lib")
|
|
|
|
SET (includedir "\${prefix}/include")
|
2014-06-05 10:02:46 +09:00
|
|
|
|
|
|
|
FIND_PACKAGE (GTest)
|
|
|
|
FIND_PACKAGE (ZLIB)
|
|
|
|
FIND_PACKAGE (Threads)
|
|
|
|
IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND)
|
|
|
|
OPTION (MSGPACK_BUILD_TESTS "Build msgpack tests." ON)
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
|
|
|
|
|
|
|
|
INCLUDE (CheckCXXSourceCompiles)
|
|
|
|
CHECK_CXX_SOURCE_COMPILES ("
|
|
|
|
#include <bits/atomicity.h>
|
|
|
|
int atomic_sub(int i) { return __gnu_cxx::__exchange_and_add(&i, -1) - 1; }
|
|
|
|
int atomic_add(int i) { return __gnu_cxx::__exchange_and_add(&i, 1) + 1; }
|
|
|
|
int main(int argc, char * argv[])
|
|
|
|
{
|
|
|
|
atomic_sub(1);
|
|
|
|
atomic_add(1);
|
|
|
|
}
|
|
|
|
" MSGPACK_ENABLE_GCC_CXX_ATOMIC)
|
|
|
|
|
|
|
|
IF (MSGPACK_ENABLE_CXX)
|
|
|
|
LIST (APPEND msgpack_SOURCES
|
|
|
|
src/object.cpp
|
|
|
|
)
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
IF (MSGPACK_ENABLE_GCC_CXX_ATOMIC)
|
|
|
|
LIST (APPEND msgpack_SOURCES
|
|
|
|
src/gcc_atomic.cpp
|
|
|
|
)
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
|
|
|
|
LIST (APPEND msgpack_SOURCES
|
|
|
|
src/unpack.c
|
|
|
|
src/objectc.c
|
|
|
|
src/version.c
|
|
|
|
src/vrefbuffer.c
|
|
|
|
src/zone.c
|
|
|
|
)
|
|
|
|
|
2014-06-12 11:18:06 +09:00
|
|
|
LIST (APPEND msgpack_HEADERS
|
2014-06-05 10:02:46 +09:00
|
|
|
src/msgpack/pack_define.h
|
|
|
|
src/msgpack/pack_template.h
|
|
|
|
src/msgpack/unpack_define.h
|
|
|
|
src/msgpack/unpack_template.h
|
|
|
|
src/msgpack/sysdep.h
|
|
|
|
src/msgpack/sbuffer.h
|
|
|
|
src/msgpack/version.h
|
|
|
|
src/msgpack/vrefbuffer.h
|
|
|
|
src/msgpack/zbuffer.h
|
|
|
|
src/msgpack/pack.h
|
|
|
|
src/msgpack/unpack.h
|
|
|
|
src/msgpack/object.h
|
|
|
|
src/msgpack/zone.h
|
|
|
|
)
|
|
|
|
|
|
|
|
IF (MSGPACK_ENABLE_CXX)
|
2014-06-12 11:18:06 +09:00
|
|
|
LIST (APPEND msgpack_HEADERS
|
2014-06-05 10:02:46 +09:00
|
|
|
src/msgpack.hpp
|
|
|
|
src/msgpack/sbuffer.hpp
|
|
|
|
src/msgpack/vrefbuffer.hpp
|
|
|
|
src/msgpack/zbuffer.hpp
|
|
|
|
src/msgpack/pack.hpp
|
|
|
|
src/msgpack/unpack.hpp
|
|
|
|
src/msgpack/object.hpp
|
|
|
|
src/msgpack/zone.hpp
|
|
|
|
src/msgpack/type.hpp
|
|
|
|
src/msgpack/type/bool.hpp
|
|
|
|
src/msgpack/type/deque.hpp
|
|
|
|
src/msgpack/type/float.hpp
|
|
|
|
src/msgpack/type/fixint.hpp
|
|
|
|
src/msgpack/type/int.hpp
|
|
|
|
src/msgpack/type/list.hpp
|
|
|
|
src/msgpack/type/map.hpp
|
|
|
|
src/msgpack/type/nil.hpp
|
|
|
|
src/msgpack/type/pair.hpp
|
|
|
|
src/msgpack/type/raw.hpp
|
|
|
|
src/msgpack/type/set.hpp
|
|
|
|
src/msgpack/type/string.hpp
|
|
|
|
src/msgpack/type/vector.hpp
|
|
|
|
src/msgpack/type/tuple.hpp
|
|
|
|
src/msgpack/type/define.hpp
|
|
|
|
src/msgpack/type/tr1/unordered_map.hpp
|
|
|
|
src/msgpack/type/tr1/unordered_set.hpp
|
|
|
|
)
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
|
|
SET_SOURCE_FILES_PROPERTIES(${msgpack_SOURCES} PROPERTIES LANGUAGE CXX)
|
|
|
|
ENDIF ()
|
|
|
|
|
|
|
|
EXECUTE_PROCESS (
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/msgpack
|
|
|
|
)
|
|
|
|
|
|
|
|
CONFIGURE_FILE (
|
|
|
|
src/msgpack/version.h.in
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/src/msgpack/version.h
|
|
|
|
)
|
|
|
|
|
2014-06-08 15:23:02 +00:00
|
|
|
CONFIGURE_FILE (
|
|
|
|
msgpack.pc.in
|
|
|
|
msgpack.pc
|
|
|
|
@ONLY
|
|
|
|
)
|
|
|
|
|
2014-06-05 10:02:46 +09:00
|
|
|
INCLUDE_DIRECTORIES (
|
|
|
|
./
|
|
|
|
src/
|
|
|
|
src/msgpack/
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/src/
|
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/src/msgpack/
|
|
|
|
)
|
|
|
|
|
2014-06-07 00:13:23 +09:00
|
|
|
ADD_LIBRARY (msgpack SHARED
|
2014-06-05 10:02:46 +09:00
|
|
|
${msgpack_SOURCES}
|
|
|
|
${msgpack_HEADERS}
|
|
|
|
)
|
|
|
|
|
2014-06-07 00:13:23 +09:00
|
|
|
ADD_LIBRARY (msgpack-static STATIC
|
|
|
|
${msgpack_SOURCES}
|
|
|
|
${msgpack_HEADERS}
|
|
|
|
)
|
|
|
|
|
|
|
|
SET_TARGET_PROPERTIES (msgpack-static PROPERTIES OUTPUT_NAME "msgpack")
|
|
|
|
SET_TARGET_PROPERTIES (msgpack PROPERTIES IMPORT_SUFFIX "_import.lib")
|
2014-06-08 14:05:33 +00:00
|
|
|
SET_TARGET_PROPERTIES (msgpack PROPERTIES SOVERSION 3 VERSION 3.0.0)
|
2014-06-07 00:13:23 +09:00
|
|
|
|
2014-06-05 10:02:46 +09:00
|
|
|
IF (MSGPACK_BUILD_TESTS)
|
|
|
|
ENABLE_TESTING ()
|
|
|
|
ADD_SUBDIRECTORY (test)
|
|
|
|
ENDIF ()
|
|
|
|
|
2014-06-21 11:11:32 +09:00
|
|
|
IF (CMAKE_COMPILER_IS_GNUCC)
|
|
|
|
SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS -Wall )
|
|
|
|
SET_PROPERTY (TARGET msgpack-static APPEND_STRING PROPERTY COMPILE_FLAGS -Wall )
|
|
|
|
ENDIF ()
|
|
|
|
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
|
|
IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
|
|
|
|
STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
|
|
|
ELSE ()
|
|
|
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
|
|
|
|
ENDIF ()
|
|
|
|
ENDIF ()
|
|
|
|
|
2014-06-07 14:39:59 +00:00
|
|
|
INSTALL (TARGETS msgpack msgpack-static DESTINATION lib)
|
2014-06-12 11:18:06 +09:00
|
|
|
INSTALL (DIRECTORY src/msgpack DESTINATION include)
|
|
|
|
INSTALL (FILES src/msgpack.h src/msgpack.hpp DESTINATION include)
|
2014-06-08 15:23:02 +00:00
|
|
|
INSTALL (FILES msgpack.pc DESTINATION lib/pkgconfig)
|
2014-06-07 14:39:59 +00:00
|
|
|
|
2014-06-05 10:02:46 +09:00
|
|
|
# Doxygen
|
|
|
|
FIND_PACKAGE (Doxygen)
|
|
|
|
IF (DOXYGEN_FOUND)
|
|
|
|
ADD_CUSTOM_TARGET (
|
|
|
|
doxygen_c
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "FILE_PATTERNS = *.h" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "OUTPUT_DIRECTORY = doc_c" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "PROJECT_NAME = \"MessagePack for C\"" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
|
|
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
|
|
|
|
VERBATIM
|
|
|
|
)
|
|
|
|
ADD_CUSTOM_TARGET (
|
|
|
|
doxygen_cpp
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "FILE_PATTERNS = *.hpp" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "OUTPUT_DIRECTORY = doc_cpp" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E echo "PROJECT_NAME = \"MessagePack for C++\"" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
|
|
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
|
|
|
|
VERBATIM
|
|
|
|
)
|
|
|
|
ADD_CUSTOM_TARGET (
|
|
|
|
doxygen
|
|
|
|
DEPENDS doxygen_c doxygen_cpp
|
|
|
|
)
|
|
|
|
ENDIF ()
|