# makefile for build libapn.so
#
# SYNOPSIS:
#
#   make [all]  - makes everything.
#   make TARGET - makes the given target.
#   make clean  - removes all files generated by make.

PREFIX      = ../../install
CROSS       = arm-none-linux-
CXX         = $(CROSS)g++
AR          = $(CROSS)ar

LOCAL_MODULE = libapn

LOCAL_SRC_FILES = $(wildcard *.cpp) $(wildcard ../inc/*.h)
LOCAL_OBJ_FILES = $(LOCAL_SRC_FILES:.cpp=.o)

CPPFLAGS += -isystem ../inc/ -I$(ROOT)/usr/include/logger/ -I$(ROOT)/usr/include/libxml2/ -I$(ROOT)/usr/include/

# Flags passed to the C++ compiler.
CXXFLAGS += -g -Wall -Wextra -pthread -DTAGLOG_SUPPORT -Wl,--hash-style=gnu
LOCAL_LIBS += -lpthread -lstdc++ -llog -lxml2 -lsqlite3

.PHONY: build clean install

all : $(LOCAL_MODULE).so

clean :
	$(warning ########## clean $(LOCAL_MODULE) ##########)
	rm -f $(LOCAL_MODULE).so *.o

# Builds test.
%.o: %.cpp
	$(warning ----->build $<)
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC -o $@ -c $<

$(LOCAL_MODULE).so :$(LOCAL_OBJ_FILES)
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LOCAL_LIBS) $^ -shared -fPIC -o $@

install:
	$(warning ########## install $(LOCAL_MODULE) ##########)
	mkdir -p $(ROOT)/$(base_libdir)/
	install $(LOCAL_MODULE).so $(ROOT)/$(base_libdir)/

pack_rootfs:
	$(warning ########## pack_rootfs $(LOCAL_MODULE) ##########)
	mkdir -p $(PACK_INITRAMFS_TO)/$(base_libdir)/
	cp -af $(LOCAL_MODULE).so $(PACK_INITRAMFS_TO)/$(base_libdir)/
	$(CROSS)strip $(PACK_INITRAMFS_TO)/$(base_libdir)/$(LOCAL_MODULE).so
	mkdir -p $(PACK_TO)/$(base_libdir)/
	cp -af $(LOCAL_MODULE).so $(PACK_TO)/$(base_libdir)/
	$(CROSS)strip $(PACK_TO)/$(base_libdir)/$(LOCAL_MODULE).so
