img2simg: Add build files for the img2simg tool
This change re-adds the img2simg tool to the build system so we can build it
from a smaller subtree of the Android codebase.
Change-Id: I9c80a8b4607afd7b2b3dc7522b998f3820c03439
diff --git a/img2simg.mk b/img2simg.mk
index ec063e9..4348113 100644
--- a/img2simg.mk
+++ b/img2simg.mk
@@ -4,38 +4,45 @@
include $(ROOTDIR)/build/preamble.mk
-IMG2SIMG_SRCS_CXX := \
- system/core/base/stringprintf.cpp \
- system/core/libsparse/sparse_read.cpp
+LIBSPARSE_DIR := $(ROOTDIR)/tools/img2simg/libsparse
+LIBSPARSE_OUT := $(HOST_OUT)/obj/LIBSPARSE
-IMG2SIMG_SRCS_C := \
- system/core/libsparse/backed_block.c \
- system/core/libsparse/img2simg.c \
- system/core/libsparse/output_file.c \
- system/core/libsparse/sparse.c \
- system/core/libsparse/sparse_crc32.c \
- system/core/libsparse/sparse_err.c
+IMG2SIMG_SOURCES := img2simg.c
+IMG2SIMG_SOURCES := $(foreach source, $(IMG2SIMG_SOURCES), $(LIBSPARSE_DIR)/$(source))
-IMG2SIMG_INCLUDES := \
- system/core/base/include \
- system/core/libsparse/include
+SIMG2IMG_SOURCES := simg2img.c
+SIMG2IMG_SOURCES := $(foreach source, $(SIMG2IMG_SOURCES), $(LIBSPARSE_DIR)/$(source))
-IMG2SIMG_INCLUDES := $(addprefix -I,$(IMG2SIMG_INCLUDES))
+LIBSPARSE_SOURCES := backed_block.c output_file.c sparse.c sparse_crc32.c sparse_err.c sparse_read.c
+LIBSPARSE_OBJS := $(patsubst %.c,%.o,$(LIBSPARSE_SOURCES))
+
+# Fixup the paths to fit our output locations
+LIBSPARSE_SOURCES := $(foreach source, $(LIBSPARSE_SOURCES), $(LIBSPARSE_DIR)/$(source))
+LIBSPARSE_OBJS := $(foreach obj, $(LIBSPARSE_OBJS), $(LIBSPARSE_OUT)/$(obj))
img2simg: $(HOST_OUT)/bin/img2simg
-$(HOST_OUT)/bin/img2simg:
- mkdir -p $(HOST_OUT)/bin
- mkdir -p $(HOST_OUT)/obj/IMG2SIMG
- $(foreach infile, $(IMG2SIMG_SRCS_CXX), g++ -include string.h $(IMG2SIMG_INCLUDES) -c $(infile) -o $(HOST_OUT)/obj/IMG2SIMG/$(notdir $(patsubst %.cpp,%.o,$(infile))); )
- $(foreach infile, $(IMG2SIMG_SRCS_C), gcc $(IMG2SIMG_INCLUDES) -c $(infile) -o $(HOST_OUT)/obj/IMG2SIMG/$(notdir $(patsubst %.c,%.o,$(infile))); )
- gcc -o $(HOST_OUT)/bin/img2simg $(HOST_OUT)/obj/IMG2SIMG/* -lz -lstdc++
+simg2img: $(HOST_OUT)/bin/simg2img
-clean::
- rm -rf $(HOST_OUT)/obj/IMG2SIMG
- rm -f $(HOST_OUT)/bin/img2simg
+$(HOST_OUT)/bin/img2simg: $(IMG2SIMG_SOURCES) $(LIBSPARSE_OBJS)
+ mkdir -p $(dir $@)
+ $(CXX) $^ -o $@ -I$(LIBSPARSE_DIR)/include -lz
+
+$(HOST_OUT)/bin/simg2img: $(SIMG2IMG_SOURCES) $(LIBSPARSE_OBJS)
+ mkdir -p $(dir $@)
+ $(CXX) $^ -o $@ -I$(LIBSPARSE_DIR)/include -lz
+
+$(LIBSPARSE_OUT)/%.o: $(LIBSPARSE_DIR)/%.c
+ mkdir -p $(LIBSPARSE_OUT)
+ $(CC) $< -c -o $@ -I$(LIBSPARSE_DIR)/include -I$(dir $(LIBSPARSE_DIR))/include
targets::
- @echo "img2simg - builds a copy of the img2simg utility"
+ @echo "img2simg - builds the sparse image conversion tool"
+ @echo "simg2img - builds the unsparse image conversion tool"
-.PHONY:: img2simg
+clean::
+ rm -f $(HOST_OUT)/bin/img2simg
+ rm -f $(HOST_OUT)/bin/simg2img
+ rm -rf $(LIBSPARSE_OUT)
+
+.PHONY:: img2simg simg2img