# Copyright (C) 2008 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.
#

# called multiple times to clear variables used to define a given 'module'
#
LOCAL_BITS :=
LOCAL_CC :=
LOCAL_CXX :=
LOCAL_C_INCLUDES :=
LOCAL_ADDITIONAL_DEPENDENCIES :=
LOCAL_AR :=
LOCAL_CFLAGS :=
LOCAL_CXXFLAGS :=
LOCAL_HOST_BUILD :=
LOCAL_IGNORE_BITNESS :=
LOCAL_INSTALL := true
LOCAL_INSTALL_DIR :=
LOCAL_LD :=
LOCAL_LDFLAGS :=
LOCAL_LDLIBS :=
LOCAL_SRC_FILES :=
LOCAL_MODULE :=
LOCAL_MODULE_PATH:=
LOCAL_SHARED_LIBRARIES :=
LOCAL_QT_MOC_SRC_FILES :=
LOCAL_QT_RESOURCES :=
LOCAL_QT_UI_SRC_FILES :=
LOCAL_PROTO_SOURCES :=
LOCAL_STATIC_LIBRARIES :=
LOCAL_WHOLE_STATIC_LIBRARIES :=
LOCAL_SYMBOL_FILE :=
LOCAL_BUILT_MODULE :=
LOCAL_PREBUILT_OBJ_FILES :=
LOCAL_GENERATED_SOURCES :=

LOCAL_CPP_EXTENSION := .cpp
