cmake_minimum_required(VERSION 3.18)
project(binder_sdk CXX)
set(CMAKE_CXX_STANDARD 20)
enable_testing()

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(AddAidlLibrary)
include(AppendCxxFlagsIfSupported)
include(FindThreads)

if (NOT ANDROID_BUILD_TOP)
    set(ANDROID_BUILD_TOP "${CMAKE_CURRENT_SOURCE_DIR}")
endif()

set(binder_sdk_CFLAGS
    -DNDEBUG
    -DBINDER_ENABLE_LIBLOG_ASSERT
    -DBINDER_DISABLE_NATIVE_HANDLE
    -DBINDER_DISABLE_BLOB
    -DBINDER_NO_LIBBASE
    -DBINDER_NO_KERNEL_IPC_TESTING
    -Wno-missing-field-initializers
    -Wno-unknown-pragmas
    -Wno-attributes
    -Wno-psabi
)
append_cxx_flags_if_supported(binder_sdk_CFLAGS
    -Wno-c99-designator
)


add_subdirectory("${ANDROID_BUILD_TOP}/external/boringssl" "external/boringssl/build" EXCLUDE_FROM_ALL)
add_subdirectory("${ANDROID_BUILD_TOP}/external/googletest" "external/googletest/build" EXCLUDE_FROM_ALL)

add_compile_options(${binder_sdk_CFLAGS})
link_libraries(${CMAKE_THREAD_LIBS_INIT})
add_subdirectory(frameworks/native/libs/binder)
add_subdirectory(frameworks/native/libs/binder/liblog_stub)
add_subdirectory(frameworks/native/libs/binder/ndk)
add_subdirectory(frameworks/native/libs/binder/tests)
add_subdirectory(system/core/libutils/binder)
