Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions cmake/project_common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,22 @@ if(WIN32 AND NOT WATCOM)
set(EXTRA_LIBS gdi32.lib winspool.lib shell32.lib ole32.lib comdlg32.lib advapi32.lib)
set(WINCON_WINGUI_DEP_LIBS winmm.lib)
set(SDL2_DEP_LIBRARIES version.lib winmm.lib imm32.lib)
set(SDL3_DEP_LIBRARIES version.lib winmm.lib imm32.lib)
elseif(WATCOM_WIN32)
set(EXTRA_LIBS "")
set(WINCON_WINGUI_DEP_LIBS winmm.lib)
set(SDL2_DEP_LIBRARIES "dl")
set(SDL3_DEP_LIBRARIES "dl")
elseif(APPLE)
set(EXTRA_LIBS "")
set(WINCON_WINGUI_DEP_LIBS "")
set(SDL2_DEP_LIBRARIES "dl")
set(SDL3_DEP_LIBRARIES "dl")
else()
set(EXTRA_LIBS "")
set(WINCON_WINGUI_DEP_LIBS "")
set(SDL2_DEP_LIBRARIES "dl")
set(SDL3_DEP_LIBRARIES "dl")
endif()

if (APPLE)
Expand Down Expand Up @@ -91,6 +95,13 @@ if(PDC_BUILD_SHARED)
else()
target_link_libraries(${PDCURSE_PROJ} PRIVATE ${SDL2_LIBRARIES} ${SDL2_DEP_LIBRARIES})
endif()
elseif(${PROJECT_NAME} STREQUAL "sdl3")
if(PDC_WIDE OR PDC_UTF8)
target_link_libraries(${PDCURSE_PROJ} PRIVATE ${SDL3_LIBRARIES} ${SDL3_TTF_LIBRARY}
${FT2_LIBRARY} ${ZLIB_LIBRARY} ${SDL3_DEP_LIBRARIES})
else()
target_link_libraries(${PDCURSE_PROJ} PRIVATE ${SDL3_LIBRARIES} ${SDL3_DEP_LIBRARIES})
endif()
elseif((${PROJECT_NAME} STREQUAL "wincon") OR (${PROJECT_NAME} STREQUAL "wingui") OR (${PROJECT_NAME} STREQUAL "vt"))
target_link_libraries(${PDCURSE_PROJ} PRIVATE ${WINCON_WINGUI_DEP_LIBS})
endif()
Expand Down
3 changes: 2 additions & 1 deletion curses.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,8 @@ enum PDC_port
PDC_PORT_PLAN9 = 9,
PDC_PORT_LINUX_FB = 10,
PDC_PORT_OPENGL = 11,
PDC_PORT_OS2GUI = 12
PDC_PORT_OS2GUI = 12,
PDC_PORT_SDL3 = 13
};

/* Use this structure with PDC_get_version() for run-time info about the
Expand Down
2 changes: 1 addition & 1 deletion demos/ozdemo.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ int main(int argc, char **argv)
const char *versions_1 =
" DOS, DOSVGA, GL, Linux framebuffer/DRM, OS/2, OS/2 GUI,";
const char *versions_2 =
" Plan 9, SDL 1/2, VT, Windows console & GUI, X11";
" Plan 9, SDL 1/2/3, VT, Windows console & GUI, X11";
const char *hit_any_key =
" Type a key to continue or ESC to quit ";
SCREEN *screen_pointer = newterm(NULL, stdout, stdin);
Expand Down
87 changes: 87 additions & 0 deletions sdl3/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
cmake_minimum_required(VERSION 3.11)

if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE)
message(STATUS "No build type specified, defaulting to MinSizeRel.")
endif()

project(sdl3 VERSION "${PROJECT_VERSION}" LANGUAGES C)
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")

message(STATUS "SDL3_LIBRARIES = ${SDL3_LIBRARIES}")
message(STATUS "SDL3_INCLUDE_DIR = ${SDL3_INCLUDE_DIR}")
message(STATUS "SDL3_LIBRARY_DIR = ${SDL3_LIBRARY_DIR}")
if(PDC_WIDE OR PDC_UTF8)
message(STATUS "SDL3_TTF_LIBRARY = ${SDL3_TTF_LIBRARY}")
message(STATUS "SDL3_TTF_INCLUDE_DIR = ${SDL3_TTF_INCLUDE_DIR}")
message(STATUS "SDL3_TTF_LIBRARY_DIR = ${SDL3_TTF_LIBRARY_DIR}")
endif()

include_directories(${SDL3_INCLUDE_DIR} ${SDL3_TTF_INCLUDE_DIR})
link_directories(${SDL3_LIBRARY_DIR} ${SDL3_TTF_LIBRARY_DIR})

if(NOT pdcurses_src_files)
file(GLOB pdcurses_src_files ${CMAKE_CURRENT_SOURCE_DIR}/../pdcurses/*.c)
endif()

include(project_common)

macro (sdl3_app dir targ)

set(bin_name "${PROJECT_NAME}_${targ}")

if(${targ} STREQUAL "tuidemo")
set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tuidemo.c ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tui.c)
else()
set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${targ}.c)
endif()

if(${ARGV2})
add_executable(${bin_name} WIN32 ${src_files})
else()
add_executable(${bin_name} ${src_files})
endif()

if(PDC_WIDE OR PDC_UTF8)
target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS}
"${SDL3_LIBRARIES};${SDL3_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL3_DEP_LIBRARIES}")
else()
target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS}
"${SDL3_LIBRARIES};${SDL3_TTF_DEP_LIBRARIES};${SDL3_DEP_LIBRARIES}")
endif()

add_dependencies(${bin_name} ${PDCURSE_PROJ})
set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ})

install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications)

endmacro ()

sdl3_app(../demos version)
sdl3_app(../demos calendar)
sdl3_app(../demos firework)
sdl3_app(../demos init_col)
sdl3_app(../demos mbrot)
sdl3_app(../demos ozdemo)
sdl3_app(../demos newtest WIN32)
sdl3_app(../demos picsview)
sdl3_app(../demos ptest)
sdl3_app(../demos rain)
sdl3_app(../demos speed)
sdl3_app(../demos testcurs)
sdl3_app(../demos test_pan)
sdl3_app(../demos tuidemo)
sdl3_app(../demos widetest)
sdl3_app(../demos worm)
sdl3_app(../demos xmas)
sdl3_app(./ sdltest)

if(PDC_SDL3_DEPS_BUILD)
if(PDC_WIDE OR PDC_UTF8)
add_dependencies(${PDCURSE_PROJ} sdl3_ext sdl3_ttf_ext)
else()
add_dependencies(${PDCURSE_PROJ} sdl3_ext)
endif()
endif()

set(CPACK_COMPONENTS_ALL applications)
132 changes: 132 additions & 0 deletions sdl3/Makefile.vc
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# Visual C++ Makefile for PDCurses - SDL3
#
# Usage: nmake -f [path\]Makefile.vc [DEBUG=Y] [DLL=Y] [WIDE=Y] [UTF8=Y]
# [target]
#
# where target can be any of:
# [all|demos|pdcurses.lib|testcurs.exe...]

O = obj
E = .exe
RM = del

!ifndef PDCURSES_SRCDIR
PDCURSES_SRCDIR = ..
!endif

osdir = $(PDCURSES_SRCDIR)\sdl3
common = $(PDCURSES_SRCDIR)\common

!include $(common)\libobjs.mif
!include $(osdir)\versions.mif

SDL3_INCLUDE = -I$(SDLBASE)\include
SDL3_LIB = $(SDLBASE)\lib\$(PLATFORM)\SDL3.lib
SDL3_LIBMAIN = $(SDLBASE)\lib\$(PLATFORM)\SDL3main.lib

PDCURSES_WIN_H = $(osdir)\pdcsdl.h

CC = cl.exe -nologo

!ifndef PLATFORM
PLATFORM = $(VSCMD_ARG_TGT_ARCH)
!endif

!ifdef DEBUG
CFLAGS = -Z7 -W4 -DPDCDEBUG -D_CRT_SECURE_NO_DEPRECATE
LDFLAGS = -debug -pdb:none
!else
CFLAGS = -Ox -W4 -D_CRT_SECURE_NO_DEPRECATE
LDFLAGS =
!endif

!ifdef WIDE
WIDEOPT = -DPDC_WIDE
!endif

!ifdef UTF8
WIDEOPT = -DPDC_FORCE_UTF8
!endif

!ifdef WIDEOPT
TTF_INCLUDE = -I$(TTFBASE)\include
TTF_LIB = $(TTFBASE)\lib\$(PLATFORM)\SDL3_ttf.lib
!endif

SHL_LD = link $(LDFLAGS) -nologo -dll -machine:$(PLATFORM) -out:pdcurses.dll

LINK = link.exe -nologo -subsystem:windows

LIBEXE = lib -nologo

LIBCURSES = pdcurses.lib
CURSESDLL = pdcurses.dll

!ifdef DLL
DLLOPT = -DPDC_DLL_BUILD
PDCLIBS = $(CURSESDLL)
LIBLIBS = $(SDL3_LIB) $(TTF_LIB)
CCLIBS = $(SDL3_LIBMAIN) $(SDL3_LIB) shell32.lib
!else
PDCLIBS = $(LIBCURSES)
CCLIBS = $(SDL3_LIBMAIN) $(SDL3_LIB) $(TTF_LIB) shell32.lib
!endif

BUILD = $(CC) -I$(PDCURSES_SRCDIR) \
-c $(CFLAGS) $(DLLOPT) $(WIDEOPT) $(INFOPT)

all: $(PDCLIBS)

clean:
-$(RM) *.obj
-$(RM) $(LIBCURSES)
-$(RM) *.exe
-$(RM) $(CURSESDLL)
-$(RM) *.exp
-$(RM) pdcurses.res

demos: $(PDCLIBS) $(DEMOS) sdltest.exe

DEMOOBJS = $(DEMOS:.exe=.obj) tui.obj sdltest.obj

$(LIBOBJS) $(PDCOBJS) : $(PDCURSES_HEADERS)
$(PDCOBJS) : $(PDCURSES_WIN_H)
$(DEMOOBJS) : $(PDCURSES_CURSES_H)
$(DEMOS) : $(LIBCURSES)
panel.obj : $(PANEL_HEADER)

!ifndef DLL
$(LIBCURSES) : $(LIBOBJS) $(PDCOBJS)
$(LIBEXE) -out:$@ $(LIBOBJS) $(PDCOBJS)
!endif

$(CURSESDLL) : $(LIBOBJS) $(PDCOBJS) pdcurses.obj
$(SHL_LD) $(LIBOBJS) $(PDCOBJS) pdcurses.obj $(LIBLIBS)

pdcurses.res pdcurses.obj: $(common)\pdcurses.rc
rc -r -fopdcurses.res $(common)\pdcurses.rc
cvtres -machine:$(PLATFORM) -nologo -out:pdcurses.obj pdcurses.res

{$(srcdir)\}.c{}.obj::
$(BUILD) $<

{$(osdir)\}.c{}.obj::
$(BUILD) -Dmain=SDL_main $(SDL3_INCLUDE) $(TTF_INCLUDE) $<

{$(demodir)\}.c{}.obj::
$(BUILD) -Dmain=SDL_main $<

.obj.exe:
$(LINK) $(LDFLAGS) $< $(LIBCURSES) $(CCLIBS)

tuidemo.exe: tuidemo.obj tui.obj pdcurses.lib
$(LINK) $(LDFLAGS) $*.obj tui.obj $(LIBCURSES) $(CCLIBS)

tui.obj: $(demodir)\tui.c $(demodir)\tui.h
$(BUILD) -I$(demodir) $(demodir)\tui.c

tuidemo.obj: $(demodir)\tuidemo.c
$(BUILD) -Dmain=SDL_main -I$(demodir) $(demodir)\tuidemo.c

sdltest.exe: sdltest.obj pdcurses.obj pdcurses.lib
$(LINK) $(LDFLAGS) $*.obj $(LIBCURSES) $(LIBLIBS) $(CCLIBS)
Loading
Loading