#
# Copyright (C) 2015 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 := $(my-dir)

microhttpdIncludes := \
    $(LOCAL_PATH)/$(LOCAL_PATH)/src/microhttpd/basicauth.h \
    $(LOCAL_PATH)/src/microhttpd/connection.h \
    $(LOCAL_PATH)/src/microhttpd/connection_https.h \
    $(LOCAL_PATH)/src/microhttpd/digestauth.h \
    $(LOCAL_PATH)/src/microhttpd/gen_auth.h \
    $(LOCAL_PATH)/src/microhttpd/internal.h \
    $(LOCAL_PATH)/src/microhttpd/md5_ext.h \
    $(LOCAL_PATH)/src/microhttpd/md5.h \
    $(LOCAL_PATH)/src/microhttpd/memorypool.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_align.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_assert.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_bithelpers.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_byteorder.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_compat.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_itc.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_itc_types.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_limits.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_locks.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_md5_wrap.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_mono_clock.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_panic.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_send.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_sha256_wrap.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_sockets.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_str.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_str_types.h \
    $(LOCAL_PATH)/src/microhttpd/mhd_threads.h \
    $(LOCAL_PATH)/src/microhttpd/postprocessor.h \
    $(LOCAL_PATH)/src/microhttpd/response.h \
    $(LOCAL_PATH)/src/microhttpd/sha1.h \
    $(LOCAL_PATH)/src/microhttpd/sha256_ext.h \
    $(LOCAL_PATH)/src/microhttpd/sha256.h \
    $(LOCAL_PATH)/src/microhttpd/sha512_256.h \
    $(LOCAL_PATH)/src/microhttpd/sysfdsetsize.h \
    $(LOCAL_PATH)/src/microhttpd/test_helpers.h \
    $(LOCAL_PATH)/src/microhttpd/tsearch.h

# libmicrohttpd shared library
# ========================================================
include $(CLEAR_VARS)
LOCAL_MODULE := libmicrohttpd
LOCAL_CFLAGS := -Wno-sign-compare -Wno-unused-parameter
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/src/include

LOCAL_C_INCLUDES := \
    $(LOCAL_PATH)/src/include \
    $(LOCAL_PATH)/src/lib \
    $(LOCAL_PATH)/src/microhttpd \
    $(microhttpdIncludes) \
    external/boringssl/include

LOCAL_SRC_FILES := \
    src/microhttpd/basicauth.c \
    src/microhttpd/connection.c \
    src/microhttpd/daemon.c \
    src/microhttpd/digestauth.c \
    src/microhttpd/gen_auth.c \
    src/microhttpd/internal.c \
    src/microhttpd/md5.c \
    src/microhttpd/memorypool.c \
    src/microhttpd/mhd_compat.c \
    src/microhttpd/mhd_itc.c \
    src/microhttpd/mhd_mono_clock.c \
    src/microhttpd/mhd_panic.c \
    src/microhttpd/mhd_send.c \
    src/microhttpd/mhd_sockets.c \
    src/microhttpd/mhd_str.c \
    src/microhttpd/mhd_threads.c \
    src/microhttpd/postprocessor.c \
    src/microhttpd/reason_phrase.c \
    src/microhttpd/response.c \
    src/microhttpd/sha1.c \
    src/microhttpd/sha256.c \
    src/microhttpd/sha512_256.c \
    src/microhttpd/sysfdsetsize.c \
    src/microhttpd/tsearch.c

LOCAL_SHARED_LIBRARIES := libssl libcrypto

include $(BUILD_SHARED_LIBRARY)
