# 
 | 
# objects 
 | 
# 
 | 
ifneq ($(LOCAL_SRC_DIRS),) 
 | 
    LOCAL_SRC_FILES += $(shell find $(LOCAL_SRC_DIRS) -name "*.c" -or -name "*.cpp" -or -name "*.cc") 
 | 
endif 
 | 
ifneq ($(LOCAL_SRC_DIRS_EXCLUDE),) 
 | 
    LOCAL_SRC_FILES_EXCLUDE += $(shell find $(LOCAL_SRC_DIRS_EXCLUDE) -name "*.c" -or -name "*.cpp" -or -name "*.cc") 
 | 
endif 
 | 
  
 | 
LOCAL_SRC_FILES  := $(filter-out $(LOCAL_SRC_FILES_EXCLUDE), $(LOCAL_SRC_FILES)) 
 | 
  
 | 
OBJECTS = $(subst .c,.o,$(subst .cpp,.o,$(subst .cc,.o,$(LOCAL_SRC_FILES)))) 
 | 
  
 | 
# 
 | 
# building targets 
 | 
# 
 | 
EXECUTABLE = $(LOCAL_MODULE) 
 | 
SHARED_LIBRARY  = lib$(LOCAL_MODULE).so 
 | 
STATIC_LIBRARY  = lib$(LOCAL_MODULE).a 
 | 
PACKAGE  = $(LOCAL_MODULE)-$(TARGET_PLATFORM)-$(VERSION)-$(TIMESTAMP).tar.gz 
 | 
  
 | 
  
 | 
# 
 | 
# explict rules 
 | 
# 
 | 
%.o : %.c 
 | 
    $(CC) $(LOCAL_CFLAGS) $(CFLAGS) -c $< -o $@ 
 | 
  
 | 
%.o : %.cc 
 | 
    $(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) -c $< -o $@ 
 | 
  
 | 
%.o : %.cpp 
 | 
    $(CXX) $(LOCAL_CXXFLAGS) $(CXXFLAGS) -c $< -o $@ 
 | 
  
 | 
  
 | 
# 
 | 
# goal: all 
 | 
# 
 | 
all: $(ALL) 
 | 
  
 | 
$(EXECUTABLE) : $(OBJECTS) 
 | 
    $(CXX) $^ $(LDFLAGS) $(LOCAL_LDFLAGS) -o $@ 
 | 
  
 | 
$(STATIC_LIBRARY) : $(OBJECTS) 
 | 
    $(AR) crv $@ $^ 
 | 
  
 | 
$(SHARED_LIBRARY) : $(OBJECTS) 
 | 
    $(CXX) $^ $(LDFLAGS) $(LOCAL_LDFLAGS) -o $@ 
 | 
    $(STRIP) --strip-unneeded $@ 
 | 
  
 | 
  
 | 
# 
 | 
# goal: clean 
 | 
# 
 | 
clean: 
 | 
    rm -rf $(EXECUTABLE) $(STATIC_LIBRARY) $(SHARED_LIBRARY) $(PACKAGE) $(OBJECTS) 
 | 
  
 | 
  
 | 
# 
 | 
# goal: package 
 | 
# 
 | 
ifeq ($(findstring package,$(MAKECMDGOALS)),package) 
 | 
    ifeq ($(VERSION),) 
 | 
        $(error require argument 'VERSION' for 'package' goal) 
 | 
    endif 
 | 
    ifeq ($(PACKAGE_RESOURCES),) 
 | 
    endif 
 | 
endif 
 | 
  
 | 
PACKAGE_TEMP_DIR = $(PACKAGE:.tar.gz=) 
 | 
package: $(PACKAGE) 
 | 
$(PACKAGE): $(ALL) 
 | 
    @[ -e $(PACKAGE_TEMP_DIR) ] && echo "$(PACKAGE_TEMP_DIR) already exist, please delete it manually" && exit;\ 
 | 
    rm -rf $(PACKAGE_TEMP_DIR);\ 
 | 
    rm -rf $@; 
 | 
    mkdir -p $(PACKAGE_TEMP_DIR); 
 | 
    cp -rf -L $(ALL) $(LOCAL_PACKAGE_RESOURCES) $(PACKAGE_TEMP_DIR); 
 | 
    tar --exclude .svn -h -czf $@ $(PACKAGE_TEMP_DIR); 
 | 
    rm -rf $(PACKAGE_TEMP_DIR); 
 |