blob: 40d43bde9395cdbf91be42e636a6cd5d2fc00263 [file] [log] [blame]
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -07001# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Elly Jonescd7a9042011-07-22 13:56:51 -04002# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
Sonny Raob5d537d2011-10-21 22:17:13 +00005LIBDIR = lib
Jorge Lucangeli Obesdf4bd352012-08-29 19:12:28 -07006PRELOADNAME = libminijailpreload.so
7PRELOADPATH = \"/$(LIBDIR)/$(PRELOADNAME)\"
Elly Jonescd7a9042011-07-22 13:56:51 -04008CFLAGS += -fPIC -Wall -Wextra -Werror -DPRELOADPATH="$(PRELOADPATH)"
Will Drewry6ac91122011-10-21 16:38:58 -05009CFLAGS += -fvisibility=internal
Elly Jonescd7a9042011-07-22 13:56:51 -040010
Lei Zhangeee31552012-10-17 21:27:10 -070011ifneq ($(HAVE_SECUREBITS_H),no)
12CFLAGS += -DHAVE_SECUREBITS_H
13endif
Utkarsh Sanghi0ef8a662014-08-18 15:50:11 -070014ifneq ($(USE_seccomp),yes)
15CFLAGS += -DUSE_SECCOMP_SOFTFAIL
16endif
Lei Zhangeee31552012-10-17 21:27:10 -070017
Ben Chan45397012011-08-23 08:15:03 -070018all : minijail0 libminijail.so libminijailpreload.so
Elly Jonescd7a9042011-07-22 13:56:51 -040019
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070020tests : libminijail_unittest.wrapper syscall_filter_unittest
Will Drewry6ac91122011-10-21 16:38:58 -050021
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070022minijail0 : libsyscalls.gen.o libminijail.o syscall_filter.o \
Lee Campbell1e4fc6a2014-06-06 17:40:02 -070023 signal.o bpf.o util.o elfparse.o minijail0.c
Jorge Lucangeli Obes4b2d5ee2014-01-09 15:47:47 -080024 $(CC) $(CFLAGS) -o $@ $^ -lcap -ldl
Elly Jonescd7a9042011-07-22 13:56:51 -040025
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070026libminijail.so : libminijail.o syscall_filter.o signal.o bpf.o util.o \
27 libsyscalls.gen.o
Ben Chan45397012011-08-23 08:15:03 -070028 $(CC) $(CFLAGS) -shared -o $@ $^ -lcap
29
Will Drewry6ac91122011-10-21 16:38:58 -050030# Allow unittests to access what are normally internal symbols.
31libminijail_unittest.wrapper :
32 $(MAKE) $(MAKEARGS) test-clean
33 $(MAKE) $(MAKEARGS) libminijail_unittest
34 $(MAKE) $(MAKEARGS) test-clean
35
36libminijail_unittest : CFLAGS := $(filter-out -fvisibility=%,$(CFLAGS))
Jorge Lucangeli Obesdf4bd352012-08-29 19:12:28 -070037libminijail_unittest : CFLAGS := $(filter-out -DPRELOADPATH=%,$(CFLAGS))
38libminijail_unittest : CFLAGS := $(CFLAGS) -DPRELOADPATH=\"./$(PRELOADNAME)\"
Jorge Lucangeli Obes524c0402012-01-17 11:30:23 -080039libminijail_unittest : libminijail_unittest.o libminijail.o \
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070040 syscall_filter.o signal.o bpf.o util.o libsyscalls.gen.o
Will Drewry6ac91122011-10-21 16:38:58 -050041 $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(filter-out $(CFLAGS_FILE),$^) -lcap
Will Drewrydecdfdc2011-09-27 15:13:54 -050042
Jorge Lucangeli Obes524c0402012-01-17 11:30:23 -080043libminijailpreload.so : libminijailpreload.c libminijail.o libsyscalls.gen.o \
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070044 syscall_filter.o signal.o bpf.o util.o
Elly Jonescd7a9042011-07-22 13:56:51 -040045 $(CC) $(CFLAGS) -shared -o $@ $^ -ldl -lcap
46
Thieu Lef0ef52e2011-09-14 14:03:09 -070047libminijail.o : libminijail.c libminijail.h
Will Drewry32ac9f52011-08-18 21:36:27 -050048
Will Drewrydecdfdc2011-09-27 15:13:54 -050049libminijail_unittest.o : libminijail_unittest.c test_harness.h
50 $(CC) $(CFLAGS) -c -o $@ $<
51
Will Drewry32ac9f52011-08-18 21:36:27 -050052libsyscalls.gen.o : libsyscalls.gen.c libsyscalls.h
53
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070054syscall_filter_unittest : syscall_filter_unittest.o syscall_filter.o \
Jorge Lucangeli Obes66cfc142012-11-30 15:42:52 -080055 bpf.o util.o libsyscalls.gen.o
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070056 $(CC) $(CFLAGS) -o $@ $^
57
58syscall_filter_unittest.o : syscall_filter_unittest.c test_harness.h
59 $(CC) $(CFLAGS) -c -o $@ $<
60
Jorge Lucangeli Obes524c0402012-01-17 11:30:23 -080061syscall_filter.o : syscall_filter.c syscall_filter.h
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070062
Jorge Lucangeli Obesbda833c2012-07-31 16:25:56 -070063signal.o : signal.c signal.h
64
Jorge Lucangeli Obes524c0402012-01-17 11:30:23 -080065bpf.o : bpf.c bpf.h
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070066
Jorge Lucangeli Obesa6b034d2012-08-07 15:29:20 -070067util.o : util.c util.h
68
Lee Campbell1e4fc6a2014-06-06 17:40:02 -070069elfparse.o : elfparse.c elfparse.h
70
Will Drewry32ac9f52011-08-18 21:36:27 -050071# Only regenerate libsyscalls.gen.c if the Makefile or header changes.
72# NOTE! This will not detect if the file is not appropriate for the target.
73libsyscalls.gen.c : Makefile libsyscalls.h
74 @printf "Generating target-arch specific $@ . . . "
Lei Zhangeee31552012-10-17 21:27:10 -070075 @./gen_syscalls.sh $@
Will Drewry32ac9f52011-08-18 21:36:27 -050076 @printf "done.\n"
77
Will Drewry6ac91122011-10-21 16:38:58 -050078# Only clean up files affected by the CFLAGS change for testing.
79test-clean :
Jorge Lucangeli Obesaff8fae2012-08-31 09:53:55 -070080 @rm -f libminijail.o libminijail_unittest.o
Will Drewry6ac91122011-10-21 16:38:58 -050081
82clean : test-clean
Will Drewry32ac9f52011-08-18 21:36:27 -050083 @rm -f libminijail.o libminijailpreload.so minijail0
Will Drewry6ac91122011-10-21 16:38:58 -050084 @rm -f libminijail.so
85 @rm -f libminijail_unittest
Jorge Lucangeli Obesaff8fae2012-08-31 09:53:55 -070086 @rm -f libsyscalls.gen.o libsyscalls.gen.c
Jorge Lucangeli Obes1563b5b2014-07-10 07:01:53 -070087 @rm -f syscall_filter.o signal.o bpf.o util.o elfparse.o
Jorge Lucangeli Obesfc8ab532012-03-20 10:14:31 -070088 @rm -f syscall_filter_unittest syscall_filter_unittest.o