aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJP Abgrall <jpa@google.com>2014-11-20 23:19:25 -0800
committerMichael Runge <mrunge@google.com>2014-11-21 14:37:03 -0800
commitd25948b9b4a9e361ef071dc8175df0407f60b7e0 (patch)
treeff3a6492baf9258bb4d95a657ac9e1356769ec47
parent8b6dd78abe0f9811cf8870198992860ffe2d9f11 (diff)
downloadandroid_external_e2fsprogs-d25948b9b4a9e361ef071dc8175df0407f60b7e0.tar.gz
android_external_e2fsprogs-d25948b9b4a9e361ef071dc8175df0407f60b7e0.tar.bz2
android_external_e2fsprogs-d25948b9b4a9e361ef071dc8175df0407f60b7e0.zip
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
-rw-r--r--lib/blkid/Android.mk16
-rw-r--r--lib/e2p/Android.mk14
-rw-r--r--lib/et/Android.mk12
-rw-r--r--lib/ext2fs/Android.mk20
-rw-r--r--lib/quota/Android.mk14
-rw-r--r--misc/Android.mk34
-rw-r--r--misc/tune2fs.c9
-rw-r--r--misc/tune2fs.h13
8 files changed, 130 insertions, 2 deletions
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 \
@@ -65,6 +69,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)
ifeq ($(HOST_OS),linux)
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)
@@ -69,6 +71,18 @@ 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)
LOCAL_MODULE := libext2_e2p_host
LOCAL_MODULE_TAGS := optional
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
@@ -55,6 +55,18 @@ 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)
LOCAL_CFLAGS := $(libext2_com_err_cflags) $(libext2_com_err_cflags_linux)
else
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 \
@@ -126,6 +134,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)
ifeq ($(HOST_OS),linux)
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)
@@ -54,6 +56,18 @@ 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)
LOCAL_MODULE := libext2_quota_host
LOCAL_MODULE_TAGS := optional
LOCAL_SHARED_LIBRARIES := $(addsuffix _host, $(libext2_quota_shared_libraries))
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)
@@ -149,6 +160,29 @@ 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)
LOCAL_SHARED_LIBRARIES := $(addsuffix _host, $(tune2fs_shared_libraries))
LOCAL_MODULE := tune2fs_host
LOCAL_MODULE_STEM := tune2fs
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);