50a1010
diff -rupN portmidi.old/pm_common/portmidi.c portmidi/pm_common/portmidi.c
50a1010
--- portmidi.old/pm_common/portmidi.c	2009-01-02 18:06:13.000000000 -0500
50a1010
+++ portmidi/pm_common/portmidi.c	2009-01-11 01:20:21.000000000 -0500
50a1010
@@ -56,7 +56,7 @@ static void prompt_and_exit(void)
50a1010
     printf("type ENTER...");
50a1010
     fgets(line, STRING_MAX, stdin);
50a1010
     /* this will clean up open ports: */
50a1010
-    exit(-1);
50a1010
+    // DO NOT EXIT SINCE THIS IS BEING COMPILED AS A SHARED LIBRARY // exit(-1);
50a1010
 }
50a1010
 
50a1010
 
50a1010
diff -rupN portmidi.old/pm_linux/Makefile portmidi/pm_linux/Makefile
50a1010
--- portmidi.old/pm_linux/Makefile	2008-06-13 20:23:43.000000000 -0400
50a1010
+++ portmidi/pm_linux/Makefile	2009-01-11 01:24:28.000000000 -0500
50a1010
@@ -30,11 +30,13 @@ VFLAGS = -DPMALSA
50a1010
 # ALSALIB = 
50a1010
 # VFLAGS = -DPMNULL
50a1010
 
50a1010
-pmlib = pm_linux/libportmidi.a
50a1010
+pmlib = pm_linux/libportmidi.so.0$(VERSION)
50a1010
 
50a1010
-ptlib = porttime/libporttime.a
50a1010
+ptlib = porttime/libporttime.so.0$(VERSION)
50a1010
 
50a1010
-CC = gcc $(VFLAGS) $(PMFLAGS) -g -Ipm_common -Iporttime
50a1010
+CC = gcc $(CFLAGS) $(VFLAGS) $(PMFLAGS) -g -Ipm_common -Iporttime
50a1010
+
50a1010
+INSTALL = install
50a1010
 
50a1010
 pmobjects = pm_common/pmutil.o $(versions) pm_linux/pmlinux.o  \
50a1010
 	pm_common/portmidi.o
50a1010
@@ -43,14 +45,18 @@ ptobjects = porttime/porttime.o porttime
50a1010
 
50a1010
 current: all
50a1010
 
50a1010
-all: $(pmlib) $(ptlib) pm_test/test pm_test/sysex pm_test/midithread \
50a1010
+all: $(ptlib) $(pmlib) pm_test/test pm_test/sysex pm_test/midithread \
50a1010
 	pm_test/latency pm_test/midithru pm_test/qtest pm_test/mm
50a1010
 
50a1010
 $(pmlib): pm_linux/Makefile $(pmobjects)
50a1010
-	ar -cr $(pmlib) $(pmobjects)
50a1010
+	$(CC) -shared $(ALSALIB) $(pmobjects) -Wl,-soname -Wl,libportmidi.so.0 -Lporttime -lporttime -o $(pmlib)
50a1010
+	ln -sf libportmidi.so.0$(VERSION) pm_linux/libportmidi.so
50a1010
+	ln -sf libportmidi.so.0$(VERSION) pm_linux/libportmidi.so.0
50a1010
 
50a1010
 $(ptlib): pm_linux/Makefile $(ptobjects)
50a1010
-	ar -cr $(ptlib) $(ptobjects)
50a1010
+	$(CC) -shared $(ptobjects) -Wl,-soname -Wl,libporttime.so.0 -Wl,-l,pthread -o $(ptlib)
50a1010
+	ln -sf libporttime.so.0$(VERSION) porttime/libporttime.so
50a1010
+	ln -sf libporttime.so.0$(VERSION) porttime/libporttime.so.0
50a1010
 
50a1010
 pm_linux/pmlinuxalsa.o: pm_linux/Makefile pm_linux/pmlinuxalsa.c pm_linux/pmlinuxalsa.h
50a1010
 	$(CC) -c pm_linux/pmlinuxalsa.c -o pm_linux/pmlinuxalsa.o
50a1010
@@ -96,3 +102,15 @@ cleanest: cleaner
50a1010
 
50a1010
 backup: cleanest
50a1010
 	cd ..; zip -r portmidi.zip portmidi
50a1010
+
50a1010
+install:
50a1010
+	$(INSTALL) -d $(DESTDIR)/$(INCLUDEDIR)/
50a1010
+	$(INSTALL) -m 644 pm_common/portmidi.h $(DESTDIR)/$(INCLUDEDIR)/
50a1010
+	$(INSTALL) -m 644 porttime/porttime.h $(DESTDIR)/$(INCLUDEDIR)/
50a1010
+	$(INSTALL) -d $(DESTDIR)/$(LIBDIR)/
50a1010
+	$(INSTALL) pm_linux/libportmidi.so.0.* $(DESTDIR)/$(LIBDIR)/
50a1010
+	$(INSTALL) porttime/libporttime.so.0.* $(DESTDIR)/$(LIBDIR)/
50a1010
+	cp -a porttime/libporttime.so $(DESTDIR)/$(LIBDIR)/
50a1010
+	cp -a porttime/libporttime.so.0 $(DESTDIR)/$(LIBDIR)/
50a1010
+	cp -a pm_linux/libportmidi.so $(DESTDIR)/$(LIBDIR)/
50a1010
+	cp -a pm_linux/libportmidi.so.0 $(DESTDIR)/$(LIBDIR)/
50a1010
diff -rupN portmidi.old/pm_linux/pmlinuxalsa.c portmidi/pm_linux/pmlinuxalsa.c
50a1010
--- portmidi.old/pm_linux/pmlinuxalsa.c	2008-06-13 20:23:43.000000000 -0400
50a1010
+++ portmidi/pm_linux/pmlinuxalsa.c	2009-01-11 01:26:06.000000000 -0500
50a1010
@@ -243,8 +243,8 @@ static PmError alsa_out_close(PmInternal
50a1010
     alsa_descriptor_type desc = (alsa_descriptor_type) midi->descriptor;
50a1010
     if (!desc) return pmBadPtr;
50a1010
 
50a1010
-    if (pm_hosterror = snd_seq_disconnect_to(seq, desc->this_port, 
50a1010
-                                             desc->client, desc->port)) {
50a1010
+    if ((pm_hosterror = snd_seq_disconnect_to(seq, desc->this_port, 
50a1010
+					      desc->client, desc->port))) {
50a1010
         // if there's an error, try to delete the port anyway, but don't
50a1010
         // change the pm_hosterror value so we retain the first error
50a1010
         snd_seq_delete_port(seq, desc->this_port);
50a1010
@@ -333,8 +333,8 @@ static PmError alsa_in_close(PmInternal 
50a1010
 {
50a1010
     alsa_descriptor_type desc = (alsa_descriptor_type) midi->descriptor;
50a1010
     if (!desc) return pmBadPtr;
50a1010
-    if (pm_hosterror = snd_seq_disconnect_from(seq, desc->this_port, 
50a1010
-                                               desc->client, desc->port)) {
50a1010
+    if ((pm_hosterror = snd_seq_disconnect_from(seq, desc->this_port, 
50a1010
+						desc->client, desc->port))) {
50a1010
         snd_seq_delete_port(seq, desc->this_port); /* try to close port */
50a1010
     } else {
50a1010
         pm_hosterror = snd_seq_delete_port(seq, desc->this_port);
50a1010
diff -rupN portmidi.old/pm_linux/pmlinux.c portmidi/pm_linux/pmlinux.c
50a1010
--- portmidi.old/pm_linux/pmlinux.c	2006-11-29 18:37:09.000000000 -0500
50a1010
+++ portmidi/pm_linux/pmlinux.c	2009-01-11 01:26:48.000000000 -0500
50a1010
@@ -28,10 +28,10 @@ PmError pm_init()
50a1010
      * devices.
50a1010
      */
50a1010
     #ifdef PMALSA
50a1010
-	pm_linuxalsa_init();
50a1010
+	return pm_linuxalsa_init();
50a1010
     #endif
50a1010
     #ifdef PMNULL
50a1010
-        pm_linuxnull_init();
50a1010
+        return pm_linuxnull_init();
50a1010
     #endif
50a1010
     return pmNoError;
50a1010
 }