1*44844408SAndroid Build Coastguard Workerif(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0) 2*44844408SAndroid Build Coastguard Worker # The new Python3 module is much more robust than the previous PythonInterp 3*44844408SAndroid Build Coastguard Worker find_package(Python3 COMPONENTS Interpreter) 4*44844408SAndroid Build Coastguard Worker # Set variables for backwards compatibility with cmake < 3.12.0 5*44844408SAndroid Build Coastguard Worker set(PYTHONINTERP_FOUND ${Python3_Interpreter_FOUND}) 6*44844408SAndroid Build Coastguard Worker set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE}) 7*44844408SAndroid Build Coastguard Workerelse() 8*44844408SAndroid Build Coastguard Worker set(Python_ADDITIONAL_VERSIONS 3.8) 9*44844408SAndroid Build Coastguard Worker find_package(PythonInterp 3) 10*44844408SAndroid Build Coastguard Workerendif() 11*44844408SAndroid Build Coastguard Worker 12*44844408SAndroid Build Coastguard Workeradd_executable(jsontestrunner_exe 13*44844408SAndroid Build Coastguard Worker main.cpp 14*44844408SAndroid Build Coastguard Worker) 15*44844408SAndroid Build Coastguard Worker 16*44844408SAndroid Build Coastguard Workerif(BUILD_SHARED_LIBS) 17*44844408SAndroid Build Coastguard Worker if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0) 18*44844408SAndroid Build Coastguard Worker add_compile_definitions( JSON_DLL ) 19*44844408SAndroid Build Coastguard Worker else() 20*44844408SAndroid Build Coastguard Worker add_definitions(-DJSON_DLL) 21*44844408SAndroid Build Coastguard Worker endif() 22*44844408SAndroid Build Coastguard Worker target_link_libraries(jsontestrunner_exe jsoncpp_lib) 23*44844408SAndroid Build Coastguard Workerelse() 24*44844408SAndroid Build Coastguard Worker target_link_libraries(jsontestrunner_exe jsoncpp_static) 25*44844408SAndroid Build Coastguard Workerendif() 26*44844408SAndroid Build Coastguard Worker 27*44844408SAndroid Build Coastguard Workerset_target_properties(jsontestrunner_exe PROPERTIES OUTPUT_NAME jsontestrunner_exe) 28*44844408SAndroid Build Coastguard Worker 29*44844408SAndroid Build Coastguard Workerif(PYTHONINTERP_FOUND) 30*44844408SAndroid Build Coastguard Worker # Run end to end parser/writer tests 31*44844408SAndroid Build Coastguard Worker set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../test) 32*44844408SAndroid Build Coastguard Worker set(RUNJSONTESTS_PATH ${TEST_DIR}/runjsontests.py) 33*44844408SAndroid Build Coastguard Worker 34*44844408SAndroid Build Coastguard Worker # Run unit tests in post-build 35*44844408SAndroid Build Coastguard Worker # (default cmake workflow hides away the test result into a file, resulting in poor dev workflow?!?) 36*44844408SAndroid Build Coastguard Worker add_custom_target(jsoncpp_readerwriter_tests 37*44844408SAndroid Build Coastguard Worker "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data" 38*44844408SAndroid Build Coastguard Worker DEPENDS jsontestrunner_exe jsoncpp_test 39*44844408SAndroid Build Coastguard Worker ) 40*44844408SAndroid Build Coastguard Worker add_custom_target(jsoncpp_check DEPENDS jsoncpp_readerwriter_tests) 41*44844408SAndroid Build Coastguard Worker 42*44844408SAndroid Build Coastguard Worker ## Create tests for dashboard submission, allows easy review of CI results https://my.cdash.org/index.php?project=jsoncpp 43*44844408SAndroid Build Coastguard Worker add_test(NAME jsoncpp_readerwriter 44*44844408SAndroid Build Coastguard Worker COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data" 45*44844408SAndroid Build Coastguard Worker WORKING_DIRECTORY "${TEST_DIR}/data" 46*44844408SAndroid Build Coastguard Worker ) 47*44844408SAndroid Build Coastguard Worker add_test(NAME jsoncpp_readerwriter_json_checker 48*44844408SAndroid Build Coastguard Worker COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" --with-json-checker $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data" 49*44844408SAndroid Build Coastguard Worker WORKING_DIRECTORY "${TEST_DIR}/data" 50*44844408SAndroid Build Coastguard Worker ) 51*44844408SAndroid Build Coastguard Workerendif() 52