aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>2021-09-17 22:51:19 +0800
committerGitHub <noreply@github.com>2021-09-17 07:51:19 -0700
commitbd0aeb70a302780368590e99ca421ee56aaedfa8 (patch)
tree29f76da3794429f195d6e7be6d59bdb07742a317
parent69d5556d0d8c105f75055326cef346546e40e615 (diff)
downloadvcpkg-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.patch50
-rw-r--r--ports/portmidi/fix-build-install.patch148
-rw-r--r--ports/portmidi/portfile.cmake67
-rw-r--r--ports/portmidi/vcpkg.json10
-rw-r--r--versions/baseline.json2
-rw-r--r--versions/p-/portmidi.json5
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