mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	 006e9a4088
			
		
	
	
		006e9a4088
		
	
	
	
	
		
			
			Move platform specific Linux headers under include/os/linux/. Update the build system accordingly to detect the platform. This lays some of the initial groundwork to supporting building for other platforms. As part of this change it was necessary to create both a user and kernel space sys/simd.h header which can be included in either context. No functional change, the source has been refactored and the relevant #include's updated. Reviewed-by: Jorgen Lundman <lundman@lundman.net> Reviewed-by: Igor Kozhukhov <igor@dilos.org> Signed-off-by: Matthew Macy <mmacy@FreeBSD.org> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #9198
		
			
				
	
	
		
			116 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| set -e
 | |
| 
 | |
| usage()
 | |
| {
 | |
| 	echo "usage: $0 <kernel source tree>" >&2
 | |
| 	exit 1
 | |
| }
 | |
| 
 | |
| [ "$#" -eq 1 ] || usage
 | |
| KERNEL_DIR="$(readlink --canonicalize-existing "$1")"
 | |
| 
 | |
| MODULES=()
 | |
| MODULES+="spl"
 | |
| for MODULE_DIR in module/*
 | |
| do
 | |
| 	[ -d "$MODULE_DIR" ] || continue
 | |
| 	[ "spl" = "${MODULE_DIR##*/}" ] && continue
 | |
| 	MODULES+=("${MODULE_DIR##*/}")
 | |
| done
 | |
| 
 | |
| if ! [ -e 'zfs_config.h' ]
 | |
| then
 | |
| 	echo >&2
 | |
| 	echo "    $0: you did not run configure, or you're not in the ZFS source directory." >&2
 | |
| 	echo "    $0: run configure with --with-linux=$KERNEL_DIR and --enable-linux-builtin." >&2
 | |
| 	echo >&2
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| make clean || true
 | |
| scripts/make_gitrev.sh || true
 | |
| 
 | |
| rm -rf "$KERNEL_DIR/include/zfs" "$KERNEL_DIR/fs/zfs"
 | |
| cp --recursive include "$KERNEL_DIR/include/zfs"
 | |
| cp --recursive module "$KERNEL_DIR/fs/zfs"
 | |
| cp zfs_config.h "$KERNEL_DIR/include/zfs/"
 | |
| 
 | |
| for MODULE in "${MODULES[@]}"
 | |
| do
 | |
| 	sed -i.bak '/obj =/d' "$KERNEL_DIR/fs/zfs/$MODULE/Makefile"
 | |
| 	sed -i.bak '/src =/d' "$KERNEL_DIR/fs/zfs/$MODULE/Makefile"
 | |
| done
 | |
| 
 | |
| cat > "$KERNEL_DIR/fs/zfs/Kconfig" <<"EOF"
 | |
| config ZFS
 | |
| 	tristate "ZFS filesystem support"
 | |
| 	depends on EFI_PARTITION
 | |
| 	select ZLIB_INFLATE
 | |
| 	select ZLIB_DEFLATE
 | |
| 	help
 | |
| 	  This is the ZFS filesystem from the ZFS On Linux project.
 | |
| 
 | |
| 	  See http://zfsonlinux.org/
 | |
| 
 | |
| 	  To compile this file system support as a module, choose M here.
 | |
| 
 | |
| 	  If unsure, say N.
 | |
| EOF
 | |
| 
 | |
| {
 | |
| 	cat <<-"EOF"
 | |
| 	ZFS_MODULE_CFLAGS  = -I$(srctree)/include/zfs
 | |
| 	ZFS_MODULE_CFLAGS += -I$(srctree)/include/zfs/os/linux/spl
 | |
| 	ZFS_MODULE_CFLAGS += -I$(srctree)/include/zfs/os/linux/zfs
 | |
| 	ZFS_MODULE_CFLAGS += -I$(srctree)/include/zfs/os/linux/kernel
 | |
| 	ZFS_MODULE_CFLAGS += -include $(srctree)/include/zfs/zfs_config.h
 | |
| 	ZFS_MODULE_CFLAGS += -std=gnu99 -Wno-declaration-after-statement
 | |
| 	ZFS_MODULE_CPPFLAGS  = -D_KERNEL
 | |
| 	ZFS_MODULE_CPPFLAGS += -UDEBUG -DNDEBUG
 | |
| 	export ZFS_MODULE_CFLAGS ZFS_MODULE_CPPFLAGS
 | |
| 
 | |
| 	obj-$(CONFIG_ZFS) :=
 | |
| 	EOF
 | |
| 
 | |
| 	for MODULE in "${MODULES[@]}"
 | |
| 	do
 | |
| 		echo 'obj-$(CONFIG_ZFS) += ' "$MODULE/"
 | |
| 	done
 | |
| } > "$KERNEL_DIR/fs/zfs/Kbuild"
 | |
| 
 | |
| add_after()
 | |
| {
 | |
| 	local FILE="$1"
 | |
| 	local MARKER="$2"
 | |
| 	local NEW="$3"
 | |
| 	local LINE
 | |
| 
 | |
| 	while IFS='' read -r LINE
 | |
| 	do
 | |
| 		echo "$LINE"
 | |
| 
 | |
| 		if [ -n "$MARKER" -a "$LINE" = "$MARKER" ]
 | |
| 		then
 | |
| 			echo "$NEW"
 | |
| 			MARKER=''
 | |
| 			if IFS='' read -r LINE
 | |
| 			then
 | |
| 				[ "$LINE" != "$NEW" ] && echo "$LINE"
 | |
| 			fi
 | |
| 		fi
 | |
| 	done < "$FILE" > "$FILE.new"
 | |
| 
 | |
| 	mv "$FILE.new" "$FILE"
 | |
| }
 | |
| 
 | |
| add_after "$KERNEL_DIR/fs/Kconfig" 'if BLOCK' 'source "fs/zfs/Kconfig"'
 | |
| add_after "$KERNEL_DIR/fs/Makefile" 'endif' 'obj-$(CONFIG_ZFS) += zfs/'
 | |
| 
 | |
| echo >&2
 | |
| echo "    $0: done." >&2
 | |
| echo "    $0: now you can build the kernel with ZFS support." >&2
 | |
| echo "    $0: make sure you enable ZFS support (CONFIG_ZFS) before building." >&2
 | |
| echo >&2
 |