Add Minijail unit tests.

Bug: 25130591

Change-Id: Idff6ab35486db3c07c9805253cb61405dafb4a76
diff --git a/Android.mk b/Android.mk
index ab3b5df..93873f8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -16,30 +16,39 @@
 
 # Common variables
 # ========================================================
-
 minijailCommonCFlags := -Wall -Werror
 minijailCommonSharedLibraries := libcap
 
-# libminijail shared library for target
+# Static library for generated code.
 # ========================================================
+include $(CLEAR_VARS)
+LOCAL_MODULE := libminijail_generated
 
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+generated_sources_dir := $(local-generated-sources-dir)
+
+$(generated_sources_dir)/libsyscalls.c: PRIVATE_CUSTOM_TOOL = $< "$(lastword $(CLANG)) -isystem bionic/libc/kernel/uapi/asm-$(TARGET_ARCH)" $@
+$(generated_sources_dir)/libsyscalls.c: $(LOCAL_PATH)/gen_syscalls.sh
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(generated_sources_dir)/libsyscalls.c
+
+$(generated_sources_dir)/libconstants.c: PRIVATE_CUSTOM_TOOL = $< "$(lastword $(CLANG)) -isystem bionic/libc/kernel/uapi/asm-$(TARGET_ARCH)" $@
+$(generated_sources_dir)/libconstants.c: $(LOCAL_PATH)/gen_constants.sh
+	$(transform-generated-source)
+LOCAL_GENERATED_SOURCES += $(generated_sources_dir)/libconstants.c
+
+LOCAL_CFLAGS := $(minijailCommonCFlags)
+LOCAL_CLANG := true
+include $(BUILD_STATIC_LIBRARY)
+
+# libminijail shared library for target.
+# ========================================================
 include $(CLEAR_VARS)
 LOCAL_MODULE := libminijail
 
 # LOCAL_MODULE_CLASS must be defined before calling $(local-generated-sources-dir)
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 intermediates := $(local-generated-sources-dir)
-GEN := $(intermediates)/libsyscalls.c
-$(GEN): PRIVATE_CUSTOM_TOOL = $< "$(lastword $(CLANG)) -isystem bionic/libc/kernel/uapi/asm-$(TARGET_ARCH)" $@
-$(GEN): $(LOCAL_PATH)/gen_syscalls.sh
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
-
-GEN := $(intermediates)/libconstants.c
-$(GEN): PRIVATE_CUSTOM_TOOL = $< "$(lastword $(CLANG)) -isystem bionic/libc/kernel/uapi/asm-$(TARGET_ARCH)" $@
-$(GEN): $(LOCAL_PATH)/gen_constants.sh
-	$(transform-generated-source)
-LOCAL_GENERATED_SOURCES += $(GEN)
 
 LOCAL_CFLAGS := $(minijailCommonCFlags)
 LOCAL_CLANG := true
@@ -50,6 +59,30 @@
 	syscall_filter.c \
 	util.c \
 
+LOCAL_STATIC_LIBRARIES := libminijail_generated
 LOCAL_SHARED_LIBRARIES := $(minijailCommonSharedLibraries)
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 include $(BUILD_SHARED_LIBRARY)
+
+# Native unit tests. Run with:
+# adb shell /data/nativetest/libminijail_unittest/libminijail_unittest
+# ========================================================
+include $(CLEAR_VARS)
+LOCAL_MODULE := libminijail_unittest
+ifdef BRILLO
+  LOCAL_MODULE_TAGS := debug
+endif
+
+LOCAL_CFLAGS := $(minijailCommonCFlags)
+LOCAL_CLANG := true
+LOCAL_SRC_FILES := \
+	bpf.c \
+	libminijail_unittest.c \
+	libminijail.c \
+	signal_handler.c \
+	syscall_filter.c \
+	util.c \
+
+LOCAL_STATIC_LIBRARIES := libminijail_generated
+LOCAL_SHARED_LIBRARIES := $(minijailCommonSharedLibraries)
+include $(BUILD_NATIVE_TEST)