From ce5eb06373baaa2acd30a12efeec309bcb68da07 Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Sat, 7 Nov 2015 22:40:34 -0800 Subject: [PATCH] mksh: Build a static library * For use by recovery Change-Id: I25d820ca28c464ed4834dd78317ce137e2f0651e --- Android.mk | 100 +++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 39 deletions(-) diff --git a/Android.mk b/Android.mk index 12f3c83..f649440 100644 --- a/Android.mk +++ b/Android.mk @@ -4,52 +4,15 @@ LOCAL_PATH := $(call my-dir) - -# /system/etc/mkshrc - -include $(CLEAR_VARS) - -LOCAL_MODULE := mkshrc -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT)/etc -LOCAL_SRC_FILES := $(LOCAL_MODULE) -include $(BUILD_PREBUILT) - - -# /system/bin/sh - -include $(CLEAR_VARS) - -LOCAL_MODULE := sh -LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk - -# mksh source files -LOCAL_SRC_FILES := \ - src/lalloc.c src/edit.c src/eval.c src/exec.c \ - src/expr.c src/funcs.c src/histrap.c src/jobs.c \ - src/lex.c src/main.c src/misc.c src/shf.c \ - src/syn.c src/tree.c src/var.c - -LOCAL_SYSTEM_SHARED_LIBRARIES := libc - -LOCAL_C_INCLUDES := $(LOCAL_PATH)/src - -# Additional flags first... -LOCAL_CFLAGS += \ - -DMKSH_DEFAULT_PROFILEDIR=\"/system/etc\" \ - -DMKSHRC_PATH=\"/system/etc/mkshrc\" \ - -DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\" \ - -DMKSH_DEFAULT_TMPDIR=\"/data/local\" \ - # ...then from Makefrag.inc: CFLAGS... -LOCAL_CFLAGS += \ +common_cflags += \ -Wno-deprecated-declarations \ -fno-asynchronous-unwind-tables \ -fno-strict-aliasing \ -fstack-protector -fwrapv \ # ...and CPPFLAGS. -LOCAL_CFLAGS += \ +common_cflags += \ -DDEBUG_LEAKS -DMKSH_ASSUME_UTF8 -DMKSH_CONSERVATIVE_FDS \ -DMKSH_DONT_EMIT_IDSTRING -DMKSH_NOPWNAM -DMKSH_BUILDSH \ -D_GNU_SOURCE -DSETUID_CAN_FAIL_WITH_EAGAIN \ @@ -82,4 +45,63 @@ LOCAL_CFLAGS += \ -DHAVE_SYS_ERRLIST_DECL=0 -DHAVE_SYS_SIGLIST_DECL=1 \ -DHAVE_PERSISTENT_HISTORY=0 -DMKSH_BUILD_R=521 + +# /system/etc/mkshrc +include $(CLEAR_VARS) +LOCAL_MODULE := mkshrc +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_OUT)/etc +LOCAL_SRC_FILES := $(LOCAL_MODULE) +include $(BUILD_PREBUILT) + + +# build a static library first +include $(CLEAR_VARS) +LOCAL_MODULE := libmksh +LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/Android.mk + +# mksh source files +LOCAL_SRC_FILES := \ + src/lalloc.c src/edit.c src/eval.c src/exec.c \ + src/expr.c src/funcs.c src/histrap.c src/jobs.c \ + src/lex.c src/misc.c src/shf.c \ + src/syn.c src/tree.c src/var.c + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/src +LOCAL_CFLAGS := $(common_cflags) +LOCAL_CLANG := true +include $(BUILD_STATIC_LIBRARY) + + +# /system/bin/sh +include $(CLEAR_VARS) +LOCAL_MODULE := sh +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := src/main.c +LOCAL_STATIC_LIBRARIES := libmksh +LOCAL_SYSTEM_SHARED_LIBRARIES := libc +LOCAL_CFLAGS := $(common_cflags) +LOCAL_CFLAGS += \ + -DMKSH_DEFAULT_PROFILEDIR=\"/system/etc\" \ + -DMKSHRC_PATH=\"/system/etc/mkshrc\" \ + -DMKSH_DEFAULT_EXECSHELL=\"/system/bin/sh\" \ + -DMKSH_DEFAULT_TMPDIR=\"/data/local\" +LOCAL_CLANG := true include $(BUILD_EXECUTABLE) + +# recovery shell: /sbin/sh +# this is built into a single-call binary +include $(CLEAR_VARS) +LOCAL_MODULE := libmksh_static +LOCAL_MODULE_TAGS := optional +LOCAL_SRC_FILES := src/main.c +LOCAL_WHOLE_STATIC_LIBRARIES := libmksh +LOCAL_CFLAGS := $(common_cflags) +LOCAL_CFLAGS += -Dmain=mksh_main +LOCAL_CFLAGS += \ + -DMKSH_DEFAULT_PROFILEDIR=\"/etc\" \ + -DMKSHRC_PATH=\"/etc/mkshrc\" \ + -DMKSH_DEFAULT_EXECSHELL=\"/sbin/sh\" \ + -DMKSH_DEFAULT_TMPDIR=\"/tmp\" +LOCAL_CLANG := true +include $(BUILD_STATIC_LIBRARY) -- 2.11.0