OSDN Git Service

mksh: Build a static library
authorSteve Kondik <steve@cyngn.com>
Sun, 8 Nov 2015 06:40:34 +0000 (22:40 -0800)
committerSteve Kondik <steve@cyngn.com>
Wed, 24 Aug 2016 20:29:56 +0000 (13:29 -0700)
 * For use by recovery

Change-Id: I25d820ca28c464ed4834dd78317ce137e2f0651e

Android.mk

index 12f3c83..f649440 100644 (file)
@@ -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)