1 # Copyright 2007-2009, Lloyd Hilaiel.
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are
7 # 1. Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in
12 # the documentation and/or other materials provided with the
15 # 3. Neither the name of Lloyd Hilaiel nor the names of its
16 # contributors may be used to endorse or promote products derived
17 # from this software without specific prior written permission.
19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 # DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
23 # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
27 # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
28 # IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 # POSSIBILITY OF SUCH DAMAGE.
31 SET (SRCS yajl.c yajl_lex.c yajl_parser.c yajl_buf.c
32 yajl_encode.c yajl_gen.c yajl_alloc.c)
33 SET (HDRS yajl_parser.h yajl_lex.h yajl_buf.h yajl_encode.h yajl_alloc.h)
34 SET (PUB_HDRS api/yajl_parse.h api/yajl_gen.h api/yajl_common.h)
36 # useful when fixing lexer bugs.
37 #ADD_DEFINITIONS(-DYAJL_LEXER_DEBUG)
40 SET (libDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/lib)
41 SET (incDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/include/yajl)
43 # set the output path for libraries
44 SET(LIBRARY_OUTPUT_PATH ${libDir})
46 ADD_LIBRARY(yajl_s STATIC ${SRCS} ${HDRS} ${PUB_HDRS})
48 ADD_LIBRARY(yajl SHARED ${SRCS} ${HDRS} ${PUB_HDRS})
50 #### setup shared library version number
51 SET_TARGET_PROPERTIES(yajl PROPERTIES
52 SOVERSION ${YAJL_MAJOR}
53 VERSION ${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO})
55 #### build up an sdk as a post build step
57 # create some directories
58 FILE(MAKE_DIRECTORY ${libDir})
59 FILE(MAKE_DIRECTORY ${incDir})
61 # copy public headers to output directory
62 FOREACH (header ${PUB_HDRS})
63 SET (header ${CMAKE_CURRENT_SOURCE_DIR}/${header})
65 EXEC_PROGRAM(${CMAKE_COMMAND} ARGS -E copy_if_different ${header} ${incDir})
67 ADD_CUSTOM_COMMAND(TARGET yajl_s POST_BUILD
68 COMMAND ${CMAKE_COMMAND} -E copy_if_different ${header} ${incDir})
69 ENDFOREACH (header ${PUB_HDRS})
71 INCLUDE_DIRECTORIES(${incDir}/..)
74 INSTALL(TARGETS yajl LIBRARY DESTINATION lib)
75 INSTALL(TARGETS yajl_s ARCHIVE DESTINATION lib)
76 INSTALL(DIRECTORY api/ DESTINATION include/yajl
77 FILES_MATCHING PATTERN "*.h")