#
#  Copyright (C) 2015 Google, Inc.
#
#  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.
#

config("default_include_dirs") {
  include_dirs = [
    "//third_party/libhardware/include/",
    "//types/",
  ]
}

config("linux") {
  # TODO(keybuk): AndroidConfig.h or equivalent

  cflags = [
    #TODO(jpawlowski): uncomment once we have no warnings on linux build
    #    "-Wall",
    #    "-Werror",
    "-g",
    "-O0",
    "-fpic",
    "-fdata-sections",
    "-ffunction-sections",
    "-fvisibility=hidden",
  ]

  cflags_c = [ "-std=c99" ]

  cflags_cc = [
#TODO(jpawlowski): we should use same c++ version as Android, which is c++11,
# but we use some c++14 features. Uncomment when this get fixed in code.:
    "-std=c++14",
    "-fno-exceptions",
    "-fpermissive",
  ]

  defines = [
    "_FORTIFY_SOURCE=2",
    "_GNU_SOURCE",
    "HAS_NO_BDROID_BUILDCFG",
    "LOG_NDEBUG=1",
    "EXPORT_SYMBOL=__attribute__((visibility(\"default\")))",
    "KERNEL_MISSING_CLOCK_BOOTTIME_ALARM=TRUE",

    # This is a macro to that can be used by android hardware/libhardware
    # to not include dependencies on core project. This is a temporary
    # workaround until we get rid of dependency on hardware.
    "_HW_DONT_INCLUDE_CORE_=1",

    # This is a macro to that can be used by source code to detect if the
    # current build is done by GN or via Android.mk. This is a temporary
    # workaround until we can remove all Android-specific dependencies.
    "OS_GENERIC",
  ]
}

config("pic") {
  cflags = [ "-fPIC" ]
}

config("gc") {
  ldflags = [ "-Wl,--gc-sections" ]
}
