Refactor Minijail in preparation for ambient capabilities work.

-Extract helper functions that don't take a 'struct minijail' into a
separate file. Document this in a new HACKING file.
-Add support for long cmdline options in minijail0.c.

Bug: 32066154
Test: Unit tests on Linux and Android.

Change-Id: I246ff7f9459792e64e5be5b9c9ea650e3f1d2c58
diff --git a/Makefile b/Makefile
index 0e22d4e..6578e32 100644
--- a/Makefile
+++ b/Makefile
@@ -32,6 +32,10 @@
 GTEST_LIBS := $(gtest-config --libs)
 endif
 
+CORE_OBJECT_FILES := libminijail.o syscall_filter.o signal_handler.o \
+		bpf.o util.o system.o syscall_wrapper.o \
+		libconstants.gen.o libsyscalls.gen.o
+
 all: CC_BINARY(minijail0) CC_LIBRARY(libminijail.so) \
 	CC_LIBRARY(libminijailpreload.so)
 
@@ -42,16 +46,12 @@
 
 
 CC_BINARY(minijail0): LDLIBS += -lcap -ldl
-CC_BINARY(minijail0): libconstants.gen.o libsyscalls.gen.o libminijail.o \
-		syscall_filter.o signal_handler.o bpf.o util.o elfparse.o \
-		syscall_wrapper.o minijail0.o
+CC_BINARY(minijail0): $(CORE_OBJECT_FILES) elfparse.o minijail0.o
 clean: CLEAN(minijail0)
 
 
 CC_LIBRARY(libminijail.so): LDLIBS += -lcap
-CC_LIBRARY(libminijail.so): libminijail.o syscall_filter.o signal_handler.o \
-		bpf.o util.o syscall_wrapper.o libconstants.gen.o \
-		libsyscalls.gen.o
+CC_LIBRARY(libminijail.so): $(CORE_OBJECT_FILES)
 clean: CLEAN(libminijail.so)
 
 
@@ -61,16 +61,12 @@
 ifeq ($(USE_SYSTEM_GTEST),no)
 CXX_BINARY(libminijail_unittest): $(GTEST_MAIN)
 endif
-CXX_BINARY(libminijail_unittest): libminijail_unittest.o libminijail.o \
-		syscall_filter.o signal_handler.o bpf.o util.o \
-		syscall_wrapper.o libconstants.gen.o libsyscalls.gen.o
+CXX_BINARY(libminijail_unittest): libminijail_unittest.o $(CORE_OBJECT_FILES)
 clean: CLEAN(libminijail_unittest)
 
 
 CC_LIBRARY(libminijailpreload.so): LDLIBS += -lcap -ldl
-CC_LIBRARY(libminijailpreload.so): libminijailpreload.o libminijail.o \
-		libconstants.gen.o libsyscalls.gen.o syscall_filter.o \
-		signal_handler.o bpf.o util.o syscall_wrapper.o
+CC_LIBRARY(libminijailpreload.so): libminijailpreload.o $(CORE_OBJECT_FILES)
 clean: CLEAN(libminijailpreload.so)