From aef210439fcf0d26cde800f46ad126e4f956a4d4 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 9 Oct 2013 23:21:27 -0700 Subject: [PATCH] Allow platform to *not* include some header files If the underlying platform compiler provides header files, then use those instead of the ones here. Signed-off-by: Keith Packard --- Makefile | 7 ++++--- functions/_PDCLIB/filemode.c | 1 + includes/inttypes.h | 5 +++++ platform/altos/include-exclude | 6 ++++++ platform/altos/internals/_PDCLIB_config.h | 13 ++++++++----- 5 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 platform/altos/include-exclude diff --git a/Makefile b/Makefile index ad3fb38..4796dfb 100644 --- a/Makefile +++ b/Makefile @@ -49,8 +49,8 @@ REGDEPFILES := $(patsubst %,%.d,$(REGFILES)) ALLFILES := $(SRCFILES) $(HDRFILES) $(AUXFILES) WARNINGS := -Wall -Wextra -pedantic -Wno-unused-parameter -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wuninitialized -Wstrict-prototypes -PLATFORM_FLAGS=-nostdinc -mlittle-endian -mthumb -mcpu=$(CPU) -ffreestanding -nostdlib -CFLAGS := -fno-builtin -Os -g -std=c99 -I./$(BUILD)/internals -I./testing $(WARNINGS) $(USERFLAGS) $(PLATFORM_FLAGS) +PLATFORM_FLAGS=-mlittle-endian -mthumb -mcpu=$(CPU) -ffreestanding +CFLAGS := -Os -g -std=c99 -I./$(BUILD)/internals -I./testing $(WARNINGS) $(USERFLAGS) $(PLATFORM_FLAGS) .PHONY: all clean srcdist bindist test tests testdrivers regtests regtestdrivers todos fixmes find links unlink help @@ -58,7 +58,7 @@ PDCLIBNAME=libpdclib PDCLIB=$(PDCLIBNAME)-$(CPU).a all: - +for i in $(CPUS); do make CPU=$$i links $(PDCLIBNAME)-$$i.a; done + +for i in $(CPUS); do make CPU=$$i links; make CPU=$$i $(PDCLIBNAME)-$$i.a; done install: install-hdr @echo '######' install @@ -140,6 +140,7 @@ links: $(BUILD) @for dir in $$(find functions includes internals -type d); do mkdir -p $(BUILD)/$$dir; done @for file in $$(find platform/$(PLATFORM) -mindepth 2 -type f ! -path *.svn* -printf "%P\n"); do if [ ! -f $(BUILD)/$$file ]; then ln -s $$(dirname $$file | sed "s@[^/]*@..@g")/../platform/$(PLATFORM)/$$file $(BUILD)/$$file; fi; done @for super in $(PROJDIRS); do for file in $$(find $$super -type f ! -path *.svn* -printf "%P\n"); do if [ ! -f $(BUILD)/$$super/$$file ]; then ln -s $$(echo $$file | sed "s@[^/]*@..@g")/../$$super/$$file $(BUILD)/$$super/$$file; fi; done; done + if [ -f platform/$(PLATFORM)/include-exclude ]; then for ex in `cat platform/$(PLATFORM)/include-exclude`; do echo exclude $$ex; rm -f $(BUILD)/includes/$$ex; done; fi; true unlink: $(BUILD) @echo "Unlinking platform files..." diff --git a/functions/_PDCLIB/filemode.c b/functions/_PDCLIB/filemode.c index 0e293ab..10630cb 100644 --- a/functions/_PDCLIB/filemode.c +++ b/functions/_PDCLIB/filemode.c @@ -6,6 +6,7 @@ Permission is granted to use, modify, and / or redistribute at will. */ +#include #include /* Helper function that parses the C-style mode string passed to fopen() into diff --git a/includes/inttypes.h b/includes/inttypes.h index dc9af35..1d35111 100644 --- a/includes/inttypes.h +++ b/includes/inttypes.h @@ -9,6 +9,11 @@ #ifndef _PDCLIB_INTTYPES_H #define _PDCLIB_INTTYPES_H _PDCLIB_INTTYPES_H +#ifndef _PDCLIB_INT_H +#define _PDCLIB_INT_H _PDCLIB_INT_H +#include <_PDCLIB_int.h> +#endif + #include typedef struct _PDCLIB_imaxdiv_t imaxdiv_t; diff --git a/platform/altos/include-exclude b/platform/altos/include-exclude new file mode 100644 index 0000000..018c7c0 --- /dev/null +++ b/platform/altos/include-exclude @@ -0,0 +1,6 @@ +float.h +iso646.h +stdarg.h +stdbool.h +stddef.h +stdint.h diff --git a/platform/altos/internals/_PDCLIB_config.h b/platform/altos/internals/_PDCLIB_config.h index 64cc98d..985fc6d 100644 --- a/platform/altos/internals/_PDCLIB_config.h +++ b/platform/altos/internals/_PDCLIB_config.h @@ -156,6 +156,7 @@ struct _PDCLIB_lldiv_t /* Largest supported integer type. Implementation note: see _PDCLIB_atomax(). */ #define _PDCLIB_intmax long long int +typedef _PDCLIB_intmax intmax_t; #define _PDCLIB_INTMAX LLONG #define _PDCLIB_MAX_CONV ll /* You are also required to state the literal suffix for the intmax type */ @@ -224,11 +225,13 @@ struct _PDCLIB_imaxdiv_t /* Internal helper macro. va_round is not part of . */ #define _PDCLIB_va_round( type ) ( (sizeof(type) + sizeof(void *) - 1) & ~(sizeof(void *) - 1) ) -typedef char * _PDCLIB_va_list; -#define _PDCLIB_va_arg( ap, type ) ( (ap) += (_PDCLIB_va_round(type)), ( *(type*) ( (ap) - (_PDCLIB_va_round(type)) ) ) ) -#define _PDCLIB_va_copy( dest, src ) ( (dest) = (src), (void)0 ) -#define _PDCLIB_va_end( ap ) ( (ap) = (void *)0, (void)0 ) -#define _PDCLIB_va_start( ap, parmN ) ( (ap) = (char *) &parmN + ( _PDCLIB_va_round(parmN) ), (void)0 ) +#include + +#define _PDCLIB_va_list va_list +#define _PDCLIB_va_arg( ap, type ) va_arg(ap, type) +#define _PDCLIB_va_copy( dest, src ) va_copy(dest, src) +#define _PDCLIB_va_end( ap ) va_end(ap) +#define _PDCLIB_va_start( ap, parmN ) va_start(ap, parmN) /* -------------------------------------------------------------------------- */ /* OS "glue", part 1 */ -- 2.30.2