xref: /aosp_15_r20/external/jsoncpp/src/jsontestrunner/CMakeLists.txt (revision 4484440890e2bc6e07362b4feaf15601abfe0071)
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