diff --git a/build/jam/BuildFeatures b/build/jam/BuildFeatures index fe5aa8b4f5..940d171fe9 100644 --- a/build/jam/BuildFeatures +++ b/build/jam/BuildFeatures @@ -264,21 +264,24 @@ if $(TARGET_ARCH) = x86 { # GLU (GL Utilities) if $(TARGET_ARCH) = x86 { if $(HAIKU_GCC_VERSION[1]) >= 4 { - HAIKU_GLU_FILE = glu-9.0-x86-gcc4-2012-11-13.zip ; + # TODO:... + HAIKU_GLU_PACKAGE = glu-9.0-x86-gcc4-2012-11-13.zip ; } else { - HAIKU_GLU_FILE = glu-9.0-x86-gcc2-2012-11-13.zip ; + HAIKU_GLU_PACKAGE = glu-9.0.0-1-x86_gcc2.hpkg ; + HAIKU_GLU_DEVEL_PACKAGE = glu_devel-9.0.0-1-x86_gcc2.hpkg ; } - local zipFile = [ DownloadFile $(HAIKU_GLU_FILE) - : $(baseURL)/lib/$(HAIKU_GLU_FILE) ] ; + HAIKU_GLU_URL = $(hpkgBaseURL)/$(HAIKU_GLU_PACKAGE) ; + HAIKU_GLU_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_GLU_DEVEL_PACKAGE) ; - HAIKU_GLU_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) - $(HAIKU_GLU_FILE:B) ] ; - HAIKU_GLU_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_GLU_DIR) - : develop/headers/os/opengl/GL : $(zipFile) : extracted-glu-headers ] ; - HAIKU_GLU_LIBS = [ ExtractArchive $(HAIKU_GLU_DIR) - : system/lib/libGLU.a : $(zipFile) : extracted-glu ] ; - HAIKU_GLU_HEADERS = [ FDirName $(HAIKU_GLU_DIR) develop headers os opengl ] ; + ExtractBuildFeatureArchives glu : + file: base $(HAIKU_GLU_URL) + runtime: lib + file: devel $(HAIKU_GLU_DEVEL_URL) + depends: base + library: develop/lib/libGLU.so + headers: develop/headers + ; EnableBuildFeatures glu ; } else { @@ -290,64 +293,37 @@ if $(TARGET_ARCH) = x86 { if $(TARGET_ARCH) = x86 { local zipFile ; if $(HAIKU_GCC_VERSION[1]) >= 4 { - HAIKU_MESA_FILE = mesa-9.1.1-x86-gcc4-2013-04-27.zip ; + # TODO:... + HAIKU_MESA_PACKAGE = mesa-9.1.1-x86-gcc4-2013-04-27.zip ; } else { - HAIKU_MESA_FILE = mesa-7.8.2-x86-gcc2-2013-04-28.zip ; + HAIKU_MESA_PACKAGE = mesa-7.8.2-3-x86_gcc2.hpkg ; + HAIKU_MESA_DEVEL_PACKAGE = mesa_devel-7.8.2-3-x86_gcc2.hpkg ; } - zipFile = [ DownloadFile $(HAIKU_MESA_FILE) - : $(baseURL)/$(HAIKU_MESA_FILE) ] ; + HAIKU_MESA_URL = $(hpkgBaseURL)/$(HAIKU_MESA_PACKAGE) ; + HAIKU_MESA_DEVEL_URL = $(hpkgBaseURL)/$(HAIKU_MESA_DEVEL_PACKAGE) ; - HAIKU_MESA_DIR = [ FDirName $(HAIKU_OPTIONAL_BUILD_PACKAGES_DIR) - $(HAIKU_MESA_FILE:B) ] ; + ExtractBuildFeatureArchives mesa : [ FFilterByBuildFeatures + file: devel $(HAIKU_MESA_DEVEL_URL) + mesaLibrary: develop/lib/libmesa.a + glapiLibrary: develop/lib/libglapi.a + headers: develop/headers + privateHeaders: develop/headers/mesa_private - HAIKU_MESA_HEADERS = [ FDirName $(HAIKU_MESA_DIR) include ] ; - HAIKU_MESA_HEADERS_DEPENDENCY = [ ExtractArchive $(HAIKU_MESA_DIR) - : include/ : $(zipFile) : extracted-mesa ] ; + !gcc2 @{ + glslLibrary: develop/lib/libglsl.a + galliumLibrary: develop/lib/libgallium.a + llvm @{ + galliumLlvmpipeLibrary: develop/lib/libllvmpipe.a + }@ + !llvm @{ + galliumSoftpipeLibrary: develop/lib/libsoftpipe.a + }@ + }@ # !gcc2 + ] ; - # Base Mesa libraries - HAIKU_MESA_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) - : - lib.haiku/libmesa.a - : $(zipFile) - : extracted-mesa ] ; - HAIKU_GLAPI_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) - : - lib.haiku/libglapi.a - : $(zipFile) - : extracted-mesa ] ; - - Depends $(HAIKU_MESA_HEADERS_DEPENDENCY) : $(HAIKU_GLU_HEADERS_DEPENDENCY) ; - Depends $(HAIKU_GLAPI_LIBS) : $(HAIKU_GLU_LIBS) ; - - # Extended Mesa libraries for newer versions - if $(HAIKU_GCC_VERSION[1]) >= 4 { - HAIKU_GLSL_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) - : - lib.haiku/libglsl.a - : $(zipFile) - : extracted-mesa ] ; - HAIKU_GALLIUM_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) - : - lib.haiku/libgallium.a - : $(zipFile) - : extracted-mesa ] ; - - if FIsBuildFeatureEnabled(llvm) { - HAIKU_GALLIUM_LLVMPIPE_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) - : - lib.haiku/libllvmpipe.a - : $(zipFile) - : extracted-mesa ] ; - Depends $(HAIKU_GALLIUM_LLVMPIPE_LIB) : $(HAIKU_LLVM_LIBS) ; - } else { - HAIKU_GALLIUM_SOFTPIPE_LIB = [ ExtractArchive $(HAIKU_MESA_DIR) - : - lib.haiku/libsoftpipe.a - : $(zipFile) - : extracted-mesa ] ; - } - } + Depends [ BuildFeatureAttribute mesa : galliumLlvmpipeLibrary ] + : $(HAIKU_LLVM_LIBS) ; EnableBuildFeatures mesa ; } else { diff --git a/build/jam/OptionalPackageDependencies b/build/jam/OptionalPackageDependencies index 31bfa7376c..779bb2dc62 100644 --- a/build/jam/OptionalPackageDependencies +++ b/build/jam/OptionalPackageDependencies @@ -11,7 +11,8 @@ OptionalPackageDependencies Caya : Expat ; OptionalPackageDependencies CDRecord : GetTextLibintl LibIconv ; OptionalPackageDependencies Curl : OpenSSL ; OptionalPackageDependencies DevelopmentBase : CDRecord DevelopmentMin Yasm ; -OptionalPackageDependencies Development : DevelopmentBase Perl Zlib-devel ; +OptionalPackageDependencies Development + : DevelopmentBase GLU-devel Perl Zlib-devel ; OptionalPackageDependencies DevelopmentPowerPC : DevelopmentMin ; OptionalPackageDependencies GetText : GetTextLibintl ; OptionalPackageDependencies GetTextLibintl : LibIconv ; @@ -45,4 +46,4 @@ OptionalPackageDependencies XZ-Utils : Tar ; OptionalPackageDependencies Zlib-devel : Zlib ; OptionalPackageDependencies MandatoryPackages - : Bzip Ctags Grep ICU LibSolv Sed Tar Zlib ; + : Bzip Ctags GLU Grep ICU LibSolv Mesa Sed Tar Zlib ; diff --git a/build/jam/OptionalPackages b/build/jam/OptionalPackages index a22e9d34fe..96caf6a104 100644 --- a/build/jam/OptionalPackages +++ b/build/jam/OptionalPackages @@ -49,6 +49,8 @@ # GetTextLibintl - GetText's libintl # Git - the distributed version control system # GitDoc - documentation for the distributed version control system +# GLU - OpenGL Utilities +# GLU-devel - GLU development files # GPerf - the perfect hash function generator. # Grep - program to search for strings inside a file # Groff - text formatter used for man pages @@ -959,6 +961,30 @@ if [ IsOptionalHaikuImagePackageAdded GitDoc ] { } +# GLU +if [ IsOptionalHaikuImagePackageAdded GLU ] { + if $(TARGET_ARCH) = x86 { + InstallOptionalHaikuImagePackage + $(hpkgBaseURL)/$(HAIKU_GLU_URL) + : system ; + } else { + Echo "No optional package GLU available for $(TARGET_ARCH)" ; + } +} + + +# GLU-devel +if [ IsOptionalHaikuImagePackageAdded GLU-devel ] { + if $(TARGET_ARCH) = x86 { + InstallOptionalHaikuImagePackage + $(hpkgBaseURL)/$(HAIKU_GLU_DEVEL_PACKAGE) + : system ; + } else { + Echo "No optional package GLU-devel available for $(TARGET_ARCH)" ; + } +} + + # GPerf if [ IsOptionalHaikuImagePackageAdded GPerf ] { if $(TARGET_ARCH) = x86 { @@ -1294,6 +1320,16 @@ if [ IsOptionalHaikuImagePackageAdded Mercurial ] { } +# Mesa +if [ IsOptionalHaikuImagePackageAdded Mesa ] { + if $(TARGET_ARCH) = x86 { + InstallOptionalHaikuImagePackage $(HAIKU_MESA_URL) : system ; + } else { + Echo "No optional package Mesa available for $(TARGET_ARCH)" ; + } +} + + # Nano if [ IsOptionalHaikuImagePackageAdded Nano ] { if $(TARGET_ARCH) = x86 { diff --git a/build/jam/packages/Haiku b/build/jam/packages/Haiku index 08f57a5c62..d576e8a71d 100644 --- a/build/jam/packages/Haiku +++ b/build/jam/packages/Haiku @@ -97,20 +97,9 @@ if $(HAIKU_GCC_VERSION[1]) = 2 { } -# libGL.so has GLU (like BeOS) built-in -SYSTEM_LIBS_LIBGL_ALIASES = libGLU.so ; - -if $(TARGET_ARCH) = x86 { - local lib ; - for lib in $(SYSTEM_LIBS_LIBGL_ALIASES) { - AddSymlinkToPackage lib : libGL.so : $(lib) ; - } -} - SYSTEM_LIBS_ALIASES = $(SYSTEM_LIBS_LIBNETWORK_ALIASES) libnetapi.so - $(SYSTEM_LIBS_LIBGL_ALIASES) ; OPTIONAL_LIBS_ALIASES = diff --git a/build/jam/packages/HaikuDevel b/build/jam/packages/HaikuDevel index 763b7815a7..c09f39b83d 100644 --- a/build/jam/packages/HaikuDevel +++ b/build/jam/packages/HaikuDevel @@ -22,7 +22,7 @@ AddFilesToPackage lib : $(developmentLibs) ; # library symlinks local lib ; -for lib in $(SYSTEM_LIBS) $(SYSTEM_LIBS_LIBGL_ALIASES) $(developmentLibs) { +for lib in $(SYSTEM_LIBS) $(developmentLibs) { AddSymlinkToPackage $(developDirTokens) lib : /system/lib $(lib:BS) ; local abiVersion = [ on $(lib) return $(HAIKU_LIB_ABI_VERSION) ] ; if $(abiVersion) { @@ -88,13 +88,13 @@ if $(HAIKU_GCC_VERSION[1]) = 2 { # OpenGL headers if $(TARGET_ARCH) = x86 { - local mesaGlHeaders = [ FDirName $(HAIKU_MESA_HEADERS) GL ] ; - mesaGlHeaders = $(mesaGlHeaders:G=$(HAIKU_MESA_HEADERS_DEPENDENCY:G)) ; - Depends $(mesaGlHeaders) : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; + local mesaGlHeaders + = [ FDirName [ BuildFeatureAttribute mesa : headers : path ] GL ] ; + local mesaGlHeadersDependency = [ BuildFeatureAttribute mesa : headers ] ; + mesaGlHeaders = $(mesaGlHeaders:G=$(mesaGlHeadersDependency:G)) ; + Depends $(mesaGlHeaders) : $(mesaGlHeadersDependency) ; CopyDirectoryToPackage $(developDirTokens) headers os opengl : $(mesaGlHeaders) : : : isTarget ; - CopyDirectoryToPackage $(developDirTokens) headers os opengl - : $(HAIKU_GLU_HEADERS_DEPENDENCY) : : : isTarget ; } BuildHaikuPackage $(haikuDevelPackage) : haiku_devel ; diff --git a/src/add-ons/opengl/swpipe/Jamfile b/src/add-ons/opengl/swpipe/Jamfile index 01b3a9a8d0..d741644223 100644 --- a/src/add-ons/opengl/swpipe/Jamfile +++ b/src/add-ons/opengl/swpipe/Jamfile @@ -1,5 +1,5 @@ SubDir HAIKU_TOP src add-ons opengl swpipe ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; UsePrivateHeaders interface ; @@ -10,13 +10,14 @@ local sources = GalliumFramebuffer.cpp bitmap_wrapper.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium auxiliary ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium drivers ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src gallium include ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa ] ; +local privateHeaders = [ BuildFeatureAttribute mesa : privateHeaders : path ] ; +UseHeaders [ FDirName $(privateHeaders) gallium auxiliary ] ; +UseHeaders [ FDirName $(privateHeaders) gallium drivers ] ; +UseHeaders [ FDirName $(privateHeaders) gallium include ] ; +UseHeaders [ FDirName $(privateHeaders) mapi ] ; +UseHeaders [ FDirName $(privateHeaders) mesa ] ; AddResources Software\ Renderer : SoftwareRenderer.rdef ; @@ -36,11 +37,11 @@ Addon Software\ Renderer : $(sources) : libGL.so - $(HAIKU_GALLIUM_SOFTPIPE_LIB) - $(HAIKU_GALLIUM_LLVMPIPE_LIB) - $(HAIKU_MESA_LIB) - $(HAIKU_GLSL_LIB) - $(HAIKU_GALLIUM_LIB) + [ BuildFeatureAttribute mesa : galliumSoftpipeLibrary ] + [ BuildFeatureAttribute mesa : galliumLlvmpipeLibrary ] + [ BuildFeatureAttribute mesa : mesaLibrary ] + [ BuildFeatureAttribute mesa : glslLibrary ] + [ BuildFeatureAttribute mesa : galliumLibrary ] $(HAIKU_LLVM_LIBS) be translation stdc++ $(TARGET_LIBSUPC++) ; diff --git a/src/add-ons/opengl/swrast/Jamfile b/src/add-ons/opengl/swrast/Jamfile index 513a251382..90e0c0b510 100644 --- a/src/add-ons/opengl/swrast/Jamfile +++ b/src/add-ons/opengl/swrast/Jamfile @@ -14,21 +14,22 @@ SubDirC++Flags [ FDefines $(defines) ] ; local sources = MesaSoftwareRenderer.cpp ; UsePrivateHeaders interface ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +UseBuildFeatureHeaders mesa ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) include ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa main ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi glapi ] ; +UseHeaders [ BuildFeatureAttribute mesa : headers : path ] ; +local privateHeaders = [ BuildFeatureAttribute mesa : privateHeaders : path ] ; +UseHeaders [ FDirName $(privateHeaders) mesa ] ; +UseHeaders [ FDirName $(privateHeaders) mesa main ] ; +UseHeaders [ FDirName $(privateHeaders) mapi ] ; +UseHeaders [ FDirName $(privateHeaders) mapi glapi ] ; AddResources Software\ Rasterizer : MesaSoftwareRenderer.rdef ; Addon Software\ Rasterizer : MesaSoftwareRenderer.cpp : - $(HAIKU_MESA_LIB) - $(HAIKU_GLSL_LIB) + [ BuildFeatureAttribute mesa : mesaLibrary ] + [ BuildFeatureAttribute mesa : glslLibrary ] libGL.so be $(TARGET_LIBSUPC++) ; diff --git a/src/add-ons/opengl/swrast_legacy/Jamfile b/src/add-ons/opengl/swrast_legacy/Jamfile index d9ac110474..d5080f15d4 100644 --- a/src/add-ons/opengl/swrast_legacy/Jamfile +++ b/src/add-ons/opengl/swrast_legacy/Jamfile @@ -28,19 +28,20 @@ if $(TARGET_PLATFORM) != haiku { local sources = MesaSoftwareRenderer.cpp ; UsePrivateHeaders interface ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +UseBuildFeatureHeaders mesa ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) include ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa main ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi glapi ] ; +UseHeaders [ BuildFeatureAttribute mesa : headers : path ] ; +local privateHeaders = [ BuildFeatureAttribute mesa : privateHeaders : path ] ; +UseHeaders [ FDirName $(privateHeaders) mesa ] ; +UseHeaders [ FDirName $(privateHeaders) mesa main ] ; +UseHeaders [ FDirName $(privateHeaders) mapi ] ; +UseHeaders [ FDirName $(privateHeaders) mapi glapi ] ; # For older versions of Mesa -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa glapi ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa tnl ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa x86 ] ; +UseHeaders [ FDirName $(privateHeaders) mesa glapi ] ; +UseHeaders [ FDirName $(privateHeaders) mesa tnl ] ; +UseHeaders [ FDirName $(privateHeaders) mesa x86 ] ; AddResources Legacy\ Software\ Rasterizer : MesaSoftwareRenderer.rdef ; @@ -48,6 +49,6 @@ AddResources Legacy\ Software\ Rasterizer : MesaSoftwareRenderer.rdef ; Addon Legacy\ Software\ Rasterizer : $(sources) : - $(HAIKU_MESA_LIB) + [ BuildFeatureAttribute mesa : mesaLibrary ] libGL.so be $(TARGET_LIBSUPC++) ; diff --git a/src/add-ons/screen_savers/flurry/Jamfile b/src/add-ons/screen_savers/flurry/Jamfile index b022701d69..7248fa1812 100644 --- a/src/add-ons/screen_savers/flurry/Jamfile +++ b/src/add-ons/screen_savers/flurry/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src add-ons screen_savers flurry ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; AddResources Message : Flurry.rdef ; @@ -12,13 +12,17 @@ local sources = Texture.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. ScreenSaver Flurry : $(sources) : be screensaver GL libshared.a $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++) + [ BuildFeatureAttribute glu : library ] ; DoCatalogs Flurry : diff --git a/src/add-ons/screen_savers/glife/Jamfile b/src/add-ons/screen_savers/glife/Jamfile index 0fcebd05de..4bb4f9079f 100644 --- a/src/add-ons/screen_savers/glife/Jamfile +++ b/src/add-ons/screen_savers/glife/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src add-ons screen_savers glife ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -14,7 +14,10 @@ local sources = GLifeConfig.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. @@ -23,6 +26,7 @@ AddResources GLife : GLife.rdef ; ScreenSaver GLife : $(sources) : be screensaver GL $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++) + [ BuildFeatureAttribute glu : library ] ; DoCatalogs GLife : diff --git a/src/add-ons/screen_savers/gravity/Jamfile b/src/add-ons/screen_savers/gravity/Jamfile index 426435bf47..ff680d18f0 100644 --- a/src/add-ons/screen_savers/gravity/Jamfile +++ b/src/add-ons/screen_savers/gravity/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src add-ons screen_savers gravity ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; # For GCC2 if $(HAIKU_GCC_VERSION[1]) < 3 { @@ -18,13 +18,18 @@ local sources = main.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. ScreenSaver Gravity : $(sources) - : be screensaver GL $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSTDC++) + : + be screensaver GL $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSTDC++) + [ BuildFeatureAttribute glu : library ] ; DoCatalogs Gravity : diff --git a/src/apps/3dmov/Jamfile b/src/apps/3dmov/Jamfile index a1bc4c2309..8e0d8c37fa 100644 --- a/src/apps/3dmov/Jamfile +++ b/src/apps/3dmov/Jamfile @@ -1,5 +1,5 @@ SubDir HAIKU_TOP src apps 3dmov ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -19,7 +19,7 @@ local sources = GLUtility.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; Application 3DMov : $(sources) diff --git a/src/apps/glteapot/Jamfile b/src/apps/glteapot/Jamfile index 74e903db2a..ed78f81aa2 100644 --- a/src/apps/glteapot/Jamfile +++ b/src/apps/glteapot/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src apps glteapot ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -13,11 +13,16 @@ local sources = TeapotApp.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; Application GLTeapot : $(sources) - : be GL game $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++) + : + be GL game $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++) + [ BuildFeatureAttribute glu : library ] : GLTeapot.rdef ; diff --git a/src/apps/haiku3d/Jamfile b/src/apps/haiku3d/Jamfile index c4588f6cf4..59c3aa2b13 100644 --- a/src/apps/haiku3d/Jamfile +++ b/src/apps/haiku3d/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src apps haiku3d ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; +UseBuildFeatureHeaders glu ; SEARCH_SOURCE += [ FDirName $(SUBDIR) mesh ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) texture ] ; @@ -30,10 +30,15 @@ local sources = VideoFileTexture.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; Application Haiku3d : $(sources) - : be game GL media translation $(TARGET_LIBSTDC++) + : + be game GL media translation $(TARGET_LIBSTDC++) + [ BuildFeatureAttribute glu : library ] : Haiku3d.rdef ; diff --git a/src/kits/opengl/Jamfile b/src/kits/opengl/Jamfile index 7194f4805a..c71f21771a 100644 --- a/src/kits/opengl/Jamfile +++ b/src/kits/opengl/Jamfile @@ -4,6 +4,8 @@ SetSubDirSupportedPlatformsBeOSCompatible ; UsePrivateHeaders interface ; UsePrivateSystemHeaders ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; local sources = GLView.cpp @@ -18,19 +20,18 @@ if $(TARGET_PLATFORM) != haiku { # We need our public GL headers also when not compiling for Haiku. } -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_GLU_HEADERS_DEPENDENCY) ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute glu : headers ] ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) include ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa main ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi ] ; -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mapi glapi ] ; +UseHeaders [ BuildFeatureAttribute mesa : headers : path ] ; +local privateHeaders = [ BuildFeatureAttribute mesa : privateHeaders : path ] ; +UseHeaders [ FDirName $(privateHeaders) mesa ] ; +UseHeaders [ FDirName $(privateHeaders) mesa main ] ; +UseHeaders [ FDirName $(privateHeaders) mapi ] ; +UseHeaders [ FDirName $(privateHeaders) mapi glapi ] ; # For older versions of Mesa -UseHeaders [ FDirName $(HAIKU_MESA_DIR) src mesa glapi ] ; +UseHeaders [ FDirName $(privateHeaders) mesa glapi ] ; LINKFLAGS on libGL.so = [ on libGL.so return $(LINKFLAGS) ] -Xlinker --whole-archive -Xlinker --no-undefined ; @@ -43,10 +44,10 @@ if $(HAIKU_GCC_VERSION[1]) < 3 { SharedLibrary libGL.so : $(sources) : # GLU - $(HAIKU_GLU_LIBS) + [ BuildFeatureAttribute glu : library ] # GLAPI Dispatch code (from Mesa buildpackage) - $(HAIKU_GLAPI_LIB) + [ BuildFeatureAttribute mesa : glapiLibrary ] # External libraries: game # BWindowScreen needed by BGLScreen stub class diff --git a/src/libs/glut/Jamfile b/src/libs/glut/Jamfile index 54750c26bc..0d3047021d 100644 --- a/src/libs/glut/Jamfile +++ b/src/libs/glut/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src libs glut ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -57,12 +57,15 @@ if $(HAIKU_GCC_VERSION[1]) < 3 { # Ensure Mesa dependency is met -Includes [ FGristFiles $(sourcesCc) $(sourcesCpp) ] - : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sourcesCc) $(sourcesCpp) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; SharedLibrary libglut.so : $(sourcesCpp) $(sourcesCc) : GL game be $(TARGET_LIBSTDC++) + [ BuildFeatureAttribute glu : library ] ; diff --git a/src/tests/kits/opengl/demos/gears/Jamfile b/src/tests/kits/opengl/demos/gears/Jamfile index 9cc394ceef..bd1998c5cb 100644 --- a/src/tests/kits/opengl/demos/gears/Jamfile +++ b/src/tests/kits/opengl/demos/gears/Jamfile @@ -1,5 +1,5 @@ SubDir HAIKU_TOP src tests kits opengl demos gears ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -15,7 +15,7 @@ local sources = gears.c ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; SimpleTest GLGears : diff --git a/src/tests/kits/opengl/direct_mode/Jamfile b/src/tests/kits/opengl/direct_mode/Jamfile index de41e03a9f..8929ed5949 100644 --- a/src/tests/kits/opengl/direct_mode/Jamfile +++ b/src/tests/kits/opengl/direct_mode/Jamfile @@ -1,5 +1,5 @@ SubDir HAIKU_TOP src tests kits opengl direct_mode ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -14,7 +14,7 @@ local sources = GLDirectMode.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; SimpleTest GLDirectMode : $(sources) diff --git a/src/tests/kits/opengl/glinfo/Jamfile b/src/tests/kits/opengl/glinfo/Jamfile index 2c7ce849e3..3c37dc26c0 100644 --- a/src/tests/kits/opengl/glinfo/Jamfile +++ b/src/tests/kits/opengl/glinfo/Jamfile @@ -1,6 +1,6 @@ SubDir HAIKU_TOP src tests kits opengl glinfo ; -SubDirSysHdrs $(HAIKU_GLU_HEADERS) ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders glu ; +UseBuildFeatureHeaders mesa ; UsePrivateHeaders interface ; @@ -14,7 +14,10 @@ local sources = GearsView.cpp ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : + [ BuildFeatureAttribute glu : headers ] + [ BuildFeatureAttribute mesa : headers ] + ; # Dependency needed to trigger downloading/unzipping the package before # compiling the files. @@ -24,6 +27,7 @@ Preference GLInfo : be GL libglut.so translation libcolumnlistview.a $(HAIKU_LOCALE_LIBS) $(TARGET_LIBSUPC++) + [ BuildFeatureAttribute glu : library ] : GLInfo.rdef ; diff --git a/src/tests/kits/opengl/glsl/Jamfile b/src/tests/kits/opengl/glsl/Jamfile index 4a17e83c29..2709530593 100644 --- a/src/tests/kits/opengl/glsl/Jamfile +++ b/src/tests/kits/opengl/glsl/Jamfile @@ -1,5 +1,5 @@ SubDir HAIKU_TOP src tests kits opengl glsl ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -14,7 +14,8 @@ local shadersources = shaderutil.c ; -Includes [ FGristFiles $(shadersources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(shadersources) ] + : [ BuildFeatureAttribute mesa : headers ] ; StaticLibrary libshaderutil.a : $(shadersources) diff --git a/src/tests/kits/opengl/glut/game_mode/Jamfile b/src/tests/kits/opengl/glut/game_mode/Jamfile index ddcc55f5c2..23849dcae5 100644 --- a/src/tests/kits/opengl/glut/game_mode/Jamfile +++ b/src/tests/kits/opengl/glut/game_mode/Jamfile @@ -1,5 +1,5 @@ SubDir HAIKU_TOP src tests kits opengl glut game_mode ; -SubDirSysHdrs $(HAIKU_MESA_HEADERS) ; +UseBuildFeatureHeaders mesa ; SetSubDirSupportedPlatformsBeOSCompatible ; @@ -14,7 +14,7 @@ local sources = game_mode.c ; -Includes [ FGristFiles $(sources) ] : $(HAIKU_MESA_HEADERS_DEPENDENCY) ; +Includes [ FGristFiles $(sources) ] : [ BuildFeatureAttribute mesa : headers ] ; SimpleTest GLUTGameMode : $(sources)