1# This file defines what ends up in the network boot archive and it executes the
2# rules building the archive.
3
4
5SYSTEM_NETWORK_DEVICES = ethernet loopback ;
6SYSTEM_NETWORK_DATALINK_PROTOCOLS = ethernet_frame <module>arp loopback_frame ;
7SYSTEM_NETWORK_PROTOCOLS = ipv4 tcp udp icmp unix ;
8
9SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures
10	x86 @{
11		3com atheros813x
12		broadcom440x broadcom570x ipro1000
13		rtl8139 rtl81xx
14		via_rhine ipro100 nforce
15		marvell_yukon syskonnect
16		attansic_l2 ar81xx
17	}@ # x86
18
19	etherpci pegasus rtl8169 sis900 usb_ecm wb840
20	#vlance
21] ;
22SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
23	pci isa@x86 ide@ide ata@ata
24	scsi config_manager agp_gart
25] ;
26SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs fat iso9660 ;
27
28
29# modules
30AddFilesToNetBootArchive system add-ons kernel bus_managers
31	: $(SYSTEM_ADD_ONS_BUS_MANAGERS) ;
32AddFilesToNetBootArchive system add-ons kernel busses agp_gart
33	: <agp_gart>intel@x86 ;
34AddFilesToNetBootArchive system add-ons kernel busses ide
35	: generic_ide_pci ide_isa@x86 silicon_image_3112 ;
36AddFilesToNetBootArchive system add-ons kernel busses scsi
37	: ahci ;
38AddFilesToNetBootArchive system add-ons kernel console : vga_text ;
39AddFilesToNetBootArchive system add-ons kernel file_systems
40	: $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ;
41AddFilesToNetBootArchive system add-ons kernel generic
42	: ide_adapter@ide ata_adapter@ata locked_pool scsi_periph ;
43AddFilesToNetBootArchive system add-ons kernel partitioning_systems
44	: intel session ;
45AddFilesToNetBootArchive system add-ons kernel interrupt_controllers
46	: openpic@ppc ;
47
48if $(TARGET_ARCH) = x86 {
49	AddFilesToNetBootArchive system add-ons kernel cpu : generic_x86 ;
50}
51
52# drivers
53AddNewDriversToNetBootArchive disk scsi	: scsi_cd scsi_disk ;
54#AddDriversToNetBootArchive disk virtual : nbd ;
55AddDriversToNetBootArchive disk virtual	: remote_disk ;
56AddDriversToNetBootArchive net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ;
57
58# kernel
59AddFilesToNetBootArchive system : <revisioned>kernel_$(TARGET_ARCH) ;
60
61# scripts and data files
62
63local driverSettingsFiles = <driver-settings>kernel ;
64SEARCH on $(driverSettingsFiles)
65	= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
66AddFilesToNetBootArchive home config settings kernel drivers
67	: $(driverSettingsFiles) ;
68
69# add-ons
70AddFilesToNetBootArchive system add-ons kernel network
71	: <net>notifications stack ;
72AddFilesToNetBootArchive system add-ons kernel network devices
73	: $(SYSTEM_NETWORK_DEVICES) ;
74AddFilesToNetBootArchive system add-ons kernel network datalink_protocols
75	: $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ;
76AddFilesToNetBootArchive system add-ons kernel network ppp
77	: $(SYSTEM_NETWORK_PPP) ;
78AddFilesToNetBootArchive system add-ons kernel network protocols
79	: $(SYSTEM_NETWORK_PROTOCOLS) ;
80
81# boot module links
82AddBootModuleSymlinksToNetBootArchive
83	$(SYSTEM_ADD_ONS_BUS_MANAGERS)
84	ahci generic_ide_pci ide_isa@x86 silicon_image_3112
85	$(SYSTEM_ADD_ONS_FILE_SYSTEMS)
86	ide_adapter@ide ata_adapter@ata locked_pool scsi_periph
87	intel session
88	openpic@ppc
89	generic_x86@x86
90#	nbd
91	remote_disk
92	$(SYSTEM_ADD_ONS_DRIVERS_NET)
93	stack
94	$(SYSTEM_NETWORK_DEVICES)
95	$(SYSTEM_NETWORK_DATALINK_PROTOCOLS)
96	$(SYSTEM_NETWORK_PPP)
97	$(SYSTEM_NETWORK_PROTOCOLS)
98;
99
100
101#pragma mark - Build The Archive
102
103# archive target
104HAIKU_NET_BOOT_ARCHIVE = haiku-netboot.tgz ;
105MakeLocate $(HAIKU_NET_BOOT_ARCHIVE) : $(HAIKU_OUTPUT_DIR) ;
106
107# the pseudo target all archive contents is attached to
108NotFile $(HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME) ;
109
110# prepare the script that initializes the shell variables
111local initVarsScript = <NetBootArchive>haiku-netboot-init-vars ;
112local script = $(initVarsScript) ;
113MakeLocate $(script) : $(HAIKU_OUTPUT_DIR) ;
114Always $(script) ;
115
116AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ;
117AddVariableToScript $(script) : addBuildCompatibilityLibDir
118	: $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ;
119AddTargetVariableToScript $(script) : <build>copyattr ;
120
121# create the other scripts
122local makeDirsScript = <NetBootArchive>haiku-netboot-make-dirs ;
123local copyFilesScript = <NetBootArchive>haiku-netboot-copy-files ;
124MakeLocate $(makeDirsScript) $(copyFilesScript) : $(HAIKU_OUTPUT_DIR) ;
125
126CreateNetBootArchiveMakeDirectoriesScript $(makeDirsScript) ;
127CreateNetBootArchiveCopyFilesScript $(copyFilesScript) ;
128
129# build the archive
130
131BuildNetBootArchive $(HAIKU_NET_BOOT_ARCHIVE) :
132	$(initVarsScript)
133	$(makeDirsScript)
134	$(copyFilesScript)
135;
136
137# remove the scripts we have generated
138RmTemps $(HAIKU_NET_BOOT_ARCHIVE) :
139	$(initVarsScript)
140	$(makeDirsScript)
141	$(copyFilesScript)
142;
143
144NotFile haiku-netboot-archive ;
145Depends haiku-netboot-archive : $(HAIKU_NET_BOOT_ARCHIVE) ;
146