xref: /freebsd/sys/contrib/openzfs/copy-builtin (revision eda14cbc264d6969b02f2b1994cef11148e914f1)
1*eda14cbcSMatt Macy#!/usr/bin/env bash
2*eda14cbcSMatt Macy
3*eda14cbcSMatt Macyset -e
4*eda14cbcSMatt Macy
5*eda14cbcSMatt Macyusage()
6*eda14cbcSMatt Macy{
7*eda14cbcSMatt Macy	echo "usage: $0 <kernel source tree>" >&2
8*eda14cbcSMatt Macy	exit 1
9*eda14cbcSMatt Macy}
10*eda14cbcSMatt Macy
11*eda14cbcSMatt Macy[ "$#" -eq 1 ] || usage
12*eda14cbcSMatt MacyKERNEL_DIR="$(readlink --canonicalize-existing "$1")"
13*eda14cbcSMatt Macy
14*eda14cbcSMatt Macyif ! [ -e 'zfs_config.h' ]
15*eda14cbcSMatt Macythen
16*eda14cbcSMatt Macy	echo >&2
17*eda14cbcSMatt Macy	echo "    $0: you did not run configure, or you're not in the ZFS source directory." >&2
18*eda14cbcSMatt Macy	echo "    $0: run configure with --with-linux=$KERNEL_DIR and --enable-linux-builtin." >&2
19*eda14cbcSMatt Macy	echo >&2
20*eda14cbcSMatt Macy	exit 1
21*eda14cbcSMatt Macyfi
22*eda14cbcSMatt Macy
23*eda14cbcSMatt Macymake clean || true
24*eda14cbcSMatt Macymake gitrev
25*eda14cbcSMatt Macy
26*eda14cbcSMatt Macyrm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs"
27*eda14cbcSMatt Macycp --recursive include "$KERNEL_DIR/include/zfs"
28*eda14cbcSMatt Macycp --recursive module "$KERNEL_DIR/fs/zfs"
29*eda14cbcSMatt Macycp zfs_config.h "$KERNEL_DIR/include/zfs/"
30*eda14cbcSMatt Macy
31*eda14cbcSMatt Macycat > "$KERNEL_DIR/fs/zfs/Kconfig" <<"EOF"
32*eda14cbcSMatt Macyconfig ZFS
33*eda14cbcSMatt Macy	tristate "ZFS filesystem support"
34*eda14cbcSMatt Macy	depends on EFI_PARTITION
35*eda14cbcSMatt Macy	select ZLIB_INFLATE
36*eda14cbcSMatt Macy	select ZLIB_DEFLATE
37*eda14cbcSMatt Macy	help
38*eda14cbcSMatt Macy	  This is the ZFS filesystem from the ZFS On Linux project.
39*eda14cbcSMatt Macy
40*eda14cbcSMatt Macy	  See https://zfsonlinux.org/
41*eda14cbcSMatt Macy
42*eda14cbcSMatt Macy	  To compile this file system support as a module, choose M here.
43*eda14cbcSMatt Macy
44*eda14cbcSMatt Macy	  If unsure, say N.
45*eda14cbcSMatt MacyEOF
46*eda14cbcSMatt Macy
47*eda14cbcSMatt Macyadd_after()
48*eda14cbcSMatt Macy{
49*eda14cbcSMatt Macy	local FILE="$1"
50*eda14cbcSMatt Macy	local MARKER="$2"
51*eda14cbcSMatt Macy	local NEW="$3"
52*eda14cbcSMatt Macy	local LINE
53*eda14cbcSMatt Macy
54*eda14cbcSMatt Macy	while IFS='' read -r LINE
55*eda14cbcSMatt Macy	do
56*eda14cbcSMatt Macy		echo "$LINE"
57*eda14cbcSMatt Macy
58*eda14cbcSMatt Macy		if [ -n "$MARKER" -a "$LINE" = "$MARKER" ]
59*eda14cbcSMatt Macy		then
60*eda14cbcSMatt Macy			echo "$NEW"
61*eda14cbcSMatt Macy			MARKER=''
62*eda14cbcSMatt Macy			if IFS='' read -r LINE
63*eda14cbcSMatt Macy			then
64*eda14cbcSMatt Macy				[ "$LINE" != "$NEW" ] && echo "$LINE"
65*eda14cbcSMatt Macy			fi
66*eda14cbcSMatt Macy		fi
67*eda14cbcSMatt Macy	done < "$FILE" > "$FILE.new"
68*eda14cbcSMatt Macy
69*eda14cbcSMatt Macy	mv "$FILE.new" "$FILE"
70*eda14cbcSMatt Macy}
71*eda14cbcSMatt Macy
72*eda14cbcSMatt Macyadd_after "$KERNEL_DIR/fs/Kconfig" 'if BLOCK' 'source "fs/zfs/Kconfig"'
73*eda14cbcSMatt Macyadd_after "$KERNEL_DIR/fs/Makefile" 'endif' 'obj-$(CONFIG_ZFS) += zfs/'
74*eda14cbcSMatt Macy
75*eda14cbcSMatt Macyecho >&2
76*eda14cbcSMatt Macyecho "    $0: done." >&2
77*eda14cbcSMatt Macyecho "    $0: now you can build the kernel with ZFS support." >&2
78*eda14cbcSMatt Macyecho "    $0: make sure you enable ZFS support (CONFIG_ZFS) before building." >&2
79*eda14cbcSMatt Macyecho >&2
80