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 atheros81xx
12		broadcom440x broadcom570x ipro1000
13		rtl8139 
14		via_rhine ipro100 nforce
15		marvell_yukon sis900 syskonnect
16		attansic_l2
17	}@ # x86
18
19	rtl81xx etherpci pegasus usb_ecm wb840
20] ;
21SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
22	pci isa@x86 ata
23	scsi agp_gart 
24	dpc acpi 
25] ;
26SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs packagefs ;
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
39	: vga_text ;
40AddFilesToNetBootArchive system add-ons kernel file_systems
41	: $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ;
42AddFilesToNetBootArchive system add-ons kernel generic
43	: ata_adapter locked_pool scsi_periph ;
44AddFilesToNetBootArchive system add-ons kernel partitioning_systems
45	: intel session ;
46AddFilesToNetBootArchive system add-ons kernel interrupt_controllers
47	: openpic@ppc ;
48
49if $(TARGET_ARCH) = x86 {
50	AddFilesToNetBootArchive system add-ons kernel cpu
51		: generic_x86 ;
52}
53
54# drivers
55AddNewDriversToNetBootArchive disk scsi	: scsi_cd scsi_disk ;
56#AddDriversToNetBootArchive disk virtual : nbd ;
57AddDriversToNetBootArchive disk virtual	: remote_disk ;
58AddDriversToNetBootArchive net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ;
59
60# kernel
61AddFilesToNetBootArchive system
62	: <revisioned>kernel_$(TARGET_ARCH) ;
63
64# scripts and data files
65
66local driverSettingsFiles = <driver-settings>kernel ;
67SEARCH on $(driverSettingsFiles)
68	= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
69AddFilesToNetBootArchive home config settings kernel drivers
70	: $(driverSettingsFiles) ;
71
72# add-ons
73AddFilesToNetBootArchive system add-ons kernel network
74	: stack ;
75AddFilesToNetBootArchive system add-ons kernel network devices
76	: $(SYSTEM_NETWORK_DEVICES) ;
77AddFilesToNetBootArchive
78	system add-ons kernel network datalink_protocols
79	: $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ;
80AddFilesToNetBootArchive system add-ons kernel network ppp
81	: $(SYSTEM_NETWORK_PPP) ;
82AddFilesToNetBootArchive
83	system add-ons kernel network protocols
84	: $(SYSTEM_NETWORK_PROTOCOLS) ;
85
86# boot module links
87AddBootModuleSymlinksToNetBootArchive
88	$(SYSTEM_ADD_ONS_BUS_MANAGERS)
89	ahci generic_ide_pci ide_isa@x86 silicon_image_3112
90	$(SYSTEM_ADD_ONS_FILE_SYSTEMS)
91	ata_adapter locked_pool scsi_periph
92	intel session
93	openpic@ppc
94	generic_x86@x86
95#	nbd
96	remote_disk
97	$(SYSTEM_ADD_ONS_DRIVERS_NET)
98	stack
99	$(SYSTEM_NETWORK_DEVICES)
100	$(SYSTEM_NETWORK_DATALINK_PROTOCOLS)
101	$(SYSTEM_NETWORK_PPP)
102	$(SYSTEM_NETWORK_PROTOCOLS)
103;
104
105
106#pragma mark - Build The Archive
107
108# archive target
109HAIKU_NET_BOOT_ARCHIVE = haiku-netboot.tgz ;
110MakeLocate $(HAIKU_NET_BOOT_ARCHIVE) : $(HAIKU_OUTPUT_DIR) ;
111
112# the pseudo target all archive contents is attached to
113NotFile $(HAIKU_NET_BOOT_ARCHIVE_CONTAINER_NAME) ;
114
115# prepare the script that initializes the shell variables
116local initVarsScript = <NetBootArchive>haiku-netboot-init-vars ;
117local script = $(initVarsScript) ;
118MakeLocate $(script) : $(HAIKU_OUTPUT_DIR) ;
119Always $(script) ;
120
121AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ;
122AddVariableToScript $(script) : addBuildCompatibilityLibDir
123	: "export $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR)" ;
124AddTargetVariableToScript $(script) : <build>copyattr ;
125
126# create the other scripts
127local makeDirsScript = <NetBootArchive>haiku-netboot-make-dirs ;
128local copyFilesScript = <NetBootArchive>haiku-netboot-copy-files ;
129MakeLocate $(makeDirsScript) $(copyFilesScript) : $(HAIKU_OUTPUT_DIR) ;
130
131CreateNetBootArchiveMakeDirectoriesScript $(makeDirsScript) ;
132CreateNetBootArchiveCopyFilesScript $(copyFilesScript) ;
133
134# build the archive
135
136BuildNetBootArchive $(HAIKU_NET_BOOT_ARCHIVE) :
137	$(initVarsScript)
138	$(makeDirsScript)
139	$(copyFilesScript)
140;
141
142# remove the scripts we have generated
143RmTemps $(HAIKU_NET_BOOT_ARCHIVE) :
144	$(initVarsScript)
145	$(makeDirsScript)
146	$(copyFilesScript)
147;
148
149NotFile haiku-netboot-archive ;
150Depends haiku-netboot-archive : $(HAIKU_NET_BOOT_ARCHIVE) ;
151