-The biggest problem with linking host libraries (libbe_build and libroot_build) was not having the source files compiled with the -fPIC flag. As far as I can tell, we want to do this on all of the other host platforms as well, so hacked the jam files a bit to add it.
Forgive me if I've committed more Jamfile sins.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21423 a95241bf-73f2-0310-859d-f6bbb57e9c96
compatibility relation to the official Haiku distribution. "official"
is for the official Haiku distribution itself, "compatible" for Haiku
Compatible (tm) distros, and "default" for all others (the default value
for the option). The build system variable HAIKU_DISTRO_COMPATIBILITY is
defined accordingly, and one of the
HAIKU_DISTRO_COMPATIBILITY_{OFFICIAL,COMPATIBLE,DEFAULT} macros is
defined for source code and rdefs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21177 a95241bf-73f2-0310-859d-f6bbb57e9c96
building on Mac OS X (Darwin). A problem with makebootable remains.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21165 a95241bf-73f2-0310-859d-f6bbb57e9c96
platforms. Funny that it still isn't the default, anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21083 a95241bf-73f2-0310-859d-f6bbb57e9c96
xattrs. It can be enabled with the configure switch "--use-xattr". Note
that the amount of data stored in attributes may be limited by the used
file system -- e.g. AFAIK ext3 has a limit of one block (usually 4 KB)
for all attributes of a file, which might not suffice. XFS should be
fine, as should ReiserFS 3.6 (or any FS which stores attributes in
hidden files).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20609 a95241bf-73f2-0310-859d-f6bbb57e9c96
with image files. E.g.
jam -q update-image libbe.so kernel_x86
will only build libbe.so and the kernel (if necessary) and copy them
onto the already existing Haiku image. The MIME DB will not be
reinstalled, and only those source directories will be copied for which
the AddSourceDirectoryToHaikuImage rule is given a second argument
(e.g. "1"). The image will otherwise remain unchanged.
The "update-vmware-image" and "update-install" work similarly for the
VMWare image and the directory installation respectively. Note that, due
to the way the VMWare image is created (prepending a header to the
standard image), the file itself is fully rebuilt, i.e. changes made
during the emulation will be lost after updating the VMWare image.
The feature requires Haiku's jam. With other jam versions a similar
effect can be reached by accordingly setting the HAIKU_IMAGE_UPDATE_ONLY
and HAIKU_INCLUDE_IN_IMAGE in the UserBuildConfig file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20602 a95241bf-73f2-0310-859d-f6bbb57e9c96
line to jam that contains build targets and that will be executed by
the build system after building the targets and replacing their
occurrences in the command line by their paths. The keyword indicating
such a command line is "run", targets are marked by a leading ":".
E.g.:
jam -q run ':<build>xres' -l :libtracker.so
This builds the xres tool for the host platform and libtracker.so for
Haiku, and afterwards lists the resources libtracker.so contains. Note,
that this feature requires using Haiku's jam version.
The functionality is implemented by the new RunCommandLine rule, which
can, of course, also be used in the UserBuildConfig.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20598 a95241bf-73f2-0310-859d-f6bbb57e9c96
again for target libbe_test. Added respective syscall stubs and other functions
to libhaikucompat.a.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20447 a95241bf-73f2-0310-859d-f6bbb57e9c96
directory, the build system root directory, or the "src" directory is
now using the "haiku-image" target instead. The variable
HAIKU_ORIGINAL_JAM_TARGETS is set to the original JAM_TARGETS value, so
that a UserBuildConfig can base its decisions on it.
The feature is only available with Haiku's jam version.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20194 a95241bf-73f2-0310-859d-f6bbb57e9c96
build Haiku. Uncomment it to define "-pipe" which may speed up your build process
a bit if you have enough memory (it's about 25% faster on a test case over here
with BeOS).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20015 a95241bf-73f2-0310-859d-f6bbb57e9c96
automatically for all BeOS compatible target platforms but Haiku. This should
allow more Haiku code to build for BeOS.
Disclaimer: I couldn't really test it, since my BeOS working tree is switched
to my layout branch and under Linux I obviously can't test building for BeOS.
So, if you have complaints, keep them to yourself and just fix the problem.
;-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18372 a95241bf-73f2-0310-859d-f6bbb57e9c96
{HAIKU,HOST,TARGET}_KERNEL_PIC_{CC,LINK}FLAGS which define the
compiler/linker flags specifying the kind of position independence
the kernel shall have. For x86 we had and still have -fno-pic, but the
PPC kernel has -fPIE (position independent executable) now, as we
need to relocate it.
* The boot loader relocates the kernel now. Mostly copied the relocation
code from the kernel ELF loader. Almost completely rewrote the PPC
specific relocation code, though. It's more correct and more complete now
(some things are still missing though).
* Added boot platform awareness to the kernel. Moved the generic
Open Firmware code (openfirmware.c/h) from the boot loader to the kernel.
* The kernel PPC serial debug output is sent to the console for the time
being.
* The PPC boot loader counts the CPUs now and allocates the kernel stacks
(made OF device iteration a bit more flexible on the way -- the search
can be restricted to subtree). Furthermore we really enter the kernel...
(Yay! :-) ... and crash in the first dprintf() (in the atomic_set()
called by acquire_spinlock()). kprintf() works, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15756 a95241bf-73f2-0310-859d-f6bbb57e9c96
effect that we were linking not only against the complete glue code, but
also against libroot.so. Now we explicitly link against
crtbegin.o/crtend.o only.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15545 a95241bf-73f2-0310-859d-f6bbb57e9c96
provides it via BuildConfig. We link everything against it.
* Temporarily pass --no-undefined to the linker. Should be in the
compiler specs, but isn't in the gcc 4 I built.
* Define _BEOS_R5_COMPATIBLE_ macro when building with gcc 2. Can be
used in headers for instance.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14913 a95241bf-73f2-0310-859d-f6bbb57e9c96
we use the libstdc++ (including it's headers) that comes with the
compiler.
* Apparently option "-I-" has been deprecated, which is why we now treat the
include stuff a bit differently.
* Removed avcodec from the Haiku image, since the library wouldn't build with
gcc 4, and I'm not in the mood to fix that (declaration of an array of an
incomplete type).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14876 a95241bf-73f2-0310-859d-f6bbb57e9c96
a few whether they actually work.
New pseudo target "unittests", which builds all unit tests for the currently
set TARGET_PLATFORM. They are placed in generated/tests/<platform>/unittests.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14791 a95241bf-73f2-0310-859d-f6bbb57e9c96
Library names are now mapped for all targets but "host" (not only for
"haiku") -- added one more level of indirection to achieve that.
(TARGET_LIBRARY_NAME_MAP -> *_LIBRARY_NAME_MAP_*).
* Renamed build/HaikuBuildCompatibility.h to BeOSBuildCompatibility.h
(auto-included when compiling something that uses the Be API for platform
"host" on anon-BeOS platform), and introduced build/HaikuBuildCompatibility.h,
which can be included when compiling something that can be built for both,
Haiku and BeOS compatible platforms.
* Introduced libhaikucompat.a, a library that adds a few functions existing
under Haiku, but not under BeOS.
* New rule AddSubDirSupportedPlatforms.
* Renamed libopenbeos.so to libbe_haiku.so.
* Introduced new target platform "libbe_test", which is basically equivalent
to a BeOS compatible host platform target, with the exception, that instead
of the host platform's libbe.so a special build of Haiku's libbe.so
(libbe_haiku.so (formerly known as libopenbeos.so)) is used. Furthermore
Haiku's public app, interface, storage, and support kit headers are used
when compiling. This replaces the less nice way in which the test app server
and applications for this test environment were built.
When building for platform "libbe_test", the library name "be" is
autotranslated to "libbe_haiku.so". Thus most applications don't need
special fiddling when them building them for the app server test environment;
usually an "AddSubDirSupportedPlatforms libbe_test ;" will suffice.
* Reduced the dependencies of <syscalls.h> and fixed problems caused by this
(e.g. source files not including the needed headers directly).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14749 a95241bf-73f2-0310-859d-f6bbb57e9c96