Handle "Unix Domain Sockets" in Rock code.
[akaros.git] / tools / Makefrag
1 # Helper for writing application Makefiles
2 #
3 # Those apps should include this directly and be located three directories down
4 # from the AKAROS_ROOT.
5 #
6 # Other than providing defaults for things like AKAROS_ROOT, the main thing
7 # this does is set the cross compiler.  You can override some things with a
8 # Makelocal.
9 #
10 # Exports CROSS_COMPILE, ARCH, KBUILD_VERBOSE, Q, MAKEFLAGS, BUILDDIR,
11 # AKAROS_ROOT, AKAROS_XCC_ROOT, AKAROS_PREFIX, AKAROS_SYSROOT, MAKE_JOBS,
12 # FIRST_KFS_PATH, KFS_ROOT
13
14 # Do not print "Entering directory ...";
15 MAKEFLAGS += --no-print-directory
16
17 # Overrides
18 -include Makelocal
19 BUILDDIR ?= $(shell pwd)
20 AKAROS_ROOT ?= $(BUILDDIR)/../../..
21 MAKE_JOBS ?= 4
22 FIRST_KFS_PATH ?= $(AKAROS_ROOT)/kern/kfs
23 KFS_ROOT = $(FIRST_KFS_PATH)
24 AKAROS_XCC_ROOT ?= $(shell grep X86_64_INSTDIR $(AKAROS_ROOT)/tools/compilers/gcc-glibc/Makelocal | cut -f 3 -d' ')
25
26 # To put more focus on warnings, be less verbose as default
27 # Use 'make V=1' to see the full commands
28 # Yanked this from the top-level.  It might work with V=1 from there too.
29 # Interestingly enough, V=1 gets passed to busybox, which also uses Kbuild,
30 # allowing us to control it's verbosity too.
31 ifeq ("$(origin V)", "command line")
32   KBUILD_VERBOSE ?= $(V)
33 endif
34 ifndef KBUILD_VERBOSE
35   KBUILD_VERBOSE = 0
36 endif
37 ifeq ($(KBUILD_VERBOSE),1)
38   Q ?=
39 else
40   Q ?= @
41 endif
42
43
44 # CC prefix detection.  If we're called from the top-level Makefile, CC will be
45 # set.
46
47 # So that valid-arches aren't the default goal
48 .DEFAULT_GOAL = all
49 # Helper target, so users can say make x86_64 and get ARCH=x86_64
50 valid-arches := riscv x86_64
51 PHONY += $(valid-arches)
52 $(valid-arches):
53         $(MAKE) ARCH=$@
54
55 ifeq ($(CROSS_COMPILE),)
56     # ARCH will only be set if they called make (valid-arches) directly.
57     ifneq ($(ARCH),)
58         ifeq ($(filter $(valid-arches), $(ARCH)),)
59             $(error ARCH $(ARCH) invalid, must be one of: $(valid-arches))
60         endif
61     else
62         ARCH := x86_64
63     endif
64     CROSS_COMPILE := $(ARCH)-ucb-akaros-
65 endif
66
67 # strip the trailing - from CROSS_COMPILE
68 AKAROS_PREFIX = $(shell x=$(CROSS_COMPILE); echo $${x%?})
69 AKAROS_SYSROOT = $(AKAROS_XCC_ROOT)/$(AKAROS_PREFIX)/sysroot/