diff --git a/build/jam/HaikuImage b/build/jam/HaikuImage index e9a9e90a58..49a2f67672 100644 --- a/build/jam/HaikuImage +++ b/build/jam/HaikuImage @@ -501,6 +501,14 @@ if [ IsOptionalHaikuImagePackageAdded Development ] # cc and c++ wrapper scripts AddFilesToHaikuImage beos bin : cc c++ ; + + # headers + AddHeaderDirectoryToHaikuImage gnu ; + AddHeaderDirectoryToHaikuImage os ; + AddHeaderDirectoryToHaikuImage posix ; + + # make be -> os symlink for now + AddSymlinkToHaikuImage develop headers : /boot/develop/headers/os : be ; } # Vision @@ -596,6 +604,8 @@ AddTargetVariableToScript $(script) : unzip ; AddTargetVariableToScript $(script) : vmdkheader ; AddVariableToScript $(script) : sourceDirsToCopy : $(HAIKU_INSTALL_SOURCE_DIRS) ; +AddVariableToScript $(script) : headerDirsToCopy + : $(HAIKU_INSTALL_HEADER_DIRS) ; # create the other scripts HAIKU_IMAGE_MAKE_DIRS_SCRIPT = haiku.image-make-dirs ; diff --git a/build/jam/ImageRules b/build/jam/ImageRules index 1c79ebb153..d239eb7b9f 100644 --- a/build/jam/ImageRules +++ b/build/jam/ImageRules @@ -58,7 +58,7 @@ rule AddVariableToScript script : variable : value value = $(value[2-]) ; while $(value) { VARIABLE_DEFS on $(script) - += "echo $(variable)+=\\\" $(value[1])\\\" >> " ; + += "echo $(variable)=\\\" \\\$$(variable) $(value[1])\\\" >> " ; value = $(value[2-]) ; } @@ -546,6 +546,17 @@ rule AddSourceDirectoryToHaikuImage dirTokens : alwaysUpdate } } +rule AddHeaderDirectoryToHaikuImage dirTokens : alwaysUpdate +{ + # AddHeaderDirectoryToHaikuImage : ; + + # If the image shall only be updated, we update sources only, if explicitely + # requested. + if ! [ IsUpdateHaikuImageOnly ] || $(alwaysUpdate) { + HAIKU_INSTALL_HEADER_DIRS += [ FDirName $(HAIKU_TOP) headers $(dirTokens) ] ; + } +} + rule UnzipArchiveToHaikuImage dirTokens : zipFile : alwaysUpdate { # UnzipArchiveToHaikuImage : : ; diff --git a/build/scripts/build_haiku_image b/build/scripts/build_haiku_image index bf286954da..e4a3ddb5f9 100755 --- a/build/scripts/build_haiku_image +++ b/build/scripts/build_haiku_image @@ -10,6 +10,7 @@ # imageSize # addBuildCompatibilityLibDir # sourceDirsToCopy +# headerDirsToCopy # updateOnly # dontClearImage # isVMwareImage @@ -212,7 +213,7 @@ if [ $sourcePathPrefix = "." ]; then fi for sourcesDir in ${sourceDirsToCopy}; do - echo " sources dir: ${sourcesDir}" + echo " sources dir: ${sourcesDir}" # create all subdirectories subDirs=$(find ${sourcesDir} -type d | grep -v '.svn' | @@ -229,6 +230,43 @@ for sourcesDir in ${sourceDirsToCopy}; do done +# install headers + +headersDest=${tPrefix}develop + +# create headers directory +if [ -n "${headerDirsToCopy}" ]; then + echo "Installing Haiku Headers ..." + + $mkdir -p ${headersDest} +fi + +# See above (sourceDirs) +sourcePathPrefix=$sourceDir +destPathPrefix=$headersDest +if [ $sourcePathPrefix = "." ]; then + sourcePathPrefix="" + destPathPrefix="${headersDest}/" +fi + +for headersDir in ${headerDirsToCopy}; do + echo " header dir: ${headersDir}" + + # create all subdirectories + subDirs=$(find ${headersDir} -type d | grep -v '.svn' | + sed -e "s@^${sourcePathPrefix}@${destPathPrefix}@") + $mkdir -p ${subDirs} + + # get all files and copy each one individually + headerFiles=$(find $headersDir -type f | grep -v '.svn') + for headerFile in $headerFiles; do + destHeaderFile=$(echo $headerFile | + sed -e "s@^${sourcePathPrefix}@${destPathPrefix}@") + $cp ${sPrefix}$headerFile $destHeaderFile + done +done + + # unmount if [ $isImage ]; then echo "Unmounting ..."