diff --git a/build/jam/ImageRules b/build/jam/ImageRules index bcc11c4c6e..7952068eea 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -989,6 +989,14 @@ rule AddSymlinkToAlternativeGCCArchive directoryTokens : linkTarget : linkName : $(directoryTokens) : $(linkTarget) : $(linkName) ; } +rule CopyDirectoryToAlternativeGCCArchive directoryTokens : sourceDirectory + : targetDirectoryName : excludePatterns : alwaysUpdate +{ + CopyDirectoryToContainer $(HAIKU_ALTERNATIVE_GCC_ARCHIVE_CONTAINER_NAME) + : $(directoryTokens) : $(sourceDirectory) : $(targetDirectoryName) + : $(excludePatterns) : $(alwaysUpdate) ; +} + rule CreateAlternativeGCCArchiveMakeDirectoriesScript script { CreateContainerMakeDirectoriesScript @@ -1018,6 +1026,63 @@ actions BuildAlternativeGCCArchive1 } +#pragma mark - Haiku Hybrid Image rules + + +rule AddFilesToHaikuHybridImage directory : targets : destName + : useABISubDir +{ + # AddFilesToHaikuHybridImage : : + # : + # + # Convenience rule calling both AddFilesToHaikuImage and + # AddFilesToAlternativeGCCArchive. + # + # + # if non-empty, specifies that an ABI subdirectory shall be appended to + # for the alternative GCC archive. + + local alternativeSubDir ; + if $(useABISubDir) { + alternativeSubDir = gcc$(HAIKU_GCC_VERSION[1]) ; + } + + AddFilesToHaikuImage $(directory) : $(targets) : $(destName) ; + AddFilesToAlternativeGCCArchive $(directory) $(alternativeSubDir) + : $(targets) : $(destName) ; +} + +rule AddSymlinkToHaikuHybridImage directoryTokens : linkTarget : linkName + : useSymlinkABISubDir +{ + # AddFilesToHaikuHybridImage : : + # : + # + # Convenience rule calling both AddSymlinkToHaikuImage and + # AddSymlinkToAlternativeGCCArchive. + # + # + # Can be a list of components that will be joined to path inserting + # "/"s inbetween. + # + # If non-empty, specifies that an ABI subdirectory shall be inserted + # into (between the first and second component) for the + # alternative GCC archive. + + local alternativeLinkTarget = $(linkTarget) ; + if $(useSymlinkABISubDir) { + alternativeLinkTarget = $(linkTarget[1]) gcc$(HAIKU_GCC_VERSION[1]) + $(linkTarget[2-]) ; + } + linkTarget = $(linkTarget:J=/) ; + alternativeLinkTarget = $(alternativeLinkTarget:J=/) ; + + AddSymlinkToHaikuImage $(directoryTokens) : $(linkTarget) : $(linkName) ; + AddSymlinkToAlternativeGCCArchive $(directoryTokens) + : $(alternativeLinkTarget) : $(linkName) ; +} + + #pragma mark - Floppy Boot Archive rules