diff options
| author | Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com> | 2021-09-17 22:51:19 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-17 07:51:19 -0700 |
| commit | bd0aeb70a302780368590e99ca421ee56aaedfa8 (patch) | |
| tree | 29f76da3794429f195d6e7be6d59bdb07742a317 | |
| parent | 69d5556d0d8c105f75055326cef346546e40e615 (diff) | |
| download | vcpkg-bd0aeb70a302780368590e99ca421ee56aaedfa8.tar.gz vcpkg-bd0aeb70a302780368590e99ca421ee56aaedfa8.zip | |
[portmidi] Add non-Windows support, refactory install process (#19710)
* [portmidi] Add *inx support, refactory install process
* update support
* version
* Re-fix dynamic build and use
* version
* Fix build on *inx
* version
* Re-fix installation
* version
* Add MAYBE_UNUSED_VARIABLES
* version
* Change macro judgment value and macro value
* version stuff
* Update versions/p-/portmidi.json
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
| -rw-r--r-- | ports/portmidi/add-feature-options.patch | 50 | ||||
| -rw-r--r-- | ports/portmidi/fix-build-install.patch | 148 | ||||
| -rw-r--r-- | ports/portmidi/portfile.cmake | 67 | ||||
| -rw-r--r-- | ports/portmidi/vcpkg.json | 10 | ||||
| -rw-r--r-- | versions/baseline.json | 2 | ||||
| -rw-r--r-- | versions/p-/portmidi.json | 5 |
6 files changed, 230 insertions, 52 deletions
diff --git a/ports/portmidi/add-feature-options.patch b/ports/portmidi/add-feature-options.patch new file mode 100644 index 000000000..605dfcd35 --- /dev/null +++ b/ports/portmidi/add-feature-options.patch @@ -0,0 +1,50 @@ +diff --git a/portmidi/trunk/CMakeLists.txt b/portmidi/trunk/CMakeLists.txt +index e5e01b6..483b900 100644 +--- a/portmidi/trunk/CMakeLists.txt ++++ b/portmidi/trunk/CMakeLists.txt +@@ -72,10 +72,14 @@ endif(0) + include_directories(pm_common porttime) + add_subdirectory(pm_common) + ++if (0) + add_subdirectory(pm_test) ++endif() + + add_subdirectory(pm_dylib) + + # Cannot figure out how to make an xcode Java application with CMake ++if (JAVA_SUPPORT) + add_subdirectory(pm_java) ++endif() + +diff --git a/portmidi/trunk/pm_common/CMakeLists.txt b/portmidi/trunk/pm_common/CMakeLists.txt +index c829063..2597bea 100644 +--- a/portmidi/trunk/pm_common/CMakeLists.txt ++++ b/portmidi/trunk/pm_common/CMakeLists.txt +@@ -111,17 +111,25 @@ target_link_libraries(portmidi-static ${PM_NEEDED_LIBS}) + # define the jni library + include_directories(${JAVA_INCLUDE_PATHS}) + ++if (JAVA_SUPPORT) + set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c) + add_library(pmjni SHARED ${JNISRC}) + target_link_libraries(pmjni ${JNI_EXTRA_LIBS}) + set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib") ++endif() + + # install the libraries (Linux and Mac OS X command line) + if(1) +- INSTALL(TARGETS portmidi-static pmjni ++ INSTALL(TARGETS portmidi-static + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) ++ if (JAVA_SUPPORT) ++ INSTALL(TARGETS pmjni ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib ++ ARCHIVE DESTINATION lib) ++ endif() + # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here + INSTALL(FILES portmidi.h ../porttime/porttime.h + DESTINATION include) diff --git a/ports/portmidi/fix-build-install.patch b/ports/portmidi/fix-build-install.patch new file mode 100644 index 000000000..76f0f92bf --- /dev/null +++ b/ports/portmidi/fix-build-install.patch @@ -0,0 +1,148 @@ +diff --git a/portmidi/trunk/CMakeLists.txt b/portmidi/trunk/CMakeLists.txt +index 4919b78..e5e01b6 100644 +--- a/portmidi/trunk/CMakeLists.txt ++++ b/portmidi/trunk/CMakeLists.txt +@@ -4,6 +4,7 @@ + + cmake_minimum_required(VERSION 2.6) + ++if (0) + if(UNIX) + # allow user to set Release or Debug + set(CMAKE_BUILD_TYPE Release CACHE STRING +@@ -22,11 +23,13 @@ else(UNIX) + set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING + "Semicolon-separate list of supported configuration types") + endif(UNIX) ++endif() + + #set(CMAKE_RELATIVE_PATHS ON CACHE STRING "avoid absolute paths" FORCE) + + # Clear out the built-in C++ compiler and link flags for each of the + # unused configurations. ++if (0) + set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused") + set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused") + set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused") +@@ -37,10 +40,11 @@ set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused") + set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused") + + set(CMAKE_OSX_ARCHITECTURES i386 ppc x86_64 CACHE STRING "change to needed architecture for a smaller library" FORCE) ++endif() + + PROJECT(portmidi) + +-if(UNIX) ++if(0) + # Problem: if there was an old Debug build and you change + # CMAKE_BUILD_TYPE to Release, then the OUTPUT_DIRECTORY's will + # still be Debug. Try to fix this by checking if the DIRECTORY's +@@ -63,7 +67,7 @@ if(UNIX) + ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE} + CACHE STRING "libraries go here" FORCE) + endif(CMAKE_LIBRARY_OUTPUT_DIRECTORY MATCHES ${BAD_DIR}) +-endif(UNIX) ++endif(0) + + include_directories(pm_common porttime) + add_subdirectory(pm_common) +diff --git a/portmidi/trunk/pm_common/CMakeLists.txt b/portmidi/trunk/pm_common/CMakeLists.txt +index cbeeade..c829063 100644 +--- a/portmidi/trunk/pm_common/CMakeLists.txt ++++ b/portmidi/trunk/pm_common/CMakeLists.txt +@@ -5,8 +5,6 @@ + if(APPLE OR WIN32) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + # set the build directory for .dylib libraries +- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + + # the first time CMake configures, save off CMake's built-in flags + if(NOT DEFAULT_DEBUG_FLAGS) +@@ -104,8 +102,9 @@ set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY}) + # this completes the list of library sources by adding shared code + list(APPEND LIBSRC pmutil portmidi) + ++if (NOT BUILD_SHARED_LIBS) + # now add the shared files to make the complete list of library sources +-add_library(portmidi-static ${LIBSRC}) ++add_library(portmidi-static STATIC ${LIBSRC}) + set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s") + target_link_libraries(portmidi-static ${PM_NEEDED_LIBS}) + +@@ -118,11 +117,13 @@ target_link_libraries(pmjni ${JNI_EXTRA_LIBS}) + set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib") + + # install the libraries (Linux and Mac OS X command line) +-if(UNIX) ++if(1) + INSTALL(TARGETS portmidi-static pmjni +- LIBRARY DESTINATION /usr/local/lib +- ARCHIVE DESTINATION /usr/local/lib) ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib ++ ARCHIVE DESTINATION lib) + # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here +-# INSTALL(FILES portmidi.h ../porttime/porttime.h +-# DESTINATION /usr/local/include) +-endif(UNIX) ++ INSTALL(FILES portmidi.h ../porttime/porttime.h ++ DESTINATION include) ++endif(1) ++endif() +diff --git a/portmidi/trunk/pm_common/portmidi.h b/portmidi/trunk/pm_common/portmidi.h +index e07991e..6f48927 100644 +--- a/portmidi/trunk/pm_common/portmidi.h ++++ b/portmidi/trunk/pm_common/portmidi.h +@@ -108,6 +108,8 @@ typedef unsigned int uint32_t; + + #ifdef _WINDLL + #define PMEXPORT __declspec(dllexport) ++#elif defined _PM_USEDLL ++#define PMEXPORT __declspec(dllimport) + #else + #define PMEXPORT + #endif +diff --git a/portmidi/trunk/pm_dylib/CMakeLists.txt b/portmidi/trunk/pm_dylib/CMakeLists.txt +index f693dd6..69d4d24 100644 +--- a/portmidi/trunk/pm_dylib/CMakeLists.txt ++++ b/portmidi/trunk/pm_dylib/CMakeLists.txt +@@ -4,11 +4,8 @@ + # portmidi/pm_dylib + if(APPLE OR WIN32) + # set the build directory for .dylib libraries +- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + # the "archive" output directory says where to put portmidi.lib, the + # static part of the lib/dll pair: +- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + + # the first time CMake configures, save off CMake's built-in flags + if(NOT DEFAULT_DEBUG_FLAGS) +@@ -113,15 +110,21 @@ set(SHARED_FILES pmutil portmidi) + prepend_path(SHARED_PATHS ../pm_common/ ${SHARED_FILES}) + list(APPEND LIBSRC ${SHARED_PATHS}) + ++if (BUILD_SHARED_LIBS) + add_library(portmidi-dynamic SHARED ${LIBSRC}) + set_target_properties(portmidi-dynamic PROPERTIES OUTPUT_NAME "portmidi") + target_link_libraries(portmidi-dynamic ${PM_NEEDED_LIBS}) ++if (MSVC) ++ target_compile_definitions(portmidi-dynamic PRIVATE _WINDLL) ++endif() + + # install the libraries (Linux and Mac OS X command line) +-if(UNIX) ++if(1) + INSTALL(TARGETS portmidi-dynamic +- LIBRARY DESTINATION /usr/local/lib +- ARCHIVE DESTINATION /usr/local/lib) ++ RUNTIME DESTINATION bin ++ LIBRARY DESTINATION lib ++ ARCHIVE DESTINATION lib) + INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h +- DESTINATION /usr/local/include) +-endif(UNIX) ++ DESTINATION include) ++endif(1) ++endif() diff --git a/ports/portmidi/portfile.cmake b/ports/portmidi/portfile.cmake index 5fc9d62e3..45e15ab05 100644 --- a/ports/portmidi/portfile.cmake +++ b/ports/portmidi/portfile.cmake @@ -1,66 +1,35 @@ -vcpkg_fail_port_install(ON_TARGET "linux" "uwp" ON_ARCH "arm") +vcpkg_fail_port_install(ON_TARGET "uwp" ON_ARCH "arm") vcpkg_from_sourceforge( OUT_SOURCE_PATH SOURCE_PATH REPO portmedia FILENAME "portmedia-code-r234.zip" SHA512 cbc332d89bc465450b38245a83cc300dfd2e1e6de7c62284edf754ff4d8a9aa3dc49a395dcee535ed9688befb019186fa87fd6d8a3698898c2acbf3e6b7a0794 + PATCHES + fix-build-install.patch + add-feature-options.patch ) -# Alter path to main portmidi root -set(SOURCE_PATH "${SOURCE_PATH}/portmidi/trunk") - -file(READ "${SOURCE_PATH}/CMakeLists.txt" PM_CMAKE) -string(REPLACE - "set(CMAKE_OSX_ARCHITECTURES i386 ppc x86_64 CACHE STRING \"change to needed architecture for a smaller library\" FORCE)" - "# Removed preconfigured CMAKE_OSX_ARCHITECTURES" PM_CMAKE "${PM_CMAKE}") -file(WRITE "${SOURCE_PATH}/CMakeLists.txt" "${PM_CMAKE}") - -# Mark portmidi-static as static, disable pmjni library depending on the Java SDK -file(READ "${SOURCE_PATH}/pm_common/CMakeLists.txt" PM_CMAKE) -string(REPLACE "add_library(portmidi-static \${LIBSRC})" "add_library(portmidi-static STATIC \${LIBSRC})" PM_CMAKE "${PM_CMAKE}") -string(REPLACE "add_library(pmjni SHARED \${JNISRC})" "# Removed pmjni" PM_CMAKE "${PM_CMAKE}") -string(REPLACE "target_link_libraries(pmjni \${JNI_EXTRA_LIBS})" "# Removed pmjni" PM_CMAKE "${PM_CMAKE}") -string(REPLACE "set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION \"jnilib\")" "# Removed pmjni" PM_CMAKE "${PM_CMAKE}") -string(REPLACE "INSTALL(TARGETS portmidi-static pmjni" "INSTALL(TARGETS portmidi-static" PM_CMAKE "${PM_CMAKE}") -file(WRITE "${SOURCE_PATH}/pm_common/CMakeLists.txt" "${PM_CMAKE}") - -# Run cmake configure step -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/portmidi/trunk" OPTIONS + -DJAVA_SUPPORT=OFF -DJAVA_INCLUDE_PATH= -DJAVA_INCLUDE_PATH2= -DJAVA_JVM_LIBRARY= - -DCMAKE_CACHEFILE_DIR=.. + MAYBE_UNUSED_VARIABLES + JAVA_INCLUDE_PATH + JAVA_INCLUDE_PATH2 ) -# Run cmake build step, nothing is installed on Windows -vcpkg_build_cmake() +vcpkg_cmake_install() -file(INSTALL "${SOURCE_PATH}/pm_common/portmidi.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include") -file(INSTALL "${SOURCE_PATH}/porttime/porttime.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include") +if (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/portmidi.h" + "#elif defined _PM_USEDLL" "#elif 1" + ) +endif() -if(VCPKG_TARGET_IS_WINDOWS) - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Release/portmidi_s.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Debug/portmidi_s.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - else() - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Release/portmidi.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Release/portmidi.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Debug/portmidi.dll" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Debug/portmidi.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - endif() -else() - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libportmidi_s.a" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libportmidi_s.a" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - else() - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libportmidi.a" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/libportmidi.dylib" DESTINATION "${CURRENT_PACKAGES_DIR}/bin") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libportmidi.a" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - file(INSTALL "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/libportmidi.dylib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") - endif() -endif() +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") -file(INSTALL "${SOURCE_PATH}/license.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME "copyright") +file(INSTALL "${SOURCE_PATH}/portmidi/trunk/license.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/portmidi/vcpkg.json b/ports/portmidi/vcpkg.json index 5d95f2ef9..4486f5bfe 100644 --- a/ports/portmidi/vcpkg.json +++ b/ports/portmidi/vcpkg.json @@ -1,8 +1,14 @@ { "name": "portmidi", "version-string": "0.234", - "port-version": 1, + "port-version": 2, "description": "Free, cross-platform, open-source I/O library for MIDI", "homepage": "https://sourceforge.net/projects/portmedia/", - "supports": "windows & osx & !uwp & !arm" + "supports": "!(uwp | arm)", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + } + ] } diff --git a/versions/baseline.json b/versions/baseline.json index 0caa9284f..09e0c72cd 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5174,7 +5174,7 @@ }, "portmidi": { "baseline": "0.234", - "port-version": 1 + "port-version": 2 }, "portsmf": { "baseline": "0.238", diff --git a/versions/p-/portmidi.json b/versions/p-/portmidi.json index 5e1b3dd93..1205e0376 100644 --- a/versions/p-/portmidi.json +++ b/versions/p-/portmidi.json @@ -1,6 +1,11 @@ { "versions": [ { + "git-tree": "70a85d5a9ddc162df4c7296caf7ac8633089d50c", + "version-string": "0.234", + "port-version": 2 + }, + { "git-tree": "74273108463488d1c268248429a06de79521506b", "version-string": "0.234", "port-version": 1 |
