# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

LIBDIR = lib
PRELOADPATH = \"/$(LIBDIR)/libminijailpreload.so\"
CFLAGS += -fPIC -Wall -Wextra -Werror -DPRELOADPATH="$(PRELOADPATH)"
CFLAGS += -fvisibility=internal

all : minijail0 libminijail.so libminijailpreload.so

tests : libminijail_unittest.wrapper syscall_filter_unittest

minijail0 : libsyscalls.gen.o libminijail.o syscall_filter.o \
		signal.o bpf.o util.o minijail0.c
	$(CC) $(CFLAGS) -o $@ $^ -lcap

libminijail.so : libminijail.o syscall_filter.o signal.o bpf.o util.o \
		libsyscalls.gen.o
	$(CC) $(CFLAGS) -shared -o $@ $^ -lcap

# Allow unittests to access what are normally internal symbols.
libminijail_unittest.wrapper :
	$(MAKE) $(MAKEARGS) test-clean
	$(MAKE) $(MAKEARGS) libminijail_unittest
	$(MAKE) $(MAKEARGS) test-clean

libminijail_unittest : CFLAGS := $(filter-out -fvisibility=%,$(CFLAGS))
libminijail_unittest : libminijail_unittest.o libminijail.o \
		syscall_filter.o signal.o bpf.o util.o libsyscalls.gen.o
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $(CFLAGS_FILE),$^) -lcap

libminijailpreload.so : libminijailpreload.c libminijail.o libsyscalls.gen.o \
		syscall_filter.o signal.o bpf.o util.o
	$(CC) $(CFLAGS) -shared -o $@ $^ -ldl -lcap

libminijail.o : libminijail.c libminijail.h

libminijail_unittest.o : libminijail_unittest.c test_harness.h
	$(CC) $(CFLAGS) -c -o $@ $<

libsyscalls.gen.o : libsyscalls.gen.c libsyscalls.h

syscall_filter_unittest : syscall_filter_unittest.o syscall_filter.o \
		bpf.o util.o libsyscalls.gen.o test_harness.h
	$(CC) $(CFLAGS) -o $@ $^

syscall_filter_unittest.o : syscall_filter_unittest.c test_harness.h
	$(CC) $(CFLAGS) -c -o $@ $<

syscall_filter.o : syscall_filter.c syscall_filter.h

signal.o : signal.c signal.h

bpf.o : bpf.c bpf.h

util.o : util.c util.h

# sed expression which extracts system calls that are
# defined via asm/unistd.h.  It converts them from:
#  #define __NR_read
# to:
# #ifdef __NR_read
#  { "read", __NR_read },
# #endif
# All other lines will not be emitted.  The sed expression lives in its
# own macro to allow clean line wrapping.
define sed-multiline
	's/#define __\(ARM_\)\?\(NR_\)\([a-z0-9_]*\)$$/#ifdef __\1\2\3\n\
	 { "\1\3", __\1\2\3 },\n#endif/g p;'
endef

# Generates a header file with a system call table made up of "name",
# syscall_nr entries by including the build target <asm/unistd.h> and
# emitting the list of defines.  Use of the compiler is needed to
# dereference the actual provider of syscall definitions.
#   E.g., asm/unistd_32.h or asm/unistd_64.h, etc.
define gen_syscalls
	(set -e; \
	 echo '/* GENERATED BY MAKEFILE */'; \
	 echo '#include <stddef.h>'; \
	 echo '#include <asm/unistd.h>'; \
	 echo '#include "libsyscalls.h"'; \
	 echo "const struct syscall_entry syscall_table[] = {"; \
	 echo "#include <asm/unistd.h>" | \
	   $(CC) $(CFLAGS) -dN - -E | sed -ne $(sed-multiline); \
	 echo "  { NULL, -1 },"; \
	 echo "};" ) > $1
endef

# Only regenerate libsyscalls.gen.c if the Makefile or header changes.
# NOTE! This will not detect if the file is not appropriate for the target.
libsyscalls.gen.c : Makefile libsyscalls.h
	@printf "Generating target-arch specific $@ . . . "
	@$(call gen_syscalls,$@)
	@printf "done.\n"

# Only clean up files affected by the CFLAGS change for testing.
test-clean :
	@rm -f libminijail.o libminijail_unittest.o

clean : test-clean
	@rm -f libminijail.o libminijailpreload.so minijail0
	@rm -f libminijail.so
	@rm -f libminijail_unittest
	@rm -f libsyscalls.gen.o libsyscalls.gen.c
	@rm -f syscall_filter.o signal.o bpf.o util.o
	@rm -f syscall_filter_unittest syscall_filter_unittest.o
