From c3d61b759a2a12a8a0ce2abb0c39e5345c93a78c Mon Sep 17 00:00:00 2001 From: trexxet Date: Sun, 25 Jan 2026 03:41:38 +0500 Subject: [PATCH 1/2] Use relative cmake paths --- CMakeLists.txt | 16 +++++----------- cmake/build_dependencies.cmake | 2 +- cmake/dll_version.cmake | 4 ++-- cmake/get_version.cmake | 2 +- cmake/project_common.cmake | 2 +- cmake/sdl2_ttf/CMakeLists.txt | 8 ++++---- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 46239b27a..14d3c313b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,9 @@ if(NOT CMAKE_BUILD_TYPE) message(STATUS "CMAKE_BUILD_TYPE not set, defaulting to MinSizeRel.") endif() -set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -include (get_version) +include(get_version) project(pdcurses VERSION "${CURSES_VERSION}" LANGUAGES C) if(MSVC) @@ -47,21 +47,17 @@ 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 +65,11 @@ else() endif() if(WIN32) - add_subdirectory(wincon) add_subdirectory(wingui) add_subdirectory(vt) - endif() - + endif() add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake") diff --git a/cmake/build_dependencies.cmake b/cmake/build_dependencies.cmake index 91b51c2e0..db1b6bf8e 100644 --- a/cmake/build_dependencies.cmake +++ b/cmake/build_dependencies.cmake @@ -138,7 +138,7 @@ IF (PDC_SDL2_DEPS_BUILD) GIT_TAG "release-${SDL2_TTF_RELEASE}" GIT_SHALLOW true PATCH_COMMAND cmake -E copy - ${CMAKE_SOURCE_DIR}/cmake/sdl2_ttf/CMakeLists.txt + ${CMAKE_CURRENT_LIST_DIR}/sdl2_ttf/CMakeLists.txt ${CMAKE_BINARY_DIR}/sdl2_ttf/CMakeLists.txt UPDATE_COMMAND "" DOWNLOAD_DIR ${CMAKE_BINARY_DIR} diff --git a/cmake/dll_version.cmake b/cmake/dll_version.cmake index de6d69695..f9760a61b 100644 --- a/cmake/dll_version.cmake +++ b/cmake/dll_version.cmake @@ -20,5 +20,5 @@ endif() set(PRODUCT_FILE_DESCRIPTION "${PRODUCT_FILE_DESCRIPTION} ${TOOL_NAME} ${TARGET_ARCH}") -configure_file ( ${CMAKE_SOURCE_DIR}/cmake/version.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.rc @ONLY ) -configure_file ( ${CMAKE_SOURCE_DIR}/cmake/resource.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/resource.h @ONLY ) +configure_file ( ${CMAKE_CURRENT_LIST_DIR}/version.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/version.rc @ONLY ) +configure_file ( ${CMAKE_CURRENT_LIST_DIR}/resource.in.cmake ${CMAKE_CURRENT_BINARY_DIR}/resource.h @ONLY ) diff --git a/cmake/get_version.cmake b/cmake/get_version.cmake index 80b9edd96..dcd282a7f 100644 --- a/cmake/get_version.cmake +++ b/cmake/get_version.cmake @@ -1,5 +1,5 @@ -file(READ ${CMAKE_SOURCE_DIR}/curses.h _CURSES_H_CONTENTS) +file(READ ${CMAKE_CURRENT_SOURCE_DIR}/curses.h _CURSES_H_CONTENTS) string(REGEX MATCH "#define PDC_VER_MAJOR ([a-zA-Z0-9_]+)" PDC_VER_MAJOR "${_CURSES_H_CONTENTS}") string(REPLACE "#define PDC_VER_MAJOR " "" PDC_VER_MAJOR "${PDC_VER_MAJOR}") diff --git a/cmake/project_common.cmake b/cmake/project_common.cmake index 15939a560..0e22ba585 100644 --- a/cmake/project_common.cmake +++ b/cmake/project_common.cmake @@ -1,6 +1,6 @@ message(STATUS "**** ${PROJECT_NAME} ****") -set(PDCURSES_SRCDIR ${CMAKE_SOURCE_DIR}) +get_directory_property(PDCURSES_SRCDIR PARENT_DIRECTORY) set(PDCURSES_DIST ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}) set(osdir ${PDCURSES_SRCDIR}/${PROJECT_NAME}) diff --git a/cmake/sdl2_ttf/CMakeLists.txt b/cmake/sdl2_ttf/CMakeLists.txt index 5ed210bb8..aceeed344 100644 --- a/cmake/sdl2_ttf/CMakeLists.txt +++ b/cmake/sdl2_ttf/CMakeLists.txt @@ -9,7 +9,7 @@ PROJECT (sdl2_ttf VERSION ${SDL2_TTF_RELEASE} LANGUAGES C) if(MSVC) SET(CMAKE_DEBUG_POSTFIX d) -endif() +endif() INCLUDE_DIRECTORIES( ${ZLIB_INCLUDE_DIR} @@ -28,7 +28,7 @@ set(SDL2_ttf_source_files SDL_ttf.c) IF(WIN32) LIST(INSERT SDL2_ttf_source_files 0 version.rc) -ENDIF() +ENDIF() if (APPLE) find_library(COREVIDEO CoreVideo) @@ -84,11 +84,11 @@ INSTALL (TARGETS SDL2_ttf LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib COMPONENT libraries) -ADD_EXECUTABLE (showfont ${CMAKE_SOURCE_DIR}/showfont.c) +ADD_EXECUTABLE (showfont ${PROJECT_SOURCE_DIR}/showfont.c) TARGET_LINK_LIBRARIES (showfont SDL2_ttf ${SDL2_LIBRARIES} ${FT2_LIBRARY} ${ZLIB_LIBRARY} ${EXTRA_LIBS}) INSTALL (TARGETS showfont RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT applications) -ADD_EXECUTABLE (glfont ${CMAKE_SOURCE_DIR}/glfont.c) +ADD_EXECUTABLE (glfont ${PROJECT_SOURCE_DIR}/glfont.c) TARGET_LINK_LIBRARIES (glfont SDL2_ttf ${SDL2_LIBRARIES} ${FT2_LIBRARY} ${ZLIB_LIBRARY} ${EXTRA_LIBS}) INSTALL (TARGETS glfont RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin COMPONENT applications) From 6f7aebea79016d95d81d612be42d099d42256131 Mon Sep 17 00:00:00 2001 From: trexxet Date: Mon, 26 Jan 2026 22:34:10 +0500 Subject: [PATCH 2/2] Fix include paths when used as a CMake dependency - add scopes to target_link_libraries - add pdcurses_include_dirs interface target --- cmake/project_common.cmake | 47 ++++++++++++++++++-------------------- gl/CMakeLists.txt | 4 ++-- ncurses/CMakeLists.txt | 2 +- sdl2/CMakeLists.txt | 4 ++-- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/cmake/project_common.cmake b/cmake/project_common.cmake index 0e22ba585..590374fdc 100644 --- a/cmake/project_common.cmake +++ b/cmake/project_common.cmake @@ -1,24 +1,22 @@ message(STATUS "**** ${PROJECT_NAME} ****") -get_directory_property(PDCURSES_SRCDIR PARENT_DIRECTORY) set(PDCURSES_DIST ${CMAKE_INSTALL_PREFIX}/${CMAKE_BUILD_TYPE}) -set(osdir ${PDCURSES_SRCDIR}/${PROJECT_NAME}) -set(demodir ${PDCURSES_SRCDIR}/demos) - set(pdc_src_files - ${osdir}/pdcclip.c - ${osdir}/pdcdisp.c - ${osdir}/pdcgetsc.c - ${osdir}/pdckbd.c - ${osdir}/pdcscrn.c - ${osdir}/pdcsetsc.c - ${osdir}/pdcutil.c + pdcclip.c + pdcdisp.c + pdcgetsc.c + pdckbd.c + pdcscrn.c + pdcsetsc.c + pdcutil.c ) -include_directories (..) -include_directories (${osdir}) - +if(NOT TARGET pdcurses_include_dirs) + add_library(pdcurses_include_dirs INTERFACE) + target_include_directories(pdcurses_include_dirs SYSTEM INTERFACE $) + target_include_directories(pdcurses_include_dirs INTERFACE $) +endif() if(WIN32 AND NOT WATCOM) include(dll_version) @@ -84,19 +82,17 @@ if(PDC_BUILD_SHARED) set_target_properties(${PDCURSE_PROJ} PROPERTIES MACOSX_RPATH 1) endif() + target_link_libraries(${PDCURSE_PROJ} PRIVATE ${EXTRA_LIBS}) + if(${PROJECT_NAME} STREQUAL "sdl2") if(PDC_WIDE OR PDC_UTF8) - target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} - ${SDL2_LIBRARIES} ${SDL2_TTF_LIBRARY} ${FT2_LIBRARY} ${ZLIB_LIBRARY} - ${SDL2_DEP_LIBRARIES}) + target_link_libraries(${PDCURSE_PROJ} PRIVATE ${SDL2_LIBRARIES} ${SDL2_TTF_LIBRARY} + ${FT2_LIBRARY} ${ZLIB_LIBRARY} ${SDL2_DEP_LIBRARIES}) else() - target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} - ${SDL2_LIBRARIES} ${SDL2_DEP_LIBRARIES}) + target_link_libraries(${PDCURSE_PROJ} PRIVATE ${SDL2_LIBRARIES} ${SDL2_DEP_LIBRARIES}) endif() elseif((${PROJECT_NAME} STREQUAL "wincon") OR (${PROJECT_NAME} STREQUAL "wingui")) - target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} ${WINCON_WINGUI_DEP_LIBS}) - else() - target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS}) + target_link_libraries(${PDCURSE_PROJ} PRIVATE ${WINCON_WINGUI_DEP_LIBS}) endif() install(TARGETS ${PDCURSE_PROJ} @@ -111,6 +107,8 @@ else() set_target_properties(${PDCURSE_PROJ} PROPERTIES OUTPUT_NAME "pdcursesstatic") endif() +target_link_libraries(${PDCURSE_PROJ} PUBLIC pdcurses_include_dirs) + macro (demo_app dir targ) set(bin_name "${PROJECT_NAME}_${targ}") if(${targ} STREQUAL "tuidemo") @@ -121,10 +119,9 @@ macro (demo_app dir targ) add_executable(${bin_name} ${ARGV2} ${src_files}) + target_link_libraries(${bin_name} PRIVATE ${PDCURSE_PROJ} ${EXTRA_LIBS}) if((${PROJECT_NAME} STREQUAL "wincon") OR (${PROJECT_NAME} STREQUAL "wingui")) - target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} ${WINCON_WINGUI_DEP_LIBS}) - else() - target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS}) + target_link_libraries(${bin_name} PRIVATE ${WINCON_WINGUI_DEP_LIBS}) endif() add_dependencies(${bin_name} ${PDCURSE_PROJ}) diff --git a/gl/CMakeLists.txt b/gl/CMakeLists.txt index 2900da228..964ca7213 100644 --- a/gl/CMakeLists.txt +++ b/gl/CMakeLists.txt @@ -36,7 +36,7 @@ macro (gl_app dir targ) add_executable(${bin_name} ${src_files}) endif() - target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} + target_link_libraries(${bin_name} PUBLIC ${PDCURSE_PROJ} ${EXTRA_LIBS} "${SDL2_LIBRARIES};${SDL2_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL2_DEP_LIBRARIES}") add_dependencies(${bin_name} ${PDCURSE_PROJ}) @@ -59,7 +59,7 @@ gl_app(../demos xmas) if(PDC_SDL2_DEPS_BUILD) add_dependencies(${PDCURSE_PROJ} sdl2_ext sdl2_ttf_ext) - target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} "${SDL2_LIBRARIES};${SDL2_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL2_DEP_LIBRARIES}") + target_link_libraries(${PDCURSE_PROJ} PUBLIC ${EXTRA_LIBS} "${SDL2_LIBRARIES};${SDL2_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL2_DEP_LIBRARIES}") target_include_directories(${PDCURSE_PROJ} PUBLIC ${SDL2_INCLUDE_DIR} ${SDL2_TTF_INCLUDE_DIR}) endif() diff --git a/ncurses/CMakeLists.txt b/ncurses/CMakeLists.txt index 02c1cd01e..0d4cfccc8 100644 --- a/ncurses/CMakeLists.txt +++ b/ncurses/CMakeLists.txt @@ -58,7 +58,7 @@ if(CURSES_FOUND) endif() target_include_directories(${bin_name} PUBLIC ${CURSES_INCLUDE_DIR}) - target_link_libraries(${bin_name} ${CURSES_LIBRARIES}) + target_link_libraries(${bin_name} PUBLIC ${CURSES_LIBRARIES}) set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications) diff --git a/sdl2/CMakeLists.txt b/sdl2/CMakeLists.txt index 9568e39f8..61ac9b025 100644 --- a/sdl2/CMakeLists.txt +++ b/sdl2/CMakeLists.txt @@ -39,10 +39,10 @@ macro (sdl2_app dir targ) endif() if(PDC_WIDE OR PDC_UTF8) - target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} + target_link_libraries(${bin_name} PUBLIC ${PDCURSE_PROJ} ${EXTRA_LIBS} "${SDL2_LIBRARIES};${SDL2_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL2_DEP_LIBRARIES}") else() - target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS} + target_link_libraries(${bin_name} PUBLIC ${PDCURSE_PROJ} ${EXTRA_LIBS} "${SDL2_LIBRARIES};${SDL2_TTF_DEP_LIBRARIES};${SDL2_DEP_LIBRARIES}") endif()