mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
163 lines
5.4 KiB
Text
163 lines
5.4 KiB
Text
README_MAC.txt for PortMidi
|
|
Roger Dannenberg
|
|
20 nov 2009
|
|
revised 20 Sep 2010 for Xcode 3.2.4 and CMake 8.2-2
|
|
|
|
To build PortMidi for Mac OS X, you must install Xcode and
|
|
CMake.
|
|
|
|
CMake can build either command-line Makefiles or Xcode projects.
|
|
These approaches are described in separate sections below.
|
|
|
|
==== CLEANING UP ====
|
|
(Skip this for now, but later you might want start from a clean
|
|
slate.)
|
|
|
|
Start in the portmedia/portmidi directory.
|
|
|
|
make -f pm_mac/Makefile.osx clean
|
|
|
|
will remove .o, CMakeFiles, and other intermediate files.
|
|
|
|
Using "cleaner" instead of "clean" will also remove jni-related
|
|
intermediate files.
|
|
|
|
Using "cleanest" instead of "clean" or "cleaner" will also remove
|
|
application binaries and the portmidi libraries. (It will not
|
|
uninstall anything, however.)
|
|
|
|
==== USING CMAKE (AND COMMAND LINE TOOLS) ====
|
|
|
|
Start in the portmedia/portmidi directory.
|
|
|
|
make -f pm_mac/Makefile.osx
|
|
|
|
(Begin note: make will invoke cmake to build a Makefile and then make to
|
|
build portmidi. This extra level allows you to correctly build
|
|
both Release and Debug versions. Release is the default, so to get
|
|
the Debug version, use:
|
|
|
|
make -f pm_mac/Makefile.osx configuration=Debug
|
|
)
|
|
|
|
Release version executables and libraries are now in
|
|
portmedia/portmidi/Release
|
|
|
|
Debug version executables and libraries are created in
|
|
portmedia/portmidi/Debug
|
|
The Debug versions are compiled with PM_CHECK_ERRORS which
|
|
prints an error message and aborts when an error code is returned
|
|
by PortMidi functions. This is useful for small command line
|
|
applications. Otherwise, you should check and handle error returns
|
|
in your program.
|
|
|
|
You can install portmidi as follows:
|
|
|
|
cd Release; sudo make install
|
|
|
|
This will install /usr/local/include/{portmidi.h, porttime.h}
|
|
and /usr/local/lib/{libportmidi.dylib, libportmidi_s.a, libpmjni.dylib}
|
|
|
|
You should now make the pmdefaults.app:
|
|
|
|
make -f pm_mac/Makefile.osx pmdefaults
|
|
|
|
NOTE: pmdefaults.app will be in pm_mac/Release/.
|
|
|
|
Please copy pmdefaults.app to your Applications folder or wherever
|
|
you would normally expect to find it.
|
|
|
|
==== USING CMAKE TO BUILD Xcode PROJECT ====
|
|
|
|
Before you can use Xcode, you need a portmidi.xcodeproj file.
|
|
CMake builds a location-dependent Xcode project, so unfortunately
|
|
it is not easy to provide an Xcode project that is ready to use.
|
|
Therefore, you should make your own. Once you have it, you can
|
|
use it almost like any other Xcode project, and you will not have
|
|
to go back to CMake.
|
|
|
|
(1) Install CMake if you do not have it already.
|
|
|
|
(2) Open portmedia/portmidi/CMakeLists.txt with CMake
|
|
|
|
(3) Use Configure and Generate buttons
|
|
|
|
(4) This creates portmedia/portmidi/portmidi.xcodeproj.
|
|
|
|
Note: You will also use pm_mac/pm_mac.xcodeproj, which
|
|
is not generated by CMake.
|
|
|
|
(5) Open portmidi/portmidi.xcodeproj with Xcode and
|
|
build what you need. The simplest thing is to build the
|
|
ALL_BUILD target. The default will be to build the Debug
|
|
version, but you may want to change this to Release.
|
|
|
|
NOTE: ALL_BUILD may report errors. Try simply building again
|
|
or rebuilding specific targets that fail until they build
|
|
without errors. There appears to be a race condition or
|
|
missing dependencies in the build system.
|
|
|
|
The Debug version is compiled with PM_CHECK_ERRORS, and the
|
|
Release version is not. PM_CHECK_ERRORS will print an error
|
|
message and exit your program if any error is returned from
|
|
a call into PortMidi.
|
|
|
|
CMake (currently) also creates MinSizRel and RelWithDebInfo
|
|
versions, but only because I cannot figure out how to disable
|
|
them.
|
|
|
|
You will probably want the application PmDefaults, which sets
|
|
default MIDI In and Out devices for PortMidi. You may also
|
|
want to build a Java application using PortMidi. Since I have
|
|
not figured out how to use CMake to make an OS X Java application,
|
|
use pm_mac/pm_mac.xcodeproj as follows:
|
|
|
|
(6) open pm_mac/pm_mac.xcodeproj
|
|
|
|
(7) pm_java/pmjni/portmidi_JportmidiApi.h is needed
|
|
by libpmjni.jnilib, the Java native interface library. Since
|
|
portmidi_JportmidiApi.h is included with PortMidi, you can skip
|
|
to step 8, but if you really want to rebuild everything from
|
|
scratch, build the JPortMidiHeaders project first, and continue
|
|
with step 8:
|
|
|
|
(8) If you did not build libpmjni.dylib using portmidi.xcodeproj,
|
|
do it now. (It depends on portmidi_JportmidiApi.h, and the
|
|
PmDefaults project depends on libpmjni.dylib.)
|
|
|
|
(9) Returning to pm_mac.xcodeproj, build the PmDefaults program.
|
|
|
|
(10) If you wish, copy pm_mac/build/Deployment/PmDefaults.app to
|
|
your applications folder.
|
|
|
|
(11) If you want to install libportmidi.dylib, first make it with
|
|
Xcode, then
|
|
sudo make -f pm_mac/Makefile.osx install
|
|
This command will install /usr/local/include/{porttime.h, portmidi.h}
|
|
and /usr/local/lib/libportmidi.dylib
|
|
Note that the "install" function of xcode creates portmidi/Release
|
|
and does not install the library to /usr/local/lib, so please use
|
|
the command line installer.
|
|
|
|
|
|
CHANGELOG
|
|
|
|
20-Sep-2010 Roger B. Dannenberg
|
|
Adapted to Xcode 3.2.4
|
|
20-Nov-2009 Roger B. Dannenberg
|
|
Added some install instructions
|
|
26-Sep-2009 Roger B. Dannenberg
|
|
More changes for using CMake, Makefiles, XCode
|
|
20-Sep-2009 Roger B. Dannenberg
|
|
Modifications for using CMake
|
|
14-Sep-2009 Roger B. Dannenberg
|
|
Modifications for using CMake
|
|
17-Jan-2007 Roger B. Dannenberg
|
|
Explicit instructions for Xcode
|
|
15-Jan-2007 Roger B. Dannenberg
|
|
Changed instructions because of changes to Makefile.osx
|
|
07-Oct-2006 Roger B. Dannenberg
|
|
Added directions for xcodebuild
|
|
29-aug-2006 Roger B. Dannenberg
|
|
Updated this documentation.
|
|
|