xref: /haiku/build/jam/packages/Haiku (revision 16c83730262f1e4f0fc69d80744bb36dcfbbe3af)
1local architecture = $(HAIKU_PACKAGING_ARCHS[1]) ;
2
3
4local haikuPackage = haiku.hpkg ;
5HaikuPackage $(haikuPackage) ;
6
7
8# wifi firmware
9for driver in $(SYSTEM_ADD_ONS_DRIVERS_NET) {
10	local package = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_PACKAGE) ] ;
11	local archive = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_ARCHIVE) ] ;
12	local extract = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_DO_EXTRACT) ] ;
13	if $(archive) {
14		AddWifiFirmwareToPackage $(driver) : $(package) : $(archive)
15			: $(extract) ;
16	}
17	local packages = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_PACKAGES) ] ;
18	local archives = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_ARCHIVES) ] ;
19	for archive in $(archives) {
20		AddWifiFirmwareToPackage $(driver) : $(packages[1]) : $(archive)
21			: $(extract) ;
22		packages = $(packages[2-]) ;
23	}
24}
25
26
27# modules
28AddFilesToPackage add-ons kernel bus_managers : $(SYSTEM_ADD_ONS_BUS_MANAGERS) ;
29AddFilesToPackage add-ons kernel busses agp_gart : <agp_gart>intel@x86,x86_64 ;
30
31if $(HAIKU_ATA_STACK) = 1 {
32	AddFilesToPackage add-ons kernel busses ata
33		: generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 ;
34} else {
35	AddFilesToPackage add-ons kernel busses ide
36		: generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 ;
37}
38
39AddFilesToPackage add-ons kernel busses random : virtio_rng ;
40AddFilesToPackage add-ons kernel busses scsi : ahci virtio_scsi ;
41AddFilesToPackage add-ons kernel busses usb : <usb>uhci <usb>ohci <usb>ehci ;
42AddFilesToPackage add-ons kernel busses virtio : virtio_pci ;
43AddFilesToPackage add-ons kernel console : vga_text ;
44AddFilesToPackage add-ons kernel debugger
45	: <kdebug>demangle <kdebug>disasm@x86 <kdebug>hangman
46	  <kdebug>invalidate_on_exit <kdebug>usb_keyboard <kdebug>qrencode
47	  <kdebug>run_on_exit ;
48AddFilesToPackage add-ons kernel file_systems : $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ;
49AddFilesToPackage add-ons kernel generic
50	: ata_adapter@ata bios@x86,x86_64 dpc ide_adapter@ide
51		locked_pool mpu401 scsi_periph <module>tty ;
52AddFilesToPackage add-ons kernel partitioning_systems
53	: amiga_rdb apple efi_gpt intel session ;
54AddFilesToPackage add-ons kernel interrupt_controllers : openpic@ppc ;
55
56if $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 {
57	AddFilesToPackage add-ons kernel cpu : generic_x86 ;
58}
59
60# drivers
61AddNewDriversToPackage disk scsi	: scsi_cd scsi_disk ;
62AddNewDriversToPackage disk virtual : virtio_block ;
63AddNewDriversToPackage power		: enhanced_speedstep@x86 ;
64AddNewDriversToPackage power		: acpi_battery@x86 ;
65#AddNewDriversToPackage display		: display_controls@x86 ;
66
67# legacy drivers
68AddDriversToPackage					: console dprintf null <driver>tty zero ;
69AddDriversToPackage audio hmulti	: $(SYSTEM_ADD_ONS_DRIVERS_AUDIO) ;
70AddDriversToPackage audio old		: $(SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD) ;
71AddDriversToPackage midi			: $(SYSTEM_ADD_ONS_DRIVERS_MIDI) ;
72AddDriversToPackage bus				: usb_raw fw_raw@x86 ;
73AddDriversToPackage disk floppy		: pc_floppy@x86 ;
74AddDriversToPackage disk usb		: usb_disk ;
75AddDriversToPackage disk usb		: usb_floppy ;
76AddDriversToPackage printer usb		: usb_printer ;
77AddDriversToPackage disk virtual	: nbd ;
78AddDriversToPackage dvb				: cx23882 ;
79AddDriversToPackage graphics		: $(SYSTEM_ADD_ONS_DRIVERS_GRAPHICS) ;
80AddDriversToPackage input			: ps2_hid usb_hid wacom ;
81AddDriversToPackage misc			: <driver>poke <driver>mem ;
82AddDriversToPackage net				: $(SYSTEM_ADD_ONS_DRIVERS_NET) ;
83AddDriversToPackage ports			: usb_serial ;
84AddDriversToPackage power			: $(SYSTEM_ADD_ONS_DRIVERS_POWER) ;
85
86# kernel
87AddFilesToPackage : <revisioned>kernel_$(TARGET_ARCH) ;
88
89# libs
90AddLibrariesToPackage lib
91	: [ HaikuImageGetSystemLibs ] [ HaikuImageGetPrivateSystemLibs ] ;
92
93# libnetwork.so replaces quite a few libraries
94if $(HAIKU_GCC_VERSION_$(architecture)[1]) = 2 {
95	local libNetworkAliases = libsocket.so libbind.so libnet.so ;
96	local lib ;
97	for lib in $(libNetworkAliases) {
98		AddSymlinkToPackage lib : libnetwork.so : $(lib) ;
99	}
100
101	AddSymlinkToPackage lib : libbnetapi.so : libnetapi.so ;
102}
103
104
105# TODO: Remove when the packages have been rebuilt!
106AddSymlinkToPackage lib : libbe.so : liblocale.so ;
107
108# servers
109AddFilesToPackage servers : $(SYSTEM_SERVERS) ;
110
111# apps
112AddFilesToPackage  				: runtime_loader Deskbar Tracker ;
113AddFilesToPackage bin			: $(SYSTEM_BIN) consoled ;
114AddFilesToPackage apps			: $(SYSTEM_APPS) ;
115AddFilesToPackage preferences	: $(SYSTEM_PREFERENCES) ;
116AddFilesToPackage demos			: $(SYSTEM_DEMOS) ;
117
118SEARCH on install-wifi-firmwares.sh = [ FDirName $(HAIKU_TOP) data bin ] ;
119AddFilesToPackage bin : install-wifi-firmwares.sh ;
120
121AddSymlinkToPackage bin : bash : sh ;
122AddSymlinkToPackage bin : trash : untrash ;
123AddSymlinkToPackage bin : less : more ;
124AddSymlinkToPackage bin : gzip : gunzip ;
125AddSymlinkToPackage bin : gzip : zcat ;
126AddSymlinkToPackage bin : zdiff : zcmp ;
127AddSymlinkToPackage bin : unzip : zipinfo ;
128AddSymlinkToPackage bin : gawk : awk ;
129
130# scripts and data files
131local bootScripts = Bootscript Bootscript.cd SetupEnvironment Netscript
132	InstallerInitScript InstallerFinishScript ;
133SEARCH on $(bootScripts) = [ FDirName $(HAIKU_TOP) data system boot ] ;
134AddFilesToPackage boot : $(bootScripts) ;
135
136# post install scripts
137local postInstallFiles = add_catalog_entry_attributes.sh
138	default_deskbar_items.sh ;
139postInstallFiles = $(postInstallFiles:G=post-install) ;
140SEARCH on $(postInstallFiles)
141	= [ FDirName $(HAIKU_TOP) data system boot post_install ] ;
142AddFilesToPackage boot post-install : $(postInstallFiles) ;
143
144# Gutenprint data files
145CopyDirectoryToPackage data
146	: [ FDirName $(HAIKU_TOP) src libs print libgutenprint src xml ]
147	: gutenprint : -x *.c -x Makefile.am -x Makefile.in ;
148
149# artwork and sounds
150local logoArtwork =
151	$(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - big.png"
152	$(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - normal.png" ;
153SEARCH on $(logoArtwork) = [ FDirName $(HAIKU_TOP) data artwork ] ;
154AddFilesToPackage data artwork : $(logoArtwork) ;
155
156# Mail spell check dictionaries
157local spellFiles = words geekspeak ;
158spellFiles = $(spellFiles:G=spell) ;
159SEARCH on $(spellFiles) = [ FDirName $(HAIKU_TOP) src apps mail ] ;
160AddFilesToPackage data spell_check word_dictionary : $(spellFiles) ;
161
162local fortuneFiles = [ Glob $(HAIKU_TOP)/data/system/data/fortunes
163	: [a-zA-Z0-9]* ] ;
164fortuneFiles = $(fortuneFiles:G=data!fortunes) ;
165AddFilesToPackage data fortunes : $(fortuneFiles) ;
166
167local fontDir = [ FDirName $(HAIKU_TOP) data system data fonts ] ;
168local psFonts = [ Glob $(fontDir)/psfonts : *.afm *.pfb ] ;
169local ttFonts = [ Glob $(fontDir)/ttfonts : *.ttf ] ;
170AddFilesToPackage data fonts psfonts : $(psFonts) ;
171AddFilesToPackage data fonts ttfonts : $(ttFonts) ;
172
173local cannaDir = [ FDirName $(HAIKU_TOP) data system data Canna ] ;
174local cannaDefault = [ Glob $(cannaDir)/default : *.canna *.gz ] ;
175local cannaDic = [ Glob $(cannaDir)/dic : *.cbp ] ;
176local cannaDicCanna = [ Glob $(cannaDir)/dic/canna
177	: *.cld *.ctd *.cbd *.dir ] ;
178AddFilesToPackage data Canna default	: $(cannaDefault) ;
179AddFilesToPackage data Canna dic		: $(cannaDic) ;
180AddFilesToPackage data Canna dic canna	: $(cannaDicCanna) ;
181#AddDirectoryToPackage data Canna dic group ;
182#AddDirectoryToPackage data Canna dic user ;
183	# TODO: If those serve any purpose, they should probably live in a writable
184	# subtree.
185
186local keymapFiles = [ Glob [ FDirName $(HAIKU_TOP) src data keymaps ]
187	: *.keymap ] ;
188keymapFiles = $(keymapFiles:BG=keymap) ;
189AddFilesToPackage data Keymaps : $(keymapFiles) ;
190AddSymlinkToPackage data Keymaps : Swedish : Finnish ;
191AddSymlinkToPackage data Keymaps : Slovene : Croatian ;
192AddSymlinkToPackage data Keymaps : US-International : Brazilian ;
193
194# Copy keyboard layout files to the image one-by-one.
195local keyboardLayoutsDir
196	= [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ] ;
197local keyboardLayoutFiles =
198	"Generic 104-key"
199	"Generic 105-key International"
200	"Kinesis Advantage"
201	"Kinesis Ergo Elan International"
202	"TypeMatrix 2030" ;
203keyboardLayoutFiles = $(keyboardLayoutFiles:G=keyboard-layout) ;
204SEARCH on $(keyboardLayoutFiles) = $(keyboardLayoutsDir) ;
205AddFilesToPackage data KeyboardLayouts
206	: $(keyboardLayoutFiles) ;
207
208# Add Apple Aluminum keyboard layout files to the image in an Apple Aluminum
209# subdirectory. The subdirectory is turned into a submenu in the Layout menu
210# of the Keymap preference app.
211local appleAluminumDir
212	= [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts
213		Apple\ Aluminum ] ;
214local appleAluminumFiles =
215	"Apple Aluminium Extended International"
216	"Apple Aluminium International"
217	"Apple Aluminum (US)"
218	"Apple Aluminum Extended (US)" ;
219appleAluminumFiles = $(appleAluminumFiles:G=keyboard-layout) ;
220SEARCH on $(appleAluminumFiles) = $(appleAluminumDir) ;
221AddFilesToPackage data KeyboardLayouts Apple\ Aluminum
222	: $(appleAluminumFiles) ;
223
224# Add ThinkPad keyboard layout files to the image in a ThinkPad
225# subdirectory. The subdirectory is turned into a submenu in the Layout menu
226# of the Keymap preference app.
227local thinkpadDir
228	= [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ThinkPad ] ;
229local thinkPadFiles =
230	"ThinkPad (US)"
231	"ThinkPad International"
232	"ThinkPad T400s (US)"
233	"ThinkPad T400s International"
234	"ThinkPad X1 (US)"
235	"ThinkPad X1 International"
236	"ThinkPad X100e (US)"
237	"ThinkPad X100e International" ;
238thinkPadFiles = $(thinkPadFiles:G=keyboard-layout) ;
239SEARCH on $(thinkPadFiles) = $(thinkpadDir) ;
240AddFilesToPackage data KeyboardLayouts ThinkPad
241	: $(thinkPadFiles) ;
242
243# boot module links
244AddBootModuleSymlinksToPackage
245	acpi@x86 ata@ata pci isa@x86 config_manager dpc
246	ide@ide scsi usb
247	openpic@ppc
248	ata_adapter@ata ide_adapter@ide locked_pool scsi_periph
249	ahci generic_ide_pci it8211 legacy_sata silicon_image_3112
250	ide_isa@x86
251	<usb>uhci <usb>ohci <usb>ehci
252	scsi_cd scsi_disk usb_disk
253	virtio virtio_pci virtio_block virtio_scsi
254	efi_gpt
255	intel
256	bfs packagefs
257;
258
259# add-ons
260AddFilesToPackage add-ons accelerants	: $(SYSTEM_ADD_ONS_ACCELERANTS) ;
261AddFilesToPackage add-ons Translators	: $(SYSTEM_ADD_ONS_TRANSLATORS) ;
262AddFilesToPackage add-ons locale catalogs : $(SYSTEM_ADD_ONS_LOCALE_CATALOGS) ;
263
264AddFilesToPackage add-ons opengl :
265	x86 @{
266		Legacy\ Software\ Rasterizer@gcc2
267		Software\ Rasterizer@!gcc2
268	}@ # x86
269;
270
271AddFilesToPackage add-ons mail_daemon inbound_protocols		: POP3 IMAP ;
272AddFilesToPackage add-ons mail_daemon outbound_protocols 	: SMTP ;
273AddFilesToPackage add-ons mail_daemon inbound_filters
274	: MatchHeader SpamFilter NewMailNotification ;
275AddFilesToPackage add-ons mail_daemon outbound_filters		: Fortune ;
276
277AddFilesToPackage add-ons media : $(SYSTEM_ADD_ONS_MEDIA) ;
278AddFilesToPackage add-ons media plugins : $(SYSTEM_ADD_ONS_MEDIA_PLUGINS) ;
279
280AddFilesToPackage add-ons Tracker
281	: FileType Mark\ as… Mark\ as\ Read Open\ Target\ Folder
282		Open\ Terminal ZipOMatic ;
283AddSymlinkToPackage add-ons Tracker
284	: /boot/system/preferences/Backgrounds : Background ;
285AddSymlinkToPackage add-ons Tracker
286	: /boot/system/apps/TextSearch : TextSearch ;
287AddSymlinkToPackage add-ons Tracker
288	: /boot/system/apps/DiskUsage : DiskUsage ;
289
290AddFilesToPackage add-ons input_server devices
291	: <input>keyboard <input>mouse <input>tablet <input>wacom ;
292AddFilesToPackage add-ons input_server filters
293	: screen_saver shortcut_catcher ;
294
295AddFilesToPackage add-ons kernel network : <net>notifications stack ;
296AddFilesToPackage add-ons kernel network : dns_resolver ;
297AddFilesToPackage add-ons kernel network devices : $(SYSTEM_NETWORK_DEVICES) ;
298AddFilesToPackage add-ons kernel network datalink_protocols
299	: $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ;
300AddFilesToPackage add-ons kernel network ppp: $(SYSTEM_NETWORK_PPP) ;
301AddFilesToPackage add-ons kernel network protocols
302	: $(SYSTEM_NETWORK_PROTOCOLS) ;
303
304AddFilesToPackage add-ons Print : $(SYSTEM_ADD_ONS_PRINT) ;
305AddFilesToPackage add-ons Print transport
306	: $(SYSTEM_ADD_ONS_PRINT_TRANSPORT) ;
307AddFilesToPackage add-ons Screen\ Savers : $(SYSTEM_ADD_ONS_SCREENSAVERS) ;
308
309AddFilesToPackage add-ons disk_systems
310	: <disk_system>intel <disk_system>gpt <disk_system>bfs <disk_system>ntfs ;
311
312
313# the MIME DB
314CopyDirectoryToPackage data : <mimedb>mime_db : : : isTarget ;
315
316
317# Deskbar menu symlinks
318
319# "Applications" links
320DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc
321	Devices DiskProbe DriveSetup DiskUsage Expander HaikuDepot Icon-O-Matic
322	Installer Magnify Mail MediaConverter MediaPlayer MidiPlayer People PoorMan
323	Screenshot SoundRecorder StyledEdit Terminal TV
324;
325local linkTarget ;
326for linkTarget in $(DESKBAR_APPLICATIONS) {
327	AddSymlinkToPackage data deskbar menu Applications
328		: ../../../../apps/$(linkTarget) : $(linkTarget) ;
329}
330
331# "Desktop applets" links
332DESKBAR_DESKTOP_APPLETS = LaunchBox NetworkStatus PowerStatus ProcessController
333	Workspaces
334;
335for linkTarget in $(DESKBAR_DESKTOP_APPLETS) {
336	AddSymlinkToPackage data deskbar menu Desktop\ applets
337		: ../../../../apps/$(linkTarget) : $(linkTarget) ;
338}
339
340# "Preferences" links
341AddDirectoryToPackage data deskbar menu Preferences ;
342DESKBAR_PREFERENCES = $(SYSTEM_PREFERENCES:B) ;
343for linkTarget in $(DESKBAR_PREFERENCES) {
344	AddSymlinkToPackage data deskbar menu Preferences
345		: ../../../../preferences/$(linkTarget)
346		: $(linkTarget) ;
347}
348
349# "Demo" links
350AddDirectoryToPackage data deskbar menu Demos ;
351for linkTarget in $(SYSTEM_DEMOS) {
352	AddSymlinkToPackage data deskbar menu Demos
353		: ../../../../demos/$(linkTarget) : $(linkTarget) ;
354}
355
356# Deskbar menu entries file
357AddFilesToPackage data deskbar : <deskbar>menu_entries ;
358
359
360# optional
361# TODO: We should probably build another package (including the data files
362# above) that can be installed, if desired.
363AddFilesToPackage optional add-ons input_server methods : canna ;
364
365
366# PDF Writer enconding files
367CopyDirectoryToPackage data
368	: [ FDirName $(HAIKU_TOP) src add-ons print drivers pdf encoding ]
369	: "PDF Writer" : -x Jamfile ;
370
371# licenses
372CopyDirectoryToPackage data
373	: [ FDirName $(HAIKU_TOP) data system data licenses ]
374	: licenses ;
375
376# Copy documentation as per DiskUsage's license requirement.
377CopyDirectoryToPackage documentation
378	: [ FDirName $(HAIKU_TOP) docs apps diskusage ]
379	: diskusage ;
380
381# Copy documentation and sample programs as per PDFlib Lite's license
382# requirement.
383CopyDirectoryToPackage documentation
384	: [ FDirName $(HAIKU_TOP) src libs pdflib doc ]
385	: pdflib ;
386CopyDirectoryToPackage develop sample-code
387	: [ FDirName $(HAIKU_TOP) src libs pdflib bind pdflib ]
388	: pdflib ;
389
390
391# empty directory
392AddDirectoryToPackage data empty ;
393
394
395BuildHaikuPackage $(haikuPackage) : haiku ;
396