From a4f225700f12dcbb69cb13d2b7c0a03b829782d9 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Tue, 12 Oct 2021 15:33:35 +0200 Subject: [PATCH] Improving FreeBSD integration support --- boards/base/FreeBSD-SDL/board.mk | 5 ++--- gfxconf.example.h | 1 + src/gos/gos.h | 2 ++ src/gos/gos_linux.c | 4 ++-- src/gos/gos_linux.h | 4 ++-- src/gos/gos_options.h | 7 +++++++ src/gos/gos_rules.h | 6 +++--- 7 files changed, 19 insertions(+), 10 deletions(-) diff --git a/boards/base/FreeBSD-SDL/board.mk b/boards/base/FreeBSD-SDL/board.mk index ae3cc20b..27f57128 100644 --- a/boards/base/FreeBSD-SDL/board.mk +++ b/boards/base/FreeBSD-SDL/board.mk @@ -1,7 +1,6 @@ -GFXINC += $(GFXLIB)/boards/base/Linux +GFXINC += GFXSRC += -GFXDEFS += -DGFX_USE_OS_LINUX=GFXON +GFXDEFS += -DGFX_USE_OS_FREEBSD=GFXON GFXLIBS += rt include $(GFXLIB)/drivers/multiple/SDL/driver.mk - diff --git a/gfxconf.example.h b/gfxconf.example.h index c7e253fd..11008cff 100644 --- a/gfxconf.example.h +++ b/gfxconf.example.h @@ -36,6 +36,7 @@ // #define GFX_FREERTOS_USE_TRACE GFXOFF //#define GFX_USE_OS_WIN32 GFXOFF //#define GFX_USE_OS_LINUX GFXOFF +//#define GFX_USE_OS_FREEBSD GFXOFF //#define GFX_USE_OS_OSX GFXOFF //#define GFX_USE_OS_ECOS GFXOFF //#define GFX_USE_OS_RAWRTOS GFXOFF diff --git a/src/gos/gos.h b/src/gos/gos.h index 4d8622d5..3f680064 100644 --- a/src/gos/gos.h +++ b/src/gos/gos.h @@ -468,6 +468,8 @@ #include "gos_win32.h" #elif GFX_USE_OS_LINUX #include "gos_linux.h" +#elif GFX_USE_OS_FREEBSD + #include "gos_linux.h" #elif GFX_USE_OS_OSX #include "gos_osx.h" #elif GFX_USE_OS_RAW32 diff --git a/src/gos/gos_linux.c b/src/gos/gos_linux.c index f7ac1f78..8f597916 100644 --- a/src/gos/gos_linux.c +++ b/src/gos/gos_linux.c @@ -10,7 +10,7 @@ #include "../../gfx.h" -#if GFX_USE_OS_LINUX +#if GFX_USE_OS_LINUX || GFX_USE_OS_FREEBSD // Linux seems to have deprecated pthread_yield() and now says to use sched_yield() #define USE_SCHED_NOT_PTHREAD_YIELD GFXON @@ -238,4 +238,4 @@ gThreadreturn gfxThreadWait(gThread thread) { } #endif // GFX_USE_POSIX_SEMAPHORES -#endif /* GFX_USE_OS_LINUX */ +#endif /* GFX_USE_OS_LINUX || GFX_USE_OS_FREEBSD */ diff --git a/src/gos/gos_linux.h b/src/gos/gos_linux.h index 5bc9035b..886a689f 100644 --- a/src/gos/gos_linux.h +++ b/src/gos/gos_linux.h @@ -8,7 +8,7 @@ #ifndef _GOS_LINUX_H #define _GOS_LINUX_H -#if GFX_USE_OS_LINUX +#if GFX_USE_OS_LINUX || GFX_USE_OS_FREEBSD // We don't put this in the general sys_options.h as it is Linux specific. #ifndef GFX_USE_POSIX_SEMAPHORES @@ -88,6 +88,6 @@ void gfxSemSignal(gSem *psem); gThread gfxThreadCreate(void *stackarea, gMemSize stacksz, gThreadpriority prio, GFX_THREAD_FUNCTION((*fn),p), void *param); gThreadreturn gfxThreadWait(gThread thread); -#endif /* GFX_USE_OS_LINUX */ +#endif /* GFX_USE_OS_LINUX || GFX_USE_OS_FREEBSD */ #endif /* _GOS_LINUX_H */ diff --git a/src/gos/gos_options.h b/src/gos/gos_options.h index bdb2b139..7348b282 100644 --- a/src/gos/gos_options.h +++ b/src/gos/gos_options.h @@ -48,6 +48,13 @@ #ifndef GFX_USE_OS_LINUX #define GFX_USE_OS_LINUX GFXOFF #endif + /** + * @brief Use a FreeBSD based system running X11 + * @details Defaults to GFXOFF + */ + #ifndef GFX_USE_OS_FREEBSD + #define GFX_USE_OS_FREEBSD GFXOFF + #endif /** * @brief Use a Mac OS-X based system * @details Defaults to GFXOFF diff --git a/src/gos/gos_rules.h b/src/gos/gos_rules.h index 4fd1e383..c37e7238 100644 --- a/src/gos/gos_rules.h +++ b/src/gos/gos_rules.h @@ -16,11 +16,11 @@ #ifndef _GOS_RULES_H #define _GOS_RULES_H -#if !GFX_USE_OS_CHIBIOS && !GFX_USE_OS_WIN32 && !GFX_USE_OS_LINUX && !GFX_USE_OS_OSX && !GFX_USE_OS_RAW32 && !GFX_USE_OS_FREERTOS && !GFX_USE_OS_ECOS && !GFX_USE_OS_RAWRTOS && !GFX_USE_OS_ARDUINO && !GFX_USE_OS_CMSIS && !GFX_USE_OS_CMSIS2 && !GFX_USE_OS_KEIL && !GFX_USE_OS_RTX5 && !GFX_USE_OS_NIOS && !GFX_USE_OS_ZEPHYR && !GFX_USE_OS_QT +#if !GFX_USE_OS_CHIBIOS && !GFX_USE_OS_WIN32 && !GFX_USE_OS_LINUX && !GFX_USE_OS_FREEBSD && !GFX_USE_OS_OSX && !GFX_USE_OS_RAW32 && !GFX_USE_OS_FREERTOS && !GFX_USE_OS_ECOS && !GFX_USE_OS_RAWRTOS && !GFX_USE_OS_ARDUINO && !GFX_USE_OS_CMSIS && !GFX_USE_OS_CMSIS2 && !GFX_USE_OS_KEIL && !GFX_USE_OS_RTX5 && !GFX_USE_OS_NIOS && !GFX_USE_OS_ZEPHYR && !GFX_USE_OS_QT #error "GOS: No operating system has been defined." #endif -#if GFX_USE_OS_CHIBIOS + GFX_USE_OS_WIN32 + GFX_USE_OS_LINUX + GFX_USE_OS_OSX + GFX_USE_OS_RAW32 + GFX_USE_OS_FREERTOS + GFX_USE_OS_ECOS + GFX_USE_OS_RAWRTOS + GFX_USE_OS_ARDUINO + GFX_USE_OS_CMSIS + GFX_USE_OS_CMSIS2 + GFX_USE_OS_KEIL + GFX_USE_OS_RTX5 + GFX_USE_OS_NIOS + GFX_USE_OS_ZEPHYR + GFX_USE_OS_QT != 1 * GFXON +#if GFX_USE_OS_CHIBIOS + GFX_USE_OS_WIN32 + GFX_USE_OS_LINUX + GFX_USE_OS_FREEBSD + GFX_USE_OS_OSX + GFX_USE_OS_RAW32 + GFX_USE_OS_FREERTOS + GFX_USE_OS_ECOS + GFX_USE_OS_RAWRTOS + GFX_USE_OS_ARDUINO + GFX_USE_OS_CMSIS + GFX_USE_OS_CMSIS2 + GFX_USE_OS_KEIL + GFX_USE_OS_RTX5 + GFX_USE_OS_NIOS + GFX_USE_OS_ZEPHYR + GFX_USE_OS_QT != 1 * GFXON #error "GOS: More than one operation system has been defined as GFXON." #endif @@ -33,7 +33,7 @@ #endif #if GFX_EMULATE_MALLOC - #if GFX_USE_OS_WIN32 || GFX_USE_OS_LINUX || GFX_USE_OS_OSX || GFX_USE_OS_ECOS || \ + #if GFX_USE_OS_WIN32 || GFX_USE_OS_LINUX || GFX_USE_OS_FREEBSD || GFX_USE_OS_OSX || GFX_USE_OS_ECOS || \ (GFX_OS_HEAP_SIZE == 0 && (GFX_USE_OS_RAW32 || GFX_USE_OS_ARDUINO || GFX_USE_OS_CMSIS || GFX_USE_OS_CMSIS2 || GFX_USE_OS_KEIL || GFX_USE_OS_RTX5)) #if GFX_DISPLAY_RULE_WARNINGS #if GFX_COMPILER_WARNING_TYPE == GFX_COMPILER_WARNING_DIRECT