diff --git a/.circleci/config.yml b/.circleci/config.yml index 300b4af5..10c6f5ce 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -29,6 +29,24 @@ executors: BUILD_FLAGS: -j CTEST_FLAGS: -j4 --output-on-failure + gcc10: + docker: + - image: conanio/gcc10 + environment: + CXX: g++-10 + CC: gcc-10 + BUILD_FLAGS: -j + CTEST_FLAGS: -j4 --output-on-failure + + clang10: + docker: + - image: conanio/clang10 + environment: + CXX: clang++-10 + CC: clang-10 + BUILD_FLAGS: -j + CTEST_FLAGS: -j4 --output-on-failure + clang9: docker: - image: conanio/clang9 @@ -101,62 +119,72 @@ jobs: executor: gcc7 environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON } steps: [ install_cmake, cmake_test_all, cmake_install_test ] + gcc10: + description: Build and run tests on GCC 10 and AVX 2 with a cmake static build + executor: gcc10 + environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON } + steps: [ cmake_test_all, cmake_install_test ] clang6: description: Build and run tests on clang 6 and AVX 2 with a cmake static build executor: clang6 environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON } - steps: [ cmake_test_all, cmake_install_test ] + steps: [ cmake_test, cmake_install_test ] + clang10: + description: Build and run tests on clang 10 and AVX 2 with a cmake static build + executor: clang10 + environment: { CMAKE_FLAGS: -DSIMDJSON_GOOGLE_BENCHMARKS=ON } + steps: [ cmake_test, cmake_install_test ] # libcpp - libcpp-clang9: - description: Build and run tests on clang 6 and AVX 2 with a cmake static build and libc++ - executor: clang9 + libcpp-clang10: + description: Build and run tests on clang 10 and AVX 2 with a cmake static build and libc++ + executor: clang10 environment: { CMAKE_FLAGS: -DSIMDJSON_USE_LIBCPP=ON } steps: [ cmake_test_all, cmake_install_test ] # sanitize - sanitize-gcc9: - description: Build and run tests on GCC 9 and AVX 2 with a cmake sanitize build - executor: gcc9 + sanitize-gcc10: + description: Build and run tests on GCC 10 and AVX 2 with a cmake sanitize build + executor: gcc10 environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF -DSIMDJSON_SANITIZE=ON, BUILD_FLAGS: "", CTEST_FLAGS: -j4 --output-on-failure -E checkperf } - steps: [ cmake_test_all ] - sanitize-clang9: - description: Build and run tests on clang 6 and AVX 2 with a cmake sanitize build - executor: clang9 + steps: [ cmake_test ] + sanitize-clang10: + description: Build and run tests on clang 10 and AVX 2 with a cmake sanitize build + executor: clang10 environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF -DSIMDJSON_SANITIZE=ON, CTEST_FLAGS: -j4 --output-on-failure -E checkperf } - steps: [ cmake_test_all ] + steps: [ cmake_test ] # dynamic - dynamic-gcc9: - description: Build and run tests on GCC 7 and AVX 2 with a cmake dynamic build - executor: gcc9 + dynamic-gcc10: + description: Build and run tests on GCC 10 and AVX 2 with a cmake dynamic build + executor: gcc10 environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF } steps: [ cmake_test, cmake_install_test ] - dynamic-clang9: - description: Build and run tests on clang 6 and AVX 2 with a cmake dynamic build - executor: clang9 + dynamic-clang10: + description: Build and run tests on clang 10 and AVX 2 with a cmake dynamic build + executor: clang10 environment: { CMAKE_FLAGS: -DSIMDJSON_BUILD_STATIC=OFF } steps: [ cmake_test, cmake_install_test ] # unthreaded - unthreaded-gcc9: - description: Build and run tests on GCC 7 and AVX 2 *without* threads - executor: gcc9 + unthreaded-gcc10: + description: Build and run tests on GCC 10 and AVX 2 *without* threads + executor: gcc10 environment: { CMAKE_FLAGS: -DSIMDJSON_ENABLE_THREADS=OFF } steps: [ cmake_test, cmake_install_test ] - unthreaded-clang9: - description: Build and run tests on Clang 6 and AVX 2 *without* threads - executor: clang9 + unthreaded-clang10: + description: Build and run tests on Clang 10 and AVX 2 *without* threads + executor: clang10 environment: { CMAKE_FLAGS: -DSIMDJSON_ENABLE_THREADS=OFF } steps: [ cmake_test, cmake_install_test ] # noexcept - noexcept-gcc9: - description: Build and run tests on GCC 7 and AVX 2 with exceptions off - executor: gcc9 + noexcept-gcc10: + description: Build and run tests on GCC 10 and AVX 2 with exceptions off + executor: gcc10 environment: { CMAKE_FLAGS: -DSIMDJSON_EXCEPTIONS=OFF } steps: [ cmake_test, cmake_install_test ] - noexcept-clang9: - description: Build and run tests on GCC 7 and AVX 2 with exceptions off - executor: clang9 + noexcept-clang10: + description: Build and run tests on Clang 10 and AVX 2 with exceptions off + executor: clang10 environment: { CMAKE_FLAGS: -DSIMDJSON_EXCEPTIONS=OFF } steps: [ cmake_test, cmake_install_test ] @@ -165,19 +193,19 @@ jobs: # # make (test and checkperf) - arch-haswell-gcc9: + arch-haswell-gcc10: description: Build, run tests and check performance on GCC 7 with -march=haswell - executor: gcc9 + executor: gcc10 environment: { CXXFLAGS: -march=haswell } steps: [ cmake_test ] - arch-nehalem-gcc9: + arch-nehalem-gcc10: description: Build, run tests and check performance on GCC 7 with -march=nehalem - executor: gcc9 + executor: gcc10 environment: { CXXFLAGS: -march=nehalem } steps: [ cmake_test ] - no-computed-goto-gcc9: + no-computed-goto-gcc10: description: Build, run tests and check performance on GCC 7 with -DSIMDJSON_NO_COMPUTED_GOTO=true - executor: gcc9 + executor: gcc10 environment: { CXXFLAGS: -DSIMDJSON_NO_COMPUTED_GOTO=true } steps: [ cmake_test ] @@ -187,23 +215,29 @@ workflows: jobs: # full multi-implementation tests - gcc7 + #- gcc10 # this gets tested a lot below - clang6 + #- clang10 # this gets tested a lot below # libc++ - # - libcpp-clang9 # disabled due to too many errors + - libcpp-clang10 # full single-implementation tests - - sanitize-gcc9 - - sanitize-clang9 - - dynamic-gcc9 - - dynamic-clang9 - - unthreaded-gcc9 - - unthreaded-clang9 + - sanitize-gcc10 + - sanitize-clang10 + - dynamic-gcc10 + - dynamic-clang10 + - unthreaded-gcc10 + - unthreaded-clang10 + + # no exceptions + - noexcept-gcc10 + - noexcept-clang10 # quicker make single-implementation tests - - arch-haswell-gcc9 - - arch-nehalem-gcc9 - - no-computed-goto-gcc9 + - arch-haswell-gcc10 + - arch-nehalem-gcc10 + - no-computed-goto-gcc10 # TODO add windows: https://circleci.com/docs/2.0/configuration-reference/#windows diff --git a/.drone.yml b/.drone.yml index d10b6289..f79f9af8 100644 --- a/.drone.yml +++ b/.drone.yml @@ -144,7 +144,7 @@ steps: CC: gcc CXX: g++ BUILD_FLAGS: -- -j - CTEST_FLAGS: -j4 --output-on-failure + CTEST_FLAGS: -j4 --output-on-failure -E checkperf commands: - apt-get update -qq - apt-get install -y cmake diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index efdb4fbb..e66612aa 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -58,7 +58,7 @@ add_cpp_test(jsoncheck LABELS acceptance per_implementation) add_cpp_test(parse_many_test LABELS acceptance per_implementation) add_cpp_test(pointercheck LABELS acceptance per_implementation) add_cpp_test(extracting_values_example LABELS acceptance per_implementation) -find_program(BASH bash) +find_program(BASH bash) # Script tests @@ -77,7 +77,8 @@ if (BASH AND (NOT MSVC)) # The scripts are not robust enough to run under Window # # Competition parse test # - if (SIMDJSON_COMPETITION) + if ((SIMDJSON_COMPETITION) AND (!SIMDJSON_SANITIZE)) + # It looks like RapidJSON does not pass the sanitizer under some conditions (Clang 10) add_executable(allparserscheckfile allparserscheckfile.cpp) target_link_libraries(allparserscheckfile competition-all)