gnu: gimp: Ship a copy of the gegl patch.
[jackhill/guix/guix.git] / gnu / packages / patches / portmidi-modular-build.patch
CommitLineData
aacb52fb
RW
1We took this patch from Gentoo to break apart the portmidi build, so that we
2can disable the Java parts and cleanly disable the tests which fail to link
3(possibly because they are linked before “-lportmidi” is available). The
4patch was downloaded from here:
5
6https://gitweb.gentoo.org/repo/gentoo.git/plain/media-libs/portmidi/files/portmidi-217-cmake.patch?id=56bd759df1d0c750a065b8c845e93d5dfa6b549d
7
8--- portmidi/CMakeLists.txt
9+++ portmidi/CMakeLists.txt
10@@ -9,12 +9,11 @@
11 set(CMAKE_BUILD_TYPE Release CACHE STRING
12 "Semicolon-separate list of supported configuration types")
13 # set default directories but don't override cached values...
14- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE}
15+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
16 CACHE STRING "libraries go here")
17- set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE}
18+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
19 CACHE STRING "libraries go here")
20- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
21- ${CMAKE_CACHEFILE_DIR}/${CMAKE_BUILD_TYPE}
22+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
23 CACHE STRING "executables go here")
24
25 else(UNIX)
26@@ -68,10 +67,20 @@
27 include_directories(pm_common porttime)
28 add_subdirectory(pm_common)
29
30-add_subdirectory(pm_test)
31+option(PORTMIDI_ENABLE_JAVA "Enable Java bindings support" ON)
32+option(PORTMIDI_ENABLE_STATIC "Build and install static libraries" OFF)
33+option(PORTMIDI_ENABLE_TEST "Build test programs" ON)
34+
35+if(PORTMIDI_ENABLE_TEST)
36+ add_subdirectory(pm_test)
37+endif(PORTMIDI_ENABLE_TEST)
38
39 add_subdirectory(pm_dylib)
40
41 # Cannot figure out how to make an xcode Java application with CMake
42-add_subdirectory(pm_java)
43+if(PORTMIDI_ENABLE_JAVA)
44+ set(JAR_INSTALL_DIR share/java
45+ CACHE STRING "Define directory name for jar installation")
46+ add_subdirectory(pm_java)
47+endif(PORTMIDI_ENABLE_JAVA)
48
49--- portmidi/pm_common/CMakeLists.txt
50+++ portmidi/pm_common/CMakeLists.txt
51@@ -44,9 +44,6 @@
52
53 # first include the appropriate system-dependent file:
54 if(UNIX)
55- # add the -g switch for Linux and Mac OS X (not used in Win32)
56- set (CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}"
57- CACHE STRING "enable extra checks for debugging" FORCE)
58 if(APPLE)
59 set(MACSRC pmmacosxcm pmmac readbinaryplist finddefault)
60 prepend_path(LIBSRC ../pm_mac/ ${MACSRC})
61@@ -62,19 +59,23 @@
62 ${COREMIDI_LIB} ${CORESERVICES_LIB}
63 CACHE INTERNAL "")
64
65- set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
66- set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
67+ if(PORTMIDI_ENABLE_JAVA)
68+ set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
69+ set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
70+ endif(PORTMIDI_ENABLE_JAVA)
71 message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
72 else(APPLE)
73 # LINUX settings...
74- include(FindJNI)
75- message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
76- message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
77- message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2})
78- message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY})
79- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
80- # libjvm.so is found relative to JAVA_INCLUDE_PATH:
81- set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so)
82+ if(PORTMIDI_ENABLE_JAVA)
83+ include(FindJNI)
84+ message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
85+ message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
86+ message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2})
87+ message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY})
88+ set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
89+ # libjvm.so is found relative to JAVA_INCLUDE_PATH:
90+ set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so)
91+ endif(PORTMIDI_ENABLE_JAVA)
92
93 set(LINUXSRC pmlinuxalsa pmlinux finddefault)
94 prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
95@@ -88,10 +89,12 @@
96 # /MD is multithread DLL, /MT is multithread. Change to static:
97 include(../pm_win/static.cmake)
98
99- include(FindJNI)
100+ if(PORTMIDI_ENABLE_JAVA)
101+ include(FindJNI)
102
103- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
104- # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
105+ set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
106+ # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
107+ endif(PORTMIDI_ENABLE_JAVA)
108
109 set(WINSRC pmwin pmwinmm)
110 prepend_path(LIBSRC ../pm_win/ ${WINSRC})
111@@ -99,29 +102,43 @@
112 set(PM_NEEDED_LIBS winmm.lib)
113 endif(WIN32)
114 endif(UNIX)
115-set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY})
116+
117+if(PORTMIDI_ENABLE_JAVA)
118+ set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY})
119+endif(PORTMIDI_ENABLE_JAVA)
120
121 # this completes the list of library sources by adding shared code
122 list(APPEND LIBSRC pmutil portmidi)
123
124 # now add the shared files to make the complete list of library sources
125-add_library(portmidi-static ${LIBSRC})
126-set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s")
127-target_link_libraries(portmidi-static ${PM_NEEDED_LIBS})
128-
129-# define the jni library
130-include_directories(${JAVA_INCLUDE_PATHS})
131-
132-set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c)
133-add_library(pmjni SHARED ${JNISRC})
134-target_link_libraries(pmjni ${JNI_EXTRA_LIBS})
135-set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib")
136+if(PORTMIDI_ENABLE_STATIC)
137+ add_library(portmidi-static ${LIBSRC})
138+ set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi")
139+ target_link_libraries(portmidi-static ${PM_NEEDED_LIBS})
140+endif(PORTMIDI_ENABLE_STATIC)
141+
142+if(PORTMIDI_ENABLE_JAVA)
143+ # define the jni library
144+ include_directories(${JAVA_INCLUDE_PATHS})
145+
146+ set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c)
147+ add_library(pmjni SHARED ${JNISRC})
148+ target_link_libraries(pmjni ${JNI_EXTRA_LIBS})
149+ set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib")
150+endif(PORTMIDI_ENABLE_JAVA)
151
152 # install the libraries (Linux and Mac OS X command line)
153 if(UNIX)
154- INSTALL(TARGETS portmidi-static pmjni
155- LIBRARY DESTINATION /usr/local/lib
156- ARCHIVE DESTINATION /usr/local/lib)
157+ if(PORTMIDI_ENABLE_STATIC)
158+ INSTALL(TARGETS portmidi-static
159+ LIBRARY DESTINATION lib${LIB_SUFFIX}
160+ ARCHIVE DESTINATION lib${LIB_SUFFIX})
161+ endif(PORTMIDI_ENABLE_STATIC)
162+ if(PORTMIDI_ENABLE_JAVA)
163+ INSTALL(TARGETS pmjni
164+ LIBRARY DESTINATION lib${LIB_SUFFIX}
165+ ARCHIVE DESTINATION lib${LIB_SUFFIX})
166+ endif(PORTMIDI_ENABLE_JAVA)
167 # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here
168 # INSTALL(FILES portmidi.h ../porttime/porttime.h
169 # DESTINATION /usr/local/include)
170--- portmidi/pm_dylib/CMakeLists.txt
171+++ portmidi/pm_dylib/CMakeLists.txt
172@@ -39,9 +39,6 @@
173
174 # first include the appropriate system-dependent file:
175 if(UNIX)
176- # add the -g switch for Linux and Mac OS X (not used in Win32)
177- set (CMAKE_C_FLAGS_DEBUG "-g ${CMAKE_C_FLAGS_DEBUG}"
178- CACHE STRING "enable extra checks for debugging" FORCE)
179 if(APPLE)
180 set(MACSRC pmmacosxcm pmmac readbinaryplist finddefault)
181 prepend_path(LIBSRC ../pm_mac/ ${MACSRC})
182@@ -63,7 +60,8 @@
183 message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
184 else(APPLE)
185 # LINUX settings...
186- include(FindJNI)
187+ if(PORTMIDI_ENABLE_JAVA)
188+ include(FindJNI)
189 # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
190 # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
191 # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
192@@ -75,11 +73,8 @@
193 # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
194 # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
195 # because JAVA_INCLUDE_PATH2 is pretty obscure)
196- set(JAVA_INCLUDE_PATH ${JAVA_INCLUDE_PATH-UNKNOWN}
197- CACHE STRING "where to find Java SDK include directory")
198- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
199- # libjvm.so is found relative to JAVA_INCLUDE_PATH:
200- set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
201+ set(JAVAVM_LIB ${JAVA_JVM_LIBRARY})
202+ endif(PORTMIDI_ENABLE_JAVA)
203
204 set(LINUXSRC pmlinuxalsa pmlinux finddefault)
205 prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
206@@ -91,13 +86,15 @@
207 if(WIN32)
208 # /MDd is multithread debug DLL, /MTd is multithread debug
209 # /MD is multithread DLL, /MT is multithread
210-
211- include(FindJNI)
212- # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
213- set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
214
215- set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
216- # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
217+ if(PORTMIDI_ENABLE_JAVA)
218+ include(FindJNI)
219+ # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
220+ set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../lib/jvm.lib)
221+
222+ set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
223+ # message(STATUS "JAVA_INCLUDE_PATHS: " ${JAVA_INCLUDE_PATHS})
224+ endif(PORTMIDI_ENABLE_JAVA)
225
226 set(WINSRC pmwin pmwinmm)
227 prepend_path(LIBSRC ../pm_win/ ${WINSRC})
228@@ -106,7 +103,10 @@
229 # message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
230 endif(WIN32)
231 endif(UNIX)
232+
233+if(PORTMIDI_ENABLE_JAVA)
234 set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVAVM_LIB})
235+endif(PORTMIDI_ENABLE_JAVA)
236
237 # this completes the list of library sources by adding shared code
238 set(SHARED_FILES pmutil portmidi)
239@@ -120,8 +120,8 @@
240 # install the libraries (Linux and Mac OS X command line)
241 if(UNIX)
242 INSTALL(TARGETS portmidi-dynamic
243- LIBRARY DESTINATION /usr/local/lib
244- ARCHIVE DESTINATION /usr/local/lib)
245+ LIBRARY DESTINATION lib${LIB_SUFFIX}
246+ ARCHIVE DESTINATION lib${LIB_SUFFIX})
247 INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h
248- DESTINATION /usr/local/include)
249+ DESTINATION include)
250 endif(UNIX)
251--- portmidi/pm_java/CMakeLists.txt
252+++ portmidi/pm_java/CMakeLists.txt
253@@ -5,43 +5,24 @@
254 # java not dealt with in CMake -- see pm_mac/pm_mac.xcodeproj
255 else(APPLE)
256 # linux
257- set(JPORTMIDICLASS JPortMidi.class JPortMidiException.class
258- JPortMidiApi.class)
259- set(PMDEFAULTSCLASS PmDefaultsFrame.class PmDefaults.class)
260- prepend_path(JPORTMIDICLASS2 jportmidi/ ${JPORTMIDICLASS})
261- prepend_path(PMDEFAULTSCLASS2 pmdefaults/ ${PMDEFAULTSCLASS})
262- set(PMDEFAULTS_ALL_CLASSES ${JPORTMIDICLASS2} ${PMDEFAULTSCLASS2})
263- # message(STATUS "PMDEFAULTS_ALL_CLASSES is " ${PMDEFAULTS_ALL_CLASSES})
264- add_custom_command(OUTPUT pmdefaults/PmDefaultsFrame.class
265- COMMAND javac -classpath . pmdefaults/PmDefaultsFrame.java
266- MAIN_DEPENDENCY pmdefaults/PmDefaultsFrame.java
267- DEPENDS pmdefaults/PmDefaults.java
268- WORKING_DIRECTORY pm_java)
269- add_custom_command(OUTPUT pmdefaults/PmDefaults.class
270- COMMAND javac -classpath . pmdefaults/PmDefaults.java
271- MAIN_DEPENDENCY pmdefaults/PmDefaults.java
272- DEPENDS pmdefaults/PmDefaultsFrame.java
273- WORKING_DIRECTORY pm_java)
274- add_custom_command(OUTPUT ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar
275- COMMAND cp pmdefaults/portmusic_logo.png .
276- COMMAND jar cmf pmdefaults/manifest.txt pmdefaults.jar
277- pmdefaults/*.class portmusic_logo.png jportmidi/*.class
278- COMMAND chmod +x pmdefaults/pmdefaults
279- COMMAND cp pmdefaults/pmdefaults ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
280- COMMAND mv pmdefaults.jar ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
281- COMMAND rm portmusic_logo.png
282- MAIN_DEPENDENCY pmdefaults/PmDefaults.class
283- DEPENDS ${PMDEFAULTS_ALL_CLASSES}
284- WORKING_DIRECTORY pm_java)
285- add_custom_target(pmdefaults_target ALL
286- DEPENDS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar)
287- # message(STATUS "add_custom_target: pmdefaults.jar")
288+ set(JAVA_CLASSES jportmidi pmdefaults)
289+ add_custom_command(OUTPUT ${JAVA_CLASSES}
290+ COMMAND javac -d ${CMAKE_CURRENT_BINARY_DIR} jportmidi/*.java pmdefaults/*.java
291+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
292+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar
293+ DEPENDS ${JAVA_CLASSES}
294+ COMMAND jar cmf pmdefaults/manifest.txt ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar
295+ -C pmdefaults portmusic_logo.png -C ${CMAKE_CURRENT_BINARY_DIR} jportmidi
296+ -C ${CMAKE_CURRENT_BINARY_DIR} pmdefaults
297+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
298+ add_custom_target(pmdefaults.jar ALL
299+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar)
300
301 # install the libraries (Linux only)
302- INSTALL(FILES ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults.jar
303- DESTINATION /usr/share/java)
304- INSTALL(PROGRAMS ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pmdefaults
305- DESTINATION /usr/local/bin)
306+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pmdefaults.jar
307+ DESTINATION ${JAR_INSTALL_DIR})
308+ INSTALL(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/pmdefaults/pmdefaults
309+ DESTINATION bin)
310 endif(APPLE)
311 endif(UNIX)
312 # In windows, use pm_java/make.bat
313--- portmidi/pm_test/CMakeLists.txt
314+++ portmidi/pm_test/CMakeLists.txt
315@@ -12,8 +12,8 @@
316
317 macro(make_a_test name)
318 add_executable(${name} ${name}.c)
319- target_link_libraries(${name} portmidi-static ${PM_NEEDED_LIBS})
320- add_dependencies(${name} portmidi-static)
321+ target_link_libraries(${name} portmidi ${PM_NEEDED_LIBS})
322+ add_dependencies(${name} portmidi)
323 endmacro(make_a_test)
324
325 make_a_test(test)