if ! [ Match "(.*)-haiku-(.*)" : $(JAMVERSION) ] { Exit "You can only build Haiku with Haiku's Jam, not Perforce Jam or" "some other variant (you are using $(JAMVERSION))." ; } 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 ] ; # Let the target platform depend on the external header directories such # that those will be unpacked before anything is built for the target # platform. Depends $(TARGET_PLATFORM) : [ BuildFeatureAttribute gcc_syslibs_devel : c++-headers ] [ BuildFeatureAttribute gcc_syslibs_devel : gcc-headers ] ; } } # Include required packages: # primary architecture AddHaikuImagePackages [ FFilterByBuildFeatures bash bc coreutils curl freetype icu libsolv zlib zstd regular_image @{ bzip2 ctags diffutils expat ffmpeg findutils gawk glu grep gutenprint gzip ilmbase jasper jpeg less libedit libicns libpcap libpng16 libwebp mesa mesa_devel mesa_swpipe@!gcc2 mesa_swrast@gcc2 netcat openexr sed sharutils tar tcpdump unzip wget which zip }@ ] ; AddHaikuImageSourcePackages [ FFilterByBuildFeatures bash bc coreutils regular_image @{ ctags expat ffmpeg findutils gawk grep gutenprint gzip less libicns sed sharutils tar wget which }@ ] ; if $(HAIKU_PACKAGING_ARCHS[1]) != x86_gcc2 { AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs ] ; } if $(HAIKU_PACKAGING_ARCHS[2]) { # secondary architectures local architectureObject ; for architectureObject in [ MultiArchSubDirSetup $(HAIKU_PACKAGING_ARCHS[2-]) ] { on $(architectureObject) { AddHaikuImagePackages [ FFilterByBuildFeatures curl freetype icu libsolv zlib regular_image @{ ffmpeg glu jasper jpeg libicns libpng16 libwebp mesa }@ ] ; if $(TARGET_PACKAGING_ARCH) != x86_gcc2 { AddHaikuImagePackages [ FFilterByBuildFeatures gcc_syslibs mesa_swpipe ] ; } } } } # If enabled, make sure that OpenSSL is added to the image. if [ FIsBuildFeatureEnabled openssl ] { AddHaikuImagePackages openssl ; } # add additionally requested packages AddHaikuImagePackages $(HAIKU_IMAGE_ADDITIONAL_PACKAGES) ; # 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 repository contents include [ FDirName $(HAIKU_BUILD_RULES_DIR) repositories Haiku ] ; # specify the actual Haiku image contents include [ FDirName $(HAIKU_BUILD_RULES_DIR) images HaikuImage ] ; # specify the additional image contents one for each boot type 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 HaikuCD ] ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) images AnybootImage ] ; include [ FDirName $(HAIKU_BUILD_RULES_DIR) images MMCImage ] ; # 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) ;