From d25948b9b4a9e361ef071dc8175df0407f60b7e0 Mon Sep 17 00:00:00 2001 From: JP Abgrall Date: Thu, 20 Nov 2014 23:19:25 -0800 Subject: tune2fs: Allow building it as a static lib This allows getting all of tune2fs as a static library. The entry point is int tune2fs_main(int argc, char **argv). It requires passing argv[0]="tune2fs" to get tune2fs behavior. Bug: 18430740 Change-Id: I7bf8d96c53066a4da37778c0d67383b0b820e2ff --- lib/blkid/Android.mk | 16 ++++++++++++++++ lib/e2p/Android.mk | 14 ++++++++++++++ lib/et/Android.mk | 12 ++++++++++++ lib/ext2fs/Android.mk | 20 ++++++++++++++++++++ lib/quota/Android.mk | 14 ++++++++++++++ misc/Android.mk | 34 ++++++++++++++++++++++++++++++++++ misc/tune2fs.c | 9 +++++++-- misc/tune2fs.h | 13 +++++++++++++ 8 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 misc/tune2fs.h diff --git a/lib/blkid/Android.mk b/lib/blkid/Android.mk index 92ef7764..24c736f6 100644 --- a/lib/blkid/Android.mk +++ b/lib/blkid/Android.mk @@ -19,6 +19,10 @@ libext2_blkid_shared_libraries := libext2_uuid libext2_blkid_system_shared_libraries := libc +libext2_blkid_static_libraries := libext2_uuid_static + +libext2_blkid_system_static_libraries := libc + libext2_blkid_c_includes := external/e2fsprogs/lib libext2_blkid_cflags := -O2 -g -W -Wall -fno-strict-aliasing \ @@ -64,6 +68,18 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(libext2_blkid_src_files) +LOCAL_STATIC_LIBRARIES := $(libext2_blkid_static_libraries) $(libext2_blkid_system_static_libraries) +LOCAL_C_INCLUDES := $(libext2_blkid_c_includes) +LOCAL_CFLAGS := $(libext2_blkid_cflags) $(libext2_blkid_cflags_linux) -fno-strict-aliasing +LOCAL_PRELINK_MODULE := false +LOCAL_MODULE := libext2_blkid +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + LOCAL_SRC_FILES := $(libext2_blkid_src_files) LOCAL_SHARED_LIBRARIES := $(addsuffix _host, $(libext2_blkid_shared_libraries)) LOCAL_C_INCLUDES := $(libext2_blkid_c_includes) diff --git a/lib/e2p/Android.mk b/lib/e2p/Android.mk index 7358449e..104c1305 100644 --- a/lib/e2p/Android.mk +++ b/lib/e2p/Android.mk @@ -52,6 +52,8 @@ libext2_e2p_cflags := -O2 -g -W -Wall \ libext2_e2p_system_shared_libraries := libc +libext2_e2p_system_static_libraries := libc + include $(CLEAR_VARS) LOCAL_SRC_FILES := $(libext2_e2p_src_files) @@ -66,6 +68,18 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(libext2_e2p_src_files) +LOCAL_C_INCLUDES := $(libext2_e2p_c_includes) +LOCAL_CFLAGS := $(libext2_e2p_cflags) +LOCAL_STATIC_LIBRARIES := $(libext2_e2p_system_static_libraries) +LOCAL_PRELINK_MODULE := false +LOCAL_MODULE := libext2_e2p +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + LOCAL_SRC_FILES := $(libext2_e2p_src_files) LOCAL_C_INCLUDES := $(libext2_e2p_c_includes) LOCAL_CFLAGS := $(libext2_e2p_cflags) diff --git a/lib/et/Android.mk b/lib/et/Android.mk index 9d6757a3..3ef83e5a 100644 --- a/lib/et/Android.mk +++ b/lib/et/Android.mk @@ -53,6 +53,18 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(libext2_com_err_src_files) +LOCAL_C_INCLUDES := $(libext2_com_err_c_includes) +LOCAL_CFLAGS := $(libext2_com_err_cflags) $(libext2_com_err_cflags_linux) +LOCAL_STATIC_LIBRARIES := libc +LOCAL_MODULE := libext2_com_err +LOCAL_MODULE_TAGS := optional +LOCAL_PRELINK_MODULE := false + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + LOCAL_SRC_FILES := $(libext2_com_err_src_files) LOCAL_C_INCLUDES := $(libext2_com_err_c_includes) ifeq ($(HOST_OS),linux) diff --git a/lib/ext2fs/Android.mk b/lib/ext2fs/Android.mk index 5cf6eb03..fd9b7a7d 100644 --- a/lib/ext2fs/Android.mk +++ b/lib/ext2fs/Android.mk @@ -80,6 +80,14 @@ libext2fs_shared_libraries := \ libext2fs_system_shared_libraries := libc +libext2fs_static_libraries := \ + libext2_com_err \ + libext2_uuid_static \ + libext2_blkid \ + libext2_e2p + +libext2fs_system_static_libraries := libc + libext2fs_c_includes := external/e2fsprogs/lib libext2fs_cflags := -O2 -g -W -Wall \ @@ -125,6 +133,18 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(libext2fs_src_files) +LOCAL_STATIC_LIBRARIES := $(libext2fs_static_libraries) $(libext2fs_system_static_libraries) +LOCAL_C_INCLUDES := $(libext2fs_c_includes) +LOCAL_CFLAGS := $(libext2fs_cflags) $(libext2fs_cflags_linux) +LOCAL_PRELINK_MODULE := false +LOCAL_MODULE := libext2fs +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + LOCAL_SRC_FILES := $(libext2fs_src_files) LOCAL_SHARED_LIBRARIES := $(addsuffix _host, $(libext2fs_shared_libraries)) LOCAL_C_INCLUDES := $(libext2fs_c_includes) diff --git a/lib/quota/Android.mk b/lib/quota/Android.mk index 8d0bfc32..cd10fa39 100644 --- a/lib/quota/Android.mk +++ b/lib/quota/Android.mk @@ -37,6 +37,8 @@ libext2_quota_cflags := -O2 -g -W -Wall \ libext2_quota_shared_libraries := libext2fs libext2_com_err +libext2_quota_static_libraries := libext2fs libext2_com_err + include $(CLEAR_VARS) LOCAL_SRC_FILES := $(libext2_quota_src_files) @@ -51,6 +53,18 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(libext2_quota_src_files) +LOCAL_C_INCLUDES := $(libext2_quota_c_includes) +LOCAL_CFLAGS := $(libext2_quota_cflags) +LOCAL_STATIC_LIBRARIES := libc $(libext2_quota_static_libraries) +LOCAL_PRELINK_MODULE := false +LOCAL_MODULE := libext2_quota +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + LOCAL_SRC_FILES := $(libext2_quota_src_files) LOCAL_C_INCLUDES := $(libext2_quota_c_includes) LOCAL_CFLAGS := $(libext2_quota_cflags) diff --git a/misc/Android.mk b/misc/Android.mk index 2a50e63a..0df4da01 100644 --- a/misc/Android.mk +++ b/misc/Android.mk @@ -132,6 +132,17 @@ tune2fs_shared_libraries := \ tune2fs_system_shared_libraries := libc + +tune2fs_static_libraries := \ + libext2_com_err \ + libext2_blkid \ + libext2_quota \ + libext2_uuid_static \ + libext2_e2p \ + libext2fs + +tune2fs_system_static_libraries := libc + include $(CLEAR_VARS) LOCAL_SRC_FILES := $(tune2fs_src_files) @@ -146,6 +157,29 @@ include $(BUILD_EXECUTABLE) include $(CLEAR_VARS) +LOCAL_SRC_FILES := $(tune2fs_src_files) +LOCAL_C_INCLUDES := $(tune2fs_c_includes) +LOCAL_CFLAGS := $(tune2fs_cflags) +LOCAL_STATIC_LIBRARIES := $(tune2fs_static_libraries) $(tune2fs_system_static_libraries) +LOCAL_FORCE_STATIC_EXECUTABLE := true +LOCAL_MODULE := tune2fs_static +LOCAL_MODULE_TAGS := optional + +include $(BUILD_EXECUTABLE) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := $(tune2fs_src_files) +LOCAL_C_INCLUDES := $(tune2fs_c_includes) +LOCAL_CFLAGS := $(tune2fs_cflags) -DBUILD_AS_LIB +LOCAL_STATIC_LIBRARIES := $(tune2fs_static_libraries) $(tune2fs_system_static_libraries) +LOCAL_MODULE := libtune2fs +LOCAL_MODULE_TAGS := optional + +include $(BUILD_STATIC_LIBRARY) + +include $(CLEAR_VARS) + LOCAL_SRC_FILES := $(tune2fs_src_files) LOCAL_C_INCLUDES := $(tune2fs_c_includes) LOCAL_CFLAGS := $(tune2fs_cflags) diff --git a/misc/tune2fs.c b/misc/tune2fs.c index e22640da..a893c6cc 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -1877,7 +1877,11 @@ static int tune2fs_setup_tdb(const char *name, io_manager *io_ptr) return retval; } +#ifndef BUILD_AS_LIB int main(int argc, char **argv) +#else +int tune2fs_main(int argc, char **argv) +#endif /* BUILD_AS_LIB */ { errcode_t retval; ext2_filsys fs; @@ -2260,10 +2264,11 @@ retry_open: remove_error_table(&et_ext2_error_table); closefs: - if (rc) { +if (rc) { ext2fs_mmp_stop(fs); +#ifndef BUILD_AS_LIB exit(1); +#endif } - return (ext2fs_close(fs) ? 1 : 0); } diff --git a/misc/tune2fs.h b/misc/tune2fs.h new file mode 100644 index 00000000..897e3363 --- /dev/null +++ b/misc/tune2fs.h @@ -0,0 +1,13 @@ +/* + * tune2fs.h - Change the file system parameters on an ext2 file system + * + * %Begin-Header% + * This file may be redistributed under the terms of the GNU Public + * License. + * %End-Header% + */ + +/* Takes exactly the same args as the tune2fs exectuable. + * Is the entrypoint for libtune2fs. + */ +int tune2fs_main(int argc, char **argv); -- cgit v1.2.3