diff --git a/BUILDING b/BUILDING index 8460ed4b..e3bcdacf 100644 --- a/BUILDING +++ b/BUILDING @@ -4,8 +4,7 @@ Short story (If you already have ruby and cmake): When things go wrong: -attain CMake (http://www.cmake.org) and ruby (http://ruby-lang.org) and -try again. +attain CMake (http://www.cmake.org) and try again. OR, attain CMake and build by hand: diff --git a/CMakeLists.txt b/CMakeLists.txt index 471eee13..2c8b10a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,81 +1,81 @@ -# Copyright (c) 2007-2014, Lloyd Hilaiel -# -# 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(YetAnotherJSONParser C) - -SET (YAJL_MAJOR 2) -SET (YAJL_MINOR 1) -SET (YAJL_MICRO 1) - -SET (YAJL_DIST_NAME "yajl-${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO}") - -IF (NOT CMAKE_BUILD_TYPE) - SET(CMAKE_BUILD_TYPE "Release") -ENDIF (NOT CMAKE_BUILD_TYPE) - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - -IF (WIN32) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") - ADD_DEFINITIONS(-DWIN32) - SET(linkFlags "/PDB:NONE /INCREMENTAL:NO /OPT:NOREF /OPT:NOICF") - SET(CMAKE_EXE_LINKER_FLAGS "${linkFlags}" - CACHE STRING "YAJL linker flags" FORCE) - SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "" - CACHE STRING "YAJL debug linker flags" FORCE) - SET(CMAKE_EXE_LINKER_FLAGS_RELEASE - CACHE STRING "YAJL release linker flags" FORCE) - SET(CMAKE_SHARED_LINKER_FLAGS "${linkFlags}" - CACHE STRING "YAJL shared linker flags" FORCE) - SET(CMAKE_MODULE_LINKER_FLAGS "${linkFlags}" - CACHE STRING "YAJL module linker flags" FORCE) - - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4255 /wd4130 /wd4100 /wd4711") - SET(CMAKE_C_FLAGS_DEBUG "/D DEBUG /Od /Z7") - SET(CMAKE_C_FLAGS_RELEASE "/D NDEBUG /O2") -ELSE (WIN32) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") - IF(CMAKE_COMPILER_IS_GNUCC) - INCLUDE(CheckCCompilerFlag) - 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) - ENDIF(CMAKE_COMPILER_IS_GNUCC) - SET(CMAKE_C_FLAGS - "${CMAKE_C_FLAGS} -std=c99 -pedantic -Wpointer-arith -Wno-format-y2k -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -Wextra -Wundef -Wwrite-strings -Wold-style-definition -Wredundant-decls -Wno-unused-parameter -Wno-sign-compare -Wmissing-prototypes") - - SET(CMAKE_C_FLAGS_DEBUG "-DDEBUG -g") - SET(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -Wuninitialized") -ENDIF (WIN32) - - -ADD_SUBDIRECTORY(src) -ADD_SUBDIRECTORY(test) -ADD_SUBDIRECTORY(reformatter) -ADD_SUBDIRECTORY(verify) -ADD_SUBDIRECTORY(example) -ADD_SUBDIRECTORY(perf) - -INCLUDE(YAJLDoc.cmake) - -# a test target -ADD_CUSTOM_TARGET(test - ./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) +# Copyright (c) 2007-2014, Lloyd Hilaiel +# +# 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(YetAnotherJSONParser C) + +SET (YAJL_MAJOR 2) +SET (YAJL_MINOR 1) +SET (YAJL_MICRO 1) + +SET (YAJL_DIST_NAME "yajl-${YAJL_MAJOR}.${YAJL_MINOR}.${YAJL_MICRO}") + +IF (NOT CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE "Release") +ENDIF (NOT CMAKE_BUILD_TYPE) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + +IF (WIN32) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") + ADD_DEFINITIONS(-DWIN32) + SET(linkFlags "/PDB:NONE /INCREMENTAL:NO /OPT:NOREF /OPT:NOICF") + SET(CMAKE_EXE_LINKER_FLAGS "${linkFlags}" + CACHE STRING "YAJL linker flags" FORCE) + SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "" + CACHE STRING "YAJL debug linker flags" FORCE) + SET(CMAKE_EXE_LINKER_FLAGS_RELEASE + CACHE STRING "YAJL release linker flags" FORCE) + SET(CMAKE_SHARED_LINKER_FLAGS "${linkFlags}" + CACHE STRING "YAJL shared linker flags" FORCE) + SET(CMAKE_MODULE_LINKER_FLAGS "${linkFlags}" + CACHE STRING "YAJL module linker flags" FORCE) + + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996 /wd4255 /wd4130 /wd4100 /wd4711") + SET(CMAKE_C_FLAGS_DEBUG "/D DEBUG /Od /Z7") + SET(CMAKE_C_FLAGS_RELEASE "/D NDEBUG /O2") +ELSE (WIN32) + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") + IF(CMAKE_COMPILER_IS_GNUCC) + INCLUDE(CheckCCompilerFlag) + 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) + ENDIF(CMAKE_COMPILER_IS_GNUCC) + SET(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} -std=c99 -pedantic -Wpointer-arith -Wno-format-y2k -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -Wextra -Wundef -Wwrite-strings -Wold-style-definition -Wredundant-decls -Wno-unused-parameter -Wno-sign-compare -Wmissing-prototypes") + + SET(CMAKE_C_FLAGS_DEBUG "-DDEBUG -g") + SET(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -Wuninitialized") +ENDIF (WIN32) + + +ADD_SUBDIRECTORY(src) +ADD_SUBDIRECTORY(test) +ADD_SUBDIRECTORY(reformatter) +ADD_SUBDIRECTORY(verify) +ADD_SUBDIRECTORY(example) +ADD_SUBDIRECTORY(perf) + +INCLUDE(YAJLDoc.cmake) + +# a test target +ADD_CUSTOM_TARGET(test + ./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) diff --git a/reformatter/CMakeLists.txt b/reformatter/CMakeLists.txt index 52a9bee8..e16e062a 100644 --- a/reformatter/CMakeLists.txt +++ b/reformatter/CMakeLists.txt @@ -15,9 +15,6 @@ # set up a paths SET (binDir ${CMAKE_CURRENT_BINARY_DIR}/../${YAJL_DIST_NAME}/bin) -# create a directories -FILE(MAKE_DIRECTORY ${binDir}) - SET (SRCS json_reformat.c) # use the library we build, duh. @@ -35,9 +32,7 @@ IF (NOT WIN32) ENDIF (NOT WIN32) # copy the binary into the output directory -GET_TARGET_PROPERTY(binPath json_reformat LOCATION) - -ADD_CUSTOM_COMMAND(TARGET json_reformat POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${binPath} ${binDir}) - +SET_TARGET_PROPERTIES(json_reformat PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${binDir}) + INSTALL(TARGETS json_reformat RUNTIME DESTINATION bin) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c05a7368..4ba7674e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,8 +66,9 @@ CONFIGURE_FILE(yajl.pc.cmake ${shareDir}/yajl.pc) # copy public headers to output directory FOREACH (header ${PUB_HDRS}) SET (header ${CMAKE_CURRENT_SOURCE_DIR}/${header}) + GET_FILENAME_COMPONENT(headerName ${header} NAME) - EXEC_PROGRAM(${CMAKE_COMMAND} ARGS -E copy_if_different ${header} ${incDir}) + CONFIGURE_FILE(${header} ${incDir}/${headerName} COPYONLY) ADD_CUSTOM_COMMAND(TARGET yajl_s POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${header} ${incDir}) diff --git a/verify/CMakeLists.txt b/verify/CMakeLists.txt index 967fca16..1dd42cff 100644 --- a/verify/CMakeLists.txt +++ b/verify/CMakeLists.txt @@ -29,9 +29,7 @@ ADD_EXECUTABLE(json_verify ${SRCS}) TARGET_LINK_LIBRARIES(json_verify yajl_s) # copy in the binary -GET_TARGET_PROPERTY(binPath json_verify LOCATION) - -ADD_CUSTOM_COMMAND(TARGET json_verify POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${binPath} ${binDir}) +SET_TARGET_PROPERTIES(json_verify PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${binDir}) INSTALL(TARGETS json_verify RUNTIME DESTINATION bin)