diff --git a/Makefile b/Makefile index 9154d07..7c9f201 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ endif LIBDIR := /lib CFLAGS := -ggdb3 -O2 -Wall -CPPFLAGS := -Iarch/${ARCH} -Iarch/common +CPPFLAGS := -Iinclude -Iarch/${ARCH} -Iarch/common EXPORT_UNPREFIXED := yes FREESTANDING := no @@ -28,13 +28,16 @@ LIBUCONTEXT_STATIC_NAME = libucontext.a LIBUCONTEXT_SONAME = libucontext.so.${LIBUCONTEXT_SOVERSION} LIBUCONTEXT_PATH = ${LIBDIR}/${LIBUCONTEXT_SONAME} LIBUCONTEXT_STATIC_PATH = ${LIBDIR}/${LIBUCONTEXT_STATIC_NAME} +LIBUCONTEXT_HEADERS = \ + include/libucontext/libucontext.h \ + include/libucontext/bits.h all: ${LIBUCONTEXT_SONAME} ${LIBUCONTEXT_STATIC_NAME} ${LIBUCONTEXT_STATIC_NAME}: ${LIBUCONTEXT_OBJ} $(AR) rcs ${LIBUCONTEXT_STATIC_NAME} ${LIBUCONTEXT_OBJ} -${LIBUCONTEXT_NAME}: ${LIBUCONTEXT_OBJ} +${LIBUCONTEXT_NAME}: ${LIBUCONTEXT_HEADERS} ${LIBUCONTEXT_OBJ} $(CC) -o ${LIBUCONTEXT_NAME} -Wl,-soname,${LIBUCONTEXT_SONAME} \ -shared ${LIBUCONTEXT_OBJ} ${LDFLAGS} @@ -62,4 +65,16 @@ check: test_libucontext ${LIBUCONTEXT_SONAME} test_libucontext: test_libucontext.c ${LIBUCONTEXT_NAME} $(CC) -std=c99 -D_BSD_SOURCE ${CFLAGS} ${CPPFLAGS} $@.c -o $@ -L. -lucontext +ifeq ($(FREESTANDING),no) + +include/libucontext/bits.h: arch/common/bits.h + cp arch/common/bits.h $@ + +else + +include/libucontext/bits.h: arch/${ARCH}/freestanding/bits.h + cp arch/${ARCH}/freestanding/bits.h + +endif + .PHONY: check diff --git a/arch/common/bits.h b/arch/common/bits.h new file mode 100644 index 0000000..d1296d3 --- /dev/null +++ b/arch/common/bits.h @@ -0,0 +1,12 @@ +#ifndef LIBUCONTEXT_BITS_H +#define LIBUCONTEXT_BITS_H + +#ifndef FREESTANDING + +#include + +typedef ucontext_t libucontext_ucontext_t; + +#endif + +#endif diff --git a/arch/common/common-defs.h b/arch/common/common-defs.h index 631d15d..8a5f12d 100644 --- a/arch/common/common-defs.h +++ b/arch/common/common-defs.h @@ -48,16 +48,7 @@ __proc: \ #ifndef LIBUCONTEXT_ASSEMBLY -#ifndef FREESTANDING - -typedef ucontext_t libucontext_ucontext_t; - -#endif - -int libucontext_getcontext(libucontext_ucontext_t *); -void libucontext_makecontext(libucontext_ucontext_t *, void (*)(), int, ...); -int libucontext_setcontext(const libucontext_ucontext_t *); -int libucontext_swapcontext(libucontext_ucontext_t *, const libucontext_ucontext_t *); +#include #endif diff --git a/arch/m68k/makecontext.c b/arch/m68k/makecontext.c index 9994800..db36fe0 100644 --- a/arch/m68k/makecontext.c +++ b/arch/m68k/makecontext.c @@ -24,7 +24,7 @@ extern void libucontext_trampoline(void); void -libucontext_makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) +libucontext_makecontext(libucontext_ucontext_t *ucp, void (*func)(void), int argc, ...) { greg_t *sp; va_list va;