From 338b8dc301721b1f472e8297a898d4eaa2f2ee3a Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 29 Oct 2005 16:27:43 +0000 Subject: [PATCH] Merged changes from branch build_system_redesign at revision 14573. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- Jamfile | 6 +- Jamrules | 2529 +------ build/jam/BeOSRules | 157 + build/jam/BuildSetup | 577 ++ build/jam/ConfigRules | 168 + build/jam/DocumentationRules | 72 + build/jam/FileRules | 219 + build/jam/FreetypeRules | 85 + build/jam/HaikuImage | 303 + build/jam/HeadersRules | 358 + build/jam/HelperRules | 248 + build/jam/ImageRules | 341 + build/jam/KernelRules | 137 + build/jam/MainBuildRules | 463 ++ build/jam/MiscRules | 78 + build/jam/OverriddenJamRules | 598 ++ build/jam/PackageRules | 250 + build/jam/TestsRules | 303 + build/jam/UserBuildConfig.sample | 74 + build/scripts/build_cross_tools | 139 + build/scripts/build_haiku_image | 123 + configure | 221 +- .../boot_floppy/fortune => data/etc}/fortunes | 0 headers/build/HaikuBuildCompatibility.h | 55 + headers/build/os/AppKit.h | 17 + headers/build/os/Be.h | 15 + headers/build/os/BeBuild.h | 387 ++ headers/build/os/DeviceKit.h | 15 + headers/build/os/GameKit.h | 12 + headers/build/os/InterfaceKit.h | 46 + headers/build/os/KernelKit.h | 12 + headers/build/os/MailKit.h | 5 + headers/build/os/MediaKit.h | 29 + headers/build/os/MidiKit.h | 13 + headers/build/os/NetKit.h | 8 + headers/build/os/NetworkKit.h | 9 + headers/build/os/OpenGLKit.h | 9 + headers/build/os/StorageKit.h | 25 + headers/build/os/SupportKit.h | 23 + headers/build/os/TranslationKit.h | 12 + .../build/os/add-ons/file_system/fsproto.h | 261 + .../build/os/add-ons/graphics/Accelerant.h | 249 + .../build/os/add-ons/graphics/GraphicsCard.h | 188 + .../add-ons/input_server/InputServerDevice.h | 79 + .../add-ons/input_server/InputServerFilter.h | 39 + .../add-ons/input_server/InputServerMethod.h | 51 + .../os/add-ons/mail_daemon/ChainRunner.h | 98 + .../build/os/add-ons/mail_daemon/MailAddon.h | 151 + .../os/add-ons/mail_daemon/MailProtocol.h | 107 + .../add-ons/mail_daemon/ProtocolConfigView.h | 38 + .../mail_daemon/RemoteStorageProtocol.h | 41 + .../build/os/add-ons/mail_daemon/StringList.h | 73 + .../os/add-ons/screen_saver/ScreenSaver.h | 82 + headers/build/os/add-ons/tracker/Background.h | 44 + .../build/os/add-ons/tracker/TrackerAddOn.h | 27 + headers/build/os/app/AppDefs.h | 170 + headers/build/os/app/Application.h | 179 + headers/build/os/app/Clipboard.h | 105 + headers/build/os/app/Cursor.h | 82 + headers/build/os/app/Handler.h | 148 + headers/build/os/app/Invoker.h | 128 + headers/build/os/app/Looper.h | 238 + headers/build/os/app/Message.h | 439 ++ headers/build/os/app/MessageFilter.h | 126 + headers/build/os/app/MessageQueue.h | 65 + headers/build/os/app/MessageRunner.h | 67 + headers/build/os/app/Messenger.h | 88 + headers/build/os/app/PropertyInfo.h | 152 + headers/build/os/app/Roster.h | 198 + headers/build/os/arch/ppc/arch_debugger.h | 12 + headers/build/os/arch/x86/arch_debugger.h | 32 + headers/build/os/be_apps/Deskbar/Deskbar.h | 6 + .../os/be_apps/NetPositive/NetPositive.h | 51 + headers/build/os/be_apps/Tracker/Background.h | 68 + .../build/os/be_apps/Tracker/RecentItems.h | 207 + headers/build/os/device/A2D.h | 43 + headers/build/os/device/CAM.h | 711 ++ headers/build/os/device/D2A.h | 45 + headers/build/os/device/DigitalPort.h | 54 + headers/build/os/device/Joystick.h | 118 + headers/build/os/device/SerialPort.h | 109 + headers/build/os/device/graphic_driver.h | 20 + headers/build/os/device/scsi.h | 178 + headers/build/os/device/scsi_bus_raw_driver.h | 29 + headers/build/os/drivers/ACPI.h | 122 + headers/build/os/drivers/Drivers.h | 213 + headers/build/os/drivers/ISA.h | 84 + headers/build/os/drivers/KernelExport.h | 222 + headers/build/os/drivers/PCI.h | 604 ++ headers/build/os/drivers/Select.h | 44 + headers/build/os/drivers/USB.h | 189 + headers/build/os/drivers/USB_printer.h | 36 + headers/build/os/drivers/USB_rle.h | 91 + headers/build/os/drivers/USB_spec.h | 144 + headers/build/os/drivers/atomizer.h | 97 + headers/build/os/drivers/block_io.h | 100 + headers/build/os/drivers/bus/IDE.h | 363 + headers/build/os/drivers/bus/ISA.h | 67 + headers/build/os/drivers/bus/PCI.h | 158 + headers/build/os/drivers/bus/SCSI.h | 456 ++ .../build/os/drivers/bus/ide/ide_adapter.h | 220 + headers/build/os/drivers/bus/scsi/scsi_cmds.h | 1026 +++ .../build/os/drivers/bus/scsi/scsi_periph.h | 162 + headers/build/os/drivers/bus_manager.h | 31 + headers/build/os/drivers/config_manager.h | 115 + headers/build/os/drivers/device_manager.h | 197 + .../build/os/drivers/disk_device_manager.h | 126 + headers/build/os/drivers/driver_settings.h | 52 + headers/build/os/drivers/fast_log.h | 80 + headers/build/os/drivers/fs_cache.h | 63 + headers/build/os/drivers/fs_interface.h | 258 + headers/build/os/drivers/isapnp.h | 68 + headers/build/os/drivers/lendian_bitfield.h | 68 + headers/build/os/drivers/locked_pool.h | 70 + headers/build/os/drivers/midi_driver.h | 118 + headers/build/os/drivers/mime_table.h | 56 + headers/build/os/drivers/module.h | 58 + headers/build/os/drivers/node_monitor.h | 22 + headers/build/os/drivers/pnp_devfs.h | 55 + headers/build/os/drivers/usb/USB_audio.h | 144 + headers/build/os/drivers/usb/USB_cdc.h | 136 + headers/build/os/drivers/usb/USB_hid.h | 116 + headers/build/os/drivers/usb/USB_langIDs.h | 173 + headers/build/os/drivers/usb/USB_midi.h | 20 + headers/build/os/game/DirectWindow.h | 168 + headers/build/os/game/FileGameSound.h | 138 + headers/build/os/game/GameSound.h | 167 + headers/build/os/game/GameSoundDefs.h | 100 + headers/build/os/game/PushGameSound.h | 138 + headers/build/os/game/SimpleGameSound.h | 111 + headers/build/os/game/StreamingGameSound.h | 122 + headers/build/os/game/WindowScreen.h | 225 + headers/build/os/interface/Alert.h | 155 + headers/build/os/interface/Bitmap.h | 112 + headers/build/os/interface/Box.h | 126 + headers/build/os/interface/Button.h | 122 + headers/build/os/interface/ChannelControl.h | 221 + headers/build/os/interface/ChannelSlider.h | 158 + headers/build/os/interface/CheckBox.h | 113 + headers/build/os/interface/ColorControl.h | 169 + headers/build/os/interface/ColorUtils.h | 44 + headers/build/os/interface/Control.h | 140 + headers/build/os/interface/Deskbar.h | 93 + headers/build/os/interface/Dragger.h | 126 + headers/build/os/interface/Font.h | 358 + headers/build/os/interface/GraphicsDefs.h | 337 + headers/build/os/interface/Input.h | 88 + headers/build/os/interface/InterfaceDefs.h | 392 ++ headers/build/os/interface/ListItem.h | 87 + headers/build/os/interface/ListView.h | 201 + headers/build/os/interface/Menu.h | 299 + headers/build/os/interface/MenuBar.h | 120 + headers/build/os/interface/MenuField.h | 125 + headers/build/os/interface/MenuItem.h | 124 + .../build/os/interface/MultiChannelControl.h | 165 + headers/build/os/interface/OptionControl.h | 95 + headers/build/os/interface/OptionPopUp.h | 105 + headers/build/os/interface/OutlineListView.h | 156 + headers/build/os/interface/Picture.h | 105 + headers/build/os/interface/PictureButton.h | 151 + headers/build/os/interface/Point.h | 114 + headers/build/os/interface/Polygon.h | 84 + headers/build/os/interface/PopUpMenu.h | 105 + headers/build/os/interface/PrintJob.h | 123 + headers/build/os/interface/RadioButton.h | 118 + headers/build/os/interface/Rect.h | 213 + headers/build/os/interface/Region.h | 85 + headers/build/os/interface/Screen.h | 101 + headers/build/os/interface/ScrollBar.h | 153 + headers/build/os/interface/ScrollView.h | 92 + headers/build/os/interface/SeparatorItem.h | 32 + headers/build/os/interface/Shape.h | 98 + headers/build/os/interface/Shelf.h | 115 + headers/build/os/interface/Slider.h | 209 + headers/build/os/interface/StatusBar.h | 141 + headers/build/os/interface/StringItem.h | 58 + headers/build/os/interface/StringView.h | 107 + headers/build/os/interface/TabView.h | 226 + headers/build/os/interface/TextControl.h | 153 + headers/build/os/interface/TextView.h | 427 ++ .../build/os/interface/UnicodeBlockObjects.h | 125 + headers/build/os/interface/View.h | 668 ++ headers/build/os/interface/Window.h | 429 ++ headers/build/os/kernel/OS.h | 627 ++ headers/build/os/kernel/debugger.h | 526 ++ headers/build/os/kernel/disk_scanner.h | 81 + headers/build/os/kernel/fs_attr.h | 44 + headers/build/os/kernel/fs_index.h | 40 + headers/build/os/kernel/fs_info.h | 52 + headers/build/os/kernel/fs_query.h | 41 + headers/build/os/kernel/fs_volume.h | 31 + headers/build/os/kernel/image.h | 114 + headers/build/os/kernel/scheduler.h | 54 + headers/build/os/mail/E-mail.h | 160 + headers/build/os/mail/MailAttachment.h | 127 + headers/build/os/mail/MailComponent.h | 140 + headers/build/os/mail/MailContainer.h | 78 + headers/build/os/mail/MailDaemon.h | 18 + headers/build/os/mail/MailMessage.h | 112 + headers/build/os/mail/MailSettings.h | 153 + headers/build/os/mail/mail_encoding.h | 59 + headers/build/os/media/Buffer.h | 108 + headers/build/os/media/BufferConsumer.h | 208 + headers/build/os/media/BufferGroup.h | 81 + headers/build/os/media/BufferProducer.h | 245 + headers/build/os/media/Controllable.h | 139 + headers/build/os/media/FileInterface.h | 91 + headers/build/os/media/MediaAddOn.h | 178 + headers/build/os/media/MediaDecoder.h | 101 + headers/build/os/media/MediaDefs.h | 736 ++ headers/build/os/media/MediaEncoder.h | 91 + headers/build/os/media/MediaEventLooper.h | 169 + headers/build/os/media/MediaFile.h | 216 + headers/build/os/media/MediaFiles.h | 77 + headers/build/os/media/MediaFormats.h | 215 + headers/build/os/media/MediaNode.h | 356 + headers/build/os/media/MediaRoster.h | 426 ++ headers/build/os/media/MediaTheme.h | 122 + headers/build/os/media/MediaTrack.h | 300 + headers/build/os/media/ParameterWeb.h | 523 ++ headers/build/os/media/PlaySound.h | 34 + headers/build/os/media/RealtimeAlloc.h | 51 + headers/build/os/media/Sound.h | 111 + headers/build/os/media/SoundFile.h | 103 + headers/build/os/media/SoundPlayer.h | 193 + headers/build/os/media/TimeCode.h | 119 + headers/build/os/media/TimeSource.h | 150 + headers/build/os/media/TimedEventQueue.h | 186 + headers/build/os/midi/Midi.h | 123 + headers/build/os/midi/MidiDefs.h | 302 + headers/build/os/midi/MidiPort.h | 87 + headers/build/os/midi/MidiStore.h | 134 + headers/build/os/midi/MidiSynth.h | 88 + headers/build/os/midi/MidiSynthFile.h | 65 + headers/build/os/midi/MidiText.h | 63 + headers/build/os/midi/Samples.h | 50 + headers/build/os/midi/Synth.h | 109 + headers/build/os/midi2/Midi2Defs.h | 76 + headers/build/os/midi2/MidiConsumer.h | 117 + headers/build/os/midi2/MidiEndpoint.h | 80 + headers/build/os/midi2/MidiProducer.h | 127 + headers/build/os/midi2/MidiRoster.h | 84 + headers/build/os/net/NetAddress.h | 105 + headers/build/os/net/NetBuffer.h | 128 + headers/build/os/net/NetDebug.h | 58 + headers/build/os/net/NetEndpoint.h | 283 + headers/build/os/net/net_settings.h | 62 + headers/build/os/net/netdb.h | 6 + headers/build/os/net/socket.h | 17 + headers/build/os/opengl/GL/gl.h | 2273 +++++++ headers/build/os/opengl/GL/glext.h | 6030 +++++++++++++++++ headers/build/os/opengl/GL/glu.h | 334 + headers/build/os/opengl/GL/glut.h | 772 +++ headers/build/os/opengl/GLView.h | 192 + headers/build/os/storage/Alias.h | 33 + headers/build/os/storage/AppFileInfo.h | 125 + headers/build/os/storage/Directory.h | 115 + headers/build/os/storage/Entry.h | 125 + headers/build/os/storage/EntryList.h | 62 + headers/build/os/storage/File.h | 88 + headers/build/os/storage/FilePanel.h | 151 + headers/build/os/storage/FindDirectory.h | 137 + headers/build/os/storage/Mime.h | 60 + headers/build/os/storage/MimeType.h | 164 + headers/build/os/storage/Node.h | 147 + headers/build/os/storage/NodeInfo.h | 91 + headers/build/os/storage/NodeMonitor.h | 93 + headers/build/os/storage/Path.h | 103 + headers/build/os/storage/Query.h | 123 + headers/build/os/storage/ResourceStrings.h | 92 + headers/build/os/storage/Resources.h | 118 + headers/build/os/storage/Statable.h | 82 + .../build/os/storage/StorageDefs.Private.h | 21 + headers/build/os/storage/StorageDefs.h | 58 + headers/build/os/storage/SymLink.h | 68 + headers/build/os/storage/Volume.h | 68 + headers/build/os/storage/VolumeRoster.h | 54 + headers/build/os/support/Archivable.h | 90 + headers/build/os/support/Autolock.h | 79 + headers/build/os/support/Beep.h | 29 + headers/build/os/support/BlockCache.h | 73 + headers/build/os/support/BufferIO.h | 73 + headers/build/os/support/ByteOrder.h | 144 + headers/build/os/support/ClassInfo.h | 38 + headers/build/os/support/DataIO.h | 165 + headers/build/os/support/Debug.h | 114 + headers/build/os/support/Errors.h | 495 ++ headers/build/os/support/Flattenable.h | 36 + headers/build/os/support/List.h | 98 + headers/build/os/support/Locker.h | 62 + headers/build/os/support/StopWatch.h | 41 + headers/build/os/support/String.h | 489 ++ headers/build/os/support/SupportDefs.h | 156 + headers/build/os/support/TLS.h | 65 + headers/build/os/support/TypeConstants.h | 125 + headers/build/os/support/UTF8.h | 70 + headers/build/os/support/parsedate.h | 33 + headers/build/os/translation/BitmapStream.h | 113 + .../build/os/translation/TranslationDefs.h | 66 + .../build/os/translation/TranslationErrors.h | 27 + headers/build/os/translation/TranslationKit.h | 18 + .../build/os/translation/TranslationUtils.h | 126 + headers/build/os/translation/Translator.h | 137 + .../build/os/translation/TranslatorAddOn.h | 92 + .../build/os/translation/TranslatorFormats.h | 179 + .../build/os/translation/TranslatorRoster.h | 240 + headers/build/private/app/AppMisc.h | 62 + headers/build/private/app/AppServerLink.h | 26 + .../build/private/app/ApplicationPrivate.h | 19 + headers/build/private/app/AreaLink.h | 78 + headers/build/private/app/ClipboardPrivate.h | 12 + headers/build/private/app/LinkMsgReader.h | 59 + headers/build/private/app/LinkMsgSender.h | 63 + headers/build/private/app/LooperList.h | 126 + headers/build/private/app/Message2.h | 454 ++ headers/build/private/app/Message3.h | 368 + headers/build/private/app/MessageBody.h | 255 + headers/build/private/app/MessageBody2.h | 87 + headers/build/private/app/MessageBody3.h | 103 + headers/build/private/app/MessageField.h | 788 +++ headers/build/private/app/MessageField2.h | 96 + headers/build/private/app/MessageField3.h | 120 + headers/build/private/app/MessagePrivate.h | 80 + headers/build/private/app/MessageUtils.h | 209 + headers/build/private/app/MessageUtils2.h | 222 + headers/build/private/app/MessageUtils3.h | 230 + headers/build/private/app/MessengerPrivate.h | 28 + headers/build/private/app/PortLink.h | 190 + headers/build/private/app/PortMessage.h | 82 + headers/build/private/app/PortQueue.h | 58 + headers/build/private/app/RegistrarDefs.h | 177 + headers/build/private/app/RegistrarThread.h | 45 + .../private/app/RegistrarThreadManager.h | 45 + headers/build/private/app/RosterPrivate.h | 76 + headers/build/private/app/Server.h | 23 + headers/build/private/app/ServerMemIO.h | 68 + headers/build/private/app/ServerProtocol.h | 361 + headers/build/private/app/Session.h | 112 + headers/build/private/app/SimpleMallocIO.h | 88 + headers/build/private/app/TokenSpace.h | 82 + headers/build/private/interface/BMCPrivate.h | 110 + .../build/private/interface/ClientFontList.h | 25 + headers/build/private/interface/ColorTools.h | 103 + .../build/private/interface/ColumnListView.h | 366 + headers/build/private/interface/MenuPrivate.h | 12 + headers/build/private/interface/MenuWindow.h | 47 + .../build/private/interface/PictureProtocol.h | 213 + .../build/private/interface/PrivateScreen.h | 96 + .../private/interface/R5_AppServerLink.h | 21 + headers/build/private/interface/R5_Session.h | 69 + .../build/private/interface/RegionSupport.h | 43 + headers/build/private/interface/TPicture.h | 118 + headers/build/private/interface/TextInput.h | 90 + .../private/interface/TextViewSupportBuffer.h | 145 + headers/build/private/interface/ViewAux.h | 135 + headers/build/private/interface/WidthBuffer.h | 75 + headers/build/private/interface/WindowAux.h | 69 + headers/build/private/interface/WindowInfo.h | 45 + .../build/private/interface/WindowPrivate.h | 32 + .../private/interface/ZombieReplicantView.h | 54 + headers/build/private/interface/clipping.h | 172 + .../build/private/interface/input_globals.h | 36 + headers/build/private/interface/moreUTF8.h | 101 + headers/build/private/interface/pr_server.h | 97 + .../build/private/interface/truncate_string.h | 22 + headers/build/private/kernel/syscalls.h | 434 ++ headers/build/private/shared/AutoDeleter.h | 148 + headers/build/private/shared/DataBuffer.h | 77 + headers/build/private/shared/ObjectList.h | 800 +++ headers/build/private/shared/ObjectLocker.h | 100 + headers/build/private/shared/cpu_type.h | 231 + headers/build/private/storage/AddOnMonitor.h | 35 + .../private/storage/AddOnMonitorHandler.h | 61 + headers/build/private/storage/DiskDevice.h | 60 + .../build/private/storage/DiskDeviceDefs.h | 163 + headers/build/private/storage/DiskDeviceJob.h | 47 + .../build/private/storage/DiskDeviceList.h | 90 + .../build/private/storage/DiskDevicePrivate.h | 55 + .../build/private/storage/DiskDeviceRoster.h | 166 + .../build/private/storage/DiskDeviceTypes.h | 52 + .../build/private/storage/DiskDeviceVisitor.h | 25 + .../build/private/storage/DiskScannerAddOn.h | 85 + headers/build/private/storage/DiskSystem.h | 64 + headers/build/private/storage/Elf.h | 107 + headers/build/private/storage/Exception.h | 115 + headers/build/private/storage/MimeTypes.h | 21 + .../private/storage/NodeMonitorHandler.h | 55 + headers/build/private/storage/OffsetFile.h | 67 + headers/build/private/storage/Partition.h | 172 + .../build/private/storage/PartitioningInfo.h | 36 + headers/build/private/storage/Pef.h | 48 + .../build/private/storage/QueryPredicate.h | 210 + headers/build/private/storage/ResourceFile.h | 132 + headers/build/private/storage/ResourceItem.h | 91 + .../private/storage/ResourcesContainer.h | 79 + headers/build/private/storage/ResourcesDefs.h | 107 + .../private/storage/mime/AssociatedTypes.h | 58 + .../storage/mime/CreateAppMetaMimeThread.h | 30 + headers/build/private/storage/mime/Database.h | 122 + .../private/storage/mime/InstalledTypes.h | 63 + .../private/storage/mime/MimeUpdateThread.h | 58 + .../build/private/storage/mime/SnifferRules.h | 66 + .../build/private/storage/mime/Supertype.h | 50 + .../private/storage/mime/SupportingApps.h | 51 + .../storage/mime/UpdateMimeInfoThread.h | 30 + .../private/storage/mime/database_access.h | 46 + .../private/storage/mime/database_support.h | 97 + .../private/storage/sniffer/CharStream.h | 56 + .../build/private/storage/sniffer/DisjList.h | 41 + headers/build/private/storage/sniffer/Err.h | 58 + .../build/private/storage/sniffer/Parser.h | 311 + .../build/private/storage/sniffer/Pattern.h | 58 + .../private/storage/sniffer/PatternList.h | 51 + .../build/private/storage/sniffer/RPattern.h | 45 + .../private/storage/sniffer/RPatternList.h | 46 + headers/build/private/storage/sniffer/Range.h | 44 + headers/build/private/storage/sniffer/Rule.h | 53 + .../build/private/storage/storage_support.h | 146 + .../build/private/textencoding/CharacterSet.h | 89 + .../private/textencoding/CharacterSetRoster.h | 91 + .../private/translation/FuncTranslator.h | 130 + headers/glibc/_G_config.h | 149 + headers/os/app/MessageQueue.h | 2 +- headers/os/net/netdb.h | 2 +- headers/os/support/Autolock.h | 2 +- headers/os/support/Locker.h | 2 +- headers/posix/arpa/inet.h | 2 +- headers/posix/bsd_mem.h | 29 + headers/posix/memory.h | 2 + headers/posix/netdb.h | 2 +- headers/posix/resolv.h | 2 +- headers/posix/sys/file.h | 6 + headers/private/kernel/arch/sh4/defs.h | 2 +- headers/private/kernel/boot/bootdir.h | 2 +- headers/private/net/arpa/nameser.h | 2 +- headers/private/net/arpa/nameser_compat.h | 2 +- headers/private/net/hesiod.h | 2 +- headers/private/net/irp.h | 2 +- headers/private/net/irs.h | 2 +- headers/private/net/isc/assertions.h | 2 +- headers/private/net/isc/ctl.h | 2 +- headers/private/net/isc/eventlib.h | 2 +- headers/private/net/isc/irpmarshall.h | 2 +- headers/private/net/isc/misc.h | 2 +- headers/private/net/isc/tree.h | 2 +- headers/private/net/res_update.h | 2 +- makehaikufloppy | Bin makehdimage | 593 -- src/Jamfile | 27 +- src/add-ons/Jamfile | 22 +- src/add-ons/accelerants/Jamfile | 24 +- src/add-ons/accelerants/atimach64/Jamfile | 2 +- src/add-ons/accelerants/common/Jamfile | 6 +- src/add-ons/accelerants/et6x00/Jamfile | 2 +- src/add-ons/accelerants/matrox/Jamfile | 7 +- src/add-ons/accelerants/matrox/engine/Jamfile | 6 +- src/add-ons/accelerants/neomagic/Jamfile | 7 +- .../accelerants/neomagic/engine/Jamfile | 6 +- src/add-ons/accelerants/nvidia/Jamfile | 7 +- src/add-ons/accelerants/nvidia/engine/Jamfile | 6 +- src/add-ons/accelerants/radeon/Jamfile | 9 +- src/add-ons/accelerants/radeon/impactv.c | 2 +- src/add-ons/accelerants/skeleton/Jamfile | 7 +- .../accelerants/skeleton/engine/Jamfile | 6 +- src/add-ons/accelerants/tdfx/Jamfile | 2 +- src/add-ons/accelerants/vesa/Jamfile | 2 +- src/add-ons/accelerants/via/Jamfile | 7 +- src/add-ons/accelerants/via/engine/Jamfile | 6 +- src/add-ons/decorators/BeDecorator/Jamfile | 4 +- src/add-ons/decorators/Jamfile | 8 +- src/add-ons/decorators/MacDecorator/Jamfile | 4 +- src/add-ons/decorators/WinDecorator/Jamfile | 4 +- src/add-ons/disk_scanner/Jamfile | 6 +- src/add-ons/disk_scanner/fs/Jamfile | 2 +- src/add-ons/disk_scanner/partition/Jamfile | 2 +- src/add-ons/input_server/Jamfile | 8 +- src/add-ons/input_server/devices/Jamfile | 10 +- .../input_server/devices/keyboard/Jamfile | 8 +- .../input_server/devices/mouse/Jamfile | 4 +- .../input_server/devices/serial_mouse/Jamfile | 6 +- .../input_server/devices/tablet/Jamfile | 4 +- src/add-ons/input_server/filters/Jamfile | 4 +- .../input_server/filters/screensaver/Jamfile | 4 +- src/add-ons/input_server/methods/Jamfile | 4 +- .../methods/canna/CannaInterface.cpp | 2 +- .../input_server/methods/canna/Jamfile | 11 +- .../input_server/methods/canna/lib/Jamfile | 6 +- .../input_server/methods/canna/lib/canna.h | 4 +- .../input_server/methods/canna/rk/Jamfile | 6 +- src/add-ons/kernel/Jamfile | 24 +- src/add-ons/kernel/bus_managers/Jamfile | 18 +- src/add-ons/kernel/bus_managers/acpi/Jamfile | 24 +- src/add-ons/kernel/bus_managers/agp/Jamfile | 6 +- .../bus_managers/config_manager/Jamfile | 2 +- src/add-ons/kernel/bus_managers/ide/Jamfile | 6 +- src/add-ons/kernel/bus_managers/isa/Jamfile | 6 +- src/add-ons/kernel/bus_managers/pci/Jamfile | 8 +- .../kernel/bus_managers/pci/arch/ppc/Jamfile | 2 +- .../kernel/bus_managers/pci/arch/x86/Jamfile | 2 +- src/add-ons/kernel/bus_managers/scsi/Jamfile | 6 +- .../kernel/bus_managers/scsi/queuing.h | 2 +- src/add-ons/kernel/bus_managers/usb/Jamfile | 12 +- src/add-ons/kernel/busses/Jamfile | 6 +- src/add-ons/kernel/busses/ide/Jamfile | 8 +- .../kernel/busses/ide/generic_ide_pci/Jamfile | 2 +- src/add-ons/kernel/busses/ide/ide_isa/Jamfile | 2 +- .../kernel/busses/ide/promise_tx2/Jamfile | 2 +- src/add-ons/kernel/busses/usb/Jamfile | 12 +- src/add-ons/kernel/console/Jamfile | 4 +- src/add-ons/kernel/console/vga_text/Jamfile | 2 +- src/add-ons/kernel/disk_scanner/Jamfile | 10 +- src/add-ons/kernel/disk_scanner/fs/Jamfile | 8 +- .../kernel/disk_scanner/partition/Jamfile | 4 +- .../kernel/disk_scanner/session/Jamfile | 4 +- src/add-ons/kernel/drivers/Jamfile | 26 +- src/add-ons/kernel/drivers/arch/Jamfile | 4 +- src/add-ons/kernel/drivers/arch/ppc/Jamfile | 6 +- src/add-ons/kernel/drivers/arch/x86/Jamfile | 8 +- .../kernel/drivers/arch/x86/floppy/Jamfile | 14 +- .../kernel/drivers/arch/x86/keyboard/Jamfile | 8 +- .../kernel/drivers/arch/x86/ps2mouse/Jamfile | 18 +- src/add-ons/kernel/drivers/audio/Jamfile | 12 +- src/add-ons/kernel/drivers/audio/ac97/Jamfile | 10 +- .../kernel/drivers/audio/ac97/auich/Jamfile | 20 +- .../kernel/drivers/audio/ac97/auvia/Jamfile | 20 +- .../kernel/drivers/audio/ac97/ich/Jamfile | 20 +- .../drivers/audio/ac97/ich/distro/Jamfile | 2 +- .../drivers/audio/ac97/ichaudio/Jamfile | 8 +- .../drivers/audio/ac97/ichaudio/lala/Jamfile | 4 +- .../kernel/drivers/audio/echo/24/Jamfile | 33 +- .../kernel/drivers/audio/echo/3g/Jamfile | 20 +- src/add-ons/kernel/drivers/audio/echo/Jamfile | 10 +- .../kernel/drivers/audio/echo/gals/Jamfile | 33 +- .../kernel/drivers/audio/echo/indigo/Jamfile | 20 +- .../kernel/drivers/audio/emuxki/Jamfile | 20 +- .../drivers/audio/module_driver/Jamfile | 11 +- .../kernel/drivers/audio/usb_audio/Jamfile | 11 +- src/add-ons/kernel/drivers/bus/Jamfile | 4 +- src/add-ons/kernel/drivers/bus/scsi/Jamfile | 2 +- src/add-ons/kernel/drivers/common/Jamfile | 2 +- src/add-ons/kernel/drivers/disk/Jamfile | 4 +- src/add-ons/kernel/drivers/disk/scsi/Jamfile | 6 +- .../kernel/drivers/disk/scsi/scsi_cd/Jamfile | 2 +- .../kernel/drivers/disk/scsi/scsi_dsk/Jamfile | 2 +- src/add-ons/kernel/drivers/graphics/Jamfile | 24 +- .../kernel/drivers/graphics/atimach64/Jamfile | 12 +- .../kernel/drivers/graphics/common/Jamfile | 4 +- .../kernel/drivers/graphics/et6x00/Jamfile | 11 +- .../kernel/drivers/graphics/matrox/Jamfile | 18 +- .../kernel/drivers/graphics/neomagic/Jamfile | 18 +- .../kernel/drivers/graphics/nvidia/Jamfile | 18 +- .../kernel/drivers/graphics/radeon/Jamfile | 20 +- .../kernel/drivers/graphics/skeleton/Jamfile | 17 +- .../kernel/drivers/graphics/tdfx/Jamfile | 12 +- .../kernel/drivers/graphics/vesa/Jamfile | 9 +- .../kernel/drivers/graphics/via/Jamfile | 17 +- src/add-ons/kernel/drivers/input/Jamfile | 6 +- .../kernel/drivers/input/ps2_hid/Jamfile | 18 +- .../kernel/drivers/input/usb_hid/Jamfile | 21 +- src/add-ons/kernel/drivers/misc/Jamfile | 2 +- src/add-ons/kernel/drivers/network/Jamfile | 20 +- .../kernel/drivers/network/bcm440x/Jamfile | 23 +- .../kernel/drivers/network/bcm570x/Jamfile | 23 +- .../kernel/drivers/network/ipro1000/Jamfile | 23 +- .../kernel/drivers/network/rtl8139/Jamfile | 29 +- .../kernel/drivers/network/rtl8169/Jamfile | 23 +- .../kernel/drivers/network/sis900/Jamfile | 28 +- .../kernel/drivers/network/sis900/sis900.h | 4 + .../kernel/drivers/network/stack/Jamfile | 44 +- .../kernel/drivers/network/via-rhine/Jamfile | 23 +- .../kernel/drivers/network/wb840/Jamfile | 28 +- src/add-ons/kernel/drivers/power/Jamfile | 4 +- .../kernel/drivers/power/acpi_button/Jamfile | 12 +- src/add-ons/kernel/drivers/random/Jamfile | 2 +- src/add-ons/kernel/drivers/tty/Jamfile | 2 +- src/add-ons/kernel/file_cache/Jamfile | 6 +- src/add-ons/kernel/file_systems/Jamfile | 10 +- .../kernel/file_systems/bfs/Attribute.h | 2 +- src/add-ons/kernel/file_systems/bfs/Jamfile | 4 +- src/add-ons/kernel/file_systems/dos/Jamfile | 4 +- .../kernel/file_systems/iso9660/Jamfile | 4 +- src/add-ons/kernel/file_systems/udf/Jamfile | 8 +- .../udf/drive_setup_addon/Jamfile | 6 +- src/add-ons/kernel/generic/Jamfile | 18 +- src/add-ons/kernel/generic/atomizer/Jamfile | 4 +- src/add-ons/kernel/generic/block_io/Jamfile | 6 +- src/add-ons/kernel/generic/fast_log/Jamfile | 2 +- .../kernel/generic/ide_adapter/Jamfile | 2 +- .../kernel/generic/locked_pool/Jamfile | 2 +- .../kernel/generic/memory_pool/Jamfile | 4 +- src/add-ons/kernel/generic/mime_table/Jamfile | 4 +- src/add-ons/kernel/generic/mpu401/Jamfile | 4 +- .../kernel/generic/scsi_periph/Jamfile | 2 +- .../kernel/generic/scsi_periph/handle.c | 2 +- src/add-ons/kernel/media/Jamfile | 4 +- src/add-ons/kernel/media/audio/Jamfile | 4 +- src/add-ons/kernel/media/audio/ich/Jamfile | 4 +- src/add-ons/kernel/network/Jamfile | 10 +- src/add-ons/kernel/network/core/Jamfile | 17 +- src/add-ons/kernel/network/core/socket.c | 8 + src/add-ons/kernel/network/interfaces/Jamfile | 8 +- .../network/interfaces/ethernet/Jamfile | 14 +- .../network/interfaces/loopback/Jamfile | 14 +- .../kernel/network/interfaces/ppp/Jamfile | 23 +- src/add-ons/kernel/network/ppp/Jamfile | 12 +- src/add-ons/kernel/network/ppp/ipcp/Jamfile | 22 +- src/add-ons/kernel/network/ppp/modem/Jamfile | 20 +- src/add-ons/kernel/network/ppp/pap/Jamfile | 20 +- src/add-ons/kernel/network/ppp/pppoe/Jamfile | 20 +- src/add-ons/kernel/network/ppp/shared/Jamfile | 6 +- .../network/ppp/shared/libkernelppp/Jamfile | 22 +- .../kernel/network/ppp/shared/libppp/Jamfile | 28 +- src/add-ons/kernel/network/protocols/Jamfile | 14 +- .../kernel/network/protocols/icmp/Jamfile | 14 +- .../kernel/network/protocols/ipv4/Jamfile | 14 +- .../kernel/network/protocols/raw/Jamfile | 14 +- .../kernel/network/protocols/route/Jamfile | 14 +- .../kernel/network/protocols/tcp/Jamfile | 14 +- .../kernel/network/protocols/tcp/tcp_input.c | 8 + .../kernel/network/protocols/udp/Jamfile | 14 +- .../kernel/partitioning_systems/Jamfile | 10 +- .../kernel/partitioning_systems/amiga/Jamfile | 4 +- .../kernel/partitioning_systems/apple/Jamfile | 4 +- .../kernel/partitioning_systems/intel/Jamfile | 4 +- .../partitioning_systems/session/Jamfile | 4 +- src/add-ons/mail_daemon/Jamfile | 12 +- .../mail_daemon/inbound_filters/Jamfile | 8 +- .../inbound_filters/match_header/Jamfile | 8 +- .../inbound_filters/r5_filter/Jamfile | 8 +- .../inbound_filters/spam_filter/Jamfile | 8 +- .../mail_daemon/inbound_protocols/Jamfile | 6 +- .../inbound_protocols/imap/Jamfile | 10 +- .../inbound_protocols/pop3/Jamfile | 10 +- .../mail_daemon/outbound_filters/Jamfile | 4 +- .../outbound_filters/fortune/Jamfile | 8 +- .../mail_daemon/outbound_protocols/Jamfile | 4 +- .../outbound_protocols/smtp/Jamfile | 10 +- .../mail_daemon/system_filters/Jamfile | 10 +- .../mail_daemon/system_filters/inbox/Jamfile | 8 +- .../system_filters/notifier/Jamfile | 8 +- .../mail_daemon/system_filters/outbox/Jamfile | 8 +- .../mail_daemon/system_filters/parser/Jamfile | 8 +- src/add-ons/media/Jamfile | 6 +- src/add-ons/media/media-add-ons/Jamfile | 20 +- .../media/media-add-ons/demultiplexer/Jamfile | 5 +- .../media/media-add-ons/legacy/Jamfile | 6 +- src/add-ons/media/media-add-ons/mixer/Jamfile | 6 +- .../media/media-add-ons/multi_audio/Jamfile | 8 +- .../media/media-add-ons/radeon/Jamfile | 4 +- .../media/media-add-ons/reader/Jamfile | 4 +- .../media-add-ons/tone_producer_demo/Jamfile | 4 +- .../media-add-ons/video_producer_demo/Jamfile | 4 +- .../media/media-add-ons/writer/Jamfile | 4 +- src/add-ons/media/plugins/Jamfile | 34 +- src/add-ons/media/plugins/ac3_decoder/Jamfile | 6 +- .../media/plugins/ac3_decoder/liba52/Jamfile | 4 +- src/add-ons/media/plugins/aiff_reader/Jamfile | 7 +- src/add-ons/media/plugins/au_reader/Jamfile | 6 +- src/add-ons/media/plugins/avcodec/Jamfile | 10 +- .../media/plugins/avcodec/libavcodec/Jamfile | 11 +- src/add-ons/media/plugins/avi_reader/Jamfile | 9 +- .../plugins/avi_reader/libOpenDML/Jamfile | 4 +- src/add-ons/media/plugins/matroska/Jamfile | 16 +- .../matroska/libMatroskaParser/Jamfile | 4 +- .../media/plugins/matroska/libebml/Jamfile | 4 +- .../plugins/matroska/libmatroska/Jamfile | 4 +- src/add-ons/media/plugins/mov_reader/Jamfile | 10 +- .../media/plugins/mov_reader/libMOV/Jamfile | 4 +- src/add-ons/media/plugins/mp3_decoder/Jamfile | 10 +- .../media/plugins/mp3_decoder/mpglib/Jamfile | 4 +- src/add-ons/media/plugins/mp3_reader/Jamfile | 6 +- src/add-ons/media/plugins/mp4_reader/Jamfile | 6 +- .../media/plugins/mp4_reader/libMP4/Jamfile | 4 +- src/add-ons/media/plugins/musepack/Jamfile | 12 +- .../media/plugins/musepack/mpc/Jamfile | 6 +- src/add-ons/media/plugins/ogg/Jamfile | 11 +- .../media/plugins/ogg/OggSpeexFormats.h | 2 +- .../media/plugins/ogg/OggTheoraFormats.h | 2 +- src/add-ons/media/plugins/ogg/libogg/Jamfile | 6 +- src/add-ons/media/plugins/ogg/liboggz/Jamfile | 4 +- src/add-ons/media/plugins/raw_decoder/Jamfile | 5 +- src/add-ons/media/plugins/speex/Jamfile | 11 +- .../media/plugins/speex/libspeex/Jamfile | 4 +- .../media/plugins/theora/libtheora/Jamfile | 4 +- src/add-ons/media/plugins/vorbis/Jamfile | 11 +- .../media/plugins/vorbis/libvorbis/Jamfile | 8 +- src/add-ons/media/plugins/wav_reader/Jamfile | 6 +- src/add-ons/print/Jamfile | 8 +- src/add-ons/print/drivers/Jamfile | 16 +- src/add-ons/print/drivers/canon_lips/Jamfile | 6 +- .../print/drivers/canon_lips/lips3/Jamfile | 8 +- .../print/drivers/canon_lips/lips4/Jamfile | 8 +- src/add-ons/print/drivers/pcl5/Jamfile | 10 +- src/add-ons/print/drivers/pcl6/Jamfile | 8 +- src/add-ons/print/drivers/pdf/Jamfile | 10 +- .../print/drivers/pdf/bookmarks/Jamfile | 2 +- .../print/drivers/pdf/encoding/Jamfile | 4 +- src/add-ons/print/drivers/pdf/source/Jamfile | 8 +- src/add-ons/print/drivers/pdf/xrefs/Jamfile | 2 +- src/add-ons/print/drivers/postscript/Jamfile | 8 +- src/add-ons/print/drivers/preview/Jamfile | 8 +- src/add-ons/print/drivers/shared/Jamfile | 4 +- .../print/drivers/shared/libprint/Jamfile | 8 +- src/add-ons/print/shared/Jamfile | 8 +- src/add-ons/print/transports/Jamfile | 18 +- .../print/transports/hp_jetdirect/Jamfile | 8 +- src/add-ons/print/transports/ipp/Jamfile | 8 +- src/add-ons/print/transports/lpr/Jamfile | 8 +- .../print/transports/parallel_port/Jamfile | 8 +- .../print/transports/print_to_file/Jamfile | 6 +- .../print/transports/serial_port/Jamfile | 10 +- src/add-ons/print/transports/shared/Jamfile | 4 +- src/add-ons/print/transports/usb_port/Jamfile | 10 +- src/add-ons/screen_savers/Jamfile | 6 +- src/add-ons/screen_savers/haiku/Jamfile | 4 +- .../screen_savers/slideshowsaver/Jamfile | 6 +- src/add-ons/tracker/Jamfile | 6 +- src/add-ons/tracker/filetype/Jamfile | 8 +- src/add-ons/tracker/zipomatic/Jamfile | 7 +- src/add-ons/translators/Jamfile | 26 +- src/add-ons/translators/bmp/Jamfile | 11 +- src/add-ons/translators/gif/Jamfile | 10 +- src/add-ons/translators/ico/Jamfile | 10 +- src/add-ons/translators/jpeg/Jamfile | 10 +- src/add-ons/translators/jpeg2000/Jamfile | 8 +- src/add-ons/translators/libtiff/Jamfile | 11 +- src/add-ons/translators/png/Jamfile | 17 +- src/add-ons/translators/ppm/Jamfile | 9 +- src/add-ons/translators/rtf/Jamfile | 8 +- src/add-ons/translators/rtf/convert.h | 4 +- src/add-ons/translators/rtf/main.cpp | 3 +- src/add-ons/translators/sgi/Jamfile | 11 +- src/add-ons/translators/stxt/Jamfile | 11 +- src/add-ons/translators/tga/Jamfile | 11 +- src/add-ons/translators/tiff/Jamfile | 9 +- src/apps/Jamfile | 44 +- src/apps/abouthaiku/Jamfile | 6 +- src/apps/bemail/Jamfile | 8 +- src/apps/cdplayer/Jamfile | 11 +- src/apps/clock/Jamfile | 4 +- src/apps/codycam/Jamfile | 6 +- src/apps/deskbar/Jamfile | 12 +- src/apps/diskprobe/Jamfile | 6 +- src/apps/expander/ExpanderThread.cpp | 2 +- src/apps/expander/ExpanderThread.h | 2 +- src/apps/expander/GenericThread.cpp | 2 +- src/apps/expander/Jamfile | 6 +- src/apps/glteapot/Jamfile | 4 +- src/apps/installer/Jamfile | 8 +- src/apps/magnify/Jamfile | 4 +- src/apps/midiplayer/Jamfile | 4 +- src/apps/people/Jamfile | 4 +- src/apps/poorman/Jamfile | 4 +- src/apps/pulse/Jamfile | 6 +- src/apps/showimage/Jamfile | 4 +- src/apps/soundrecorder/Jamfile | 8 +- src/apps/soundrecorder/RecorderWindow.cpp | 2 +- src/apps/stylededit/Jamfile | 12 +- src/apps/stylededit/ReplaceWindow.cpp | 4 +- src/apps/stylededit/StyledEditApp.cpp | 6 +- src/apps/terminal/Jamfile | 6 +- src/apps/tracker/Jamfile | 10 +- src/bin/Jamfile | 101 +- src/bin/addattr/Jamfile | 2 +- src/bin/arp/Jamfile | 21 +- src/bin/bash/Jamfile | 32 +- src/bin/bash/builtins/Jamfile | 22 +- src/bin/bash/lib/Jamfile | 10 +- src/bin/bash/lib/glob/Jamfile | 12 +- src/bin/bash/lib/readline/Jamfile | 14 +- src/bin/bash/lib/sh/Jamfile | 14 +- src/bin/bash/lib/tilde/Jamfile | 12 +- src/bin/bc/Jamfile | 8 +- src/bin/bc/bc/Jamfile | 2 +- src/bin/bc/dc/Jamfile | 2 +- src/bin/bc/lib/Jamfile | 4 +- src/bin/bemail_utils/Jamfile | 4 +- src/bin/bison/Jamfile | 8 +- src/bin/bison/data/Jamfile | 45 +- src/bin/bison/lib/Jamfile | 4 +- src/bin/bison/src/Jamfile | 2 +- src/bin/bzip2/Jamfile | 20 +- src/bin/chkbfs/Jamfile | 4 +- src/bin/compress/Jamfile | 2 +- src/bin/copyattr.cpp | 684 ++ src/bin/coreutils/Jamfile | 15 +- src/bin/coreutils/lib/Jamfile | 11 +- src/bin/coreutils/man/Jamfile | 5 +- src/bin/coreutils/src/Jamfile | 10 +- src/bin/desklink/Jamfile | 2 +- src/bin/diffutils/Jamfile | 13 +- src/bin/diffutils/lib/Jamfile | 13 +- src/bin/diffutils/src/Jamfile | 12 +- src/bin/findutils/Jamfile | 17 +- src/bin/findutils/find/Jamfile | 10 +- src/bin/findutils/lib/Jamfile | 10 +- src/bin/findutils/locate/Jamfile | 24 +- src/bin/findutils/xargs/Jamfile | 10 +- src/bin/flex/Jamfile | 2 +- .../fortune/main.c => bin/fortune.c} | 3 +- src/bin/gawk/Jamfile | 19 +- src/bin/gawk/intl/Jamfile | 11 +- src/bin/gdb/Jamfile | 12 +- src/bin/gdb/bfd/Jamfile | 20 +- src/bin/gdb/gdb/Jamfile | 30 +- src/bin/gdb/libiberty/Jamfile | 15 +- src/bin/gdb/opcodes/Jamfile | 15 +- src/bin/gdb/readline/Jamfile | 16 +- src/bin/grep/Jamfile | 13 +- src/bin/grep/lib/Jamfile | 11 +- src/bin/grep/src/Jamfile | 12 +- src/bin/gzip/Jamfile | 30 +- src/bin/ideinfo/Jamfile | 4 +- src/bin/ifconfig/Jamfile | 14 +- src/bin/keymap/Jamfile | 4 +- src/bin/keymap/Keymap.cpp | 28 + src/bin/less/Jamfile | 14 +- src/bin/listdev/Jamfile | 2 +- src/bin/make/Jamfile | 11 +- src/bin/make/glob/Jamfile | 8 +- src/bin/makebootable/Jamfile | 5 + .../makebootable/platform/bios_ia32/Jamfile | 6 + .../platform/bios_ia32/makebootable.cpp | 276 + src/bin/makeudfimage/Jamfile | 6 +- src/bin/mkdos/Jamfile | 2 +- src/bin/patch/Jamfile | 2 +- src/bin/pc/Jamfile | 2 +- src/bin/pcmcia-cs/Jamfile | 2 +- src/bin/ping/Jamfile | 14 +- src/bin/playsound/Jamfile | 4 +- src/bin/ppp_up/Jamfile | 22 +- src/bin/pppconfig/Jamfile | 24 +- src/bin/rcs/Jamfile | 4 +- src/bin/rmattr.cpp | 1 + src/bin/rmd160/Jamfile | 2 +- src/bin/route/Jamfile | 14 +- src/bin/screen_blanker/Jamfile | 6 +- src/bin/sed/Jamfile | 6 +- src/bin/sed/lib/Jamfile | 7 +- src/bin/sed/sed/Jamfile | 6 +- src/bin/settype.cpp | 241 + src/bin/setversion.cpp | 2 +- src/bin/sharutils/Jamfile | 6 +- src/bin/sharutils/lib/Jamfile | 4 +- src/bin/sharutils/src/Jamfile | 2 +- src/bin/strace/Jamfile | 10 +- src/bin/tar/Jamfile | 13 +- src/bin/tar/lib/Jamfile | 4 +- src/bin/tar/src/Jamfile | 2 +- src/bin/traceroute/Jamfile | 14 +- src/bin/unzip/Jamfile | 6 +- src/bin/vim/Jamfile | 11 +- src/bin/vim/runtime/Jamfile | 36 +- src/bin/vim/src/Jamfile | 35 +- src/bin/xres.cpp | 883 +++ src/bin/zic/Jamfile | 6 +- src/bin/zip/Jamfile | 4 +- src/build/Jamfile | 5 + src/build/cpp_support.cpp | 51 - src/build/libbe/Jamfile | 22 + src/build/libbe/app/AppMisc.cpp | 89 + src/build/libbe/app/Jamfile | 17 + src/build/libbe/app/Message.cpp | 1776 +++++ src/build/libbe/app/MessageBody.cpp | 412 ++ src/build/libbe/app/MessageField.cpp | 50 + src/build/libbe/app/MessageUtils.cpp | 130 + src/build/libbe/app/Messenger.cpp | 234 + src/build/libbe/app/TypeConstants.cpp | 39 + src/build/libbe/interface/Bitmap.cpp | 2241 ++++++ src/build/libbe/interface/GraphicsDefs.cpp | 174 + src/build/libbe/interface/Jamfile | 16 + src/build/libbe/interface/Point.cpp | 101 + src/build/libbe/interface/Rect.cpp | 279 + src/build/libbe/interface/Region.cpp | 507 ++ src/build/libbe/interface/RegionSupport.cpp | 915 +++ src/build/libbe/storage/AddOnImage.cpp | 54 + src/build/libbe/storage/AddOnImage.h | 32 + src/build/libbe/storage/AddOnMonitor.cpp | 55 + .../libbe/storage/AddOnMonitorHandler.cpp | 558 ++ src/build/libbe/storage/AppFileInfo.cpp | 1221 ++++ src/build/libbe/storage/Directory.cpp | 957 +++ src/build/libbe/storage/DiskDevice.cpp | 385 ++ src/build/libbe/storage/DiskDeviceJob.cpp | 167 + src/build/libbe/storage/DiskDeviceList.cpp | 832 +++ src/build/libbe/storage/DiskDevicePrivate.cpp | 64 + src/build/libbe/storage/DiskDeviceRoster.cpp | 870 +++ src/build/libbe/storage/DiskDeviceTypes.cpp | 41 + src/build/libbe/storage/DiskDeviceVisitor.cpp | 74 + src/build/libbe/storage/DiskScannerAddOn.cpp | 212 + src/build/libbe/storage/DiskSystem.cpp | 306 + src/build/libbe/storage/Entry.cpp | 1087 +++ src/build/libbe/storage/EntryList.cpp | 110 + src/build/libbe/storage/File.cpp | 524 ++ src/build/libbe/storage/FindDirectory.cpp | 45 + src/build/libbe/storage/Jamfile | 30 + src/build/libbe/storage/LibBeAdapter.cpp | 722 ++ src/build/libbe/storage/Mime.cpp | 210 + src/build/libbe/storage/MimeType.cpp | 390 ++ src/build/libbe/storage/Node.cpp | 799 +++ src/build/libbe/storage/Node.notes | 11 + src/build/libbe/storage/NodeInfo.cpp | 789 +++ src/build/libbe/storage/NodeMonitor.cpp | 169 + .../libbe/storage/NodeMonitorHandler.cpp | 250 + src/build/libbe/storage/OffsetFile.cpp | 175 + src/build/libbe/storage/Partition.cpp | 1316 ++++ .../libbe/storage/PartitioningDialog.cpp | 195 + src/build/libbe/storage/PartitioningDialog.h | 41 + src/build/libbe/storage/PartitioningInfo.cpp | 96 + src/build/libbe/storage/Path.cpp | 724 ++ src/build/libbe/storage/Query.cpp | 776 +++ src/build/libbe/storage/QueryPredicate.cpp | 490 ++ src/build/libbe/storage/ResourceFile.cpp | 1252 ++++ src/build/libbe/storage/ResourceItem.cpp | 194 + src/build/libbe/storage/ResourceStrings.cpp | 405 ++ src/build/libbe/storage/Resources.cpp | 854 +++ .../libbe/storage/ResourcesContainer.cpp | 216 + src/build/libbe/storage/Statable.cpp | 267 + src/build/libbe/storage/SymLink.cpp | 218 + src/build/libbe/storage/Volume.cpp | 230 + src/build/libbe/storage/VolumeRoster.cpp | 222 + .../libbe/storage/mime/AssociatedTypes.cpp | 449 ++ .../storage/mime/CreateAppMetaMimeThread.cpp | 97 + src/build/libbe/storage/mime/Database.cpp | 1148 ++++ .../libbe/storage/mime/InstalledTypes.cpp | 505 ++ .../libbe/storage/mime/MimeUpdateThread.cpp | 221 + src/build/libbe/storage/mime/SnifferRules.cpp | 543 ++ src/build/libbe/storage/mime/Supertype.cpp | 169 + .../libbe/storage/mime/SupportingApps.cpp | 320 + .../storage/mime/UpdateMimeInfoThread.cpp | 73 + .../libbe/storage/mime/database_access.cpp | 425 ++ .../libbe/storage/mime/database_support.cpp | 377 ++ .../libbe/storage/sniffer/CharStream.cpp | 135 + src/build/libbe/storage/sniffer/DisjList.cpp | 34 + src/build/libbe/storage/sniffer/Err.cpp | 98 + src/build/libbe/storage/sniffer/Parser.cpp | 1277 ++++ src/build/libbe/storage/sniffer/Pattern.cpp | 226 + .../libbe/storage/sniffer/PatternList.cpp | 101 + src/build/libbe/storage/sniffer/RPattern.cpp | 74 + .../libbe/storage/sniffer/RPatternList.cpp | 94 + src/build/libbe/storage/sniffer/Range.cpp | 65 + src/build/libbe/storage/sniffer/Rule.cpp | 110 + src/build/libbe/storage/storage_support.cpp | 507 ++ src/build/libbe/support/Archivable.cpp | 304 + src/build/libbe/support/Beep.cpp | 33 + src/build/libbe/support/BlockCache.cpp | 150 + src/build/libbe/support/BufferIO.cpp | 316 + src/build/libbe/support/ByteOrder.cpp | 177 + src/build/libbe/support/DataBuffer.cpp | 172 + src/build/libbe/support/DataIO.cpp | 461 ++ src/build/libbe/support/Flattenable.cpp | 46 + src/build/libbe/support/Jamfile | 21 + src/build/libbe/support/List.cpp | 437 ++ src/build/libbe/support/Locker.cpp | 288 + src/build/libbe/support/PointerList.cpp | 582 ++ src/build/libbe/support/StopWatch.cpp | 123 + src/build/libbe/support/String.cpp | 2315 +++++++ src/build/libroot/Jamfile | 41 + src/build/libroot/NodeRef.h | 57 + src/build/libroot/byteorder.cpp | 24 + src/build/libroot/errors.cpp | 158 + src/build/libroot/fs.cpp | 1333 ++++ src/build/libroot/fs_attr.cpp | 467 ++ src/build/libroot/fs_attr_impl.h | 19 + src/build/libroot/misc.cpp | 60 + src/build/libroot/sem.cpp | 152 + src/build/libroot/thread.cpp | 31 + src/data/Jamfile | 4 +- src/data/etc/Jamfile | 6 +- src/data/etc/keymaps/Jamfile | 11 +- src/data/etc/timezones/Jamfile | 45 +- src/documentation/Jamfile | 47 +- src/documentation/haiku_book/Jamfile | 2 +- src/documentation/shell_tools/Jamfile | 7 +- src/kits/Jamfile | 72 +- src/kits/app/Application.cpp | 1 + src/kits/app/Jamfile | 9 +- src/kits/debug/Jamfile | 10 +- src/kits/device/Jamfile | 7 +- src/kits/game/FileGameSound.cpp | 3 +- src/kits/game/GameSoundBuffer.cpp | 4 +- src/kits/game/Jamfile | 14 +- src/kits/game/SimpleGameSound.cpp | 4 +- src/kits/interface/Jamfile | 26 +- src/kits/mail/Jamfile | 17 +- src/kits/media/Jamfile | 14 +- src/kits/midi/Jamfile | 11 +- src/kits/midi2/Jamfile | 11 +- src/kits/network/Jamfile | 10 +- src/kits/network/libbind/Jamfile | 31 +- src/kits/network/libbind/dst/dst_api.c | 1 - src/kits/network/libbind/dst/support.c | 2 +- src/kits/network/libbind/inet/inet_addr.c | 2 +- .../network/libbind/inet/inet_cidr_ntop.c | 2 +- .../network/libbind/inet/inet_cidr_pton.c | 2 +- src/kits/network/libbind/inet/inet_data.c | 2 +- src/kits/network/libbind/inet/inet_net_ntop.c | 2 +- src/kits/network/libbind/inet/inet_net_pton.c | 2 +- src/kits/network/libbind/inet/inet_neta.c | 2 +- src/kits/network/libbind/inet/inet_ntoa.c | 2 +- src/kits/network/libbind/inet/inet_ntop.c | 2 +- src/kits/network/libbind/inet/inet_pton.c | 2 +- src/kits/network/libbind/inet/nsap_addr.c | 2 +- src/kits/network/libbind/irs/dns.c | 2 +- src/kits/network/libbind/irs/dns_gr.c | 2 +- src/kits/network/libbind/irs/dns_ho.c | 2 +- src/kits/network/libbind/irs/dns_nw.c | 2 +- src/kits/network/libbind/irs/dns_p.h | 2 +- src/kits/network/libbind/irs/dns_pr.c | 2 +- src/kits/network/libbind/irs/dns_pw.c | 2 +- src/kits/network/libbind/irs/dns_sv.c | 2 +- src/kits/network/libbind/irs/gen.c | 2 +- src/kits/network/libbind/irs/gen_gr.c | 2 +- src/kits/network/libbind/irs/gen_ho.c | 2 +- src/kits/network/libbind/irs/gen_ng.c | 2 +- src/kits/network/libbind/irs/gen_nw.c | 2 +- src/kits/network/libbind/irs/gen_p.h | 2 +- src/kits/network/libbind/irs/gen_pr.c | 2 +- src/kits/network/libbind/irs/gen_pw.c | 2 +- src/kits/network/libbind/irs/gen_sv.c | 2 +- src/kits/network/libbind/irs/getgrent.c | 2 +- src/kits/network/libbind/irs/getgrent_r.c | 2 +- src/kits/network/libbind/irs/gethostent.c | 2 +- src/kits/network/libbind/irs/gethostent_r.c | 2 +- src/kits/network/libbind/irs/getnetent.c | 2 +- src/kits/network/libbind/irs/getnetent_r.c | 2 +- src/kits/network/libbind/irs/getnetgrent.c | 2 +- src/kits/network/libbind/irs/getnetgrent_r.c | 2 +- src/kits/network/libbind/irs/getprotoent.c | 2 +- src/kits/network/libbind/irs/getprotoent_r.c | 2 +- src/kits/network/libbind/irs/getpwent.c | 2 +- src/kits/network/libbind/irs/getpwent_r.c | 2 +- src/kits/network/libbind/irs/getservent.c | 2 +- src/kits/network/libbind/irs/getservent_r.c | 2 +- src/kits/network/libbind/irs/hesiod.c | 2 +- src/kits/network/libbind/irs/hesiod_p.h | 2 +- src/kits/network/libbind/irs/irp.c | 2 +- src/kits/network/libbind/irs/irp_gr.c | 2 +- src/kits/network/libbind/irs/irp_ho.c | 2 +- src/kits/network/libbind/irs/irp_ng.c | 2 +- src/kits/network/libbind/irs/irp_nw.c | 2 +- src/kits/network/libbind/irs/irp_p.h | 2 +- src/kits/network/libbind/irs/irp_pr.c | 2 +- src/kits/network/libbind/irs/irp_pw.c | 2 +- src/kits/network/libbind/irs/irp_sv.c | 2 +- src/kits/network/libbind/irs/irpmarshall.c | 2 +- src/kits/network/libbind/irs/irs_data.c | 2 +- src/kits/network/libbind/irs/irs_data.h | 2 +- src/kits/network/libbind/irs/irs_p.h | 2 +- src/kits/network/libbind/irs/lcl.c | 2 +- src/kits/network/libbind/irs/lcl_gr.c | 2 +- src/kits/network/libbind/irs/lcl_ho.c | 2 +- src/kits/network/libbind/irs/lcl_ng.c | 2 +- src/kits/network/libbind/irs/lcl_nw.c | 2 +- src/kits/network/libbind/irs/lcl_p.h | 2 +- src/kits/network/libbind/irs/lcl_pr.c | 2 +- src/kits/network/libbind/irs/lcl_pw.c | 2 +- src/kits/network/libbind/irs/lcl_sv.c | 2 +- src/kits/network/libbind/irs/nis.c | 2 +- src/kits/network/libbind/irs/nis_gr.c | 2 +- src/kits/network/libbind/irs/nis_ho.c | 2 +- src/kits/network/libbind/irs/nis_ng.c | 2 +- src/kits/network/libbind/irs/nis_nw.c | 2 +- src/kits/network/libbind/irs/nis_p.h | 2 +- src/kits/network/libbind/irs/nis_pr.c | 2 +- src/kits/network/libbind/irs/nis_pw.c | 2 +- src/kits/network/libbind/irs/nis_sv.c | 2 +- src/kits/network/libbind/irs/nul_ng.c | 2 +- src/kits/network/libbind/irs/pathnames.h | 2 +- src/kits/network/libbind/irs/util.c | 2 +- src/kits/network/libbind/isc/assertions.c | 2 +- src/kits/network/libbind/isc/base64.c | 2 +- src/kits/network/libbind/isc/bitncmp.c | 2 +- src/kits/network/libbind/isc/ctl_clnt.c | 2 +- src/kits/network/libbind/isc/ctl_p.c | 2 +- src/kits/network/libbind/isc/ctl_srvr.c | 2 +- src/kits/network/libbind/isc/ev_connects.c | 2 +- src/kits/network/libbind/isc/ev_files.c | 2 +- src/kits/network/libbind/isc/ev_streams.c | 2 +- src/kits/network/libbind/isc/ev_timers.c | 2 +- src/kits/network/libbind/isc/ev_waits.c | 2 +- src/kits/network/libbind/isc/eventlib.c | 2 +- src/kits/network/libbind/isc/eventlib_p.h | 2 +- src/kits/network/libbind/isc/heap.c | 2 +- src/kits/network/libbind/isc/logging.c | 2 +- src/kits/network/libbind/isc/memcluster.c | 2 +- src/kits/network/libbind/isc/tree.c | 2 +- src/kits/network/libbind/nameser/ns_date.c | 2 +- src/kits/network/libbind/nameser/ns_name.c | 2 +- src/kits/network/libbind/nameser/ns_netint.c | 2 +- src/kits/network/libbind/nameser/ns_parse.c | 2 +- src/kits/network/libbind/nameser/ns_print.c | 2 +- .../network/libbind/nameser/ns_samedomain.c | 2 +- src/kits/network/libbind/nameser/ns_sign.c | 2 +- src/kits/network/libbind/nameser/ns_ttl.c | 2 +- src/kits/network/libbind/nameser/ns_verify.c | 2 +- src/kits/network/libbind/resolv/herror.c | 2 +- src/kits/network/libbind/resolv/res_comp.c | 2 +- src/kits/network/libbind/resolv/res_data.c | 2 +- src/kits/network/libbind/resolv/res_debug.c | 2 +- .../network/libbind/resolv/res_findzonecut.c | 2 +- src/kits/network/libbind/resolv/res_init.c | 2 +- src/kits/network/libbind/resolv/res_mkquery.c | 2 +- .../network/libbind/resolv/res_mkupdate.c | 2 +- src/kits/network/libbind/resolv/res_query.c | 2 +- src/kits/network/libbind/resolv/res_send.c | 2 +- src/kits/network/libbind/resolv/res_update.c | 2 +- src/kits/network/libnet/Jamfile | 41 +- src/kits/network/libnetapi/Jamfile | 20 +- src/kits/network/libsocket/Jamfile | 16 +- src/kits/opengl/Jamfile | 51 +- src/kits/opengl/glu/Jamfile | 192 +- src/kits/opengl/glut/Jamfile | 2 +- src/kits/opengl/mesa/Jamfile | 363 +- src/kits/screensaver/Jamfile | 13 +- src/kits/storage/AppFileInfo.cpp | 18 +- src/kits/storage/Jamfile | 62 +- src/kits/storage/ResourceFile.cpp | 8 +- src/kits/storage/ResourceItem.cpp | 4 +- src/kits/support/Jamfile | 10 +- src/kits/textencoding/Jamfile | 20 +- src/kits/textencoding/libiconv/Jamfile | 22 +- src/kits/tracker/Jamfile | 6 +- src/kits/translation/Jamfile | 13 +- src/libs/Jamfile | 16 +- src/libs/agg/Jamfile | 97 +- src/libs/freetype2/Jamfile | 8 +- src/libs/freetype2/autofit/Jamfile | 4 +- src/libs/freetype2/autohint/Jamfile | 7 +- src/libs/freetype2/base/Jamfile | 4 +- src/libs/freetype2/bdf/Jamfile | 4 +- src/libs/freetype2/cache/Jamfile | 4 +- src/libs/freetype2/cff/Jamfile | 4 +- src/libs/freetype2/cid/Jamfile | 4 +- src/libs/freetype2/gzip/Jamfile | 4 +- src/libs/freetype2/lzw/Jamfile | 4 +- src/libs/freetype2/otvalid/Jamfile | 4 +- src/libs/freetype2/pcf/Jamfile | 4 +- src/libs/freetype2/pfr/Jamfile | 4 +- src/libs/freetype2/psaux/Jamfile | 4 +- src/libs/freetype2/pshinter/Jamfile | 4 +- src/libs/freetype2/psnames/Jamfile | 4 +- src/libs/freetype2/raster/Jamfile | 4 +- src/libs/freetype2/sfnt/Jamfile | 4 +- src/libs/freetype2/smooth/Jamfile | 4 +- src/libs/freetype2/truetype/Jamfile | 4 +- src/libs/freetype2/type1/Jamfile | 4 +- src/libs/freetype2/type42/Jamfile | 4 +- src/libs/freetype2/winfonts/Jamfile | 4 +- src/libs/pdflib/Jamfile | 4 +- src/libs/pdflib/Makefile | 2 +- src/libs/pdflib/bind/Makefile | 2 +- src/libs/pdflib/bind/pdflib/Makefile | 2 +- src/libs/pdflib/bind/pdflib/c/Makefile | 2 +- src/libs/pdflib/bind/pdflib/c/businesscard.c | 2 +- src/libs/pdflib/bind/pdflib/c/chartab.c | 2 +- src/libs/pdflib/bind/pdflib/c/hello.c | 2 +- src/libs/pdflib/bind/pdflib/c/hellodl.c | 2 +- src/libs/pdflib/bind/pdflib/c/image.c | 2 +- src/libs/pdflib/bind/pdflib/c/invoice.c | 2 +- src/libs/pdflib/bind/pdflib/c/pdfclock.c | 2 +- src/libs/pdflib/bind/pdflib/c/pdflibdl.c | 2 +- src/libs/pdflib/bind/pdflib/c/pdflibdl.h | 2 +- .../pdflib/bind/pdflib/c/quickreference.c | 2 +- src/libs/pdflib/bind/pdflib/cpp/Makefile | 2 +- .../pdflib/bind/pdflib/cpp/businesscard.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/chartab.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/hello.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/image.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/invoice.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/pdfclock.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/pdflib.cpp | 2 +- src/libs/pdflib/bind/pdflib/cpp/pdflib.hpp | 2 +- .../pdflib/bind/pdflib/cpp/quickreference.cpp | 2 +- src/libs/pdflib/bind/pdflib/java/Makefile | 2 +- .../bind/pdflib/java/PDFlibException.java | 2 +- .../pdflib/bind/pdflib/java/businesscard.java | 2 +- src/libs/pdflib/bind/pdflib/java/chartab.java | 2 +- src/libs/pdflib/bind/pdflib/java/hello.java | 2 +- src/libs/pdflib/bind/pdflib/java/image.java | 2 +- src/libs/pdflib/bind/pdflib/java/invoice.java | 2 +- .../bind/pdflib/java/jsp/businesscard.jsp | 2 +- .../pdflib/bind/pdflib/java/jsp/chartab.jsp | 2 +- .../pdflib/bind/pdflib/java/jsp/hello.jsp | 2 +- .../pdflib/bind/pdflib/java/jsp/image.jsp | 2 +- .../pdflib/bind/pdflib/java/jsp/invoice.jsp | 2 +- .../pdflib/bind/pdflib/java/jsp/pdfclock.jsp | 2 +- .../bind/pdflib/java/jsp/quickreference.jsp | 2 +- .../pdflib/bind/pdflib/java/pdfclock.java | 2 +- src/libs/pdflib/bind/pdflib/java/pdflib.java | 2 +- .../pdflib/bind/pdflib/java/pdflib_java.c | 2 +- .../bind/pdflib/java/quickreference.java | 2 +- .../java/servlet/businesscardServlet.java | 2 +- .../pdflib/java/servlet/chartabServlet.java | 2 +- .../pdflib/java/servlet/helloServlet.java | 2 +- .../pdflib/java/servlet/imageServlet.java | 2 +- .../pdflib/java/servlet/invoiceServlet.java | 2 +- .../pdflib/java/servlet/pdfclockServlet.java | 2 +- .../java/servlet/quickreferenceServlet.java | 2 +- src/libs/pdflib/bind/pdflib/perl/Makefile | 2 +- .../pdflib/bind/pdflib/perl/businesscard.pl | 2 +- src/libs/pdflib/bind/pdflib/perl/chartab.pl | 2 +- src/libs/pdflib/bind/pdflib/perl/hello.pl | 2 +- src/libs/pdflib/bind/pdflib/perl/image.pl | 2 +- src/libs/pdflib/bind/pdflib/perl/invoice.pl | 2 +- .../pdflib/bind/pdflib/perl/pdfclock.cgi.pl | 2 +- src/libs/pdflib/bind/pdflib/perl/pdfclock.pl | 2 +- src/libs/pdflib/bind/pdflib/perl/pdflib_pl.c | 2 +- src/libs/pdflib/bind/pdflib/perl/pdflib_pl.pm | 2 +- .../pdflib/bind/pdflib/perl/quickreference.pl | 2 +- .../pdflib/bind/pdflib/php/businesscard.php | 2 +- src/libs/pdflib/bind/pdflib/php/chartab.php | 2 +- .../pdflib/bind/pdflib/php/ext/pdf/config.m4 | 2 +- .../pdflib/php/ext/pdf/config.php-406+.m4 | 2 +- src/libs/pdflib/bind/pdflib/php/ext/pdf/pdf.c | 2 +- .../pdflib/bind/pdflib/php/ext/pdf/php_pdf.h | 2 +- src/libs/pdflib/bind/pdflib/php/hello.php | 2 +- src/libs/pdflib/bind/pdflib/php/image.php | 2 +- src/libs/pdflib/bind/pdflib/php/invoice.php | 2 +- src/libs/pdflib/bind/pdflib/php/pdfclock.php | 2 +- .../pdflib/bind/pdflib/php/quickreference.php | 2 +- src/libs/pdflib/bind/pdflib/python/Makefile | 2 +- .../pdflib/bind/pdflib/python/businesscard.py | 2 +- src/libs/pdflib/bind/pdflib/python/chartab.py | 2 +- src/libs/pdflib/bind/pdflib/python/hello.py | 2 +- src/libs/pdflib/bind/pdflib/python/image.py | 2 +- src/libs/pdflib/bind/pdflib/python/invoice.py | 2 +- .../pdflib/bind/pdflib/python/pdfclock.py | 2 +- .../pdflib/bind/pdflib/python/pdflib_py.c | 2 +- .../bind/pdflib/python/quickreference.py | 2 +- src/libs/pdflib/bind/pdflib/tcl/Makefile | 2 +- .../pdflib/bind/pdflib/tcl/businesscard.tcl | 2 +- src/libs/pdflib/bind/pdflib/tcl/chartab.tcl | 2 +- src/libs/pdflib/bind/pdflib/tcl/hello.tcl | 2 +- src/libs/pdflib/bind/pdflib/tcl/image.tcl | 2 +- src/libs/pdflib/bind/pdflib/tcl/invoice.tcl | 2 +- src/libs/pdflib/bind/pdflib/tcl/pdfclock.tcl | 2 +- src/libs/pdflib/bind/pdflib/tcl/pdflib_tcl.c | 2 +- .../pdflib/bind/pdflib/tcl/quickreference.tcl | 2 +- src/libs/pdflib/config/mkbind.inc.in | 2 +- src/libs/pdflib/config/mkcommon.inc.in | 2 +- src/libs/pdflib/config/mklibs.inc.in | 2 +- src/libs/pdflib/config/mkmainlib.inc | 2 +- src/libs/pdflib/config/mkprogs.inc.in | 2 +- src/libs/pdflib/config/mksubdirs.inc.in | 2 +- src/libs/pdflib/configure.in | 2 +- src/libs/pdflib/libs/Jamfile | 12 +- src/libs/pdflib/libs/Makefile | 2 +- src/libs/pdflib/libs/flate/Jamfile | 7 +- src/libs/pdflib/libs/flate/Makefile | 2 +- src/libs/pdflib/libs/flate/adler32.c | 4 +- src/libs/pdflib/libs/flate/compress.c | 4 +- src/libs/pdflib/libs/flate/crc32.c | 4 +- src/libs/pdflib/libs/flate/deflate.c | 4 +- src/libs/pdflib/libs/flate/deflate.h | 4 +- src/libs/pdflib/libs/flate/infblock.c | 2 +- src/libs/pdflib/libs/flate/infblock.h | 2 +- src/libs/pdflib/libs/flate/infcodes.c | 2 +- src/libs/pdflib/libs/flate/infcodes.h | 2 +- src/libs/pdflib/libs/flate/inffast.c | 2 +- src/libs/pdflib/libs/flate/inffast.h | 2 +- src/libs/pdflib/libs/flate/inffixed.h | 2 +- src/libs/pdflib/libs/flate/inflate.c | 2 +- src/libs/pdflib/libs/flate/inftrees.c | 2 +- src/libs/pdflib/libs/flate/inftrees.h | 2 +- src/libs/pdflib/libs/flate/infutil.c | 2 +- src/libs/pdflib/libs/flate/infutil.h | 2 +- src/libs/pdflib/libs/flate/trees.c | 4 +- src/libs/pdflib/libs/flate/trees.h | 2 +- src/libs/pdflib/libs/flate/uncompr.c | 4 +- src/libs/pdflib/libs/flate/zconf.h | 4 +- src/libs/pdflib/libs/flate/zlib.h | 2 +- src/libs/pdflib/libs/flate/zutil.c | 4 +- src/libs/pdflib/libs/flate/zutil.h | 4 +- src/libs/pdflib/libs/pdcore/Jamfile | 7 +- src/libs/pdflib/libs/pdcore/Makefile | 2 +- src/libs/pdflib/libs/pdcore/pc_chartabs.h | 2 +- src/libs/pdflib/libs/pdcore/pc_config.h | 2 +- src/libs/pdflib/libs/pdcore/pc_core.c | 2 +- src/libs/pdflib/libs/pdcore/pc_core.h | 2 +- src/libs/pdflib/libs/pdcore/pc_corefont.c | 2 +- src/libs/pdflib/libs/pdcore/pc_corefont.h | 2 +- src/libs/pdflib/libs/pdcore/pc_coremetr.h | 2 +- src/libs/pdflib/libs/pdcore/pc_crypt.c | 2 +- src/libs/pdflib/libs/pdcore/pc_crypt.h | 2 +- src/libs/pdflib/libs/pdcore/pc_ebcdic.c | 2 +- src/libs/pdflib/libs/pdcore/pc_ebcdic.h | 2 +- src/libs/pdflib/libs/pdcore/pc_encoding.c | 2 +- src/libs/pdflib/libs/pdcore/pc_encoding.h | 2 +- src/libs/pdflib/libs/pdcore/pc_file.c | 2 +- src/libs/pdflib/libs/pdcore/pc_file.h | 2 +- src/libs/pdflib/libs/pdcore/pc_font.c | 2 +- src/libs/pdflib/libs/pdcore/pc_font.h | 2 +- src/libs/pdflib/libs/pdcore/pc_generr.h | 2 +- src/libs/pdflib/libs/pdcore/pc_geom.c | 2 +- src/libs/pdflib/libs/pdcore/pc_geom.h | 2 +- src/libs/pdflib/libs/pdcore/pc_md5.c | 2 +- src/libs/pdflib/libs/pdcore/pc_md5.h | 2 +- src/libs/pdflib/libs/pdcore/pc_nocarbon.h | 2 +- src/libs/pdflib/libs/pdcore/pc_optparse.c | 2 +- src/libs/pdflib/libs/pdcore/pc_optparse.h | 2 +- src/libs/pdflib/libs/pdcore/pc_output.c | 2 +- src/libs/pdflib/libs/pdcore/pc_output.h | 2 +- src/libs/pdflib/libs/pdcore/pc_sbuf.c | 2 +- src/libs/pdflib/libs/pdcore/pc_sbuf.h | 2 +- src/libs/pdflib/libs/pdcore/pc_scope.c | 2 +- src/libs/pdflib/libs/pdcore/pc_scope.h | 2 +- src/libs/pdflib/libs/pdcore/pc_unicode.c | 2 +- src/libs/pdflib/libs/pdcore/pc_unicode.h | 2 +- src/libs/pdflib/libs/pdcore/pc_util.c | 2 +- src/libs/pdflib/libs/pdcore/pc_util.h | 2 +- src/libs/pdflib/libs/pdflib/Jamfile | 13 +- src/libs/pdflib/libs/pdflib/Makefile | 2 +- src/libs/pdflib/libs/pdflib/p_afm.c | 2 +- src/libs/pdflib/libs/pdflib/p_annots.c | 2 +- src/libs/pdflib/libs/pdflib/p_basic.c | 2 +- src/libs/pdflib/libs/pdflib/p_block.c | 2 +- src/libs/pdflib/libs/pdflib/p_bmp.c | 2 +- src/libs/pdflib/libs/pdflib/p_ccitt.c | 2 +- src/libs/pdflib/libs/pdflib/p_cid.c | 2 +- src/libs/pdflib/libs/pdflib/p_cid.h | 2 +- src/libs/pdflib/libs/pdflib/p_color.c | 2 +- src/libs/pdflib/libs/pdflib/p_color.h | 2 +- src/libs/pdflib/libs/pdflib/p_draw.c | 2 +- src/libs/pdflib/libs/pdflib/p_encoding.c | 2 +- src/libs/pdflib/libs/pdflib/p_filter.c | 2 +- src/libs/pdflib/libs/pdflib/p_font.c | 2 +- src/libs/pdflib/libs/pdflib/p_font.h | 2 +- src/libs/pdflib/libs/pdflib/p_generr.h | 2 +- src/libs/pdflib/libs/pdflib/p_gif.c | 2 +- src/libs/pdflib/libs/pdflib/p_gstate.c | 2 +- src/libs/pdflib/libs/pdflib/p_hkscmyk.h | 2 +- src/libs/pdflib/libs/pdflib/p_hkslab.h | 2 +- src/libs/pdflib/libs/pdflib/p_hostfont.c | 2 +- src/libs/pdflib/libs/pdflib/p_hyper.c | 2 +- src/libs/pdflib/libs/pdflib/p_icc.c | 2 +- src/libs/pdflib/libs/pdflib/p_icc.h | 2 +- src/libs/pdflib/libs/pdflib/p_icc9809.h | 2 +- src/libs/pdflib/libs/pdflib/p_icclib.c | 2 +- src/libs/pdflib/libs/pdflib/p_icclib.h | 2 +- src/libs/pdflib/libs/pdflib/p_image.c | 2 +- src/libs/pdflib/libs/pdflib/p_image.h | 2 +- src/libs/pdflib/libs/pdflib/p_intern.h | 2 +- src/libs/pdflib/libs/pdflib/p_jpeg.c | 2 +- src/libs/pdflib/libs/pdflib/p_kerning.c | 2 +- src/libs/pdflib/libs/pdflib/p_keyconn.h | 2 +- src/libs/pdflib/libs/pdflib/p_pantlab.h | 2 +- src/libs/pdflib/libs/pdflib/p_params.c | 2 +- src/libs/pdflib/libs/pdflib/p_params.h | 2 +- src/libs/pdflib/libs/pdflib/p_pattern.c | 2 +- src/libs/pdflib/libs/pdflib/p_pdi.c | 2 +- src/libs/pdflib/libs/pdflib/p_pfm.c | 2 +- src/libs/pdflib/libs/pdflib/p_png.c | 2 +- src/libs/pdflib/libs/pdflib/p_resource.c | 2 +- src/libs/pdflib/libs/pdflib/p_shading.c | 2 +- src/libs/pdflib/libs/pdflib/p_subsett.c | 2 +- src/libs/pdflib/libs/pdflib/p_template.c | 2 +- src/libs/pdflib/libs/pdflib/p_text.c | 2 +- src/libs/pdflib/libs/pdflib/p_tiff.c | 2 +- src/libs/pdflib/libs/pdflib/p_truetype.c | 2 +- src/libs/pdflib/libs/pdflib/p_truetype.h | 2 +- src/libs/pdflib/libs/pdflib/p_type1.c | 2 +- src/libs/pdflib/libs/pdflib/p_type3.c | 2 +- src/libs/pdflib/libs/pdflib/p_xgstate.c | 2 +- src/libs/pdflib/libs/pdflib/pdflib.h | 2 +- src/libs/pdflib/libs/pdflib/resource.h | 2 +- src/libs/pdflib/libs/png/Jamfile | 9 +- src/libs/pdflib/libs/png/Makefile | 2 +- src/libs/pdflib/libs/png/png.c | 2 +- src/libs/pdflib/libs/png/png.h | 2 +- src/libs/pdflib/libs/png/pngasmrd.h | 2 +- src/libs/pdflib/libs/png/pngconf.h | 2 +- src/libs/pdflib/libs/png/pngerror.c | 2 +- src/libs/pdflib/libs/png/pngget.c | 2 +- src/libs/pdflib/libs/png/pngmem.c | 2 +- src/libs/pdflib/libs/png/pngread.c | 2 +- src/libs/pdflib/libs/png/pngrio.c | 2 +- src/libs/pdflib/libs/png/pngrtran.c | 2 +- src/libs/pdflib/libs/png/pngrutil.c | 2 +- src/libs/pdflib/libs/png/pngset.c | 2 +- src/libs/pdflib/libs/png/pngtrans.c | 2 +- src/libs/pdflib/libs/png/pngvcrd.c | 2 +- src/libs/pdflib/libs/tiff/Jamfile | 9 +- src/libs/pdflib/libs/tiff/Makefile | 2 +- src/libs/pdflib/libs/tiff/port.h | 2 +- src/libs/pdflib/libs/tiff/t4.h | 2 +- src/libs/pdflib/libs/tiff/tif_auxx.c | 2 +- src/libs/pdflib/libs/tiff/tif_close.c | 2 +- src/libs/pdflib/libs/tiff/tif_codec.c | 2 +- src/libs/pdflib/libs/tiff/tif_compress.c | 2 +- src/libs/pdflib/libs/tiff/tif_dir.c | 2 +- src/libs/pdflib/libs/tiff/tif_dir.h | 2 +- src/libs/pdflib/libs/tiff/tif_dirinfo.c | 2 +- src/libs/pdflib/libs/tiff/tif_dirread.c | 2 +- src/libs/pdflib/libs/tiff/tif_dumpmode.c | 2 +- src/libs/pdflib/libs/tiff/tif_error.c | 2 +- src/libs/pdflib/libs/tiff/tif_fax3.c | 2 +- src/libs/pdflib/libs/tiff/tif_fax3.h | 2 +- src/libs/pdflib/libs/tiff/tif_fax3sm.c | 2 +- src/libs/pdflib/libs/tiff/tif_getimage.c | 2 +- src/libs/pdflib/libs/tiff/tif_luv.c | 2 +- src/libs/pdflib/libs/tiff/tif_lzw.c | 2 +- src/libs/pdflib/libs/tiff/tif_next.c | 2 +- src/libs/pdflib/libs/tiff/tif_open.c | 2 +- src/libs/pdflib/libs/tiff/tif_packbits.c | 2 +- src/libs/pdflib/libs/tiff/tif_predict.c | 2 +- src/libs/pdflib/libs/tiff/tif_predict.h | 2 +- src/libs/pdflib/libs/tiff/tif_read.c | 2 +- src/libs/pdflib/libs/tiff/tif_strip.c | 2 +- src/libs/pdflib/libs/tiff/tif_swab.c | 2 +- src/libs/pdflib/libs/tiff/tif_thunder.c | 2 +- src/libs/pdflib/libs/tiff/tif_tile.c | 2 +- src/libs/pdflib/libs/tiff/tif_unix.c | 2 +- src/libs/pdflib/libs/tiff/tif_version.c | 2 +- src/libs/pdflib/libs/tiff/tif_warning.c | 2 +- src/libs/pdflib/libs/tiff/tif_zip.c | 2 +- src/libs/pdflib/libs/tiff/tiff.h | 2 +- src/libs/pdflib/libs/tiff/tiffconf.h | 2 +- src/libs/pdflib/libs/tiff/tiffio.h | 2 +- src/libs/pdflib/libs/tiff/tiffiop.h | 2 +- src/libs/pdflib/libs/tiff/tiffvers.h | 2 +- src/libs/pdflib/libs/tiff/uvcode.h | 2 +- src/libs/pdflib/pdflib-config.in | 2 +- src/libs/pdflib/progs/Makefile | 2 +- src/libs/pdflib/progs/pdflib/Makefile | 2 +- src/libs/pdflib/progs/pdflib/pdfimage.c | 2 +- src/libs/pdflib/progs/pdflib/pdfimpose.c | 2 +- src/libs/pdflib/progs/pdflib/text2pdf.c | 2 +- src/libs/png/Jamfile | 8 +- src/libs/stdc++/Jamfile | 62 +- src/libs/termcap/Jamfile | 9 +- src/libs/termcap/termcap.src | 2 +- src/libs/zlib/Jamfile | 6 +- src/libs/zlib/minigzip.c | 322 + src/preferences/Jamfile | 48 +- src/preferences/appearance/Jamfile | 2 +- src/preferences/backgrounds/Jamfile | 2 +- src/preferences/datatranslations/Jamfile | 2 +- src/preferences/devices/Jamfile | 9 +- src/preferences/drivesetup/Jamfile | 4 +- src/preferences/dun/Jamfile | 4 +- src/preferences/filetypes/Jamfile | 4 +- src/preferences/fonts/Jamfile | 2 +- src/preferences/keyboard/Jamfile | 2 +- src/preferences/keymap/Jamfile | 2 +- src/preferences/mail/Jamfile | 6 +- src/preferences/media/Jamfile | 2 +- src/preferences/menu/Jamfile | 2 +- src/preferences/mouse/Jamfile | 2 +- src/preferences/network/Jamfile | 6 +- src/preferences/print/Jamfile | 4 +- src/preferences/screen/Jamfile | 2 +- src/preferences/screen/multimon.cpp | 2 +- src/preferences/screensaver/Jamfile | 7 +- src/preferences/scrollbar/Jamfile | 2 +- src/preferences/sounds/Jamfile | 2 +- src/preferences/time/Jamfile | 2 +- src/preferences/virtualmemory/Jamfile | 4 +- src/preferences/workspaces/Jamfile | 2 +- src/servers/Jamfile | 26 +- src/servers/app/AppServer.cpp | 1 + src/servers/app/Jamfile | 14 +- src/servers/app/VirtualScreen.cpp | 4 +- src/servers/app/drawing/Painter/Jamfile | 24 +- src/servers/debug/Jamfile | 4 +- src/servers/input/Jamfile | 21 +- src/servers/mail/Jamfile | 8 +- src/servers/media/Jamfile | 2 +- src/servers/media_addon/Jamfile | 7 +- src/servers/midi/Jamfile | 4 +- src/servers/net/Jamfile | 10 +- src/servers/power/Jamfile | 4 +- src/servers/print/Jamfile | 10 +- src/servers/print/shared/Jamfile | 4 +- src/servers/registrar/Jamfile | 32 +- src/servers/syslog_daemon/Jamfile | 10 +- src/system/Jamfile | 117 +- src/system/boot/Jamfile | 8 +- src/system/boot/arch/Jamfile | 4 +- src/system/boot/arch/alpha/Jamfile | 2 +- src/system/boot/arch/m68k/Jamfile | 2 +- src/system/boot/arch/mips/Jamfile | 2 +- src/system/boot/arch/ppc/Jamfile | 2 +- src/system/boot/arch/sh4/Jamfile | 2 +- src/system/boot/arch/sparc/Jamfile | 2 +- src/system/boot/arch/sparc64/Jamfile | 2 +- src/system/boot/arch/x86/Jamfile | 2 +- src/system/boot/loader/Jamfile | 24 +- src/system/boot/loader/file_systems/Jamfile | 10 +- .../loader/file_systems/amiga_ffs/Jamfile | 6 +- .../boot/loader/file_systems/bfs/Jamfile | 6 +- .../boot/loader/file_systems/hfs_plus/Jamfile | 4 +- .../boot/loader/file_systems/tarfs/Jamfile | 10 +- src/system/boot/platform/Jamfile | 6 +- src/system/boot/platform/bios_ia32/Jamfile | 8 +- src/system/boot/platform/bios_ia32/stage1.S | 1006 +++ src/system/boot/platform/bios_ia32/stage1.bin | Bin 0 -> 1024 bytes src/system/boot/platform/openfirmware/Jamfile | 8 +- .../boot/platform/openfirmware/arch/Jamfile | 4 +- .../platform/openfirmware/arch/ppc/Jamfile | 6 +- src/system/glue/Jamfile | 4 +- src/system/glue/arch/Jamfile | 2 +- src/system/glue/arch/ppc/Jamfile | 2 +- src/system/glue/arch/x86/Jamfile | 2 +- src/system/glue/start_dyn.c | 4 +- src/system/kernel/Jamfile | 30 +- src/system/kernel/arch/Jamfile | 4 +- src/system/kernel/arch/ppc/Jamfile | 2 +- src/system/kernel/arch/x86/Jamfile | 6 +- src/system/kernel/cache/Jamfile | 2 +- src/system/kernel/debug/Jamfile | 2 +- src/system/kernel/device_manager/Jamfile | 6 +- src/system/kernel/disk_device_manager/Jamfile | 10 +- src/system/kernel/fs/Jamfile | 4 +- src/system/kernel/fs/pipefs.cpp | 2 +- src/system/kernel/messaging/Jamfile | 6 +- src/system/kernel/util/Jamfile | 2 +- src/system/kernel/vm/Jamfile | 2 +- src/system/libroot/Jamfile | 8 +- src/system/libroot/os/Jamfile | 6 +- src/system/libroot/os/arch/Jamfile | 2 +- src/system/libroot/os/arch/ppc/Jamfile | 6 +- src/system/libroot/os/arch/x86/Jamfile | 6 +- src/system/libroot/posix/Jamfile | 30 +- src/system/libroot/posix/arch/Jamfile | 4 +- src/system/libroot/posix/arch/ppc/Jamfile | 2 +- src/system/libroot/posix/arch/x86/Jamfile | 4 +- src/system/libroot/posix/crypt/Jamfile | 19 +- src/system/libroot/posix/glibc/Jamfile | 20 +- src/system/libroot/posix/glibc/arch/Jamfile | 4 +- .../libroot/posix/glibc/arch/ppc/Jamfile | 4 +- .../libroot/posix/glibc/arch/x86/Jamfile | 31 +- src/system/libroot/posix/glibc/ctype/Jamfile | 12 +- .../libroot/posix/glibc/extensions/Jamfile | 13 +- src/system/libroot/posix/glibc/libio/Jamfile | 18 +- src/system/libroot/posix/glibc/locale/Jamfile | 11 +- src/system/libroot/posix/glibc/regex/Jamfile | 4 +- .../libroot/posix/glibc/stdio-common/Jamfile | 15 +- src/system/libroot/posix/glibc/stdlib/Jamfile | 5 +- src/system/libroot/posix/glibc/wcsmbs/Jamfile | 17 +- src/system/libroot/posix/locale/Jamfile | 2 +- src/system/libroot/posix/malloc/Jamfile | 2 +- src/system/libroot/posix/math/Jamfile | 4 +- src/system/libroot/posix/math/arch/Jamfile | 4 +- .../libroot/posix/math/arch/ppc/Jamfile | 4 +- .../libroot/posix/math/arch/sh4/Jamfile | 2 +- .../libroot/posix/math/arch/x86/Jamfile | 4 +- src/system/libroot/posix/pthread/Jamfile | 2 +- src/system/libroot/posix/signal/Jamfile | 2 +- src/system/libroot/posix/stdio/Jamfile | 2 +- src/system/libroot/posix/stdlib/Jamfile | 2 +- src/system/libroot/posix/string/Jamfile | 2 +- src/system/libroot/posix/sys/Jamfile | 2 +- src/system/libroot/posix/time/Jamfile | 2 +- src/system/libroot/posix/unistd/Jamfile | 2 +- src/system/runtime_loader/Jamfile | 10 +- src/tests/Jamfile | 14 +- src/tests/add-ons/Jamfile | 12 +- src/tests/add-ons/input_server/Jamfile | 6 +- src/tests/add-ons/kernel/Jamfile | 22 +- src/tests/add-ons/kernel/disk_scanner/Jamfile | 14 +- .../add-ons/kernel/disk_scanner/fs/Jamfile | 8 +- .../kernel/disk_scanner/partition/Jamfile | 6 +- .../kernel/disk_scanner/session/Jamfile | 6 +- src/tests/add-ons/kernel/drivers/Jamfile | 4 +- src/tests/add-ons/kernel/drivers/tty/Jamfile | 2 +- src/tests/add-ons/kernel/file_systems/Jamfile | 10 +- .../add-ons/kernel/file_systems/bfs/Jamfile | 23 +- .../kernel/file_systems/bfs/array/Jamfile | 6 +- .../kernel/file_systems/bfs/bfs_shell/Jamfile | 30 +- .../kernel/file_systems/bfs/btree/Jamfile | 6 +- .../file_systems/bfs/bufferPool/Jamfile | 6 +- .../kernel/file_systems/bfs/dump_log/Jamfile | 4 +- .../file_systems/bfs/fragmenter/Jamfile | 3 + .../bfs/fragmenter/fragmenter.cpp | 215 + .../kernel/file_systems/bfs/mkbfs/Jamfile | 12 +- .../kernel/file_systems/bfs/queries/Jamfile | 2 +- .../kernel/file_systems/bfs/r5/Inode.cpp | 7 +- .../kernel/file_systems/bfs/r5/Jamfile | 6 +- .../kernel/file_systems/bfs/r5/Stream.h | 2 +- .../kernel/file_systems/bfs/r5/boot_block.h | 60 + .../bfs/r5/kernel_interface_r5.cpp | 108 + .../file_systems/bfs/randomread/Jamfile | 2 +- .../kernel/file_systems/bfs/rename/Jamfile | 2 +- .../file_systems/bfs/structureSizes/Jamfile | 6 +- .../kernel/file_systems/fs_shell/FSShellRules | 9 +- .../kernel/file_systems/fs_shell/Jamfile | 57 +- .../kernel/file_systems/fs_shell/compat.h | 4 +- .../fs_shell/external_commands_beos.cpp | 97 + ...ommands.cpp => external_commands_unix.cpp} | 106 +- .../fs_shell/fs_shell_command.cpp | 2 +- .../fs_shell/fs_shell_command_beos.h | 2 +- .../fs_shell/fs_shell_command_unix.h | 2 +- .../kernel/file_systems/fs_shell/fsh.cpp | 48 +- .../kernel/file_systems/fs_shell/initfs.c | 27 +- .../kernel/file_systems/fs_shell/initfs.h | 1 + .../kernel/file_systems/fs_shell/kernel.c | 28 +- .../kernel/file_systems/fs_shell/kprotos.h | 3 + .../kernel/file_systems/fs_shell/stub.c | 83 - .../kernel/file_systems/fs_shell/sysdep.c | 4 +- .../kernel/file_systems/iso9660/Jamfile | 4 +- .../iso9660/iso9660_shell/Jamfile | 10 +- .../add-ons/kernel/file_systems/udf/Jamfile | 4 +- .../kernel/file_systems/udf/udf_shell/Jamfile | 10 +- src/tests/add-ons/kernel/network/Jamfile | 23 +- src/tests/add-ons/kernel/network/core/Jamfile | 6 +- .../add-ons/kernel/network/interfaces/Jamfile | 8 +- .../network/interfaces/ethernet/Jamfile | 6 +- .../network/interfaces/loopback/Jamfile | 6 +- .../kernel/network/interfaces/ppp/Jamfile | 8 +- src/tests/add-ons/kernel/network/ppp/Jamfile | 12 +- .../add-ons/kernel/network/ppp/ipcp/Jamfile | 8 +- .../add-ons/kernel/network/ppp/modem/Jamfile | 8 +- .../add-ons/kernel/network/ppp/pap/Jamfile | 8 +- .../add-ons/kernel/network/ppp/pppoe/Jamfile | 8 +- .../add-ons/kernel/network/ppp/shared/Jamfile | 4 +- .../network/ppp/shared/libkernelppp/Jamfile | 14 +- .../add-ons/kernel/network/protocols/Jamfile | 14 +- .../kernel/network/protocols/icmp/Jamfile | 6 +- .../kernel/network/protocols/ipv4/Jamfile | 6 +- .../kernel/network/protocols/raw/Jamfile | 6 +- .../kernel/network/protocols/route/Jamfile | 6 +- .../kernel/network/protocols/tcp/Jamfile | 6 +- .../kernel/network/protocols/udp/Jamfile | 6 +- src/tests/add-ons/media/Jamfile | 4 +- src/tests/add-ons/media/plugins/Jamfile | 4 +- .../add-ons/media/plugins/musepack/Jamfile | 6 +- src/tests/add-ons/print/Jamfile | 8 +- src/tests/add-ons/print/pcl6/Jamfile | 4 +- src/tests/add-ons/print/pdf/Jamfile | 6 +- .../add-ons/print/pdf/bezierbounds/Jamfile | 6 +- .../add-ons/print/pdf/linepathbuilder/Jamfile | 6 +- src/tests/add-ons/print/transports/Jamfile | 2 +- src/tests/add-ons/translators/Jamfile | 2 +- src/tests/apps/Jamfile | 6 +- src/tests/apps/fake_app_server/Jamfile | 10 +- src/tests/apps/miniterminal/Jamfile | 17 +- src/tests/bin/Jamfile | 4 +- src/tests/bin/makeudfimage/Jamfile | 12 +- src/tests/kernel/Jamfile | 13 +- src/tests/kernel/benchmarks/Jamfile | 2 +- src/tests/kernel/boot/Jamfile | 6 +- src/tests/kernel/boot/heap/Jamfile | 8 +- src/tests/kernel/boot/loader/Jamfile | 26 +- .../kernel/boot/loader/file_systems/Jamfile | 8 +- .../loader/file_systems/amiga_ffs/Jamfile | 8 +- .../boot/loader/file_systems/bfs/Jamfile | 10 +- .../boot/loader/file_systems/tarfs/Jamfile | 12 +- src/tests/kernel/boot_floppy/Jamfile | 259 - .../kernel/boot_floppy/cache_control.cpp | 58 - src/tests/kernel/boot_floppy/cpuinfo/Jamfile | 20 - .../kernel/boot_floppy/cpuinfo/cpuinfo.h | 105 - .../kernel/boot_floppy/cpuinfo/flag_arrays.c | 178 - src/tests/kernel/boot_floppy/cpuinfo/main.c | 663 -- src/tests/kernel/boot_floppy/echo/Jamfile | 3 - src/tests/kernel/boot_floppy/echo/main.c | 79 - src/tests/kernel/boot_floppy/envtest/Jamfile | 3 - src/tests/kernel/boot_floppy/envtest/main.c | 66 - src/tests/kernel/boot_floppy/exec_test.c | 52 - src/tests/kernel/boot_floppy/false_main.c | 13 - src/tests/kernel/boot_floppy/fibo_main.c | 72 - src/tests/kernel/boot_floppy/filetest/Jamfile | 3 - src/tests/kernel/boot_floppy/filetest/main.c | 52 - src/tests/kernel/boot_floppy/fork_test.c | 33 - src/tests/kernel/boot_floppy/fortune/Jamfile | 7 - src/tests/kernel/boot_floppy/hostname/Jamfile | 3 - src/tests/kernel/boot_floppy/hostname/main.c | 42 - src/tests/kernel/boot_floppy/init.c | 52 - src/tests/kernel/boot_floppy/ls/Jamfile | 8 - src/tests/kernel/boot_floppy/ls/main.c | 163 - src/tests/kernel/boot_floppy/monitor_test.c | 44 - src/tests/kernel/boot_floppy/on_exit_thread.c | 43 - src/tests/kernel/boot_floppy/pipe_test.c | 97 - src/tests/kernel/boot_floppy/ps/Jamfile | 3 - src/tests/kernel/boot_floppy/ps/main.c | 72 - src/tests/kernel/boot_floppy/select_test.c | 48 - src/tests/kernel/boot_floppy/shell/Jamfile | 12 - src/tests/kernel/boot_floppy/shell/args.c | 80 - src/tests/kernel/boot_floppy/shell/args.h | 10 - src/tests/kernel/boot_floppy/shell/commands.c | 238 - src/tests/kernel/boot_floppy/shell/commands.h | 22 - .../kernel/boot_floppy/shell/file_utils.c | 129 - .../kernel/boot_floppy/shell/file_utils.h | 10 - src/tests/kernel/boot_floppy/shell/main.c | 117 - src/tests/kernel/boot_floppy/shell/parse.c | 583 -- src/tests/kernel/boot_floppy/shell/parse.h | 22 - src/tests/kernel/boot_floppy/shell/script.c | 124 - src/tests/kernel/boot_floppy/shell/script.h | 27 - .../kernel/boot_floppy/shell/shell_defs.h | 71 - .../kernel/boot_floppy/shell/shell_history.c | 69 - .../kernel/boot_floppy/shell/shell_history.h | 16 - .../kernel/boot_floppy/shell/shell_vars.c | 372 - .../kernel/boot_floppy/shell/shell_vars.h | 45 - .../kernel/boot_floppy/shell/statements.c | 741 -- .../kernel/boot_floppy/shell/statements.h | 18 - src/tests/kernel/boot_floppy/sig_test.c | 122 - .../kernel/boot_floppy/sockettest/Jamfile | 3 - .../kernel/boot_floppy/sockettest/main.c | 57 - src/tests/kernel/boot_floppy/symlink/Jamfile | 3 - src/tests/kernel/boot_floppy/symlink/main.c | 22 - src/tests/kernel/boot_floppy/testapp/Jamfile | 3 - src/tests/kernel/boot_floppy/testapp/main.c | 521 -- .../kernel/boot_floppy/testdigit/Jamfile | 3 - src/tests/kernel/boot_floppy/testdigit/main.c | 47 - src/tests/kernel/boot_floppy/tests/Jamfile | 45 - .../kernel/boot_floppy/tests/fops_test.c | 69 - .../kernel/boot_floppy/tests/random_test.c | 43 - .../kernel/boot_floppy/tests/thread_test.c | 136 - src/tests/kernel/boot_floppy/tls_test.c | 97 - src/tests/kernel/boot_floppy/true_main.c | 13 - src/tests/kernel/boot_floppy/uname/Jamfile | 3 - src/tests/kernel/boot_floppy/uname/main.c | 188 - src/tests/kernel/consoled/Jamfile | 6 +- src/tests/kernel/core/Jamfile | 8 +- src/tests/kernel/core/cache/Jamfile | 12 +- .../kernel/core/disk_device_manager/Jamfile | 22 +- src/tests/kernel/core/util/Jamfile | 4 +- src/tests/kernel/libroot/Jamfile | 6 +- src/tests/kernel/libroot/os/Jamfile | 4 +- src/tests/kernel/libroot/posix/Jamfile | 8 +- src/tests/kernel/libroot/posix/bonnie/Jamfile | 2 +- src/tests/kernel/libroot/posix/math/Jamfile | 6 +- src/tests/kernel/vm2/Jamfile | 2 +- src/tests/kits/Jamfile | 22 +- src/tests/kits/app/Jamfile | 26 +- src/tests/kits/app/bapplication/Jamfile | 4 +- .../kits/app/bapplication/testapps/Jamfile | 8 +- src/tests/kits/app/bclipboard/Jamfile | 2 +- src/tests/kits/app/bcursor/Jamfile | 2 +- src/tests/kits/app/bmessenger/Jamfile | 4 +- .../kits/app/bmessenger/testapps/Jamfile | 8 +- src/tests/kits/app/broster/Jamfile | 4 +- src/tests/kits/app/broster/testapps/Jamfile | 10 +- src/tests/kits/app/common/Jamfile | 2 +- src/tests/kits/app/messaging/Jamfile | 6 +- src/tests/kits/game/Jamfile | 12 +- .../kits/game/direct_window_info_test/Jamfile | 2 +- .../kits/game/direct_window_test/Jamfile | 2 +- .../kits/game/file_game_sound_test/Jamfile | 2 +- .../kits/game/set_mouse_position_test/Jamfile | 2 +- .../kits/game/simple_game_sound_test/Jamfile | 2 +- src/tests/kits/interface/Jamfile | 12 +- .../balert/alert_manual_test/Jamfile | 2 +- src/tests/kits/interface/bfont/Jamfile | 2 +- src/tests/kits/interface/bprintjob/Jamfile | 4 +- src/tests/kits/interface/picture/Jamfile | 8 +- src/tests/kits/media/Jamfile | 14 +- src/tests/kits/media/media_decoder/Jamfile | 2 +- src/tests/kits/media/mp3_reader_test/Jamfile | 6 +- src/tests/kits/media/nodetest/Jamfile | 2 +- src/tests/kits/media/notificationtest/Jamfile | 2 +- src/tests/kits/media/playwav/Jamfile | 2 +- src/tests/kits/media/wav_reader_test/Jamfile | 6 +- src/tests/kits/midi/Jamfile | 8 +- src/tests/kits/midi/midi_player/Jamfile | 2 +- .../kits/midi/midi_player_replacement/Jamfile | 2 +- src/tests/kits/midi/synth_file_reader/Jamfile | 2 +- src/tests/kits/net/DialUpPreflet/Jamfile | 18 +- src/tests/kits/net/Jamfile | 17 +- src/tests/kits/net/netperf/Jamfile | 4 +- src/tests/kits/net/new_stack/Jamfile | 27 +- src/tests/kits/net/new_stack/atomizer/Jamfile | 6 +- src/tests/kits/net/new_stack/framings/Jamfile | 4 +- .../net/new_stack/framings/ethernet/Jamfile | 6 +- .../kits/net/new_stack/interfaces/Jamfile | 8 +- .../interfaces/ether_drivers/Jamfile | 6 +- .../net/new_stack/interfaces/loopback/Jamfile | 6 +- .../kits/net/new_stack/memory_pool/Jamfile | 6 +- .../kits/net/new_stack/protocols/Jamfile | 6 +- .../kits/net/new_stack/protocols/arp/Jamfile | 6 +- .../kits/net/new_stack/protocols/ipv4/Jamfile | 6 +- src/tests/kits/net/new_stack/stack/Jamfile | 6 +- src/tests/kits/net/preflet/Jamfile | 2 +- src/tests/kits/opengl/Jamfile | 4 +- src/tests/kits/opengl/glinfo/Jamfile | 2 +- src/tests/kits/storage/Jamfile | 8 +- src/tests/kits/storage/disk_device/Jamfile | 2 +- src/tests/kits/storage/testapps/Jamfile | 2 +- src/tests/kits/storage/virtualdrive/Jamfile | 8 +- src/tests/kits/support/Jamfile | 8 +- src/tests/kits/support/barchivable/Jamfile | 4 +- .../barchivable/remoteobjectdef/Jamfile | 2 +- src/tests/kits/translation/Jamfile | 2 +- src/tests/kits/translation/multitest/Jamfile | 2 +- src/tests/servers/Jamfile | 10 +- src/tests/servers/app/Jamfile | 53 +- src/tests/servers/app/bitmap_drawing/Jamfile | 8 +- src/tests/servers/app/copy_bits/Jamfile | 2 +- src/tests/servers/app/painter/Jamfile | 22 +- src/tests/servers/app/playground/Jamfile | 16 +- src/tests/servers/app/regularapps/Jamfile | 4 +- src/tests/servers/app/resize_limits/Jamfile | 8 +- src/tests/servers/app/scrolling/Jamfile | 2 +- src/tests/servers/app/textview/Jamfile | 2 +- src/tests/servers/debug/Jamfile | 4 +- src/tests/servers/input/Jamfile | 16 +- src/tests/servers/input/comm/Jamfile | 2 +- src/tests/servers/input/inputdevice/Jamfile | 4 +- src/tests/servers/input/msgspy/Jamfile | 4 +- src/tests/servers/input/portspy/Jamfile | 2 +- src/tests/servers/input/prefs/Jamfile | 20 +- src/tests/servers/input/replicant/Jamfile | 6 +- .../servers/input/view_input_device/Jamfile | 6 +- src/tests/servers/net/Jamfile | 4 +- src/tests/servers/registrar/Jamfile | 63 +- src/tools/Jamfile | 54 +- src/tools/copy_to_bfs_image/Jamfile | 14 +- src/tools/cppunit/Jamfile | 70 +- src/tools/elfsymbolpatcher/Jamfile | 6 +- src/tools/gensyscalls/Jamfile | 61 +- src/tools/hey/Jamfile | 2 +- src/tools/jam/Jamfile | 17 +- src/tools/jam/compile.c | 24 + src/tools/jam/jam.c | 6 + src/tools/jam/jam.h | 11 +- src/tools/jam/make1.c | 30 +- src/tools/jam/rules.c | 33 + src/tools/jam/rules.h | 10 + src/tools/keymap/Jamfile | 12 + src/tools/makebootable/Jamfile | 6 + .../makebootable/platform/bios_ia32/Jamfile | 10 + src/tools/rc/Jamfile | 13 +- src/tools/rc/R5Compatibility.h | 4 + src/tools/rc/parser.y | 2 + src/tools/rc/rdef.h | 17 +- src/tools/resattr/Jamfile | 9 +- src/tools/resattr/resattr.cpp | 1 + src/tools/rman/Jamfile | 4 +- src/tools/translation/Jamfile | 16 +- src/tools/translation/bitsinfo/Jamfile | 2 +- src/tools/translation/bmpinfo/Jamfile | 2 +- src/tools/translation/inspector/Jamfile | 6 +- src/tools/translation/pnginfo/Jamfile | 2 +- src/tools/translation/stxtinfo/Jamfile | 2 +- src/tools/translation/tgainfo/Jamfile | 2 +- src/tools/translation/tiffinfo/Jamfile | 2 +- src/tools/unflatten/Jamfile | 2 +- 1836 files changed, 114718 insertions(+), 14057 deletions(-) create mode 100644 build/jam/BeOSRules create mode 100644 build/jam/BuildSetup create mode 100644 build/jam/ConfigRules create mode 100644 build/jam/DocumentationRules create mode 100644 build/jam/FileRules create mode 100644 build/jam/FreetypeRules create mode 100644 build/jam/HaikuImage create mode 100644 build/jam/HeadersRules create mode 100644 build/jam/HelperRules create mode 100644 build/jam/ImageRules create mode 100644 build/jam/KernelRules create mode 100644 build/jam/MainBuildRules create mode 100644 build/jam/MiscRules create mode 100644 build/jam/OverriddenJamRules create mode 100644 build/jam/PackageRules create mode 100644 build/jam/TestsRules create mode 100644 build/jam/UserBuildConfig.sample create mode 100755 build/scripts/build_cross_tools create mode 100755 build/scripts/build_haiku_image rename {src/tests/kernel/boot_floppy/fortune => data/etc}/fortunes (100%) create mode 100644 headers/build/HaikuBuildCompatibility.h create mode 100644 headers/build/os/AppKit.h create mode 100644 headers/build/os/Be.h create mode 100644 headers/build/os/BeBuild.h create mode 100644 headers/build/os/DeviceKit.h create mode 100644 headers/build/os/GameKit.h create mode 100644 headers/build/os/InterfaceKit.h create mode 100644 headers/build/os/KernelKit.h create mode 100644 headers/build/os/MailKit.h create mode 100644 headers/build/os/MediaKit.h create mode 100644 headers/build/os/MidiKit.h create mode 100644 headers/build/os/NetKit.h create mode 100644 headers/build/os/NetworkKit.h create mode 100644 headers/build/os/OpenGLKit.h create mode 100644 headers/build/os/StorageKit.h create mode 100644 headers/build/os/SupportKit.h create mode 100644 headers/build/os/TranslationKit.h create mode 100644 headers/build/os/add-ons/file_system/fsproto.h create mode 100644 headers/build/os/add-ons/graphics/Accelerant.h create mode 100644 headers/build/os/add-ons/graphics/GraphicsCard.h create mode 100644 headers/build/os/add-ons/input_server/InputServerDevice.h create mode 100644 headers/build/os/add-ons/input_server/InputServerFilter.h create mode 100644 headers/build/os/add-ons/input_server/InputServerMethod.h create mode 100644 headers/build/os/add-ons/mail_daemon/ChainRunner.h create mode 100644 headers/build/os/add-ons/mail_daemon/MailAddon.h create mode 100644 headers/build/os/add-ons/mail_daemon/MailProtocol.h create mode 100644 headers/build/os/add-ons/mail_daemon/ProtocolConfigView.h create mode 100644 headers/build/os/add-ons/mail_daemon/RemoteStorageProtocol.h create mode 100644 headers/build/os/add-ons/mail_daemon/StringList.h create mode 100644 headers/build/os/add-ons/screen_saver/ScreenSaver.h create mode 100644 headers/build/os/add-ons/tracker/Background.h create mode 100644 headers/build/os/add-ons/tracker/TrackerAddOn.h create mode 100644 headers/build/os/app/AppDefs.h create mode 100644 headers/build/os/app/Application.h create mode 100644 headers/build/os/app/Clipboard.h create mode 100644 headers/build/os/app/Cursor.h create mode 100644 headers/build/os/app/Handler.h create mode 100644 headers/build/os/app/Invoker.h create mode 100644 headers/build/os/app/Looper.h create mode 100644 headers/build/os/app/Message.h create mode 100644 headers/build/os/app/MessageFilter.h create mode 100644 headers/build/os/app/MessageQueue.h create mode 100644 headers/build/os/app/MessageRunner.h create mode 100644 headers/build/os/app/Messenger.h create mode 100644 headers/build/os/app/PropertyInfo.h create mode 100644 headers/build/os/app/Roster.h create mode 100644 headers/build/os/arch/ppc/arch_debugger.h create mode 100644 headers/build/os/arch/x86/arch_debugger.h create mode 100644 headers/build/os/be_apps/Deskbar/Deskbar.h create mode 100644 headers/build/os/be_apps/NetPositive/NetPositive.h create mode 100644 headers/build/os/be_apps/Tracker/Background.h create mode 100644 headers/build/os/be_apps/Tracker/RecentItems.h create mode 100644 headers/build/os/device/A2D.h create mode 100644 headers/build/os/device/CAM.h create mode 100644 headers/build/os/device/D2A.h create mode 100644 headers/build/os/device/DigitalPort.h create mode 100644 headers/build/os/device/Joystick.h create mode 100644 headers/build/os/device/SerialPort.h create mode 100644 headers/build/os/device/graphic_driver.h create mode 100644 headers/build/os/device/scsi.h create mode 100644 headers/build/os/device/scsi_bus_raw_driver.h create mode 100644 headers/build/os/drivers/ACPI.h create mode 100644 headers/build/os/drivers/Drivers.h create mode 100644 headers/build/os/drivers/ISA.h create mode 100644 headers/build/os/drivers/KernelExport.h create mode 100644 headers/build/os/drivers/PCI.h create mode 100644 headers/build/os/drivers/Select.h create mode 100644 headers/build/os/drivers/USB.h create mode 100644 headers/build/os/drivers/USB_printer.h create mode 100644 headers/build/os/drivers/USB_rle.h create mode 100644 headers/build/os/drivers/USB_spec.h create mode 100644 headers/build/os/drivers/atomizer.h create mode 100644 headers/build/os/drivers/block_io.h create mode 100644 headers/build/os/drivers/bus/IDE.h create mode 100644 headers/build/os/drivers/bus/ISA.h create mode 100644 headers/build/os/drivers/bus/PCI.h create mode 100644 headers/build/os/drivers/bus/SCSI.h create mode 100644 headers/build/os/drivers/bus/ide/ide_adapter.h create mode 100644 headers/build/os/drivers/bus/scsi/scsi_cmds.h create mode 100644 headers/build/os/drivers/bus/scsi/scsi_periph.h create mode 100644 headers/build/os/drivers/bus_manager.h create mode 100644 headers/build/os/drivers/config_manager.h create mode 100644 headers/build/os/drivers/device_manager.h create mode 100644 headers/build/os/drivers/disk_device_manager.h create mode 100644 headers/build/os/drivers/driver_settings.h create mode 100644 headers/build/os/drivers/fast_log.h create mode 100644 headers/build/os/drivers/fs_cache.h create mode 100644 headers/build/os/drivers/fs_interface.h create mode 100644 headers/build/os/drivers/isapnp.h create mode 100644 headers/build/os/drivers/lendian_bitfield.h create mode 100644 headers/build/os/drivers/locked_pool.h create mode 100644 headers/build/os/drivers/midi_driver.h create mode 100644 headers/build/os/drivers/mime_table.h create mode 100644 headers/build/os/drivers/module.h create mode 100644 headers/build/os/drivers/node_monitor.h create mode 100644 headers/build/os/drivers/pnp_devfs.h create mode 100644 headers/build/os/drivers/usb/USB_audio.h create mode 100644 headers/build/os/drivers/usb/USB_cdc.h create mode 100644 headers/build/os/drivers/usb/USB_hid.h create mode 100644 headers/build/os/drivers/usb/USB_langIDs.h create mode 100644 headers/build/os/drivers/usb/USB_midi.h create mode 100644 headers/build/os/game/DirectWindow.h create mode 100644 headers/build/os/game/FileGameSound.h create mode 100644 headers/build/os/game/GameSound.h create mode 100644 headers/build/os/game/GameSoundDefs.h create mode 100644 headers/build/os/game/PushGameSound.h create mode 100644 headers/build/os/game/SimpleGameSound.h create mode 100644 headers/build/os/game/StreamingGameSound.h create mode 100644 headers/build/os/game/WindowScreen.h create mode 100644 headers/build/os/interface/Alert.h create mode 100644 headers/build/os/interface/Bitmap.h create mode 100644 headers/build/os/interface/Box.h create mode 100644 headers/build/os/interface/Button.h create mode 100644 headers/build/os/interface/ChannelControl.h create mode 100644 headers/build/os/interface/ChannelSlider.h create mode 100644 headers/build/os/interface/CheckBox.h create mode 100644 headers/build/os/interface/ColorControl.h create mode 100644 headers/build/os/interface/ColorUtils.h create mode 100644 headers/build/os/interface/Control.h create mode 100644 headers/build/os/interface/Deskbar.h create mode 100644 headers/build/os/interface/Dragger.h create mode 100644 headers/build/os/interface/Font.h create mode 100644 headers/build/os/interface/GraphicsDefs.h create mode 100644 headers/build/os/interface/Input.h create mode 100644 headers/build/os/interface/InterfaceDefs.h create mode 100644 headers/build/os/interface/ListItem.h create mode 100644 headers/build/os/interface/ListView.h create mode 100644 headers/build/os/interface/Menu.h create mode 100644 headers/build/os/interface/MenuBar.h create mode 100644 headers/build/os/interface/MenuField.h create mode 100644 headers/build/os/interface/MenuItem.h create mode 100644 headers/build/os/interface/MultiChannelControl.h create mode 100644 headers/build/os/interface/OptionControl.h create mode 100644 headers/build/os/interface/OptionPopUp.h create mode 100644 headers/build/os/interface/OutlineListView.h create mode 100644 headers/build/os/interface/Picture.h create mode 100644 headers/build/os/interface/PictureButton.h create mode 100644 headers/build/os/interface/Point.h create mode 100644 headers/build/os/interface/Polygon.h create mode 100644 headers/build/os/interface/PopUpMenu.h create mode 100644 headers/build/os/interface/PrintJob.h create mode 100644 headers/build/os/interface/RadioButton.h create mode 100644 headers/build/os/interface/Rect.h create mode 100644 headers/build/os/interface/Region.h create mode 100644 headers/build/os/interface/Screen.h create mode 100644 headers/build/os/interface/ScrollBar.h create mode 100644 headers/build/os/interface/ScrollView.h create mode 100644 headers/build/os/interface/SeparatorItem.h create mode 100644 headers/build/os/interface/Shape.h create mode 100644 headers/build/os/interface/Shelf.h create mode 100644 headers/build/os/interface/Slider.h create mode 100644 headers/build/os/interface/StatusBar.h create mode 100644 headers/build/os/interface/StringItem.h create mode 100644 headers/build/os/interface/StringView.h create mode 100644 headers/build/os/interface/TabView.h create mode 100644 headers/build/os/interface/TextControl.h create mode 100644 headers/build/os/interface/TextView.h create mode 100644 headers/build/os/interface/UnicodeBlockObjects.h create mode 100644 headers/build/os/interface/View.h create mode 100644 headers/build/os/interface/Window.h create mode 100644 headers/build/os/kernel/OS.h create mode 100644 headers/build/os/kernel/debugger.h create mode 100644 headers/build/os/kernel/disk_scanner.h create mode 100644 headers/build/os/kernel/fs_attr.h create mode 100644 headers/build/os/kernel/fs_index.h create mode 100644 headers/build/os/kernel/fs_info.h create mode 100644 headers/build/os/kernel/fs_query.h create mode 100644 headers/build/os/kernel/fs_volume.h create mode 100644 headers/build/os/kernel/image.h create mode 100644 headers/build/os/kernel/scheduler.h create mode 100644 headers/build/os/mail/E-mail.h create mode 100644 headers/build/os/mail/MailAttachment.h create mode 100644 headers/build/os/mail/MailComponent.h create mode 100644 headers/build/os/mail/MailContainer.h create mode 100644 headers/build/os/mail/MailDaemon.h create mode 100644 headers/build/os/mail/MailMessage.h create mode 100644 headers/build/os/mail/MailSettings.h create mode 100644 headers/build/os/mail/mail_encoding.h create mode 100644 headers/build/os/media/Buffer.h create mode 100644 headers/build/os/media/BufferConsumer.h create mode 100644 headers/build/os/media/BufferGroup.h create mode 100644 headers/build/os/media/BufferProducer.h create mode 100644 headers/build/os/media/Controllable.h create mode 100644 headers/build/os/media/FileInterface.h create mode 100644 headers/build/os/media/MediaAddOn.h create mode 100644 headers/build/os/media/MediaDecoder.h create mode 100644 headers/build/os/media/MediaDefs.h create mode 100644 headers/build/os/media/MediaEncoder.h create mode 100644 headers/build/os/media/MediaEventLooper.h create mode 100644 headers/build/os/media/MediaFile.h create mode 100644 headers/build/os/media/MediaFiles.h create mode 100644 headers/build/os/media/MediaFormats.h create mode 100644 headers/build/os/media/MediaNode.h create mode 100644 headers/build/os/media/MediaRoster.h create mode 100644 headers/build/os/media/MediaTheme.h create mode 100644 headers/build/os/media/MediaTrack.h create mode 100644 headers/build/os/media/ParameterWeb.h create mode 100644 headers/build/os/media/PlaySound.h create mode 100644 headers/build/os/media/RealtimeAlloc.h create mode 100644 headers/build/os/media/Sound.h create mode 100644 headers/build/os/media/SoundFile.h create mode 100644 headers/build/os/media/SoundPlayer.h create mode 100644 headers/build/os/media/TimeCode.h create mode 100644 headers/build/os/media/TimeSource.h create mode 100644 headers/build/os/media/TimedEventQueue.h create mode 100644 headers/build/os/midi/Midi.h create mode 100644 headers/build/os/midi/MidiDefs.h create mode 100644 headers/build/os/midi/MidiPort.h create mode 100644 headers/build/os/midi/MidiStore.h create mode 100644 headers/build/os/midi/MidiSynth.h create mode 100644 headers/build/os/midi/MidiSynthFile.h create mode 100644 headers/build/os/midi/MidiText.h create mode 100644 headers/build/os/midi/Samples.h create mode 100644 headers/build/os/midi/Synth.h create mode 100644 headers/build/os/midi2/Midi2Defs.h create mode 100644 headers/build/os/midi2/MidiConsumer.h create mode 100644 headers/build/os/midi2/MidiEndpoint.h create mode 100644 headers/build/os/midi2/MidiProducer.h create mode 100644 headers/build/os/midi2/MidiRoster.h create mode 100644 headers/build/os/net/NetAddress.h create mode 100644 headers/build/os/net/NetBuffer.h create mode 100644 headers/build/os/net/NetDebug.h create mode 100644 headers/build/os/net/NetEndpoint.h create mode 100644 headers/build/os/net/net_settings.h create mode 100644 headers/build/os/net/netdb.h create mode 100644 headers/build/os/net/socket.h create mode 100644 headers/build/os/opengl/GL/gl.h create mode 100644 headers/build/os/opengl/GL/glext.h create mode 100644 headers/build/os/opengl/GL/glu.h create mode 100644 headers/build/os/opengl/GL/glut.h create mode 100644 headers/build/os/opengl/GLView.h create mode 100644 headers/build/os/storage/Alias.h create mode 100644 headers/build/os/storage/AppFileInfo.h create mode 100644 headers/build/os/storage/Directory.h create mode 100644 headers/build/os/storage/Entry.h create mode 100644 headers/build/os/storage/EntryList.h create mode 100644 headers/build/os/storage/File.h create mode 100644 headers/build/os/storage/FilePanel.h create mode 100644 headers/build/os/storage/FindDirectory.h create mode 100644 headers/build/os/storage/Mime.h create mode 100644 headers/build/os/storage/MimeType.h create mode 100644 headers/build/os/storage/Node.h create mode 100644 headers/build/os/storage/NodeInfo.h create mode 100644 headers/build/os/storage/NodeMonitor.h create mode 100644 headers/build/os/storage/Path.h create mode 100644 headers/build/os/storage/Query.h create mode 100644 headers/build/os/storage/ResourceStrings.h create mode 100644 headers/build/os/storage/Resources.h create mode 100644 headers/build/os/storage/Statable.h create mode 100644 headers/build/os/storage/StorageDefs.Private.h create mode 100644 headers/build/os/storage/StorageDefs.h create mode 100644 headers/build/os/storage/SymLink.h create mode 100644 headers/build/os/storage/Volume.h create mode 100644 headers/build/os/storage/VolumeRoster.h create mode 100644 headers/build/os/support/Archivable.h create mode 100644 headers/build/os/support/Autolock.h create mode 100644 headers/build/os/support/Beep.h create mode 100644 headers/build/os/support/BlockCache.h create mode 100644 headers/build/os/support/BufferIO.h create mode 100644 headers/build/os/support/ByteOrder.h create mode 100644 headers/build/os/support/ClassInfo.h create mode 100644 headers/build/os/support/DataIO.h create mode 100644 headers/build/os/support/Debug.h create mode 100644 headers/build/os/support/Errors.h create mode 100644 headers/build/os/support/Flattenable.h create mode 100644 headers/build/os/support/List.h create mode 100644 headers/build/os/support/Locker.h create mode 100644 headers/build/os/support/StopWatch.h create mode 100644 headers/build/os/support/String.h create mode 100644 headers/build/os/support/SupportDefs.h create mode 100644 headers/build/os/support/TLS.h create mode 100644 headers/build/os/support/TypeConstants.h create mode 100644 headers/build/os/support/UTF8.h create mode 100644 headers/build/os/support/parsedate.h create mode 100644 headers/build/os/translation/BitmapStream.h create mode 100644 headers/build/os/translation/TranslationDefs.h create mode 100644 headers/build/os/translation/TranslationErrors.h create mode 100644 headers/build/os/translation/TranslationKit.h create mode 100644 headers/build/os/translation/TranslationUtils.h create mode 100644 headers/build/os/translation/Translator.h create mode 100644 headers/build/os/translation/TranslatorAddOn.h create mode 100644 headers/build/os/translation/TranslatorFormats.h create mode 100644 headers/build/os/translation/TranslatorRoster.h create mode 100644 headers/build/private/app/AppMisc.h create mode 100644 headers/build/private/app/AppServerLink.h create mode 100644 headers/build/private/app/ApplicationPrivate.h create mode 100644 headers/build/private/app/AreaLink.h create mode 100644 headers/build/private/app/ClipboardPrivate.h create mode 100644 headers/build/private/app/LinkMsgReader.h create mode 100644 headers/build/private/app/LinkMsgSender.h create mode 100644 headers/build/private/app/LooperList.h create mode 100644 headers/build/private/app/Message2.h create mode 100644 headers/build/private/app/Message3.h create mode 100644 headers/build/private/app/MessageBody.h create mode 100644 headers/build/private/app/MessageBody2.h create mode 100644 headers/build/private/app/MessageBody3.h create mode 100644 headers/build/private/app/MessageField.h create mode 100644 headers/build/private/app/MessageField2.h create mode 100644 headers/build/private/app/MessageField3.h create mode 100644 headers/build/private/app/MessagePrivate.h create mode 100644 headers/build/private/app/MessageUtils.h create mode 100644 headers/build/private/app/MessageUtils2.h create mode 100644 headers/build/private/app/MessageUtils3.h create mode 100644 headers/build/private/app/MessengerPrivate.h create mode 100644 headers/build/private/app/PortLink.h create mode 100644 headers/build/private/app/PortMessage.h create mode 100644 headers/build/private/app/PortQueue.h create mode 100644 headers/build/private/app/RegistrarDefs.h create mode 100644 headers/build/private/app/RegistrarThread.h create mode 100644 headers/build/private/app/RegistrarThreadManager.h create mode 100644 headers/build/private/app/RosterPrivate.h create mode 100644 headers/build/private/app/Server.h create mode 100644 headers/build/private/app/ServerMemIO.h create mode 100644 headers/build/private/app/ServerProtocol.h create mode 100644 headers/build/private/app/Session.h create mode 100644 headers/build/private/app/SimpleMallocIO.h create mode 100644 headers/build/private/app/TokenSpace.h create mode 100644 headers/build/private/interface/BMCPrivate.h create mode 100644 headers/build/private/interface/ClientFontList.h create mode 100644 headers/build/private/interface/ColorTools.h create mode 100644 headers/build/private/interface/ColumnListView.h create mode 100644 headers/build/private/interface/MenuPrivate.h create mode 100644 headers/build/private/interface/MenuWindow.h create mode 100644 headers/build/private/interface/PictureProtocol.h create mode 100644 headers/build/private/interface/PrivateScreen.h create mode 100644 headers/build/private/interface/R5_AppServerLink.h create mode 100644 headers/build/private/interface/R5_Session.h create mode 100644 headers/build/private/interface/RegionSupport.h create mode 100644 headers/build/private/interface/TPicture.h create mode 100644 headers/build/private/interface/TextInput.h create mode 100644 headers/build/private/interface/TextViewSupportBuffer.h create mode 100644 headers/build/private/interface/ViewAux.h create mode 100644 headers/build/private/interface/WidthBuffer.h create mode 100644 headers/build/private/interface/WindowAux.h create mode 100644 headers/build/private/interface/WindowInfo.h create mode 100644 headers/build/private/interface/WindowPrivate.h create mode 100644 headers/build/private/interface/ZombieReplicantView.h create mode 100644 headers/build/private/interface/clipping.h create mode 100644 headers/build/private/interface/input_globals.h create mode 100644 headers/build/private/interface/moreUTF8.h create mode 100644 headers/build/private/interface/pr_server.h create mode 100644 headers/build/private/interface/truncate_string.h create mode 100644 headers/build/private/kernel/syscalls.h create mode 100644 headers/build/private/shared/AutoDeleter.h create mode 100644 headers/build/private/shared/DataBuffer.h create mode 100644 headers/build/private/shared/ObjectList.h create mode 100644 headers/build/private/shared/ObjectLocker.h create mode 100644 headers/build/private/shared/cpu_type.h create mode 100644 headers/build/private/storage/AddOnMonitor.h create mode 100644 headers/build/private/storage/AddOnMonitorHandler.h create mode 100644 headers/build/private/storage/DiskDevice.h create mode 100644 headers/build/private/storage/DiskDeviceDefs.h create mode 100644 headers/build/private/storage/DiskDeviceJob.h create mode 100644 headers/build/private/storage/DiskDeviceList.h create mode 100644 headers/build/private/storage/DiskDevicePrivate.h create mode 100644 headers/build/private/storage/DiskDeviceRoster.h create mode 100644 headers/build/private/storage/DiskDeviceTypes.h create mode 100644 headers/build/private/storage/DiskDeviceVisitor.h create mode 100644 headers/build/private/storage/DiskScannerAddOn.h create mode 100644 headers/build/private/storage/DiskSystem.h create mode 100644 headers/build/private/storage/Elf.h create mode 100644 headers/build/private/storage/Exception.h create mode 100644 headers/build/private/storage/MimeTypes.h create mode 100644 headers/build/private/storage/NodeMonitorHandler.h create mode 100644 headers/build/private/storage/OffsetFile.h create mode 100644 headers/build/private/storage/Partition.h create mode 100644 headers/build/private/storage/PartitioningInfo.h create mode 100644 headers/build/private/storage/Pef.h create mode 100644 headers/build/private/storage/QueryPredicate.h create mode 100644 headers/build/private/storage/ResourceFile.h create mode 100644 headers/build/private/storage/ResourceItem.h create mode 100644 headers/build/private/storage/ResourcesContainer.h create mode 100644 headers/build/private/storage/ResourcesDefs.h create mode 100644 headers/build/private/storage/mime/AssociatedTypes.h create mode 100644 headers/build/private/storage/mime/CreateAppMetaMimeThread.h create mode 100644 headers/build/private/storage/mime/Database.h create mode 100644 headers/build/private/storage/mime/InstalledTypes.h create mode 100644 headers/build/private/storage/mime/MimeUpdateThread.h create mode 100644 headers/build/private/storage/mime/SnifferRules.h create mode 100644 headers/build/private/storage/mime/Supertype.h create mode 100644 headers/build/private/storage/mime/SupportingApps.h create mode 100644 headers/build/private/storage/mime/UpdateMimeInfoThread.h create mode 100644 headers/build/private/storage/mime/database_access.h create mode 100644 headers/build/private/storage/mime/database_support.h create mode 100644 headers/build/private/storage/sniffer/CharStream.h create mode 100644 headers/build/private/storage/sniffer/DisjList.h create mode 100644 headers/build/private/storage/sniffer/Err.h create mode 100644 headers/build/private/storage/sniffer/Parser.h create mode 100644 headers/build/private/storage/sniffer/Pattern.h create mode 100644 headers/build/private/storage/sniffer/PatternList.h create mode 100644 headers/build/private/storage/sniffer/RPattern.h create mode 100644 headers/build/private/storage/sniffer/RPatternList.h create mode 100644 headers/build/private/storage/sniffer/Range.h create mode 100644 headers/build/private/storage/sniffer/Rule.h create mode 100644 headers/build/private/storage/storage_support.h create mode 100644 headers/build/private/textencoding/CharacterSet.h create mode 100644 headers/build/private/textencoding/CharacterSetRoster.h create mode 100644 headers/build/private/translation/FuncTranslator.h create mode 100644 headers/glibc/_G_config.h create mode 100644 headers/posix/bsd_mem.h create mode 100644 headers/posix/memory.h create mode 100644 headers/posix/sys/file.h mode change 100755 => 100644 makehaikufloppy delete mode 100755 makehdimage create mode 100644 src/bin/copyattr.cpp rename src/{tests/kernel/boot_floppy/fortune/main.c => bin/fortune.c} (98%) create mode 100644 src/bin/makebootable/Jamfile create mode 100644 src/bin/makebootable/platform/bios_ia32/Jamfile create mode 100644 src/bin/makebootable/platform/bios_ia32/makebootable.cpp create mode 100644 src/bin/settype.cpp create mode 100644 src/bin/xres.cpp create mode 100644 src/build/Jamfile delete mode 100644 src/build/cpp_support.cpp create mode 100644 src/build/libbe/Jamfile create mode 100644 src/build/libbe/app/AppMisc.cpp create mode 100644 src/build/libbe/app/Jamfile create mode 100644 src/build/libbe/app/Message.cpp create mode 100644 src/build/libbe/app/MessageBody.cpp create mode 100644 src/build/libbe/app/MessageField.cpp create mode 100644 src/build/libbe/app/MessageUtils.cpp create mode 100644 src/build/libbe/app/Messenger.cpp create mode 100644 src/build/libbe/app/TypeConstants.cpp create mode 100644 src/build/libbe/interface/Bitmap.cpp create mode 100644 src/build/libbe/interface/GraphicsDefs.cpp create mode 100644 src/build/libbe/interface/Jamfile create mode 100644 src/build/libbe/interface/Point.cpp create mode 100644 src/build/libbe/interface/Rect.cpp create mode 100644 src/build/libbe/interface/Region.cpp create mode 100644 src/build/libbe/interface/RegionSupport.cpp create mode 100644 src/build/libbe/storage/AddOnImage.cpp create mode 100644 src/build/libbe/storage/AddOnImage.h create mode 100644 src/build/libbe/storage/AddOnMonitor.cpp create mode 100644 src/build/libbe/storage/AddOnMonitorHandler.cpp create mode 100644 src/build/libbe/storage/AppFileInfo.cpp create mode 100644 src/build/libbe/storage/Directory.cpp create mode 100644 src/build/libbe/storage/DiskDevice.cpp create mode 100644 src/build/libbe/storage/DiskDeviceJob.cpp create mode 100644 src/build/libbe/storage/DiskDeviceList.cpp create mode 100644 src/build/libbe/storage/DiskDevicePrivate.cpp create mode 100644 src/build/libbe/storage/DiskDeviceRoster.cpp create mode 100644 src/build/libbe/storage/DiskDeviceTypes.cpp create mode 100644 src/build/libbe/storage/DiskDeviceVisitor.cpp create mode 100644 src/build/libbe/storage/DiskScannerAddOn.cpp create mode 100644 src/build/libbe/storage/DiskSystem.cpp create mode 100644 src/build/libbe/storage/Entry.cpp create mode 100644 src/build/libbe/storage/EntryList.cpp create mode 100644 src/build/libbe/storage/File.cpp create mode 100644 src/build/libbe/storage/FindDirectory.cpp create mode 100644 src/build/libbe/storage/Jamfile create mode 100644 src/build/libbe/storage/LibBeAdapter.cpp create mode 100644 src/build/libbe/storage/Mime.cpp create mode 100644 src/build/libbe/storage/MimeType.cpp create mode 100644 src/build/libbe/storage/Node.cpp create mode 100644 src/build/libbe/storage/Node.notes create mode 100644 src/build/libbe/storage/NodeInfo.cpp create mode 100644 src/build/libbe/storage/NodeMonitor.cpp create mode 100644 src/build/libbe/storage/NodeMonitorHandler.cpp create mode 100644 src/build/libbe/storage/OffsetFile.cpp create mode 100644 src/build/libbe/storage/Partition.cpp create mode 100644 src/build/libbe/storage/PartitioningDialog.cpp create mode 100644 src/build/libbe/storage/PartitioningDialog.h create mode 100644 src/build/libbe/storage/PartitioningInfo.cpp create mode 100644 src/build/libbe/storage/Path.cpp create mode 100644 src/build/libbe/storage/Query.cpp create mode 100644 src/build/libbe/storage/QueryPredicate.cpp create mode 100644 src/build/libbe/storage/ResourceFile.cpp create mode 100644 src/build/libbe/storage/ResourceItem.cpp create mode 100644 src/build/libbe/storage/ResourceStrings.cpp create mode 100644 src/build/libbe/storage/Resources.cpp create mode 100644 src/build/libbe/storage/ResourcesContainer.cpp create mode 100644 src/build/libbe/storage/Statable.cpp create mode 100644 src/build/libbe/storage/SymLink.cpp create mode 100644 src/build/libbe/storage/Volume.cpp create mode 100644 src/build/libbe/storage/VolumeRoster.cpp create mode 100644 src/build/libbe/storage/mime/AssociatedTypes.cpp create mode 100644 src/build/libbe/storage/mime/CreateAppMetaMimeThread.cpp create mode 100644 src/build/libbe/storage/mime/Database.cpp create mode 100644 src/build/libbe/storage/mime/InstalledTypes.cpp create mode 100644 src/build/libbe/storage/mime/MimeUpdateThread.cpp create mode 100644 src/build/libbe/storage/mime/SnifferRules.cpp create mode 100644 src/build/libbe/storage/mime/Supertype.cpp create mode 100644 src/build/libbe/storage/mime/SupportingApps.cpp create mode 100644 src/build/libbe/storage/mime/UpdateMimeInfoThread.cpp create mode 100644 src/build/libbe/storage/mime/database_access.cpp create mode 100644 src/build/libbe/storage/mime/database_support.cpp create mode 100644 src/build/libbe/storage/sniffer/CharStream.cpp create mode 100644 src/build/libbe/storage/sniffer/DisjList.cpp create mode 100644 src/build/libbe/storage/sniffer/Err.cpp create mode 100644 src/build/libbe/storage/sniffer/Parser.cpp create mode 100644 src/build/libbe/storage/sniffer/Pattern.cpp create mode 100644 src/build/libbe/storage/sniffer/PatternList.cpp create mode 100644 src/build/libbe/storage/sniffer/RPattern.cpp create mode 100644 src/build/libbe/storage/sniffer/RPatternList.cpp create mode 100644 src/build/libbe/storage/sniffer/Range.cpp create mode 100644 src/build/libbe/storage/sniffer/Rule.cpp create mode 100644 src/build/libbe/storage/storage_support.cpp create mode 100644 src/build/libbe/support/Archivable.cpp create mode 100644 src/build/libbe/support/Beep.cpp create mode 100644 src/build/libbe/support/BlockCache.cpp create mode 100644 src/build/libbe/support/BufferIO.cpp create mode 100644 src/build/libbe/support/ByteOrder.cpp create mode 100644 src/build/libbe/support/DataBuffer.cpp create mode 100644 src/build/libbe/support/DataIO.cpp create mode 100644 src/build/libbe/support/Flattenable.cpp create mode 100644 src/build/libbe/support/Jamfile create mode 100644 src/build/libbe/support/List.cpp create mode 100644 src/build/libbe/support/Locker.cpp create mode 100644 src/build/libbe/support/PointerList.cpp create mode 100644 src/build/libbe/support/StopWatch.cpp create mode 100644 src/build/libbe/support/String.cpp create mode 100644 src/build/libroot/Jamfile create mode 100644 src/build/libroot/NodeRef.h create mode 100644 src/build/libroot/byteorder.cpp create mode 100644 src/build/libroot/errors.cpp create mode 100644 src/build/libroot/fs.cpp create mode 100644 src/build/libroot/fs_attr.cpp create mode 100644 src/build/libroot/fs_attr_impl.h create mode 100644 src/build/libroot/misc.cpp create mode 100644 src/build/libroot/sem.cpp create mode 100644 src/build/libroot/thread.cpp create mode 100644 src/libs/zlib/minigzip.c create mode 100644 src/system/boot/platform/bios_ia32/stage1.S create mode 100644 src/system/boot/platform/bios_ia32/stage1.bin create mode 100644 src/tests/add-ons/kernel/file_systems/bfs/fragmenter/Jamfile create mode 100644 src/tests/add-ons/kernel/file_systems/bfs/fragmenter/fragmenter.cpp create mode 100644 src/tests/add-ons/kernel/file_systems/bfs/r5/boot_block.h create mode 100644 src/tests/add-ons/kernel/file_systems/fs_shell/external_commands_beos.cpp rename src/tests/add-ons/kernel/file_systems/fs_shell/{external_commands.cpp => external_commands_unix.cpp} (64%) delete mode 100644 src/tests/kernel/boot_floppy/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/cache_control.cpp delete mode 100644 src/tests/kernel/boot_floppy/cpuinfo/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/cpuinfo/cpuinfo.h delete mode 100644 src/tests/kernel/boot_floppy/cpuinfo/flag_arrays.c delete mode 100644 src/tests/kernel/boot_floppy/cpuinfo/main.c delete mode 100644 src/tests/kernel/boot_floppy/echo/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/echo/main.c delete mode 100644 src/tests/kernel/boot_floppy/envtest/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/envtest/main.c delete mode 100644 src/tests/kernel/boot_floppy/exec_test.c delete mode 100644 src/tests/kernel/boot_floppy/false_main.c delete mode 100644 src/tests/kernel/boot_floppy/fibo_main.c delete mode 100644 src/tests/kernel/boot_floppy/filetest/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/filetest/main.c delete mode 100644 src/tests/kernel/boot_floppy/fork_test.c delete mode 100644 src/tests/kernel/boot_floppy/fortune/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/hostname/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/hostname/main.c delete mode 100644 src/tests/kernel/boot_floppy/init.c delete mode 100644 src/tests/kernel/boot_floppy/ls/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/ls/main.c delete mode 100644 src/tests/kernel/boot_floppy/monitor_test.c delete mode 100644 src/tests/kernel/boot_floppy/on_exit_thread.c delete mode 100644 src/tests/kernel/boot_floppy/pipe_test.c delete mode 100644 src/tests/kernel/boot_floppy/ps/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/ps/main.c delete mode 100644 src/tests/kernel/boot_floppy/select_test.c delete mode 100644 src/tests/kernel/boot_floppy/shell/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/shell/args.c delete mode 100644 src/tests/kernel/boot_floppy/shell/args.h delete mode 100644 src/tests/kernel/boot_floppy/shell/commands.c delete mode 100644 src/tests/kernel/boot_floppy/shell/commands.h delete mode 100644 src/tests/kernel/boot_floppy/shell/file_utils.c delete mode 100644 src/tests/kernel/boot_floppy/shell/file_utils.h delete mode 100644 src/tests/kernel/boot_floppy/shell/main.c delete mode 100644 src/tests/kernel/boot_floppy/shell/parse.c delete mode 100644 src/tests/kernel/boot_floppy/shell/parse.h delete mode 100644 src/tests/kernel/boot_floppy/shell/script.c delete mode 100644 src/tests/kernel/boot_floppy/shell/script.h delete mode 100644 src/tests/kernel/boot_floppy/shell/shell_defs.h delete mode 100644 src/tests/kernel/boot_floppy/shell/shell_history.c delete mode 100644 src/tests/kernel/boot_floppy/shell/shell_history.h delete mode 100644 src/tests/kernel/boot_floppy/shell/shell_vars.c delete mode 100644 src/tests/kernel/boot_floppy/shell/shell_vars.h delete mode 100644 src/tests/kernel/boot_floppy/shell/statements.c delete mode 100644 src/tests/kernel/boot_floppy/shell/statements.h delete mode 100644 src/tests/kernel/boot_floppy/sig_test.c delete mode 100644 src/tests/kernel/boot_floppy/sockettest/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/sockettest/main.c delete mode 100644 src/tests/kernel/boot_floppy/symlink/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/symlink/main.c delete mode 100644 src/tests/kernel/boot_floppy/testapp/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/testapp/main.c delete mode 100644 src/tests/kernel/boot_floppy/testdigit/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/testdigit/main.c delete mode 100644 src/tests/kernel/boot_floppy/tests/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/tests/fops_test.c delete mode 100644 src/tests/kernel/boot_floppy/tests/random_test.c delete mode 100644 src/tests/kernel/boot_floppy/tests/thread_test.c delete mode 100644 src/tests/kernel/boot_floppy/tls_test.c delete mode 100644 src/tests/kernel/boot_floppy/true_main.c delete mode 100644 src/tests/kernel/boot_floppy/uname/Jamfile delete mode 100644 src/tests/kernel/boot_floppy/uname/main.c create mode 100644 src/tools/keymap/Jamfile create mode 100644 src/tools/makebootable/Jamfile create mode 100644 src/tools/makebootable/platform/bios_ia32/Jamfile diff --git a/Jamfile b/Jamfile index 9f86d73427..4da9015185 100644 --- a/Jamfile +++ b/Jamfile @@ -1,6 +1,4 @@ -SubDir OBOS_TOP ; - -InstallFloppy installfloppy : $(OBOS_FLOPPY) ; +SubDir HAIKU_TOP ; NotFile alltests ; Depends alltests : r5tests obostests ; @@ -132,4 +130,4 @@ Depends ScreenSaverKit : Haiku ; -SubInclude OBOS_TOP src ; +SubInclude HAIKU_TOP src ; diff --git a/Jamrules b/Jamrules index ffd0bd85a5..f99d8c9258 100644 --- a/Jamrules +++ b/Jamrules @@ -1,2502 +1,49 @@ -# Haiku main build rules +# Haiku Jamrules -# Vanilla Jam compatibility -if ! $(INVOCATION_SUBDIR_SET) { - rule FIsPrefix - { - # FIsPrefix : ; - # Returns true, if list is a prefix (a proper one or equal) of - # list , an empty list otherwise. - local a = $(1) ; - local b = $(2) ; - while $(a) && $(a[1]) = $(b[1]) { - a = $(a[2-]) ; - b = $(b[2-]) ; - } - - if $(a) { - return ; - } else { - return true ; - } - } - - rule LocalClean { Clean $(1) : $(2) ; } - - rule LocalDepends { Depends $(1) : $(2) ; } - -} # vanilla Jam compatibility - -BUILD_PLATFORM_DEFINES = $(DEFINES) ; - -# The directory for build system specific files -OBOS_BUILD_DIR = [ FDirName $(OBOS_TOP) build ] ; +# Main directories used by the build. +HAIKU_OUTPUT_DIR ?= [ FDirName $(HAIKU_TOP) generated ] ; +HAIKU_BUILD_OUTPUT_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) build ] ; +HAIKU_BUILD_DIR = [ FDirName $(HAIKU_TOP) build ] ; +HAIKU_BUILD_RULES_DIR = [ FDirName $(HAIKU_BUILD_DIR) jam ] ; +HAIKU_OBJECT_DIR = [ FDirName $(HAIKU_OUTPUT_DIR) objects ] ; +HAIKU_COMMON_PLATFORM_OBJECT_DIR = [ FDirName $(HAIKU_OBJECT_DIR) common ] ; # Cache files for header scanning and jamfile caching HCACHEFILE = header_cache ; JCACHEFILE = jamfile_cache ; -LOCATE on $(HCACHEFILE) $(JCACHEFILE) = $(OBOS_BUILD_DIR) ; +LOCATE on $(HCACHEFILE) $(JCACHEFILE) = $(HAIKU_BUILD_OUTPUT_DIR) ; -# Include BuildConfig/Timezones/libgccObjects +# The build setup and rules are neatly organized in several files. Include +# them now. Start with the side-effect-less rules, since they are the most +# likely to be used in the top level context (i.e. not only in rules). +# At the end include BuildSetup that sets up global variables etc. The +# optional user-defined UserBuildConfig is included thereafter. +include [ FDirName $(HAIKU_BUILD_RULES_DIR) HelperRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) BeOSRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) ConfigRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) DocumentationRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) FileRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) FreetypeRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) HeadersRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) KernelRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) ImageRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) MainBuildRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) MiscRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) OverriddenJamRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) PackageRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) TestsRules ] ; +include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildSetup ] ; + +# Include UserBuildConfig. { - local buildConfig = [ GLOB $(OBOS_BUILD_DIR) : BuildConfig ] ; - local timezones = [ GLOB $(OBOS_BUILD_DIR) : Timezones ] ; - local libgccObjects = [ GLOB $(OBOS_BUILD_DIR) : libgccObjects ] ; - - if ! $(buildConfig) { - ECHO "No `BuildConfig' found in $(OBOS_BUILD_DIR)!" ; - EXIT "Run ./configure in the source tree's root directory first!" ; - } - if ! ( $(timezones) && $(libgccObjects) ) { - ECHO "No `Timezones' or `libgccObjects' found in $(OBOS_BUILD_DIR)!" ; - EXIT "Please run ./configure in the source tree's root directory again!" ; - } - - LOCATE on BuildConfig = $(OBOS_BUILD_DIR) ; - LOCATE on Timezones = $(OBOS_BUILD_DIR) ; - LOCATE on libgccObjects = $(OBOS_BUILD_DIR) ; - - include BuildConfig ; - include Timezones ; - include libgccObjects ; -} - -# analyze GCC version -if ! $(GCC_RAW_VERSION) { - ECHO "Variable GCC_RAW_VERSION not set. Please run ./configure or" ; - EXIT "specify it manually." ; -} -GCC_VERSION = ; -{ - # split the raw version string at `.' and `-' characters - local version = $(GCC_RAW_VERSION) ; - while $(version) { - local split = [ Match "([^.-]*)[.-](.*)" : $(version) ] ; - if $(split) { - GCC_VERSION += $(split[1]) ; - version = $(split[2]) ; - } else { - GCC_VERSION += $(version) ; - version = ; - } + local userBuildConfig + = [ GLOB $(HAIKU_BUILD_RULES_DIR) : UserBuildConfig ] ; + if $(userBuildConfig) { + include $(userBuildConfig) ; } } -# Save the platform default headers. -PLATFORM_DEFAULT_HEADERS = $(HDRS) ; - -# Add some grist to the libgcc objects -LIBGCC_OBJECTS = $(LIBGCC_OBJECTS:G=libgcc) ; - -# We do not include any local BeOS system headers by default -CCFLAGS += -nostdinc ; -C++FLAGS += -nostdinc ; - -# Allow compiling unit tests on Zeta. Instead of fixing the PostMessage() -# issues, they deprecated that nice function. This will enable it again: -C++FLAGS += -D_ZETA_USING_DEPRECATED_API_=1 ; - -if ! $(TARGET_PLATFORM) { - ECHO "Variable TARGET_PLATFORM not set. Please run ./configure or" ; - EXIT "specify it manually." ; -} -switch $(TARGET_PLATFORM) -{ - case r5 : - { - # "everything" is r5 compatible - } - case bone : - { - BONE_COMPATIBLE = true ; - } - case dano : - { - BONE_COMPATIBLE = true ; - DANO_COMPATIBLE = true ; - } - case haiku : - { - BONE_COMPATIBLE = true ; - DANO_COMPATIBLE = true ; - HAIKU_COMPATIBLE = true ; - DEFINES += __HAIKU__ ; - } -} -if $(BONE_COMPATIBLE) { - NETWORK_LIBS = libsocket.so libbind.so ; - NETAPI_LIB = libbnetapi.so ; - SELECT_UNAME_ETC_LIB = libroot.so ; -} else { - NETWORK_LIBS = libnet.so ; - NETAPI_LIB = libnetapi.so ; - SELECT_UNAME_ETC_LIB = libnet.so ; -} - -# Determine if we're building on PPC or x86 -# Determine mimetype of executable -# Cross compiling can come later - -TARGET_CPU ?= $(OSPLAT:L) ; - -switch $(TARGET_CPU) { - case ppc : - { - if $(METROWERKS) { - # at least parts of OpenBeOS still can be compiled with - # the Metrowerks compiler on BeOS/PPC - OBOS_TARGET_TYPE ?= "application/x-be-executable" ; - } else { - OBOS_TARGET_TYPE ?= "application/x-vnd.Be-elfexecutable" ; - } - DEFINES += __POWERPC__ ARCH_ppc ; - OBOS_BOOT_PLATFORM = openfirmware ; - } - case x86 : - { - # nothing special to do here... - DEFINES += __INTEL__ ARCH_x86 ; - OBOS_BOOT_PLATFORM = bios_ia32 ; - } - case * : - Exit "Currently unsupported build platform:" $(TARGET_CPU) ; -} - -# We might later want to introduce debug levels or handle the whole issue -# differently. For now there's only on or off. -# -DEBUG ?= 0 ; -if $(DEBUG) != 0 { - OPTIM ?= -O0 ; - TARGET_DEBUG ?= debug_$(DEBUG) ; -} else { - OPTIM ?= -O2 ; - TARGET_DEBUG ?= release ; -} - -# set target specific variables -{ - #Echo "Building for" $(TARGET_CPU) ; - - OBOS_TARGET ?= $(TARGET_CPU).$(TARGET_DEBUG).$(TARGET_PLATFORM) ; - OBOS_TARGET_TYPE ?= "application/x-vnd.Be-elfexecutable" ; - OBOS_ARCH ?= $(TARGET_CPU) ; - OBOS_TARGET_DEFINE ?= "ARCH_"$(TARGET_CPU) ; -} - -# Disable warnings only if WARNINGS is set to 0 -# Should be enabled by default later -# -WARNINGS ?= 1 ; -if $(WARNINGS) = 1 { - # For an explanation of the different warning options, see: - # http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html - # to get even more warnings, add: - # -Wwrite-strings (doesn't work well with some Be headers) - # -Wundef (dito) - # -Wconversion (gets you many warnings about implicit conversions) - # -W (gets you even more warnigs) - CCFLAGS += -Wall -Wno-multichar -Wmissing-prototypes ; - CCFLAGS += -Wpointer-arith -Wcast-align -Wsign-compare ; - C++FLAGS += -Wall -Wno-multichar -Wmissing-prototypes -Wno-ctor-dtor-privacy -Woverloaded-virtual ; - C++FLAGS += -Wpointer-arith -Wcast-align -Wsign-compare ; -} else { - CCFLAGS += -Wno-multichar ; - C++FLAGS += -Wno-multichar ; -} - -# standard kernel C/C++ flags -KERNEL_CCFLAGS ?= -Wall -Wno-multichar -Wmissing-prototypes -finline -nostdinc ; -KERNEL_CCFLAGS += -fno-builtin -D$(OBOS_TARGET_DEFINE) -D__HAIKU__ ; -KERNEL_CCFLAGS += -DBOCHS_DEBUG_HACK=$(BOCHS_DEBUG_HACK) -D_KERNEL_MODE ; -KERNEL_C++FLAGS ?= -Wall -Wno-multichar -Wmissing-prototypes -finline -nostdinc ; -KERNEL_C++FLAGS += -fno-builtin -fno-exceptions -D$(OBOS_TARGET_DEFINE) -D__HAIKU__ ; -KERNEL_C++FLAGS += -DBOCHS_DEBUG_HACK=$(BOCHS_DEBUG_HACK) -D_KERNEL_MODE ; -if $(GCC_VERSION[1]) >= 3 { - KERNEL_C++FLAGS += -fno-use-cxa-atexit ; -} -DEBUG_FLAGS ?= -g ; -if $(DEBUG) != 0 { - CCFLAGS += $(DEBUG_FLAGS) [ FDefines DEBUG=$(DEBUG) ] ; - C++FLAGS += $(DEBUG_FLAGS) [ FDefines DEBUG=$(DEBUG) ] ; - KERNEL_CCFLAGS += $(DEBUG_FLAGS) [ FDefines DEBUG=$(DEBUG) ] ; - KERNEL_C++FLAGS += $(DEBUG_FLAGS) [ FDefines DEBUG=$(DEBUG) ] ; - LINKFLAGS += $(DEBUG_FLAGS) ; -} - -# define NDEBUG to a non-zero value to suppress asserts -NDEBUG ?= 0 ; -if $(NDEBUG) != 0 { - CCFLAGS += [ FDefines NDEBUG=$(NDEBUG) ] ; - C++FLAGS += [ FDefines NDEBUG=$(NDEBUG) ] ; - KERNEL_CCFLAGS += [ FDefines NDEBUG=$(NDEBUG) ] ; - KERNEL_C++FLAGS += [ FDefines NDEBUG=$(NDEBUG) ] ; -} - -# -# To disable for the tests OPTIM and DEBUG are overridden, set the environment -# variable NO_TEST_DEBUG. - -# If the environment variable DEBUG_PRINTF is defined we define an equally -# named macro to the variable value. Some components use the macro to allow -# another function than printf() to print the debug output. The variable should -# be set to the name of the alternative function. -# -if $(DEBUG_PRINTF) { - CCFLAGS += [ FDefines DEBUG_PRINTF=$(DEBUG_PRINTF) ] ; - C++FLAGS += [ FDefines DEBUG_PRINTF=$(DEBUG_PRINTF) ] ; -} - -# Instructs the Library rule to not make its object files temporary. -# This is needed as some objects are used in a static library and for an -# executable. -KEEPOBJS = true ; - -# under BeOS use copyattr instead of cp -if $(OS) = BEOS -{ - CP = copyattr --data ; -} - -# for builds of tools in the current environment -if $(OS) = BEOS { - BUILD_LIBSTDC++ = stdc++.r4 ; -} else { - BUILD_LIBSTDC++ = stdc++ ; -} - -if $(GCC_VERSION[1]) >= 3 { - C++_SUPPORT_LIBS = supc++ ; - KERNEL_C++_SUPPORT_LIBS = -L/usr/lib -l$(C++_SUPPORT_LIBS) -lgcc_eh ; - # TODO: -L/usr/lib is a bit Linux specific. - STL_HEADERS = /usr/include/g++ ; - # TODO: Also a bit Linux specific. -} else { - C++_SUPPORT_LIBS = ; - KERNEL_C++_SUPPORT_LIBS = ; - STL_HEADERS = [ FDirName $(OBOS_TOP) headers cpp ] ; -} - - -# If no OBOS_OBJECT_TARGET is not defined yet, use our default directory and -# include our "OBOS_TARGET" as subdirectory in there (to prevent different -# builds mixing objects from different targets). -if ! $(OBOS_OBJECT_TARGET) { - OBOS_OBJECT_TARGET ?= [ FDirName $(OBOS_TOP) objects $(OBOS_TARGET) ] ; -} - -# If no OBOS_DISTRO_TARGET is not defined yet, use our default directory and -# include our "OBOS_TARGET" as subdirectory in there (to prevent different -# builds mixing executables from different targets). -if ! $(OBOS_DISTRO_TARGET) { - OBOS_DISTRO_TARGET ?= [ FDirName $(OBOS_TOP) distro $(OBOS_TARGET) ] ; -} - -# Set our version number if not already set and mark it as a developer build -if ! $(OBOS_BUILD_VERSION) { - OBOS_BUILD_VERSION ?= "1 0 0 a 1" ; - OBOS_BUILD_DESCRIPTION ?= "Developer Build" ; -} - -# If OBOS_BUILD_VERSION is set, but OBOS_BUILD_DESCRIPTION isn't, mark it as -# an unknown build. -if ! $(OBOS_BUILD_DESCRIPTION) { - OBOS_BUILD_DESCRIPTION ?= "Unknown Build" ; -} - -# Relative subdirs for distro dir -OBOS_ADDON_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system add-ons ] ; -OBOS_APPS_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos apps ] ; -OBOS_BIN_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos bin ] ; -OBOS_ETC_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos etc ] ; -OBOS_FONTS_DIR ?= [ FDirName $(OBOS_ETC_DIR) fonts ] ; -OBOS_KERNEL_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system ] ; -OBOS_PREFS_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos preferences ] ; -OBOS_SERVER_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system servers ] ; -OBOS_SHLIB_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) beos system lib ] ; -OBOS_STLIB_DIR ?= [ FDirName $(OBOS_DISTRO_TARGET) develop lib - $(OBOS_ARCH) ] ; -OBOS_TEST_DIR ?= [ FDirName $(OBOS_TOP) tests ] ; - -OBOS_PACKAGE_DIR ?= [ FDirName $(OBOS_TOP) packages $(OBOS_TARGET) ] ; -OBOS_PACKAGE_OBJECT_DIR ?= [ FDirName $(OBOS_OBJECT_TARGET) packages ] ; - -OBOS_KERNEL_CONFIG = config.$(OBOS_ARCH).ini ; -OBOS_KERNEL = kernel.$(OBOS_ARCH) ; -OBOS_FLOPPY = floppy.$(OBOS_ARCH) ; - -rule SetupIncludes -{ - local os_includes = add-ons add-ons/file_system add-ons/graphics - add-ons/input_server add-ons/screen_saver - add-ons/tracker app device drivers game interface - kernel media mail midi midi2 net opengl storage support - translation ; - - # Overwrite any exiting content when changing HDRS. This rule may be invoked multiple times. - - # Use headers directory, to allow to do things like include - HDRS = [ FDirName $(OBOS_TOP) headers ] ; - - # Use posix headers directory - HDRS += [ FDirName $(OBOS_TOP) headers posix ] ; - -# TODO: This is actually more correct. Under BeOS -# /boot/develop/headers/posix/_G_config.h is included, which is not correct, -# since we use another glibc version. This might even be a reason why STL -# string has problems (see strace sources). The problem is just that there -# are conflicts with STL/gcc headers, if we do that. -# # This is nasty, but we don't get around it, since some public headers -# # include _G_config.h which in turn includes other private headers. -# HDRS += [ FDirName $(OBOS_TOP) src kernel libroot posix glibc include ] ; -# HDRS += [ FDirName $(OBOS_TOP) src kernel libroot posix glibc include arch -# $(OBOS_ARCH) ] ; -# HDRS += [ FDirName $(OBOS_TOP) src kernel libroot posix glibc ] ; -# HDRS += [ FDirName $(OBOS_TOP) src kernel libroot posix glibc libio ] ; -# # for _G_config.h - - HDRS += $(STL_HEADERS) ; - - # Use public OS header directories - HDRS += [ PublicHeaders $(os_includes) ] ; - - # Use the root of the private headers -- not so nice, but simplifies things. - HDRS += [ PrivateHeaders $(DOT) ] ; - - # Used as a fallback, the R5 header directories (we should remove this as soon as possible) - HDRS += /boot/develop/headers/posix /boot/develop/headers/cpp ; - - # The platform dependent headers. - HDRS += $(PLATFORM_HEADERS) ; -} - -rule SetupR5Includes -{ - # Unsets HDRS, so that the OBOS headers do not `shadow' the system headers. - HDRS = ; -} - -rule SetupDefaultIncludes -{ - # Resets HDRS to the default headers for the build platform. - HDRS = $(PLATFORM_DEFAULT_HEADERS) ; -} - -#------------------------------------------------------------------------------- -# Things Jam needs in order to work :) -#------------------------------------------------------------------------------- - -rule Object -{ - # This is basically the original Jambase 2.4 Object rule stripped by - # comments. Only the final switch statement has been changed to allow - # intermediate C++ files for Yacc and Lex. - - LocalClean clean : $(<) ; - - MakeLocate $(<) : $(LOCATE_TARGET) ; - SEARCH on $(>) = $(SEARCH_SOURCE) ; - - HDRS on $(<) = $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ; - - HDRRULE on $(>) = HdrRule ; - HDRSCAN on $(>) = $(HDRPATTERN) ; - HDRSEARCH on $(>) = - $(SEARCH_SOURCE:E) $(SUBDIRHDRS) $(HDRS) $(STDHDRS) ; - - HDRGRIST on $(>) = $(HDRGRIST) ; - - DEFINES on $(<) += $(DEFINES) ; - - # if source is not .c, generate .c with specific rule - - switch $(>:S) - { - case .asm : As $(<) : $(>) ; - case .c : Cc $(<) : $(>) ; - case .C : C++ $(<) : $(>) ; - case .cc : C++ $(<) : $(>) ; - case .cpp : C++ $(<) : $(>) ; - case .f : Fortran $(<) : $(>) ; - case .l : if [ on $(2) return $(GENERATE_C++) ] { - C++ $(<) : $(<:S=.cpp) ; - LexC++ $(<:S=.cpp) : $(>) ; - } else { - Cc $(<) : $(<:S=.c) ; - Lex $(<:S=.c) : $(>) ; - } - case .s : As $(<) : $(>) ; - case .y : if [ on $(2) return $(GENERATE_C++) ] { - C++ $(<) : $(<:S=.cpp) ; - Bison $(<:S=.cpp) : $(>) ; - } else { - Cc $(<) : $(<:S=$(YACCGEN)) ; - Yacc $(<:S=$(YACCGEN)) : $(>) ; - } - case * : UserObject $(<) : $(>) ; - } -} - -rule UserObject -{ - switch $(2) - { - case *.S : assemble $(1) : $(2) ; - case *.o : return ; - case * : ECHO "unknown suffix on" $(2) ; - } -} - -# Override the default to give "prettier" command lines. -actions Cc -{ - $(CC) $(CCFLAGS) -c "$(2)" $(CCDEFS) $(CCHDRS) -o "$(1)" ; -} - -actions C++ -{ - $(C++) -c "$(2)" $(C++FLAGS) $(CCDEFS) $(CCHDRS) -o "$(1)" ; -} - - -#------------------------------------------------------------------------------- -# General High-level OBOS target rules -#------------------------------------------------------------------------------- - -rule App -{ - # App : : : ; - SetupIncludes ; - SetupObjectsDir ; - AddResources $(1) : $(4) ; - Main $(1) : $(2) ; - MakeLocate $(1) : $(OBOS_APPS_DIR) ; - LinkSharedOSLibs $(1) : $(3) ; - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] - -Xlinker -soname=_APP_ ; -} - -rule BinCommand -{ - # BinCommand : : : ; - SetupIncludes ; - SetupObjectsDir ; - AddResources $(1) : $(4) ; - Main $(1) : $(2) ; - MakeLocate $(1) : $(OBOS_BIN_DIR) ; - LinkSharedOSLibs $(1) : $(3) ; - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] - -Xlinker -soname=_APP_ ; -} - -rule StdBinCommands -{ - # StdBinCommands : : ; - SetupIncludes ; - SetupObjectsDir ; - local libs = $(2) ; - local ress = $(3) ; - local source ; - for source in $(1) - { - local target = $(source:S=) ; - - BinCommand $(target) : $(source) : $(libs) : $(ress) ; - } -} - -rule Preference -{ - # Preference : : : ; - SetupIncludes ; - SetupObjectsDir ; - AddResources $(1) : $(4) ; - Main $(1) : $(2) ; - MakeLocate $(1) : $(OBOS_PREFS_DIR) ; - LinkSharedOSLibs $(1) : $(3) ; - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] - -Xlinker -soname=_APP_ ; -} - -rule Server -{ - # Server : : ; - - SetupIncludes ; - SetupObjectsDir ; - Main $(1) : $(2) ; - MakeLocate $(1) : $(OBOS_SERVER_DIR) ; - LinkSharedOSLibs $(1) : $(3) ; - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] - -Xlinker -soname=_APP_ ; -} - -# test pseudo targets -NOTFILE obostests ; -NOTFILE r5tests ; - -rule CommonTestLib -{ - # CommonTestLib : : - # : : : ; - # Builds a unit test for both OBOS and R5 modules. - # The name of the target. - # The list of sources. - # A list of link libraries for the OBOS tests (as passed - # to LinkSharedOSLibs). - # A list of link libraries for the R5 tests (as passed - # to LinkSharedOSLibs). - # A list of link libraries for both OBOS tests and R5 tests - # that have a common name (i.e. specify libx.so and the OBOS tests will link - # to libx.so and the R5 tests will link to libx_r5.so). - # A list of public header dirs (as passed to - # UsePublicHeaders). - - TestLib $(1) : $(2) : [ FDirName $(OBOS_TEST_DIR) unittester lib ] : $(3) $(5) : $(6) ; - R5TestLib $(1) : $(2) : [ FDirName $(OBOS_TEST_DIR) unittester_r5 lib ] : $(4) [ R5SharedLibraryNames $(5) ] ; -} - -rule TestLib -{ - # TestLib : : : : - # Builds a unit test library for an OBOS module. - # The name of the target. - # The list of sources. - # The directory for the target (as passed to FDirName). - # A list of link libraries (as passed to LinkSharedOSLibs). - # A list of public header dirs (as passed to - # UsePublicHeaders). - - local target = $(1) ; - local sources = $(2) ; - local dest = $(3) ; - local libraries = $(4) ; - local headerDirs = $(5) ; - local objects = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; - - # Our Main replacement. - MainFromObjects $(target) : $(objects) ; - TestObjects $(sources) : $(headerDirs) ; - - MakeLocate $(target) : $(dest) ; - Depends $(target) : libcppunit.so ; - Depends obostests : $(target) ; - LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ; - LINKFLAGS on $(target) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(target)\" ; -} - -rule R5TestLib -{ - # R5TestLib : : : - # Builds a unit test for an R5 module. "_r5" is appended to the object - # and the target name. - # The name of the target. - # The list of sources. - # The directory for the target (as passed to FDirName). - # A list of link libraries (as passed to LinkSharedOSLibs). - - local target = $(1:B)_r5$(1:S) ; - local sources = $(2) ; - local dest = $(3) ; - local libraries = $(4) ; - local objects = [ R5ObjectNames $(sources) ] ; - - # Our Main replacement. - MainFromObjects $(target) : $(objects) ; - TestObjects $(sources) : : true ; - - MakeLocate $(target) : $(dest) ; - Depends $(target) : libcppunit.so ; - Depends r5tests : $(target) ; - LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ; - LINKFLAGS on $(target) = $(LINKFLAGS) -nostart -Xlinker -soname=\"$(target)\" ; -} - -rule CommonUnitTest -{ - # CommonUnitTest : : : - # : : ; - # Builds a unit test for both OBOS and R5 modules. - # The name of the target. - # The list of sources. - # The directory for the target (as passed to FDirName). - # A list of link libraries for the OBOS tests (as passed - # to LinkSharedOSLibs). - # A list of link libraries for the R5 tests (as passed - # to LinkSharedOSLibs). - # A list of public header dirs (as passed to - # UsePublicHeaders). - - UnitTest $(1) : $(2) : $(3) : $(4) : $(6) ; - R5UnitTest $(1) : $(2) : $(3) : $(5) ; -} - -rule UnitTest -{ - # UnitTest : : : : - # Builds a unit test for an OBOS module. - # The name of the target. - # The list of sources. - # The directory for the target (as passed to FDirName). - # A list of link libraries (as passed to LinkSharedOSLibs). - # A list of public header dirs (as passed to - # UsePublicHeaders). - - local target = $(1) ; - local sources = $(2) ; - local dest = $(3) ; - local libraries = $(4) ; - local headerDirs = $(5) ; - local objects = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; - - # Our Main replacement. - MainFromObjects $(target) : $(objects) ; - TestObjects $(sources) : $(headerDirs) ; - - MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(dest) ] ; - Depends $(target) : libcppunit.so ; - Depends obostests : $(target) ; - LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ; -} - -rule R5UnitTest -{ - # R5UnitTest : : : - # Builds a unit test for an R5 module. "_r5" is appended to the object - # and the target name. - # The name of the target. - # The list of sources. - # The directory for the target (as passed to FDirName). - # A list of link libraries (as passed to LinkSharedOSLibs). - - local target = $(1)_r5 ; - local sources = $(2) ; - local dest = $(3) ; - local libraries = $(4) ; - local objects = [ R5ObjectNames $(sources) ] ; - - # Our Main replacement. - MainFromObjects $(target) : $(objects) ; - TestObjects $(sources) : : true ; - - MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(dest) ] ; - Depends $(target) : libcppunit.so ; - Depends r5tests : $(target) ; - LinkSharedOSLibs $(target) : libcppunit.so $(libraries) ; -} - -rule R5ObjectNames -{ - # R5ObjectNames ; - # Returns a list of gristed object names given a list of source file names. - # Moreover each object names gets "_r5" inserted before the object suffix. - local objects = $(1:S=)_r5 ; - return [ FGristFiles $(objects:S=$(SUFOBJ)) ] ; -} - -rule R5Objects -{ - # R5Objects - # Similar to Objects, but appends "_r5" to the object file names and - # removes `-nostdinc' from the CC and C++ flags to enable system headers. - # The source files. - - # Remove `-nostdinc' from CCFLAGS and C++FLAGS. - local oldCCFLAGS = $(CCFLAGS) ; - local oldC++FLAGS = $(C++FLAGS) ; - CCFLAGS = [ Filter $(CCFLAGS) : -nostdinc ] ; - C++FLAGS = [ Filter $(C++FLAGS) : -nostdinc ] ; - - local sources = $(1) ; - local source ; - for source in [ FGristFiles $(sources) ] - { - local object = [ R5ObjectNames $(source) ] ; - Object $(object) : $(source) ; - LocalDepends obj : $(object) ; - } - - # Reset CCFLAGS and C++FLAGS to original values. - CCFLAGS = $(oldCCFLAGS) ; - C++FLAGS = $(oldC++FLAGS) ; -} - -rule TestObjects -{ - # TestLib : : - # Compiles objects for tests. - # The list of sources. - # A list of public header dirs (as passed to - # UsePublicHeaders). - # If set, "_r5" is appended to the object file names and - # is ignored. Furthermore the pre-processor macro - # TEST_R5 is defined, TEST_OBOS otherwise. - - local sources = $(1) ; - local headerDirs = $(2) ; - local r5 = $(3) ; - local objects ; - - # Turn optimization off. - if ! $(NO_TEST_DEBUG) { - local optim = $(OPTIM) ; - OPTIM = ; - } - - SetupObjectsDir ; - - # compile - if $(r5) { - SetupR5Includes ; - objects = [ R5ObjectNames $(sources) ] ; - R5Objects $(sources) ; - } else { - SetupIncludes ; - objects = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; - Objects $(sources) ; - } - - # set headers/defines - UseCppUnitObjectHeaders $(sources) : $(objects) ; - if $(r5) { - ObjectsDefines $(objects) : TEST_R5 ; - } else { - UsePublicObjectHeaders $(sources) : $(headerDirs) : $(objects) ; - ObjectsDefines $(objects) : TEST_OBOS ; - } - - if ! $(NO_TEST_DEBUG) { - # Turn debugging on. That is usually desired for test code. - ObjectCcFlags $(objects) : $(DEBUG_FLAGS) ; - ObjectC++Flags $(objects) : $(DEBUG_FLAGS) ; - - # Turn optimization on again. - OPTIM = $(optim) ; - } -} - -rule R5SharedLibraryNames -{ - # R5SharedLibraryNames ; - # Returns a list of shared library names given a list of file names. NO - # GRISTING IS PERFORMED :-) However, each library names gets "_r5" inserted - # before the shared lib suffix. - return $(1:S=)_r5.so ; -} - -rule SimpleTest -{ - # UnitTest : : - # Builds a unit test for an OBOS module. - # The name of the target. - # The list of sources. - # The directory for the target (as passed to FDirName). - # A list of link libraries (as passed to LinkSharedOSLibs). - # A list of public header dirs (as passed to - # UsePublicHeaders). - - local target = $(1) ; - local sources = $(2) ; - local libraries = $(3) ; - local relPath = [ FRelPath src tests : $(SUBDIR_TOKENS) ] ; - - # Turn optimization off. - if ! $(NO_TEST_DEBUG) { - local optim = $(OPTIM) ; - OPTIM = ; - } - - SetupIncludes ; - SetupObjectsDir ; - MakeLocateObjects $(sources) ; - Main $(target) : $(sources) ; - MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(relPath) ] ; - Depends obostests : $(target) ; - LinkSharedOSLibs $(target) : $(libraries) ; - ObjectsDefines $(sources) : TEST_OBOS ; - if ! $(NO_TEST_DEBUG) { - # Turn debugging on. That is usually desired for test code. - ObjectCcFlags $(sources) : $(DEBUG_FLAGS) ; - ObjectC++Flags $(sources) : $(DEBUG_FLAGS) ; - - # Turn optimization on again. - OPTIM = $(optim) ; - } -} - -rule Addon -{ - # Addon : : : : ; - # : Name of the add-on. - # : Path where the add-on shall live relative to the add-on dir. - # : Source files. - # : true, if the target shall be executable as well. - # : Libraries to be linked against. - - local isExecutable = $(4) ; - - SetupIncludes ; - SetupObjectsDir ; - Main $(1) : $(3) ; - - # Create output dir path for addon - local targetdir; - targetdir = [ FDirName $(OBOS_ADDON_DIR) $(2) ] ; - - MakeLocate $(1) : $(targetdir) ; - - local linkFlags = -Xlinker -soname=\"$(1)\" ; - if $(isExecutable) != true { - linkFlags = -nostart $(linkFlags) ; - } - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] $(linkFlags) ; - LinkSharedOSLibs $(1) : $(5) ; -} - -rule R5KernelAddon -{ - # R5KernelAddon : : : ; - - local sources = $(3) ; - - Addon $(1) : $(2) : $(3) ; - ObjectCcFlags $(sources) : -D_KERNEL_MODE=1 -fno-pic ; - ObjectC++Flags $(sources) : -D_KERNEL_MODE=1 -fno-pic -fno-exceptions ; - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] -nostdlib ; - LinkSharedOSLibs $(1) : $(4) /boot/develop/lib/x86/_KERNEL_ ; -} - -rule Translator -{ - # Translator : : ; - SetupIncludes ; - SetupObjectsDir ; - Main $(1) : $(2) ; - LinkSharedOSLibs $(1) : $(3) ; - - # Create output dir path for translator - local targetdir; - targetdir = [ FDirName $(OBOS_ADDON_DIR) Translators ] ; - MakeLocate $(1) : $(targetdir) ; -} - -rule ScreenSaver -{ - # ScreenSaver : : ; - Addon $(1) : screen_savers : $(2) : false : $(3) ; -} - -rule MakeLocateObjects -{ - # MakeLocateObjects ; - - local _objs = [ FGristFiles $(1:S=$(SUFOBJ)) ] ; - - for o in $(_objs) - { - local dir = $(o:D) ; - if $(dir) { - MakeLocate $(o) : [ FDirName $(LOCATE_TARGET) $(dir) ] ; - } else { - MakeLocate $(o) : $(LOCATE_TARGET) ; - } - } -} - -rule StaticLibrary -{ - # StaticLibrary : [ : [ : ] ] ; - # Creates a static library from sources. - # : Basename of the library, without leading "lib" and trailing ".a". - # Grist is allowed -- it will be re-prepended after constructing - # the complete library name. - # : List of source files. - # : Directory into which the library shall be placed. Defaults - # to the objects directory for this subdir. If - # STATIC_LIBRARY_DIR is supplied (the literal string) - # the standard directory for static libs is used, otherwise - # the parameter is interpreted as directory path. - # : static libraries to include (ie: libmesa_x86.a) - - local lib = lib$(1:B)$(SUFLIB) ; - lib = $(lib:G=$(1:G)) ; - SetupIncludes ; - SetupObjectsDir ; - MakeLocateObjects $(2) ; - StaticLibraryFromObjects $(lib) : [ FGristFiles $(2:S=$(SUFOBJ)) ] ; - Objects $(2) ; - if $(4) { - StaticLibraryFromObjects $(lib) : $(4) ; - } - local targetDir = $(3) ; - if $(targetDir) { - if $(targetDir) = STATIC_LIBRARY_DIR { - targetDir = $(OBOS_STLIB_DIR) ; - } - MakeLocate $(lib) : $(targetDir) ; - } else { - # nothing to do, since the Library rule already located the library - # in $(LOCATE_TARGET) - } - - # If KEEPOBJS is set, Library doesn't make the library depend on - # `lib'. - if $(KEEPOBJS) { - LocalDepends lib : $(lib) ; - } -} - -rule StaticLibraryFromObjects -{ - local _i _l _s ; - - # Add grist to file names - - _s = $(>) ; - _l = $(<:S=$(SUFLIB)) ; - - # library depends on its member objects - - if $(KEEPOBJS) - { - LocalDepends obj : $(_s) ; - } - else - { - LocalDepends lib : $(_l) ; - } - - # Set LOCATE for the library and its contents. The bound - # value shows up as $(NEEDLIBS) on the Link actions. - # For compatibility, we only do this if the library doesn't - # already have a path. - - if ! $(_l:D) - { - MakeLocate $(_l) $(_l)($(_s:BS)) : $(LOCATE_TARGET) ; - } - - if $(NOARSCAN) - { - # If we can't scan the library to timestamp its contents, - # we have to just make the library depend directly on the - # on-disk object files. - - Depends $(_l) : $(_s) ; - } - else - { - # If we can scan the library, we make the library depend - # on its members and each member depend on the on-disk - # object file. - - Depends $(_l) : $(_l)($(_s:BS)) ; - - for _i in $(_s) - { - Depends $(_l)($(_i:BS)) : $(_i) ; - } - } - - LocalClean clean : $(_l) ; - - if $(CRELIB) { CreLib $(_l) : $(_s[1]) ; } - - Archive $(_l) : $(_s) ; - - if $(RANLIB) { Ranlib $(_l) ; } - - # If we can't scan the library, we have to leave the .o's around. - - if ! ( $(NOARSCAN) || $(NOARUPDATE) ) { RmTemps $(_l) : $(_s) ; } -} - -rule R5KernelStaticLibrary -{ - # R5KernelStaticLibrary : ; - - local lib = lib$(1)$(SUFLIB) ; - local sources = $(2) ; - - SetupIncludes ; - SetupObjectsDir ; - MakeLocateObjects $(sources) ; - Library $(lib) : $(sources) ; - ObjectCcFlags $(sources) : -D_KERNEL_MODE=1 -fno-pic ; - ObjectC++Flags $(sources) : -D_KERNEL_MODE=1 -fno-pic -fno-exceptions ; -} - -rule MergeObjectFromObjects -{ - # MergeObjectFromObjects : : ; - # Merges object files to an object file. - # : Name of the object file to create. No grist will be added. - # : Object files to be merged. Grist will be added. - # : Object files or static libraries to be merged. No grist - # will be added. - # - local objects = [ FGristFiles $(2) ] ; - MakeLocate $(1) : $(LOCATE_TARGET) ; - Depends $(1) : $(objects) ; - Depends $(1) : $(3) ; - LocalDepends obj : $(1) ; - LINK on $(1) = ld ; - MergeObjectFromObjects1 $(1) : $(objects) $(3) ; -} - -actions MergeObjectFromObjects1 -{ - $(LINK) -r $(2) -o $(1) ; -} - -rule MergeObject -{ - # MergeObject : : ; - # Compiles source files and merges the object files to an object file. - # : Name of the object file to create. No grist will be added. - # : Sources to be compiled. Grist will be added. - # : Object files or static libraries to be merged. No grist - # will be added. - # - SetupIncludes ; - SetupObjectsDir ; - MakeLocateObjects $(2) ; - Objects $(2) ; - MergeObjectFromObjects $(1) : $(2:S=$(SUFOBJ)) : $(3) ; -} - -rule SharedLibraryFromObjects -{ - # SharedLibraryFromObjects : : ; - local _lib = lib$(1:B).so ; - _lib = $(_lib:G=$(1:G)) ; - MainFromObjects $(_lib) : $(2) ; - MakeLocate $(_lib) : $(OBOS_SHLIB_DIR) ; - LINKFLAGS on $(_lib) = [ on $(_lib) return $(LINKFLAGS) ] - -nostart -Xlinker -soname=\"$(_lib)\" ; - LinkSharedOSLibs $(_lib) : $(3) ; -} - -rule SharedLibrary -{ - # SharedLibrary : : ; - SetupIncludes ; - SetupObjectsDir ; - MakeLocateObjects $(2) ; - Objects $(2) ; - SharedLibraryFromObjects $(1) : $(2:S=$(SUFOBJ)) : $(3) ; -} - -rule LinkSharedOSLibs -{ - # LinkSharedOSLibs : ; - # Valid elements for are e.g. "be" or "libopenbeos.so" or - # "/boot/.../libfoo.so". If the basename starts with "lib" or the thingy - # has a dirname or grist, it is added to the NEEDLIBS variable (i.e. the - # file will be bound!), otherwise it is prefixed "-l" and added to - # LINKLIBS. If you want to specify a target that isn't a library and - # also has neither grist nor a dirname, you can prepend "" as - # grist; it will be stripped by this rule. - - for i in $(>) - { - local isfile = ; - if $(i:D) || $(i:G) { - isfile = true ; - if $(i:G) = { - i = $(i:G=) ; - } - } else { - switch $(i:B) - { - # XXX: _APP_ and _KERNEL_ should not be needed for ELF. - case _APP_ : isfile = true ; - case _KERNEL_ : isfile = true ; - case lib* : isfile = true ; - case * : isfile = ; - } - if ! $(isfile) && ( $(i:S) = .so || $(i:S) = .a ) { - isfile = true ; - } - } - if $(isfile) { - NEEDLIBS on $(1) = [ on $(1) return $(NEEDLIBS) ] $(i) ; - if ! $(NO_LIBRARY_DEPENDENCIES) { - Depends $(1) : $(i) ; - } - } else { - LINKLIBS on $(1) = [ on $(1) return $(LINKLIBS) ] -l$(i) ; - } - } -} - -rule AddResources -{ - # AddResources : ; - - local resfiles = [ FGristFiles $(2) ] ; - SEARCH on $(resfiles) += $(SEARCH_SOURCE) ; - - for file in $(resfiles) { - if $(file:S) = .rdef { - local rdef = $(file) ; - file = $(rdef:S=.rsrc) ; - ResComp $(file) : $(rdef) ; - } - RESFILES on $(1) += $(file) ; - } -} - -if $(OS) = BEOS { - -rule ResComp -{ - # ResComp : ; - # - # and must be gristed. - - SetupObjectsDir ; - - SEARCH on $(2) += $(SEARCH_SOURCE) ; - MakeLocate $(1) : $(LOCATE_TARGET) ; - Depends $(1) : $(2) rc ; - LocalClean clean : $(1) ; - ResComp1 $(1) : rc $(2) ; -} - -} else { - -rule ResComp -{ -} - -} - -actions ResComp1 -{ - $(2[1]) -o $(1) $(2[2-]) -} - -rule ObjectsDefines -{ - # Like ObjectDefines, but allows multiple files to be supplied - local file ; - for file in $(1) { - ObjectDefines $(file) : $(2) ; - } -} - -rule SourceHdrs -{ - # SourceHdrs : [ : ] ; - # - # Is a wrapper for ObjectHdrs, that passes and or, - # if supplied and , and also adjusts HDRSEARCH (not - # done by ObjectHdrs). - - local sources = [ FGristFiles $(1) ] ; - local headers = $(2) ; - local objects = $(3) ; - - local file ; - if $(objects) { - for file in $(objects) { - ObjectHdrs $(file) : $(headers) ; - # also reformat the assembler headers - ASHDRS on $(file) = [ FIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) - [ on $(file) return $(HDRS) ] ] ; - } - } else { - for file in $(sources:S=$(SUFOBJ)) { - ObjectHdrs $(file) : $(headers) ; - # also reformat the assembler headers - ASHDRS on $(file) = [ FIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) - [ on $(file) return $(HDRS) ] ] ; - } - } - - # Also add the header search dirs to HDRSEARCH. Note, that these dirs - # will be listed after the STDHDRS (if any), but that's better than not - # being listed at all. - HDRSEARCH on $(sources) += $(headers) ; -} - -rule PublicHeaders -{ - # PublicHeaders - # - # Returns the directory names for the public header dirs identified by - # . - - local list = $(1) ; - local dirs = [ FDirName $(OBOS_TOP) headers os ] ; - - for i in $(list) { - dirs += [ FDirName $(OBOS_TOP) headers os $(i) ] ; - } - return $(dirs) ; -} - -rule PrivateHeaders -{ - # PrivateHeaders - # - # Returns the directory names for the private header dirs identified by - # . - - local list = $(1) ; - local dirs ; - for i in $(list) { - dirs += [ FDirName $(OBOS_TOP) headers private $(i) ] ; - } - return $(dirs) ; -} - -rule LibraryHeaders -{ - # LibraryHeaders - # - # Returns the directory names for the library header dirs identified by - # . - - local list = $(1) ; - local dirs ; - for i in $(list) { - dirs += [ FDirName $(OBOS_TOP) headers libs $(i) ] ; - } - return $(dirs) ; -} - -rule ArchHeaders -{ - # usage: ArchHeaders ; - # - # specifies the architecture (e.g. x86). - - return [ FDirName $(OBOS_TOP) headers private kernel arch $(1) ] ; -} - -rule UsePublicHeaders -{ - # UsePublicHeaders ; - # - # Adds the public C header dirs given by to the header search - # dirs of the subdirectory. - # NOTE: This rule must be invoked *before* the rule that builds the - # objects. - - UseHeaders [ PublicHeaders $(1) ] ; -} - -rule UsePublicObjectHeaders -{ - # UsePublicObjectHeaders : [ : ] ; - # - # Adds the public C header dirs given by to the header search - # dirs of either the object targets of or if supplied to - # . Also adjusts HDRSEARCH of . - # NOTE: This rule must be invoked *after* the rule that builds the objects. - - SourceHdrs $(1) : [ PublicHeaders $(2) ] : $(3) ; -} - -rule UsePrivateHeaders -{ - # UsePrivateHeaders ; - # - # Adds the private C header dirs given by to the header search - # dirs of the subdirectory. - # NOTE: This rule must be invoked *before* the rule that builds the objects. - - UseHeaders [ PrivateHeaders $(1) ] ; -} - -rule UsePrivateObjectHeaders -{ - # UsePrivateObjectHeaders : [ : ] ; - # - # Adds the private C header dirs given by to the header search - # dirs of either the object targets of or if supplied to - # . Also adjusts HDRSEARCH of . - # NOTE: This rule must be invoked *after* the rule that builds the objects. - - SourceHdrs $(1) : [ PrivateHeaders $(2) ] : $(3) ; -} - -rule UseHeaders -{ - # UseHeaders ; - # - # Adds the C header dirs to the header search - # dirs of the subdirectory. - # NOTE: This rule must be invoked *before* the rule that builds the objects. - - local header ; - for header in $(1) { - SubDirHdrs $(header) ; - } -} - -rule UseCppUnitHeaders -{ - SubDirHdrs [ FDirName $(OBOS_TOP) headers tools cppunit ] ; -} - -rule UseCppUnitObjectHeaders -{ - # UseCppUnitObjectHeaders [ : ] ; - SourceHdrs $(1) : [ FDirName $(OBOS_TOP) headers tools cppunit ] : $(2) ; -} - -rule UseArchHeaders -{ - # usage: UseArchHeaders ; - # - # specifies the architecture (e.g. x86). - # NOTE: This rule must be invoked *before* the rule that builds the objects. - - local headers = [ ArchHeaders $(1) ] ; - local opt = -D$(OBOS_TARGET_DEFINE) ; - - SubDirCcFlags $(opt) ; - SubDirC++Flags $(opt) ; - UseHeaders $(headers) ; -} - -rule UseArchObjectHeaders -{ - # usage: UseArchObjectHeaders : : [ ] ; - # - # specifies the architecture (e.g. x86). - # Source or object files. - # NOTE: This rule must be invoked *after* the rule that builds the objects. - - local sources = $(1) ; - local headers = [ ArchHeaders $(2) ] ; - local objects = $(3) ; - local targets ; - if $(objects) { - targets = $(objects) ; - } else { - targets = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; - } - local opt = -D$(OBOS_TARGET_DEFINE) ; - - ObjectCcFlags $(targets) : $(opt) ; - ObjectC++Flags $(targets) : $(opt) ; - SourceHdrs $(sources) : $(headers) : $(objects) ; -} - -rule UsePosixHeaders -{ - # XXX changed to do nothing -} - -rule UsePosixObjectHeaders -{ - # UsePosixObjectHeaders [ : ] ; - # - # Adds the POSIX header dir to the header search - # dirs of either the object targets of or if supplied to - # . Also adjusts HDRSEARCH of . - # NOTE: This rule must be invoked *after* the rule that builds the objects. - - SourceHdrs $(1) : [ FDirName $(OBOS_TOP) headers posix ] : $(2) ; -} - -rule UseLibraryHeaders -{ - # UseLibraryHeaders ; - # - # Adds the library header dirs given by to the header search - # dirs of the subdirectory. - # NOTE: This rule must be invoked *before* the rule that builds the objects. - - UseHeaders [ LibraryHeaders $(1) ] ; -} - -rule SplitPath -{ - # SplitPath ; - # Decomposes a path into its components. - local path = $(1:G=) ; - local components ; - # $(path:D) for "/" is "/". Therefore the second condition. - while $(path:D) && $(path:D) != $(path) - { - # Note: $(path:B) returns "." for "..", but $(path:D=) is fine. - components = $(path:D=) $(components) ; - path = $(path:D) ; - } - components = $(path) $(components) ; - return $(components) ; -} - -rule PrependObjectHdrs -{ - # PrependObjectHdrs : ; - # Prepends to the list of header search dirs of the objects - # specified by . The HDRS variable will not be - # changed, only CCHDRS. - # Note: A subsequent ObjectHdrs invocation will therefore undo the - # effect of this rule. - # NOTE: This is a hack. - - local objects = [ FGristFiles $(1:S=$(SUFOBJ)) ] ; - local dirs = $(2) ; - for object in $(objects) { - # Don't change HDRS to avoid screwing up the header scanning. - PREPENDED_HDRS on $(object) - = $(dirs) [ on $(object) return $(PREPENDED_HDRS) ] ; - CCHDRS on $(object) - = [ FIncludes [ on $(object) return $(PREPENDED_HDRS) $(HDRS) ] ] ; - } -} - -rule SymLink -{ - # SymLink : : ; - # Links to . - # is the exact link contents. No binding is done. - # If true, will be made a dependency - # of the `all' pseudo target, i.e. it will be made by default, and removed - # on `jam clean'. - - local target = $(1) ; - local source = $(2) ; - local makeDefaultDependencies = $(3) ; - if ! $(makeDefaultDependencies) { - makeDefaultDependencies = true ; - } - LINKCONTENTS on $(target) = $(source) ; - SymLink1 $(target) ; - if $(makeDefaultDependencies) = true { - LocalDepends files : $(target) ; - LocalClean clean : $(target) ; - } -} - -actions SymLink1 -{ - $(RM) "$(1)" && $(LN) -s "$(LINKCONTENTS)" "$(1)" -} - -rule RelSymLink -{ - # RelSymLink : : ; - # Creates a relative symbolic link from to . - # and can be usual targets. They may have a grist - # and don't need to have any dirname. Their LOCATE variables are used to - # find their locations. - # If true (which is the default), will be - # made a dependency of the `files' pseudo target, i.e. it will be made by - # default, and removed on `jam clean'. - - local target = $(1) ; - local source = $(2) ; - local makeDefaultDependencies = $(3) ; - local targetDir = [ on $(target) FDirName $(LOCATE[1]) $(target:D) ] ; - local sourceDir = [ on $(source) FDirName $(LOCATE[1]) $(source:D) ] ; - local sourcePath = $(source:G=) ; - sourcePath = $(sourcePath:D=$(sourceDir)) ; - local targetDirComponents = [ SplitPath $(targetDir) ] ; - local sourceComponents = [ SplitPath $(sourcePath) ] ; - - SymLink $(target) - : [ FRelPath $(targetDirComponents) : $(sourceComponents) ] - : $(makeDefaultDependencies) ; - NOUPDATE $(target) ; - Depends $(target) : $(source) ; -} - -rule AbsSymLink -{ - # AbsSymLink : : - # : ; - # Creates an absolute symbolic link from to . - # and must be usual targets. If is - # given, then it is set as LOCATE directory on . - # If true (which is the default), will be - # made a dependency of the `files' pseudo target, i.e. it will be made by - # default, and removed on `jam clean'. - - local makeDefaultDependencies = $(4) ; - if ! $(makeDefaultDependencies) { - makeDefaultDependencies = true ; - } - - Depends $(1) : $(2) ; - if $(3) { - MakeLocate $(1) : $(3) ; - } - SEARCH on $(2) += $(SEARCH_SOURCE) ; - if $(makeDefaultDependencies) = true { - LocalDepends files : $(1) ; - LocalClean clean : $(1) ; - } -} - -actions AbsSymLink -{ - target="$(2)" - case "$target" in - /*) ;; - *) target=`pwd`/"$target";; - esac - $(RM) "$(1)" && $(LN) -s "$target" "$(1)" -} - -rule OBOSInstall -{ - # Usage: OBOSInstall <[ install [ and uninstall ] pseudotarget ]> - # : : - # : [ ] : [ ] ; - local install = $(1[1]) ; - install ?= install ; - local uninstall = $(1[2]) ; - uninstall ?= un$(install) ; - local dir = $(2) ; - local sources = $(3) ; - local installgrist = $(4) ; - installgrist ?= $(INSTALLGRIST) ; - local installRule = $(5) ; - installRule ?= Install ; - local targets = $(sources:G=$(installgrist)) ; - - NotFile $(install) ; - NotFile $(uninstall) ; - Depends $(install) : $(targets) ; - Clean $(uninstall) : $(targets) ; - - SEARCH on $(sources) += $(SEARCH_SOURCE) ; - MakeLocate $(targets) : $(dir) ; - - local source ; - for source in $(sources) { - local target = $(source:G=$(installgrist)) ; - - Depends $(target) : $(source) ; - $(installRule) $(target) : $(source) ; - - if [ on $(target) return $(MODE) ] { - Chmod $(target) ; - } - - if $(OWNER) && $(CHOWN) { - Chown $(target) ; - OWNER on $(target) = $(OWNER) ; - } - - if $(GROUP) && $(CHGRP) { - Chgrp $(target) ; - GROUP on $(target) = $(GROUP) ; - } - } -} - -rule InstallAbsSymLinkAdapter -{ - # InstallAbsSymLinkAdapter : - if ! [ on $(2) return $(TARGET) ] { - TARGET on $(2) = [ on $(2) return $(SEARCH) ] ; - } - AbsSymLink $(1) : $(2) : : false ; -} - -rule OBOSInstallAbsSymLink -{ - # Usage: OBOSInstallAbsSymLink <[ install [ and uninstall ] pseudotarget ]> - # : : - # : [ ] ; - OBOSInstall $(1) : $(2) : $(3) : $(4) : InstallAbsSymLinkAdapter ; -} - -rule InstallRelSymLinkAdapter -{ - # InstallRelSymLinkAdapter : - if ! [ on $(2) return $(TARGET) ] { - TARGET on $(2) = [ on $(2) return $(SEARCH) ] ; - } - RelSymLink $(1) : $(2) : false ; -} - -rule OBOSInstallRelSymLink -{ - # Usage: OBOSInstallRelSymLink <[ install [ and uninstall ] pseudotarget ]> - # : : - # : [ ] ; - OBOSInstall $(1) : $(2) : $(3) : $(4) : InstallRelSymLinkAdapter ; -} - - -#------------------------------------------------------------------------------- -# Low-level OBOS utility rules -#------------------------------------------------------------------------------- -rule FObjectsDir -{ - # FObjectsDir - # - # Returns the output directory for object files the specified - # subdirectory. - # - # : The tokens of the subdir relative to the top. - # - - return [ FDirName $(OBOS_OBJECT_TARGET) $(1[2-]) ] ; -} - -rule FCurrentObjectsDir -{ - # FCurrentObjectsDir - # - # Returns the output directory for object files for the current - # subdirectory. - - return [ FObjectsDir $(SUBDIR_TOKENS) ] ; -} - -rule SetupObjectsDir -{ - LOCATE_TARGET = [ FCurrentObjectsDir ] ; - LOCATE_SOURCE = $(LOCATE_TARGET) ; - SEARCH_SOURCE = [ Filter $(SEARCH_SOURCE) : $(LOCATE_TARGET) ] - $(LOCATE_TARGET) ; -} - -#------------------------------------------------------------------------------- -# Link rule/action are overwritten as they don't handle linking files who's name -# contain spaces very well. Also adds resources and version to executable. -#------------------------------------------------------------------------------- -rule Link -{ - # Note: RESFILES must be set before invocation. - MODE on $(<) = $(EXEMODE) ; - on $(1) XRes $(1) : $(RESFILES) ; - Chmod $(<) ; - SetType $(1) ; - MimeSet $(1) ; - SetVersion $(1) ; -} - -actions Link bind NEEDLIBS -{ - $(LINK) $(LINKFLAGS) -o "$(1)" $(UNDEFS) "$(2)" "$(NEEDLIBS)" $(LINKLIBS) ; -} - -rule LexC++ -{ - Depends $(1) : $(2) ; - MakeLocate $(1) : $(LOCATE_SOURCE) ; - LocalClean clean : $(1) ; -} - -actions LexC++ -{ - $(LEX) -o$(1) $(2) -} - -rule Bison -{ - local _h ; - - _h = $(1:S=.hpp) ; - - MakeLocate $(<) $(_h) : $(LOCATE_SOURCE) ; - - Depends $(<) $(_h) : $(>) ; - Bison1 $(<) $(_h) : $(>) ; - LocalClean clean : $(<) $(_h) ; - - # make sure someone includes $(_h) else it will be - # a deadly independent target - - Includes $(<) : $(_h) ; -} - -actions Bison1 -{ - bison $(YACCFLAGS) -o $(1[1]) $(2) - [ -f $(1[1]).h ] && mv $(1[1]).h $(1[2]) || true -} - -rule UnarchiveObjects -{ - # UnarchiveObjects : - - MakeLocate $(1) : $(LOCATE_TARGET) ; - Depends $(2) : $(1) ; - SEARCH on $(2) = $(SEARCH_SOURCE) ; -} - -actions UnarchiveObjects -{ - cd $(1[1]:D) - ar -x "$(2)" $(1:BS) - cd - -} - -# BeOS specific rules - -rule XRes -{ - # XRes : - if $(2) - { - Depends $(1) : $(2) ; - XRes1 $(1) : $(2) ; - } -} - -rule XRes1 { } - -rule SetVersion -{ - # SetVersion -} - -rule SetType -{ - # SetType -} - -rule MimeSet -{ - # SetType -} - - -if $(OS) = BEOS -{ - -actions XRes1 -{ - xres -o "$(1)" "$(2)" ; -} - -actions SetVersion -{ - setversion "$(1)" -system $(OBOS_BUILD_VERSION) -short "$(OBOS_BUILD_DESCRIPTION)" ; -} - -actions SetType -{ - settype -t $(OBOS_TARGET_TYPE) "$(1)" ; -} - -actions MimeSet -{ - mimeset -f "$(1)" ; -} - -} # if BEOS - - -rule assemble -{ - Depends $(<) : $(>) ; - ASFLAGS on $(<) += $(ASFLAGS) $(SUBDIRASFLAGS) ; - ASHDRS on $(<) = [ FIncludes $(SEARCH_SOURCE) $(SUBDIRHDRS) $(HDRS) ] ; -} - -actions assemble -{ - $(CC) -c "$(2)" -O2 $(ASFLAGS) -D_ASSEMBLER $(KERNEL_CCFLAGS) $(ASHDRS) -o "$(1)" ; -} - -# Overridden to allow spaces in file names. -actions Chmod1 -{ - $(CHMOD) "$(MODE)" "$(1)" -} - -# Overridden to allow spaces in file names. -actions piecemeal together existing Clean -{ - $(RM) "$(>)" -} - -rule ObjectReference -{ - # ObjectReference : - # Makes refer to the same file as . - # The filenames must of course be identical. - # must have already been LOCATEd. - - local ref = $(1) ; - local source = $(2) ; - if $(ref) != $(source) { - Depends $(ref) : $(source) ; - LOCATE on $(ref) = [ on $(source) return $(LOCATE) ] ; - } -} - -rule ObjectReferences -{ - # ObjectReferences - # Creates local references to , i.e. identifiers with the - # current grist referring to the same files. must have - # already been LOCATEd. - - local source ; - for source in $(1) { - ObjectReference [ FGristFiles $(source) ] : $(source) ; - } -} - -rule Filter -{ - # Filter : ; - # Removes all occurrences of in . - - local list = $(1) ; - local excludes = $(2) ; - local newList ; - local item ; - for item in $(list) { - local skip ; - local exclude ; - for exclude in $(excludes) { - if $(item) = $(exclude) { - skip = true ; - } - } - if ! $(skip) { - newList += $(item) ; - } - } - return $(newList) ; -} - - -## Kernel stuff! - -rule SetupKernel -{ - # Usage SetupKernel : ; - # - # - Ideally sources, otherwise HDRSEARCH can not be - # set for the sources and the sources some header - # dependencies might be missing. - - local sources = [ FGristFiles $(1) ] ; - local _objs = $(sources:S=$(SUFOBJ)) ; - - #Setup Kernel header directories - local public_kernel_includes = add-ons/file_system add-ons/graphics app device drivers kernel storage support ; - local private_kernel_includes = $(DOT) kernel libroot kernel/boot/platform/$(OBOS_BOOT_PLATFORM) ; - # Use posix headers directory - local headers = [ FDirName $(OBOS_TOP) headers posix ] ; - # Use public OS header directories - headers += [ PublicHeaders $(public_kernel_includes) ] ; - # Use private directories - headers += [ PrivateHeaders $(private_kernel_includes) ] ; - # The platform dependent headers. - headers += $(PLATFORM_HEADERS) ; - - SourceHdrs $(sources) : $(headers) ; - UseArchObjectHeaders $(sources) : $(OBOS_ARCH) ; - - local object ; - for object in $(_objs) { - ObjectCcFlags $(object) : $(KERNEL_CCFLAGS) $(2) ; - ObjectC++Flags $(object) : $(KERNEL_C++FLAGS) $(2) ; - } -} - -rule KernelObjects -{ - SetupObjectsDir ; - - Objects $(1) ; - - SetupKernel $(1) : $(2) ; -} - -rule KernelLd -{ - # KernelLd : : : : : ; - - SetupObjectsDir ; - LINK on $(1) = ld ; - - LINKFLAGS on $(1) = $(4) ; - if $(3) { LINKFLAGS on $(1) += --script=$(3) ; } - - # Remove any preset LINKLIBS - LINKLIBS on $(1) = ; - - # Show that we depend on the libraries we need - LocalClean clean : $(1) ; - LocalDepends all : $(1) ; - Depends $(1) : $(2) ; - - if $(6) { - for i in $(6) { - KernelConfigSection $(i) : elf32 : $(1) ; - } - } - - MakeLocate $(1) : $(LOCATE_TARGET) ; - - # Add the platform specific static libs (libgcc.a). - if ! $(5) { - LINKLIBS on $(1) += $(PLATFORM_LINKLIBS) ; - } - - SetupKernel $(2) ; -} - -actions KernelLd -{ - $(LINK) $(LINKFLAGS) -o "$(1)" "$(2)" $(LINKLIBS) ; -} - -rule KernelAddon -{ - # KernelAddon : : : ; - - local sources = $(3) ; - - SetupObjectsDir ; - Addon $(1) : $(2) : $(sources) ; - ObjectCcFlags $(sources) : -D_KERNEL_MODE=1 -fno-pic ; - ObjectC++Flags $(sources) : -D_KERNEL_MODE=1 -fno-pic -fno-exceptions ; - LINKFLAGS on $(1) = [ on $(1) return $(LINKFLAGS) ] -nostdlib ; - LinkSharedOSLibs $(1) : $(4) kernel.so ; - SetupKernel $(sources) ; -} - -rule KernelMergeObject -{ - # KernelMergeObject : : : ; - # Compiles source files and merges the object files to an object file. - # : Name of the object file to create. No grist will be added. - # : Sources to be compiled. Grist will be added. - # : Additional flags for compilation. - # : Object files or static libraries to be merged. No grist - # will be added. - # - - SetupObjectsDir ; - - MakeLocateObjects $(2) ; - Objects $(2) ; - MergeObjectFromObjects $(1) : $(2:S=$(SUFOBJ)) : $(4) ; - - SetupKernel $(2) : $(3) ; -} - -rule KernelStaticLibrary -{ - # Usage KernelStaticLibrary : : ; - # This is designed to take a set of sources and libraries and create - # a file called lib.a - - SetupObjectsDir ; - - MakeLocateObjects $(2) ; - Library $(1) : $(2) ; - - SetupKernel $(2) : $(3) ; -} - -rule KernelStaticLibraryObjects -{ - # Usage KernelStaticLibrary : ; - # This is designed to take a set of sources and libraries and create - # a file called - - SetupObjectsDir ; - - # Show that we depend on the libraries we need - LocalClean clean : $(1) ; - LocalDepends all : $(1) ; - Depends $(1) : $(2) ; - - MakeLocate $(1) : $(LOCATE_TARGET) ; - - SetupKernel $(2) ; -} - -actions KernelStaticLibraryObjects -{ - ar -r "$(1)" "$(2)" ; -} - -rule BuildPlatformMain -{ - # Usage BuildPlatformMain : [ : ] ; - # The executable. - # The sources. - # "false", if header search dirs shall not be reset to the - # platform defaults. Defaults to "true". - # - SetupObjectsDir ; - if $(3) != false { - SetupDefaultIncludes ; - } - - # Remove `-nostdinc' from CCFLAGS and C++FLAGS. Set DEFINES back to what - # was originally defined for the build platform. - local oldCCFLAGS = $(CCFLAGS) ; - local oldC++FLAGS = $(C++FLAGS) ; - local oldDefines = $(DEFINES) ; - CCFLAGS = [ Filter $(CCFLAGS) : -nostdinc ] ; - C++FLAGS = [ Filter $(C++FLAGS) : -nostdinc ] ; - DEFINES = $(BUILD_PLATFORM_DEFINES) ; - - Main $(1) : $(2) ; - - ObjectsDefines $(2) : _NO_INLINE_ASM ; - # Be careful with find_thread() and the like. - - # Reset CCFLAGS and C++FLAGS to original values. - CCFLAGS = $(oldCCFLAGS) ; - C++FLAGS = $(oldC++FLAGS) ; - DEFINES = $(oldDefines) ; -} - -rule BuildPlatformTest -{ - # Usage BuildPlatformTest : ; - - local target = $(1) ; - local sources = $(2) ; - - BuildPlatformMain $(target) : $(sources) ; - local relPath ; - if [ FIsPrefix src tests : $(SUBDIR_TOKENS) ] { - relPath = $(SUBDIR_TOKENS[3-]) ; - } else { - relPath = $(SUBDIR_TOKENS[2-]) ; - } - MakeLocate $(target) : [ FDirName $(OBOS_TEST_DIR) $(relPath) ] ; -} - -rule KernelConfigSection -{ - # KernelConfigSection
: : ; - - SECTION_NAMES on $(OBOS_KERNEL_CONFIG) += $(1) ; - SECTION_TYPES on $(OBOS_KERNEL_CONFIG) += $(2) ; - SECTION_FILES on $(OBOS_KERNEL_CONFIG) += $(3) ; - - Depends $(OBOS_KERNEL_CONFIG) : $(3) ; -} - -rule WriteKernelConfig -{ - # usage: WriteKernelConfig ; - - LocalDepends files : $(1) ; - - MakeLocate $(1) : $(OBOS_OBJECT_TARGET) ; - - LocalClean clean : $(1) ; -} - -actions WriteKernelConfig bind SECTION_FILES -{ - target="$(1)" - echo "# OpenBeOS Kernel Config File" > "$target" - echo "# Automatically generated - do not edit!" >> "$target" - count=0 - for section in "$(SECTION_NAMES)" ; do - count=`expr $count + 1` - eval section$count="$section" - done - i=1 - for type in "$(SECTION_TYPES)" ; do - eval type$i="$type" - i=`expr $i + 1` - done - i=1 - for file in "$(SECTION_FILES)" ; do - eval file$i="$file" - i=`expr $i + 1` - done - for i in `seq $count` ; do - eval section="\$section$i" - eval type="\$type$i" - eval file="\$file$i" - echo "" >> "$target" - echo "["$section"]" >> "$target" - echo "type="$type >> "$target" - case "$file" in - /*) ;; - *) file=`pwd`/"$file";; - esac - echo "file="$file >> "$target" - done -} - -rule BuildKernel -{ - # Usage BuildKernel : ; - local kernel = $(1) ; - local configFile = $(2) ; - local bootmaker = bootmaker ; - - LocalDepends all : $(kernel) ; - Depends $(kernel) : $(configFile) $(bootmaker) ; - LocalClean clean : $(kernel) ; - MakeLocate $(kernel) : $(LOCATE_TARGET) ; - - BOOT_MAKER on $(kernel) = $(bootmaker) ; -} - -actions BuildKernel bind BOOT_MAKER -{ - "$(BOOT_MAKER)" --strip-debug --strip-binary strip "$(2)" -o "$(1)" ; - echo "" - echo "Kernel linked!" - echo "" -} - -rule KernelFloppyImage -{ - # Usage KernelFloppyImage : : ; - local floppy = $(1) ; - local kernel = $(2) ; - local bootblock = $(3) ; - local makeflop = makeflop ; - - LocalDepends all : $(floppy) ; - Depends $(floppy) : $(kernel) $(bootblock) $(makeflop) ; - LocalClean clean : $(floppy) ; - MakeLocate $(floppy) : $(OBOS_OBJECT_TARGET) ; - - BOOT_BLOCK on $(floppy) = $(bootblock) ; - MAKE_FLOP on $(floppy) = $(makeflop) ; -} - -# This may be a bit verbose, but I think it's useful to show what's -# going on, at least in this early stage of development. -actions KernelFloppyImage bind BOOT_BLOCK bind MAKE_FLOP -{ - "$(MAKE_FLOP)" "-p $(shell expr 18 \* 2 \* 512)" "$(BOOT_BLOCK)" "$(2)" "$(1)" ; - - echo "" - echo "*************************************************" - echo "* Kernel build completed! *" - echo "* Boot image for a 1.44M floppy created *" - echo "*************************************************" - echo "" - echo "Floppy image is $(1)" - echo "The following command will write it to a floppy on BeOS" - echo " dd if=$(1) of=/dev/disk/floppy/raw bs=18k" - echo "Alternatively you can run" - echo " ./configure --floppy /dev/disk/floppy/raw" - echo "once and build + write the image subsequently via" - echo " jam installfloppy" - echo "" -} - -rule InstallFloppy -{ - # InstallFloppy : - # "dd"s to $(FLOPPY_PATH). - - local target = $(1) ; - local floppy = $(2) ; - - NotFile $(target) ; - Always $(target) ; - Depends $(target) : $(floppy) ; -} - -actions InstallFloppy -{ - if [ -z $(FLOPPY_PATH) ] ; then - echo "Can't install floppy: FLOPPY_PATH not set." - echo "run: ./configure --floppy " - echo - exit 0 - fi - dd if=$(2) of=$(FLOPPY_PATH) bs=18k -} - -#------------------------------------------------------------------------------- -# FreeType 2 specific rules and variables -#------------------------------------------------------------------------------- - -FT2_INCLUDE = [ FDirName $(OBOS_TOP) headers libs freetype2 ] ; -FT2_SRC = [ FDirName $(OBOS_TOP) src libs freetype2 ] ; - -FT2_LIB = freetype ; - -FT2_COMPONENTS ?= gzip # support for gzip-compressed files. - autohint # auto-hinter - autofit - base # base component (public APIs) - bdf # BDF font driver - cache # cache sub-system - cff # CFF/CEF font driver - cid # Postscript CID-keyed font driver - lzw # LZW routines - otvalid - pcf # PCF font driver - pfr # PFR/TrueDoc font driver - psaux # Common Postscript routines module - pshinter # Postscript hinter module - psnames # Postscript names handling - raster # Monochrome rasterizer - smooth # Anti-aliased rasterizer - sfnt # SFNT-based format support routines - truetype # TrueType font driver - type1 # Postscript Type 1 font driver - type42 # Postscript Type 42 (embedded TrueType) driver - winfonts # Windows FON/FNT font driver - ; - -rule UseFreeTypeHeaders -{ - SubDirHdrs $(FT2_INCLUDE) ; -} - -rule UseFreeTypeObjectHeaders -{ - # UseFreeTypeObjectHeaders [ : ] ; - SourceHdrs $(1) : $(FT2_INCLUDE) : $(2) ; -} - -rule FT2_SubDir -{ - # FT2_SubDir - # : Components of a directory in the original hierarchy. - local dir = $(1) ; - local topDir ; - switch $(dir[1]) - { - case "include" : topDir = $(FT2_INCLUDE) ; - case src : topDir = $(FT2_SRC) ; - case * : ECHO "Unknown FreeType2 directory: " $(dir) ; - } - return [ FDirName $(topDir) $(dir[2-]) ] ; -} - -rule FT2_Library -{ - # FT2_Library : - # Builds objects from sources and adds the objects to the list of objects - # to be linked into the library. - # The name of the library. - # The sources. - - local library = lib$(1).so ; - local sources = $(2) ; - SetupIncludes ; - SetupObjectsDir ; - MakeLocateObjects $(sources) ; - Objects $(sources) ; - LIBRARY_OBJECTS on $(library) += [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; -} - -rule FT2_LinkLibrary -{ - # FT2_LinkLibrary - # Links the library from the objects build with FT2_LIBRARY before. - - local library = lib$(1).so ; - local objects = [ on $(library) return $(LIBRARY_OBJECTS) ] ; - ObjectReferences $(objects) ; - objects = [ FGristFiles $(objects) ] ; - SharedLibraryFromObjects $(1) : $(objects) ; -} - -#------------------------------------------------------------------------------- -# Packages for OBOS alpha/beta testers -#------------------------------------------------------------------------------- - -rule Copy -{ - Depends $(<) : $(>) ; - SEARCH on $(>) = $(SEARCH_SOURCE) ; -} - -actions Copy -{ - cp -dp "$(>)" "$(<)" ; - if [ -f "$(>)" ] ; then copyattr "$(>)" "$(<)" ; fi ; -} - -rule Packages -{ - local packagenames = $(1) ; - local packagefiles = $(2) ; - local path = $(3) ; - for name in $(packagenames) { - Package $(name) : $(packagefiles) : $(path) ; - } -} - -rule Package -{ - local packagename = $(1) ; - local packagefiles = $(2) ; - local path = $(3) ; - - local packagezip = $(packagename:S=.zip:G=_packages) ; - local packagedir = [ FDirName $(OBOS_PACKAGE_DIR) $(packagename) ] ; - - local installscript = install.sh ; - local packageinstallscript = $(installscript:G=_packages!$(packagename)) ; - local installzip = install.zip ; - local packageinstallzip = $(installzip:G=_packages!$(packagename)) ; - - local packageobjectdir - = [ FDirName $(OBOS_PACKAGE_OBJECT_DIR) $(packagename) ] ; - local packagefiledir = [ FDirName $(packageobjectdir) $(path) ] ; - local packagefileinstallzip - = $(installzip:G=_package_objects!$(packagename)) ; - - # add the files to the install.zip - local packagefilegrist = [ FGrist _package_files $(packagename) $(path) ] ; - for file in $(packagefiles) { - if $(3[0]) = "boot" { - local packagefile = $(file:G=$(packagefilegrist)) ; - MakeLocate $(packagefile) : $(packagefiledir) ; - Copy $(packagefile) : $(file) ; - Clean cleanPackages : $(packagefile) ; - PackageInstallZip $(packagefileinstallzip) : $(packagefile) ; - } else { - local packagefile = $(file:G=_packages!$(packagename)) ; - MakeLocate $(packagefile) : $(packagedir) ; - Copy $(packagefile) : [ FGristFiles $(file) ] ; - Clean cleanPackages : $(packagefile) ; - Depends $(packagezip) : $(packagefile) ; - } - } - - # general setup for this packages -- only on first invocation - if ! $(_setup_$(packagename)) { - _setup_$(packagename) = true ; - - NotFile $(packagename) ; - LocalDepends packages : $(packagename) ; - - MakeLocate $(packagezip) : $(OBOS_PACKAGE_DIR) ; - MakeLocate $(packageinstallscript) : $(packagedir) ; - MakeLocate $(packageinstallzip) : $(packagedir) ; - MakeLocate $(packagefileinstallzip) : $(packageobjectdir) ; - - PackageInstallScript $(packageinstallscript) : $(packagedir) ; - LinkInstallZip $(packageinstallzip) : $(packagefileinstallzip) ; - Depends $(packagename) : $(packagezip) ; - PackageZip $(packagezip) : $(packagedir) - : $(packageinstallscript) $(packageinstallzip) ; - } - -} - -rule PackageZip -{ - local dir = $(2:G=dir) ; - Depends $(1) : $(dir) $(3) ; - Clean cleanPackages : $(1) ; - PackageZip1 $(1) : $(dir) ; -} - -actions together PackageZip1 { - cd "$(OBOS_PACKAGE_DIR)" ; - zip -rq "$(1:BS)" "$(2:BS)" ; -} - -rule PackageInstallScript -{ - MakeLocate $(1) : $(2) ; - Clean cleanPackages : $(1) ; - PackageInstallScript1 $(1) : $(2:G=dir) ; -} - -actions together PackageInstallScript1 -{ -echo '#!/bin/sh -base=`dirname "$0"` -cd "$base" -if [ -n "$TTY" ] -then - unzip -d / install.zip -else - response=`alert "Would you like to automatically overwrite existing files, or receive a prompt?" "Overwrite" "Prompt"` - if [ $response == "Overwrite" ] - then - unzip -od / install.zip - alert "Finished installing" "Thanks" - else - if [ -e /boot/beos/apps/Terminal ] - then - terminal=/boot/beos/apps/Terminal - else - terminal=`query Terminal | head -1` - fi - $terminal -t "installer" /bin/sh "$0" - fi -fi' > "$(1)" ; - chmod 755 "$(1)" ; -} - -rule PackageInstallZip -{ - Depends $(1) : $(2) ; - Clean cleanPackages : $(1) ; -} - -actions together PackageInstallZip -{ - cd "$(1:P)" ; - zip -rqy "$(1:BS)" boot ; -} - -rule LinkInstallZip -{ - Depends $(1) : $(2) ; - Clean cleanPackages : $(1) ; -} - -actions together LinkInstallZip -{ - ln -sf "`pwd`/$(2)" "$(1)" ; -} - -rule SubIncludeGPL -{ - # SubInclude rule that can be used to conditionally include GPL licensed add-ons - if $(INCLUDE_GPL_ADDONS) = 1 { - SubInclude $(1) ; - } -} - -rule Man2Doc -{ - local source = [ FGristFiles $(2) ] ; - local binary = $(1) ; - - SEARCH on $(source) = $(SEARCH_SOURCE) ; - - MakeLocate $(binary) : [ FDirName $(OBOS_OBJECT_TARGET) documentation Shell_Tools ] ; - - Depends $(binary) : $(source) rman ; - - LocalDepends doc_files : $(binary) ; - Man2Doc1 $(binary) : rman $(source) ; - LocalClean clean : $(binary) ; -} - -actions Man2Doc1 -{ - $(2[1]) -f XML "$(2[2])" > "$(1)" ; -} - -rule Man2Docs -{ - # Man2Docs ; - local source ; - for source in [ FGristFiles $(1) ] - { - local target = $(source:S=.xml) ; - - Man2Doc $(target) : $(source) ; - } -} +PrepareConfigVariables ; +# specify the Haiku image contents +include [ FDirName $(HAIKU_BUILD_RULES_DIR) HaikuImage ] ; diff --git a/build/jam/BeOSRules b/build/jam/BeOSRules new file mode 100644 index 0000000000..0a8bf6420b --- /dev/null +++ b/build/jam/BeOSRules @@ -0,0 +1,157 @@ +# BeOS specific rules + + +rule AddStringDataResource +{ + # AddStringDataResource : : + # Adds a single resource to the resources of an executable/library. + # : The executable/library. + # : A resource ID string as understood by xres (type:id[:name]). + # : The string will be written to the resource. + # Defaults to "". + # + local target = $(1) ; + local resourceID = $(2) ; + local dataString = $(3:E="") ; + + # the resource file + local resources + = [ FGristFiles $(target:B)-added-string-data-resources.rsrc ] ; + + # add the resource file to the target, if not yet done + if ! [ on $(resources) return $(RESOURCES_ADDED) ] { + RESOURCES_ADDED on $(resources) = true ; + MakeLocateArch $(resources) ; + Depends $(resources) : xres ; + AddStringDataResource1 $(resources) : xres ; + AddResources $(target) : $(resources) ; + } + + RESOURCE_STRINGS on $(resources) + += "-a "$(resourceID)" -s \""$(dataString)"\"" ; +} + +actions together AddStringDataResource1 +{ + $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) + $(2[1]) -o "$(1)" $(RESOURCE_STRINGS) +} + + +rule AddFileDataResource +{ + # AddFileDataResource : : [ ] + # : [ ] + # Adds a single resource to the resources of an executable/library. + # : The executable/library. + # : A resource ID string as understood by xres (type:id[:name]). + # : The data to be written into the resource will be read from + # that file. + # + local target = $(1) ; + local resourceID = $(2) ; + local dataFile = $(3) ; + + # the resource file + local resources + = file-data-$(resourceID)-$(dataFile).rsrc ; + + # add it to the resources of the given target + AddResources $(target) : $(resources) ; + + # if the rule for creating the resource file has not been invoked yet, do it + if ! [ on $(resources) return $(RESOURCES_DEFINED) ] { + RESOURCES_DEFINED on $(resources) = true ; + RESOURCE_ID on $(resources) = $(resourceID) ; + MakeLocateArch $(resources) ; + + Depends $(resources) : xres $(dataFile) ; + AddFileDataResource1 $(resources) : xres $(dataFile) ; + } +} + +actions AddFileDataResource1 +{ + $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) + $(2[1]) -o "$(1)" -a "$(RESOURCE_ID)" "$(2[2])" ; +} + +rule XRes +{ + # XRes : + if $(2) + { + Depends $(1) : xres $(2) ; + XRes1 $(1) : xres $(2) ; + } +} + +actions XRes1 +{ + $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) + $(2[1]) -o "$(1)" "$(2[2-])" ; +} + +rule SetVersion +{ + # SetVersion + + Depends $(1) : setversion ; + SetVersion1 $(1) : setversion ; +} + +actions SetVersion1 +{ + $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) + $(2[1]) "$(1)" -system $(HAIKU_BUILD_VERSION) -short "$(HAIKU_BUILD_DESCRIPTION)" ; +} + +rule SetType +{ + # SetType + + Depends $(1) : settype ; + SetType1 $(1) : settype ; +} + +actions SetType1 +{ + $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) + $(2[1]) -t $(TARGET_EXECUTABLE_MIME_TYPE) "$(1)" ; +} + +rule MimeSet +{ + # MimeSet +} + +rule ResComp +{ + # ResComp : ; + # + # and must be gristed. + + SEARCH on $(2) += $(SEARCH_SOURCE) ; + MakeLocateArch $(1) ; + Depends $(1) : $(2) rc ; + LocalClean clean : $(1) ; + ResComp1 $(1) : rc $(2) ; +} + +actions ResComp1 +{ + $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) + $(2[1]) --auto-names -o $(1) $(2[2-]) +} + + +if $(OS) = BEOS +{ + +actions MimeSet +{ + mimeset -f "$(1)" ; +} + +} # if BEOS + diff --git a/build/jam/BuildSetup b/build/jam/BuildSetup new file mode 100644 index 0000000000..35c20846a6 --- /dev/null +++ b/build/jam/BuildSetup @@ -0,0 +1,577 @@ + +# Variable naming conventions: +# TARGET_*: A build system variable specifying a property for building for +# the target platform (usually Haiku). E.g. TARGET_CC specifies the +# compiler when building a target for the target platform. +# HOST_*: A build system variable specifying a property of the platform +# hosting the build. E.g. HOST_CC specifies the compiler when +# building a target for the host platform (a build tool for +# instance). +# HAIKU_*: A build system variable specifying a build system property. Usually +# directory paths and the like. + + +# Include BuildConfig/Timezones/libgccObjects +{ + local buildConfig = [ GLOB $(HAIKU_BUILD_OUTPUT_DIR) : BuildConfig ] ; + local timezones = [ GLOB $(HAIKU_BUILD_OUTPUT_DIR) : Timezones ] ; + local libgccObjects = [ GLOB $(HAIKU_BUILD_OUTPUT_DIR) : libgccObjects ] ; + + if ! $(buildConfig) { + ECHO "No `BuildConfig' found in $(HAIKU_BUILD_OUTPUT_DIR)!" ; + EXIT "Run ./configure in the source tree's root directory first!" ; + } + if ! ( $(timezones) && $(libgccObjects) ) { + ECHO "No `Timezones' or `libgccObjects' found in $(HAIKU_BUILD_OUTPUT_DIR)!" ; + EXIT "Please run ./configure in the source tree's root directory again!" ; + } + + LOCATE on BuildConfig = $(HAIKU_BUILD_OUTPUT_DIR) ; + LOCATE on Timezones = $(HAIKU_BUILD_OUTPUT_DIR) ; + LOCATE on libgccObjects = $(HAIKU_BUILD_OUTPUT_DIR) ; + + include BuildConfig ; + include Timezones ; + include libgccObjects ; +} + + +# supported debug levels +HAIKU_DEBUG_LEVELS = 0 1 2 3 4 5 ; + +# BeOS, BONE, Dan0 compatible platforms +HAIKU_BEOS_COMPATIBLE_PLATFORMS = haiku r5 bone dano ; +HAIKU_BONE_COMPATIBLE_PLATFORMS = haiku bone dano ; +HAIKU_DANO_COMPATIBLE_PLATFORMS = haiku dano ; + + +#pragma mark - + +# haiku target platform settings + +# initial state for flags etc. +HAIKU_C++ ?= $(HAIKU_CC) ; +HAIKU_LINK = $(HAIKU_CC) ; +HAIKU_LINKFLAGS = ; + +HAIKU_HDRS = [ FStandardHeaders ] ; +HAIKU_CCFLAGS = -nostdinc ; +HAIKU_C++FLAGS = -nostdinc ; +HAIKU_DEFINES = __HAIKU__ ; + +# analyze the gcc machine spec to determine HAIKU_CPU +switch $(HAIKU_GCC_MACHINE) { + case i386-* : HAIKU_CPU = x86 ; + case i486-* : HAIKU_CPU = x86 ; + case i586-* : HAIKU_CPU = x86 ; + case i686-* : HAIKU_CPU = x86 ; + # TODO: PPC? + case * : Exit "Unsupported gcc target machine:" $(HAIKU_GCC_MACHINE) ; +} + +switch $(HAIKU_CPU) { + case ppc : + { + HAIKU_DEFINES += __POWERPC__ ; + HAIKU_BOOT_PLATFORM = openfirmware ; + } + case x86 : + { + HAIKU_DEFINES += __INTEL__ ; + HAIKU_BOOT_PLATFORM = bios_ia32 ; + } + case * : + Exit "Currently unsupported target CPU:" $(HAIKU_CPU) ; +} +HAIKU_ARCH ?= $(HAIKU_CPU) ; +HAIKU_ARCH_MACRO_DEFINE = ARCH_$(HAIKU_ARCH) ; +HAIKU_DEFINES += $(HAIKU_ARCH_MACRO_DEFINE) ; + +# directories +HAIKU_OBJECT_BASE_DIR = [ FDirName $(HAIKU_OBJECT_DIR) haiku ] ; +HAIKU_COMMON_ARCH_OBJECT_DIR = [ FDirName $(HAIKU_OBJECT_BASE_DIR) common ] ; +HAIKU_ARCH_OBJECT_DIR = [ FDirName $(HAIKU_OBJECT_BASE_DIR) $(HAIKU_ARCH) ] ; +HAIKU_COMMON_DEBUG_OBJECT_DIR = [ FDirName $(HAIKU_ARCH_OBJECT_DIR) common ] ; +HAIKU_DEBUG_0_OBJECT_DIR = [ FDirName $(HAIKU_ARCH_OBJECT_DIR) release ] ; + +local level ; +for level in $(HAIKU_DEBUG_LEVELS[2-]) { + HAIKU_DEBUG_$(level)_OBJECT_DIR + = [ FDirName $(HAIKU_ARCH_OBJECT_DIR) debug_$(level) ] ; +} + +# analyze GCC version +if ! $(HAIKU_GCC_RAW_VERSION) { + ECHO "Variable HAIKU_GCC_RAW_VERSION not set. Please run ./configure or" ; + EXIT "specify it manually." ; +} +HAIKU_GCC_VERSION = ; +{ + # split the raw version string at `.' and `-' characters + local version = $(HAIKU_GCC_RAW_VERSION) ; + while $(version) { + local split = [ Match "([^.-]*)[.-](.*)" : $(version) ] ; + if $(split) { + HAIKU_GCC_VERSION += $(split[1]) ; + version = $(split[2]) ; + } else { + HAIKU_GCC_VERSION += $(version) ; + version = ; + } + } +} + +# assembler flags +HAIKU_ASFLAGS = ; + +# C/C++ flags +HAIKU_CCFLAGS += -Wno-multichar ; +HAIKU_C++FLAGS += -Wno-multichar ; + +HAIKU_KERNEL_CCFLAGS += -finline -fno-builtin + -DBOCHS_DEBUG_HACK=$(BOCHS_DEBUG_HACK) -D_KERNEL_MODE ; +HAIKU_KERNEL_C++FLAGS += -finline -fno-builtin -fno-exceptions + -DBOCHS_DEBUG_HACK=$(BOCHS_DEBUG_HACK) -D_KERNEL_MODE ; + +if $(HAIKU_GCC_VERSION[1]) >= 3 { + HAIKU_KERNEL_C++FLAGS += -fno-use-cxa-atexit ; +} + +# If the environment variable DEBUG_PRINTF is defined we define an equally +# named macro to the variable value. Some components use the macro to allow +# another function than printf() to print the debug output. The variable should +# be set to the name of the alternative function. +# +if $(DEBUG_PRINTF) { + HAIKU_CCFLAGS += [ FDefines DEBUG_PRINTF=$(DEBUG_PRINTF) ] ; + HAIKU_C++FLAGS += [ FDefines DEBUG_PRINTF=$(DEBUG_PRINTF) ] ; +} + +# warning flags +HAIKU_WARNING_CCFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wcast-align + -Wsign-compare ; +HAIKU_WARNING_C++FLAGS = -Wall -Wmissing-prototypes -Wno-ctor-dtor-privacy + -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare ; + +HAIKU_KERNEL_WARNING_CCFLAGS = -Wall -Wmissing-prototypes ; +HAIKU_KERNEL_WARNING_C++FLAGS = -Wall -Wmissing-prototypes ; + +# debug flags +HAIKU_DEBUG_FLAGS ?= -ggdb ; + +# debug 0: suppress asserts +HAIKU_DEBUG_0_CCFLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; +HAIKU_DEBUG_0_C++FLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; + +HAIKU_KERNEL_DEBUG_0_CCFLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; +HAIKU_KERNEL_DEBUG_0_C++FLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; + +local level ; +for level in $(HAIKU_DEBUG_LEVELS[2-]) { + local flags = $(HAIKU_DEBUG_FLAGS) [ FDefines DEBUG=$(level) ] ; + HAIKU_DEBUG_$(level)_CCFLAGS = $(flags) ; + HAIKU_DEBUG_$(level)_C++FLAGS = $(flags) ; + HAIKU_KERNEL_DEBUG_$(level)_CCFLAGS = $(flags) ; + HAIKU_KERNEL_DEBUG_$(level)_C++FLAGS = $(flags) ; +} + +# private kernel headers do be used when compiling kernel code +HAIKU_PRIVATE_KERNEL_HEADERS = + [ PrivateHeaders $(DOT) kernel libroot + kernel/boot/platform/$(HAIKU_BOOT_PLATFORM) ] + [ ArchHeaders $(HAIKU_ARCH) ] +; + +# Add some grist to the libgcc objects +HAIKU_GCC_LIBGCC_OBJECTS = $(HAIKU_GCC_LIBGCC_OBJECTS:G=libgcc) ; + +# the C++ library +HAIKU_LIBSTDC++ = libstdc++.r4.so ; + +# library and executable glue code +local commonGlueCode = + init_term_dyn.o + crti.o + crtn.o +; +HAIKU_LIBRARY_BEGIN_GLUE_CODE = + crti.o + crtbegin.o + init_term_dyn.o +; +HAIKU_LIBRARY_END_GLUE_CODE = + crtend.o + crtn.o +; +HAIKU_EXECUTABLE_BEGIN_GLUE_CODE = + crti.o + crtbegin.o + start_dyn.o + init_term_dyn.o +; +HAIKU_EXECUTABLE_END_GLUE_CODE = $(HAIKU_LIBRARY_END_GLUE_CODE) ; + +SEARCH on crtbegin.o crtend.o = $(HAIKU_GCC_LIB_DIR) ; + +HAIKU_EXECUTABLE_MIME_TYPE = "application/x-vnd.Be-elfexecutable" ; + +# TODO: The version stuff should probably go into a separate file and be made +# available as macro, too. +# Set our version number if not already set and mark it as a developer build +if ! $(HAIKU_BUILD_VERSION) { + HAIKU_BUILD_VERSION ?= "1 0 0 a 1" ; + HAIKU_BUILD_DESCRIPTION ?= "Developer Build" ; +} + +# If HAIKU_BUILD_VERSION is set, but HAIKU_BUILD_DESCRIPTION isn't, mark it as +# an unknown build. +HAIKU_BUILD_DESCRIPTION ?= "Unknown Build" ; + +# init library name map +{ + local i ; + for i in be game mail media midi midi2 net netapi opengl screensaver root z + textencoding tracker translation { + HAIKU_LIBRARY_NAME_MAP_$(i) = lib$(i).so ; + } +} + + +#pragma mark - + +# host platform settings + +# save jam's variables for the build platform +HOST_AR ?= $(AR) ; +HOST_CC ?= $(CC) ; +HOST_C++ ?= $(C++) ; +HOST_LINK ?= $(LINK) ; +HOST_LD ?= ld ; # TODO: Fix this! +HOST_OBJCOPY ?= objcopy ; # +HOST_RANLIB ?= $(RANLIB) ; +HOST_CPPFLAGS ?= $(CPPFLAGS) ; +HOST_CCFLAGS ?= $(CCFLAGS) ; +HOST_C++FLAGS ?= $(C++FLAGS) ; +HOST_LDFLAGS ?= $(LDFLAGS) ; +HOST_LINKFLAGS ?= $(LINKFLAGS) ; +HOST_DEFINES ?= $(DEFINES) ; +HOST_HDRS ?= $(HDRS) ; + +# split up HOST_AR into the command name and flags +HOST_AR = [ Match "([^ ]*) *(.*)" : $(HOST_AR[1]) ] + $(HOST_AR[2-]) ; +HOST_ARFLAGS = $(HOST_AR[2-]) ; +HOST_AR = $(HOST_AR[1]) ; +HOST_UNARFLAGS ?= x ; + +# check the host platform compatibility +SetPlatformCompatibilityFlagVariables HOST_PLATFORM : HOST : host : linux ; + +if $(HOST_PLATFORM) = linux { + # don't use lex: otherwise rc will not work correctly + if $(LEX) = lex { + LEX = flex ; + } +} + +HOST_CPU ?= $(OSPLAT:L) ; + +HOST_ARCH ?= $(HOST_CPU) ; +HOST_ARCH_MACRO_DEFINE = ARCH_$(HOST_CPU) ; + +# directories +HOST_OBJECT_BASE_DIR = [ FDirName $(HAIKU_OBJECT_DIR) $(HOST_PLATFORM) ] ; +HOST_COMMON_ARCH_OBJECT_DIR = [ FDirName $(HOST_OBJECT_BASE_DIR) common ] ; +HOST_ARCH_OBJECT_DIR = [ FDirName $(HOST_OBJECT_BASE_DIR) $(HOST_ARCH) ] ; +HOST_COMMON_DEBUG_OBJECT_DIR = [ FDirName $(HOST_ARCH_OBJECT_DIR) common ] ; +HOST_DEBUG_0_OBJECT_DIR = [ FDirName $(HOST_ARCH_OBJECT_DIR) release ] ; + +local level ; +for level in $(HAIKU_DEBUG_LEVELS[2-]) { + HOST_DEBUG_$(level)_OBJECT_DIR + = [ FDirName $(HOST_ARCH_OBJECT_DIR) debug_$(level) ] ; +} + +# assembler flags +HOST_ASFLAGS = ; + +# C/C++ flags +HOST_CCFLAGS += -Wno-multichar ; +HOST_C++FLAGS += -Wno-multichar ; + +HOST_KERNEL_CCFLAGS += -finline -fno-builtin + -DBOCHS_DEBUG_HACK=$(BOCHS_DEBUG_HACK) -D_KERNEL_MODE ; +HOST_KERNEL_C++FLAGS += -finline -fno-builtin -fno-exceptions + -DBOCHS_DEBUG_HACK=$(BOCHS_DEBUG_HACK) -D_KERNEL_MODE ; + +# warning flags +HOST_WARNING_CCFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wcast-align + -Wsign-compare ; +HOST_WARNING_C++FLAGS = -Wall -Wmissing-prototypes -Wno-ctor-dtor-privacy + -Woverloaded-virtual -Wpointer-arith -Wcast-align -Wsign-compare ; + +HOST_KERNEL_WARNING_CCFLAGS = -Wall -Wmissing-prototypes ; +HOST_KERNEL_WARNING_C++FLAGS = -Wall -Wmissing-prototypes ; + +# debug flags +switch $(HOST_PLATFORM) { + case haiku : HOST_DEBUG_FLAGS ?= -ggdb ; + case linux : HOST_DEBUG_FLAGS ?= -ggdb ; + case * : HOST_DEBUG_FLAGS ?= -g ; +} + +# debug 0: suppress asserts +HOST_DEBUG_0_CCFLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; +HOST_DEBUG_0_C++FLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; + +HOST_KERNEL_DEBUG_0_CCFLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; +HOST_KERNEL_DEBUG_0_C++FLAGS = [ FDefines NDEBUG=$(NDEBUG) ] ; + +local level ; +for level in $(HAIKU_DEBUG_LEVELS[2-]) { + local flags = $(HOST_DEBUG_FLAGS) [ FDefines DEBUG=$(level) ] ; + HOST_DEBUG_$(level)_CCFLAGS = $(flags) ; + HOST_DEBUG_$(level)_C++FLAGS = $(flags) ; + HOST_KERNEL_DEBUG_$(level)_CCFLAGS = $(flags) ; + HOST_KERNEL_DEBUG_$(level)_C++FLAGS = $(flags) ; +} + +# private kernel headers do be used when compiling kernel code +HOST_PRIVATE_KERNEL_HEADERS = ; + +# under BeOS use copyattr instead of cp +if $(HOST_PLATFORM_BEOS_COMPATIBLE) +{ + CP = copyattr --data ; +} + +HOST_DEFINES += $(HOST_ARCH_MACRO_DEFINE) ; +HOST_DEFINES += _NO_INLINE_ASM ; + +if $(HOST_PLATFORM_BEOS_COMPATIBLE) { + # TODO: That's obviously not correct, but in the way the COMPILE_FOR_R5 + # macro is used, it actually seems to mean r5/bone/dano. + HOST_DEFINES += COMPILE_FOR_R5 ; +} + +# for builds of tools in the current environment +HOST_BUILD_COMPATIBILITY_LIB_DIR = [ FDirName $(HOST_OBJECT_BASE_DIR) lib ] ; + +if $(HOST_PLATFORM_BEOS_COMPATIBLE) { + HOST_LIBSTDC++ = stdc++.r4 ; + HOST_LIBROOT = root ; + HOST_LIBBE = be ; + HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR = ; +} else { + HOST_LIBSTDC++ = stdc++ ; + HOST_LIBROOT = libroot_build.so ; + HOST_LIBBE = libbe_build.so ; + HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR + = "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(HOST_BUILD_COMPATIBILITY_LIB_DIR)" ; + + # The BeOS compilers define __INTEL__ respectively __POWERPC__. On the + # build platform we need to make sure, this is also defined. + if $(HOST_CPU) = x86 { + HOST_DEFINES += __INTEL__ ; + } else if $(HOST_CPU) = ppc { + HOST_DEFINES += __POWERPC__ ; + } + + # Supposing this is a glibc platform, let's try to get large file support + HOST_DEFINES += + _LARGEFILE_SOURCE _LARGEFILE64_SOURCE _FILE_OFFSET_BITS=64 + ; +} + +# define the executable MIME type +HOST_EXECUTABLE_MIME_TYPE = "application/x-vnd.Be-elfexecutable" ; + +if $(METROWERKS) { + # at least parts of Haiku still can be compiled with + # the Metrowerks compiler on BeOS/PPC + HOST_EXECUTABLE_MIME_TYPE = "application/x-be-executable" ; +} + +# Be API compatibility +HOST_BE_API_HEADERS = ; +HOST_BE_API_CCFLAGS = ; +HOST_BE_API_C++FLAGS = ; + +if ! $(HOST_PLATFORM_BEOS_COMPATIBLE) { + HOST_BE_API_HEADERS = + [ FDirName $(HAIKU_TOP) headers build ] + [ FDirName $(HAIKU_TOP) headers build os ] + [ FDirName $(HAIKU_TOP) headers build os app ] + [ FDirName $(HAIKU_TOP) headers build os drivers ] + [ FDirName $(HAIKU_TOP) headers build os kernel ] + [ FDirName $(HAIKU_TOP) headers build os interface ] + [ FDirName $(HAIKU_TOP) headers build os storage ] + [ FDirName $(HAIKU_TOP) headers build os support ] + ; + HOST_BE_API_CCFLAGS = -include HaikuBuildCompatibility.h ; + HOST_BE_API_C++FLAGS = $(HOST_BE_API_CCFLAGS) ; +} + + +#pragma mark - + +# target platform settings + +# check the target platform compatibility +SetPlatformCompatibilityFlagVariables TARGET_PLATFORM : TARGET : target ; + +# check the compatibility between host and target platform +if $(TARGET_PLATFORM) != haiku { + if ! $(HOST_PLATFORM_($(TARGET_PLATFORM))_COMPATIBLE) { + Exit ERROR: The host platform is not compatible with target platform + $(TARGET_PLATFORM). ; + } +} + +# TODO: Fix the naming! +if $(TARGET_PLATFORM_BONE_COMPATIBLE) { + NETWORK_LIBS = libsocket.so libbind.so ; + NETAPI_LIB = libbnetapi.so ; + SELECT_UNAME_ETC_LIB = libroot.so ; +} else { + NETWORK_LIBS = libnet.so ; + NETAPI_LIB = libnetapi.so ; + SELECT_UNAME_ETC_LIB = libnet.so ; +} + +# TODO: For compatibility only. Remove when no longer used. +R5_COMPATIBLE = $(TARGET_PLATFORM_BEOS_COMPATIBLE) ; +BONE_COMPATIBLE = $(TARGET_PLATFORM_BONE_COMPATIBLE) ; +DANO_COMPATIBLE = $(TARGET_PLATFORM_DANO_COMPATIBLE) ; +HAIKU_COMPATIBLE = $(TARGET_PLATFORM_HAIKU_COMPATIBLE) ; + +# Set TARGET_* variables either from HAIKU_* or HOST_* depending on the +# specified TARGET_PLATFORM. + +local buildVars = + ARCH CPU + + AR CC C++ LD OBJCOPY RANLIB + + HDRS CPPFLAGS CCFLAGS C++FLAGS LDFLAGS LINK LINKFLAGS DEFINES + ARFLAGS UNARFLAGS + + KERNEL_CCFLAGS KERNEL_C++FLAGS + WARNING_CCFLAGS WARNING_C++FLAGS + + KERNEL_WARNING_CCFLAGS KERNEL_WARNING_C++FLAGS + + DEBUG_FLAGS + + DEBUG_$(HAIKU_DEBUG_LEVELS)_CCFLAGS DEBUG_$(HAIKU_DEBUG_LEVELS)_C++FLAGS + + KERNEL_DEBUG_$(HAIKU_DEBUG_LEVELS)_CCFLAGS + KERNEL_DEBUG_$(HAIKU_DEBUG_LEVELS)_C++FLAGS + + PRIVATE_KERNEL_HEADERS + + LIBSTDC++ + + ARCH_MACRO_DEFINE EXECUTABLE_MIME_TYPE + + OBJECT_BASE_DIR COMMON_ARCH_OBJECT_DIR COMMON_DEBUG_OBJECT_DIR + DEBUG_$(HAIKU_DEBUG_LEVELS)_OBJECT_DIR +; + +if $(TARGET_PLATFORM) = haiku { + local var ; + for var in $(buildVars) { + TARGET_$(var) = $(HAIKU_$(var)) ; + } + + TARGET_GCC_LIB_DIR = $(HAIKU_GCC_LIB_DIR) ; + TARGET_GCC_HEADERS_DIR = $(HAIKU_GCC_HEADERS_DIR) ; + TARGET_GCC_LIBGCC = $(HAIKU_GCC_LIBGCC) ; + TARGET_GCC_LIBGCC_OBJECTS = $(HAIKU_GCC_LIBGCC_OBJECTS) ; + + TARGET_BOOT_PLATFORM = $(HAIKU_BOOT_PLATFORM) ; + +} else { + local var ; + for var in $(buildVars) { + TARGET_$(var) = $(HOST_$(var)) ; + } + + TARGET_GCC_LIB_DIR = ; + TARGET_GCC_HEADERS_DIR = ; + TARGET_GCC_LIBGCC = ; + TARGET_GCC_LIBGCC_OBJECTS = ; + + TARGET_BOOT_PLATFORM = ; +} + + +#pragma mark - + +# common stuff + +# start with a clean slate +CCFLAGS = ; +C++FLAGS = ; +DEFINES = ; + +# Set CC, C++, LINK to invalid values, so that we realize early, that we use +# the wrong compiler. +CC = bad-cc ; +C++ = bad-c++ ; +LINK = bad-link ; + +# Allow compiling unit tests on Zeta. Instead of fixing the PostMessage() +# issues, they deprecated that nice function. This will enable it again: +C++FLAGS += -D_ZETA_USING_DEPRECATED_API_=1 ; + # TODO: Doesn't really belong here. + + +# Defaults for warnings, optimization, and debugging. +# +WARNINGS ?= 1 ; +OPTIM ?= -O2 ; +DEBUG ?= 0 ; + + +# Set the defaults for PLATFORM and SUPPORTED_PLATFORMS. PLATFORM is only +# overridden for targets to be built for the host platform. SUPPORTED_PLATFORMS +# can be overridden by the author of a component. +PLATFORM = $(TARGET_PLATFORM) ; +SUPPORTED_PLATFORMS = haiku ; + + +# Instructs the Library rule to not make its object files temporary. +# This is needed as some objects are used in a static library and for an +# executable. +KEEPOBJS = true ; + + +# output directories +# TODO: Review this. +HAIKU_DOCUMENTATION_DIR ?= [ FDirName $(HAIKU_OUTPUT_DIR) documentation ] ; +HAIKU_DOCUMENTATION_OBJECT_DIR ?= [ FDirName $(HAIKU_COMMON_PLATFORM_DIR) + documentation ] ; + +# TODO: Rethink test stuff. +HAIKU_TEST_DIR ?= [ FDirName $(HAIKU_OUTPUT_DIR) tests ] ; +HAIKU_APP_TEST_DIR ?= [ FDirName $(HAIKU_TEST_DIR) apps ] ; +HAIKU_APP_TEST_LIB_DIR ?= [ FDirName $(HAIKU_APP_TEST_DIR) lib ] ; +HAIKU_TMP_DIR ?= [ FDirName $(HAIKU_OUTPUT_DIR) tmp ] ; + +HAIKU_PACKAGE_DIR ?= [ FDirName $(HAIKU_OUTPUT_DIR) packages ] ; +HAIKU_PACKAGE_OBJECT_DIR ?= [ FDirName $(HAIKU_OBJECT_DIR) packages ] ; + +# automatically setup the objects directory per subdirectory +SUBDIRRULES += SetupObjectsDir ; + +# Add the standard (userland) warning flags variables to the ones restored in +# every subdirectory. Thus we can easily meddle with them in subdirectories +# with imported sources. +AUTO_SET_UP_CONFIG_VARIABLES += + HOST_WARNING_CCFLAGS HOST_WARNING_C++FLAGS + TARGET_WARNING_CCFLAGS TARGET_WARNING_C++FLAGS + + # also add PLATFORM and SUPPORTED_PLATFORMS + PLATFORM SUPPORTED_PLATFORMS +; diff --git a/build/jam/ConfigRules b/build/jam/ConfigRules new file mode 100644 index 0000000000..6e9429852a --- /dev/null +++ b/build/jam/ConfigRules @@ -0,0 +1,168 @@ +# ConfigRules +# +# Contains rules providing the config variable feature. It allows to set the +# values for certain variables for subdirectories in a central place. That is +# one can, for instance, specify in a file like UserBuildConfig for which +# directories to enable debugging, warnings, set special defines, compiler +# flags and the like without needing to edit the Jamfiles for the respective +# dirs. + +rule ConfigObject +{ + # ConfigObject [ : ] ; + # + # Private rule. Returns the dummy object on which the config variables are + # set for a given subdir. + # + # : Parameters as passed to the SubDir rule, i.e. the name of the + # TOP variable and the subdir tokens. + # + local config = $(2:E=__config__) ; + local grist = [ FGrist root $(1) ] ; + return $(config:G=$(grist)) ; +} + +rule SetConfigVar +{ + # SetConfigVar : : [ : ] ; + # + # Sets a config variable for a specified directory to the given value. + # + # : The name of the variable to be set. + # : Parameters as passed to the SubDir rule, i.e. the name of the + # TOP variable and the subdir tokens. + # : The value to which the variable shall be set. + # : Either "global" or "local". The former implies that the variable + # value shall also be used for subdirectories (recursively), if + # for them the variable has not been set. The latter has the same + # effect regarding subdirs as if the variable for the directory + # is not set. Defaults to "global". + # + local var = $(1[1]) ; + local config = [ ConfigObject $(2) ] ; + local scope = $(4:E=global) ; + + $(var) on $(config) = $(3) ; + __set_$(var) on $(config) = $(scope) ; + + if $(scope) = global { + $(var) on [ ConfigObject $(2) : __inherited_config__ ] = $(3) ; + } + + if ! [ on $(config) return $(__configured) ] { + __configured on $(config) = true ; + __dir_tokens on $(config) = $(2) ; + + HAIKU_EXISTING_SUBDIR_CONFIGS += $(config) ; + } +} + +rule AppendToConfigVar +{ + # AppendToConfigVar : : [ : ] ; + # + # Appends a value to a config variable for a specified directory. Shortcut + # for + # SetConfigVar : : [ ConfigVar : ] ; + # + # : The name of the variable to be set. + # : Parameters as passed to the SubDir rule, i.e. the name of the + # TOP variable and the subdir tokens. + # : The value which to append to the variables current value. + # : Either "global" or "local". The former implies that the variable + # value shall also be used for subdirectories (recursively), if + # for them the variable has not been set. The latter has the same + # effect regarding subdirs as if the variable for the directory + # is not set. Defaults to "global". + # + SetConfigVar $(1) : $(2) : [ ConfigVar $(1) : $(2) ] $(3) : $(4) ; +} + +rule ConfigVar +{ + # ConfigVar : [ : ] ; + # + # Returns the value of a configuration variable for a given subdir. + # If the variable is not set for the subdir, the rule is invoked + # recursively for the parent directory with the scope "global". When + # the root is reached without yielding a value, the value of the global + # variable is returned. + # + # : The name of the variable whose value shall be returned. + # : Parameters as passed to the SubDir rule, i.e. the name of the + # TOP variable and the subdir tokens. + # : If not given any scope passed to SetConfigVar for the given + # directory will be accepted, otherwise it must match the scope + # passed to SetConfigVar. + # + local var = $(1[1]) ; + local dir = $(2) ; + local config = [ ConfigObject $(dir) ] ; + local scope = $(3) ; + local varScope = [ on $(config) return $(__set_$(var)) ] ; + if ( ! $(scope) && $(varScope) ) + || ( $(scope) && $(scope) = $(varScope) ) + || ! $(dir) { + on $(config) return $($(var)) ; + } else { + dir = [ FReverse $(dir) ] ; + return [ ConfigVar $(var) : [ FReverse $(dir[2-]) ] : global ] ; + } +} + +rule PrepareSubDirConfigVariables +{ + local dirTokens = $(1) ; + local config = [ ConfigObject $(dirTokens) ] ; + + if ! [ on $(config) return $(__prepared) ] { + # prepare config for parent dir + local parentDir = [ FReverse $(dirTokens) ] ; + parentDir = [ FReverse $(parentDir[2-]) ] ; + PrepareSubDirConfigVariables $(parentDir) ; + + # set values for all config variables for the config and the inherited + # config for this directory + local inheritedConfig = [ ConfigObject $(dirTokens) + : __inherited_config__ ] ; + + on [ ConfigObject $(parentDir) : __inherited_config__ ] { + for var in $(AUTO_SET_UP_CONFIG_VARIABLES) { + $(var) on $(config) ?= $($(var)) ; + $(var) on $(inheritedConfig) ?= $($(var)) ; + } + } + + HAIKU_INHERITED_SUBDIR_CONFIG on $(config) = $(inheritedConfig) ; + + __prepared on $(config) = true ; + } +} + +rule PrepareConfigVariables +{ + # initialize variables on the root config and the root inherited config + # objects to the global values + local rootConfig = [ ConfigObject ] ; # the root config object + local inheritedRootConfig = [ ConfigObject : __inherited_config__ ] ; + + for var in $(AUTO_SET_UP_CONFIG_VARIABLES) { + $(var) on $(rootConfig) = $($(var)) ; + $(var) on $(inheritedRootConfig) = $($(var)) ; + } + __prepared on $(rootConfig) = true ; + + HAIKU_INHERITED_SUBDIR_CONFIG = $(rootConfig) ; + + local config ; + for config in $(HAIKU_EXISTING_SUBDIR_CONFIGS) { + PrepareSubDirConfigVariables [ on $(config) return $(__dir_tokens) ] ; + } +} + +# Some config variables that should be set up automatically for subdirs. +AUTO_SET_UP_CONFIG_VARIABLES += + CCFLAGS C++FLAGS DEBUG DEFINES HDRS LINKFLAGS OPTIM OPTIMIZE + SYSHDRS WARNINGS +; diff --git a/build/jam/DocumentationRules b/build/jam/DocumentationRules new file mode 100644 index 0000000000..d838e3ff54 --- /dev/null +++ b/build/jam/DocumentationRules @@ -0,0 +1,72 @@ +rule Man2Doc +{ + local source = [ FGristFiles $(2) ] ; + local binary = $(1) ; + + SEARCH on $(source) = $(SEARCH_SOURCE) ; + + MakeLocate $(binary) + : [ FDirName $(HAIKU_DOCUMENTATION_OBJECT_DIR) Shell_Tools ] ; + + Depends $(binary) : $(source) rman ; + + LocalDepends doc_files : $(binary) ; + Man2Doc1 $(binary) : rman $(source) ; + LocalClean clean : $(binary) ; +} + +actions Man2Doc1 +{ + $(2[1]) -f XML "$(2[2])" > "$(1)" ; +} + +rule Man2Docs +{ + # Man2Docs ; + local source ; + for source in [ FGristFiles $(1) ] + { + local target = $(source:S=.xml) ; + + Man2Doc $(target) : $(source) ; + } +} + +XSLTPROC ?= xsltproc ; + +rule Doc2HTML +{ + local source = [ FGristFiles $(1) ] ; + local target = $(2) ; + local xslsheet = $(3) ; + local basedir = [ FDirName $(HAIKU_DOCUMENTATION_DIR) $(4) ] ; + local paths = $(5) ; + local options = $(6) ; + + if ! $(target) { + target = $(1:S=.html) ; + } + + SEARCH on $(source) = $(SEARCH_SOURCE) ; + + MakeLocate $(target) : $(basedir) ; + if $(2) { + XSLBASEDIR on $(target) = -stringparam base.dir \"$(basedir)/\" ; + } + XSLSHEET on $(target) = $(xslsheet) ; + XSLOPTIONS on $(target) = $(options) ; + if $(2) = "" { + XSLOUTPUT on $(target) = "-o "\"$(target:D=$(basedir))\" ; + } + + Depends $(target) : $(source) ; + LocalDepends doc_files : $(target) ; + XSLPROCPATHS on $(target) = -path \" $(paths:J=\ ) \" ; + Doc2HTML1 $(target) : $(source) ; + LocalClean clean : $(target) ; +} + +actions Doc2HTML1 +{ + $(XSLTPROC) -xinclude $(XSLPROCPATHS) $(XSLBASEDIR) $(XSLOPTIONS) $(XSLOUTPUT) $(XSLSHEET) $(2) +} diff --git a/build/jam/FileRules b/build/jam/FileRules new file mode 100644 index 0000000000..ce7c32693a --- /dev/null +++ b/build/jam/FileRules @@ -0,0 +1,219 @@ +rule SymLink +{ + # SymLink : : ; + # Links to . + # is the exact link contents. No binding is done. + # If true, will be made a dependency + # of the `all' pseudo target, i.e. it will be made by default, and removed + # on `jam clean'. + + local target = $(1) ; + local source = $(2) ; + local makeDefaultDependencies = $(3) ; + if ! $(makeDefaultDependencies) { + makeDefaultDependencies = true ; + } + LINKCONTENTS on $(target) = $(source) ; + SymLink1 $(target) ; + if $(makeDefaultDependencies) = true { + LocalDepends files : $(target) ; + LocalClean clean : $(target) ; + } +} + +actions SymLink1 +{ + $(RM) "$(1)" && $(LN) -s "$(LINKCONTENTS)" "$(1)" +} + +rule RelSymLink +{ + # RelSymLink : : ; + # Creates a relative symbolic link from to . + # and can be usual targets. They may have a grist + # and don't need to have any dirname. Their LOCATE variables are used to + # find their locations. + # If true (which is the default), will be + # made a dependency of the `files' pseudo target, i.e. it will be made by + # default, and removed on `jam clean'. + + local target = $(1) ; + local source = $(2) ; + local makeDefaultDependencies = $(3) ; + local targetDir = [ on $(target) FDirName $(LOCATE[1]) $(target:D) ] ; + local sourceDir = [ on $(source) FDirName $(LOCATE[1]) $(source:D) ] ; + local sourcePath = $(source:G=) ; + sourcePath = $(sourcePath:D=$(sourceDir)) ; + local targetDirComponents = [ FSplitPath $(targetDir) ] ; + local sourceComponents = [ FSplitPath $(sourcePath) ] ; + + SymLink $(target) + : [ FRelPath $(targetDirComponents) : $(sourceComponents) ] + : $(makeDefaultDependencies) ; + NOUPDATE $(target) ; + Depends $(target) : $(source) ; +} + +rule AbsSymLink +{ + # AbsSymLink : : + # : ; + # Creates an absolute symbolic link from to . + # and must be usual targets. If is + # given, then it is set as LOCATE directory on . + # If true (which is the default), will be + # made a dependency of the `files' pseudo target, i.e. it will be made by + # default, and removed on `jam clean'. + + local makeDefaultDependencies = $(4) ; + if ! $(makeDefaultDependencies) { + makeDefaultDependencies = true ; + } + + Depends $(1) : $(2) ; + if $(3) { + MakeLocate $(1) : $(3) ; + } + SEARCH on $(2) += $(SEARCH_SOURCE) ; + if $(makeDefaultDependencies) = true { + LocalDepends files : $(1) ; + LocalClean clean : $(1) ; + } +} + +actions AbsSymLink +{ + target="$(2)" + case "$target" in + /*) ;; + *) target=`pwd`/"$target";; + esac + $(RM) "$(1)" && $(LN) -s "$target" "$(1)" +} + +rule HaikuInstall +{ + # Usage: HaikuInstall <[ install [ and uninstall ] pseudotarget ]> + # : : + # : [ ] : [ ] ; + local install = $(1[1]) ; + install ?= install ; + local uninstall = $(1[2]) ; + uninstall ?= un$(install) ; + local dir = $(2) ; + local sources = $(3) ; + local installgrist = $(4) ; + installgrist ?= $(INSTALLGRIST) ; + local installRule = $(5) ; + installRule ?= Install ; + local targets = $(sources:G=$(installgrist)) ; + + NotFile $(install) ; + NotFile $(uninstall) ; + Depends $(install) : $(targets) ; + Clean $(uninstall) : $(targets) ; + + SEARCH on $(sources) += $(SEARCH_SOURCE) ; + MakeLocate $(targets) : $(dir) ; + + local source ; + for source in $(sources) { + local target = $(source:G=$(installgrist)) ; + + Depends $(target) : $(source) ; + $(installRule) $(target) : $(source) ; + + if [ on $(target) return $(MODE) ] { + Chmod $(target) ; + } + + if $(OWNER) && $(CHOWN) { + Chown $(target) ; + OWNER on $(target) = $(OWNER) ; + } + + if $(GROUP) && $(CHGRP) { + Chgrp $(target) ; + GROUP on $(target) = $(GROUP) ; + } + } +} + +rule InstallAbsSymLinkAdapter +{ + # InstallAbsSymLinkAdapter : + if ! [ on $(2) return $(TARGET) ] { + TARGET on $(2) = [ on $(2) return $(SEARCH) ] ; + } + AbsSymLink $(1) : $(2) : : false ; +} + +rule HaikuInstallAbsSymLink +{ + # Usage: HaikuInstallAbsSymLink <[ install [ and uninstall ] pseudotarget ]> + # : : + # : [ ] ; + HaikuInstall $(1) : $(2) : $(3) : $(4) : InstallAbsSymLinkAdapter ; +} + +rule InstallRelSymLinkAdapter +{ + # InstallRelSymLinkAdapter : + if ! [ on $(2) return $(TARGET) ] { + TARGET on $(2) = [ on $(2) return $(SEARCH) ] ; + } + RelSymLink $(1) : $(2) : false ; +} + +rule HaikuInstallRelSymLink +{ + # Usage: HaikuInstallRelSymLink <[ install [ and uninstall ] pseudotarget ]> + # : : + # : [ ] ; + HaikuInstall $(1) : $(2) : $(3) : $(4) : InstallRelSymLinkAdapter ; +} + + +rule UnarchiveObjects +{ + # UnarchiveObjects : + + MakeLocateArch $(1) ; + Depends $(1) : $(2) ; + SEARCH on $(2) = $(SEARCH_SOURCE) ; +} + +actions UnarchiveObjects +{ + ( cd $(1[1]:D) && $(TARGET_AR) $(TARGET_UNARFLAGS) "$(2)" $(1:BS) ) +} + + +rule ObjectReference +{ + # ObjectReference : + # Makes refer to the same file as . + # The filenames must of course be identical. + # must have already been LOCATEd. + + local ref = $(1) ; + local source = $(2) ; + if $(ref) != $(source) { + Depends $(ref) : $(source) ; + LOCATE on $(ref) = [ on $(source) return $(LOCATE) ] ; + } +} + +rule ObjectReferences +{ + # ObjectReferences + # Creates local references to , i.e. identifiers with the + # current grist referring to the same files. must have + # already been LOCATEd. + + local source ; + for source in $(1) { + ObjectReference [ FGristFiles $(source) ] : $(source) ; + } +} + diff --git a/build/jam/FreetypeRules b/build/jam/FreetypeRules new file mode 100644 index 0000000000..1eed2714dc --- /dev/null +++ b/build/jam/FreetypeRules @@ -0,0 +1,85 @@ +#------------------------------------------------------------------------------- +# FreeType 2 specific rules and variables +#------------------------------------------------------------------------------- + +FT2_INCLUDE = [ FDirName $(HAIKU_TOP) headers libs freetype2 ] ; +FT2_SRC = [ FDirName $(HAIKU_TOP) src libs freetype2 ] ; + +FT2_LIB = freetype ; + +FT2_COMPONENTS ?= gzip # support for gzip-compressed files. + autohint # auto-hinter + autofit + base # base component (public APIs) + bdf # BDF font driver + cache # cache sub-system + cff # CFF/CEF font driver + cid # Postscript CID-keyed font driver + lzw # LZW routines + otvalid + pcf # PCF font driver + pfr # PFR/TrueDoc font driver + psaux # Common Postscript routines module + pshinter # Postscript hinter module + psnames # Postscript names handling + raster # Monochrome rasterizer + smooth # Anti-aliased rasterizer + sfnt # SFNT-based format support routines + truetype # TrueType font driver + type1 # Postscript Type 1 font driver + type42 # Postscript Type 42 (embedded TrueType) driver + winfonts # Windows FON/FNT font driver + ; + +rule UseFreeTypeHeaders +{ + SubDirSysHdrs $(FT2_INCLUDE) ; +} + +rule UseFreeTypeObjectHeaders +{ + # UseFreeTypeObjectHeaders [ : ] ; + SourceSysHdrs $(1) : $(FT2_INCLUDE) : $(2) ; +} + +rule FT2_SubDir +{ + # FT2_SubDir + # : Components of a directory in the original hierarchy. + local dir = $(1) ; + local topDir ; + switch $(dir[1]) + { + case "include" : topDir = $(FT2_INCLUDE) ; + case src : topDir = $(FT2_SRC) ; + case * : ECHO "Unknown FreeType2 directory: " $(dir) ; + } + return [ FDirName $(topDir) $(dir[2-]) ] ; +} + +rule FT2_Library +{ + # FT2_Library : + # Builds objects from sources and adds the objects to the list of objects + # to be linked into the library. + # The name of the library. + # The sources. + + local library = lib$(1).so ; + local sources = $(2) ; + + Objects $(sources) ; + LIBRARY_OBJECTS on $(library) += [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; +} + +rule FT2_LinkLibrary +{ + # FT2_LinkLibrary + # Links the library from the objects build with FT2_LIBRARY before. + + local library = lib$(1).so ; + local objects = [ on $(library) return $(LIBRARY_OBJECTS) ] ; + ObjectReferences $(objects) ; + objects = [ FGristFiles $(objects) ] ; + SharedLibraryFromObjects $(library) : $(objects) ; +} diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage new file mode 100644 index 0000000000..a3c3257412 --- /dev/null +++ b/build/jam/HaikuImage @@ -0,0 +1,303 @@ + +# create directories that will remain empty +AddDirectoryToHaikuImage home Desktop ; +AddDirectoryToHaikuImage var log ; +AddDirectoryToHaikuImage var tmp ; + +# TODO: Remove the variables we don't need. +BEOS_BIN = touch sync ln listarea listattr listsem listport + true false ls df mount unmount cp mv ps sh mkdir sleep + grep cat less clockconfig du rm date find locate xargs + isvolume shutdown safemode sysinfo kill diff cmp + renice rmattr addattr listdev pwd chmod chown chgrp dd + tee md5sum catattr query lsindex mkindex roster listimage + quit open translate setvolume waitfor uname iroster keymap + strace rmdir error ifconfig ping traceroute arp pppconfig + ppp_up gdb tail head zip unzip mountvolume top finddir groups + id env basename factor tty dstcheck comm modifiers version + csplit cut beep screen_blanker fortune play eject uptime sed gawk mimeset + dirname +; + +BEOS_APPS = MiniTerminal Terminal Expander People ShowImage Clock Pulse + Playground SoundRecorder BitmapDrawing Magnify DiskProbe AboutHaiku + StyledEdit CDPlayer +; +BEOS_PREFERENCES = Backgrounds DataTranslations FileTypes Fonts Media Menu + Mouse Keyboard Keymap Screen ScrollBar Sounds Time VirtualMemory + Workspaces ScreenSaver +; +BEOS_SYSTEM_LIB = libbe.so libstdc++.r4.so libnet.so libmedia.so libtracker.so + libtranslation.so libbind.so libnetapi.so libsocket.so libdebug.so + libtextencoding.so libz.so libfreetype.so libpng.so libappserver.so + libdevice.so libgame.so libscreensaver.so libroot.so +; +BEOS_SYSTEM_SERVERS = registrar debug_server syslog_daemon media_server + media_addon_server input_server app_server fake_app_server +; + +BEOS_NETWORK_CORE = core ; +BEOS_NETWORK_INTERFACES = ethernet loopback ppp ; +BEOS_NETWORK_PPP = ipcp modem pap pppoe ; +BEOS_NETWORK_PROTOCOLS = icmp ipv4 raw route tcp udp ; + +BEOS_ADD_ONS_ACCELERANTS = radeon.accelerant nv.accelerant mga.accelerant + nm.accelerant vesa.accelerant +; +BEOS_ADD_ONS_TRANSLATORS = STXTTranslator RTF-Translator PNGTranslator + JPEGTranslator GIFTranslator +; +BEOS_ADD_ONS_MEDIA = mixer.media_addon legacy.media_addon + multi_audio.media_addon +; +BEOS_ADD_ONS_MEDIA_PLUGINS = aiff_reader avcodec mp3_decoder musepack + raw_decoder wav_reader mov_reader au_reader avi_reader mp3_reader ogg + speex vorbis + # ac3_decoder theora matroska +; +BEOS_ADD_ONS_INPUT = keyboard mouse canna screen_saver ; +BEOS_ADD_ONS_SCREENSAVERS = Haiku ; +BEOS_ADD_ONS_DRIVERS_AUDIO = ich_ac97 auvia emuxki ; +BEOS_ADD_ONS_DRIVERS_GRAPHICS = radeon.driver nv.driver nm.driver mga.driver + vesa +; +BEOS_ADD_ONS_DRIVERS_MISC = keyboard scsi_dsk scsi_cd dprintf null zero random + ps2_hid tty console config +; +BEOS_ADD_ONS_DRIVERS_NET = ipro1000 rtl8139 rtl8169 sis900 + via-rhine wb840 net_stack_driver + # bcm440x bcm570x (only available with GPLd add-ons) +; +BEOS_ADD_ONS_BUS_MANAGERS = pci isa ide scsi config_manager ; +BEOS_ADD_ONS_KERNEL_MISC = ide_isa generic_ide_pci block_io fast_log + ide_adapter locked_pool scsi_periph intel keyboard vga_text +; +BEOS_ADD_ONS_FILESYSTEMS = bfs ; +BEOS_DATA_FILES = timezone_files keymap_files ; + + +# modules +AddFilesToHaikuImage beos system add-ons kernel bus_managers + : $(BEOS_ADD_ONS_BUS_MANAGERS) ; +AddFilesToHaikuImage beos system add-ons kernel busses ide + : generic_ide_pci ide_isa ; +AddFilesToHaikuImage beos system add-ons kernel console : vga_text ; +AddFilesToHaikuImage beos system add-ons kernel file_systems : bfs ; +AddFilesToHaikuImage beos system add-ons kernel generic + : block_io fast_log ide_adapter locked_pool scsi_periph ; +AddFilesToHaikuImage beos system add-ons kernel partitioning_systems : intel ; + +# drivers +AddDriversToHaikuImage : console dprintf keyboard null random + tty zero ; +AddDriversToHaikuImage audio multi : $(BEOS_ADD_ONS_DRIVERS_AUDIO) ; +AddDriversToHaikuImage disk scsi : scsi_cd scsi_dsk ; +AddDriversToHaikuImage graphics : $(BEOS_ADD_ONS_DRIVERS_GRAPHICS) ; +AddDriversToHaikuImage input : ps2_hid ; +AddDriversToHaikuImage misc : config ; +AddDriversToHaikuImage net : $(BEOS_ADD_ONS_DRIVERS_NET) ; + +# kernel +AddFilesToHaikuImage beos system : kernel_$(TARGET_ARCH) ; + +# libs +AddFilesToHaikuImage beos system lib : $(BEOS_SYSTEM_LIB) rld.so ; + +# servers +AddFilesToHaikuImage beos system servers : $(BEOS_SYSTEM_SERVERS) ; + +# apps +AddFilesToHaikuImage beos : Deskbar Tracker ; +AddFilesToHaikuImage beos bin : $(BEOS_BIN) consoled route ; +AddFilesToHaikuImage beos apps : $(BEOS_APPS) ; +AddFilesToHaikuImage beos preferences : $(BEOS_PREFERENCES) ; + +AddSymlinkToHaikuImage beos bin : more : less ; + + +# scripts and data files +local bootScripts = Bootscript SetupEnvironment Netscript ; +SEARCH on $(bootScripts) = [ FDirName $(HAIKU_TOP) data system boot ] ; +AddFilesToHaikuImage beos system boot : $(bootScripts) ; + +# TODO: Use data/etc/termcap or src/libs/termcap.src? +local etcFiles = fortunes profile termcap ; +etcFiles = $(etcFiles:G=etc) ; +SEARCH on $(etcFiles) = [ FDirName $(HAIKU_TOP) data etc ] ; +AddFilesToHaikuImage beos etc : $(etcFiles) ; + +local fontDir = [ FDirName $(HAIKU_TOP) data etc fonts ] ; +local psFonts = [ Glob $(fontDir)/psfonts : *.afm *.pfb ] ; +local ttFonts = [ Glob $(fontDir)/ttfonts : *.ttf ] ; +AddFilesToHaikuImage beos etc fonts psfonts : $(psFonts) ; +AddFilesToHaikuImage beos etc fonts ttfonts : $(ttFonts) ; + +local kanbeDir = [ FDirName $(HAIKU_TOP) data etc KanBe ] ; +local kanbeDefault = [ Glob $(kanbeDir)/default : *.canna *.gz ] ; +local kanbeDic = [ Glob $(kanbeDir)/dic : *.cbp ] ; +local kanbeDicCanna = [ Glob $(kanbeDir)/dic/canna + : *.cld *.ctd *.cbd *.dir ] ; +AddFilesToHaikuImage beos etc KanBe default : $(kanbeDefault) ; +AddFilesToHaikuImage beos etc KanBe dic : $(kanbeDic) ; +AddFilesToHaikuImage beos etc KanBe dic canna : $(kanbeDicCanna) ; +AddDirectoryToHaikuImage beos etc KanBe dic group ; +AddDirectoryToHaikuImage beos etc KanBe dic user ; + +# TODO: We must get rid of this earlier or later. +# +# if [ -e /boot/beos/etc/fonts/ttfonts/Swiss721.ttf ]; then +# $cp ${sPrefix}/boot/beos/etc/fonts/ttfonts/Courier10Pitch.ttf $targetDir/beos/etc/fonts/ttfonts/ +# $cp ${sPrefix}/boot/beos/etc/fonts/ttfonts/Swiss721_Bold.ttf $targetDir/beos/etc/fonts/ttfonts/ +# $cp ${sPrefix}/boot/beos/etc/fonts/ttfonts/Swiss721.ttf $targetDir/beos/etc/fonts/ttfonts/ +# fi + +local libnetFiles = networks protocols resolv.conf services ; +libnetFiles = $(libnetFiles:G=libnet-files) ; +SEARCH on $(libnetFiles) = [ FDirName $(HAIKU_TOP) src kits network libnet ] ; +AddFilesToHaikuImage beos etc : $(libnetFiles) ; + +local keymapFiles = [ GLOB $(SUBDIR) : *.keymap ] ; +keymapFiles = $(keymapFiles:BG=keymap) ; +AddFilesToHaikuImage beos etc Keymap : $(libnetFiles) ; + +local timezones = [ FTimeZoneBinaries $(HAIKU_TIME_ZONE_SOURCES) : : true ] ; +for timezone in $(timezones) { + local dir = [ on $(timezone) return $(RELATIVE_TIMEZONE_DIR) ] ; + AddFilesToHaikuImage beos etc timezones $(dir) : $(timezone) ; +} + +local driverSettingsFiles = kernel ; +SEARCH on $(driverSettingsFiles) + = [ FDirName $(HAIKU_TOP) data settings kernel drivers ] ; +AddFilesToHaikuImage home config settings kernel drivers + : $(driverSettingsFiles) ; +# TODO: This looks like it belongs to someones UserBuildConfig. +# if [ -e data/settings/kernel/drivers/vesa ]; then +# $cp ${sPrefix}data/settings/kernel/drivers/vesa \ +# $targetDir/home/config/settings/kernel/drivers/ +# fi + +AddSymlinkToHaikuImage home config settings + : /boot/beos/etc/timezones/Europe/Paris : timezone ; + +AddFilesToHaikuImage home config settings kernel drivers + : US-International : Key_map ; + +# boot loader +AddFilesToHaikuImage beos system : zbeos ; + +# boot module links +AddBootModuleSymlinks config_manager bfs block_io fast_log generic_ide_pci isa + ide ide_adapter ide_isa intel locked_pool pci scsi scsi_cd scsi_dsk + scsi_periph +; + +# add-ons +AddFilesToHaikuImage beos system add-ons accelerants + : $(BEOS_ADD_ONS_ACCELERANTS) ; +AddFilesToHaikuImage beos system add-ons Translators + : $(BEOS_ADD_ONS_TRANSLATORS) ; +AddFilesToHaikuImage beos system add-ons media : $(BEOS_ADD_ONS_MEDIA) ; +AddFilesToHaikuImage beos system add-ons media plugins + : $(BEOS_ADD_ONS_MEDIA_PLUGINS) ; +AddFilesToHaikuImage beos system add-ons input_server devices + : keyboard mouse ; +AddFilesToHaikuImage beos system add-ons input_server filters : screen_saver ; +AddFilesToHaikuImage beos system add-ons input_server methods : canna ; +AddFilesToHaikuImage beos system add-ons kernel network + : $(BEOS_NETWORK_CORE) ; +AddFilesToHaikuImage beos system add-ons kernel network interfaces + : $(BEOS_NETWORK_INTERFACES) ; +AddFilesToHaikuImage beos system add-ons kernel network ppp + : $(BEOS_NETWORK_PPP) ; +AddFilesToHaikuImage beos system add-ons kernel network protocols + : $(BEOS_NETWORK_PROTOCOLS) ; +AddFilesToHaikuImage beos system add-ons Screen\ Savers + : $(BEOS_ADD_ONS_SCREENSAVERS) ; + + +#pragma mark - + +# Set image name and directory defaults and locate the image. +HAIKU_IMAGE_NAME ?= haiku.image ; +HAIKU_IMAGE_DIR ?= $(HAIKU_OUTPUT_DIR) ; +HAIKU_IMAGE ?= $(HAIKU_IMAGE_NAME) ; +HAIKU_IMAGE_SIZE ?= 80 ; # 80 MB +MakeLocate $(HAIKU_IMAGE) : $(HAIKU_IMAGE_DIR) ; + +# Set the default installation directory. +HAIKU_INSTALL_DIR ?= /haiku ; + +# the pseudo target all image contents is attached to +NotFile haiku-image-contents ; + +# prepare the script that initializes the shell variables +HAIKU_IMAGE_INIT_VARIABLES_SCRIPT = 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) : addBuildCompatibilityLibDir + : $(HOST_ADD_BUILD_COMPATIBILITY_LIB_DIR) ; +AddTargetVariableToScript $(script) : bfs_shell : bfsShell ; +AddTargetVariableToScript $(script) : fs_shell_command : fsShellCommand ; +AddTargetVariableToScript $(script) : copyattr ; +AddTargetVariableToScript $(script) : makebootable ; +AddTargetVariableToScript $(script) : rc ; +AddTargetVariableToScript $(script) : resattr ; +#AddTargetVariableToScript $(script) : $(HAIKU_IMAGE) : imagePath ; + # causes a cyclic dependency +AddVariableToScript $(script) : imagePath + : [ FDirName $(HAIKU_IMAGE_DIR) $(HAIKU_IMAGE_NAME) ] ; + +# create the other scripts +HAIKU_IMAGE_MAKE_DIRS_SCRIPT = haiku.image-make-dirs ; +HAIKU_IMAGE_COPY_FILES_SCRIPT = haiku.image-copy-files ; +MakeLocate $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) $(HAIKU_IMAGE_COPY_FILES_SCRIPT) + : $(HAIKU_OUTPUT_DIR) ; + +CreateHaikuImageMakeDirectoriesScript $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) ; +CreateHaikuImageCopyFilesScript $(HAIKU_IMAGE_COPY_FILES_SCRIPT) ; + +# Convenience wrapper rule around BuildHaikuImage. +rule _BuildHaikuImage +{ + # _BuildHaikuImage : ; + # + local image = $(1) ; + local isImage = $(2) ; + + # 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_LATE_USER_SCRIPTS) + : $(isImage) + ; + + # remove the scripts we have generated + RmTemps $(image) : + $(HAIKU_IMAGE_INIT_VARIABLES_SCRIPT) + $(HAIKU_IMAGE_MAKE_DIRS_SCRIPT) + $(HAIKU_IMAGE_COPY_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 ; diff --git a/build/jam/HeadersRules b/build/jam/HeadersRules new file mode 100644 index 0000000000..357cfb109e --- /dev/null +++ b/build/jam/HeadersRules @@ -0,0 +1,358 @@ + +# FSysIncludes ; +# +# Counterpart of FIncludes for system include search paths. +# +#if $(OSPLAT) = X86 { + rule FSysIncludes { return -I$(<) ; } + HDRS_INCLUDES_SEPARATOR = -I- ; +# } else { +# rule FSysIncludes { return "-i "$(<) ; } +# HDRS_INCLUDES_SEPARATOR = -i- ; +# } +# mwcc support commented out + +rule SubDirSysHdrs +{ + # SubDirSysHdrs ; + # + # Adds directories to the system include search paths for the current + # subdirectory. Counterpart of SubDirHdrs which adds non-system include + # search paths. + # + # : The directories to be added to the current subdir's system + # include search paths. + # + SUBDIRSYSHDRS += [ FDirName $(1) ] ; +} + +rule ObjectSysHdrs +{ + # ObjectSysHdrs : : + # + # Adds directories to the system include search paths for the given + # sources or objects. Counterpart of ObjectHdrs which adds non-system + # include search paths. + # + # NOTE: With this incarnation of the Haiku build system this rule doesn't + # need to be invoked *after* the rule that generates the objects anymore. + # Actually it is even encouraged to do that *before*. Same for ObjectHdrs. + # + # : The targets for which to add system include + # search paths. + # : The directories to be added to the given objects' system + # include search paths. + # + + local objects = [ FGristFiles $(1:S=$(SUFOBJ)) ] $(3) ; + local headers = $(2) ; + + local file ; + for file in $(objects) { + on $(file) { + local sysHeaders = $(SYSHDRS) $(headers) ; + SYSHDRS on $(file) = $(sysHeaders) ; + + # reformat ASHDRS and CCHDRS + local fileHeaders = [ FIncludes $(HDRS) ] + $(HDRS_INCLUDES_SEPARATOR) [ FIncludes $(sysHeaders) ] ; + ASHDRS on $(file) = $(fileHeaders) ; + CCHDRS on $(file) = $(fileHeaders) ; + } + } +} + +rule SourceHdrs +{ + # SourceHdrs : [ : ] ; + # + # Is a wrapper for ObjectHdrs, that passes and or, + # if supplied and , and also adjusts HDRSEARCH (not + # done by ObjectHdrs). + + local sources = [ FGristFiles $(1) ] ; + local headers = $(2) ; + local objects = $(3) ; + + ObjectHdrs $(sources) : $(headers) : $(objects) ; + + # Also add the header search dirs to HDRSEARCH. Note, that these dirs + # will be listed after the STDHDRS (if any), but that's better than not + # being listed at all. + HDRSEARCH on $(sources) += $(headers) ; +} + +rule SourceSysHdrs +{ + # SourceSysHdrs : [ : ] ; + # + # Is a wrapper for ObjectSysHdrs, that passes and or, + # if supplied and , and also adjusts HDRSEARCH (not + # done by ObjectSysHdrs). + + local sources = [ FGristFiles $(1) ] ; + local headers = $(2) ; + local objects = $(3) ; + + ObjectSysHdrs $(sources) : $(headers) : $(objects) ; + + # Also add the header search dirs to HDRSEARCH. Note, that these dirs + # will be listed after the STDHDRS (if any), but that's better than not + # being listed at all. + HDRSEARCH on $(sources) += $(headers) ; +} + +rule PublicHeaders +{ + # PublicHeaders + # + # Returns the directory names for the public header dirs identified by + # . + + local list = $(1) ; + local dirs = [ FDirName $(HAIKU_TOP) headers os ] ; + + for i in $(list) { + dirs += [ FDirName $(HAIKU_TOP) headers os $(i) ] ; + } + return $(dirs) ; +} + +rule PrivateHeaders +{ + # PrivateHeaders + # + # Returns the directory names for the private header dirs identified by + # . + + local list = $(1) ; + local dirs ; + for i in $(list) { + dirs += [ FDirName $(HAIKU_TOP) headers private $(i) ] ; + } + return $(dirs) ; +} + +rule LibraryHeaders +{ + # LibraryHeaders + # + # Returns the directory names for the library header dirs identified by + # . + + local list = $(1) ; + local dirs ; + for i in $(list) { + dirs += [ FDirName $(HAIKU_TOP) headers libs $(i) ] ; + } + return $(dirs) ; +} + +rule ArchHeaders +{ + # usage: ArchHeaders ; + # + # specifies the architecture (e.g. x86). + + return [ FDirName $(HAIKU_TOP) headers private kernel arch $(1) ] ; +} + +rule UseHeaders +{ + # UseHeaders [ : ] ; + # + # Adds the C header dirs to the header search + # dirs of the subdirectory. + # If is "true", the dirs are added as system otherwise local + # search dirs. + # NOTE: This rule must be invoked *before* the rule that builds the objects. + + local header ; + if $(2) = true { + for header in $(1) { + SubDirSysHdrs $(header) ; + } + } else { + for header in $(1) { + SubDirHdrs $(header) ; + } + } +} + +rule UsePublicHeaders +{ + # UsePublicHeaders ; + # + # Adds the public C header dirs given by to the header search + # dirs of the subdirectory. + # NOTE: This rule must be invoked *before* the rule that builds the + # objects. + + UseHeaders [ PublicHeaders $(1) ] : true ; +} + +rule UsePublicObjectHeaders +{ + # UsePublicObjectHeaders : [ : ] ; + # + # Adds the public C header dirs given by to the header search + # dirs of either the object targets of or if supplied to + # . Also adjusts HDRSEARCH of . + # NOTE: This rule must be invoked *after* the rule that builds the objects. + + SourceSysHdrs $(1) : [ PublicHeaders $(2) ] : $(3) ; +} + +rule UsePrivateHeaders +{ + # UsePrivateHeaders [ : ] ; + # + # Adds the private C header dirs given by to the header search + # dirs of the subdirectory. + # specifies whether to add the dirs as system or local header + # search dirs. Defaults to "true". + # NOTE: This rule must be invoked *before* the rule that builds the objects. + + local system = $(2) ; + system ?= true ; + + UseHeaders [ PrivateHeaders $(1) ] : $(system) ; +} + +rule UsePrivateObjectHeaders +{ + # UsePrivateObjectHeaders : [ : + # [ : ] ] ; + # + # Adds the private C header dirs given by to the header search + # dirs of either the object targets of or if supplied to + # . Also adjusts HDRSEARCH of . + # specifies whether to add the dirs as system or local header + # search dirs. Defaults to "true". + # NOTE: This rule must be invoked *after* the rule that builds the objects. + + local system = $(4) ; + system ?= true ; + + if $(system) = true { + SourceSysHdrs $(1) : [ PrivateHeaders $(2) ] : $(3) ; + } else { + SourceHdrs $(1) : [ PrivateHeaders $(2) ] : $(3) ; + } +} + +rule UseCppUnitHeaders +{ + SubDirSysHdrs [ FDirName $(HAIKU_TOP) headers tools cppunit ] ; +} + +rule UseCppUnitObjectHeaders +{ + # UseCppUnitObjectHeaders [ : ] ; + SourceSysHdrs $(1) : [ FDirName $(HAIKU_TOP) headers tools cppunit ] + : $(2) ; +} + +rule UseArchHeaders +{ + # usage: UseArchHeaders ; + # + # specifies the architecture (e.g. x86). + # NOTE: This rule must be invoked *before* the rule that builds the objects. + + local headers = [ ArchHeaders $(1) ] ; + + UseHeaders $(headers) : true ; +} + +rule UseArchObjectHeaders +{ + # usage: UseArchObjectHeaders : : [ ] ; + # + # specifies the architecture (e.g. x86). + # Source or object files. + # NOTE: This rule must be invoked *after* the rule that builds the objects. + + local sources = $(1) ; + local headers = [ ArchHeaders $(2) ] ; + local objects = $(3) ; + local targets ; + if $(objects) { + targets = $(objects) ; + } else { + targets = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ; + } + + SourceSysHdrs $(sources) : $(headers) : $(objects) ; +} + +rule UsePosixObjectHeaders +{ + # UsePosixObjectHeaders [ : ] ; + # + # Adds the POSIX header dir to the header search + # dirs of either the object targets of or if supplied to + # . Also adjusts HDRSEARCH of . + # NOTE: This rule must be invoked *after* the rule that builds the objects. + + SourceSysHdrs $(1) : [ FDirName $(HAIKU_TOP) headers posix ] : $(2) ; +} + +rule UseLibraryHeaders +{ + # UseLibraryHeaders ; + # + # Adds the library header dirs given by to the header search + # dirs of the subdirectory. + # NOTE: This rule must be invoked *before* the rule that builds the objects. + + UseHeaders [ LibraryHeaders $(1) ] : true ; +} + +rule FStandardOSHeaders +{ + local osIncludes = add-ons add-ons/file_system add-ons/graphics + add-ons/input_server add-ons/screen_saver + add-ons/tracker app device drivers game interface + kernel media mail midi midi2 net opengl storage support + translation ; + + return [ PublicHeaders $(osIncludes) ] ; +} + +rule FStandardHeaders +{ + local osIncludes = add-ons add-ons/file_system add-ons/graphics + add-ons/input_server add-ons/screen_saver + add-ons/tracker app device drivers game interface + kernel media mail midi midi2 net opengl storage support + translation ; + + # Use headers directory, to allow to do things like include + local headers = [ FDirName $(HAIKU_TOP) headers ] ; + + # Use posix headers directory + headers += [ FDirName $(HAIKU_TOP) headers posix ] ; + + # Use GNU headers directory + headers += [ FDirName $(HAIKU_TOP) headers gnu ] ; + + # Use glibc headers + headers += [ FDirName $(HAIKU_TOP) headers glibc ] ; + + headers += [ FDirName $(HAIKU_TOP) headers cpp ] ; + + # Use public OS header directories + headers += [ PublicHeaders $(osIncludes) ] ; + + # Use the root of the private headers -- not so nice, but simplifies things. + headers += [ PrivateHeaders $(DOT) ] ; + + # The platform (compiler actually) dependent headers. + headers += $(HAIKU_GCC_HEADERS_DIR) ; + + return $(headers) ; +} + +# SUBDIRSYSHDRS shall be reset automatically for each subdir +SUBDIRRESET += SYSHDRS ; diff --git a/build/jam/HelperRules b/build/jam/HelperRules new file mode 100644 index 0000000000..3967cc91ae --- /dev/null +++ b/build/jam/HelperRules @@ -0,0 +1,248 @@ +# Rules without side effects. + +# Vanilla Jam compatibility +if ! $(INVOCATION_SUBDIR_SET) { + rule FIsPrefix + { + # FIsPrefix : ; + # Returns true, if list is a prefix (a proper one or equal) of + # list , an empty list otherwise. + local a = $(1) ; + local b = $(2) ; + while $(a) && $(a[1]) = $(b[1]) { + a = $(a[2-]) ; + b = $(b[2-]) ; + } + + if $(a) { + return ; + } else { + return true ; + } + } + + rule LocalClean { Clean $(1) : $(2) ; } + + rule LocalDepends { Depends $(1) : $(2) ; } + +} # vanilla Jam compatibility + +rule FFilter +{ + # FFilter : ; + # Removes all occurrences of in . + + local list = $(1) ; + local excludes = $(2) ; + local newList ; + local item ; + for item in $(list) { + local skip ; + local exclude ; + for exclude in $(excludes) { + if $(item) = $(exclude) { + skip = true ; + } + } + if ! $(skip) { + newList += $(item) ; + } + } + return $(newList) ; +} + +rule FSplitPath +{ + # SplitPath ; + # Decomposes a path into its components. + local path = $(1:G=) ; + local components ; + # $(path:D) for "/" is "/". Therefore the second condition. + while $(path:D) && $(path:D) != $(path) + { + # Note: $(path:B) returns "." for "..", but $(path:D=) is fine. + components = $(path:D=) $(components) ; + path = $(path:D) ; + } + components = $(path) $(components) ; + return $(components) ; +} + +rule FTimeZoneBinaries +{ + local sources = $(1:G=timezone-source) ; + local locate = $(2) ; + local setRelativeTimezoneDir = $(3) ; + + local gristedBinaries ; + + local source ; + for source in $(sources) { + local binaries = [ on $(source) return $(TZ_OBJECTS) ] ; + + local targetDir = [ FDirName $(TARGET_COMMON_DEBUG_OBJECT_DIR) + data etc timezones ] ; + + local binary ; + for binary in $(binaries) { + local dir = $(binary:D) ; + if $(dir) { + binary = $(binary:BSG=timezone!$(dir)) ; + if $(locate) { + LOCATE on $(binary) = [ FDirName $(targetDir) $(dir) ] ; + } + } else { + binary = $(binary:BSG=timezone) ; + if $(locate) { + LOCATE on $(binary) = $(targetDir) ; + } + } + + if $(setRelativeTimezoneDir) { + RELATIVE_TIMEZONE_DIR on $(binary) = $(dir) ; + } + + gristedBinaries += $(binary) ; + } + } + + return $(gristedBinaries) ; +} + + +rule SetPlatformCompatibilityFlagVariables +{ + # SetPlatformCompatibilityFlagVariables : + # : [ : other platforms ] ; + + local platformVar = $(1) ; + local platform = $($(platformVar)) ; + local varPrefix = $(2) ; + local platformKind = $(3) ; + local otherPlatforms = $(4) ; + + if ! $(platform) { + ECHO "Variable $(platformVar) not set. Please run ./configure or" ; + EXIT "specify it manually." ; + } + + $(varPrefix)_PLATFORM_BEOS_COMPATIBLE = ; + $(varPrefix)_PLATFORM_BONE_COMPATIBLE = ; + $(varPrefix)_PLATFORM_DANO_COMPATIBLE = ; + $(varPrefix)_PLATFORM_HAIKU_COMPATIBLE = ; + + switch $(platform) + { + case r5 : + { + $(varPrefix)_PLATFORM_BEOS_COMPATIBLE = true ; + } + + case bone : + { + $(varPrefix)_PLATFORM_BONE_COMPATIBLE = true ; + } + + case dano : + { + $(varPrefix)_PLATFORM_DANO_COMPATIBLE = true ; + } + + case haiku : + { + $(varPrefix)_PLATFORM_HAIKU_COMPATIBLE = true ; + } + + case * : + { + if ! ( $(platform) in $(otherPlatforms) ) { + Exit Unsupported $(platformKind) platform: $(platform) ; + } + } + } + + # set lesser flags, e.g. "DANO" for "HAIKU" and "BEOS" for "BONE" + $(varPrefix)_PLATFORM_DANO_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_HAIKU_COMPATIBLE) ; + $(varPrefix)_PLATFORM_BONE_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_DANO_COMPATIBLE) ; + $(varPrefix)_PLATFORM_BEOS_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_BONE_COMPATIBLE) ; + + # set the machine friendly flags + $(varPrefix)_PLATFORM_(haiku)_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_HAIKU_COMPATIBLE) ; + $(varPrefix)_PLATFORM_(dano)_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_DANO_COMPATIBLE) ; + $(varPrefix)_PLATFORM_(bone)_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_BONE_COMPATIBLE) ; + $(varPrefix)_PLATFORM_(r5)_COMPATIBLE + ?= $($(varPrefix)_PLATFORM_BEOS_COMPATIBLE) ; +} + + +#pragma mark - + +rule SetPlatformForTarget +{ + # SetPlatformForTarget : ; + + PLATFORM on $(1) = $(2) ; +} + +rule SetSubDirPlatform +{ + # SetSubDirPlatform ; + + PLATFORM = $(1) ; +} + +rule SetSupportedPlatformsForTarget +{ + # SetSupportedPlatformsForTarget : ; + + SUPPORTED_PLATFORMS on $(1) = $(2) ; +} + +rule SetSubDirSupportedPlatforms +{ + # SetSubDirSupportedPlatforms ; + + SUPPORTED_PLATFORMS = $(1) ; +} + +rule SetSubDirSupportedPlatformsBeOSCompatible +{ + # SetSubDirSupportedPlatformsBeOSCompatible ; + + SUPPORTED_PLATFORMS = $(HAIKU_BEOS_COMPATIBLE_PLATFORMS) ; +} + +rule IsPlatformSupportedForTarget +{ + # IsPlatformSupportedForTarget [ : ] + # + + on $(1) { + if $(PLATFORM) in $(SUPPORTED_PLATFORMS) { + return true ; + } else { + return ; + } + } +} + +rule InheritPlatform +{ + # InheritPlatform : ; + # PLATFORM and SUPPORTED_PLATFORMS are set on to their value + # on . + # + local children = $(1) ; + local parent = $(2) ; + + on $(parent) { + PLATFORM on $(children) = $(PLATFORM) ; + SUPPORTED_PLATFORMS on $(children) = $(SUPPORTED_PLATFORMS) ; + } +} diff --git a/build/jam/ImageRules b/build/jam/ImageRules new file mode 100644 index 0000000000..d7b4c27ca2 --- /dev/null +++ b/build/jam/ImageRules @@ -0,0 +1,341 @@ +rule FSameTargetWithPrependedGrist +{ + # SameTargetWithPrependedGrist : ; + # + local target = $(1) ; + local gristToPrepend = $(2) ; + local grist = $(target:G) ; + + if $(grist) { + grist = $(gristToPrepend)!$(grist) ; + } else { + grist = $(gristToPrepend) ; + } + + return $(target:G=$(grist)) ; +} + +rule InitScript +{ + # Note: The script must have been LOCATEd before. + local script = $(1) ; + local initScript + = [ FSameTargetWithPrependedGrist $(script) : init-script ] ; + + if ! [ on $(script) return $(__is_initialized) ] { + __is_initialized on $(script) = true ; + + MakeLocate $(initScript) : [ on $(script) return $(LOCATE) ] ; + Always $(initScript) ; + Depends $(script) : $(initScript) ; + + InitScript1 $(initScript) ; + } + + return $(initScript) ; +} + +actions InitScript1 +{ + rm -f $(1) + echo -n > $(1) +} + +rule AddVariableToScript +{ + # AddVariableToScript