haiku/Jamfile
Ingo Weinhold b0944c78b0 More work towards hybrid support
* 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).
2013-08-01 08:54:06 +02:00

87 lines
2.4 KiB
Plaintext

SubDir HAIKU_TOP ;
NotFile doc_files ;
Depends files : doc_files ;
# Prepare the optional build features before parsing the Jamfile tree.
local architectureObject ;
for architectureObject in [ MultiArchSubDirSetup ] {
on $(architectureObject) {
include [ FDirName $(HAIKU_BUILD_RULES_DIR) BuildFeatures ] ;
}
}
# Include packages that are required by all images.
if ! $(HAIKU_BOOTSTRAP_BUILD) {
AddHaikuImagePackages
bzip2 ctags ffmpeg freetype glu grep icu jpeg libpng libsolv mesa sed
tar zlib
:
system
;
}
# If enabled, make sure that OpenSSL is added to the image.
if $(HAIKU_BUILD_FEATURE_OPENSSL_ENABLED) {
AddHaikuImagePackages openssl ;
}
# Optionally we allow not to include the "src" subdirectory.
if $(HAIKU_DONT_INCLUDE_SRC) {
# Don't include "src", but at least include the stuff needed for the
# build.
SubInclude HAIKU_TOP src build ;
SubInclude HAIKU_TOP src tools ;
} else {
SubInclude HAIKU_TOP src ;
}
if $(HAIKU_INCLUDE_3RDPARTY) {
SubInclude HAIKU_TOP 3rdparty ;
}
# Perform deferred SubIncludes.
ExecuteDeferredSubIncludes ;
# reset subdir
SubDir HAIKU_TOP ;
# Execute post-build-target user config rules.
UserBuildConfigRulePostBuildTargets ;
# specify the Haiku image and network boot archive contents
if $(HAIKU_BOOTSTRAP_BUILD) {
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImageBootstrap ] ;
} else {
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ;
}
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images NetBootArchive ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images FloppyBootImage ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootImage ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images CDBootPPCImage ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuCD ] ;
include [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ;
# Check whether all requested optional packages do actually exist.
local package ;
local packageError ;
for package in $(HAIKU_ADDED_OPTIONAL_PACKAGES) {
if ! [ on $(package) return $(HAIKU_OPTIONAL_PACKAGE_EXISTS) ] {
Echo "ERROR: Requested optional package \"$(package)\" does not"
"exist." ;
packageError = 1 ;
}
}
if $(packageError) {
Exit ;
}
# Pseudo-target to build all targets that are localized.
NotFile LocalizedTargets ;
Depends LocalizedTargets : $(HAIKU_LOCALIZED_TARGETS) ;
NotFile catalogs ;
Depends catalogs : $(HAIKU_LOCALE_CATALOGS) ;
NotFile catkeys ;
Depends catkeys : $(HAIKU_LOCALE_OUTPUT_CATKEYS) ;