features.h: fix build when BSD headers are not in include path
In our C library we try to provide a "clean" POSIX/ISO-C set of include files that strictly conforming applications can use. However, we also want to provide some extensions that are commonly available in BSD or GNU systems. These are normally provided in a separate directory (headers/compatibility/bsd) and additionally guarded by compiler defines that can either be explicitly set, or enabled by default if the language standard (selected from the compiler command line) is one with GNU extensions (this is the default for GCC). This is controlled by a header file called features.h. However, for some headers it is not so simple to split the GNU extensions apart from the other parts of the file, because it's not just extra functions, but additional flags and defines. So, we need the "features.h" mechanism to be available even in the base set of headers, but not enable anything if the BSD headers are not in the search path. The simplest way to achieve this is to have an empty features.h in the base set of headers, that can then be overriden by the one in headers/compatibility/bsd if needed. Fixes #18732 Change-Id: Ia54d1206c2fba378ae276ed4232aee8443180afb Reviewed-on: https://review.haiku-os.org/c/haiku/+/7287 Reviewed-by: waddlesplash <waddlesplash@gmail.com> Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
This commit is contained in:
parent
4fc18643b9
commit
8d27b645e7
12
headers/posix/features.h
Normal file
12
headers/posix/features.h
Normal file
@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright 2024 Haiku, Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
/* This header is empty. It is there so that #include <features.h> in other headers in this
|
||||
* directory will work, regardless of the presence of headers/bsd/ in the include search path.
|
||||
*
|
||||
* When headers/bsd is not in the search path, no extra features should be enabled (strict POSIX
|
||||
* and ANSI C compatibility). When headers/bsd is in the search path, features are enabled
|
||||
* depending on the C standard selected by the compiler command line.
|
||||
*/
|
@ -22,7 +22,7 @@
|
||||
#ifndef _REGEX_H
|
||||
#define _REGEX_H 1
|
||||
|
||||
#include <compatibility/bsd/features.h>
|
||||
#include <features.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Allow the use in C++ code. */
|
||||
|
@ -2,6 +2,8 @@ SubDir HAIKU_TOP src bin keymap ;
|
||||
|
||||
UsePrivateHeaders shared storage ;
|
||||
|
||||
SubDirSysHdrs $(HAIKU_TOP) headers compatibility bsd ;
|
||||
|
||||
BinCommand keymap :
|
||||
main.cpp
|
||||
Keymap.cpp
|
||||
|
@ -2,6 +2,7 @@ SubDir HAIKU_TOP src kits mail ;
|
||||
|
||||
UsePrivateHeaders mail shared ;
|
||||
UsePublicHeaders [ FDirName add-ons mail_daemon ] ;
|
||||
SubDirSysHdrs $(HAIKU_TOP) headers compatibility bsd ;
|
||||
|
||||
if $(CHECK_MALLOC) {
|
||||
SubDirC++Flags -D_NO_INLINE_ASM -fcheck-memory-usage ;
|
||||
|
@ -1,7 +1,7 @@
|
||||
SubDir HAIKU_TOP src system libroot posix glibc regex ;
|
||||
|
||||
SubDirHdrs $(HAIKU_TOP) headers ;
|
||||
SubDirCcFlags -D_REGEX_RE_COMP -D__USE_GNU -DHAVE_STDBOOL_H ;
|
||||
SubDirCcFlags -D_REGEX_RE_COMP -D_DEFAULT_SOURCE -DHAVE_STDBOOL_H ;
|
||||
|
||||
local architectureObject ;
|
||||
for architectureObject in [ MultiArchSubDirSetup ] {
|
||||
|
Loading…
Reference in New Issue
Block a user