-
-
Notifications
You must be signed in to change notification settings - Fork 338
/
HaikuImage
991 lines (859 loc) · 36.2 KB
/
HaikuImage
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
# This file defines what ends up on the Haiku image (respectively in the Haiku
# installation directory) and it executes the rules building the image
# (respectively installing the files in the installation directory).
SYSTEM_BIN = [ FFilterByBuildFeatures
"["
addattr alert arp
base64 basename bash bc beep bfsinfo
cal cat catattr checkfs checkitout chgrp chmod chop chown chroot cksum clear
clockconfig cmp collectcatkeys comm compress copyattr CortexAddOnHost cp
csplit cut date dc dd desklink df diff diff3 dircolors dirname
diskimage draggers driveinfo dstcheck du dumpcatalog
echo eject env error expand expr
factor false fdinfo ffm filepanel find finddir FirstBootPrompt fmt fold
fortune frcode ftp ftpd funzip fwcontrol
gawk gdb@x86 getlimits groups gzip gzexe
hd head hey hostname
id ident ifconfig <bin>install installsound iroster isvolume
ideinfo@ide idestatus@ide
join kernel_debugger keymap kill
less lessecho lesskey link linkcatkeys listarea listattr listimage listdev
listport listres listsem listusb ln locale locate logger login logname ls
lsindex
mail2mbox makebootable mbox2mail md5sum merge message mimeset mkdos mkdir
mkfifo mkfs mkindex mktemp modifiers mount mount_nfs mountvolume mv
netcat netstat nl nohup notify nproc
od open
passwd paste patch pathchk pc ping ping6 play playfile playsound playwav
pr prio printenv printf profile ps ptx pwd
query quit
rc readlink reindex release renice rlog rm rmattr rmindex rmdir roster
route
safemode screen_blanker screenmode screenshot sdiff setdecor setmime settype
setversion setvolume seq sha1sum shar shred shuf shutdown sleep sort
spamdbm split stat strace stty su sum sync sysinfo
tac tail tcpdump tcptester tee telnet telnetd test timeout top touch
tput tr traceroute translate trash true truncate tsort tty
uname unchop unexpand unmount uniq unlink unshar unzip unzipsfx
<bin>updatedb uptime urlwrapper useradd uudecode uuencode
vdir version vmstat
waitfor watch wc wget whoami writembr@x86 xargs xres
yes
zdiff zforce zgrep zip zipcloak <bin>zipgrep zipnote zipsplit zmore znew
] ;
SYSTEM_APPS = [ FFilterByBuildFeatures
AboutSystem ActivityMonitor BootManager@x86 CharacterMap
CodyCam DeskCalc Devices DiskProbe DiskUsage DriveSetup CDPlayer Debugger
Expander GLInfo@x86 Icon-O-Matic Installer LaunchBox Magnify Mail
MediaConverter MediaPlayer MidiPlayer NetworkStatus PackageInstaller People
PoorMan PowerStatus ProcessController Screenshot ShowImage SoundRecorder
StyledEdit Terminal TextSearch TV WebWatch Workspaces
] ;
SYSTEM_PREFERENCES = [ FFilterByBuildFeatures
Appearance Backgrounds CPUFrequency DataTranslations
<preference>Deskbar E-mail FileTypes Keyboard Keymap Locale Media
Mouse Network Notifications Printers Screen ScreenSaver
Shortcuts Sounds Time Touchpad <preference>Tracker VirtualMemory
] ;
SYSTEM_DEMOS = [ FFilterByBuildFeatures
BSnow Chart Clock Cortex FontDemo GLTeapot@x86
$(HAIKU_INCLUDE_TRADEMARKS)Haiku3d@x86 Mandelbrot OverlayImage Pairs
Playground Pulse Sudoku
] ;
SYSTEM_LIBS = [ FFilterByBuildFeatures
libbe.so libbsd.so libbnetapi.so
libdebug.so libdevice.so
libgame.so libGL.so@x86 libglut.so@x86
libgnu.so libmail.so libmedia.so libmidi.so libmidi2.so
libnetwork.so
<revisioned>libroot.so libroot-addon-icu.so
libscreensaver.so
libtextencoding.so libtiff.so libtracker.so libtranslation.so
$(HAIKU_SHARED_LIBSTDC++) $(HAIKU_SHARED_LIBSUPC++)
] ;
PRIVATE_SYSTEM_LIBS = [ FFilterByBuildFeatures
$(HAIKU_JPEG_CURRENT_LIB)
$(HAIKU_LIBPNG_CURRENT_LIB)
$(HAIKU_ZLIB_CURRENT_LIB)
$(HAIKU_FREETYPE_CURRENT_LIB)
libalm.so
libfluidsynth.so
libilmimf.so
] ;
SYSTEM_SERVERS = [ FFilterByBuildFeatures
app_server cddb_daemon debug_server input_server mail_daemon
media_addon_server media_server midi_server mount_server net_server
notification_server power_daemon print_server print_addon_server registrar
syslog_daemon
] ;
SYSTEM_NETWORK_DEVICES = ethernet loopback ;
SYSTEM_NETWORK_DATALINK_PROTOCOLS = ethernet_frame <module>arp loopback_frame
ipv6_datagram ;
#SYSTEM_NETWORK_PPP = ipcp modem pap pppoe ;
SYSTEM_NETWORK_PROTOCOLS = ipv4 tcp udp icmp unix icmp6 ipv6 ;
SYSTEM_ADD_ONS_ACCELERANTS = [ FFilterByBuildFeatures
x86 @{
3dfx.accelerant ati.accelerant matrox.accelerant neomagic.accelerant
nvidia.accelerant intel_810.accelerant intel_extreme.accelerant
radeon.accelerant radeon_hd.accelerant s3.accelerant vesa.accelerant
#via.accelerant vmware.accelerant
}@ # x86
] ;
SYSTEM_ADD_ONS_TRANSLATORS = BMPTranslator EXRTranslator GIFTranslator
HVIFTranslator ICOTranslator JPEGTranslator JPEG2000Translator
PCXTranslator PNGTranslator PPMTranslator
RAWTranslator RTFTranslator SGITranslator STXTTranslator TGATranslator
TIFFTranslator WebPTranslator WonderBrushTranslator ICNSTranslator
;
SYSTEM_ADD_ONS_LOCALE_CATALOGS = <catalog-addon>plaintext ;
SYSTEM_ADD_ONS_MEDIA = [ FFilterByBuildFeatures
cortex_audioadapter.media_addon
cortex_flanger.media_addon
dvb.media_addon@x86
hmulti_audio.media_addon
mixer.media_addon
opensound.media_addon
tone_producer_demo.media_addon
usb_webcam.media_addon
video_producer_demo.media_addon
video_window_demo.media_addon
firewire_dv.media_addon
#legacy.media_addon
equalizer.media_addon
vst_host.media_addon
] ;
SYSTEM_ADD_ONS_MEDIA_PLUGINS = [ FFilterByBuildFeatures
ffmpeg@ffmpeg raw_decoder
] ;
SYSTEM_ADD_ONS_PRINT =
Canon\ LIPS3\ Compatible
Canon\ LIPS4\ Compatible
Gutenprint
PCL5\ Compatible
PCL6\ Compatible
PDF\ Writer
PS\ Compatible
Preview
;
SYSTEM_ADD_ONS_PRINT_TRANSPORT = HP\ JetDirect IPP LPR
# Parallel\ Port
Print\ To\ File Serial\ Port USB\ Port
;
SYSTEM_ADD_ONS_SCREENSAVERS = [ FFilterByBuildFeatures
Butterfly DebugNow Flurry@x86
GLife@x86 $(HAIKU_INCLUDE_TRADEMARKS)Haiku Icons IFS Leaves
Message Spider Gravity@x86
] ;
SYSTEM_ADD_ONS_DRIVERS_AUDIO = auich auvia echo3g emuxki hda ice1712 sis7018 ;
SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD = ; #cmedia usb_audio ;
SYSTEM_ADD_ONS_DRIVERS_GRAPHICS = [ FFilterByBuildFeatures
x86 @{
ati 3dfx intel_810 intel_extreme matrox neomagic nvidia radeon radeon_hd
s3 vesa #via vmware
}@ # x86
] ;
SYSTEM_ADD_ONS_DRIVERS_MIDI = emuxki ice1712 usb_midi ;
SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures
x86 @{
3com atheros813x ar81xx attansic_l1 attansic_l2 broadcom440x
broadcom570x dec21xxx ipro100 ipro1000 jmicron2x0 marvell_yukon nforce
pcnet rtl8139 rtl81xx sis19x syskonnect via_rhine vt612x
}@ # x86
etherpci pegasus sis900 usb_davicom usb_asix usb_ecm wb840
# WLAN drivers
x86 @{
aironetwifi atheroswifi broadcom43xx
iprowifi2100 iprowifi2200 iprowifi3945
iprowifi4965 marvell88w8363 marvell88w8335
ralinkwifi wavelanwifi
}@ # x86
# WWAN drivers
#usb_beceemwmx@gpl
] ;
SYSTEM_ADD_ONS_DRIVERS_POWER = [ FFilterByBuildFeatures acpi_button@x86 ] ;
SYSTEM_ADD_ONS_BUS_MANAGERS = [ FFilterByBuildFeatures
ata@ata pci ps2@x86 isa@x86
ide@ide scsi config_manager agp_gart usb firewire acpi@x86
] ;
SYSTEM_ADD_ONS_FILE_SYSTEMS = bfs btrfs cdda exfat ext2 fat iso9660 nfs
attribute_overlay write_overlay ntfs reiserfs udf googlefs ;
# wifi firmware
for driver in $(SYSTEM_ADD_ONS_DRIVERS_NET) {
local package = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_PACKAGE) ] ;
local archive = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_ARCHIVE) ] ;
local extract = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_DO_EXTRACT) ] ;
if $(archive) {
AddWifiFirmwareToHaikuImage $(driver) : $(package) : $(archive)
: $(extract) ;
}
local packages = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_PACKAGES) ] ;
local archives = [ on $(driver) return $(HAIKU_WIFI_FIRMWARE_ARCHIVES) ] ;
for archive in $(archives) {
AddWifiFirmwareToHaikuImage $(driver) : $(packages[1]) : $(archive)
: $(extract) ;
packages = $(packages[2-]) ;
}
}
# modules
AddFilesToHaikuImage system add-ons kernel bus_managers
: $(SYSTEM_ADD_ONS_BUS_MANAGERS) ;
AddFilesToHaikuImage system add-ons kernel busses agp_gart
: <agp_gart>intel@x86 ;
if $(HAIKU_ATA_STACK) = 1 {
AddFilesToHaikuImage system add-ons kernel busses ata
: generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 ;
} else {
AddFilesToHaikuImage system add-ons kernel busses ide
: generic_ide_pci it8211 legacy_sata silicon_image_3112 ide_isa@x86 ;
}
AddFilesToHaikuImage system add-ons kernel busses scsi
: ahci ;
AddFilesToHaikuImage system add-ons kernel busses usb
: <usb>uhci <usb>ohci <usb>ehci ;
AddFilesToHaikuImage system add-ons kernel console : vga_text ;
AddFilesToHaikuImage system add-ons kernel debugger
: <kdebug>demangle <kdebug>disasm@x86 <kdebug>hangman
<kdebug>invalidate_on_exit <kdebug>usb_keyboard <kdebug>qrencode
<kdebug>run_on_exit ;
AddFilesToHaikuImage system add-ons kernel file_systems
: $(SYSTEM_ADD_ONS_FILE_SYSTEMS) ;
AddFilesToHaikuImage system add-ons kernel generic
: ata_adapter@ata bios@x86 dpc ide_adapter@ide
locked_pool mpu401 scsi_periph <module>tty ; #cpuidle@x86 ;
AddFilesToHaikuImage system add-ons kernel partitioning_systems
: amiga_rdb apple efi_gpt intel session ;
AddFilesToHaikuImage system add-ons kernel interrupt_controllers
: openpic@ppc ;
if $(TARGET_ARCH) = x86 {
AddFilesToHaikuImage system add-ons kernel cpu : generic_x86 ;
}
# drivers
AddNewDriversToHaikuImage disk scsi : scsi_cd scsi_disk ;
AddNewDriversToHaikuImage power : enhanced_speedstep@x86 ;
AddNewDriversToHaikuImage power : acpi_battery@x86 ;
#AddNewDriversToHaikuImage power : x86_cpuidle@x86 ;
#AddNewDriversToHaikuImage display : display_controls@x86 ;
# legacy drivers
AddDriversToHaikuImage : console dprintf null
random <driver>tty zero ;
AddDriversToHaikuImage audio hmulti : $(SYSTEM_ADD_ONS_DRIVERS_AUDIO) ;
AddDriversToHaikuImage audio old : $(SYSTEM_ADD_ONS_DRIVERS_AUDIO_OLD) ;
AddDriversToHaikuImage midi : $(SYSTEM_ADD_ONS_DRIVERS_MIDI) ;
AddDriversToHaikuImage bus : usb_raw fw_raw ;
AddDriversToHaikuImage disk floppy : pc_floppy@x86 ;
AddDriversToHaikuImage disk usb : usb_disk ;
AddDriversToHaikuImage disk usb : usb_floppy ;
AddDriversToHaikuImage printer usb : usb_printer ;
AddDriversToHaikuImage disk virtual : nbd ;
AddDriversToHaikuImage dvb : cx23882 ;
AddDriversToHaikuImage graphics : $(SYSTEM_ADD_ONS_DRIVERS_GRAPHICS) ;
AddDriversToHaikuImage input : ps2_hid usb_hid wacom ;
AddDriversToHaikuImage misc : <driver>poke <driver>mem ;
AddDriversToHaikuImage net : $(SYSTEM_ADD_ONS_DRIVERS_NET) ;
AddDriversToHaikuImage ports : usb_serial ;
AddDriversToHaikuImage power : $(SYSTEM_ADD_ONS_DRIVERS_POWER) ;
# kernel
AddFilesToHaikuImage system : <revisioned>kernel_$(TARGET_ARCH) ;
# libs
AddLibrariesToHaikuHybridImage system lib
: $(SYSTEM_LIBS) $(PRIVATE_SYSTEM_LIBS) ;
# libnetwork.so replaces quite a few libraries
SYSTEM_LIBS_LIBNETWORK_ALIASES
= libsocket.so libbind.so libnet.so ;
if $(HAIKU_GCC_VERSION[1]) = 2 {
local lib ;
for lib in $(SYSTEM_LIBS_LIBNETWORK_ALIASES) {
AddSymlinkToHaikuHybridImage system lib : libnetwork.so : $(lib)
: : true ;
}
AddSymlinkToHaikuHybridImage system lib : libbnetapi.so : libnetapi.so
: : true ;
}
# libGL.so has GLU (like BeOS) built-in
SYSTEM_LIBS_LIBGL_ALIASES = libGLU.so ;
if $(TARGET_ARCH) = x86 {
local lib ;
for lib in $(SYSTEM_LIBS_LIBGL_ALIASES) {
AddSymlinkToHaikuHybridImage system lib : libGL.so : $(lib) : : true ;
}
}
# libbe.so now includes what used to be in liblocale.so
# TODO: Remove this once all optional packages have been rebuilt (i.e. after
# next release)!
SYSTEM_LIBS_LIBBE_ALIASES = liblocale.so ;
if $(TARGET_ARCH) = x86 {
local lib ;
for lib in $(SYSTEM_LIBS_LIBBE_ALIASES) {
AddSymlinkToHaikuHybridImage system lib : libbe.so : $(lib) : : true ;
}
}
SYSTEM_LIBS_ALIASES =
$(SYSTEM_LIBS_LIBNETWORK_ALIASES)
libnetapi.so
$(SYSTEM_LIBS_LIBGL_ALIASES)
$(SYSTEM_LIBS_LIBBE_ALIASES)
;
OPTIONAL_LIBS_ALIASES =
libfreetype.so
libjpeg.so
libpng.so
libz.so
;
# libfreetype.so links to the current freetype lib
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_FREETYPE_CURRENT_LIB:BS)
: $(HAIKU_FREETYPE_CURRENT_LINK) : : true ;
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_FREETYPE_CURRENT_LINK)
: libfreetype.so : : true ;
# libpng.so links to the current libpng
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_LIBPNG_CURRENT_LIB:BS)
: $(HAIKU_LIBPNG_CURRENT_LINK) : : true ;
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_LIBPNG_CURRENT_LINK)
: libpng.so : : true ;
# libjpeg.so links to the current libjpeg
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_JPEG_CURRENT_LIB:BS)
: $(HAIKU_JPEG_CURRENT_LINK) : : true ;
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_JPEG_CURRENT_LINK)
: libjpeg.so : : true ;
# zlib.so links to the current zlib
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_ZLIB_CURRENT_LIB:BS)
: $(HAIKU_ZLIB_CURRENT_LINK) : : true ;
AddSymlinkToHaikuHybridImage system lib : $(HAIKU_ZLIB_CURRENT_LINK)
: libz.so : : true ;
# servers
AddFilesToHaikuImage system servers : $(SYSTEM_SERVERS) ;
# apps
AddFilesToHaikuImage system : runtime_loader Deskbar Tracker ;
AddFilesToHaikuImage system bin : $(SYSTEM_BIN) consoled ;
AddFilesToHaikuImage system apps : $(SYSTEM_APPS) ;
AddFilesToHaikuImage system preferences : $(SYSTEM_PREFERENCES) ;
AddFilesToHaikuImage system demos : $(SYSTEM_DEMOS) ;
SEARCH on which = [ FDirName $(HAIKU_TOP) data bin ] ;
AddFilesToHaikuImage system bin : which ;
SEARCH on installoptionalpackage = [ FDirName $(HAIKU_TOP) data bin ] ;
AddFilesToHaikuImage system bin : installoptionalpackage ;
SEARCH on install-wifi-firmwares.sh = [ FDirName $(HAIKU_TOP) data bin ] ;
AddFilesToHaikuImage system bin : install-wifi-firmwares.sh ;
SEARCH on welcome = [ FDirName $(HAIKU_TOP) data bin ] ;
AddFilesToHaikuImage system bin : welcome ;
AddSymlinkToHaikuImage home Desktop
: /boot/system/bin/welcome : Welcome ;
SEARCH on userguide = [ FDirName $(HAIKU_TOP) data bin ] ;
AddFilesToHaikuImage system bin : userguide ;
AddSymlinkToHaikuImage home Desktop
: /boot/system/bin/userguide : User\ Guide ;
# Add the files to be used by installoptionalpackage.
AddDirectoryToHaikuImage common data optional-packages ;
local optional-pkg-files = BuildFeatures OptionalPackageDependencies
OptionalPackages OptionalLibPackages ;
for name in $(optional-pkg-files) {
local file = [ FDirName $(HAIKU_TOP) build jam $(name) ] ;
AddFilesToHaikuImage common data optional-packages : $(file) ;
}
AddInstalledPackagesFileToHaikuImage ;
AddSymlinkToHaikuImage system bin : bash : sh ;
AddSymlinkToHaikuImage system bin : trash : untrash ;
AddSymlinkToHaikuImage home Desktop : /boot/home : Home ;
# Mailbox folders and symlink
AddDirectoryToHaikuImage home mail draft ;
AddDirectoryToHaikuImage home mail in ;
AddDirectoryToHaikuImage home mail out ;
AddSymlinkToHaikuImage home config : settings/deskbar : be ;
# Deskbar Application links
AddDirectoryToHaikuImage home config settings deskbar Applications ;
DESKBAR_APPLICATIONS = ActivityMonitor CharacterMap CodyCam CDPlayer DeskCalc
Devices DiskProbe DriveSetup DiskUsage Expander Icon-O-Matic Installer
Magnify Mail MediaConverter MediaPlayer MidiPlayer People PoorMan
Screenshot SoundRecorder StyledEdit Terminal TV
;
local linkTarget ;
for linkTarget in $(DESKBAR_APPLICATIONS) {
AddSymlinkToHaikuImage home config settings deskbar Applications
: /boot/system/apps/$(linkTarget) : $(linkTarget) ;
}
# Deskbar Desktop applets links
AddDirectoryToHaikuImage home config settings deskbar Desktop\ applets ;
DESKBAR_DESKTOP_APPLETS = LaunchBox NetworkStatus PowerStatus ProcessController
Workspaces
;
for linkTarget in $(DESKBAR_DESKTOP_APPLETS) {
AddSymlinkToHaikuImage home config settings deskbar Desktop\ applets
: /boot/system/apps/$(linkTarget) : $(linkTarget) ;
}
# Deskbar Preferences links
AddDirectoryToHaikuImage home config settings deskbar Preferences ;
DESKBAR_PREFERENCES = $(SYSTEM_PREFERENCES:B) ;
for linkTarget in $(DESKBAR_PREFERENCES) {
AddSymlinkToHaikuImage home config settings deskbar Preferences
: /boot/system/preferences/$(linkTarget)
: $(linkTarget) ;
}
# Deskbar Demo links
AddDirectoryToHaikuImage home config settings deskbar Demos ;
for linkTarget in $(SYSTEM_DEMOS) {
AddSymlinkToHaikuImage home config settings deskbar Demos
: /boot/system/demos/$(linkTarget) : $(linkTarget) ;
}
AddSymlinkToHaikuImage system bin : less : more ;
AddSymlinkToHaikuImage system bin : gzip : gunzip ;
AddSymlinkToHaikuImage system bin : gzip : zcat ;
AddSymlinkToHaikuImage system bin : zdiff : zcmp ;
AddSymlinkToHaikuImage system bin : unzip : zipinfo ;
AddSymlinkToHaikuImage system bin : gawk : awk ;
# scripts and data files
local bootScripts = Bootscript Bootscript.cd SetupEnvironment Netscript
InstallerInitScript InstallerFinishScript ;
SEARCH on $(bootScripts) = [ FDirName $(HAIKU_TOP) data system boot ] ;
AddFilesToHaikuImage system boot : $(bootScripts) ;
local userBootScripts = UserBootscript UserSetupEnvironment.sample ;
SEARCH on $(userBootScripts) = [ FDirName $(HAIKU_TOP) data config boot ] ;
AddFilesToHaikuImage home config boot : $(userBootScripts) ;
# Add boot launch directory
AddDirectoryToHaikuImage home config boot launch ;
local logoArtwork =
$(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - big.png"
$(HAIKU_INCLUDE_TRADEMARKS)"HAIKU logo - white on blue - normal.png" ;
SEARCH on $(logoArtwork) = [ FDirName $(HAIKU_TOP) data artwork ] ;
AddFilesToHaikuImage system data artwork : $(logoArtwork) ;
AddDirectoryToHaikuImage system data sounds ;
# Add mail provider infos.
AddFilesToHaikuImage home config settings Mail ProviderInfo :
$(HAIKU_PROVIDER_INFOS) ;
# Mail spell check dictionaries
local spellFiles = words geekspeak ;
spellFiles = $(spellFiles:G=spell) ;
SEARCH on $(spellFiles)
= [ FDirName $(HAIKU_TOP) src apps mail ] ;
AddFilesToHaikuImage system data spell_check word_dictionary : $(spellFiles) ;
local etcDir = [ FDirName $(HAIKU_TOP) data etc ] ;
local etcFiles = inputrc profile ;
etcFiles = $(etcFiles:G=etc) ;
SEARCH on $(etcFiles) = [ FDirName $(etcDir) ] ;
etcFiles += <etc>termcap <etc>sysless <etc>sysless.in ;
AddFilesToHaikuImage common etc : $(etcFiles) ;
local profileFiles = [ Glob $(etcDir)/profile.d : *.sh ] ;
profileFiles = $(profileFiles:G=profile-d) ;
AddDirectoryToHaikuImage common etc profile.d ;
AddFilesToHaikuImage common etc profile.d : $(profileFiles) ;
#local bashCompletionFiles = [ Glob $(etcDir)/bash_completion.d : * ] ;
#local bashCompletionHelperFiles
# = [ Glob $(etcDir)/bash_completion.d/helpers : * ] ;
#bashCompletionFiles = $(bashCompletionFiles:G=bash-completion) ;
#bashCompletionHelperFiles = $(bashCompletionHelperFiles:G=bash-completion-hlp) ;
#AddDirectoryToHaikuImage common etc bash_completion.d ;
#AddDirectoryToHaikuImage common etc bash_completion.d helpers ;
#AddFilesToHaikuImage common etc bash_completion.d : $(bashCompletionFiles) ;
#AddFilesToHaikuImage common etc bash_completion.d helpers
# : $(bashCompletionHelperFiles) ;
local fortuneFiles = [ Glob $(HAIKU_TOP)/data/system/data/fortunes
: [a-zA-Z0-9]* ] ;
fortuneFiles = $(fortuneFiles:G=data!fortunes) ;
AddFilesToHaikuImage system data fortunes : $(fortuneFiles) ;
local fontDir = [ FDirName $(HAIKU_TOP) data system data fonts ] ;
local psFonts = [ Glob $(fontDir)/psfonts : *.afm *.pfb ] ;
local ttFonts = [ Glob $(fontDir)/ttfonts : *.ttf ] ;
AddFilesToHaikuImage system data fonts psfonts : $(psFonts) ;
AddFilesToHaikuImage system data fonts ttfonts : $(ttFonts) ;
local cannaDir = [ FDirName $(HAIKU_TOP) data system data Canna ] ;
local cannaDefault = [ Glob $(cannaDir)/default : *.canna *.gz ] ;
local cannaDic = [ Glob $(cannaDir)/dic : *.cbp ] ;
local cannaDicCanna = [ Glob $(cannaDir)/dic/canna
: *.cld *.ctd *.cbd *.dir ] ;
AddFilesToHaikuImage system data Canna default : $(cannaDefault) ;
AddFilesToHaikuImage system data Canna dic : $(cannaDic) ;
AddFilesToHaikuImage system data Canna dic canna : $(cannaDicCanna) ;
AddDirectoryToHaikuImage system data Canna dic group ;
AddDirectoryToHaikuImage system data Canna dic user ;
local keymapFiles = [ Glob [ FDirName $(HAIKU_TOP) src data keymaps ]
: *.keymap ] ;
keymapFiles = $(keymapFiles:BG=keymap) ;
AddFilesToHaikuImage system data Keymaps : $(keymapFiles) ;
AddSymlinkToHaikuImage system data Keymaps : Swedish : Finnish ;
AddSymlinkToHaikuImage system data Keymaps : Slovene : Croatian ;
AddSymlinkToHaikuImage system data Keymaps : US-International : Brazilian ;
# Copy keyboard layout files to the image one-by-one.
local keyboardLayoutsDir
= [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ] ;
local keyboardLayoutFiles =
"Generic 104-key"
"Generic 105-key International"
"Kinesis Advantage"
"Kinesis Ergo Elan International"
"TypeMatrix 2030" ;
keyboardLayoutFiles = $(keyboardLayoutFiles:G=keyboard-layout) ;
SEARCH on $(keyboardLayoutFiles) = $(keyboardLayoutsDir) ;
AddFilesToHaikuImage system data KeyboardLayouts
: $(keyboardLayoutFiles) ;
# Add Apple Aluminum keyboard layout files to the image in an Apple Aluminum
# subdirectory. The subdirectory is turned into a submenu in the Layout menu
# of the Keymap preference app.
local appleAluminumDir
= [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts
Apple\ Aluminum ] ;
local appleAluminumFiles =
"Apple Aluminium Extended International"
"Apple Aluminium International"
"Apple Aluminum (US)"
"Apple Aluminum Extended (US)" ;
appleAluminumFiles = $(appleAluminumFiles:G=keyboard-layout) ;
SEARCH on $(appleAluminumFiles) = $(appleAluminumDir) ;
AddFilesToHaikuImage system data KeyboardLayouts Apple\ Aluminum
: $(appleAluminumFiles) ;
# Add ThinkPad keyboard layout files to the image in a ThinkPad
# subdirectory. The subdirectory is turned into a submenu in the Layout menu
# of the Keymap preference app.
local thinkpadDir
= [ FDirName $(HAIKU_TOP) data system data KeyboardLayouts ThinkPad ] ;
local thinkPadFiles =
"ThinkPad (US)"
"ThinkPad International"
"ThinkPad T400s (US)"
"ThinkPad T400s International"
"ThinkPad X1 (US)"
"ThinkPad X1 International"
"ThinkPad X100e (US)"
"ThinkPad X100e International" ;
thinkPadFiles = $(thinkPadFiles:G=keyboard-layout) ;
SEARCH on $(thinkPadFiles) = $(thinkpadDir) ;
AddFilesToHaikuImage system data KeyboardLayouts ThinkPad
: $(thinkPadFiles) ;
local driverSettingsFiles = <driver-settings>kernel ;
SEARCH on $(driverSettingsFiles)
= [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ;
AddFilesToHaikuImage home config settings kernel drivers
: $(driverSettingsFiles) ;
local networkSettingsFiles = <network-settings>services ;
SEARCH on $(networkSettingsFiles)
= [ FDirName $(HAIKU_TOP) data settings network ] ;
AddFilesToHaikuImage common settings network : $(networkSettingsFiles) ;
# post install scripts and fresh install indicator file
local postInstallFiles = add_catalog_entry_attributes.sh
default_deskbar_items.sh mime_update.sh ;
postInstallFiles = $(postInstallFiles:G=post-install) ;
SEARCH on $(postInstallFiles)
= [ FDirName $(HAIKU_TOP) data common boot post_install ] ;
SEARCH on <post-install>fresh_install
= [ FDirName $(HAIKU_TOP) data common settings ] ;
AddFilesToHaikuImage common boot post_install : $(postInstallFiles) ;
AddFilesToHaikuImage common settings : <post-install>fresh_install ;
# boot loader
AddFilesToHaikuImage system : haiku_loader ;
# boot module links
AddBootModuleSymlinksToHaikuImage
acpi@x86 ata@ata pci isa@x86 config_manager dpc
ide@ide scsi usb
openpic@ppc
ata_adapter@ata ide_adapter@ide locked_pool scsi_periph
ahci generic_ide_pci it8211 legacy_sata silicon_image_3112
ide_isa@x86
<usb>uhci <usb>ohci <usb>ehci
scsi_cd scsi_disk usb_disk
efi_gpt
intel
bfs
;
# add-ons
AddFilesToHaikuImage system add-ons accelerants
: $(SYSTEM_ADD_ONS_ACCELERANTS) ;
# OpenGL renderers
if $(TARGET_ARCH) = x86 {
if $(HAIKU_GCC_VERSION[1]) = 2 {
AddFilesToHaikuHybridImage system add-ons opengl
: Legacy\ Software\ Rasterizer : : true ;
} else {
AddFilesToHaikuHybridImage system add-ons opengl
: Software\ Rasterizer : : true ;
# Future Gallium3d
}
}
AddFilesToHaikuHybridImage system add-ons Translators
: $(SYSTEM_ADD_ONS_TRANSLATORS) : : true ;
AddFilesToHaikuImage system add-ons locale catalogs
: $(SYSTEM_ADD_ONS_LOCALE_CATALOGS) ;
AddFilesToHaikuHybridImage system add-ons locale catalogs
: $(SYSTEM_ADD_ONS_LOCALE_CATALOGS) : : true ;
AddFilesToHaikuImage system add-ons mail_daemon inbound_protocols : POP3 IMAP ;
AddFilesToHaikuImage system add-ons mail_daemon outbound_protocols : SMTP ;
AddFilesToHaikuImage system add-ons mail_daemon inbound_filters
: MatchHeader SpamFilter NewMailNotification ;
AddFilesToHaikuImage system add-ons mail_daemon outbound_filters : Fortune ;
AddFilesToHaikuImage system add-ons media : $(SYSTEM_ADD_ONS_MEDIA) ;
AddFilesToHaikuImage system add-ons media plugins
: $(SYSTEM_ADD_ONS_MEDIA_PLUGINS) ;
AddFilesToHaikuImage system add-ons Tracker
: FileType-F Mark\ as… Mark\ as\ Read-R Open\ Target\ Folder-O
Open\ Terminal-T ZipOMatic-Z ;
AddSymlinkToHaikuImage system add-ons Tracker
: /boot/system/preferences/Backgrounds : Background-B ;
AddSymlinkToHaikuImage system add-ons Tracker
: /boot/system/apps/TextSearch : TextSearch-G ;
AddSymlinkToHaikuImage system add-ons Tracker
: /boot/system/apps/DiskUsage : DiskUsage-I ;
AddFilesToHaikuImage system add-ons input_server devices
: <input>keyboard <input>mouse <input>tablet <input>wacom ;
AddFilesToHaikuImage system add-ons input_server filters
: screen_saver shortcut_catcher ;
AddFilesToHaikuImage system add-ons kernel network
: <net>notifications stack ;
AddFilesToHaikuImage system add-ons kernel network devices
: $(SYSTEM_NETWORK_DEVICES) ;
AddFilesToHaikuImage system add-ons kernel network datalink_protocols
: $(SYSTEM_NETWORK_DATALINK_PROTOCOLS) ;
AddFilesToHaikuImage system add-ons kernel network ppp
: $(SYSTEM_NETWORK_PPP) ;
AddFilesToHaikuImage system add-ons kernel network protocols
: $(SYSTEM_NETWORK_PROTOCOLS) ;
AddFilesToHaikuImage system add-ons Print : $(SYSTEM_ADD_ONS_PRINT) ;
AddFilesToHaikuImage system add-ons Print transport
: $(SYSTEM_ADD_ONS_PRINT_TRANSPORT) ;
AddFilesToHaikuImage system add-ons Screen\ Savers
: $(SYSTEM_ADD_ONS_SCREENSAVERS) ;
AddFilesToHaikuImage system add-ons disk_systems
: <disk_system>intel <disk_system>bfs <disk_system>ntfs ;
# decorators
AddDirectoryToHaikuImage home config add-ons decorators ;
#AddFilesToHaikuImage home config add-ons decorators : ;
# create directories that will remain empty
AddDirectoryToHaikuImage common bin ;
AddDirectoryToHaikuImage common include ;
AddDirectoryToHaikuImage common lib ;
AddDirectoryToHaikuImage home Desktop ;
AddDirectoryToHaikuImage home config bin ;
AddDirectoryToHaikuImage home config lib ;
AddDirectoryToHaikuImage home mail ;
AddDirectoryToHaikuImage common var empty ;
AddDirectoryToHaikuImage common var log ;
AddDirectoryToHaikuImage common cache tmp ;
AddDirectoryToHaikuImage home config add-ons kernel drivers bin ;
AddDirectoryToHaikuImage home config add-ons kernel drivers dev ;
AddDirectoryToHaikuImage home config add-ons input_server devices ;
AddDirectoryToHaikuImage home config add-ons input_server filters ;
AddDirectoryToHaikuImage home config add-ons input_server methods ;
AddDirectoryToHaikuImage home config add-ons media plugins ;
AddDirectoryToHaikuImage home config add-ons Tracker ;
AddDirectoryToHaikuImage home config add-ons Print ;
AddDirectoryToHaikuImage home config add-ons Screen\ Savers ;
AddDirectoryToHaikuImage home config add-ons Translators ;
AddDirectoryToHaikuImage system data synth ;
AddDirectoryToHaikuImage system add-ons input_server methods ;
# optional
AddFilesToHaikuImage optional system add-ons input_server methods : canna ;
# printers
AddDirectoryToHaikuImage home config settings printers Preview
: home-config-settings-printers-preview.rdef ;
AddDirectoryToHaikuImage home config settings printers "Save as PDF"
: home-config-settings-printers-save-as-pdf.rdef ;
# PDF Writer enconding files
CopyDirectoryToHaikuImage system data
: [ FDirName $(HAIKU_TOP) src add-ons print drivers pdf encoding ]
: "PDF Writer" : -x Jamfile ;
# Gutenprint data files
CopyDirectoryToHaikuImage system data
: [ FDirName $(HAIKU_TOP) src libs print libgutenprint src xml ]
: gutenprint : -x *.c -x Makefile.am -x Makefile.in ;
# dvb channel settings
CopyDirectoryToHaikuImage home config settings Media
: [ FDirName $(HAIKU_TOP) data settings media dvb ]
: dvb : -x Jamfile ;
# licenses
CopyDirectoryToHaikuImage system data
: [ FDirName $(HAIKU_TOP) data system data licenses ]
: licenses ;
# Copy documentation as per DiskUsage's license requirement.
CopyDirectoryToHaikuImage system documentation
: [ FDirName $(HAIKU_TOP) docs apps diskusage ]
: diskusage ;
# Copy documentation as per PDFlib Lite's license requirement.
CopyDirectoryToHaikuImage system documentation
: [ FDirName $(HAIKU_TOP) src libs pdflib doc ]
: pdflib ;
# Copy sample programs as per PDFlib Lite's license requirement.
CopyDirectoryToHaikuImage develop sample-code
: [ FDirName $(HAIKU_TOP) src libs pdflib bind pdflib ]
: pdflib ;
# Copy OpenGL kit headers into image
if $(TARGET_ARCH) = x86 {
CopyDirectoryToHaikuImage develop headers os opengl
: [ FDirName $(HAIKU_MESA_HEADERS) GL ] ;
CopyDirectoryToHaikuImage develop headers os opengl
: [ FDirName $(HAIKU_GLU_HEADERS) GL ] ;
}
#pragma mark - Optional Packages
HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS = ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalPackages ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalTestPackages ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) OptionalLibPackages ] ;
local optionalPackageDescriptions ;
if $(HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS) {
optionalPackageDescriptions = <haiku-image>optional_package_descriptions ;
MakeLocate $(optionalPackageDescriptions)
: $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) ;
Depends $(optionalPackageDescriptions)
: $(HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS) ;
actions together BuildOptionalPackageDescriptions
{
cat $(2) > $(1)
}
BuildOptionalPackageDescriptions $(optionalPackageDescriptions)
: $(HAIKU_IMAGE_OPTIONAL_PACKAGE_DESCRIPTIONS) ;
}
#pragma mark - Alternative GCC Libraries
# We build a zip archive containing the libraries built with the alternative
# GCC and unzip onto our image. Building the archive is done by a sub-jam.
include [ FDirName $(HAIKU_BUILD_RULES_DIR) AlternativeGCCArchive ] ;
if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) = 1
&& $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) {
# let another jam build a zip with the system libraries
rule InvokeSubJam target : directory : jamLine
{
DIRECTORY on $(target) = $(directory) ;
COMMAND_LINE on $(target) = $(jamLine) ;
local optionalPackages = $(HAIKU_ADDED_OPTIONAL_PACKAGES:J=/) ;
OPTIONAL_PACKAGES on $(target) = $(optionalPackages:E="") ;
Always $(target) ;
InvokeSubJam1 $(target) ;
}
actions InvokeSubJam1
{
cd $(DIRECTORY)
export HAIKU_IGNORE_USER_BUILD_CONFIG=1
export HAIKU_ADD_OPTIONAL_PACKAGES=$(OPTIONAL_PACKAGES)
export HAIKU_PRIMARY_GCC=$(HAIKU_GCC_VERSION[1])
# NOTE: depending on when InvokeSubJam is called, you may end up with
# 2 * n - 1 jobs in total.
$(JAM:E=jam) -q -j$(JAMJOBS) $(COMMAND_LINE) ;
}
local otherAlternativeSystemLibsZip
= <other-image>alternative_system_libs.zip ;
MakeLocate $(otherAlternativeSystemLibsZip)
: $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) ;
InvokeSubJam $(otherAlternativeSystemLibsZip)
: $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR)
: "haiku-alternative-gcc-archive" ;
# install the alternative libs in the right directory
ExtractArchiveToHaikuImage : $(otherAlternativeSystemLibsZip) ;
}
#pragma mark - User/Group Setup
# add the root user and the root and users groups
AddUserToHaikuImage $(HAIKU_ROOT_USER_NAME:E=baron) : 0 : 0 : /boot/home
: /bin/bash : $(HAIKU_ROOT_USER_REAL_NAME:E="Root User") ;
AddGroupToHaikuImage root : 0 : ;
AddGroupToHaikuImage users : 100 : ;
#pragma mark - Host Name
if $(HAIKU_IMAGE_HOST_NAME) {
actions BuildHaikuImageHostnameFile
{
echo "$(HAIKU_IMAGE_HOST_NAME)" > $(1)
}
local file = <haiku-image>hostname ;
Always $(file) ;
MakeLocate $(file) : $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) ;
BuildHaikuImageHostnameFile $(file) ;
AddFilesToHaikuImage common settings network : $(file) ;
}
#pragma mark - Build The Image
# Execute pre-image user config rules.
UserBuildConfigRulePreImage ;
# Set image name and directory defaults and locate the image.
HAIKU_IMAGE_NAME ?= $(HAIKU_DEFAULT_IMAGE_NAME) ;
HAIKU_IMAGE_DIR ?= $(HAIKU_DEFAULT_IMAGE_DIR) ;
HAIKU_IMAGE = $(HAIKU_IMAGE_NAME) ;
HAIKU_IMAGE_SIZE ?= $(HAIKU_DEFAULT_IMAGE_SIZE) ; # 300 MB
HAIKU_IMAGE_LABEL ?= $(HAIKU_DEFAULT_IMAGE_LABEL) ;
MakeLocate $(HAIKU_IMAGE) : $(HAIKU_IMAGE_DIR) ;
# Set the default installation directory.
HAIKU_INSTALL_DIR ?= $(HAIKU_DEFAULT_INSTALL_DIR) ;
# the pseudo target all image contents is attached to
NotFile $(HAIKU_IMAGE_CONTAINER_NAME) ;
# Detect a hybrid GCC2/GCC4 image.
local isHybridBuild ;
if $(HAIKU_ADD_ALTERNATIVE_GCC_LIBS) = 1
&& $(HAIKU_ALTERNATIVE_GCC_OUTPUT_DIR) {
isHybridBuild = 1 ;
}
# prepare the script that initializes the shell variables
HAIKU_IMAGE_INIT_VARIABLES_SCRIPT = <HaikuImage>haiku.image-init-vars ;
local script = $(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT) ;
MakeLocate $(script) : $(HAIKU_OUTPUT_DIR) ;
Always $(script) ;
AddVariableToScript $(script) : sourceDir : $(HAIKU_TOP) ;
AddVariableToScript $(script) : outputDir : $(HAIKU_OUTPUT_DIR) ;
AddVariableToScript $(script) : tmpDir : $(HAIKU_TMP_DIR) ;
AddVariableToScript $(script) : installDir : $(HAIKU_INSTALL_DIR) ;
#AddVariableToScript $(script) : isImage : 1 ;
AddVariableToScript $(script) : imageSize : $(HAIKU_IMAGE_SIZE) ;
AddVariableToScript $(script) : imageLabel : $(HAIKU_IMAGE_LABEL) ;
AddVariableToScript $(script) : addBuildCompatibilityLibDir
: $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ;
AddVariableToScript $(script) : dontClearImage : $(HAIKU_DONT_CLEAR_IMAGE) ;
AddVariableToScript $(script) : updateOnly : [ IsUpdateHaikuImageOnly ] ;
AddTargetVariableToScript $(script) : <build>addattr ;
AddTargetVariableToScript $(script) : <build>bfs_shell : bfsShell ;
AddTargetVariableToScript $(script) : <build>fs_shell_command : fsShellCommand ;
AddTargetVariableToScript $(script) : <build>copyattr ;
AddTargetVariableToScript $(script) : <build>create_image : createImage ;
AddTargetVariableToScript $(script) : <build>makebootable ;
AddTargetVariableToScript $(script) : <build>rc ;
AddTargetVariableToScript $(script) : <build>resattr ;
AddTargetVariableToScript $(script) : <build>unzip ;
AddTargetVariableToScript $(script) : <build>vmdkimage ;
AddVariableToScript $(script) : stripCommand : $(HAIKU_STRIP) ;
if $(HOST_RM_ATTRS_TARGET) {
AddTargetVariableToScript $(script) : $(HOST_RM_ATTRS_TARGET) : rmAttrs ;
} else {
AddVariableToScript $(script) : rmAttrs : rm ;
}
if $(optionalPackageDescriptions) {
AddTargetVariableToScript $(script) : $(optionalPackageDescriptions)
: optionalPackageDescriptions ;
}
# create the other scripts
HAIKU_IMAGE_MAKE_DIRS_SCRIPT = <HaikuImage>haiku.image-make-dirs ;
HAIKU_IMAGE_COPY_FILES_SCRIPT = <HaikuImage>haiku.image-copy-files ;
HAIKU_IMAGE_EXTRACT_FILES_SCRIPT = <HaikuImage>haiku.image-extract-files ;
MakeLocate $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT)
$(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) : $(HAIKU_OUTPUT_DIR) ;
CreateHaikuImageMakeDirectoriesScript $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) ;
CreateHaikuImageCopyFilesScript $(HAIKU_IMAGE_COPY_FILES_SCRIPT) ;
CreateHaikuImageExtractFilesScript $(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT) ;
# Convenience wrapper rule around BuildHaikuImage.
rule _BuildHaikuImage image : isImage : isVMwareImage
{
# _BuildHaikuImage <image target> : <isImage> : <isVMwareImage> ;
#
# build the image
# HAIKU_IMAGE_EARLY_USER_SCRIPTS, HAIKU_IMAGE_LATE_USER_SCRIPTS can be
# specified by the user.
BuildHaikuImage $(image) :
$(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT)
$(HAIKU_IMAGE_EARLY_USER_SCRIPTS)
$(HAIKU_IMAGE_MAKE_DIRS_SCRIPT)
$(HAIKU_IMAGE_COPY_FILES_SCRIPT)
$(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT)
$(HAIKU_IMAGE_LATE_USER_SCRIPTS)
: $(isImage)
: $(isVMwareImage)
;
# remove the scripts we have generated
RmTemps $(image) :
$(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT)
$(HAIKU_IMAGE_MAKE_DIRS_SCRIPT)
$(HAIKU_IMAGE_COPY_FILES_SCRIPT)
$(HAIKU_IMAGE_EXTRACT_FILES_SCRIPT)
;
}
# build the image
_BuildHaikuImage $(HAIKU_IMAGE) : true ;
NotFile haiku-image ;
Depends haiku-image : $(HAIKU_IMAGE) ;
# install Haiku into a directory
NotFile install-haiku ;
_BuildHaikuImage install-haiku : 0 ;
# build the VMware image
HAIKU_VMWARE_IMAGE_NAME ?= $(HAIKU_DEFAULT_VMWARE_IMAGE_NAME) ;
HAIKU_VMWARE_IMAGE = $(HAIKU_VMWARE_IMAGE_NAME) ;
MakeLocate $(HAIKU_VMWARE_IMAGE) : $(HAIKU_IMAGE_DIR) ;
_BuildHaikuImage $(HAIKU_VMWARE_IMAGE) : true : true ;
NotFile haiku-vmware-image ;
Depends haiku-vmware-image : $(HAIKU_VMWARE_IMAGE) ;
# Execute post-image user config rules.
UserBuildConfigRulePostImage ;