annotate jansson/CMakeLists.txt @ 5:9870264521f7

jansson: fix MSVC 2015 compilation
author David Demelier <markand@malikania.fr>
date Thu, 25 Feb 2016 09:01:37 +0100
parents 0047655db1aa
children b63f9c593c90
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # CMakeLists.txt -- CMake build system for jansson
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 # Copyright (c) 2016 David Demelier <markand@malikania.fr>
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 # This CMakeLists has been modified from vanilla jansson source.
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 # -------------------------------------------------------------------
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 # - installation stuff has been removed,
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 # - documentation process has been removed.
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 # - style has been adapted to match our conventions.
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 # - comments and unneeded stuff have been removed.
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 cmake_minimum_required(VERSION 3.0)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 project(jansson C)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 option(USE_URANDOM "Use /dev/urandom to seed the hash function." On)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 option(USE_WINDOWS_CRYPTOAPI "Use CryptGenRandom to seed the hash function." On)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${jansson_SOURCE_DIR}/cmake)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 include(CheckCSourceCompiles)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 include(CheckFunctionExists)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 include(CheckFunctionKeywords)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 include(CheckIncludeFiles)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 include(CheckTypeSize)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 check_include_files(endian.h HAVE_ENDIAN_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 check_include_files(fcntl.h HAVE_FCNTL_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 check_include_files(sched.h HAVE_SCHED_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 check_include_files(unistd.h HAVE_UNISTD_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 check_include_files(stdint.h HAVE_STDINT_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 check_include_files(sys/param.h HAVE_SYS_PARAM_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 check_include_files(sys/stat.h HAVE_SYS_STAT_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 check_include_files(sys/time.h HAVE_SYS_TIME_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 check_include_files(sys/time.h HAVE_SYS_TYPES_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
52
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 check_function_exists(close HAVE_CLOSE)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 check_function_exists(getpid HAVE_GETPID)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 check_function_exists(open HAVE_OPEN)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 check_function_exists(read HAVE_READ)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 check_function_exists(sched_yield HAVE_SCHED_YIELD)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 check_type_size(__int64 __INT64)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 check_type_size(int64_t INT64_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 check_type_size("long long" LONG_LONG_INT)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 check_type_size(int32_t INT32_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 check_type_size(__int32 __INT32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 check_type_size("long" LONG_INT)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 check_type_size("int" INT)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 if (HAVE_INT32_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 set(JSON_INT32 int32_t)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 elseif (HAVE___INT32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 set(JSON_INT32 __int32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 elseif (HAVE_LONG_INT AND (${LONG_INT} EQUAL 4))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 set(JSON_INT32 long)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 elseif (HAVE_INT AND (${INT} EQUAL 4))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 set(JSON_INT32 int)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 message (FATAL_ERROR "Could not detect a valid 32-bit integer type")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
79
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 check_type_size("unsigned long" UNSIGNED_LONG_INT)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 check_type_size("unsigned int" UNSIGNED_INT)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 check_type_size("unsigned short" UNSIGNED_SHORT)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 check_type_size(uint32_t UINT32_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 check_type_size(__uint32 __UINT32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 if (HAVE_UINT32_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 set(JSON_UINT32 uint32_t)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 elseif (HAVE___UINT32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 set(JSON_UINT32 __uint32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 elseif (HAVE_UNSIGNED_LONG_INT AND (${UNSIGNED_LONG_INT} EQUAL 4))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 set(JSON_UINT32 "unsigned long")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 elseif (HAVE_UNSIGNED_INT AND (${UNSIGNED_INT} EQUAL 4))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 set(JSON_UINT32 "unsigned int")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 message(FATAL_ERROR "Could not detect a valid unsigned 32-bit integer type")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 check_type_size(uint16_t UINT16_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 check_type_size(__uint16 __UINT16)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 if (HAVE_UINT16_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 set(JSON_UINT16 uint16_t)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 elseif (HAVE___UINT16)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 set(JSON_UINT16 __uint16)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 elseif (HAVE_UNSIGNED_INT AND (${UNSIGNED_INT} EQUAL 2))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 set(JSON_UINT16 "unsigned int")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 elseif (HAVE_UNSIGNED_SHORT AND (${UNSIGNED_SHORT} EQUAL 2))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 set(JSON_UINT16 "unsigned short")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 message(FATAL_ERROR "Could not detect a valid unsigned 16-bit integer type")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 check_type_size(uint8_t UINT8_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 check_type_size(__uint8 __UINT8)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 if (HAVE_UINT8_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 set(JSON_UINT8 uint8_t)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 elseif (HAVE___UINT8)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 set(JSON_UINT8 __uint8)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 set(JSON_UINT8 "unsigned char")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 check_type_size(ssize_t SSIZE_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 check_type_size(SSIZE_T UPPERCASE_SSIZE_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 if(NOT HAVE_SSIZE_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 if(HAVE_UPPERCASE_SSIZE_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 set(JSON_SSIZE SSIZE_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 else()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 set(JSON_SSIZE int)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 endif()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 endif()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 set(CMAKE_EXTRA_INCLUDE_FILES "")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 check_function_exists(strtoll HAVE_STRTOLL)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 check_function_exists(strtoq HAVE_STRTOQ)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 check_function_exists(_strtoi64 HAVE__STRTOI64)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
140
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 if (HAVE_STRTOLL)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 set(JSON_STRTOINT strtoll)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 elseif (HAVE_STRTOQ)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 set(JSON_STRTOINT strtoq)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 elseif (HAVE__STRTOI64)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 set(JSON_STRTOINT _strtoi64)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 set (JSON_STRTOINT strtol)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 set (JSON_INT_T long)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 set (JSON_INTEGER_FORMAT "\"ld\"")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
152
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 if (NOT DEFINED JSON_INT_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 if (HAVE_LONG_LONG_INT AND (${LONG_LONG_INT} EQUAL 8))
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 set(JSON_INT_T "long long")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 elseif (HAVE_INT64_T)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 set(JSON_INT_T int64_t)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 elseif (HAVE___INT64)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 set(JSON_INT_T __int64)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 message(FATAL_ERROR "Could not detect 64 bit type, although I detected the strtoll equivalent")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
163
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 if (WIN32)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 set(JSON_INTEGER_FORMAT "\"I64d\"")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 set(JSON_INTEGER_FORMAT "\"lld\"")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
170
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 check_include_files (locale.h HAVE_LOCALE_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 check_function_exists (localeconv HAVE_LOCALECONV)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 if (HAVE_LOCALECONV AND HAVE_LOCALE_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 set(JSON_HAVE_LOCALECONV 1)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 else ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 set(JSON_HAVE_LOCALECONV 0)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 endif()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 check_function_exists(setlocale HAVE_SETLOCALE)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
181
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 check_function_keywords("inline")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 check_function_keywords("__inline")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 check_function_keywords("__inline__")
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 if (HAVE_INLINE)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 set(JSON_INLINE inline)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 elseif (HAVE___INLINE)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 set(JSON_INLINE __inline)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 elseif (HAVE___INLINE__)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 set(JSON_INLINE __inline__)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 else()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 set (JSON_INLINE)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 endif()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 check_function_exists(snprintf HAVE_SNPRINTF)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 check_function_exists(_snprintf HAVE__SNPRINTF)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 if (HAVE_SNPRINTF)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 set(JSON_SNPRINTF snprintf)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 elseif (HAVE__SNPRINTF)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 set(JSON_SNPRINTF _snprintf)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 endif ()
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 check_c_source_compiles("int main() { unsigned long val; __sync_bool_compare_and_swap(&val, 0, 1); return 0; } " HAVE_SYNC_BUILTINS)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 check_c_source_compiles("int main() { char l; unsigned long v; __atomic_test_and_set(&l, __ATOMIC_RELAXED); __atomic_store_n(&v, 1, __ATOMIC_RELEASE); __atomic_load_n(&v, __ATOMIC_ACQUIRE); return 0; }" HAVE_ATOMIC_BUILTINS)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
207
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 configure_file(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 ${jansson_SOURCE_DIR}/cmake/jansson_config.h.cmake
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 ${jansson_BINARY_DIR}/include/jansson_config.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 )
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 file(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 COPY ${jansson_SOURCE_DIR}/src/jansson.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 DESTINATION ${jansson_BINARY_DIR}/include/
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 )
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
217
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 add_definitions(-DJANSSON_USING_CMAKE)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
219
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 configure_file(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 ${jansson_SOURCE_DIR}/cmake/jansson_private_config.h.cmake
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 ${jansson_BINARY_DIR}/private_include/jansson_private_config.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 )
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 add_definitions(-DHAVE_CONFIG_H)
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
226
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 set(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 JANSSON_SRC
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 ${jansson_SOURCE_DIR}/src/dump.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 ${jansson_SOURCE_DIR}/src/error.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 ${jansson_SOURCE_DIR}/src/hashtable.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 ${jansson_SOURCE_DIR}/src/hashtable_seed.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 ${jansson_SOURCE_DIR}/src/load.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 ${jansson_SOURCE_DIR}/src/memory.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 ${jansson_SOURCE_DIR}/src/pack_unpack.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 ${jansson_SOURCE_DIR}/src/strbuffer.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 ${jansson_SOURCE_DIR}/src/strconv.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 ${jansson_SOURCE_DIR}/src/utf.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 ${jansson_SOURCE_DIR}/src/value.c
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 )
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
241
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 set(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 JANSSON_HDR_PRIVATE
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 ${jansson_SOURCE_DIR}/src/hashtable.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 ${jansson_SOURCE_DIR}/src/jansson_private.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 ${jansson_SOURCE_DIR}/src/strbuffer.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 ${jansson_SOURCE_DIR}/src/utf.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 ${jansson_BINARY_DIR}/private_include/jansson_private_config.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 )
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
250
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 set(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 JANSSON_HDR_PUBLIC
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 ${jansson_BINARY_DIR}/include/jansson_config.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 ${jansson_SOURCE_DIR}/src/jansson.h
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 )
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
256
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 add_library(jansson STATIC ${JANSSON_SRC} ${JANSSON_HDR_PRIVATE} ${JANSSON_HDR_PUBLIC})
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
258
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 target_include_directories(
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 jansson
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 PUBLIC ${jansson_BINARY_DIR}/include
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 PRIVATE ${jansson_BINARY_DIR}/private_include
0047655db1aa jansson: import 2.7
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 )
5
9870264521f7 jansson: fix MSVC 2015 compilation
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
264
9870264521f7 jansson: fix MSVC 2015 compilation
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
265 if (MSVC)
9870264521f7 jansson: fix MSVC 2015 compilation
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
266 target_compile_definitions(jansson PUBLIC _CRT_SECURE_NO_WARNINGS)
9870264521f7 jansson: fix MSVC 2015 compilation
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
267 target_compile_options(jansson PUBLIC /W3 /D /wd4005 /wd4996 /wd4334 /wd4267)
9870264521f7 jansson: fix MSVC 2015 compilation
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
268 endif()