Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pdcurses] Support UNIX, use vcpkg_build_nmake on Windows #14622

Closed
Closed
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
2 changes: 2 additions & 0 deletions ports/pdcurses/CONTROL
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Source: pdcurses
Version: 3.9
Port-Version: 1
Homepage: https://sourceforge.net/projects/pdcurses/
Description: Public Domain Curses - a curses library for environments that don't fit the termcap/terminfo model.
Supports: !(uwp|static)
13 changes: 13 additions & 0 deletions ports/pdcurses/fix-unix-install-path.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/x11/Makefile.in b/x11/Makefile.in
index 6cda749..dfc77a5 100644
--- a/x11/Makefile.in
+++ b/x11/Makefile.in
@@ -11,7 +11,7 @@ osdir = .
srcdir = $(PDCURSES_SRCDIR)/pdcurses
demodir = $(PDCURSES_SRCDIR)/demos

-prefix = @prefix@
+prefix = $(DESTDIR)/@prefix@
exec_prefix = @exec_prefix@
libdir = @libdir@
bindir = @bindir@
108 changes: 50 additions & 58 deletions ports/pdcurses/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,73 +1,65 @@
vcpkg_check_linkage(ONLY_DYNAMIC_CRT)
vcpkg_fail_port_install(ON_TARGET "uwp")

find_program(NMAKE nmake)
vcpkg_check_linkage(ONLY_DYNAMIC_CRT)

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO wmcbrine/PDCurses
REF 6c1f95c4fa9f9f105879c2d99dd72a5bf335c046 # 3.9
SHA512 2d682a3516baaa58a97854aca64d985768b7af76d998240b54afc57ddf2a44894835a1748888f8dd7c1cc8045ede77488284f8adf1b73878879b4b4d3391218d
HEAD_REF master
PATCHES fix-unix-install-path.patch
)

set(PDC_NMAKE_CMD ${NMAKE} /A -f ${SOURCE_PATH}/wincon/Makefile.vc WIDE=Y UTF8=Y)

set(PDC_NMAKE_CWD ${SOURCE_PATH}/wincon)
set(PDC_PDCLIB ${SOURCE_PATH}/wincon/pdcurses)

if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(PDC_NMAKE_CMD ${PDC_NMAKE_CMD} DLL=Y)
endif()

message(STATUS "Build ${TARGET_TRIPLET}-rel")
vcpkg_execute_required_process(
COMMAND ${PDC_NMAKE_CMD}
WORKING_DIRECTORY ${PDC_NMAKE_CWD}
LOGNAME build-${TARGET_TRIPLET}-rel
)
message(STATUS "Build ${TARGET_TRIPLET}-rel done")

file (
COPY ${PDC_PDCLIB}.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file (
COPY ${PDC_PDCLIB}.dll
DESTINATION ${CURRENT_PACKAGES_DIR}/bin
if (VCPKG_TARGET_IS_WINDOWS)
set(PDC_NMAKE_CMD WIDE=Y UTF8=Y)

if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(PDC_NMAKE_CMD ${PDC_NMAKE_CMD} DLL=Y)
endif()

# Doesn't support install command
vcpkg_build_nmake(
SOURCE_PATH ${SOURCE_PATH}
PROJECT_SUBPATH wincon
OPTIONS ${PDC_NMAKE_CMD}
OPTIONS_DEBUG DEBUG=Y
)
endif()

message(STATUS "Build ${TARGET_TRIPLET}-dbg")
vcpkg_execute_required_process(
COMMAND ${PDC_NMAKE_CMD} DEBUG=Y
WORKING_DIRECTORY ${PDC_NMAKE_CWD}
LOGNAME build-${TARGET_TRIPLET}-dbg
)
message(STATUS "Build ${TARGET_TRIPLET}-dbg done")

if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
set(PDCURSES_BINARY_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/wincon)
file (COPY ${PDCURSES_BINARY_DIR}/pdcurses.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file (COPY ${PDCURSES_BINARY_DIR}/pdcurses.dll DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
endif()
endif()

if (NOT VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
set(PDCURSES_BINARY_DIR ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/wincon)
file (INSTALL ${PDCURSES_BINARY_DIR}/pdcurses.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file (INSTALL ${PDCURSES_BINARY_DIR}/pdcurses.dll DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()
endif()

vcpkg_copy_pdbs()

file(INSTALL ${SOURCE_PATH}/curses.h ${SOURCE_PATH}/panel.h DESTINATION ${CURRENT_PACKAGES_DIR}/include)

if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(READ ${CURRENT_PACKAGES_DIR}/include/curses.h _contents)
string(REPLACE "#ifdef PDC_DLL_BUILD" "#if 1" _contents "${_contents}")
file(WRITE ${CURRENT_PACKAGES_DIR}/include/curses.h "${_contents}")
endif()

file (
INSTALL ${PDC_PDCLIB}.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file (
INSTALL ${PDC_PDCLIB}.dll
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin
else()
vcpkg_configure_make(
SOURCE_PATH ${SOURCE_PATH}
PROJECT_SUBPATH x11
COPY_SOURCE
)

vcpkg_install_make()
endif()

file(
INSTALL ${SOURCE_PATH}/curses.h ${SOURCE_PATH}/panel.h
DESTINATION ${CURRENT_PACKAGES_DIR}/include
)

if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(READ ${CURRENT_PACKAGES_DIR}/include/curses.h _contents)
string(REPLACE "#ifdef PDC_DLL_BUILD" "#if 1" _contents "${_contents}")
file(WRITE ${CURRENT_PACKAGES_DIR}/include/curses.h "${_contents}")
endif()

file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/pdcurses RENAME copyright)

vcpkg_copy_pdbs()
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
5 changes: 0 additions & 5 deletions scripts/ci.baseline.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1198,11 +1198,6 @@ parmetis:x64-osx=fail
pdal:x64-linux=fail
pdal:x64-osx=fail
pdal-c:x64-windows-static=fail
pdcurses:arm-uwp=fail
pdcurses:x64-linux=fail
pdcurses:x64-osx=fail
pdcurses:x64-uwp=fail
pdcurses:x64-windows-static=fail
pfring:arm64-windows=fail
pfring:arm-uwp=fail
pfring:x64-uwp=fail
Expand Down
6 changes: 5 additions & 1 deletion scripts/cmake/vcpkg_build_make.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ function(vcpkg_build_make)
set(MAKE )
set(MAKE_OPTS )
set(INSTALL_OPTS )
# Use option 'DESTDIR', see https://www.gnu.org/software/automake/manual/html_node/Staged-Installs.html
if (CMAKE_HOST_WIN32)
set(PATH_GLOBAL "$ENV{PATH}")
vcpkg_add_to_path(PREPEND "${SCRIPTS}/buildsystems/make_wrapper")
Expand Down Expand Up @@ -118,7 +119,7 @@ function(vcpkg_build_make)
set(PATH_SUFFIX "")
endif()

set(WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}${_bc_SUBPATH}")
set(WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}${SHORT_BUILDTYPE}/${_VCPKG_PROJECT_SUBPATH}")
message(STATUS "Building ${TARGET_TRIPLET}${SHORT_BUILDTYPE}")

_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags(${CMAKE_BUILDTYPE})
Expand Down Expand Up @@ -211,6 +212,9 @@ function(vcpkg_build_make)

if (_bc_ENABLE_INSTALL)
string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" _VCPKG_INSTALL_PREFIX "${CURRENT_INSTALLED_DIR}")
if (EXISTS "${CURRENT_PACKAGES_DIR}_tmp")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}_tmp")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}_tmp")
file(RENAME "${CURRENT_PACKAGES_DIR}" "${CURRENT_PACKAGES_DIR}_tmp")
file(RENAME "${CURRENT_PACKAGES_DIR}_tmp${_VCPKG_INSTALL_PREFIX}/" "${CURRENT_PACKAGES_DIR}")
Expand Down
10 changes: 6 additions & 4 deletions scripts/cmake/vcpkg_configure_make.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -627,10 +627,12 @@ function(vcpkg_configure_make)
set(TAR_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${SHORT_NAME_${_buildtype}}")
file(MAKE_DIRECTORY "${TAR_DIR}")
file(RELATIVE_PATH RELATIVE_BUILD_PATH "${TAR_DIR}" "${SRC_DIR}")
set(RELATIVE_BUILD_PATH ${RELATIVE_BUILD_PATH}/)

if(_csc_COPY_SOURCE)
file(COPY "${SRC_DIR}/" DESTINATION "${TAR_DIR}")
set(RELATIVE_BUILD_PATH .)
file(COPY "${_csc_SOURCE_PATH}/" DESTINATION "${TAR_DIR}")
set(RELATIVE_BUILD_PATH ./)
set(TAR_DIR ${TAR_DIR}/${_csc_PROJECT_SUBPATH})
endif()

# Setup PKG_CONFIG_PATH
Expand Down Expand Up @@ -661,9 +663,9 @@ function(vcpkg_configure_make)
set(ENV{LD_LIBRARY_PATH} "${_VCPKG_INSTALLED}${PATH_SUFFIX_${_buildtype}}/lib/${VCPKG_HOST_PATH_SEPARATOR}${_VCPKG_INSTALLED}${PATH_SUFFIX_${_buildtype}}/lib/manual-link/${LD_LIBRARY_PATH_PATHLIKE_CONCAT}")

if (CMAKE_HOST_WIN32)
set(command ${base_cmd} -c "${CONFIGURE_ENV} ./${RELATIVE_BUILD_PATH}/configure ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}}")
set(command ${base_cmd} -c "${CONFIGURE_ENV} ./${RELATIVE_BUILD_PATH}configure ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}}")
else()
set(command /bin/bash "./${RELATIVE_BUILD_PATH}/configure" ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}})
set(command /bin/bash "./${RELATIVE_BUILD_PATH}configure" ${_csc_BUILD_TRIPLET} ${_csc_OPTIONS} ${_csc_OPTIONS_${_buildtype}})
endif()
if(_csc_ADD_BIN_TO_PATH)
set(PATH_BACKUP $ENV{PATH})
Expand Down