2017-10-09 22:12:53 +00:00
|
|
|
# $FreeBSD$
|
2017-10-12 14:56:28 +00:00
|
|
|
# Originally from $NetBSD: Makefile,v 1.21 1997/10/26 22:08:38 lukem Exp $
|
|
|
|
#
|
|
|
|
# Notes:
|
|
|
|
# - We don't use the libc strerror/sys_errlist because the string table is
|
|
|
|
# quite large.
|
|
|
|
#
|
|
|
|
|
2017-11-06 15:21:56 +00:00
|
|
|
.include <bsd.init.mk>
|
2017-10-09 22:12:53 +00:00
|
|
|
|
2017-11-04 06:15:20 +00:00
|
|
|
LIBSA_CPUARCH?=${MACHINE_CPUARCH}
|
2017-10-12 14:56:28 +00:00
|
|
|
LIBC_SRC= ${SRCTOP}/lib/libc
|
|
|
|
|
2017-10-12 14:56:48 +00:00
|
|
|
LIB?= sa
|
2017-10-12 14:56:28 +00:00
|
|
|
|
|
|
|
# standalone components and stuff we have modified locally
|
2018-01-26 17:13:04 +00:00
|
|
|
SRCS+= gzguts.h zutil.h __main.c abort.c assert.c bcd.c environment.c getopt.c gets.c \
|
2018-01-31 04:29:00 +00:00
|
|
|
globals.c pager.c panic.c printf.c strdup.c strerror.c \
|
2017-10-12 15:16:27 +00:00
|
|
|
random.c sbrk.c twiddle.c zalloc.c zalloc_malloc.c
|
2017-10-12 14:56:28 +00:00
|
|
|
|
|
|
|
# private (pruned) versions of libc string functions
|
|
|
|
SRCS+= strcasecmp.c
|
|
|
|
|
|
|
|
.PATH: ${LIBC_SRC}/net
|
|
|
|
|
|
|
|
SRCS+= ntoh.c
|
|
|
|
|
|
|
|
# string functions from libc
|
|
|
|
.PATH: ${LIBC_SRC}/string
|
|
|
|
SRCS+= bcmp.c bcopy.c bzero.c ffs.c fls.c \
|
|
|
|
memccpy.c memchr.c memcmp.c memcpy.c memmove.c memset.c \
|
|
|
|
qdivrem.c strcat.c strchr.c strcmp.c strcpy.c stpcpy.c stpncpy.c \
|
|
|
|
strcspn.c strlcat.c strlcpy.c strlen.c strncat.c strncmp.c strncpy.c \
|
2017-12-30 07:03:52 +00:00
|
|
|
strnlen.c strpbrk.c strrchr.c strsep.c strspn.c strstr.c strtok.c swab.c
|
2018-01-26 17:13:09 +00:00
|
|
|
|
|
|
|
# stdlib functions from libc
|
|
|
|
.PATH: ${LIBC_SRC}/stdlib
|
2018-01-31 04:29:00 +00:00
|
|
|
SRCS+= abs.c strtol.c strtoll.c strtoul.c strtoull.c
|
2018-01-26 17:13:09 +00:00
|
|
|
|
Create helper functions for parsing boot args.
boot_parse_arg to parse a single arg
boot_parse_cmdline to parse a command line string
boot_parse_args to parse all the args in a vector
boot_howto_to_env Convert howto bits to env vars
boot_env_to_howto Return howto mask mased on what's set in the environment.
All these routines return an int that's the bitmask of the args
translated to RB_* flags. As a special case, the 'S' flag sets the
comconsole_speed env var. Any arg that looks like a=b will set the env
key 'a' to value 'b'. If =b is omitted, 'a' is set to '1'. This
should help us reduce the number of redundant copies of these routines
in the tree. It should also give a more uniform experience between
platforms.
Also, invent a new flag RB_PROBE that's set when 'P' is parsed. On
x86 + BIOS, this means 'probe for the keyboard, and if it's not there
set both RB_MULTIPLE and RB_SERIAL (which means show the output on
both video and serial consoles, but make serial primary). Others it
may be some similar concept of probing, but it's loader dependent
what, exactly, it means.
These routines are suitable for /boot/loader and/or the kernel,
though they may not be suitable for the tightly hand-rolled-for-space
environments like boot2.
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D16205
2018-07-13 16:43:05 +00:00
|
|
|
# common boot code
|
|
|
|
.PATH: ${SYSDIR}/kern
|
|
|
|
SRCS+= subr_boot.c
|
|
|
|
|
2017-10-12 14:56:28 +00:00
|
|
|
.if ${MACHINE_CPUARCH} == "arm"
|
|
|
|
.PATH: ${LIBC_SRC}/arm/gen
|
|
|
|
|
|
|
|
# Do not generate movt/movw, because the relocation fixup for them does not
|
|
|
|
# translate to the -Bsymbolic -pie format required by self_reloc() in loader(8).
|
|
|
|
# Also, the fpu is not available in a standalone environment.
|
|
|
|
.if ${COMPILER_VERSION} < 30800
|
|
|
|
CFLAGS.clang+= -mllvm -arm-use-movt=0
|
|
|
|
.else
|
|
|
|
CFLAGS.clang+= -mno-movt
|
|
|
|
.endif
|
|
|
|
CFLAGS.clang+= -mfpu=none
|
|
|
|
|
|
|
|
# Compiler support functions
|
|
|
|
.PATH: ${SRCTOP}/contrib/compiler-rt/lib/builtins/
|
|
|
|
# __clzsi2 and ctzsi2 for various builtin functions
|
|
|
|
SRCS+= clzsi2.c ctzsi2.c
|
|
|
|
# Divide and modulus functions called by the compiler
|
|
|
|
SRCS+= divmoddi4.c divmodsi4.c divdi3.c divsi3.c moddi3.c modsi3.c
|
|
|
|
SRCS+= udivmoddi4.c udivmodsi4.c udivdi3.c udivsi3.c umoddi3.c umodsi3.c
|
|
|
|
|
|
|
|
.PATH: ${SRCTOP}/contrib/compiler-rt/lib/builtins/arm/
|
|
|
|
SRCS+= aeabi_idivmod.S aeabi_ldivmod.S aeabi_uidivmod.S aeabi_uldivmod.S
|
|
|
|
SRCS+= aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "riscv"
|
|
|
|
.PATH: ${LIBC_SRC}/${MACHINE_CPUARCH}/gen
|
|
|
|
.endif
|
|
|
|
|
|
|
|
.if ${MACHINE_CPUARCH} == "powerpc"
|
|
|
|
.PATH: ${LIBC_SRC}/quad
|
2018-08-19 14:48:32 +00:00
|
|
|
SRCS+= ashldi3.c ashrdi3.c lshrdi3.c
|
2017-10-12 14:56:28 +00:00
|
|
|
SRCS+= syncicache.c
|
|
|
|
.endif
|
|
|
|
|
2018-08-16 19:39:02 +00:00
|
|
|
.if ${MACHINE_CPUARCH} == "mips"
|
|
|
|
.PATH: ${LIBC_SRC}/quad
|
2018-08-19 14:48:32 +00:00
|
|
|
SRCS+= ashldi3.c ashrdi3.c lshrdi3.c
|
2018-08-16 19:39:02 +00:00
|
|
|
.endif
|
|
|
|
|
2017-10-12 14:56:28 +00:00
|
|
|
# uuid functions from libc
|
|
|
|
.PATH: ${LIBC_SRC}/uuid
|
|
|
|
SRCS+= uuid_create_nil.c uuid_equal.c uuid_from_string.c uuid_is_nil.c uuid_to_string.c
|
|
|
|
|
|
|
|
# _setjmp/_longjmp
|
2017-11-04 06:15:20 +00:00
|
|
|
.PATH: ${SASRC}/${LIBSA_CPUARCH}
|
2017-10-12 14:56:28 +00:00
|
|
|
SRCS+= _setjmp.S
|
|
|
|
|
|
|
|
# decompression functionality from libbz2
|
|
|
|
# NOTE: to actually test this functionality after libbz2 upgrade compile
|
|
|
|
# loader(8) with LOADER_BZIP2_SUPPORT defined
|
|
|
|
.PATH: ${SRCTOP}/contrib/bzip2
|
|
|
|
CFLAGS+= -DBZ_NO_STDIO -DBZ_NO_COMPRESS
|
|
|
|
|
2017-12-05 21:38:24 +00:00
|
|
|
SRCS+=bzlib.c crctable.c decompress.c huffman.c randtable.c
|
2017-10-12 14:56:28 +00:00
|
|
|
|
|
|
|
# decompression functionality from zlib
|
2019-05-08 08:43:15 +00:00
|
|
|
.PATH: ${SRCTOP}/sys/contrib/zlib
|
|
|
|
CFLAGS+=-DHAVE_MEMCPY -I${SRCTOP}/sys/contrib/zlib
|
2017-12-05 21:38:24 +00:00
|
|
|
SRCS+= adler32.c crc32.c
|
|
|
|
SRCS+= infback.c inffast.c inflate.c inftrees.c zutil.c
|
2017-10-12 14:56:28 +00:00
|
|
|
|
2017-12-05 21:38:19 +00:00
|
|
|
# Create a subset of includes that are safe, as well as adjusting those that aren't
|
|
|
|
# The lists may drive people nuts, but they are explicitly opt-in
|
2017-12-08 19:57:06 +00:00
|
|
|
FAKE_DIRS=xlocale arpa
|
|
|
|
SAFE_INCS=a.out.h assert.h elf.h limits.h nlist.h setjmp.h stddef.h stdbool.h string.h strings.h time.h unistd.h uuid.h
|
|
|
|
STAND_H_INC=ctype.h fcntl.h signal.h stdio.h stdlib.h
|
|
|
|
OTHER_INC=stdarg.h errno.h stdint.h
|
|
|
|
|
2017-12-05 21:38:19 +00:00
|
|
|
beforedepend:
|
2017-12-08 19:57:06 +00:00
|
|
|
mkdir -p ${FAKE_DIRS}; \
|
|
|
|
for i in ${SAFE_INCS}; do \
|
2017-12-05 21:38:19 +00:00
|
|
|
ln -sf ${SRCTOP}/include/$$i $$i; \
|
|
|
|
done; \
|
|
|
|
ln -sf ${SYSDIR}/${MACHINE}/include/stdarg.h stdarg.h; \
|
|
|
|
ln -sf ${SYSDIR}/sys/errno.h errno.h; \
|
|
|
|
ln -sf ${SYSDIR}/sys/stdint.h stdint.h; \
|
|
|
|
ln -sf ${SRCTOP}/include/arpa/inet.h arpa/inet.h; \
|
|
|
|
ln -sf ${SRCTOP}/include/arpa/tftp.h arpa/tftp.h; \
|
|
|
|
for i in _time.h _strings.h _string.h; do \
|
|
|
|
[ -f xlocale/$$i ] || cp /dev/null xlocale/$$i; \
|
|
|
|
done; \
|
2017-12-08 19:57:06 +00:00
|
|
|
for i in ${STAND_H_INC}; do \
|
2017-12-05 21:38:19 +00:00
|
|
|
ln -sf ${SASRC}/stand.h $$i; \
|
|
|
|
done
|
2017-12-08 19:57:06 +00:00
|
|
|
CLEANDIRS+=${FAKE_DIRS}
|
|
|
|
CLEANFILES+= ${SAFE_INCS} ${STAND_H_INC} ${OTHER_INC}
|
2017-12-05 21:38:19 +00:00
|
|
|
|
2017-10-12 14:56:28 +00:00
|
|
|
# io routines
|
|
|
|
SRCS+= closeall.c dev.c ioctl.c nullfs.c stat.c \
|
|
|
|
fstat.c close.c lseek.c open.c read.c write.c readdir.c
|
|
|
|
|
|
|
|
# network routines
|
|
|
|
SRCS+= arp.c ether.c ip.c inet_ntoa.c in_cksum.c net.c udp.c netif.c rpc.c
|
|
|
|
|
|
|
|
# network info services:
|
|
|
|
SRCS+= bootp.c rarp.c bootparam.c
|
|
|
|
|
|
|
|
# boot filesystems
|
|
|
|
SRCS+= ufs.c nfs.c cd9660.c tftp.c gzipfs.c bzipfs.c
|
|
|
|
SRCS+= dosfs.c ext2fs.c
|
|
|
|
SRCS+= splitfs.c
|
|
|
|
SRCS+= pkgfs.c
|
|
|
|
.if ${MK_NAND} != "no"
|
|
|
|
SRCS+= nandfs.c
|
|
|
|
.endif
|
|
|
|
|
2018-01-26 00:58:32 +00:00
|
|
|
# kernel ufs support
|
|
|
|
.PATH: ${SRCTOP}/sys/ufs/ffs
|
|
|
|
SRCS+=ffs_subr.c ffs_tables.c
|
|
|
|
|
2017-12-05 21:38:19 +00:00
|
|
|
CFLAGS.bzipfs.c+= -I${SRCTOP}/contrib/bzip2
|
|
|
|
|
2018-10-23 23:11:38 +00:00
|
|
|
# explicit_bzero and calculate_crc32c
|
2017-10-22 22:50:28 +00:00
|
|
|
.PATH: ${SYSDIR}/libkern
|
2018-10-23 23:11:38 +00:00
|
|
|
SRCS+= explicit_bzero.c crc32_libkern.c
|
2017-10-09 22:12:53 +00:00
|
|
|
|
2018-06-18 16:24:42 +00:00
|
|
|
# Maybe GELI
|
|
|
|
.if ${MK_LOADER_GELI} == "yes"
|
|
|
|
.include "${SASRC}/geli/Makefile.inc"
|
|
|
|
.endif
|
|
|
|
|
2019-02-26 06:22:10 +00:00
|
|
|
.if ${MK_LOADER_VERIEXEC} == "yes" && ${MK_BEARSSL} == "yes"
|
|
|
|
.include "${SRCTOP}/lib/libbearssl/Makefile.libsa.inc"
|
|
|
|
.include "${SRCTOP}/lib/libsecureboot/Makefile.libsa.inc"
|
|
|
|
.endif
|
|
|
|
|
2018-07-08 07:42:49 +00:00
|
|
|
# Maybe ZFS
|
2019-01-05 22:45:20 +00:00
|
|
|
.if ${MK_LOADER_ZFS} == "yes"
|
2018-07-08 07:42:49 +00:00
|
|
|
.include "${SASRC}/zfs/Makefile.inc"
|
|
|
|
.endif
|
|
|
|
|
2017-10-12 14:56:28 +00:00
|
|
|
.include <bsd.lib.mk>
|