From 4d1a3912d0275dca3783159de2a19dc7b916e82c Mon Sep 17 00:00:00 2001 From: cfig Date: Fri, 8 Nov 2019 10:36:25 +0800 Subject: [PATCH] support makefile for c/cpp files Fix: #33 usage: make ./gradlew unpack ./gradlew pack --- Makefile | 14 +++++++ aosp/libavb/Makefile | 26 +++++++++++++ aosp/libsparse/Makefile | 27 ++++++++++++++ aosp/libsparse/base/Makefile | 20 ++++++++++ aosp/libsparse/sparse/Makefile | 20 ++++++++++ aosp/mkbootfs/Makefile | 19 ++++++++++ external/avb_print_property_desc.diff | 40 ++++++++++++++++++++ external/remove_projects.diff | 54 +++++++++++++++++++++++++++ 8 files changed, 220 insertions(+) create mode 100644 Makefile create mode 100644 aosp/libavb/Makefile create mode 100644 aosp/libsparse/Makefile create mode 100644 aosp/libsparse/base/Makefile create mode 100644 aosp/libsparse/sparse/Makefile create mode 100644 aosp/mkbootfs/Makefile create mode 100644 external/avb_print_property_desc.diff create mode 100644 external/remove_projects.diff diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d933fb1 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +all: + -git apply external/remove_projects.diff + make -C aosp/mkbootfs + make -C aosp/libsparse/base/ + make -C aosp/libsparse/sparse/ + make -C aosp/libsparse + make -C aosp/libavb +clean: + -git apply -R external/remove_projects.diff + make clean -C aosp/mkbootfs + make clean -C aosp/libsparse/base/ + make clean -C aosp/libsparse/sparse/ + make clean -C aosp/libsparse + make clean -C aosp/libavb diff --git a/aosp/libavb/Makefile b/aosp/libavb/Makefile new file mode 100644 index 0000000..0a75860 --- /dev/null +++ b/aosp/libavb/Makefile @@ -0,0 +1,26 @@ +.PHONY: clean nativeLibrary +.DEFAULT_GOAL: nativeLibrary +src_dir := src/avb/c +header_dir := src/avb/headers +build_dir := build +CFLAGS := \ + -I$(header_dir) \ + -D_FILE_OFFSET_BITS=64 \ + -D_POSIX_C_SOURCE=199309L \ + -DAVB_ENABLE_DEBUG \ + -DAVB_COMPILATION \ + -Wall -g +nativeLibrary: build/libs/avb/shared/libavb.so +CPP_FILES := $(wildcard src/avb/c/*.c) +OBJ_FILES := $(patsubst src/avb/c/%,build/%,$(CPP_FILES:.c=.o)) + +clean: + rm -fr $(build_dir) + +build/%.o: $(src_dir)/%.c + mkdir -p $(dir $@) + $(CC) -fPIC $(CFLAGS) -c -o $@ $< + +build/libs/avb/shared/libavb.so: $(OBJ_FILES) + mkdir -p $(dir $@) + $(CC) -shared -fPIC $^ -o $@ diff --git a/aosp/libsparse/Makefile b/aosp/libsparse/Makefile new file mode 100644 index 0000000..7afb864 --- /dev/null +++ b/aosp/libsparse/Makefile @@ -0,0 +1,27 @@ +.PHONY: nativeExecutable clean +osSuffix := linux +nativeExecutable: \ + build/append2simg \ + simg2img/build/install/main/release/$(osSuffix)/simg2img \ + build/simg2simg \ + build/img2simg +CFLAGS := -Isparse/src/main/public +LDFLAGS := \ + -Lsparse/build/lib/main/release/linux/ -lsparse \ + -Lbase/build/lib/main/release/linux/ -lbase \ + -lz +build/append2simg: append2simg/src/main/cpp/append2simg.cpp + mkdir -p $(dir $@) + $(CXX) $^ $(CFLAGS) $(LDFLAGS) -o $@ +simg2img/build/install/main/release/$(osSuffix)/simg2img: simg2img/src/main/cpp/simg2img.cpp + mkdir -p $(dir $@) + $(CXX) $^ $(CFLAGS) $(LDFLAGS) -o $@ +build/img2simg: img2simg/src/main/cpp/img2simg.cpp + mkdir -p $(dir $@) + $(CXX) $^ $(CFLAGS) $(LDFLAGS) -o $@ +build/simg2simg: simg2simg/src/main/cpp/simg2simg.cpp + mkdir -p $(dir $@) + $(CXX) $^ $(CFLAGS) $(LDFLAGS) -o $@ +clean: + rm -fr build + rm -fr simg2img/build/ diff --git a/aosp/libsparse/base/Makefile b/aosp/libsparse/base/Makefile new file mode 100644 index 0000000..efd3c20 --- /dev/null +++ b/aosp/libsparse/base/Makefile @@ -0,0 +1,20 @@ +.PHONY: clean nativeLibrary +.DEFAULT_GOAL: nativeLibrary +src_dir := src/main/cpp +header_dir := src/main/public +build_dir := build +CFLAGS := +nativeLibrary: build/lib/main/release/linux/libbase.a +CPP_FILES := $(wildcard $(src_dir)/*.cpp) +OBJ_FILES := $(patsubst $(src_dir)/%,build/%,$(CPP_FILES:.cpp=.o)) + +clean: + rm -fr $(build_dir) + +build/%.o: $(src_dir)/%.cpp + mkdir -p $(dir $@) + $(CC) $(CFLAGS) -c -o $@ $< + +build/lib/main/release/linux/libbase.a: $(OBJ_FILES) + mkdir -p $(dir $@) + ar rcs $@ $^ diff --git a/aosp/libsparse/sparse/Makefile b/aosp/libsparse/sparse/Makefile new file mode 100644 index 0000000..4246422 --- /dev/null +++ b/aosp/libsparse/sparse/Makefile @@ -0,0 +1,20 @@ +.PHONY: clean nativeLibrary +.DEFAULT_GOAL: nativeLibrary +src_dir := src/main/cpp +header_dir := src/main/public +build_dir := build +CFLAGS := -I$(header_dir) -I../base/src/main/public/ +nativeLibrary: build/lib/main/release/linux/libsparse.a +CPP_FILES := $(wildcard $(src_dir)/*.cpp) +OBJ_FILES := $(patsubst $(src_dir)/%,build/%,$(CPP_FILES:.cpp=.o)) + +clean: + rm -fr $(build_dir) + +build/%.o: $(src_dir)/%.cpp + mkdir -p $(dir $@) + $(CC) $(CFLAGS) -c -o $@ $< + +build/lib/main/release/linux/libsparse.a: $(OBJ_FILES) + mkdir -p $(dir $@) + ar rcs $@ $^ diff --git a/aosp/mkbootfs/Makefile b/aosp/mkbootfs/Makefile new file mode 100644 index 0000000..2e7a9b8 --- /dev/null +++ b/aosp/mkbootfs/Makefile @@ -0,0 +1,19 @@ +src_dir := src/mkbootfs/cpp +header_dir := src/mkbootfs/headers +build_dir := build +CXX_FLAGS := -I$(header_dir) -std=gnu++11 -Wno-write-strings -D__ANDROID_VNDK__ + +.PHONY: clean nativeExecutable +nativeExecutable: $(build_dir)/exe/mkbootfs/mkbootfs +$(build_dir)/exe/mkbootfs/mkbootfs: $(build_dir)/fs_config.o $(build_dir)/mkbootfs.o |$(build_dir)/exe/mkbootfs + $(CXX) $^ -o $@ +$(build_dir)/fs_config.o: $(src_dir)/fs_config.cpp |$(build_dir) + $(CXX) -c $(CXX_FLAGS) $< -o $@ +$(build_dir)/mkbootfs.o: $(src_dir)/mkbootfs.c |$(build_dir) + $(CXX) -c $(CXX_FLAGS) $< -o $@ +$(build_dir): + mkdir $@ +$(build_dir)/exe/mkbootfs: |$(build_dir) + mkdir -p $@ +clean: + rm -rf $(build_dir) diff --git a/external/avb_print_property_desc.diff b/external/avb_print_property_desc.diff new file mode 100644 index 0000000..5a4d37b --- /dev/null +++ b/external/avb_print_property_desc.diff @@ -0,0 +1,40 @@ +diff --git a/aosp/libavb/src/avb/c/avb_slot_verify.c b/aosp/libavb/src/avb/c/avb_slot_verify.c +index 0d75210..4c44755 100644 +--- a/aosp/libavb/src/avb/c/avb_slot_verify.c ++++ b/aosp/libavb/src/avb/c/avb_slot_verify.c +@@ -29,10 +29,12 @@ + #include "avb_hash_descriptor.h" + #include "avb_hashtree_descriptor.h" + #include "avb_kernel_cmdline_descriptor.h" ++#include "avb_property_descriptor.h" + #include "avb_sha.h" + #include "avb_util.h" + #include "avb_vbmeta_image.h" + #include "avb_version.h" ++#include + + /* Maximum number of partitions that can be loaded with avb_slot_verify(). */ + #define MAX_NUMBER_OF_LOADED_PARTITIONS 32 +@@ -1199,8 +1201,21 @@ static AvbSlotVerifyResult load_and_verify_vbmeta( + } + } break; + +- case AVB_DESCRIPTOR_TAG_PROPERTY: ++ case AVB_DESCRIPTOR_TAG_PROPERTY: { + /* Do nothing. */ ++ AvbPropertyDescriptor property_desc; ++ const uint8_t* prop_key = NULL; ++ const char* prop_value = NULL; ++ if (!avb_property_descriptor_validate_and_byteswap((AvbPropertyDescriptor *)descriptors[n], &property_desc)) { ++ avb_errorv(full_partition_name, ": Property descriptor is invalid.\n", NULL); ++ ret = AVB_SLOT_VERIFY_RESULT_ERROR_INVALID_METADATA; ++ goto out; ++ } ++ prop_key = (const uint8_t*)descriptors[n] + sizeof(AvbPropertyDescriptor); ++ prop_value = (const char*)descriptors[n] + sizeof(AvbPropertyDescriptor) + property_desc.key_num_bytes + 1; ++ fprintf(stderr, "PROPERTY DESCRIPTOR: k=[%s], v=[%s]\n", prop_key, prop_value); ++ /* Do nothing. */ ++ } + break; + } + } diff --git a/external/remove_projects.diff b/external/remove_projects.diff new file mode 100644 index 0000000..f8da97c --- /dev/null +++ b/external/remove_projects.diff @@ -0,0 +1,54 @@ +diff --git a/build.gradle.kts b/build.gradle.kts +index fae7552..a871a89 100644 +--- a/build.gradle.kts ++++ b/build.gradle.kts +@@ -59,15 +59,15 @@ tasks { + flashTask.dependsOn("bbootimg:jar") + + //sparse image dependencies +- packTask.dependsOn("aosp:mkbootfs:mkbootfsExecutable") +- unpackTask.dependsOn("aosp:mkbootfs:mkbootfsExecutable") +- if (System.getProperty("os.name").contains("Mac")) { +- unpackTask.dependsOn("aosp:libsparse:simg2img:installReleaseMacos") +- packTask.dependsOn("aosp:libsparse:img2simg:installReleaseMacos") +- } else { +- unpackTask.dependsOn("aosp:libsparse:simg2img:installReleaseLinux") +- packTask.dependsOn("aosp:libsparse:img2simg:installReleaseLinux") +- } ++ //packTask.dependsOn("aosp:mkbootfs:mkbootfsExecutable") ++ //unpackTask.dependsOn("aosp:mkbootfs:mkbootfsExecutable") ++ //if (System.getProperty("os.name").contains("Mac")) { ++ // unpackTask.dependsOn("aosp:libsparse:simg2img:installReleaseMacos") ++ // packTask.dependsOn("aosp:libsparse:img2simg:installReleaseMacos") ++ //} else { ++ // unpackTask.dependsOn("aosp:libsparse:simg2img:installReleaseLinux") ++ // packTask.dependsOn("aosp:libsparse:img2simg:installReleaseLinux") ++ //} + } + + fun parseGradleVersion(version: String): Int { +diff --git a/settings.gradle.kts b/settings.gradle.kts +index 1485b37..fd953dc 100644 +--- a/settings.gradle.kts ++++ b/settings.gradle.kts +@@ -1,11 +1,11 @@ + include("bbootimg") + include("aosp:boot_signer") +-include("aosp:mkbootfs") +-include("aosp:libsparse:base") +-include("aosp:libsparse:sparse") +-include("aosp:libsparse:img2simg") +-include("aosp:libsparse:simg2img") +-include("aosp:libsparse:simg2simg") +-include("aosp:libsparse:append2simg") +-include("aosp:libavb") +-include("avbImpl") ++//include("aosp:mkbootfs") ++//include("aosp:libsparse:base") ++//include("aosp:libsparse:sparse") ++//include("aosp:libsparse:img2simg") ++//include("aosp:libsparse:simg2img") ++//include("aosp:libsparse:simg2simg") ++//include("aosp:libsparse:append2simg") ++//include("aosp:libavb") ++//include("avbImpl")