#!/bin/bash
# Copyright (c) 2000-2017 Synology Inc. All rights reserved.

skip=0

case "$BUILD_TARGET" in
	X64|BROMOLOW|GRANTLEY|CEDARVIEW|AVOTON|DOCKERX64|BRASWELL|BROADWELL|KVMX64)
		KERNEL_STRIP=${STRIP64}
		;;
	*)
		KERNEL_STRIP=${STRIP}
		;;
esac

ModCrypto=" \
	${KernelDir}/crypto/ansi_cprng.ko \
	${KernelDir}/crypto/cbc.ko \
	${KernelDir}/crypto/des_generic.ko \
	${KernelDir}/crypto/ecb.ko \
	${KernelDir}/crypto/cmac.ko \
	${KernelDir}/crypto/hmac.ko \
	${KernelDir}/crypto/md4.ko \
	${KernelDir}/crypto/md5.ko \
	${KernelDir}/crypto/sha1_generic.ko \
	${KernelDir}/crypto/sha256_generic.ko \
	${KernelDir}/crypto/cts.ko \
	"
#FIXME: The modules below should be included when porting is done
#	${KernelDir}/crypto/aead.ko
#	${KernelDir}/crypto/aes_generic.ko
#	${KernelDir}/crypto/chainiv.ko
#	${KernelDir}/crypto/crypto_algapi.ko
#	${KernelDir}/crypto/crypto_blkcipher.ko
#	${KernelDir}/crypto/crypto_hash.ko
#	${KernelDir}/crypto/crypto_wq.ko
#	${KernelDir}/crypto/cryptomgr.ko
#	${KernelDir}/crypto/rng.ko
#	${KernelDir}/crypto/pcompress.ko
#	${KernelDir}/crypto/krng.ko
#	${KernelDir}/crypto/eseqiv.ko

ModFS=" \
	${KernelDir}/fs/fat/fat.ko \
	${KernelDir}/fs/fat/vfat.ko \
	${KernelDir}/lib/zlib_deflate/zlib_deflate.ko \
	${KernelDir}/lib/libcrc32c.ko \
	${KernelDir}/fs/hfsplus/hfsplus.ko \
	${KernelDir}/drivers/md/dm-flakey.ko \
	"
ModEncFS=" \
	${KernelDir}/fs/ecryptfs/ecryptfs.ko \
	"
ModFUSE=" \
	${KernelDir}/fs/fuse/fuse.ko \
	"
ModISOFS=" \
	${KernelDir}/drivers/block/loop.ko \
	${KernelDir}/fs/isofs/isofs.ko \
	${KernelDir}/fs/udf/udf.ko \
	${KernelDir}/lib/crc-itu-t.ko \
	"
Mod2Lan=" \
	${KernelDir}/drivers/net/bonding/bonding.ko \
	"
ModFirewall=" \
	${KernelDir}/net/ipv4/netfilter/ip_tables.ko \
	${KernelDir}/net/netfilter/xt_REDIRECT.ko \
	${KernelDir}/net/ipv4/netfilter/iptable_filter.ko \
	${KernelDir}/net/ipv4/netfilter/iptable_nat.ko \
	${KernelDir}/net/ipv4/netfilter/nf_conntrack_ipv4.ko \
	${KernelDir}/net/ipv4/netfilter/nf_defrag_ipv4.ko \
	${KernelDir}/net/netfilter/nf_nat.ko \
	${KernelDir}/net/ipv4/netfilter/nf_nat_ipv4.ko \
	${KernelDir}/net/netfilter/nf_conntrack.ko \
	${KernelDir}/net/netfilter/x_tables.ko \
	${KernelDir}/net/netfilter/xt_multiport.ko \
	${KernelDir}/net/netfilter/xt_state.ko \
	${KernelDir}/net/netfilter/xt_tcpudp.ko \
	${KernelDir}/net/netfilter/xt_LOG.ko \
	${KernelDir}/net/netfilter/xt_limit.ko \
	${KernelDir}/net/netfilter/xt_iprange.ko \
	${KernelDir}/net/netfilter/xt_recent.ko \
	${KernelDir}/net/netfilter/nfnetlink.ko \
	${KernelDir}/net/netfilter/nfnetlink_queue.ko \
	${KernelDir}/net/netfilter/ipset/ip_set.ko \
	${KernelDir}/net/netfilter/ipset/ip_set_hash_ip.ko \
	${KernelDir}/net/netfilter/xt_set.ko \
	${KernelDir}/net/netfilter/xt_nat.ko \
	${KernelDir}/net/netfilter/xt_TCPMSS.ko \
	${KernelDir}/net/netfilter/xt_policy.ko \
	"
ModIPv6FW=" \
	${KernelDir}/net/ipv6/netfilter/ip6_tables.ko \
	${KernelDir}/net/ipv6/netfilter/ip6table_filter.ko \
	${KernelDir}/net/ipv6/netfilter/nf_defrag_ipv6.ko \
	${KernelDir}/net/ipv6/netfilter/nf_conntrack_ipv6.ko \
	${KernelDir}/net/netfilter/xt_LOG.ko \
	"
ModIPv6=" \
	${KernelDir}/net/ipv6/ipv6.ko \
	"
ModIPv6Tun=" \
	${KernelDir}/net/ipv4/ip_tunnel.ko \
	${KernelDir}/net/ipv4/tunnel4.ko \
	${KernelDir}/net/ipv6/sit.ko \
	"
ModNFQ=" \
	${KernelDir}/net/netfilter/nfnetlink.ko \
	${KernelDir}/net/netfilter/nfnetlink_queue.ko \
	${KernelDir}/net/netfilter/xt_NFQUEUE.ko \
	"
ModPPP=" \
	${KernelDir}/drivers/net/ppp/ppp_async.ko \
	${KernelDir}/drivers/net/ppp/ppp_generic.ko \
	${KernelDir}/drivers/net/ppp/ppp_synctty.ko \
	${KernelDir}/drivers/net/ppp/pppox.ko \
	${KernelDir}/drivers/net/ppp/pppoe.ko \
	${KernelDir}/drivers/net/ppp/bsd_comp.ko \
	${KernelDir}/drivers/net/ppp/ppp_deflate.ko \
	${KernelDir}/drivers/net/ppp/ppp_mppe.ko \
	${KernelDir}/drivers/net/ppp/pptp.ko \
	${KernelDir}/net/l2tp/l2tp_core.ko \
	${KernelDir}/net/l2tp/l2tp_ppp.ko \
	${KernelDir}/net/ipv4/gre.ko \
	${KernelDir}/drivers/net/slip/slhc.ko \
	${KernelDir}/drivers/tty/n_hdlc.ko \
	${KernelDir}/lib/crc-ccitt.ko \
	"
ModTunnel=" \
	${KernelDir}/drivers/net/tun.ko \
	"
ModISCSI=" \
	${KernelDir}/lib/libcrc32c.ko \
	${KernelDir}/drivers/scsi/libiscsi.ko \
	${KernelDir}/drivers/scsi/libiscsi_tcp.ko \
	${KernelDir}/drivers/scsi/iscsi_tcp.ko \
	"
ModNFSD=" \
	${KernelDir}/fs/nfsd/nfsd.ko \
	${KernelDir}/fs/lockd/lockd.ko \
	${KernelDir}/net/sunrpc/sunrpc.ko \
	${KernelDir}/net/sunrpc/auth_gss/auth_rpcgss.ko \
	${KernelDir}/net/sunrpc/auth_gss/rpcsec_gss_krb5.ko \
	"
ModNFS=" \
	${KernelDir}/fs/nfs/nfs.ko \
	${KernelDir}/fs/nfs/nfsv2.ko \
	${KernelDir}/fs/nfs/nfsv3.ko \
	${KernelDir}/fs/nfs/nfsv4.ko \
	"
ModCIFS=" \
	${KernelDir}/fs/cifs/cifs.ko \
	"
ModQuota=" \
	${KernelDir}/fs/quota/quota_tree.ko \
	${KernelDir}/fs/quota/quota_v2.ko \
	"
ModSCSI=" \
	${KernelDir}/drivers/scsi/sg.ko \
	"
ModSnapshot=" \
	${KernelDir}/drivers/md/dm-snapshot.ko \
	"
ModSound=" \
	${KernelDir}/sound/soundcore.ko \
	"
ModUSBLP=" \
	${KernelDir}/drivers/usb/class/usblp.ko \
	"
ModUSB=" \
	${KernelDir}/drivers/hid/hid.ko \
	${KernelDir}/drivers/hid/hid-generic.ko \
	${KernelDir}/drivers/hid/usbhid/usbhid.ko \
	${ModUSBLP} \
	"
ModUSBIP=" \
	${KernelDir}/drivers/staging/usbip/usbip-host.ko \
	${KernelDir}/drivers/staging/usbip/usbip-core.ko
	"
ModUSBWimax=" \
	${KernelDir}/drivers/net/usb/usbnet.ko \
	${KernelDir}/drivers/net/usb/cdc_ether.ko \
	"
ModCPUFreq=" \
	${KernelDir}/drivers/cpufreq/freq_table.ko \
	${KernelDir}/drivers/cpufreq/cpufreq_stats.ko \
	"
ModBridge=" \
	${KernelDir}/net/bridge/bridge.ko \
	${KernelDir}/net/802/stp.ko	\
	${KernelDir}/net/802/psnap.ko \
	${KernelDir}/net/802/p8022.ko \
	${KernelDir}/net/llc/llc.ko \
	"
ModTC=" \
	${KernelDir}/net/sched/sch_htb.ko \
	${KernelDir}/net/sched/sch_sfq.ko \
	${KernelDir}/net/sched/cls_fw.ko \
	${KernelDir}/net/sched/sch_netem.ko \
	${KernelDir}/net/netfilter/xt_mark.ko \
	${KernelDir}/net/ipv4/netfilter/iptable_mangle.ko \
	${KernelDir}/net/ipv6/netfilter/ip6table_mangle.ko \
	${KernelDir}/net/sched/cls_u32.ko
	"
ModFwSecurity=" \
	${KernelDir}/net/netfilter/nf_conntrack_proto_gre.ko \
	${KernelDir}/net/netfilter/nf_conntrack_pptp.ko \
	${KernelDir}/net/ipv4/netfilter/nf_nat_proto_gre.ko \
	${KernelDir}/net/ipv4/netfilter/nf_nat_pptp.ko \
	"
ModVlan=" \
	${KernelDir}/net/8021q/8021q.ko \
	"
ModRfkill=" \
	${KernelDir}/net/rfkill/rfkill.ko \
	"
ModIPsec=" \
	${KernelDir}/crypto/deflate.ko \
	${KernelDir}/crypto/authenc.ko \
	${KernelDir}/crypto/authencesn.ko \
	${KernelDir}/net/ipv4/ah4.ko \
	${KernelDir}/net/ipv4/esp4.ko \
	${KernelDir}/net/ipv4/ipcomp.ko \
	${KernelDir}/net/ipv4/xfrm4_tunnel.ko \
	${KernelDir}/net/ipv4/xfrm4_mode_beet.ko \
	${KernelDir}/net/ipv4/tunnel4.ko \
	${KernelDir}/net/ipv4/xfrm4_mode_transport.ko \
	${KernelDir}/net/ipv4/xfrm4_mode_tunnel.ko \
	${KernelDir}/net/xfrm/xfrm_algo.ko \
	${KernelDir}/net/xfrm/xfrm_user.ko \
	${KernelDir}/net/xfrm/xfrm_ipcomp.ko \
	${KernelDir}/net/ipv6/ah6.ko \
	${KernelDir}/net/ipv6/esp6.ko \
	${KernelDir}/net/ipv6/ipcomp6.ko \
	${KernelDir}/net/ipv6/xfrm6_tunnel.ko \
	${KernelDir}/net/ipv6/tunnel6.ko \
	${KernelDir}/net/ipv6/xfrm6_mode_transport.ko \
	${KernelDir}/net/ipv6/xfrm6_mode_tunnel.ko \
	${KernelDir}/net/ipv6/xfrm6_mode_beet.ko \
	${KernelDir}/net/key/af_key.ko \
	"
ModZram=" \
	${KernelDir}/drivers/staging/zram/zram.ko \
	"
ModAlsa=" \
	${KernelDir}/sound/core/snd-pcm.ko \
	${KernelDir}/sound/usb/snd-usbmidi-lib.ko \
	${KernelDir}/sound/usb/snd-usb-audio.ko \
	${KernelDir}/sound/core/seq/snd-seq-device.ko \
	${KernelDir}/sound/core/snd.ko \
	${KernelDir}/sound/core/snd-hwdep.ko \
	${KernelDir}/sound/core/snd-rawmidi.ko \
	${KernelDir}/sound/core/oss/snd-pcm-oss.ko \
	${KernelDir}/sound/core/oss/snd-mixer-oss.ko \
	${KernelDir}/sound/core/snd-timer.ko \
	${KernelDir}/sound/core/snd-page-alloc.ko \
	${KernelDir}/sound/usb/hiface/snd-usb-hiface.ko \
	"
ModDocker=" \
	${KernelDir}/drivers/net/macvlan.ko \
	${KernelDir}/drivers/net/veth.ko \
	${KernelDir}/drivers/net/vxlan.ko \
	${KernelDir}/net/netfilter/xt_addrtype.ko \
	${KernelDir}/net/netfilter/xt_conntrack.ko \
	${KernelDir}/fs/aufs/aufs.ko \
	"
ModVaapi=" \
	${KernelDir}/drivers/char/agp/agpgart.ko \
	${KernelDir}/drivers/char/agp/intel-gtt.ko \
	${KernelDir}/drivers/char/agp/intel-agp.ko \
	${KernelDir}/drivers/gpu/drm/drm.ko \
	${KernelDir}/arch/x86/video/fbdev.ko \
	${KernelDir}/drivers/video/fb.ko \
	${KernelDir}/drivers/gpu/drm/drm_kms_helper.ko \
	${KernelDir}/drivers/video/cfbcopyarea.ko \
	${KernelDir}/drivers/video/cfbimgblt.ko \
	${KernelDir}/drivers/video/cfbfillrect.ko \
	${KernelDir}/drivers/acpi/button.ko \
	${KernelDir}/drivers/video/backlight/backlight.ko \
	${KernelDir}/drivers/acpi/video.ko \
	${KernelDir}/drivers/gpu/drm/i915/i915.ko \
	"
ModVirtualization=" \
	${KernelDir}/arch/x86/kvm/kvm.ko \
	${KernelDir}/arch/x86/kvm/kvm-intel.ko \
	${KernelDir}/drivers/vhost/vhost_net.ko \
	${KernelDir}/drivers/pci/pci-stub.ko \
	"
ModVFIO=" \
	${KernelDir}/drivers/vfio/vfio.ko \
	${KernelDir}/drivers/vfio/vfio_iommu_type1.ko \
	${KernelDir}/drivers/vfio/pci/vfio-pci.ko \
	"

ModFIPS=" \
	${KernelDir}/crypto/crypto_user.ko \
	${KernelDir}/crypto/af_alg.ko \
	${KernelDir}/crypto/algif_hash.ko \
	${KernelDir}/crypto/algif_skcipher.ko \
	"
ModRaid=" \
	${KernelDir}/drivers/md/dm-mod.ko \
	${KernelDir}/drivers/md/dm-raid.ko \
	${KernelDir}/drivers/md/linear.ko \
	${KernelDir}/drivers/md/raid0.ko \
	${KernelDir}/drivers/md/raid10.ko \
	${KernelDir}/drivers/md/raid456.ko \
	${KernelDir}/lib/raid6/raid6_pq.ko \
	${KernelDir}/crypto/async_tx/async_tx.ko \
	${KernelDir}/crypto/async_tx/async_memcpy.ko \
	${KernelDir}/crypto/async_tx/async_xor.ko \
	${KernelDir}/crypto/async_tx/async_pq.ko \
	${KernelDir}/crypto/async_tx/async_raid6_recov.ko \
	${KernelDir}/crypto/xor.ko \
	"

ModuleList=" \
	${ModCrypto} \
	${ModFS} \
	${ModEncFS} \
	${ModFUSE} \
	${ModISOFS} \
	${Mod2Lan} \
	${ModFirewall} \
	${ModIPv6FW} \
	${ModIPv6} \
	${ModPPP} \
	${ModTunnel} \
	${ModISCSI} \
	${ModNFSD} \
	${ModNFS} \
	${ModCIFS} \
	${ModQuota} \
	${ModSCSI} \
	${ModSnapshot} \
	${ModSound} \
	${ModUSB} \
	${ModUSBIP} \
	${ModUSBWimax} \
	${ModAlsa} \
	${ModDocker} \
	${ModRaid} \
	"
##################################################
ModTalitos=" \
	${KernelDir}/crypto/authenc.ko \
	${KernelDir}/drivers/char/hw_random/rng-core.ko \
	${KernelDir}/drivers/crypto/talitos.ko \
	"
ModOCF=" \
	${KernelDir}/crypto/ocf/cryptodev.ko \
	${KernelDir}/crypto/ocf/cryptosoft.ko \
	${KernelDir}/crypto/ocf/ocf.ko \
	"


##################################################

ModUSBserial=" \
	${KernelDir}/drivers/usb/serial/usbserial.ko \
	${KernelDir}/drivers/usb/serial/ftdi_sio.ko \
	"

ModIPMI=" \
	${KernelDir}/drivers/char/ipmi/ipmi_devintf.ko \
	${KernelDir}/drivers/char/ipmi/ipmi_msghandler.ko \
	${KernelDir}/drivers/char/ipmi/ipmi_si.ko \
	"

case "$BUILD_TARGET" in
	X64)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/speedstep-lib.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/p4-clockmod.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModNFQ}"

		;;
	BROMOLOW)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dma/ioat/ioatdma.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/adt7475.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/busses/i2c-i801.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dca/dca.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/libcrc32c.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/net/mdio.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModVirtualization}"
		ModuleList="${ModuleList} ${ModVFIO}"
		ModuleList="${ModuleList} ${ModNFQ}"
		ModuleList="${ModuleList} ${ModFIPS}"

		;;
	GRANTLEY)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dma/ioat/ioatdma.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/adt7475.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/busses/i2c-i801.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dca/dca.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/libcrc32c.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/net/mdio.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModIPMI}"
		ModuleList="${ModuleList} ${ModNFQ}"
		ModuleList="${ModuleList} ${ModVirtualization}"
		ModuleList="${ModuleList} ${ModVFIO}"
		ModuleList="${ModuleList} ${ModFIPS}"

		;;
	CEDARVIEW)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/speedstep-lib.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/p4-clockmod.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/syno_hddmon.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModNFQ}"

		;;
	AVOTON)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/leds/leds-lp3943.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/syno_hddmon.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModVirtualization}"
		ModuleList="${ModuleList} ${ModNFQ}"

		;;
	DOCKERX64)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/leds/leds-lp3943.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/syno_hddmon.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"

		;;
	BRASWELL)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/leds/leds-lp3943.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/backlight/generic_bl.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/syno_hddmon.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModVaapi}"
		ModuleList="${ModuleList} ${ModNFQ}"
		ModuleList="${ModuleList} ${ModVirtualization}"

		;;
	STM_MONACO)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModNetlink}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"

		;;
	KVMX64)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/ehci-pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dma/ioat/ioatdma.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/adt7475.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/busses/i2c-i801.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dca/dca.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/libcrc32c.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/net/mdio.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/block/virtio_blk.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/char/virtio_console.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/net/virtio_net.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/scsi/virtio_scsi.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/virtio/virtio.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/virtio/virtio_balloon.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/virtio/virtio_mmio.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/virtio/virtio_pci.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/virtio/virtio_ring.ko"
		ModuleList="${ModuleList} ${KernelDir}/net/9p/9pnet_virtio.ko"

		;;
	BROADWELL)
		ModuleList="${ModuleList} ${KernelDir}/net/ipv4/netfilter/ipt_MASQUERADE.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zlib_deflate/zlib_deflate.ko"
		ModuleList="${ModuleList} ${KernelDir}/fs/btrfs/btrfs.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_compress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/zstd/zstd_decompress.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/xxhash.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/arc4.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/cryptd.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/crc32c-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/algos/i2c-algo-bit.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/video/output.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/uhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/xhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/host/etxhci-hcd.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/usb-common.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/core/usbcore.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/storage/usb-storage.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/usb/class/cdc-acm.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aes-x86_64.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/ablk_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/gf128mul.ko"
		ModuleList="${ModuleList} ${KernelDir}/crypto/lrw.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/glue_helper.ko"
		ModuleList="${ModuleList} ${KernelDir}/arch/x86/crypto/aesni-intel.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dma/ioat/ioatdma.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/hwmon/adt7475.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/i2c/busses/i2c-i801.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/leds/leds-lp3943.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/dca/dca.ko"
		ModuleList="${ModuleList} ${KernelDir}/lib/libcrc32c.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/net/mdio.ko"
		ModuleList="${ModuleList} ${ModCPUFreq}"
		ModuleList="${ModuleList} ${KernelDir}/drivers/thermal/thermal_sys.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/acpi/processor.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/acpi-cpufreq.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/mperf.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_performance.ko"
		ModuleList="${ModuleList} ${KernelDir}/drivers/cpufreq/cpufreq_powersave.ko"
		ModuleList="${ModuleList} ${ModBridge} ${ModTC} ${ModFwSecurity}"
		ModuleList="${ModuleList} ${ModVlan}"
		ModuleList="${ModuleList} ${ModUSBserial}"
		ModuleList="${ModuleList} ${ModIPsec}"
		ModuleList="${ModuleList} ${KernelDir}/net/netfilter/xt_mac.ko"
		ModuleList="${ModuleList} ${ModZram}"
		ModuleList="${ModuleList} ${ModIPv6Tun}"
		ModuleList="${ModuleList} ${ModVirtualization}"
		ModuleList="${ModuleList} ${ModNFQ}"
		ModuleList="${ModuleList} ${ModFIPS}"

		;;
	*)
		return
		;;
esac

rm -f ${ImageDir}/modules/*
mkdir -p ${DebDevBuild}/image/modules;
mkdir -p ${DebDevBuild}/image/modulesdebug;
# Check if modules are built correctly
for EACHFILE in $ModuleList;
do
	if [ -f "$EACHFILE" ]; then
		cp -f ${EACHFILE} ${DebDevBuild}/image/modules
		cp -f ${EACHFILE} ${DebDevBuild}/image/modulesdebug
		FN=`basename ${EACHFILE}`
		echo "${KERNEL_STRIP} -d ${DebDevBuild}/image/modules/$FN"
		${KERNEL_STRIP} -d ${DebDevBuild}/image/modules/$FN
		ls -l $EACHFILE
	else
		echo "Error! file $EACHFILE does not existed!"
	fi
done

# For auto generate the list of insert modules.
KERNEL_MODULES_TABLE=".synotmp-module-list.conf"
if [ -f ${KERNEL_MODULES_TABLE} ];then
	rm -f ${KERNEL_MODULES_TABLE}
fi
echo "$ModuleList" > ${KERNEL_MODULES_TABLE}

case ${BUILD_TARGET} in
MARVELL_88F6281|MARVELL_88F6180|MARVELL_ARMADAXP|MARVELL_ARMADA370|MINDSPEED_COMCERTO2K|ALPINE|STM_MONACO)
	ZIMAGE="${KernelDir}/arch/arm/boot/uImage"
	;;
PPC_853X)
	ZIMAGE="${KernelDir}/arch/powerpc/boot/uImage"
	;;
PPC_854X)
	ZIMAGE="${KernelDir}/arch/powerpc/boot/cuImage.syno854x"
	;;
X64|BROMOLOW|CEDARVIEW|AVOTON|DOCKERX64|GRANTLEY|BRASWELL|BROADWELL|KVMX64)
	ZIMAGE="${KernelDir}/arch/x86_64/boot/bzImage"
	;;
EVANSPORT)
	ZIMAGE="${KernelDir}/arch/x86/boot/bzImage"
	;;
*)
	skip=1
	;;
esac

KernelDirBase=`basename $KernelDir`
CurDir=`pwd`
CurDirBase=`basename $CurDir`
if [ "$KernelDirBase" != "$CurDirBase" ]; then
	skip=1
fi

if [ $skip -eq 1 ]; then
	SkipThisProject
	return
fi

if [ -r "$ZIMAGE" ]; then
	cp -fv $ZIMAGE ${DebDevBuild}/image/zImage
else
	echo "$ZIMAGE does not exist...."
	exit 1
fi

SystemMap="${KernelDir}/System.map"
VmLinux="${KernelDir}/vmlinux"

mkdir -p ${DebDevBuild}/image/synodebug

if [ -r "$SystemMap" ]; then
	cp -fv $SystemMap ${DebDevBuild}/image/synodebug/
fi
if [ -r "$VmLinux" ]; then
	cp -fv $VmLinux ${DebDevBuild}/image/synodebug/
	gzip -f9 ${DebDevBuild}/image/synodebug/vmlinux
fi

install -Dm755 "scripts/sign-file" "${DebDevBuild}/usr/syno/bin/sign-file"

# shellcheck source=/dev/null
source "$ScriptsDir/include/kernel-devel"

install -Dm644 "include/linux/syno_gpio.h" "$WRKDIR/include/linux/syno_gpio.h"
