On UNIX-like systems pkg-config is often used to determine build
configuration for library dependencies.  PortAudio provides a pkg-config
file, for example, so that applications linking against it do not have
to know the system-specific header and library search paths for its
files.

Add a pkg-config file for PortMidi and install it on UNIX-like systems.

Signed-off-by: Stefan Hajnoczi <stefa...@gmail.com>
---
 pm_dylib/CMakeLists.txt | 17 +++++++++++++++++
 portmidi.pc.in          | 10 ++++++++++
 2 files changed, 27 insertions(+)
 create mode 100644 portmidi.pc.in

diff --git a/pm_dylib/CMakeLists.txt b/pm_dylib/CMakeLists.txt
index da24c16..4b0a028 100644
--- a/pm_dylib/CMakeLists.txt
+++ b/pm_dylib/CMakeLists.txt
@@ -56,6 +56,7 @@ if(UNIX)
     set(PM_NEEDED_LIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB}
                              ${COREMIDI_LIB} ${CORESERVICES_LIB}
         CACHE INTERNAL "")
+    set(PKGCONFIG_LIBS "-framework CoreAudio -framework CoreFoundation 
-framework CoreMIDI -framework CoreServices")
 
     set(JAVAVM_LIB "${FRAMEWORK_PATH}/JavaVM.framework")
     set(JAVA_INCLUDE_PATHS ${JAVAVM_LIB}/Headers)
@@ -86,6 +87,7 @@ if(UNIX)
     list(APPEND LIBSRC ../porttime/ptlinux)
 
     set(PM_NEEDED_LIBS pthread asound)
+    set(PKGCONFIG_LIBS "-lpthread -lasound")
   endif(APPLE)
 else(UNIX)
   if(WIN32)
@@ -103,6 +105,7 @@ else(UNIX)
     prepend_path(LIBSRC ../pm_win/ ${WINSRC})
     list(APPEND LIBSRC ../porttime/ptwinmm)
     set(PM_NEEDED_LIBS winmm.lib)
+    set(PKGCONFIG_LIBS "-lwinmm")
     # message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
   endif(WIN32)
 endif(UNIX)
@@ -117,6 +120,18 @@ add_library(portmidi-dynamic SHARED ${LIBSRC})
 set_target_properties(portmidi-dynamic PROPERTIES OUTPUT_NAME "portmidi")
 target_link_libraries(portmidi-dynamic ${PM_NEEDED_LIBS})
 
+# Create pkg-config file
+if(UNIX)
+  set(prefix ${CMAKE_INSTALL_PREFIX})
+  set(exec_prefix ${CMAKE_INSTALL_PREFIX})
+  set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
+  set(includedir ${CMAKE_INSTALL_PREFIX}/include)
+  set(LIBS ${PKGCONFIG_LIBS})
+
+  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../portmidi.pc.in
+    ${PROJECT_BINARY_DIR}/portmidi.pc @ONLY)
+endif(UNIX)
+
 # install the libraries (Linux and Mac OS X command line)
 if(UNIX)
   INSTALL(TARGETS portmidi-dynamic
@@ -125,4 +140,6 @@ if(UNIX)
   INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h
                 ../pm_common/pmutil.h
     DESTINATION /usr/local/include)
+  INSTALL(FILES ../portmidi.pc
+    DESTINATION /usr/local/lib/pkgconfig)
 endif(UNIX)
diff --git a/portmidi.pc.in b/portmidi.pc.in
new file mode 100644
index 0000000..96eda49
--- /dev/null
+++ b/portmidi.pc.in
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: PortMidi
+Description: Portable MIDI I/O
+Version: 238
+Libs: -L${libdir} -lportmidi @LIBS@
+Cflags: -I${includedir}
-- 
1.8.1.4

_______________________________________________
media_api mailing list
media_api@create.ucsb.edu
http://lists.create.ucsb.edu/mailman/listinfo/media_api

Reply via email to