forked from lloyd/yajl
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
118 lines (93 loc) · 3.98 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# Copyright (c) 2007-2014, Lloyd Hilaiel <me@lloyd.io>
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(YAJL C)
OPTION (DISABLE_TESTS "Disable building tests and examples")
OPTION (DISABLE_TOOLS "Disable building tools")
OPTION (DISABLE_DOCS "Disable building docs")
OPTION (DISABLE_SO_VERSION "Disable so version")
OPTION (DISABLE_SHARED "Disable building shared")
OPTION (DISABLE_STATIC "Disable building static")
OPTION (DISABLE_TREE "Disable building yajl tree code")
IF (DISABLE_SHARED AND DISABLE_STATIC)
MESSAGE (FATAL_ERROR "Setting DISABLE_SHARED and DISABLE_STATIC is invalid.")
ENDIF (DISABLE_SHARED AND DISABLE_STATIC)
INCLUDE (CheckFunctionExists)
INCLUDE (CheckIncludeFiles)
CHECK_FUNCTION_EXISTS (isnan HAVE_ISNAN)
CHECK_FUNCTION_EXISTS (isinf HAVE_ISINF)
CHECK_FUNCTION_EXISTS (finite HAVE_FINITE)
IF (NOT HAVE_ISNAN)
CHECK_FUNCTION_EXISTS (_isnan HAVE__ISNAN)
ENDIF (NOT HAVE_ISNAN)
IF (NOT HAVE_FINITE)
CHECK_FUNCTION_EXISTS (_finite HAVE__FINITE)
ENDIF (NOT HAVE_FINITE)
CHECK_INCLUDE_FILES (ieeefp.h HAVE_IEEEFP_H)
CHECK_INCLUDE_FILES (float.h HAVE_FLOAT_H)
CHECK_INCLUDE_FILES (inttypes.h HAVE_INTTYPES_H)
SET (YAJL_MAJOR 2)
SET (YAJL_MINOR 1)
SET (YAJL_MICRO 1)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
IF (MSVC)
ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS=1)
ELSEIF (CMAKE_COMPILER_IS_GNUCC)
INCLUDE(CheckCCompilerFlag)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
CHECK_C_COMPILER_FLAG(-fvisibility=hidden HAVE_GCC_VISIBILITY)
IF(HAVE_GCC_VISIBILITY)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
ENDIF(HAVE_GCC_VISIBILITY)
CHECK_C_COMPILER_FLAG(-Wextra HAVE_GCC_WEXTRA)
IF(HAVE_GCC_WEXTRA)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra")
ENDIF(HAVE_GCC_WEXTRA)
CHECK_C_COMPILER_FLAG(-Wold-style-definition HAVE_GCC_WOLD_STYLE_DEFINITION)
IF(HAVE_GCC_WOLD_STYLE_DEFINITION)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wold-style-definition")
ENDIF(HAVE_GCC_WOLD_STYLE_DEFINITION)
SET(CMAKE_C_FLAGS
"${CMAKE_C_FLAGS} -std=c99 -pedantic -Wpointer-arith -Wno-format-y2k -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -Wundef -Wwrite-strings -Wredundant-decls -Wno-unused-parameter -Wno-sign-compare -Wmissing-prototypes")
IF ("${CMAKE_SYSTEM}" MATCHES "AIX")
CHECK_C_COMPILER_FLAG (-Wl,-bnoipath HAVE_LD_BNOIPATH)
IF (HAVE_LD_BNOIPATH)
SET (YAJL_EXE_LINKER_FLAGS "${YAJL_EXE_LINKER_FLAGS} -Wl,-bnoipath")
ENDIF (HAVE_LD_BNOIPATH)
ENDIF ("${CMAKE_SYSTEM}" MATCHES "AIX")
ENDIF (MSVC)
ADD_SUBDIRECTORY(src)
IF (NOT DISABLE_TOOLS)
ADD_SUBDIRECTORY(reformatter)
ADD_SUBDIRECTORY(verify)
ENDIF (NOT DISABLE_TOOLS)
IF (NOT DISABLE_TESTS)
ADD_SUBDIRECTORY(test)
ADD_SUBDIRECTORY(perf)
IF (NOT DISABLE_TREE)
ADD_SUBDIRECTORY(example)
ENDIF (NOT DISABLE_TREE)
IF (NOT WIN32)
ADD_CUSTOM_TARGET(test
${CMAKE_CURRENT_BINARY_DIR}/test/parsing/run_tests.sh ${CMAKE_CURRENT_BINARY_DIR}/test/parsing/yajl_test
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test/parsing)
ADD_CUSTOM_TARGET(test-api
${CMAKE_CURRENT_SOURCE_DIR}/test/api/run_tests.sh
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test/api)
ENDIF (NOT WIN32)
ENDIF (NOT DISABLE_TESTS)
IF (NOT DISABLE_DOCS)
INCLUDE(YAJLDoc.cmake)
ENDIF (NOT DISABLE_DOCS)
# vim: ts=2 sw=2 et: