diff --git a/.gitignore b/.gitignore index e4478e0..95acb0c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,10 +2,10 @@ !/bin/data !/bin/encodings !/bin/jsonchecker +/build /doc/html /doc/doxygen_*.db -/thirdparty/lib -/intermediate +*.a # Temporary files created during CMake build CMakeCache.txt @@ -20,4 +20,3 @@ Testing install_manifest.txt Doxyfile DartConfiguration.tcl -/build/* \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index cbc5c0f..54f9d90 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,35 +6,39 @@ compiler: env: matrix: - - CONF=debug ARCH=x86_64 ARCH_FLAGS="" - - CONF=release ARCH=x86_64 ARCH_FLAGS="" - - CONF=debug ARCH=x86 ARCH_FLAGS="-m32" - - CONF=release ARCH=x86 ARCH_FLAGS="-m32" + - CONF=debug ARCH=x86_64 + - CONF=release ARCH=x86_64 + - CONF=debug ARCH=x86 + - CONF=release ARCH=x86 global: + - ARCH_FLAGS_x86='-m32' + - ARCH_FLAGS_x86_64='' - GITHUB_REPO='miloyip/rapidjson' - secure: "HrsaCb+N66EG1HR+LWH1u51SjaJyRwJEDzqJGYMB7LJ/bfqb9mWKF1fLvZGk46W5t7TVaXRDD5KHFx9DPWvKn4gRUVkwTHEy262ah5ORh8M6n/6VVVajeV/AYt2C0sswdkDBDO4Xq+xy5gdw3G8s1A4Inbm73pUh+6vx+7ltBbk=" before_install: + - sudo apt-get update -qq - sudo apt-get install -qq cmake doxygen valgrind - if [ "$ARCH" = "x86" ]; then sudo apt-get install -qq g++-multilib libc6-dbg:i386; fi install: true before_script: +# hack to avoid Valgrind bug (https://bugs.kde.org/show_bug.cgi?id=326469), +# exposed by merging PR#163 (using -march=native) + - sed -i 's/march=native/msse4.2/' CMakeLists.txt - mkdir build - > + eval "ARCH_FLAGS=\${ARCH_FLAGS_${ARCH}}" ; (cd build && cmake -DRAPIDJSON_HAS_STDSTRING=ON -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=$CONF - -DCMAKE_C_FLAGS="$ARCH_FLAGS" ..) -# hack to avoid Valgrind bug (https://bugs.kde.org/show_bug.cgi?id=326469), -# exposed by merging PR#163 (using -march=native) -# - (cd build/gmake && sed -i 's/march=native/msse4.2/' *.make) + -DCMAKE_CXX_FLAGS="$ARCH_FLAGS" ..) script: - cd build - make tests - make examples - - ctest -V + - ctest -V `[ "$CONF" = "release" ] || echo "-E perftest"` - make travis_doc diff --git a/CMakeLists.txt b/CMakeLists.txt index b30625f..4cde7e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,13 @@ if(RAPIDJSON_HAS_STDSTRING) add_definitions(-DRAPIDJSON_HAS_STDSTRING) endif() +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra") +elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -Wall -Wextra") +elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) +endif() #add extra search paths for libraries and includes SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in") @@ -36,9 +43,7 @@ ELSEIF(WIN32) ENDIF() SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake fiels are installed in") - include_directories(${CMAKE_SOURCE_DIR}/include) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${RAPIDJSON_CXX_FLAGS}") if(RAPIDJSON_BUILD_DOC) add_subdirectory(doc) diff --git a/appveyor.yml b/appveyor.yml index 4c3928e..d1a9108 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -25,4 +25,4 @@ build: verbosity: minimal test_script: -- cd Build\VS && ctest --verbose --build-config %CONFIGURATION% +- cd Build\VS && if %CONFIGURATION%==Debug (ctest --verbose -E perftest --build-config %CONFIGURATION%) else (ctest --verbose --build-config %CONFIGURATION%) diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index ae49834..6463212 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -14,6 +14,14 @@ set(EXAMPLES simplewriter tutorial) +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default") +elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wextra -Weffc++ -Wswitch-default") +elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) +endif() + foreach (example ${EXAMPLES}) add_executable(${example} ${example}/${example}.cpp) endforeach() diff --git a/test/unittest/CMakeLists.txt b/test/unittest/CMakeLists.txt index 66cf0c6..5e4a3e9 100644 --- a/test/unittest/CMakeLists.txt +++ b/test/unittest/CMakeLists.txt @@ -1,15 +1,26 @@ set(UNITTEST_SOURCES + bigintegertest.cpp documenttest.cpp encodedstreamtest.cpp encodingstest.cpp filestreamtest.cpp jsoncheckertest.cpp + namespacetest.cpp readertest.cpp + stringbuffertest.cpp + strtodtest.cpp unittest.cpp - unittest.h valuetest.cpp writertest.cpp) +if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Weffc++ -Wswitch-default") +elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Weffc++ -Wswitch-default") +elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + add_definitions(-D_CRT_SECURE_NO_WARNINGS=1) +endif() + add_library(namespacetest STATIC namespacetest.cpp) add_executable(unittest ${UNITTEST_SOURCES})