annotate extern/jansson/CMakeLists.txt @ 0:8991989c4708

Initial import
author David Demelier <markand@malikania.fr>
date Tue, 22 Mar 2016 18:26:05 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # This is a modified version for irccd.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 # -------------------------------------------------------------------
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 #
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 # - installation stuff has been removed,
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # - documentation process has been removed.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # - style has been adapted to match our conventions.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # - comments and unneeded stuff have been removed.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 project (jansson C)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 option(USE_URANDOM "Use /dev/urandom to seed the hash function." ON)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 option(USE_WINDOWS_CRYPTOAPI "Use CryptGenRandom to seed the hash function." ON)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # for CheckFunctionKeywords
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 include(CheckCSourceCompiles)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 include(CheckFunctionExists)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 include(CheckFunctionKeywords)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 include(CheckIncludeFiles)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 include(CheckTypeSize)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 if (MSVC)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 # Turn off Microsofts "security" warnings.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 add_definitions( "/W3 /D_CRT_SECURE_NO_WARNINGS /wd4005 /wd4996 /nologo" )
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 if (STATIC_CRT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 set(CMAKE_C_FLAGS_RELEASE "/MT")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 set(CMAKE_C_FLAGS_DEBUG "/MTd")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 if (NOT WIN32 AND (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 add_definitions("-fPIC")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 check_include_files(endian.h HAVE_ENDIAN_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 check_include_files(fcntl.h HAVE_FCNTL_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 check_include_files(sched.h HAVE_SCHED_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 check_include_files(unistd.h HAVE_UNISTD_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 check_include_files(sys/param.h HAVE_SYS_PARAM_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 check_include_files(sys/stat.h HAVE_SYS_STAT_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 check_include_files(sys/time.h HAVE_SYS_TIME_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 check_include_files(sys/time.h HAVE_SYS_TYPES_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 check_function_exists(close HAVE_CLOSE)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 check_function_exists(getpid HAVE_GETPID)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 check_function_exists(gettimeofday HAVE_GETTIMEOFDAY)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 check_function_exists(open HAVE_OPEN)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 check_function_exists(read HAVE_READ)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 check_function_exists(sched_yield HAVE_SCHED_YIELD)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 # Check for the int-type includes
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 check_include_files(stdint.h HAVE_STDINT_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 # Check our 64 bit integer sizes
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 check_type_size(__int64 __INT64)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 check_type_size(int64_t INT64_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 check_type_size("long long" LONG_LONG_INT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 # Check our 32 bit integer sizes
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 check_type_size(int32_t INT32_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 check_type_size(__int32 __INT32)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 check_type_size("long" LONG_INT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 check_type_size("int" INT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 if (HAVE_INT32_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 set(JSON_INT32 int32_t)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 elseif (HAVE___INT32)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 set(JSON_INT32 __int32)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 elseif (HAVE_LONG_INT AND (${LONG_INT} EQUAL 4))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 set(JSON_INT32 long)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 elseif (HAVE_INT AND (${INT} EQUAL 4))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 set(JSON_INT32 int)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 message (FATAL_ERROR "Could not detect a valid 32-bit integer type")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 check_type_size("unsigned long" UNSIGNED_LONG_INT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 check_type_size("unsigned int" UNSIGNED_INT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 check_type_size("unsigned short" UNSIGNED_SHORT)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 check_type_size(uint32_t UINT32_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 check_type_size(__uint32 __UINT32)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 if (HAVE_UINT32_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 set(JSON_UINT32 uint32_t)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 elseif (HAVE___UINT32)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 set(JSON_UINT32 __uint32)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 elseif (HAVE_UNSIGNED_LONG_INT AND (${UNSIGNED_LONG_INT} EQUAL 4))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 set(JSON_UINT32 "unsigned long")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 elseif (HAVE_UNSIGNED_INT AND (${UNSIGNED_INT} EQUAL 4))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 set(JSON_UINT32 "unsigned int")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 message(FATAL_ERROR "Could not detect a valid unsigned 32-bit integer type")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 check_type_size(uint16_t UINT16_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 check_type_size(__uint16 __UINT16)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 if (HAVE_UINT16_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 set(JSON_UINT16 uint16_t)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 elseif (HAVE___UINT16)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 set(JSON_UINT16 __uint16)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 elseif (HAVE_UNSIGNED_INT AND (${UNSIGNED_INT} EQUAL 2))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 set(JSON_UINT16 "unsigned int")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 elseif (HAVE_UNSIGNED_SHORT AND (${UNSIGNED_SHORT} EQUAL 2))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 set(JSON_UINT16 "unsigned short")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 message(FATAL_ERROR "Could not detect a valid unsigned 16-bit integer type")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 check_type_size(uint8_t UINT8_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 check_type_size(__uint8 __UINT8)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 if (HAVE_UINT8_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 set(JSON_UINT8 uint8_t)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 elseif (HAVE___UINT8)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 set(JSON_UINT8 __uint8)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 set(JSON_UINT8 "unsigned char")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 # Check for ssize_t and SSIZE_T existance.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 check_type_size(ssize_t SSIZE_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 check_type_size(SSIZE_T UPPERCASE_SSIZE_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 if(NOT HAVE_SSIZE_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 if(HAVE_UPPERCASE_SSIZE_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 set(JSON_SSIZE SSIZE_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 else()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 set(JSON_SSIZE int)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 set(CMAKE_EXTRA_INCLUDE_FILES "")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 # Check for all the variants of strtoll
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 check_function_exists(strtoll HAVE_STRTOLL)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 check_function_exists(strtoq HAVE_STRTOQ)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 check_function_exists(_strtoi64 HAVE__STRTOI64)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 # Figure out what variant we should use
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 if (HAVE_STRTOLL)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 set(JSON_STRTOINT strtoll)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 elseif (HAVE_STRTOQ)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 set(JSON_STRTOINT strtoq)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 elseif (HAVE__STRTOI64)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 set(JSON_STRTOINT _strtoi64)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 # fallback to strtol (32 bit)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 # this will set all the required variables
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 set (JSON_STRTOINT strtol)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 set (JSON_INT_T long)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 set (JSON_INTEGER_FORMAT "\"ld\"")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 # if we haven't defined JSON_INT_T, then we have a 64 bit conversion function.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 # detect what to use for the 64 bit type.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 # Note: I will prefer long long if I can get it, as that is what the automake system aimed for.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 if (NOT DEFINED JSON_INT_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 if (HAVE_LONG_LONG_INT AND (${LONG_LONG_INT} EQUAL 8))
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 set(JSON_INT_T "long long")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 elseif (HAVE_INT64_T)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 set(JSON_INT_T int64_t)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 elseif (HAVE___INT64)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 set(JSON_INT_T __int64)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 message(FATAL_ERROR "Could not detect 64 bit type, although I detected the strtoll equivalent")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 # Apparently, Borland BCC and MSVC wants I64d,
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 # Borland BCC could also accept LD
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 # and gcc wants ldd,
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 # I am not sure what cygwin will want, so I will assume I64d
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 if (WIN32) # matches both msvc and cygwin
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 set(JSON_INTEGER_FORMAT "\"I64d\"")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 set(JSON_INTEGER_FORMAT "\"lld\"")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
185
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 # If locale.h and localeconv() are available, define to 1, otherwise to 0.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 check_include_files (locale.h HAVE_LOCALE_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 check_function_exists (localeconv HAVE_LOCALECONV)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
189
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 if (HAVE_LOCALECONV AND HAVE_LOCALE_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 set(JSON_HAVE_LOCALECONV 1)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 else ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 set(JSON_HAVE_LOCALECONV 0)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
195
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 # check if we have setlocale
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 check_function_exists(setlocale HAVE_SETLOCALE)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 # Check what the inline keyword is.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 # Note that the original JSON_INLINE was always set to just 'inline', so this goes further.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 check_function_keywords("inline")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 check_function_keywords("__inline")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 check_function_keywords("__inline__")
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 if (HAVE_INLINE)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 set(JSON_INLINE inline)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 elseif (HAVE___INLINE)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 set(JSON_INLINE __inline)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 elseif (HAVE___INLINE__)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 set(JSON_INLINE __inline__)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 else()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 # no inline on this platform
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 set (JSON_INLINE)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 endif()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
215
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 # Find our snprintf
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 check_function_exists (snprintf HAVE_SNPRINTF)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 check_function_exists (_snprintf HAVE__SNPRINTF)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
219
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 if (HAVE_SNPRINTF)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 set(JSON_SNPRINTF snprintf)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 elseif (HAVE__SNPRINTF)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 set(JSON_SNPRINTF _snprintf)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 endif ()
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
225
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 check_c_source_compiles ("int main() { unsigned long val; __sync_bool_compare_and_swap(&val, 0, 1); return 0; } " HAVE_SYNC_BUILTINS)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 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)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 # configure the public config file
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 configure_file (${CMAKE_CURRENT_SOURCE_DIR}/cmake/jansson_config.h.cmake
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 ${CMAKE_CURRENT_BINARY_DIR}/include/jansson_config.h)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
232
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 # Copy the jansson.h file to the public include folder
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 file (COPY ${CMAKE_CURRENT_SOURCE_DIR}/src/jansson.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/include/)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
236
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 add_definitions(-DJANSSON_USING_CMAKE)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
238
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 # configure the private config file
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/jansson_private_config.h.cmake
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 ${CMAKE_CURRENT_BINARY_DIR}/private_include/jansson_private_config.h)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
242
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 # and tell the source code to include it
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 add_definitions(-DHAVE_CONFIG_H)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
245
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 include_directories(${CMAKE_CURRENT_BINARY_DIR}/private_include)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
248
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 # Add the lib sources.
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 file(GLOB JANSSON_SRC src/*.c)
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
251
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 set(
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 JANSSON_HDR_PRIVATE
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 ${CMAKE_CURRENT_SOURCE_DIR}/src/hashtable.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 ${CMAKE_CURRENT_SOURCE_DIR}/src/jansson_private.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 ${CMAKE_CURRENT_SOURCE_DIR}/src/strbuffer.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 ${CMAKE_CURRENT_SOURCE_DIR}/src/utf.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 ${CMAKE_CURRENT_BINARY_DIR}/private_include/jansson_private_config.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 )
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
260
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 set(
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 JANSSON_HDR_PUBLIC
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 ${CMAKE_CURRENT_BINARY_DIR}/include/jansson_config.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 ${CMAKE_CURRENT_SOURCE_DIR}/src/jansson.h
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 )
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
266
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 malikania_create_library(
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 TARGET extern-jansson
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 SOURCES
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 ${JANSSON_SRC}
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 ${JANSSON_HDR_PRIVATE}
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 ${JANSSON_HDR_PUBLIC}
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 PUBLIC_INCLUDES
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 ${jansson_SOURCE_DIR}/src
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 ${jansson_BINARY_DIR}/include
8991989c4708 Initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 )