diff --git a/src/conio/Common.gmake b/src/conio/Common.gmake index 7d9767830aeb6f231b6c597ee2ad761832072f1a..71785345869a149a42b288e4c15b0c3188a64f6d 100644 --- a/src/conio/Common.gmake +++ b/src/conio/Common.gmake @@ -27,6 +27,84 @@ endif ifdef NO_X ifndef WITH_SDL CIOLIB-MT_CFLAGS += -DNO_FONTS - CIOLIB-CFLAGS += -DNO_FONTS + CIOLIB_CFLAGS += -DNO_FONTS + endif +endif + +# Find SDL headers! +ifdef USE_SDL + ifndef WITH_SDL_AUDIO + ifdef SDL_CONFIG + ifeq ($(shell ${SDL_CONFIG} --cflags > /dev/null 2>&1 && echo YES),YES) + WITH_SDL := 1 + endif + else + ifeq ($(os),darwin) + ifeq ($(shell if [ -d /Library/Frameworks/SDL.framework ] ; then echo YES ; fi),YES) + WITH_SDL := 1 + endif + else + ifeq ($(shell sdl-config --cflags > /dev/null 2>&1 && echo YES),YES) + SDL_CONFIG := sdl-config + WITH_SDL := 1 + else + ifeq ($(shell sdl13-config --cflags > /dev/null 2>&1 && echo YES),YES) + SDL_CONFIG := sdl13-config + WITH_SDL := 1 + else + ifeq ($(shell sdl12-config --cflags > /dev/null 2>&1 && echo YES),YES) + SDL_CONFIG := sdl12-config + WITH_SDL := 1 + else + ifeq ($(shell sdl11-config --cflags > /dev/null 2>&1 && echo YES),YES) + SDL_CONFIG := sdl11-config + WITH_SDL := 1 + endif + endif + endif + endif + endif + endif + endif +endif + +ifdef WITH_SDL + ifndef WITH_SDL_AUDIO + ifdef SDL_CONFIG + ifeq ($(shell ${SDL_CONFIG} --cflags > /dev/null 2>&1 && echo YES),YES) + CIOLIB-MT_CFLAGS += -DWITH_SDL + CIOLIB-MT_CFLAGS += $(shell $(SDL_CONFIG) --cflags) + CIOLIB_CFLAGS += -DWITH_SDL + CIOLIB_CFLAGS += $(shell $(SDL_CONFIG) --cflags) + ifdef STATIC_SDL + CIOLIB-MT_LIBS += $(shell $(SDL_CONFIG) --static-libs) + CIOLIB-MT_CFLAGS += -DSTATIC_SDL + CIOLIB-LIBS += $(shell $(SDL_CONFIG) --static-libs) + CIOLIB-CFLAGS += -DSTATIC_SDL + else + ifeq ($(os),darwin) + CIOLIB-MT_LIBS += $(UL_PRE)dl$(UL_SUF) + CIOLIB_LIBS += $(UL_PRE)dl$(UL_SUF) + endif + ifeq ($(os),linux) + CIOLIB-MT_LIBS += $(UL_PRE)dl$(UL_SUF) + CIOLIB_LIBS += $(UL_PRE)dl$(UL_SUF) + endif + ifeq ($(os),sunos) + CIOLIB-MT_LIBS += $(UL_PRE)dl$(UL_SUF) + CIOLIB_LIBS += $(UL_PRE)dl$(UL_SUF) + endif + endif + endif + else + ifeq ($(os),darwin) + CIOLIB-MT_CFLAGS += -DWITH_SDL -DSTATIC_SDL + CIOLIB-MT_CFLAGS += -I/Library/Frameworks/SDL.framework/Headers + CIOLIB-MT_LIBS += -framework SDL -framework Cocoa -framework Carbon -I/Library/Frameworks/SDL.framework/Headers + CIOLIB_CFLAGS += -DWITH_SDL -DSTATIC_SDL + CIOLIB_CFLAGS += -I/Library/Frameworks/SDL.framework/Headers + CIOLIB_LIBS += -framework SDL -framework Cocoa -framework Carbon -I/Library/Frameworks/SDL.framework/Headers + endif + endif endif endif diff --git a/src/conio/GNUmakefile b/src/conio/GNUmakefile index 9dc883986afe86715cde912e46aa53fc5aa407a4..279dc84974e4c3eda5d30679dc3570ec9481cd5e 100644 --- a/src/conio/GNUmakefile +++ b/src/conio/GNUmakefile @@ -12,8 +12,17 @@ else $(MTOBJODIR)$(DIRSEP)x_cio$(OFILE) endif -ifdef WITH_SDL +ifdef WITH_SDL_AUDIO OBJS += $(MTOBJODIR)$(DIRSEP)sdl_con$(OFILE) +else + ifdef WITH_SDL + OBJS += $(MTOBJODIR)$(DIRSEP)sdl_con$(OFILE) + OBJS += $(MTOBJODIR)$(DIRSEP)sdlfuncs$(OFILE) + ifeq ($(os),darwin) + MTOBJS += $(MTOBJODIR)$(DIRSEP)SDLMain$(OFILE) + OBJS += $(OBJODIR)$(DIRSEP)SDLMain$(OFILE) + endif + endif endif ifeq ($(os),netbsd) diff --git a/src/conio/ciolib.c b/src/conio/ciolib.c index c734a4a669aa01b25fd77a62c5a29fd3bb72f2bd..a87d40402042a70eb7096b79705eed25e60a9a9e 100644 --- a/src/conio/ciolib.c +++ b/src/conio/ciolib.c @@ -48,7 +48,7 @@ #define CIOLIB_NO_MACROS #include "ciolib.h" -#ifdef WITH_SDL +#if defined(WITH_SDL) || defined(WITH_SDL_AUDIO) #include "sdl_con.h" #endif #ifdef _WIN32 @@ -111,7 +111,7 @@ CIOLIBEXPORT char * CIOLIBCALL ciolib_getcliptext(void); #define CIOLIB_INIT() { if(initialized != 1) initciolib(CIOLIB_MODE_AUTO); } -#ifdef WITH_SDL +#if defined(WITH_SDL) || defined(WITH_SDL_AUDIO) int try_sdl_init(int mode) { if(!sdl_initciolib(mode)) { @@ -304,7 +304,7 @@ CIOLIBEXPORT int CIOLIBCALL initciolib(int mode) switch(mode) { case CIOLIB_MODE_AUTO: -#ifdef WITH_SDL +#if defined(WITH_SDL) || defined(WITH_SDL_AUDIO) if(!try_sdl_init(mode)) #endif #ifdef _WIN32 @@ -337,7 +337,7 @@ CIOLIBEXPORT int CIOLIBCALL initciolib(int mode) try_ansi_init(mode); break; -#ifdef WITH_SDL +#if defined(WITH_SDL) || defined(WITH_SDL_AUDIO) case CIOLIB_MODE_SDL: case CIOLIB_MODE_SDL_FULLSCREEN: try_sdl_init(mode); diff --git a/src/conio/ciolib.h b/src/conio/ciolib.h index 3f9378ab148e17cacaada2401a9d917dec5c2dac..c497070c8ac7d707cb0a99eac4884d6d5337d5f6 100644 --- a/src/conio/ciolib.h +++ b/src/conio/ciolib.h @@ -361,4 +361,13 @@ CIOLIBEXPORT int CIOLIBCALL ciolib_loadfont(char *filename); #define loadfont(a) ciolib_loadfont(a) #endif +#ifdef WITH_SDL + #include <SDL.h> + + #ifdef main + #undef main + #endif + #define main CIOLIB_main +#endif + #endif /* Do not add anything after this line */ diff --git a/src/conio/sdlfuncs.c b/src/conio/sdlfuncs.c index 7b1a66d322642244501cb56af6fb358672acf85f..fc02014c0fb7b96ed366a9436be3477c61b496bc 100644 --- a/src/conio/sdlfuncs.c +++ b/src/conio/sdlfuncs.c @@ -28,7 +28,7 @@ static int main_returned=0; static SDL_sem *sdl_main_sem; SDL_sem *sdl_exit_sem; -int XPDEV_main(int argc, char **argv, char **enviro); +int CIOLIB_main(int argc, char **argv, char **enviro); #ifdef STATIC_SDL int load_sdl_funcs(struct sdlfuncs *sdlf) @@ -479,7 +479,7 @@ static int sdl_run_main(void *data) int ret; args=data; - ret=XPDEV_main(args->argc, args->argv, args->enviro); + ret=CIOLIB_main(args->argc, args->argv, args->enviro); main_returned=1; sdl.SemPost(sdl_main_sem); if(sdl_exit_drawing_thread!=NULL) @@ -589,6 +589,6 @@ int SDL_main_env(int argc, char **argv, char **env) sdl.WaitThread(main_thread, &main_ret); } else - main_ret=XPDEV_main(argc, argv, env); + main_ret=CIOLIB_main(argc, argv, env); return(main_ret); }