Skip to content

Commit

Permalink
buildable under Ubuntu 12.04
Browse files Browse the repository at this point in the history
  • Loading branch information
ony committed Feb 26, 2014
1 parent c070958 commit 8a401c0
Show file tree
Hide file tree
Showing 5 changed files with 196 additions and 17 deletions.
5 changes: 4 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
cmake_minimum_required(VERSION 2.8.8)
cmake_minimum_required(VERSION 2.8.7)
project(pjson)

# additional modules and their overrides (i.e FindGTest)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})

set(ENABLE_TRACES FALSE CACHE BOOL "Trace to stderr all parsing steps")

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wno-unused-function")
Expand Down
186 changes: 186 additions & 0 deletions cmake_modules/FindGTest.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
# imported from cmake 2.8.12.2 sources
# address both issue #14151 and #14775
#
# Locate the Google C++ Testing Framework.
#
# Defines the following variables:
#
# GTEST_FOUND - Found the Google Testing framework
# GTEST_INCLUDE_DIRS - Include directories
#
# Also defines the library variables below as normal
# variables. These contain debug/optimized keywords when
# a debugging library is found.
#
# GTEST_BOTH_LIBRARIES - Both libgtest & libgtest-main
# GTEST_LIBRARIES - libgtest
# GTEST_MAIN_LIBRARIES - libgtest-main
#
# Accepts the following variables as input:
#
# GTEST_ROOT - (as a CMake or environment variable)
# The root directory of the gtest install prefix
#
# GTEST_MSVC_SEARCH - If compiling with MSVC, this variable can be set to
# "MD" or "MT" to enable searching a GTest build tree
# (defaults: "MD")
#
#-----------------------
# Example Usage:
#
# enable_testing()
# find_package(GTest REQUIRED)
# include_directories(${GTEST_INCLUDE_DIRS})
#
# add_executable(foo foo.cc)
# target_link_libraries(foo ${GTEST_BOTH_LIBRARIES})
#
# add_test(AllTestsInFoo foo)
#
#-----------------------
#
# If you would like each Google test to show up in CTest as
# a test you may use the following macro.
# NOTE: It will slow down your tests by running an executable
# for each test and test fixture. You will also have to rerun
# CMake after adding or removing tests or test fixtures.
#
# GTEST_ADD_TESTS(executable extra_args ARGN)
# executable = The path to the test executable
# extra_args = Pass a list of extra arguments to be passed to
# executable enclosed in quotes (or "" for none)
# ARGN = A list of source files to search for tests & test
# fixtures. Or AUTO to find them from executable target.
#
# Example:
# set(FooTestArgs --foo 1 --bar 2)
# add_executable(FooTest FooUnitTest.cc)
# GTEST_ADD_TESTS(FooTest "${FooTestArgs}" AUTO)

#=============================================================================
# Copyright 2009 Kitware, Inc.
# Copyright 2009 Philip Lowman <[email protected]>
# Copyright 2009 Daniel Blezek <[email protected]>
# Copyright 2014 Nikolay Orliuk <[email protected]> (AUTO in GTEST_ADD_TESTS)
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
#
# Thanks to Daniel Blezek <[email protected]> for the GTEST_ADD_TESTS code

function(GTEST_ADD_TESTS executable extra_args)
if(NOT ARGN)
message(FATAL_ERROR "Missing ARGN: Read the documentation for GTEST_ADD_TESTS")
endif()
if(ARGN STREQUAL "AUTO")
get_target_property(ARGN ${executable} SOURCES)
endif()
foreach(source ${ARGN})
file(READ "${source}" contents)
string(REGEX MATCHALL "TEST_?F?\\(([A-Za-z_0-9 ,]+)\\)" found_tests ${contents})
foreach(hit ${found_tests})
string(REGEX REPLACE ".*\\( *([A-Za-z_0-9]+), *([A-Za-z_0-9]+) *\\).*" "\\1.\\2" test_name ${hit})
add_test(${test_name} ${executable} --gtest_filter=${test_name} ${extra_args})
endforeach()
endforeach()
endfunction()

function(_gtest_append_debugs _endvar _library)
if(${_library} AND ${_library}_DEBUG)
set(_output optimized ${${_library}} debug ${${_library}_DEBUG})
else()
set(_output ${${_library}})
endif()
set(${_endvar} ${_output} PARENT_SCOPE)
endfunction()

function(_gtest_find_library _name)
find_library(${_name}
NAMES ${ARGN}
HINTS
ENV GTEST_ROOT
${GTEST_ROOT}
PATH_SUFFIXES ${_gtest_libpath_suffixes}
)
mark_as_advanced(${_name})
endfunction()

#

if(NOT DEFINED GTEST_MSVC_SEARCH)
set(GTEST_MSVC_SEARCH MD)
endif()

set(_gtest_libpath_suffixes lib)
if(MSVC)
if(GTEST_MSVC_SEARCH STREQUAL "MD")
list(APPEND _gtest_libpath_suffixes
msvc/gtest-md/Debug
msvc/gtest-md/Release)
elseif(GTEST_MSVC_SEARCH STREQUAL "MT")
list(APPEND _gtest_libpath_suffixes
msvc/gtest/Debug
msvc/gtest/Release)
endif()
endif()


find_path(GTEST_INCLUDE_DIR gtest/gtest.h
HINTS
$ENV{GTEST_ROOT}/include
${GTEST_ROOT}/include
)
mark_as_advanced(GTEST_INCLUDE_DIR)

if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD")
# The provided /MD project files for Google Test add -md suffixes to the
# library names.
_gtest_find_library(GTEST_LIBRARY gtest-md gtest)
_gtest_find_library(GTEST_LIBRARY_DEBUG gtest-mdd gtestd)
_gtest_find_library(GTEST_MAIN_LIBRARY gtest_main-md gtest_main)
_gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_main-mdd gtest_maind)
else()
# some *nix distributions provides sources (ex. Ubuntu)
if (NOT GTEST_SOURCE)
find_path(GTEST_SOURCE
src/gtest_main.cc
PATHS /usr/src/gtest
DOC "Source code for GTest"
ONLY_CMAKE_FIND_ROOT_PATH)
if(GTEST_SOURCE STREQUAL GTEST_SOURCE-NOTFOUND)
# fallback to libraries
_gtest_find_library(GTEST_LIBRARY gtest)
_gtest_find_library(GTEST_LIBRARY_DEBUG gtestd)
_gtest_find_library(GTEST_MAIN_LIBRARY gtest_main)
_gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind)
else()
message(STATUS "Found GTest sources: ${GTEST_SOURCE}")
add_subdirectory(${GTEST_SOURCE} ${CMAKE_BINARY_DIR}/imported-gtest EXCLUDE_FROM_ALL)
set(GTEST_LIBRARY gtest CACHE INTERNAL "GTest library")
set(GTEST_MAIN_LIBRARY gtest_main CACHE INTERNAL "GTest library for main()")
mark_as_advanced(GTEST_LIBRARY)
mark_as_advanced(GTEST_MAIN_LIBRARY)
endif()
endif()
if(NOT GTEST_SOURCE STREQUAL GTEST_SOURCE-NOTFOUND)
link_directories(${CMAKE_BINARY_DIR}/imported-gtest)
endif()
endif()

include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTest DEFAULT_MSG GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)

if(GTEST_FOUND)
set(GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR})
_gtest_append_debugs(GTEST_LIBRARIES GTEST_LIBRARY)
_gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY)
set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})
endif()

4 changes: 2 additions & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++0x")

set(TESTS
simple
Expand All @@ -15,7 +15,7 @@ foreach(TEST ${TESTS})
message(STATUS "Test ${TEST}")
add_executable(${TEST} ${TEST}.cpp)
target_link_libraries(${TEST} pthread pjson ${GTEST_BOTH_LIBRARIES})
add_test(${TEST} ${TEST})
GTEST_ADD_TESTS(${TEST} "" AUTO)
endforeach()
add_dependencies(check ${TESTS})

2 changes: 1 addition & 1 deletion test_perfomance/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ endif()
include_directories(${GTEST_INCLUDE_DIRS})
include_directories(../test)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++0x")

set(JSON_BIG_SAMPLE "https://raw.github.com/openwebos/luna-init/d8a5419f570726971ca4456493159cf248508b40/files/conf/locale.txt")
set(JSON_BIG_SAMPLE_FILE "${CMAKE_CURRENT_BINARY_DIR}/big_sample.json")
Expand Down
16 changes: 3 additions & 13 deletions test_perfomance/performance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,19 +144,9 @@ namespace {

TEST(performance, measure_locale_yajl)
{
yajl_callbacks dummy_callbacks = {
.yajl_null = cb_kwd,
.yajl_boolean = cb_bool,
/* hmm.. non-trivial?...
.yajl_start_map = cb_kwd,
.yajl_end_map = cb_kwd,
.yajl_start_array = cb_kwd,
.yajl_end_array = cb_kwd,
.yajl_number = cb_str,
.yajl_map_key = cb_ustr,
.yajl_string = cb_ustr,
*/
};
yajl_callbacks dummy_callbacks {};
dummy_callbacks.yajl_null = cb_kwd,
dummy_callbacks.yajl_boolean = cb_bool,
dummy_callbacks.yajl_start_map = cb_kwd,
dummy_callbacks.yajl_end_map = cb_kwd,
dummy_callbacks.yajl_start_array = cb_kwd,
Expand Down

0 comments on commit 8a401c0

Please sign in to comment.