Yocto: Optimize Makefile to support output path. [1/1]
PD#SWPL-143855
Problem:
Generate object file locate on local, it cause build fail when
support both 32bit and 64bit application on Yocto
Solution:
Add OUT_DIR parameter to implement assign output directory
Verify:
AV400
Signed-off-by: Peipeng.Zhao <peipeng.zhao@amlogic.com>
Change-Id: I71b305d764a3cbf1db76ccb2c9cbb4c86494b538
diff --git a/aml_log/Makefile b/aml_log/Makefile
index 46167fa..d35b4fc 100644
--- a/aml_log/Makefile
+++ b/aml_log/Makefile
@@ -1,12 +1,13 @@
CFLAGS += -Wall -g
SRC = aml_log.c
TARGET = libaml_log.so
+OUT_DIR ?= .
all: $(TARGET)
$(TARGET): $(SRC)
$(CC) $(CFLAGS) $(LDFLAGS) -shared -fPIC \
- -o $@ $^ $(LDLIBS)
+ $(patsubst %.o, $(OUT_DIR)/%.o, $<) -o $(OUT_DIR)/$@
.PHONY: clean
diff --git a/bootloader_message/Makefile b/bootloader_message/Makefile
index e7ccaed..4fe5a1a 100644
--- a/bootloader_message/Makefile
+++ b/bootloader_message/Makefile
@@ -1,24 +1,25 @@
LIB = libbootloader_message.a
OBJS = bootloader_message.o bootloader_avb.o avb_crc32.o
+OUT_DIR ?= .
.PHONY: all install clean
-#bootloader_message.o: bootloader_message.c
-# $(CC) -c bootloader_message.c
+%.o: %.c
+ $(CC) $(CFLAGS) -c $< -o $(OUT_DIR)/$@
-all: urlmisc bootloader_message.o bootloader_slot
- $(AR) rc $(LIB) $(OBJS)
+all: $(LIB) urlmisc bootloader_slot
+
+$(LIB): $(OBJS)
+ $(AR) rc $(OUT_DIR)/$(LIB) $(patsubst %.o, $(OUT_DIR)/%.o, $(OBJS))
urlmisc: urlmisc.o $(OBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
+ $(CC) $(CFLAGS) $(LDFLAGS) -L$(OUT_DIR) -lbootloader_message $(patsubst %.o, $(OUT_DIR)/%.o, $^) -o $(OUT_DIR)/$@
bootloader_slot : test.o $(OBJS)
- $(CC) $(CFLAGS) $(LDFLAGS) $^ -o $@
-
+ $(CC) $(CFLAGS) $(LDFLAGS) -L$(OUT_DIR) -lbootloader_message $(patsubst %.o, $(OUT_DIR)/%.o, $^) -o $(OUT_DIR)/$@
clean:
- rm -f *.o $(LIB)
+ rm -f $(OUT_DIR)/*.o $(OUT_DIR)/$(LIB)
install:
- install -m 755 $(LIB) $(STAGING_DIR)/usr/lib
- install -m 755 urlmisc $(TARGET_DIR)/usr/bin
-
+ install -m 755 $(OUT_DIR)/$(LIB) $(STAGING_DIR)/usr/lib
+ install -m 755 $(OUT_DIR)/urlmisc $(TARGET_DIR)/usr/bin