diff options
| -rw-r--r-- | ports/ace/CONTROL | 2 | ||||
| -rw-r--r-- | ports/ace/portfile.cmake | 245 |
2 files changed, 156 insertions, 91 deletions
diff --git a/ports/ace/CONTROL b/ports/ace/CONTROL index 456088aa6..1530b043a 100644 --- a/ports/ace/CONTROL +++ b/ports/ace/CONTROL @@ -1,5 +1,5 @@ Source: ace -Version: 6.5.7 +Version: 6.5.7-1 Homepage: https://www.dre.vanderbilt.edu/~schmidt/ACE.html Description: The ADAPTIVE Communication Environment diff --git a/ports/ace/portfile.cmake b/ports/ace/portfile.cmake index c09964b94..60f376b92 100644 --- a/ports/ace/portfile.cmake +++ b/ports/ace/portfile.cmake @@ -1,11 +1,21 @@ -include(vcpkg_common_functions) - -# Don't change to vcpkg_from_github! This points to a release and not an archive -vcpkg_download_distfile(ARCHIVE - URLS "https://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_7/ACE-src-6.5.7.zip" - FILENAME ACE-src-6.5.7.zip - SHA512 6ce6954941521b34ae8913dfe053d0f066632c55adf4091dae6bc180c79963d6f4ddfec7796cd6d9fc8ff59037ee162d20b017c4c296828913498bdbac2fc8a7 -) +# Using zip archive under Linux would cause sh/perl to report "No such file or directory" or "bad interpreter" +# when invoking `prj_install.pl`. +# So far this issue haven't yet be triggered under WSL 1 distributions. Not sure the root cause of it. +if(VCPKG_TARGET_IS_WINDOWS) + # Don't change to vcpkg_from_github! This points to a release and not an archive + vcpkg_download_distfile(ARCHIVE + URLS "https://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_7/ACE-src-6.5.7.zip" + FILENAME ACE-src-6.5.7.zip + SHA512 6ce6954941521b34ae8913dfe053d0f066632c55adf4091dae6bc180c79963d6f4ddfec7796cd6d9fc8ff59037ee162d20b017c4c296828913498bdbac2fc8a7 + ) +else(VCPKG_TARGET_IS_WINDOWS) + # VCPKG_TARGET_IS_LINUX + vcpkg_download_distfile(ARCHIVE + URLS "https://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_7/ACE-src-6.5.7.tar.gz" + FILENAME ACE-src-6.5.7.tar.gz + SHA512 0116e269e2d49ba8afccc7abfc7492e5a6a286dcbdcfe850a21f86b4facb5fef2848985d803233f4b1fbb03457e592375ab24c62e7bbaab5c28cc240ccedbacb + ) +endif() vcpkg_extract_source_archive_ex( OUT_SOURCE_PATH SOURCE_PATH @@ -57,7 +67,7 @@ endif() # Add ace/config.h file # see https://htmlpreview.github.io/?https://github.com/DOCGroup/ACE_TAO/blob/master/ACE/ACE-INSTALL.html -if(NOT VCPKG_CMAKE_SYSTEM_NAME) +if(VCPKG_TARGET_IS_WINDOWS) set(LIB_RELEASE_SUFFIX .lib) set(LIB_DEBUG_SUFFIX d.lib) if(VCPKG_PLATFORM_TOOLSET MATCHES "v142") @@ -70,7 +80,7 @@ if(NOT VCPKG_CMAKE_SYSTEM_NAME) file(WRITE ${ACE_SOURCE_PATH}/config.h "#include \"ace/config-windows.h\"") endif() -if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") +if(VCPKG_TARGET_IS_LINUX) set(DLL_DECORATOR) set(LIB_RELEASE_SUFFIX .a) set(LIB_DEBUG_SUFFIX .a) @@ -81,102 +91,157 @@ if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") endif() # Invoke mwc.pl to generate the necessary solution and project files -vcpkg_execute_required_process( +vcpkg_execute_build_process( COMMAND ${PERL} ${ACE_ROOT}/bin/mwc.pl -type ${SOLUTION_TYPE} -features "${ACE_FEATURES}" ace ${MPC_STATIC_FLAG} WORKING_DIRECTORY ${ACE_ROOT} LOGNAME mwc-${TARGET_TRIPLET} ) -if(NOT VCPKG_CMAKE_SYSTEM_NAME) +if(VCPKG_TARGET_IS_WINDOWS) vcpkg_build_msbuild( PROJECT_PATH ${ACE_SOURCE_PATH}/ace.sln PLATFORM ${MSBUILD_PLATFORM} USE_VCPKG_INTEGRATION ) -endif() -if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") + # ACE itself does not define an install target, so it is not clear which + # headers are public and which not. For the moment we install everything + # that is in the source path and ends in .h, .inl + function(install_ace_headers_subdirectory ORIGINAL_PATH RELATIVE_PATH) + file(GLOB HEADER_FILES ${ORIGINAL_PATH}/${RELATIVE_PATH}/*.h ${ORIGINAL_PATH}/${RELATIVE_PATH}/*.inl) + file(INSTALL ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/ace/${RELATIVE_PATH}) + endfunction() + + # We manually install header found in the ace directory because in that case + # we are supposed to install also *cpp files, see ACE_wrappers\debian\libace-dev.install file + file(GLOB HEADER_FILES ${ACE_SOURCE_PATH}/*.h ${ACE_SOURCE_PATH}/*.inl ${ACE_SOURCE_PATH}/*.cpp) + file(INSTALL ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/ace/) + + # Install headers in subdirectory + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "Compression") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "Compression/rle") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "ETCL") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "QoS") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "Monitor_Control") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/arpa") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/net") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/netinet") + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/sys") + if("ssl" IN_LIST FEATURES) + install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "SSL") + endif() + + # Install the libraries + function(install_ace_library ORIGINAL_PATH ACE_LIBRARY) + set(LIB_PATH ${ORIGINAL_PATH}/lib/) + if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + # Install the DLL files + file(INSTALL + ${LIB_PATH}/${ACE_LIBRARY}d.dll + DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin + ) + file(INSTALL + ${LIB_PATH}/${ACE_LIBRARY}.dll + DESTINATION ${CURRENT_PACKAGES_DIR}/bin + ) + endif() + + # Install the lib files + file(INSTALL + ${LIB_PATH}/${LIB_PREFIX}${ACE_LIBRARY}${DLL_DECORATOR}${LIB_DEBUG_SUFFIX} + DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib + ) + + file(INSTALL + ${LIB_PATH}/${LIB_PREFIX}${ACE_LIBRARY}${DLL_DECORATOR}${LIB_RELEASE_SUFFIX} + DESTINATION ${CURRENT_PACKAGES_DIR}/lib + ) + endfunction() + + install_ace_library(${ACE_ROOT} "ACE") + install_ace_library(${ACE_ROOT} "ACE_Compression") + install_ace_library(${ACE_ROOT} "ACE_ETCL") + install_ace_library(${ACE_ROOT} "ACE_ETCL_Parser") + install_ace_library(${ACE_ROOT} "ACE_Monitor_Control") + if(NOT VCPKG_CMAKE_SYSTEM_NAME) + install_ace_library(${ACE_ROOT} "ACE_QoS") + endif() + install_ace_library(${ACE_ROOT} "ACE_RLECompression") + if("ssl" IN_LIST FEATURES) + install_ace_library(${ACE_ROOT} "ACE_SSL") + endif() + + vcpkg_copy_pdbs() + + # Handle copyright + file(COPY ${ACE_ROOT}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/ace) + file(RENAME ${CURRENT_PACKAGES_DIR}/share/ace/COPYING ${CURRENT_PACKAGES_DIR}/share/ace/copyright) +else(VCPKG_TARGET_IS_WINDOWS) + # VCPKG_TARGTE_IS_LINUX FIND_PROGRAM(MAKE make) IF (NOT MAKE) MESSAGE(FATAL_ERROR "MAKE not found") ENDIF () - vcpkg_execute_required_process( - COMMAND make + + list(APPEND _pkg_components ACE_ETCL_Parser ACE_ETCL ACE) + if("ssl" IN_LIST FEATURES) + list(APPEND _ace_makefile_macros "ssl=1") + set(ENV{SSL_ROOT} ${CURRENT_INSTALLED_DIR}) + list(APPEND _pkg_components ACE_SSL) + endif() + set(ENV{INSTALL_PREFIX} ${CURRENT_PACKAGES_DIR}) + # Set `PWD` environment variable since ACE's `install` make target calculates install dir using this env. + set(_prev_env $ENV{PWD}) + set(ENV{PWD} ${ACE_ROOT}/ace) + + message(STATUS "Building ${TARGET_TRIPLET}-dbg") + vcpkg_execute_build_process( + COMMAND make ${_ace_makefile_macros} "debug=1" "-j${VCPKG_CONCURRENCY}" WORKING_DIRECTORY ${ACE_ROOT}/ace - LOGNAME make-${TARGET_TRIPLET} + LOGNAME make-${TARGET_TRIPLET}-dbg + ) + message(STATUS "Building ${TARGET_TRIPLET}-dbg done") + message(STATUS "Packaging ${TARGET_TRIPLET}-dbg") + vcpkg_execute_build_process( + COMMAND make ${_ace_makefile_macros} install + WORKING_DIRECTORY ${ACE_ROOT}/ace + LOGNAME install-${TARGET_TRIPLET}-dbg + ) + file(COPY ${CURRENT_PACKAGES_DIR}/lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug) + # TODO: check if we really need to remove those directories + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/share) + foreach(_pkg_comp ${_pkg_components}) + file(READ ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/${_pkg_comp}.pc _content) + string(REPLACE "libdir=${CURRENT_PACKAGES_DIR}/lib" "libdir=${CURRENT_PACKAGES_DIR}/debug/lib" _content ${_content}) + file(WRITE ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/${_pkg_comp}.pc ${_content}) + endforeach() + message(STATUS "Packaging ${TARGET_TRIPLET}-dbg done") + + vcpkg_execute_build_process( + COMMAND make ${_ace_makefile_macros} realclean + WORKING_DIRECTORY ${ACE_ROOT}/ace + LOGNAME realclean-${TARGET_TRIPLET}-dbg ) -endif() - -# ACE itself does not define an install target, so it is not clear which -# headers are public and which not. For the moment we install everything -# that is in the source path and ends in .h, .inl -function(install_ace_headers_subdirectory ORIGINAL_PATH RELATIVE_PATH) - file(GLOB HEADER_FILES ${ORIGINAL_PATH}/${RELATIVE_PATH}/*.h ${ORIGINAL_PATH}/${RELATIVE_PATH}/*.inl) - file(INSTALL ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/ace/${RELATIVE_PATH}) -endfunction() - -# We manually install header found in the ace directory because in that case -# we are supposed to install also *cpp files, see ACE_wrappers\debian\libace-dev.install file -file(GLOB HEADER_FILES ${ACE_SOURCE_PATH}/*.h ${ACE_SOURCE_PATH}/*.inl ${ACE_SOURCE_PATH}/*.cpp) -file(INSTALL ${HEADER_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/ace/) - -# Install headers in subdirectory -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "Compression") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "Compression/rle") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "ETCL") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "QoS") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "Monitor_Control") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/arpa") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/net") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/netinet") -install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "os_include/sys") -if("ssl" IN_LIST FEATURES) - install_ace_headers_subdirectory(${ACE_SOURCE_PATH} "SSL") -endif() - -# Install the libraries -function(install_ace_library ORIGINAL_PATH ACE_LIBRARY) - set(LIB_PATH ${ORIGINAL_PATH}/lib/) - if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - # Install the DLL files - file(INSTALL - ${LIB_PATH}/${ACE_LIBRARY}d.dll - DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin - ) - file(INSTALL - ${LIB_PATH}/${ACE_LIBRARY}.dll - DESTINATION ${CURRENT_PACKAGES_DIR}/bin - ) - endif() - - # Install the lib files - file(INSTALL - ${LIB_PATH}/${LIB_PREFIX}${ACE_LIBRARY}${DLL_DECORATOR}${LIB_DEBUG_SUFFIX} - DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib - ) - - file(INSTALL - ${LIB_PATH}/${LIB_PREFIX}${ACE_LIBRARY}${DLL_DECORATOR}${LIB_RELEASE_SUFFIX} - DESTINATION ${CURRENT_PACKAGES_DIR}/lib - ) -endfunction() - -install_ace_library(${ACE_ROOT} "ACE") -install_ace_library(${ACE_ROOT} "ACE_Compression") -install_ace_library(${ACE_ROOT} "ACE_ETCL") -install_ace_library(${ACE_ROOT} "ACE_ETCL_Parser") -install_ace_library(${ACE_ROOT} "ACE_Monitor_Control") -if(NOT VCPKG_CMAKE_SYSTEM_NAME) - install_ace_library(${ACE_ROOT} "ACE_QoS") -endif() -install_ace_library(${ACE_ROOT} "ACE_RLECompression") -if("ssl" IN_LIST FEATURES) - install_ace_library(${ACE_ROOT} "ACE_SSL") -endif() -# Handle copyright -file(COPY ${ACE_ROOT}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/ace) -file(RENAME ${CURRENT_PACKAGES_DIR}/share/ace/COPYING ${CURRENT_PACKAGES_DIR}/share/ace/copyright) + message(STATUS "Building ${TARGET_TRIPLET}-rel") + vcpkg_execute_build_process( + COMMAND make ${_ace_makefile_macros} "-j${VCPKG_CONCURRENCY}" + WORKING_DIRECTORY ${ACE_ROOT}/ace + LOGNAME make-${TARGET_TRIPLET}-rel + ) + message(STATUS "Building ${TARGET_TRIPLET}-rel done") + message(STATUS "Packaging ${TARGET_TRIPLET}-rel") + vcpkg_execute_build_process( + COMMAND make ${_ace_makefile_macros} install + WORKING_DIRECTORY ${ACE_ROOT}/ace + LOGNAME install-${TARGET_TRIPLET}-rel + ) + message(STATUS "Packaging ${TARGET_TRIPLET}-rel done") + # Restore `PWD` environment variable + set($ENV{PWD} _prev_env) -vcpkg_copy_pdbs() + # Handle copyright + file(RENAME ${CURRENT_PACKAGES_DIR}/share/ace/COPYING ${CURRENT_PACKAGES_DIR}/share/ace/copyright) +endif()
\ No newline at end of file |
