Skip to content

Commit f185284

Browse files
committed
Merge branch 'mpapierski-cmake'
2 parents 1656ef0 + 3104f7e commit f185284

File tree

17 files changed

+17899
-46
lines changed

17 files changed

+17899
-46
lines changed

.gitignore

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,6 @@
99
/configure
1010
/msgpack_vc2008.sln
1111
/msgpack_vc2008.vcproj
12-
/src/msgpack/pack_define.h
13-
/src/msgpack/pack_template.h
14-
/src/msgpack/sysdep.h
15-
/src/msgpack/type/define.hpp
16-
/src/msgpack/type/tuple.hpp
17-
/src/msgpack/unpack_define.h
18-
/src/msgpack/unpack_template.h
19-
/src/msgpack/zone.hpp
20-
/test/cases.mpac
21-
/test/cases_compact.mpac
2212
Makefile.in
2313

2414
# Files generated by the configure script.

CMakeLists.txt

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
CMAKE_MINIMUM_REQUIRED (VERSION 2.6.4)
2+
PROJECT (msgpack)
3+
4+
SET (VERSION 0.5.8)
5+
SET (VERSION_MAJOR 0)
6+
SET (VERSION_MINOR 5)
7+
8+
SET (prefix ${CMAKE_INSTALL_PREFIX})
9+
SET (exec_prefix "\${prefix}")
10+
SET (libdir "\${exec_prefix}/lib")
11+
SET (includedir "\${prefix}/include")
12+
13+
FIND_PACKAGE (GTest)
14+
FIND_PACKAGE (ZLIB)
15+
FIND_PACKAGE (Threads)
16+
IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND)
17+
OPTION (MSGPACK_BUILD_TESTS "Build msgpack tests." ON)
18+
ENDIF ()
19+
20+
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
21+
22+
INCLUDE (CheckCXXSourceCompiles)
23+
CHECK_CXX_SOURCE_COMPILES ("
24+
#include <bits/atomicity.h>
25+
int atomic_sub(int i) { return __gnu_cxx::__exchange_and_add(&i, -1) - 1; }
26+
int atomic_add(int i) { return __gnu_cxx::__exchange_and_add(&i, 1) + 1; }
27+
int main(int argc, char * argv[])
28+
{
29+
atomic_sub(1);
30+
atomic_add(1);
31+
}
32+
" MSGPACK_ENABLE_GCC_CXX_ATOMIC)
33+
34+
IF (MSGPACK_ENABLE_CXX)
35+
LIST (APPEND msgpack_SOURCES
36+
src/object.cpp
37+
)
38+
ENDIF ()
39+
40+
IF (MSGPACK_ENABLE_GCC_CXX_ATOMIC)
41+
LIST (APPEND msgpack_SOURCES
42+
src/gcc_atomic.cpp
43+
)
44+
ENDIF ()
45+
46+
47+
LIST (APPEND msgpack_SOURCES
48+
src/unpack.c
49+
src/objectc.c
50+
src/version.c
51+
src/vrefbuffer.c
52+
src/zone.c
53+
)
54+
55+
LIST (APPEND msgpack_HEADERS
56+
src/msgpack/pack_define.h
57+
src/msgpack/pack_template.h
58+
src/msgpack/unpack_define.h
59+
src/msgpack/unpack_template.h
60+
src/msgpack/sysdep.h
61+
src/msgpack/sbuffer.h
62+
src/msgpack/version.h
63+
src/msgpack/vrefbuffer.h
64+
src/msgpack/zbuffer.h
65+
src/msgpack/pack.h
66+
src/msgpack/unpack.h
67+
src/msgpack/object.h
68+
src/msgpack/zone.h
69+
)
70+
71+
IF (MSGPACK_ENABLE_CXX)
72+
LIST (APPEND msgpack_HEADERS
73+
src/msgpack.hpp
74+
src/msgpack/sbuffer.hpp
75+
src/msgpack/vrefbuffer.hpp
76+
src/msgpack/zbuffer.hpp
77+
src/msgpack/pack.hpp
78+
src/msgpack/unpack.hpp
79+
src/msgpack/object.hpp
80+
src/msgpack/zone.hpp
81+
src/msgpack/type.hpp
82+
src/msgpack/type/bool.hpp
83+
src/msgpack/type/deque.hpp
84+
src/msgpack/type/float.hpp
85+
src/msgpack/type/fixint.hpp
86+
src/msgpack/type/int.hpp
87+
src/msgpack/type/list.hpp
88+
src/msgpack/type/map.hpp
89+
src/msgpack/type/nil.hpp
90+
src/msgpack/type/pair.hpp
91+
src/msgpack/type/raw.hpp
92+
src/msgpack/type/set.hpp
93+
src/msgpack/type/string.hpp
94+
src/msgpack/type/vector.hpp
95+
src/msgpack/type/tuple.hpp
96+
src/msgpack/type/define.hpp
97+
src/msgpack/type/tr1/unordered_map.hpp
98+
src/msgpack/type/tr1/unordered_set.hpp
99+
)
100+
ENDIF ()
101+
102+
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
103+
SET_SOURCE_FILES_PROPERTIES(${msgpack_SOURCES} PROPERTIES LANGUAGE CXX)
104+
ENDIF ()
105+
106+
EXECUTE_PROCESS (
107+
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src/msgpack
108+
)
109+
110+
CONFIGURE_FILE (
111+
src/msgpack/version.h.in
112+
${CMAKE_CURRENT_BINARY_DIR}/src/msgpack/version.h
113+
)
114+
115+
CONFIGURE_FILE (
116+
msgpack.pc.in
117+
msgpack.pc
118+
@ONLY
119+
)
120+
121+
INCLUDE_DIRECTORIES (
122+
./
123+
src/
124+
src/msgpack/
125+
${CMAKE_CURRENT_BINARY_DIR}/src/
126+
${CMAKE_CURRENT_BINARY_DIR}/src/msgpack/
127+
)
128+
129+
ADD_LIBRARY (msgpack SHARED
130+
${msgpack_SOURCES}
131+
${msgpack_HEADERS}
132+
)
133+
134+
ADD_LIBRARY (msgpack-static STATIC
135+
${msgpack_SOURCES}
136+
${msgpack_HEADERS}
137+
)
138+
139+
SET_TARGET_PROPERTIES (msgpack-static PROPERTIES OUTPUT_NAME "msgpack")
140+
SET_TARGET_PROPERTIES (msgpack PROPERTIES IMPORT_SUFFIX "_import.lib")
141+
SET_TARGET_PROPERTIES (msgpack PROPERTIES SOVERSION 3 VERSION 3.0.0)
142+
143+
IF (MSGPACK_BUILD_TESTS)
144+
ENABLE_TESTING ()
145+
ADD_SUBDIRECTORY (test)
146+
ENDIF ()
147+
148+
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
149+
SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -g -O3 -DPIC")
150+
SET_PROPERTY (TARGET msgpack-static APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -g -O3" )
151+
ENDIF ()
152+
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
153+
IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
154+
STRING(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
155+
ELSE ()
156+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
157+
ENDIF ()
158+
ENDIF ()
159+
160+
INSTALL (TARGETS msgpack msgpack-static DESTINATION lib)
161+
INSTALL (DIRECTORY src/msgpack DESTINATION include)
162+
INSTALL (FILES src/msgpack.h src/msgpack.hpp DESTINATION include)
163+
INSTALL (FILES msgpack.pc DESTINATION lib/pkgconfig)
164+
165+
# Doxygen
166+
FIND_PACKAGE (Doxygen)
167+
IF (DOXYGEN_FOUND)
168+
ADD_CUSTOM_TARGET (
169+
doxygen_c
170+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
171+
COMMAND ${CMAKE_COMMAND} -E echo "FILE_PATTERNS = *.h" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
172+
COMMAND ${CMAKE_COMMAND} -E echo "OUTPUT_DIRECTORY = doc_c" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
173+
COMMAND ${CMAKE_COMMAND} -E echo "PROJECT_NAME = \"MessagePack for C\"" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
174+
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_c
175+
VERBATIM
176+
)
177+
ADD_CUSTOM_TARGET (
178+
doxygen_cpp
179+
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
180+
COMMAND ${CMAKE_COMMAND} -E echo "FILE_PATTERNS = *.hpp" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
181+
COMMAND ${CMAKE_COMMAND} -E echo "OUTPUT_DIRECTORY = doc_cpp" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
182+
COMMAND ${CMAKE_COMMAND} -E echo "PROJECT_NAME = \"MessagePack for C++\"" >> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
183+
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile_cpp
184+
VERBATIM
185+
)
186+
ADD_CUSTOM_TARGET (
187+
doxygen
188+
DEPENDS doxygen_c doxygen_cpp
189+
)
190+
ENDIF ()

Makefile.am

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@ DOC_FILES = \
66
NOTICE \
77
msgpack_vc8.vcproj \
88
msgpack_vc8.sln \
9-
msgpack_vc2008.vcproj \
10-
msgpack_vc2008.sln \
119
msgpack_vc.postbuild.bat
1210

1311
EXTRA_DIST = \
14-
$(DOC_FILES)
12+
$(DOC_FILES) CMakeLists.txt test/CMakeLists.txt
1513

1614
pkgconfigdir = $(libdir)/pkgconfig
1715
pkgconfig_DATA = msgpack.pc

README.md

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ To report an issue, use the [msgpack-c issue tracker](https://github.com/msgpack
2626

2727
#### Install from git repository
2828

29+
##### Using autotools
2930
You will need gcc (4.1.0 or higher), autotools.
3031

3132
```
@@ -37,6 +38,16 @@ $ make
3738
$ sudo make install
3839
```
3940

41+
##### Using cmake
42+
You will need gcc (4.1.0 or higher), cmake.
43+
44+
```
45+
$ git clone https://github.com/msgpack/msgpack-c.git
46+
$ cd msgpack-c
47+
$ cmake .
48+
$ make
49+
```
50+
4051
#### Install from package
4152

4253
##### UNIX-like platform with ./configure
@@ -79,16 +90,29 @@ $ sudo brew install msgpack
7990

8091
##### Windows
8192

82-
On Windows, download source package from [here](https://sourceforge.net/projects/msgpack/files/) and extract it. Open `msgpack_vc8.vcproj` or msgpack_vc2008 file and build it using batch build. It builds libraries in `lib/` folder and header files in `include/` folder.
83-
84-
You can build using command line as follows:
93+
Clone msgpack-c git repository.
8594

8695
```
87-
> vcbuild msgpack_vc2008.vcproj
88-
> dir lib % DLL files are here
89-
> dir include % header files are here
96+
$ git clone https://github.com/msgpack/msgpack-c.git
9097
```
9198

99+
or using GUI git client.
100+
101+
e.g.) tortoise git https://code.google.com/p/tortoisegit/
102+
103+
Launch cmake GUI client. http://www.cmake.org/cmake/resources/software.html
104+
105+
Set 'Where is the source code:' text box and 'Where to build the binaries:' text box.
106+
107+
Click 'Configure' button.
108+
109+
Choose your Visual Studio version.
110+
111+
Click 'Generate' button.
112+
113+
Open the created msgpack.sln on Visual Studio.
114+
115+
Build all.
92116

93117
### Linking with an Application
94118

bootstrap

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,6 @@ test -f ChangeLog || touch ChangeLog
3838
test -f NEWS || touch NEWS
3939
test -f README || cp -f README.md README
4040

41-
./preprocess
42-
if [ $? -ne 0 ]; then
43-
exit 1
44-
fi
45-
46-
47-
4841
ACLOCAL="aclocal"
4942
ACLOCAL_FILES="aclocal.m4"
5043
ALWAYS_CLEAN="config.status config.log config.cache libtool"

preprocess

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,6 @@ preprocess() {
1212
fi
1313
}
1414

15-
if [ "$1" = "clean" ];then
16-
rm -f src/msgpack/type/tuple.hpp
17-
rm -f src/msgpack/type/define.hpp
18-
rm -f src/msgpack/zone.hpp
19-
else
20-
preprocess src/msgpack/type/tuple.hpp
21-
preprocess src/msgpack/type/define.hpp
22-
preprocess src/msgpack/zone.hpp
23-
fi
24-
cp -f sysdep.h src/msgpack/
25-
cp -f pack_define.h src/msgpack/
26-
cp -f pack_template.h src/msgpack/
27-
cp -f unpack_define.h src/msgpack/
28-
cp -f unpack_template.h src/msgpack/
29-
cp -f cases.mpac test/
30-
cp -f cases_compact.mpac test/
31-
32-
sed -e 's/8\.00/9.00/' < msgpack_vc8.vcproj > msgpack_vc2008.vcproj
33-
sed -e 's/9\.00/10.00/' -e 's/msgpack_vc8/msgpack_vc2008/' < msgpack_vc8.sln > msgpack_vc2008.sln
34-
15+
preprocess src/msgpack/type/tuple.hpp
16+
preprocess src/msgpack/type/define.hpp
17+
preprocess src/msgpack/zone.hpp
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)