* All packaging architecture dependent variables do now have a
respective suffix and are set up for each configured packaging
architecture, save for the kernel and boot loader variables, which
are still only set up for the primary architecture.
For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++,
and TARGET_LIBSTDC++ are set to the respective values for the primary
packaging architecture by default.
* Introduce a set of MultiArch* rules to help with building targets for
multiple packaging architectures. Generally the respective targets are
(additionally) gristed with the packaging architecture. For libraries
the additional grist is usually omitted for the primary architecture
(e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that
Jamfiles for targets built only for the primary architecture don't
need to be changed.
* Add multi-arch build support for all targets needed for the stage 1
cross devel package as well as for libbe (untested).
* Don't handle the bootstrap case in the main Jamfile. Add all bootstrap
packages to the image in the profile definition. That's less
confusing, hopefully.
* Add the missing bootstrap packages (ncurses*, libtool_libltdl). The
would normally be added in build_haiku_image when the package
dependencies are resolved, but we don't do that for the bootstrap
image, since we intentionally leave some dependencies out (e.g. perl)
because they can be built.
Copy:
* packages: Haiku -> HaikuBootstrap
* images: HaikuImage -> HaikuImageBootstrap
... and remove some unncessary content.
Setting the jam variable HAIKU_BOOTSTRAP_BUILD enables using the
bootstrap files.
* Build libsolv and the dependency solver part of the package kit for
the build platform.
* Add build tool get_package_dependencies. Given a list of package files
and a list of repository files it determines the additional packages
that need to be retrieved from the repositories and prints their URLs.
* Add rules to work with external repositories in the build system
(build/jam/RepositoryRules):
- PackageRepository declares an external repository with all its
packages. The URL of the repository file isn't specified. It is
computed from a given base URL and the SHA256 hash of the list of
package files.
- GeneratedRepositoryPackageList generates a file containing the file
names of all packages in a repository.
- IsPackageAvailable returns whether a package is available in any
repository.
- PackageURL returns the URL for a package.
* Declare the HaikuPorts repository for x86_gcc2
(build/jam/repositories/HaikuPorts/x86_gcc2).
* Add rule AddHaikuImagePackages to add a package to the image and rule
IsHaikuImagePackageAdded to determine whether a package has been
added.
* OptionalPackages: Remove all entries that just downloaded and
installed an external package. AddHaikuImagePackages can be used
instead and is used in the remaining entries. Also move the remaining
optional package dependency declarations from
OptionalPackageDependencies here.
* ExtractBuildFeatureArchives: Instead of the URL parameter a package
name must be specified now. This allows to simplify BuildFeatures
significantly, since there's no dealing with URLs anymore. "if" out
the entries that aren't supported yet.
* build_haiku_image: For the packages installed in system and common
resolve their dependencies and download and install them as well.
Got rid of X86_ONLY and friends in HaikuImage, FloppyBootImage, etc.
Instead we use build feature specification annotated lists with
FFilterByBuildFeatures (either explicitly or implicitly where passing
the list directly to the image rules).
I just translated the variables to the respective annotatation in most
cases, though in some cases different annotation would be more correct
(e.g. for the OpenGL stuff).
Provides a simple framework for addressing #3798. The interested reader
may add the build features and add/adjust the annotations accordingly.
Added a temporary Haiku64Image file that gets included instead of
HaikuImage when building for x86_64, which I will add to as I port
stuff. Images currently only include the boot loader, kernel and
a bunch of add-ons.
Several build features (including a future patch for WebKit)
are enabled only if a respective optional package is added.
Prior to this, none of those build features could be activated
in a sub-jam process.
* Make the locale kit a part of libbe.
* Drop the LocaleBackend kludge used from within libbe (and from
other places, too) in order to access system catalog strings.
This is now done via gSystemCatalog, which is provided and initialized
by libbe.
* Drop all references to liblocale.so from all Jamfiles.
* Add legacy symlink liblocale.so in order to keep optional packages
that rely on it in a working state.
TODO: the documentation hasn't been updated.
dependencies. Commented out GLInfo from OpenGLKit as it was removed in r33115.
Added some TODO's for MediaKit and LocaleKit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39230 a95241bf-73f2-0310-859d-f6bbb57e9c96
which builds just the en.catkeys inside HAIKU_OUTPUT_DIR/objects/catalogs
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39130 a95241bf-73f2-0310-859d-f6bbb57e9c96
* removed the catkeys pseudo-target
* created catalogs pseudo-target, which builds all catalogs & en.catkeys(.pre)
* created LocalizedTargets pseudo-target, which builds all targets that have
been localized.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39114 a95241bf-73f2-0310-859d-f6bbb57e9c96
applications. The eventual goal is to have jam package a catkeys.zip,
which can be provided to the application translation websites.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39090 a95241bf-73f2-0310-859d-f6bbb57e9c96
Note this doesn't fix everything yet, apparently there is a problem with ICU genereating an invalid opcode exception.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37512 a95241bf-73f2-0310-859d-f6bbb57e9c96
the haiku-anyboot-image pseudo target. As I'm not too much at home with Jam I'd
appreciate any input. Especially for the TODO where removing the MBR using
RmTemps seems to cause a failure to get it built again every other time.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35668 a95241bf-73f2-0310-859d-f6bbb57e9c96
OptionalPackages. This makes the content definition part in
AlternativeGCCArchive superfluous.
* Moved the cc and c++ wrapper scripts from src/bin to data/bin.
* Added build variable HAIKU_ADD_OPTIONAL_PACKAGES to add optional packages
-- the list can be separated by slashes to allow easier passing through
the shell.
* When invoking the sub-jam that builds the alternative GCC archive, we force
it to ignore the UserBuildConfigs and we enable the optional packages
enabled in the main jam.
* Reorganized /boot/develop:
- There's now an "abi" subdirectory containing a <arch>/<gcc>/ subdirectory
for each installed ABI-incompatible gcc version and a "current" symlink
pointed to the currently selected one.
- All ABI-dependent directories under /boot/develop/ (lib/x86, headers/cpp,
tools/gnupro) symlink into /boot/develop/abi/current.
- Changed BELIBRARIES to contain
/boot/develop/abi/current/library-paths/common instead of /boot/common/lib.
The former is a symlink to either /boot/common/lib or
/boot/common/lib/<gccVersion>. There's also a respective "home" symlink.
- Repackaged the optional binutils+gcc 2/4 packages accordingly. Also fixed
the obsolete /boot/beos/system/lib/libstdc++.so symlink in the gcc 4
package.
- The new structure allows to switch between compilers by changing the
/boot/develop/abi/current symlink. Added script setgcc to do that.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30875 a95241bf-73f2-0310-859d-f6bbb57e9c96
* integrating most of the locale kit into the build (and image)
* removed LocaleBuild.h and _IMPEXP_LOCALE since that does not make
sense for elf (which usually exports all symbols anyway)
* added a couple of locale kit related pseudo targets for convenience
Hey, some of that stuff already seems to work :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30545 a95241bf-73f2-0310-859d-f6bbb57e9c96
build/jam/OptionalPackageDependencies and include it earlier (before the
Jamfiles).
* Introduced build/jam/OptionalBuildFeatures which is supposed to do the setup
for optional build features that need it.
* Renamed USE_SSL to HAIKU_BUILD_FEATURE_SSL and made it more intelligent.
The OpenSSL optional package is downloaded and unzipped automatically when
enabled. Switching between enabled/disabled HAIKU_BUILD_FEATURE_SSL is
handled gracefully -- the concerned components are built in separate
subdirectories. Adding the OpenSSL optional package to the image also enables
HAIKU_BUILD_FEATURE_SSL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30021 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Check the first argument for "help" as well. If given print a somewhat
helpful text. Consider this my excuse to close ticket #1883. :-)
* Track available and added optional packages and fail, if an optional package
is requested that doesn't exist. Closes ticket #3332.
* Check for duplicate build profile definitions and fail if encountered.
Closes ticket #3333.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29298 a95241bf-73f2-0310-859d-f6bbb57e9c96
clean yet. Provides a haiku-cd target and creates a bootable image using mkisofs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29203 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added additional parameters to DeferredSubInclude. It's now possible
to specify an alternative Jamfile name.
* Added DeferredSubInclude example to UserBuildConfig.ReadMe showing the
new feature.
* Moved ExecuteDeferredSubIncludes in the root Jamfile before the
inclusion of HaikuImage, NetBootArchive etc., so that targets defined
in the subdirectories are already known there.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24680 a95241bf-73f2-0310-859d-f6bbb57e9c96
Currently it's optional, you must define HAIKU_INCLUDE_3RDPARTY in [User]BuildConfig.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23408 a95241bf-73f2-0310-859d-f6bbb57e9c96
work on arbitrary "containers". The image rules are just
specializations.
* Added rules, a definition file (build/jam/NetBootArchive), and a shell
script for creating a gzipped tar archive containing kernel and modules
required for network booting (the contents may need some fine-tuning).
ATM it can be built via the haiku-netboot-archive pseudo target. It is
generated in the output directory (e.g. "generated").
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21591 a95241bf-73f2-0310-859d-f6bbb57e9c96
relevant for the image creation.
* The CopySetHaikuRevision propagates the value of the
HAIKU_INCLUDE_IN_IMAGE variable from the source to the target.
* Propagate the value of HAIKU_INCLUDE_IN_IMAGE from "kernel" to
"kernel_$(TARGET_ARCH)".
Now "jam update-install kernel" should work as expected.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21527 a95241bf-73f2-0310-859d-f6bbb57e9c96
turn off the inclusion of src/Jamfile, and the rule DeferredSubInclude to
include a subdirectory in UserBuildConfig. Together they allow a developer
working on a subproject to reduce jam's parsing time when only building the
subproject. Relevant mostly on BeOS; on Linux jam is pretty fast anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20321 a95241bf-73f2-0310-859d-f6bbb57e9c96
Add a MailKit pseudo-target to build the whole mail kit simply.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9130 a95241bf-73f2-0310-859d-f6bbb57e9c96