--- a/portmidi/pm_linux/README_LINUX.txt
+++ b/portmidi/pm_linux/README_LINUX.txt
@@ -1,30 +1,100 @@
 README_LINUX.txt for PortMidi
 Roger Dannenberg
-29 Aug 2006
+14 Oct 2009
-To make PortMidi and PortTime, go back up to the portmidi
-directory and type 
+To make PortMidi, you need cmake and the Java SDK.
+Go back up to the portmidi directory and type:
-make -f pm_linux/Makefile
+ccmake .
-(You can also copy pm_linux/Makefile to the portmidi
-directory and just type "make".)
+Type 'c' (configure) and then 'g' (generate). You may have
+by typing 't' (toggle to advanced mode) and using the 
+editor to change the fields. You can find possible values
+for JAVA_INCLUDE_PATH by typing "locate jni.h", and for
+JAVA_JVM_LIBRARY by typing locate libjvm".
+You also need JAVA_INCLUDE_PATH2, but this will normally
+be set automatically after you set JAVA_INCLUDE_PATH and
+run "configure" (type "c" to ccmake). Normally,
+JAVA_INCLUDE_PATH2 is the linux subdirectory within
+Notice that the CMAKE_BUILD_TYPE can be Debug or Release.
+Stick with Release if you are not debugging.
+After successfully generating make files with ccmake, you
+can run make:
 The Makefile will build all test programs and the portmidi
-library. You may want to modify the Makefile to remove the
-PM_CHECK_ERRORS definition. For experimental software,
+library. For experimental software,
 especially programs running from the command line, we 
-recommend using PM_CHECK_ERRORS -- it will terminate your
+recommend using the Debug version -- it will terminate your
 program and print a helpful message if any PortMidi 
-function returns an error code.
+function returns an error code. (Released software should
+check for error codes and handle them, but for quick,
+non-critical projects, the automatic "print and die" 
+handling can save some work.)
-If you do not compile with PM_CHECK_ERRORS, you should 
-check for errors yourself.
+THE pmdefaults PROGRAM
-This code has not been carefully tested; however, 
-all test programs in pm_test seem to run properly.
+You should install pmdefaults. It provides a graphical interface
+for selecting default MIDI IN and OUT devices so that you don't
+have to build device selection interfaces into all your programs
+and so users have a single place to set a preference.
+Follow the instructions above to run ccmake, making sure that
+CMAKE_BUILD_TYPE is Release. Run make as described above. Then:
+sudo make install
+This will install PortMidi libraries and the pmdefault program.
+You must alos have the environment variable LD_LIBRARY_PATH set
+to include /usr/local/lib (where libpmjni.so is installed).
+Now, you can run pmdefault.
+pmdefaults will not work unless LD_LIBRARY_PATH includes a 
+directory (normally /usr/local/lib) containing libpmjni.so,
+installed as described above.
+To set LD_LIBRARY_PATH, you might want to add this to your
+~/.profile (if you use the bash shell):
+When compiling portmidi under linux on an AMD64, I had to add the -fPIC
+flag to the gcc flags.
+Reason: when trying to build John Harrison's pyPortMidi gcc bailed out
+with this error:
+./linux/libportmidi.a(pmlinux.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
+./linux/libportmidi.a: could not read symbols: Bad value
+collect2: ld returned 1 exit status
+error: command 'gcc' failed with exit status 1
+What they said:
+On certain architectures (AMD64 amongst them), shared libraries *must* 
+be "PIC-enabled".
+22-jan-2010 Roger B. Dannenberg
+   Updated instructions about Java paths
+14-oct-2009 Roger B. Dannenberg
+   Using CMake now for building and configuration
 29-aug-2006 Roger B. Dannenberg
    Fixed PortTime to join with time thread for clean exit.