root/haiku/trunk/build/jam/UserBuildConfig.ReadMe

Revision 25078, 12.2 kB (checked in by bonefish, 4 weeks ago)
Added HAIKU_IMAGE_HOST_NAME build system variable. Can be used to set
the host name of the Haiku installation.
Line 
1 # UserBuildConfig ReadMe
2 # ----------------------
3
4 # UserBuildConfig can be used to customize the build according to your needs.
5 # If existent it is included by the build system, but it is ignored by svn.
6 # This file documents a few examples, what can be done. Don't just rename it
7 # to UserBuildConfig -- you don't want all the things to happen, that are
8 # specified here. Rather create an empty UserBuildConfig and copy the lines
9 # you really want, or start out with UserBuildConfig.sample.
10 # Of course, noone reads ReadMe files, so they will just get an error here
11 # when copying it and jamming:
12 Exit You must NOT copy UserBuildConfig.ReadMe directly but use parts of it! ;
13
14
15 # Adding timezone and keymap settings
16 AddSymlinkToHaikuImage home config settings
17         : /boot/beos/etc/timezones/Europe/Paris : timezone ;
18
19 AddFilesToHaikuImage home config settings : <keymap>US-International
20         : Key_map ;
21
22
23 # Adjusting Build Variables
24
25 # The following variables can be configured per subdirectory (or subtree) or
26 # even per object file:
27 #
28 #       CCFLAGS C++FLAGS DEBUG DEFINES HDRS LINKFLAGS OPTIM OPTIMIZE SYSHDRS
29 #       WARNINGS
30 #       HOST_WARNING_CCFLAGS HOST_WARNING_C++FLAGS
31 #       TARGET_WARNING_CCFLAGS TARGET_WARNING_C++FLAGS
32 #       PLATFORM SUPPORTED_PLATFORMS
33 #
34 # The following examples would work analogously for any of these variables.
35
36 # Turn off warnings in directory src/system/kernel. As fourth (scope) parameter
37 # "local" is specified, which means, that this setting applies only to the
38 # given directory, but not any of its subdirectories.
39 SetConfigVar WARNINGS : HAIKU_TOP src system kernel : 0 : local ;
40
41 # Set the debug level for directory src/system/boot/loader and recursively all
42 # of its subdirectories (scope is "global") to 1. All affected generated files
43 # will be put into another subtree of the "generated" directory, which allows
44 # for fast switching between normal and debug builds.
45 SetConfigVar DEBUG : HAIKU_TOP src system boot loader : 1 : global ;
46
47 # Add "RUN_WITHOUT_REGISTRAR" to the DEFINES for the directory src/kits and
48 # all of its subdirectories.
49 AppendToConfigVar DEFINES : HAIKU_TOP src kits : RUN_WITHOUT_REGISTRAR
50         : global ;
51
52 # Set the debug level for file src/bin/gdb/gdb/haiku-nat.c (note, that
53 # the object file must be specified) to 1. It is worth mentioning, that the
54 # executable the object file is linked into (gdb), will still be placed in
55 # generated/objects/.../release/... Only when setting DEBUG for the executable,
56 # too, it will be placed in .../debug_1/.... Apart from that, the DEBUG variable
57 # has no effect on executables or other shared objects.
58 DEBUG on <src!bin!gdb!gdb!>haiku-nat.o = 1 ;
59
60
61 # Haiku Image Related Modifications
62
63 # Create a 100 MB image at /tmp/walter.image.
64 HAIKU_IMAGE_NAME        = walter.image ;
65 HAIKU_IMAGE_DIR         = /tmp ;
66 HAIKU_IMAGE_SIZE        = 100 ;
67
68 # Name the VMWare image walter.vmdk (in directory $(HAIKU_IMAGE_DIR)).
69 HAIKU_VMWARE_IMAGE_NAME = walter.vmdk ;
70
71 # Install Haiku in directory /Haiku.
72 HAIKU_INSTALL_DIR = /Haiku ;
73
74 # If the image does already exist it won't be zeroed out. It will nevertheless
75 # freshly be initialized with BFS. Useful when installing Haiku on a partition.
76 HAIKU_DONT_CLEAR_IMAGE = 1 ;
77
78
79 # Affects the haiku-image, haiku-vmware-image, and install-haiku targets. Only
80 # targets on which the HAIKU_INCLUDE_IN_IMAGE variable has been set will be
81 # updated in the image file/installation directory.
82 # The update-image, update-vmware-image, and update-install targets always invoke
83 # this rule, so one likely doesn't ever need to do it manually.
84 SetUpdateHaikuImageOnly 1 ;
85
86 # libbe.so and the kernel will be updated on image updates. Note that this
87 # generally doesn't work for pseudo targets (it does where special support
88 # has been added, like for "kernel").
89 HAIKU_INCLUDE_IN_IMAGE on libbe.so kernel = 1 ;
90
91 # Add "crashing_app" to the beos/bin directory of the Haiku image/installation.
92 # Note, that this also makes the image depend on the target, i.e. it is
93 # automatically updated when the image is built.
94 AddFilesToHaikuImage beos bin : crashing_app ;
95
96 # Make a symlink to home/config/bin/crash.
97 AddSymlinkToHaikuImage home config bin : /beos/bin/crashing_app : crash ;
98
99 # Adds the source directories src/kits/storage and src/tests/servers/debug
100 # (recursively) to the image (as /boot/home/HaikuSources/src/kits/storage
101 # and /boot/home/HaikuSources/src/tests/servers/debug respectively).
102 # Note that the second directory will also be copied, if the image will only
103 # be updated; the first one won't in that case.
104 AddSourceDirectoryToHaikuImage src/kits/storage ;
105 AddSourceDirectoryToHaikuImage src/tests/servers/debug : 1 ;
106
107 # Copy the jam sources (assuming they are located ../buildtools/jam relatively
108 # to your Haiku sources) to the image as /boot/home/Desktop/jam-src, excluding
109 # any file or directory named ".svn" and any source path that matches the
110 # pattern "*/jam/./bin.*". Note that the "*" character needs to be escaped with
111 # two backslashes (one because it goes through a shell and one to quote the
112 # first one in jam), and that the build system always appends "/." to the source
113 # path (hence this pattern). Just as AddSourceDirectoryToHaikuImage this rule
114 # can also take another optional parameter indicating whether the directory shall
115 # also be copied in update mode.
116 CopyDirectoryToHaikuImage home Desktop
117         : $(HAIKU_TOP)/../buildtools/jam
118         : "jam-src" : -x .svn -X \\*/jam/./bin.\\* ;
119
120 # Unzips the given zip archive onto the image under /boot/develop/tools.
121 UnzipArchiveToHaikuImage develop tools
122         : /home/bonefish/develop/haiku/misc/gcc-2.95.3-beos-070218/gcc-2.95.3_binutils-2.17_rel-070218.zip ;
123
124 # Add the optional package WonderBrush to the image. The package is downloaded
125 # via wget (i.e. wget must be installed).
126 AddOptionalHaikuImagePackages WonderBrush ;
127
128 # Add all available optional packages.
129 HAIKU_ADD_ALL_OPTIONAL_PACKAGES = 1 ;
130
131 # Specify scripts that shall be run when populating the image/installation
132 # directory. The "early" script is run before anything has been copied onto
133 # the image/into the installation directory. The "late" script is run after
134 # everything has been copied, but before the MIME database is installed.
135 HAIKU_IMAGE_EARLY_USER_SCRIPTS  = $(HAIKU_TOP)/../early-image-script.sh ;
136 HAIKU_IMAGE_LATE_USER_SCRIPTS   = $(HAIKU_TOP)/../late-image-script.sh ;
137
138 # Set name and real name of the root user. Defaults to "baron" and "Root User".
139 HAIKU_ROOT_USER_NAME = bond  ;
140 HAIKU_ROOT_USER_REAL_NAME = "James Bond" ;
141
142 # Set host name to "mybox". By default the installation doesn't have a host
143 # name.
144 HAIKU_IMAGE_HOST_NAME = mybox ;
145
146 # Add user "walter" with user ID 1000 and group ID 100 (note, that a group with
147 # that ID should exist -- 100 already exists and is the "users" group), home
148 # directory "/boot/home", shell "/bin/bash", and real name "Just Walter" to the
149 # image.
150 AddUserToHaikuImage walter : 1000 : 100 : /boot/home : /bin/bash
151         : "Just Walter" ;
152
153 # Add group "party" with group ID 101 and members "baron" and "walter" to the
154 # image.
155 AddGroupToHaikuImage party : 101 : baron walter ;
156
157
158 # Build Profiles
159
160 # A build profile is a named set of settings for building a Haiku image or
161 # installation. The following lines define five different build profiles:
162 # disk    - Installation on device /dev/sda57. All optional packages will be
163 #           included. Profile type "disk" implies "HAIKU_DONT_CLEAR_IMAGE = 1".
164 # qemu    - A plain 200 MB disk image (type "image") named "haiku-qemu.image".
165 #           Since only the image name is given, the default location will be
166 #           chosen for the image, unless HAIKU_IMAGE_DIR has been set
167 #           beforehand.
168 # vmware  - A 400 MB VMware image (type "vmware-image"). It will not be zeroed,
169 #           if not necessary. The optional packages Development and Pe will be
170 #           installed. No image name or path is given, so the defaults
171 #            ("haiku.vmdk" in the generated directory) will be used, unless the
172 #           respective variables are set.
173 # crash   - Similar to the vmware profile, but created at a specific location
174 #           and 1 GB size. Furthermore a "crash-tests" directory will be copied
175 #           to the image.
176 # install - Installation in directory "/Haiku2" (type "install").
177
178 DefineBuildProfile disk : disk : "/dev/sda57" ;
179 DefineBuildProfile qemu : image : "haiku-qemu.image" ;
180 DefineBuildProfile vmware : vmware-image ;
181 DefineBuildProfile crash : vmware-image
182         : "/home/foobar/vmware/Virtual Machines/CrashOMatic/CrashOMatic.vmdk" ;
183 DefineBuildProfile install : install : /Haiku2 ;
184
185 switch $(HAIKU_BUILD_PROFILE) {
186         case "disk" : {
187                 HAIKU_ADD_ALL_OPTIONAL_PACKAGES = 1 ;
188         }
189
190         case "qemu" : {
191                 HAIKU_IMAGE_SIZE = 200 ;
192         }
193
194         case "vmware" : {
195                 HAIKU_IMAGE_SIZE = 400 ;
196                 HAIKU_DONT_CLEAR_IMAGE = 1 ;
197                 AddOptionalHaikuImagePackages Development Pe ;
198         }
199
200         case "crash" : {
201                 HAIKU_IMAGE_SIZE = 1024 ;
202                 HAIKU_DONT_CLEAR_IMAGE = 1 ;
203                 AddOptionalHaikuImagePackages Development Pe ;
204                 CopyDirectoryToHaikuImage home Desktop : $(HAIKU_TOP)/../crash-tests ;
205         }
206 }
207
208 # By specifying the build profile name as first (non-option) parameter on the
209 # jam command line prefixed by an "@" character, the profile will be selected.
210 # The second parameter specifies the action to be performed, further optional
211 # parameters may follow. Jam command line examples:
212 #
213 # jam -q @disk build
214 #       -> Equivalent to running "jam -q haiku-image" with the settings for the
215 #      "disk" profile. "build" is the default action, so it could even be
216 #      omitted.
217 # jam -q @vmware update kernel
218 #       -> Equivalent to running "jam -q update-vmware-image kernel" with the
219 #      settings for the "vmware" profile.
220 # jam -q @crash mount
221 #       -> Enters the bfs_shell mounting the image specified by the "crash" profile.
222 #
223 # Note, that the build system will automatically define the build profiles
224 # "image", "vmware-image", and "install", unless they are already defined in
225 # the UserBuildConfig. They correspond to the respective build profile types
226 # and use the values of the variables HAIKU[_VMWARE]_IMAGE_NAME,
227 # HAIKU_IMAGE_DIR, HAIKU_INSTALL_DIR, respectively their default values.
228 # "jam -q @image" will therefore be equivalent to "jam -q haiku-image".
229
230
231 # Creating Sourceable Shell Scripts
232
233 # If you use shell scripts (e.g. for testing) that need to access targets or
234 # build system properties, you can tell the build system to generate a
235 # variables defining shell script you can source from your shell script.
236
237 # General setup for the shell script to generate. Name is test.inc, located
238 # in the output directory.
239 MakeLocate test.inc : $(HAIKU_OUTPUT_DIR) ;
240 Always test.inc ;
241
242 # Define variable "outputDir" in the shell script, with the value of
243 # HAIKU_OUTPUT_DIR.
244 AddVariableToScript test.inc : outputDir : $(HAIKU_OUTPUT_DIR) ;
245
246 # Define variables "bfsShell" and "fsShellCommand" referring to the
247 # generated bfs_shell and fs_shell_command respectively.
248 AddTargetVariableToScript test.inc : bfs_shell : bfsShell ;
249 AddTargetVariableToScript test.inc : fs_shell_command : fsShellCommand ;
250
251 # If no variable name is given, the name (without grist) of the target is
252 # used, i.e. a variable "rc" referring to the rc command built for the host
253 # platform is defined in the script.
254 AddTargetVariableToScript test.inc : <build>rc ;
255
256
257 # Optimizing Jamfile Parsing Times / Third Party Inclusion
258
259 # Setting this variable will prevent the root Jamfile to include the Jamfile
260 # in the src directory. Instead only the directories required for building the
261 # build tools are included. Only useful in combination with DeferredSubInclude.
262 HAIKU_DONT_INCLUDE_SRC = 1 ;
263
264 # Schedule the given subdirectory for inclusion at the end of the root
265 # Jamfile (directly using SubInclude here is not possible). Using this
266 # feature together with HAIKU_DONT_INCLUDE_SRC allows developers working
267 # only on a subproject to reduce Jamfile parsing times considerably.
268 DeferredSubInclude HAIKU_TOP src tests add-ons kernel file_systems
269         userlandfs ;
270
271 # Schedule src/3rdparty/myproject/Jamfile.haiku for later inclusion. The "local"
272 # parameter specifies that the alternative Jamfile name shall not be used for
273 # any subdirectory of the given directory (i.e. "Jamfile" will be used as
274 # usual). Omitting this parameter or specifying "global" will cause the given
275 # name to be used recursively.
276 DeferredSubInclude HAIKU_TOP src 3rdparty myproject : Jamfile.haiku : local ;
277
278
279 # Copy the posix test suite onto the image (or on the installation) into
280 # "home/posixtestsuite" directory, including the run script.
281 HAIKU_ADD_POSIX_TEST_SUITE_TO_IMAGE = 1 ;
Note: See TracBrowser for help on using the browser.