From 07613bbedd0be82e87ea073b34da1ffc3c1cd273 Mon Sep 17 00:00:00 2001 From: nekosu Date: Fri, 9 Jan 2026 19:46:58 +0800 Subject: [PATCH 1/3] feat: install headers --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 46239b27..61fc938b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,8 @@ else() endif() +install(FILES curses.h panel.h DESTINATION ${CMAKE_BUILD_TYPE}/include) + add_custom_target(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_SOURCE_DIR}/cmake/make_uninstall.cmake") set(CPACK_COMPONENTS_ALL applications) From 396c9bc13be2737aac6774bd85270c275fb4796b Mon Sep 17 00:00:00 2001 From: nekosu Date: Fri, 9 Jan 2026 19:52:35 +0800 Subject: [PATCH 2/3] fix: update install rpath for mac & linux --- cmake/project_common.cmake | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmake/project_common.cmake b/cmake/project_common.cmake index 15939a56..5dcf3ed7 100644 --- a/cmake/project_common.cmake +++ b/cmake/project_common.cmake @@ -130,5 +130,11 @@ macro (demo_app dir targ) add_dependencies(${bin_name} ${PDCURSE_PROJ}) set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ}) + if(APPLE) + set_target_properties(${bin_name} PROPERTIES INSTALL_RPATH "@executable_path/../../lib/${PROJECT_NAME}") + elseif(UNIX) + set_target_properties(${bin_name} PROPERTIES INSTALL_RPATH "$ORIGIN/../../lib/${PROJECT_NAME}") + endif() + install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications) endmacro () From 0ff5ac1dfc5fa907a11d2b443fec4b7351022c89 Mon Sep 17 00:00:00 2001 From: nekosu Date: Fri, 9 Jan 2026 20:19:39 +0800 Subject: [PATCH 3/3] feat: set default visibility to hidden on mac & linux --- cmake/project_common.cmake | 5 +++++ curses.h | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/cmake/project_common.cmake b/cmake/project_common.cmake index 5dcf3ed7..eb820820 100644 --- a/cmake/project_common.cmake +++ b/cmake/project_common.cmake @@ -84,6 +84,11 @@ if(PDC_BUILD_SHARED) set_target_properties(${PDCURSE_PROJ} PROPERTIES MACOSX_RPATH 1) endif() + if(APPLE OR UNIX) + target_compile_definitions(${PDCURSE_PROJ} PRIVATE PDC_ENABLE_VISIBILITY) + set_target_properties(${PDCURSE_PROJ} PROPERTIES C_VISIBILITY_PRESET hidden) + endif() + if(${PROJECT_NAME} STREQUAL "sdl2") if(PDC_WIDE OR PDC_UTF8) target_link_libraries(${PDCURSE_PROJ} ${EXTRA_LIBS} diff --git a/curses.h b/curses.h index e2fe9690..332db8c1 100644 --- a/curses.h +++ b/curses.h @@ -398,7 +398,11 @@ typedef struct _screen SCREEN; # define PDCEX __declspec(dllimport) extern # endif #else -# define PDCEX extern +# ifdef PDC_ENABLE_VISIBILITY +# define PDCEX __attribute__((visibility("default"))) extern +# else +# define PDCEX extern +# endif #endif PDCEX int LINES; /* terminal height */