libdvr: Remove build result from git folder to build result folder [1/1]

PD#SWPL-150399

Problem:
Intermediate files are generated under SOURCE directory.

Solution:
Generate those files under BUILD directory.

Verify:
Tested pass on ohm

Change-Id: I0ac3dedf48df818696a4ca07a5334051e4435a6c
Signed-off-by: Wentao.MA <wentao.ma@amlogic.com>
diff --git a/Makefile b/Makefile
index f7fb79f..4f3d227 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,7 @@
 
 CFLAGS  := -Wall -O2 -fPIC -Iinclude
 LDFLAGS := -L$(TARGET_DIR)/usr/lib -lmediahal_tsplayer -laudio_client -llog -lpthread -ldl
+OUT_DIR ?= .
 
 LIBAMDVR_SRCS := \
 	src/dvb_dmx_wrapper.c\
@@ -20,15 +21,15 @@
 	src/am_crypt.c\
 	src/dvr_mutex.c
 
-LIBAMDVR_OBJS := $(patsubst %.c,%.o,$(LIBAMDVR_SRCS))
+LIBAMDVR_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(LIBAMDVR_SRCS))
 
 AM_FEND_TEST_SRCS := \
 	test/am_fend_test/am_fend_test.c
-AM_FEND_TEST_OBJS := $(patsubst %.c,%.o,$(AM_FEND_TEST_SRCS))
+AM_FEND_TEST_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(AM_FEND_TEST_SRCS))
 
 AM_DMX_TEST_SRCS := \
 	test/am_dmx_test/am_dmx_test.c
-AM_DMX_TEST_OBJS := $(patsubst %.c,%.o,$(AM_DMX_TEST_SRCS))
+AM_DMX_TEST_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(AM_DMX_TEST_SRCS))
 
 AM_SMC_TEST_SRCS := \
 	test/am_smc_test/am_sc2_smc_test.c \
@@ -37,44 +38,62 @@
 	test/am_smc_test/am_time.c \
 	test/am_smc_test/am_evt.c \
 	test/am_smc_test/am_thread.c
-AM_SMC_TEST_OBJS := $(patsubst %.c,%.o,$(AM_SMC_TEST_SRCS))
+AM_SMC_TEST_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(AM_SMC_TEST_SRCS))
 
 DVR_WRAPPER_TEST_SRCS := \
 	test/dvr_wrapper_test/dvr_wrapper_test.c
-DVR_WRAPPER_TEST_OBJS := $(patsubst %.c,%.o,$(DVR_WRAPPER_TEST_SRCS))
+DVR_WRAPPER_TEST_OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(DVR_WRAPPER_TEST_SRCS))
 
 
 all: $(OUTPUT_FILES)
 
-%.o: %.c
+$(OUT_DIR)/%.o: %.c
+	mkdir -p $(dir $@)
 	$(CC) -c -o $@ $< $(CFLAGS)
 
 libamdvr.so: $(LIBAMDVR_OBJS)
-	$(CC) -shared -o $@ $^ $(LDFLAGS)
+	$(CC) -shared -o $(OUT_DIR)/$@ $^ $(LDFLAGS)
 
 am_fend_test: $(AM_FEND_TEST_OBJS) libamdvr.so
-	$(CC) -o $@ $(AM_FEND_TEST_OBJS) -L. -lamdvr $(LDFLAGS)
+	$(CC) -o $(OUT_DIR)/$@ $(AM_FEND_TEST_OBJS) -L$(OUT_DIR) -lamdvr $(LDFLAGS)
 
 am_dmx_test: $(AM_DMX_TEST_OBJS) libamdvr.so
-	$(CC) -o $@ $(AM_DMX_TEST_OBJS) -L. -lamdvr $(LDFLAGS)
+	$(CC) -o $(OUT_DIR)/$@ $(AM_DMX_TEST_OBJS) -L$(OUT_DIR) -lamdvr $(LDFLAGS)
 
 am_smc_test: $(AM_SMC_TEST_OBJS) libamdvr.so
-	$(CC) -o $@ $(AM_SMC_TEST_OBJS) -L. -lamdvr $(LDFLAGS)
+	$(CC) -o $(OUT_DIR)/$@ $(AM_SMC_TEST_OBJS) -L$(OUT_DIR) -lamdvr $(LDFLAGS)
 
 dvr_wrapper_test: $(DVR_WRAPPER_TEST_OBJS) libamdvr.so
-	$(CC) -o $@ $(DVR_WRAPPER_TEST_OBJS) -L. -lamdvr $(LDFLAGS)
+	$(CC) -o $(OUT_DIR)/$@ $(DVR_WRAPPER_TEST_OBJS) -L$(OUT_DIR) -lamdvr $(LDFLAGS)
 
 install: $(OUTPUT_FILES)
-	install -m 0755 ./libamdvr.so $(STAGING_DIR)/usr/lib
-	install -m 0755 ./libamdvr.so $(TARGET_DIR)/usr/lib
+	# install folders
 	install -d -m 0755 $(STAGING_DIR)/usr/include/libdvr
+	install -d -m 0755 $(TARGET_DIR)/usr/include/libdvr
+	install -d $(TARGET_DIR)/usr/lib
+	install -d $(TARGET_DIR)/usr/bin
+	# install so
+	install -m 0755 $(OUT_DIR)/libamdvr.so $(STAGING_DIR)/usr/lib
+	install -m 0755 $(OUT_DIR)/libamdvr.so $(TARGET_DIR)/usr/lib
+	# install test
+	install -m 0755 $(OUT_DIR)/am_fend_test $(STAGING_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/am_fend_test $(TARGET_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/am_dmx_test $(STAGING_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/am_dmx_test $(TARGET_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/am_smc_test $(STAGING_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/am_smc_test $(TARGET_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/dvr_wrapper_test $(STAGING_DIR)/usr/bin
+	install -m 0755 $(OUT_DIR)/dvr_wrapper_test $(TARGET_DIR)/usr/bin
+	# install headers
 	install -m 0644 ./include/* $(STAGING_DIR)/usr/include/libdvr
-	install -m 0755 am_fend_test $(STAGING_DIR)/usr/bin
-	install -m 0755 am_dmx_test $(STAGING_DIR)/usr/bin
-	install -m 0755 am_smc_test $(STAGING_DIR)/usr/bin
-	install -m 0755 dvr_wrapper_test $(STAGING_DIR)/usr/bin
+	install -m 0644 ./include/* $(TARGET_DIR)/usr/include/libdvr
+	install -m 0644 ./include/dvb_*.h $(TARGET_DIR)/usr/include
+	install -m 0644 ./include/dvr_*.h $(TARGET_DIR)/usr/include
+	install -m 0644 ./include/segment.h $(TARGET_DIR)/usr/include
+	install -m 0644 ./include/segment_ops.h $(TARGET_DIR)/usr/include
+	install -m 0644 ./include/list.h $(TARGET_DIR)/usr/include
 
 clean:
-	rm -f $(LIBAMDVR_OBJS) $(AM_FEND_TEST_OBJS) $(AM_DMX_TEST_OBJS) $(DVR_WRAPPER_TEST_OBJS) $(OUTPUT_FILES)
+	find $(OUT_DIR) -name \*.o -exec rm -f {} \;
 
 .PHONY: all install clean