1*387f9dfdSAndroid Build Coastguard Worker# Copyright (c) PLUMgrid, Inc. 2*387f9dfdSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License") 3*387f9dfdSAndroid Build Coastguard Worker 4*387f9dfdSAndroid Build Coastguard Workerinclude_directories(${PROJECT_SOURCE_DIR}/src/cc) 5*387f9dfdSAndroid Build Coastguard Workerinclude_directories(${PROJECT_SOURCE_DIR}/src/cc/api) 6*387f9dfdSAndroid Build Coastguard Workerif (CMAKE_USE_LIBBPF_PACKAGE AND LIBBPF_FOUND) 7*387f9dfdSAndroid Build Coastguard Workerinclude_directories(${PROJECT_SOURCE_DIR}/src/cc/compat) 8*387f9dfdSAndroid Build Coastguard Workerelse() 9*387f9dfdSAndroid Build Coastguard Workerinclude_directories(${PROJECT_SOURCE_DIR}/src/cc/libbpf/include/uapi) 10*387f9dfdSAndroid Build Coastguard Workerendif() 11*387f9dfdSAndroid Build Coastguard Workerinclude_directories(${PROJECT_SOURCE_DIR}/tests/python/include) 12*387f9dfdSAndroid Build Coastguard Workerinclude_directories(${LLVM_INCLUDE_DIRS}) 13*387f9dfdSAndroid Build Coastguard Worker 14*387f9dfdSAndroid Build Coastguard Workeradd_executable(test_static test_static.c) 15*387f9dfdSAndroid Build Coastguard Workerif(NOT CMAKE_USE_LIBBPF_PACKAGE) 16*387f9dfdSAndroid Build Coastguard Worker target_link_libraries(test_static bcc-static) 17*387f9dfdSAndroid Build Coastguard Workerelse() 18*387f9dfdSAndroid Build Coastguard Worker target_link_libraries(test_static bcc-shared) 19*387f9dfdSAndroid Build Coastguard Workerendif() 20*387f9dfdSAndroid Build Coastguard Worker 21*387f9dfdSAndroid Build Coastguard Workeradd_test(NAME c_test_static COMMAND ${TEST_WRAPPER} c_test_static sudo ${CMAKE_CURRENT_BINARY_DIR}/test_static) 22*387f9dfdSAndroid Build Coastguard Workeradd_compile_options(-DCMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}") 23*387f9dfdSAndroid Build Coastguard Worker 24*387f9dfdSAndroid Build Coastguard Workerset(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-result -fPIC") 25*387f9dfdSAndroid Build Coastguard Workerset(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-result -fPIC") 26*387f9dfdSAndroid Build Coastguard Worker 27*387f9dfdSAndroid Build Coastguard Workerif(${LLVM_PACKAGE_VERSION} VERSION_EQUAL 16 OR ${LLVM_PACKAGE_VERSION} VERSION_GREATER 16) 28*387f9dfdSAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 14) 29*387f9dfdSAndroid Build Coastguard Workerendif() 30*387f9dfdSAndroid Build Coastguard Worker 31*387f9dfdSAndroid Build Coastguard Workerif(ENABLE_USDT) 32*387f9dfdSAndroid Build Coastguard Workerset(TEST_LIBBCC_SOURCES 33*387f9dfdSAndroid Build Coastguard Worker test_libbcc.cc 34*387f9dfdSAndroid Build Coastguard Worker test_c_api.cc 35*387f9dfdSAndroid Build Coastguard Worker test_array_table.cc 36*387f9dfdSAndroid Build Coastguard Worker test_bpf_table.cc 37*387f9dfdSAndroid Build Coastguard Worker test_cg_storage.cc 38*387f9dfdSAndroid Build Coastguard Worker test_hash_table.cc 39*387f9dfdSAndroid Build Coastguard Worker test_map_in_map.cc 40*387f9dfdSAndroid Build Coastguard Worker test_perf_event.cc 41*387f9dfdSAndroid Build Coastguard Worker test_pinned_table.cc 42*387f9dfdSAndroid Build Coastguard Worker test_prog_table.cc 43*387f9dfdSAndroid Build Coastguard Worker test_queuestack_table.cc 44*387f9dfdSAndroid Build Coastguard Worker test_shared_table.cc 45*387f9dfdSAndroid Build Coastguard Worker test_sk_storage.cc 46*387f9dfdSAndroid Build Coastguard Worker test_sock_table.cc 47*387f9dfdSAndroid Build Coastguard Worker test_usdt_args.cc 48*387f9dfdSAndroid Build Coastguard Worker test_usdt_probes.cc 49*387f9dfdSAndroid Build Coastguard Worker utils.cc 50*387f9dfdSAndroid Build Coastguard Worker test_parse_tracepoint.cc 51*387f9dfdSAndroid Build Coastguard Worker test_zip.cc) 52*387f9dfdSAndroid Build Coastguard Worker 53*387f9dfdSAndroid Build Coastguard Workerfile(COPY dummy_proc_map.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) 54*387f9dfdSAndroid Build Coastguard Workeradd_library(usdt_test_lib SHARED usdt_test_lib.cc) 55*387f9dfdSAndroid Build Coastguard Workeradd_library(debuginfo_test_lib SHARED debuginfo_test_lib.cc) 56*387f9dfdSAndroid Build Coastguard Worker 57*387f9dfdSAndroid Build Coastguard Workeradd_custom_command(OUTPUT debuginfo.so 58*387f9dfdSAndroid Build Coastguard Worker COMMAND ${CMAKE_OBJCOPY} 59*387f9dfdSAndroid Build Coastguard Worker ARGS --add-symbol debuginfo_only_symbol=.text:0 60*387f9dfdSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/libdebuginfo_test_lib.so 61*387f9dfdSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/debuginfo.so 62*387f9dfdSAndroid Build Coastguard Worker DEPENDS debuginfo_test_lib) 63*387f9dfdSAndroid Build Coastguard Workeradd_custom_target(debuginfo DEPENDS debuginfo.so) 64*387f9dfdSAndroid Build Coastguard Worker 65*387f9dfdSAndroid Build Coastguard Workeradd_custom_command(OUTPUT with_gnu_debuglink.so 66*387f9dfdSAndroid Build Coastguard Worker COMMAND ${CMAKE_OBJCOPY} 67*387f9dfdSAndroid Build Coastguard Worker ARGS --add-gnu-debuglink=debuginfo.so 68*387f9dfdSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/libdebuginfo_test_lib.so 69*387f9dfdSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/with_gnu_debuglink.so 70*387f9dfdSAndroid Build Coastguard Worker DEPENDS debuginfo debuginfo_test_lib) 71*387f9dfdSAndroid Build Coastguard Workeradd_custom_target(with_gnu_debuglink DEPENDS with_gnu_debuglink.so) 72*387f9dfdSAndroid Build Coastguard WorkerSET(DEBUGINFO_TARGETS debuginfo_test_lib debuginfo with_gnu_debuglink) 73*387f9dfdSAndroid Build Coastguard Worker 74*387f9dfdSAndroid Build Coastguard Workerif(LIBLZMA_FOUND) 75*387f9dfdSAndroid Build Coastguard Worker add_custom_command(OUTPUT debuginfo.so.xz 76*387f9dfdSAndroid Build Coastguard Worker COMMAND xz 77*387f9dfdSAndroid Build Coastguard Worker ARGS -k ${CMAKE_CURRENT_BINARY_DIR}/debuginfo.so 78*387f9dfdSAndroid Build Coastguard Worker DEPENDS debuginfo) 79*387f9dfdSAndroid Build Coastguard Worker add_custom_target(debuginfo_xz DEPENDS debuginfo.so.xz) 80*387f9dfdSAndroid Build Coastguard Worker 81*387f9dfdSAndroid Build Coastguard Worker add_custom_command(OUTPUT with_gnu_debugdata.so 82*387f9dfdSAndroid Build Coastguard Worker COMMAND ${CMAKE_OBJCOPY} 83*387f9dfdSAndroid Build Coastguard Worker ARGS --add-section .gnu_debugdata=${CMAKE_CURRENT_BINARY_DIR}/debuginfo.so.xz 84*387f9dfdSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/libdebuginfo_test_lib.so 85*387f9dfdSAndroid Build Coastguard Worker ${CMAKE_CURRENT_BINARY_DIR}/with_gnu_debugdata.so 86*387f9dfdSAndroid Build Coastguard Worker DEPENDS debuginfo_xz debuginfo_test_lib) 87*387f9dfdSAndroid Build Coastguard Worker add_custom_target(with_gnu_debugdata DEPENDS with_gnu_debugdata.so) 88*387f9dfdSAndroid Build Coastguard Worker list(APPEND DEBUGINFO_TARGETS with_gnu_debugdata) 89*387f9dfdSAndroid Build Coastguard Workerendif(LIBLZMA_FOUND) 90*387f9dfdSAndroid Build Coastguard Worker 91*387f9dfdSAndroid Build Coastguard Workeradd_custom_command(OUTPUT archive.zip 92*387f9dfdSAndroid Build Coastguard Worker COMMAND mkdir -p zip_subdir 93*387f9dfdSAndroid Build Coastguard Worker COMMAND echo "This is a text file" > zip_subdir/file.txt 94*387f9dfdSAndroid Build Coastguard Worker COMMAND zip -0 archive.zip libdebuginfo_test_lib.so zip_subdir/file.txt 95*387f9dfdSAndroid Build Coastguard Worker DEPENDS debuginfo_test_lib 96*387f9dfdSAndroid Build Coastguard Worker BYPRODUCTS zip_subdir/file.txt) 97*387f9dfdSAndroid Build Coastguard Workeradd_custom_target(zip_archive DEPENDS archive.zip) 98*387f9dfdSAndroid Build Coastguard Worker 99*387f9dfdSAndroid Build Coastguard Workerif(NOT CMAKE_USE_LIBBPF_PACKAGE) 100*387f9dfdSAndroid Build Coastguard Worker add_executable(test_libbcc ${TEST_LIBBCC_SOURCES}) 101*387f9dfdSAndroid Build Coastguard Worker add_dependencies(test_libbcc bcc-shared zip_archive ${DEBUGINFO_TARGETS}) 102*387f9dfdSAndroid Build Coastguard Worker 103*387f9dfdSAndroid Build Coastguard Worker target_link_libraries(test_libbcc ${PROJECT_BINARY_DIR}/src/cc/libbcc.so dl usdt_test_lib) 104*387f9dfdSAndroid Build Coastguard Worker set_target_properties(test_libbcc PROPERTIES INSTALL_RPATH ${PROJECT_BINARY_DIR}/src/cc) 105*387f9dfdSAndroid Build Coastguard Worker target_compile_definitions(test_libbcc PRIVATE -DLIBBCC_NAME=\"libbcc.so\") 106*387f9dfdSAndroid Build Coastguard Worker 107*387f9dfdSAndroid Build Coastguard Worker add_test(NAME test_libbcc COMMAND ${TEST_WRAPPER} c_test_all sudo ${CMAKE_CURRENT_BINARY_DIR}/test_libbcc) 108*387f9dfdSAndroid Build Coastguard Workerendif() 109*387f9dfdSAndroid Build Coastguard Worker 110*387f9dfdSAndroid Build Coastguard Workerif(LIBBPF_FOUND) 111*387f9dfdSAndroid Build Coastguard Worker add_executable(test_libbcc_no_libbpf ${TEST_LIBBCC_SOURCES}) 112*387f9dfdSAndroid Build Coastguard Worker add_dependencies(test_libbcc_no_libbpf bcc-shared zip_archive ${DEBUGINFO_TARGETS}) 113*387f9dfdSAndroid Build Coastguard Worker 114*387f9dfdSAndroid Build Coastguard Worker target_link_libraries(test_libbcc_no_libbpf ${PROJECT_BINARY_DIR}/src/cc/libbcc.so dl usdt_test_lib ${LIBBPF_LIBRARIES}) 115*387f9dfdSAndroid Build Coastguard Worker set_target_properties(test_libbcc_no_libbpf PROPERTIES INSTALL_RPATH ${PROJECT_BINARY_DIR}/src/cc) 116*387f9dfdSAndroid Build Coastguard Worker target_compile_definitions(test_libbcc_no_libbpf PRIVATE -DLIBBCC_NAME=\"libbcc.so\") 117*387f9dfdSAndroid Build Coastguard Worker 118*387f9dfdSAndroid Build Coastguard Worker add_test(NAME test_libbcc_no_libbpf COMMAND ${TEST_WRAPPER} c_test_all_no_libbpf sudo ${CMAKE_CURRENT_BINARY_DIR}/test_libbcc_no_libbpf) 119*387f9dfdSAndroid Build Coastguard Workerendif() 120*387f9dfdSAndroid Build Coastguard Worker 121*387f9dfdSAndroid Build Coastguard Workerendif(ENABLE_USDT) 122