From 6fd52a3f0f13b6d57a0cd1062961ec963342a3e6 Mon Sep 17 00:00:00 2001 From: frostbane Date: Tue, 24 Mar 2026 00:44:13 +0900 Subject: [PATCH 1/2] Created a CMakeLists.txt file for the x11new port --- x11new/CMakeLists.txt | 171 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 x11new/CMakeLists.txt diff --git a/x11new/CMakeLists.txt b/x11new/CMakeLists.txt new file mode 100644 index 00000000..0793a3e6 --- /dev/null +++ b/x11new/CMakeLists.txt @@ -0,0 +1,171 @@ +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 "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.") +endif() +set (CMAKE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") +set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake") +set (PDCURSES_SRCDIR "${CMAKE_SOURCE_DIR}") + +include (get_version) +project(pdcurses VERSION "${CURSES_VERSION}" LANGUAGES C) + +message(STATUS "Generator .............. ${CMAKE_GENERATOR}") +message(STATUS "Build Type ............. ${CMAKE_BUILD_TYPE}") + +include(build_options) +option(PDC_NO_LEAKS "No Leaks" OFF) +option(PDC_CHTYPE_16 "CHTYPE_16" OFF) + +set (PDCURSES_SOURCES ${PDCURSES_SRCDIR}/pdcurses/addch.c + ${PDCURSES_SRCDIR}/pdcurses/addchstr.c + ${PDCURSES_SRCDIR}/pdcurses/addstr.c + ${PDCURSES_SRCDIR}/pdcurses/attr.c + ${PDCURSES_SRCDIR}/pdcurses/beep.c + ${PDCURSES_SRCDIR}/pdcurses/bkgd.c + ${PDCURSES_SRCDIR}/pdcurses/border.c + ${PDCURSES_SRCDIR}/pdcurses/clear.c + ${PDCURSES_SRCDIR}/pdcurses/color.c + ${PDCURSES_SRCDIR}/pdcurses/debug.c + ${PDCURSES_SRCDIR}/pdcurses/delch.c + ${PDCURSES_SRCDIR}/pdcurses/deleteln.c + ${PDCURSES_SRCDIR}/pdcurses/getch.c + ${PDCURSES_SRCDIR}/pdcurses/getstr.c + ${PDCURSES_SRCDIR}/pdcurses/getyx.c + ${PDCURSES_SRCDIR}/pdcurses/inch.c + ${PDCURSES_SRCDIR}/pdcurses/inchstr.c + ${PDCURSES_SRCDIR}/pdcurses/initscr.c + ${PDCURSES_SRCDIR}/pdcurses/inopts.c + ${PDCURSES_SRCDIR}/pdcurses/insch.c + ${PDCURSES_SRCDIR}/pdcurses/insstr.c + ${PDCURSES_SRCDIR}/pdcurses/instr.c + ${PDCURSES_SRCDIR}/pdcurses/kernel.c + ${PDCURSES_SRCDIR}/pdcurses/keyname.c + ${PDCURSES_SRCDIR}/pdcurses/mouse.c + ${PDCURSES_SRCDIR}/pdcurses/move.c + ${PDCURSES_SRCDIR}/pdcurses/outopts.c + ${PDCURSES_SRCDIR}/pdcurses/overlay.c + ${PDCURSES_SRCDIR}/pdcurses/pad.c + ${PDCURSES_SRCDIR}/pdcurses/panel.c + ${PDCURSES_SRCDIR}/pdcurses/printw.c + ${PDCURSES_SRCDIR}/pdcurses/refresh.c + ${PDCURSES_SRCDIR}/pdcurses/scanw.c + ${PDCURSES_SRCDIR}/pdcurses/scr_dump.c + ${PDCURSES_SRCDIR}/pdcurses/scroll.c + ${PDCURSES_SRCDIR}/pdcurses/slk.c + ${PDCURSES_SRCDIR}/pdcurses/termattr.c + ${PDCURSES_SRCDIR}/pdcurses/terminfo.c + ${PDCURSES_SRCDIR}/pdcurses/touch.c + ${PDCURSES_SRCDIR}/pdcurses/util.c + ${PDCURSES_SRCDIR}/pdcurses/window.c + ${PDCURSES_SRCDIR}/x11new/pdcclip.c + ${PDCURSES_SRCDIR}/x11new/pdcdisp.c + ${PDCURSES_SRCDIR}/x11new/pdcgetsc.c + ${PDCURSES_SRCDIR}/x11new/pdckbd.c + ${PDCURSES_SRCDIR}/x11new/pdcscrn.c + ${PDCURSES_SRCDIR}/x11new/pdcsetsc.c + ${PDCURSES_SRCDIR}/x11new/pdcutil.c + ${PDCURSES_SRCDIR}/x11new/pdcutil.c) + +if (PDC_BUILD_SHARED) + add_library(pdcurses SHARED ${PDCURSES_SOURCES}) +else () + add_library(pdcurses STATIC ${PDCURSES_SOURCES}) +endif () + +target_include_directories(pdcurses PRIVATE "${PDCURSES_SRCDIR}" + "${CMAKE_CURRENT_BINARY_DIR}") + +target_compile_options (pdcurses PRIVATE -Wall -Wextra -pedantic -Werror -fPIC) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_options (pdcurses PRIVATE -g3) + target_compile_definitions(pdcurses PUBLIC -DPDCDEBUG) +else () + target_compile_options (pdcurses PRIVATE -O3) +endif () + +if (PDC_NO_LEAKS) + target_compile_definitions(pdcurses PUBLIC -DNO_LEAKS) +endif () + + +if (PDC_UTF8) + target_compile_definitions(pdcurses PUBLIC -DPDC_FORCE_UTF8) +endif () + +if (PDC_WIDE) + target_compile_definitions(pdcurses PUBLIC -DPDC_WIDE) +endif () + +if (PDC_CHTYPE_32) + target_compile_definitions(pdcurses PUBLIC -DCHTYPE_32) +endif () + +if (PDC_CHTYPE_16) + target_compile_definitions(pdcurses PUBLIC -DCHTYPE_16) +endif () + +target_link_libraries (pdcurses -lX11 -lpthread) + +install (TARGETS pdcurses + EXPORT pdcurses_Targets + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin) +install (FILES "${PDCURSES_SRCDIR}/curses.h" + "${PDCURSES_SRCDIR}/curspriv.h" + DESTINATION include) + +macro (x11_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() + target_include_directories(${bin_name} PRIVATE "${PDCURSES_SRCDIR}" + "${CMAKE_CURRENT_BINARY_DIR}") + + target_link_libraries(${bin_name} pdcurses -lX11 -lpthread) + + add_dependencies(${bin_name} pdcurses) + set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) +endmacro () + +# demos +x11_app(../demos calendar) +x11_app(../demos firework) +x11_app(../demos init_col) +x11_app(../demos mbrot) +x11_app(../demos newtest) +x11_app(../demos ozdemo) +x11_app(../demos picsview) +x11_app(../demos ptest) +x11_app(../demos rain) +x11_app(../demos speed) +x11_app(../demos test_pan) +x11_app(../demos testcurs) +x11_app(../demos widetest) +x11_app(../demos worm) +x11_app(../demos xmas) +x11_app(../demos tuidemo) + +# tests +x11_app(../tests brk_test) +x11_app(../tests del_test) +x11_app(../tests focus) +x11_app(../tests ins_del) +x11_app(../tests keytest) +x11_app(../tests opaque) +x11_app(../tests restart) +x11_app(../tests ripoff) +x11_app(../tests show_col) +x11_app(../tests show_uni) From 8bd7ad6b7ac2436eec101f6b265bd461bec1c74e Mon Sep 17 00:00:00 2001 From: frostbane Date: Fri, 10 Apr 2026 22:49:44 +0900 Subject: [PATCH 2/2] Add x11new to the main CMakeLists.txt --- CMakeLists.txt | 26 +++++++++++++------- cmake/build_options.cmake | 2 ++ x11new/CMakeLists.txt | 50 ++++++++++++++++++++++----------------- 3 files changed, 47 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 46239b27..37aca736 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,21 +47,21 @@ elseif(PDC_DOSVT_BUILD) # currently requires a unique toolchain file elseif(PDC_OS2_BUILD) # currently requires a unique toolchain file add_subdirectory(os2) - + else() add_subdirectory(ncurses) - + if(PDC_SDL2_BUILD) - + add_subdirectory(sdl2) - + endif() if(PDC_GL_BUILD) - + add_subdirectory(gl) - + endif() if(UNIX) @@ -69,13 +69,21 @@ else() endif() if(WIN32) - + add_subdirectory(wincon) add_subdirectory(wingui) add_subdirectory(vt) - + + endif() + + if(PDC_X11_BUILD) + + # set(PDC_UTF8 ON) + # set(PDC_WIDE ON) + add_subdirectory(x11new) + endif() - + endif() add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake") diff --git a/cmake/build_options.cmake b/cmake/build_options.cmake index 718e0b78..e4db1b99 100644 --- a/cmake/build_options.cmake +++ b/cmake/build_options.cmake @@ -11,6 +11,7 @@ option(PDC_DOSVT_BUILD "Build VT Project" OFF) option(PDC_SDL2_BUILD "Build SDL2 Project" ON) option(PDC_SDL2_DEPS_BUILD "Build SDL2 and dependencies" ON) option(PDC_GL_BUILD "Build OpenGL Project" ON) +option(PDC_X11_BUILD "Build X11 Project" OFF) message(STATUS "PDC_BUILD_SHARED ....... ${PDC_BUILD_SHARED}") message(STATUS "PDC_UTF8 ............... ${PDC_UTF8}") @@ -24,6 +25,7 @@ message(STATUS "PDC_DOSVT_BUILD ........ ${PDC_DOSVT_BUILD}") message(STATUS "PDC_SDL2_BUILD ......... ${PDC_SDL2_BUILD}") message(STATUS "PDC_SDL2_DEPS_BUILD .... ${PDC_SDL2_DEPS_BUILD}") message(STATUS "PDC_GL_BUILD ........... ${PDC_GL_BUILD}") +message(STATUS "PDC_X11_BUILD .......... ${PDC_X11_BUILD}") # normalize a windows path file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}" CMAKE_INSTALL_PREFIX) diff --git a/x11new/CMakeLists.txt b/x11new/CMakeLists.txt index 0793a3e6..1d544a57 100644 --- a/x11new/CMakeLists.txt +++ b/x11new/CMakeLists.txt @@ -9,12 +9,13 @@ set (CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake") set (PDCURSES_SRCDIR "${CMAKE_SOURCE_DIR}") include (get_version) -project(pdcurses VERSION "${CURSES_VERSION}" LANGUAGES C) +project(x11 VERSION "${CURSES_VERSION}" LANGUAGES C) + +message(STATUS "**** ${PROJECT_NAME} ****") message(STATUS "Generator .............. ${CMAKE_GENERATOR}") message(STATUS "Build Type ............. ${CMAKE_BUILD_TYPE}") -include(build_options) option(PDC_NO_LEAKS "No Leaks" OFF) option(PDC_CHTYPE_16 "CHTYPE_16" OFF) @@ -69,50 +70,53 @@ set (PDCURSES_SOURCES ${PDCURSES_SRCDIR}/pdcurses/addch.c ${PDCURSES_SRCDIR}/x11new/pdcutil.c) if (PDC_BUILD_SHARED) - add_library(pdcurses SHARED ${PDCURSES_SOURCES}) + add_library(${PROJECT_NAME} SHARED ${PDCURSES_SOURCES}) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "pdcurses") else () - add_library(pdcurses STATIC ${PDCURSES_SOURCES}) + add_library(${PROJECT_NAME} STATIC ${PDCURSES_SOURCES}) + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "pdcursesstatic") endif () -target_include_directories(pdcurses PRIVATE "${PDCURSES_SRCDIR}" +target_include_directories(${PROJECT_NAME} PRIVATE "${PDCURSES_SRCDIR}" "${CMAKE_CURRENT_BINARY_DIR}") -target_compile_options (pdcurses PRIVATE -Wall -Wextra -pedantic -Werror -fPIC) +target_compile_options (${PROJECT_NAME} PRIVATE -Wall -Wextra -pedantic -Werror -fPIC) if (CMAKE_BUILD_TYPE STREQUAL "Debug") - target_compile_options (pdcurses PRIVATE -g3) - target_compile_definitions(pdcurses PUBLIC -DPDCDEBUG) + target_compile_options (${PROJECT_NAME} PRIVATE -g3) + target_compile_definitions(${PROJECT_NAME} PUBLIC -DPDCDEBUG) else () - target_compile_options (pdcurses PRIVATE -O3) + target_compile_options (${PROJECT_NAME} PRIVATE -O3) endif () if (PDC_NO_LEAKS) - target_compile_definitions(pdcurses PUBLIC -DNO_LEAKS) + target_compile_definitions(${PROJECT_NAME} PUBLIC -DNO_LEAKS) endif () if (PDC_UTF8) - target_compile_definitions(pdcurses PUBLIC -DPDC_FORCE_UTF8) + target_compile_definitions(${PROJECT_NAME} PUBLIC -DPDC_FORCE_UTF8) endif () if (PDC_WIDE) - target_compile_definitions(pdcurses PUBLIC -DPDC_WIDE) + target_compile_definitions(${PROJECT_NAME} PUBLIC -DPDC_WIDE) endif () if (PDC_CHTYPE_32) - target_compile_definitions(pdcurses PUBLIC -DCHTYPE_32) + target_compile_definitions(${PROJECT_NAME} PUBLIC -DCHTYPE_32) endif () if (PDC_CHTYPE_16) - target_compile_definitions(pdcurses PUBLIC -DCHTYPE_16) + target_compile_definitions(${PROJECT_NAME} PUBLIC -DCHTYPE_16) endif () -target_link_libraries (pdcurses -lX11 -lpthread) +target_link_libraries (${PROJECT_NAME} -lX11 -lpthread) +set(PDCURSES_DIST ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}) -install (TARGETS pdcurses - EXPORT pdcurses_Targets - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - RUNTIME DESTINATION bin) +install (TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}_Targets + ARCHIVE DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME} + LIBRARY DESTINATION ${PDCURSES_DIST}/lib/${PROJECT_NAME} + RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME}) install (FILES "${PDCURSES_SRCDIR}/curses.h" "${PDCURSES_SRCDIR}/curspriv.h" DESTINATION include) @@ -134,10 +138,11 @@ macro (x11_app dir targ) target_include_directories(${bin_name} PRIVATE "${PDCURSES_SRCDIR}" "${CMAKE_CURRENT_BINARY_DIR}") - target_link_libraries(${bin_name} pdcurses -lX11 -lpthread) + target_link_libraries(${bin_name} ${PROJECT_NAME} -lX11 -lpthread) - add_dependencies(${bin_name} pdcurses) + add_dependencies(${bin_name} ${PROJECT_NAME}) set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) + install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/${targ}" DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME}) endmacro () # demos @@ -169,3 +174,4 @@ x11_app(../tests restart) x11_app(../tests ripoff) x11_app(../tests show_col) x11_app(../tests show_uni) +