1# Copyright 2017 The Fuchsia Authors 2# 3# Use of this source code is governed by a MIT-style 4# license that can be found in the LICENSE file or at 5# https://opensource.org/licenses/MIT 6 7SYSCALLS_SRC := system/public/zircon/syscalls.abigen 8 9GEN_DIR := $(BUILDDIR)/gen 10 11STAMPY := $(GEN_DIR)/abigen-stamp 12# This gets STAMPY built (and generation complete) early in the build. 13TARGET_MODDEPS += $(STAMPY) 14 15AG_ZIRCON := $(GENERATED_INCLUDES)/zircon 16 17AG_KERNEL_HEADER := $(AG_ZIRCON)/syscall-definitions.h 18AG_KERNEL_TRACE := $(AG_ZIRCON)/syscall-ktrace-info.inc 19AG_KERNEL_CATEGORY := $(AG_ZIRCON)/syscall-category.inc 20AG_KERNEL_WRAPPERS := $(AG_ZIRCON)/syscall-kernel-wrappers.inc 21AG_KERNEL_BRANCHES := $(AG_ZIRCON)/syscall-kernel-branches.S 22 23AG_ULIB_VDSO_HEADER := $(AG_ZIRCON)/syscall-vdso-definitions.h 24AG_ULIB_VDSO_WRAPPERS := $(AG_ZIRCON)/syscall-vdso-wrappers.inc 25AG_ULIB_SYSCALL_NUMBER := $(AG_ZIRCON)/zx-syscall-numbers.h 26AG_ULIB_ARM := $(AG_ZIRCON)/syscalls-arm64.S 27AG_ULIB_X86 := $(AG_ZIRCON)/syscalls-x86-64.S 28 29AG_SYSCALLS := $(AG_ZIRCON)/syscalls 30AG_PUBLIC_HEADER := $(AG_SYSCALLS)/definitions.h 31AG_PUBLIC_RUST := $(AG_SYSCALLS)/definitions.rs 32 33AG_SYSROOT_ZIRCON := $(BUILDSYSROOT)/include/zircon 34AG_SYSROOT_HEADER := $(AG_SYSROOT_ZIRCON)/syscalls/definitions.h 35AG_SYSROOT_RUST := $(AG_SYSROOT_ZIRCON)/syscalls/definitions.rs 36 37# STAMPY ultimately generates most of the files and paths here. 38$(STAMPY): $(ABIGEN) $(SYSCALLS_SRC) 39 $(call BUILDECHO,generating syscall files from $(SYSCALLS_SRC)) 40 $(NOECHO) mkdir -p $(AG_SYSCALLS) 41 $(NOECHO) $(ABIGEN) \ 42 -trace $(AG_KERNEL_TRACE) \ 43 -category $(AG_KERNEL_CATEGORY) \ 44 -kernel-header $(AG_KERNEL_HEADER) \ 45 -kernel-wrappers $(AG_KERNEL_WRAPPERS) \ 46 -kernel-branch $(AG_KERNEL_BRANCHES) \ 47 -arm-asm $(AG_ULIB_ARM) \ 48 -x86-asm $(AG_ULIB_X86) \ 49 -vdso-header $(AG_ULIB_VDSO_HEADER) \ 50 -vdso-wrappers $(AG_ULIB_VDSO_WRAPPERS) \ 51 -numbers $(AG_ULIB_SYSCALL_NUMBER) \ 52 -user-header $(AG_PUBLIC_HEADER) \ 53 -rust $(AG_PUBLIC_RUST) \ 54 $(SYSCALLS_SRC) 55 $(NOECHO) touch $(STAMPY) 56 57run-abigen $(AG_PUBLIC_HEADER) $(AG_PUBLIC_RUST) $(AG_SYSROOT_HEADER) $(AG_SYSROOT_RUST): $(STAMPY) 58 59GENERATED += $(AG_KERNEL_HEADER) $(AG_KERNEL_TRACE) \ 60 $(AG_KERNEL_CATEGORY) $(AG_ULIB_X86) $(AG_ULIB_ARM) \ 61 $(AG_KERNEL_WRAPPERS) $(AG_KERNEL_BRANCHES) \ 62 $(AG_ULIB_SYSCALL_NUMBERS) \ 63 $(AG_ULIB_VDSO_HEADER) $(AG_ULIB_VDSO_WRAPPERS) \ 64 $(AG_PUBLIC_HEADER) $(AG_SYSROOT_HEADER) \ 65 $(AG_PUBLIC_RUST) $(AG_SYSROOT_RUST) \ 66 $(STAMPY) 67 68$(call copy-dst-src,$(AG_SYSROOT_HEADER),$(AG_PUBLIC_HEADER)) 69$(call copy-dst-src,$(AG_SYSROOT_RUST),$(AG_PUBLIC_RUST)) 70 71# needed to create c.pkg (see: module-userlib.mk) 72ABIGEN_BUILDDIR := $(GENERATED_INCLUDES) 73ABIGEN_PUBLIC_HEADERS := $(AG_PUBLIC_HEADER) $(AG_PUBLIC_RUST) 74 75SYSROOT_DEPS += $(AG_SYSROOT_HEADER) $(AG_SYSROOT_RUST) 76