# # Add platform-specific libc headers to standard include search paths # ifeq ($(filter-out $(SPECS),x86_32),) LIBC_ARCH_INC_DIR := include/spec/x86_32/libc endif # x86_32 ifeq ($(filter-out $(SPECS),x86_64),) LIBC_ARCH_INC_DIR := include/spec/x86_64/libc endif # x86_64 ifeq ($(filter-out $(SPECS),arm),) CC_OPT += -D__ARM_PCS_VFP LIBC_ARCH_INC_DIR := include/spec/arm/libc endif # ARM ifeq ($(filter-out $(SPECS),arm_64),) LIBC_ARCH_INC_DIR := include/spec/arm_64/libc endif # ARM64 ifeq ($(filter-out $(SPECS),riscv),) LIBC_ARCH_INC_DIR := include/spec/riscv/libc endif # RISC-V # # If we found no valid include path for the configured target platform, # we have to prevent the build system from building the target. This is # done by adding an artificial requirement. # ifeq ($(LIBC_ARCH_INC_DIR),) REQUIRES += libc_support_for_your_target_platform endif ifeq ($(CONTRIB_DIR),) REP_INC_DIR += include/libc REP_INC_DIR += $(LIBC_ARCH_INC_DIR) ifeq ($(filter-out $(SPECS),x86),) REP_INC_DIR += include/spec/x86/libc endif else LIBC_PORT_DIR := $(call select_from_ports,libc) INC_DIR += $(LIBC_PORT_DIR)/include/libc INC_DIR += $(LIBC_PORT_DIR)/$(LIBC_ARCH_INC_DIR) ifeq ($(filter-out $(SPECS),x86),) INC_DIR += $(LIBC_PORT_DIR)/include/spec/x86/libc endif endif # # Genode-specific supplements to standard libc headers # REP_INC_DIR += include/libc-genode # # Prevent gcc headers from defining __size_t. This definition is done in # machine/_types.h. # CC_OPT += -D__FreeBSD__=12 # # Prevent gcc-4.4.5 from generating code for the family of 'sin' and 'cos' # functions because the gcc-generated code would actually call 'sincos' # or 'sincosf', which is a GNU extension, not provided by our libc. # CC_OPT += -fno-builtin-sin -fno-builtin-cos -fno-builtin-sinf -fno-builtin-cosf CC_OPT += -D__GENODE__