# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

LOCAL_PATH := $(call my-dir)
wifilogd_cpp_flags := -Wall -Wextra -Weffc++ -Weverything \
    -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded -Werror
wifilogd_gtest_cpp_flags := -Wno-undef -Wno-missing-noreturn \
    -Wno-shift-sign-overflow -Wno-used-but-marked-unused -Wno-deprecated \
    -Wno-weak-vtables -Wno-sign-conversion -Wno-global-constructors \
    -Wno-covered-switch-default
wifilogd_src_files := \
    command_processor.cpp \
    memory_reader.cpp \
    message_buffer.cpp \
    os.cpp \
    raw_os.cpp
wifilogd_test_src_files := \
    tests/byte_buffer_unittest.cpp \
    tests/command_processor_unittest.cpp \
    tests/local_utils_unittest.cpp \
    tests/main.cpp \
    tests/memory_reader_unittest.cpp \
    tests/message_buffer_unittest.cpp \
    tests/mock_os.cpp \
    tests/mock_raw_os.cpp \
    tests/os_unittest.cpp \
    tests/protocol_unittest.cpp

wifilogd_parent_dir := $(LOCAL_PATH)/../
wifilogd_includes := \
    $(wifilogd_parent_dir)

###
### wifilogd static library
###
include $(CLEAR_VARS)
LOCAL_MODULE := libwifilogd
LOCAL_CPPFLAGS := $(wifilogd_cpp_flags)
LOCAL_C_INCLUDES := $(wifilogd_includes)
LOCAL_SRC_FILES := $(wifilogd_src_files)
LOCAL_SHARED_LIBRARIES := \
    libbase \
    liblog
include $(BUILD_STATIC_LIBRARY)

###
### wifilogd unit tests.
###
include $(CLEAR_VARS)
LOCAL_MODULE := wifilogd_unit_test
LOCAL_CPPFLAGS := $(wifilogd_cpp_flags) $(wifilogd_gtest_cpp_flags)
LOCAL_C_INCLUDES := $(wifilogd_includes)
LOCAL_SRC_FILES := $(wifilogd_test_src_files)
LOCAL_STATIC_LIBRARIES := \
    libgmock \
    libgtest \
    libwifilogd
LOCAL_SHARED_LIBRARIES := \
    libbase \
    liblog
include $(BUILD_NATIVE_TEST)

###
### wifilogd host unit tests.
###
include $(CLEAR_VARS)
LOCAL_MODULE := wifilogd_host_unit_test
LOCAL_CPPFLAGS := $(wifilogd_cpp_flags) $(wifilogd_gtest_cpp_flags)
LOCAL_C_INCLUDES := $(wifilogd_includes)
LOCAL_SRC_FILES := $(wifilogd_src_files) $(wifilogd_test_src_files)
LOCAL_STATIC_LIBRARIES := \
    libgmock \
    libgtest
LOCAL_SHARED_LIBRARIES := \
    libbase \
    liblog
LOCAL_LDLIBS := -lrt
include $(BUILD_HOST_NATIVE_TEST)
