gnu: Add kafs-client
[jackhill/guix/guix.git] / gnu / packages / patches / portmidi-modular-build.patch
1 We took this patch from Gentoo to break apart the portmidi build, so that we
2 can disable the Java parts and cleanly disable the tests which fail to link
3 (possibly because they are linked before “-lportmidi” is available). The
4 patch was downloaded from here:
5
6 https://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)