404a0fea46
builds on Linux with gcc 2 and 4, but the images do even run. :-) Not tested on BeOS. * Removed stddef.h and stdarg.h. They are provided by the compiler. * Adjusted size_t.h, wchar_t.h, and wchar.h accordingly. * Made stdio.h avoid gcc 2.95.3's fixincludes hack stdio_va_list * Added gcc 2.95.3 headers to the repository. They are used instead of the headers of the gcc 2.95.3's we use to compile Haiku with. Should avoid build problems with the BeOS native compiler. For sake of personal recreation you can rebuild the cross gcc 2.95.3, but the only thing that changed is its header directory (lib/gcc-lib/.../include), which isn't used anymore. Replacing it with headers/build/gcc-2.95.3 should have the same effect as rebuilding, BTW. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24413 a95241bf-73f2-0310-859d-f6bbb57e9c96
403 lines
10 KiB
Plaintext
403 lines
10 KiB
Plaintext
|
|
# FIncludes <dirs> ;
|
|
#
|
|
# Overridden to support a second argument, the option to be used.
|
|
#
|
|
rule FIncludes { return $(2:E="--bad-include-option ")$(1) ; }
|
|
|
|
# FSysIncludes <dirs> ;
|
|
#
|
|
# Counterpart of FIncludes for system include search paths.
|
|
#
|
|
rule FSysIncludes { return $(2:E="--bad-include-option ")$(1) ; }
|
|
|
|
rule SubDirSysHdrs
|
|
{
|
|
# SubDirSysHdrs <dirs> ;
|
|
#
|
|
# Adds directories to the system include search paths for the current
|
|
# subdirectory. Counterpart of SubDirHdrs which adds non-system include
|
|
# search paths.
|
|
#
|
|
# <dirs>: The directories to be added to the current subdir's system
|
|
# include search paths.
|
|
#
|
|
SUBDIRSYSHDRS += [ FDirName $(1) ] ;
|
|
}
|
|
|
|
rule ObjectSysHdrs
|
|
{
|
|
# ObjectSysHdrs <sources or objects> : <headers> : <gristed objects>
|
|
#
|
|
# Adds directories to the system include search paths for the given
|
|
# sources or objects. Counterpart of ObjectHdrs which adds non-system
|
|
# include search paths.
|
|
#
|
|
# NOTE: With this incarnation of the Haiku build system this rule doesn't
|
|
# need to be invoked *after* the rule that generates the objects anymore.
|
|
# Actually it is even encouraged to do that *before*. Same for ObjectHdrs.
|
|
#
|
|
# <sources or objects>: The targets for which to add system include
|
|
# search paths.
|
|
# <dirs>: The directories to be added to the given objects' system
|
|
# include search paths.
|
|
#
|
|
|
|
local objects = [ FGristFiles $(1:S=$(SUFOBJ)) ] $(3) ;
|
|
local headers = $(2) ;
|
|
|
|
local file ;
|
|
for file in $(objects) {
|
|
on $(file) {
|
|
local sysHeaders = $(SYSHDRS) $(headers) ;
|
|
SYSHDRS on $(file) = $(sysHeaders) ;
|
|
|
|
# reformat ASHDRS and CCHDRS
|
|
local fileHeaders ;
|
|
|
|
if $(PLATFORM) = host {
|
|
fileHeaders =
|
|
[ FIncludes $(HDRS) : $(HOST_LOCAL_INCLUDES_OPTION) ]
|
|
$(HOST_INCLUDES_SEPARATOR)
|
|
[ FSysIncludes $(sysHeaders)
|
|
: $(HOST_SYSTEM_INCLUDES_OPTION) ] ;
|
|
} else {
|
|
fileHeaders =
|
|
[ FIncludes $(HDRS) : $(TARGET_LOCAL_INCLUDES_OPTION) ]
|
|
$(TARGET_INCLUDES_SEPARATOR)
|
|
[ FSysIncludes $(sysHeaders)
|
|
: $(TARGET_SYSTEM_INCLUDES_OPTION) ] ;
|
|
}
|
|
|
|
ASHDRS on $(file) = $(fileHeaders) ;
|
|
CCHDRS on $(file) = $(fileHeaders) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
rule SourceHdrs
|
|
{
|
|
# SourceHdrs <sources> : <headers> [ : <gristed objects> ] ;
|
|
#
|
|
# Is a wrapper for ObjectHdrs, that passes <sources> and <headers> or,
|
|
# if supplied <objects> and <headers>, and also adjusts HDRSEARCH (not
|
|
# done by ObjectHdrs).
|
|
|
|
local sources = [ FGristFiles $(1) ] ;
|
|
local headers = $(2) ;
|
|
local objects = $(3) ;
|
|
|
|
ObjectHdrs $(sources) : $(headers) : $(objects) ;
|
|
|
|
# Also add the header search dirs to HDRSEARCH. Note, that these dirs
|
|
# will be listed after the STDHDRS (if any), but that's better than not
|
|
# being listed at all.
|
|
HDRSEARCH on $(sources) += $(headers) ;
|
|
}
|
|
|
|
rule SourceSysHdrs
|
|
{
|
|
# SourceSysHdrs <sources> : <headers> [ : <gristed objects> ] ;
|
|
#
|
|
# Is a wrapper for ObjectSysHdrs, that passes <sources> and <headers> or,
|
|
# if supplied <objects> and <headers>, and also adjusts HDRSEARCH (not
|
|
# done by ObjectSysHdrs).
|
|
|
|
local sources = [ FGristFiles $(1) ] ;
|
|
local headers = $(2) ;
|
|
local objects = $(3) ;
|
|
|
|
ObjectSysHdrs $(sources) : $(headers) : $(objects) ;
|
|
|
|
# Also add the header search dirs to HDRSEARCH. Note, that these dirs
|
|
# will be listed after the STDHDRS (if any), but that's better than not
|
|
# being listed at all.
|
|
HDRSEARCH on $(sources) += $(headers) ;
|
|
}
|
|
|
|
rule PublicHeaders
|
|
{
|
|
# PublicHeaders <group list>
|
|
#
|
|
# Returns the directory names for the public header dirs identified by
|
|
# <group list>.
|
|
|
|
local list = $(1) ;
|
|
local dirs ;
|
|
|
|
for i in $(list) {
|
|
dirs += [ FDirName $(HAIKU_TOP) headers os $(i) ] ;
|
|
}
|
|
return $(dirs) ;
|
|
}
|
|
|
|
rule PrivateHeaders
|
|
{
|
|
# PrivateHeaders <group list>
|
|
#
|
|
# Returns the directory names for the private header dirs identified by
|
|
# <group list>.
|
|
|
|
local list = $(1) ;
|
|
local dirs ;
|
|
for i in $(list) {
|
|
dirs += [ FDirName $(HAIKU_TOP) headers private $(i) ] ;
|
|
}
|
|
return $(dirs) ;
|
|
}
|
|
|
|
rule LibraryHeaders
|
|
{
|
|
# LibraryHeaders <group list>
|
|
#
|
|
# Returns the directory names for the library header dirs identified by
|
|
# <group list>.
|
|
|
|
local list = $(1) ;
|
|
local dirs ;
|
|
for i in $(list) {
|
|
dirs += [ FDirName $(HAIKU_TOP) headers libs $(i) ] ;
|
|
}
|
|
return $(dirs) ;
|
|
}
|
|
|
|
rule ArchHeaders
|
|
{
|
|
# usage: ArchHeaders <arch> ;
|
|
#
|
|
# <arch> specifies the architecture (e.g. x86).
|
|
|
|
return [ FDirName $(HAIKU_TOP) headers private kernel arch $(1) ] ;
|
|
}
|
|
|
|
rule UseHeaders
|
|
{
|
|
# UseHeaders <headers> [ : <system> ] ;
|
|
#
|
|
# Adds the C header dirs <headers> to the header search
|
|
# dirs of the subdirectory.
|
|
# If <system> is "true", the dirs are added as system otherwise local
|
|
# search dirs.
|
|
# NOTE: This rule must be invoked *before* the rule that builds the objects.
|
|
|
|
local header ;
|
|
if $(2) = true {
|
|
for header in $(1) {
|
|
SubDirSysHdrs $(header) ;
|
|
}
|
|
} else {
|
|
for header in $(1) {
|
|
SubDirHdrs $(header) ;
|
|
}
|
|
}
|
|
}
|
|
|
|
rule UsePublicHeaders
|
|
{
|
|
# UsePublicHeaders <group list> ;
|
|
#
|
|
# Adds the public C header dirs given by <group list> to the header search
|
|
# dirs of the subdirectory.
|
|
# NOTE: This rule must be invoked *before* the rule that builds the
|
|
# objects.
|
|
|
|
UseHeaders [ PublicHeaders $(1) ] : true ;
|
|
}
|
|
|
|
rule UsePublicObjectHeaders
|
|
{
|
|
# UsePublicObjectHeaders <sources> : <group list> [ : <objects> ] ;
|
|
#
|
|
# Adds the public C header dirs given by <group list> to the header search
|
|
# dirs of either the object targets of <sources> or if supplied to
|
|
# <objects>. Also adjusts HDRSEARCH of <sources>.
|
|
|
|
SourceSysHdrs $(1) : [ PublicHeaders $(2) ] : $(3) ;
|
|
}
|
|
|
|
rule UsePrivateHeaders
|
|
{
|
|
# UsePrivateHeaders <group list> [ : <system> ] ;
|
|
#
|
|
# Adds the private C header dirs given by <group list> to the header search
|
|
# dirs of the subdirectory.
|
|
# <system> specifies whether to add the dirs as system or local header
|
|
# search dirs. Defaults to "true".
|
|
# NOTE: This rule must be invoked *before* the rule that builds the objects.
|
|
|
|
local system = $(2) ;
|
|
system ?= true ;
|
|
|
|
UseHeaders [ PrivateHeaders $(1) ] : $(system) ;
|
|
}
|
|
|
|
rule UsePrivateObjectHeaders
|
|
{
|
|
# UsePrivateObjectHeaders <sources> : <group list> [ : <objects>
|
|
# [ : <system> ] ] ;
|
|
#
|
|
# Adds the private C header dirs given by <group list> to the header search
|
|
# dirs of either the object targets of <sources> or if supplied to
|
|
# <objects>. Also adjusts HDRSEARCH of <sources>.
|
|
# <system> specifies whether to add the dirs as system or local header
|
|
# search dirs. Defaults to "true".
|
|
|
|
local system = $(4) ;
|
|
system ?= true ;
|
|
|
|
if $(system) = true {
|
|
SourceSysHdrs $(1) : [ PrivateHeaders $(2) ] : $(3) ;
|
|
} else {
|
|
SourceHdrs $(1) : [ PrivateHeaders $(2) ] : $(3) ;
|
|
}
|
|
}
|
|
|
|
rule UseCppUnitHeaders
|
|
{
|
|
SubDirSysHdrs [ FDirName $(HAIKU_TOP) headers tools cppunit ] ;
|
|
}
|
|
|
|
rule UseCppUnitObjectHeaders
|
|
{
|
|
# UseCppUnitObjectHeaders <sources> [ : <objects> ] ;
|
|
SourceSysHdrs $(1) : [ FDirName $(HAIKU_TOP) headers tools cppunit ]
|
|
: $(2) ;
|
|
}
|
|
|
|
rule UseArchHeaders
|
|
{
|
|
# usage: UseArchHeaders <arch> ;
|
|
#
|
|
# <arch> specifies the architecture (e.g. x86).
|
|
# NOTE: This rule must be invoked *before* the rule that builds the objects.
|
|
|
|
local headers = [ ArchHeaders $(1) ] ;
|
|
|
|
UseHeaders $(headers) : true ;
|
|
}
|
|
|
|
rule UseArchObjectHeaders
|
|
{
|
|
# usage: UseArchObjectHeaders <sources> : <arch> : [ <objects> ] ;
|
|
#
|
|
# <arch> specifies the architecture (e.g. x86).
|
|
# <sources_or_objects> Source or object files.
|
|
|
|
local sources = $(1) ;
|
|
local headers = [ ArchHeaders $(2) ] ;
|
|
local objects = $(3) ;
|
|
local targets ;
|
|
if $(objects) {
|
|
targets = $(objects) ;
|
|
} else {
|
|
targets = [ FGristFiles $(sources:S=$(SUFOBJ)) ] ;
|
|
}
|
|
|
|
SourceSysHdrs $(sources) : $(headers) : $(objects) ;
|
|
}
|
|
|
|
rule UsePosixObjectHeaders
|
|
{
|
|
# UsePosixObjectHeaders <sources> [ : <objects> ] ;
|
|
#
|
|
# Adds the POSIX header dir to the header search
|
|
# dirs of either the object targets of <sources> or if supplied to
|
|
# <objects>. Also adjusts HDRSEARCH of <sources>.
|
|
|
|
SourceSysHdrs $(1) : [ FDirName $(HAIKU_TOP) headers posix ] : $(2) ;
|
|
}
|
|
|
|
rule UseLibraryHeaders
|
|
{
|
|
# UseLibraryHeaders <group list> ;
|
|
#
|
|
# Adds the library header dirs given by <group list> to the header search
|
|
# dirs of the subdirectory.
|
|
# NOTE: This rule must be invoked *before* the rule that builds the objects.
|
|
|
|
UseHeaders [ LibraryHeaders $(1) ] : true ;
|
|
}
|
|
|
|
rule UseLegacyHeaders
|
|
{
|
|
# usage: UseLegacyHeaders <group list> ;
|
|
#
|
|
# NOTE: This rule must be invoked *before* the rule that builds the objects.
|
|
|
|
UseHeaders [ FDirName $(HAIKU_TOP) headers legacy $(1) ] : true ;
|
|
}
|
|
|
|
rule UseLegacyObjectHeaders
|
|
{
|
|
# UseLegacyObjectHeaders <sources> [ : <objects> ] ;
|
|
#
|
|
# Adds the legacy header dir to the header search
|
|
# dirs of either the object targets of <sources> or if supplied to
|
|
# <objects>. Also adjusts HDRSEARCH of <sources>.
|
|
|
|
SourceSysHdrs $(1) : [ FDirName $(HAIKU_TOP) headers legacy ] : $(2) ;
|
|
}
|
|
|
|
rule UsePrivateKernelHeaders
|
|
{
|
|
UseHeaders $(TARGET_PRIVATE_KERNEL_HEADERS) : true ;
|
|
}
|
|
|
|
rule FStandardOSHeaders
|
|
{
|
|
local osIncludes = add-ons add-ons/file_system add-ons/graphics
|
|
add-ons/input_server add-ons/registrar
|
|
add-ons/screen_saver
|
|
add-ons/tracker app device drivers game interface
|
|
kernel media mail midi midi2 net opengl storage support
|
|
translation ;
|
|
|
|
return [ FDirName $(HAIKU_TOP) headers os ]
|
|
[ PublicHeaders $(osIncludes) ] ;
|
|
}
|
|
|
|
rule FStandardHeaders
|
|
{
|
|
local osIncludes = add-ons add-ons/file_system add-ons/graphics
|
|
add-ons/input_server add-ons/registrar
|
|
add-ons/screen_saver
|
|
add-ons/tracker app device drivers game interface
|
|
kernel media mail midi midi2 net opengl storage support
|
|
translation ;
|
|
|
|
# GCC headers
|
|
local headers = $(HAIKU_GCC_HEADERS_DIR) ;
|
|
|
|
# Use headers directory, to allow to do things like include <posix/string.h>
|
|
headers += [ FDirName $(HAIKU_TOP) headers ] ;
|
|
|
|
# Use posix headers directory
|
|
headers += [ FDirName $(HAIKU_TOP) headers posix ] ;
|
|
|
|
# Use GNU headers directory
|
|
headers += [ FDirName $(HAIKU_TOP) headers gnu ] ;
|
|
|
|
# Use glibc headers
|
|
headers += [ FDirName $(HAIKU_TOP) headers glibc ] ;
|
|
|
|
# Use public OS header directories
|
|
headers += [ FDirName $(HAIKU_TOP) headers os ] ;
|
|
headers += [ PublicHeaders $(osIncludes) ] ;
|
|
|
|
# Use the root of the private headers -- not so nice, but simplifies things.
|
|
headers += [ PrivateHeaders $(DOT) ] ;
|
|
|
|
# The C++ headers. If specified, we use the compiler headers, otherwise
|
|
# the ones that come with our libstdc++.
|
|
if $(HAIKU_C++_HEADERS_DIR) {
|
|
headers += $(HAIKU_C++_HEADERS_DIR) ;
|
|
} else {
|
|
headers += [ FDirName $(HAIKU_TOP) headers cpp ] ;
|
|
}
|
|
|
|
return $(headers) ;
|
|
}
|
|
|
|
# SUBDIRSYSHDRS shall be reset automatically for each subdir
|
|
SUBDIRRESET += SYSHDRS ;
|