aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/libmikmod.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Formula/libmikmod.rb')
-rw-r--r--Library/Formula/libmikmod.rb125
1 files changed, 77 insertions, 48 deletions
diff --git a/Library/Formula/libmikmod.rb b/Library/Formula/libmikmod.rb
index b7e8984f9..cd55ee651 100644
--- a/Library/Formula/libmikmod.rb
+++ b/Library/Formula/libmikmod.rb
@@ -1,61 +1,90 @@
require 'formula'
class Libmikmod < Formula
- url 'http://mikmod.raphnet.net/files/libmikmod-3.2.0-beta2.tar.bz2'
+ url 'https://github.com/mistydemeo/libmikmod.git', :tag => '446324a45a6d165b1941a4758f6cd221301b479e'
homepage 'http://mikmod.raphnet.net/'
- md5 '5b05f3b1167eba7855b8e38bde2b8070'
+ version '3.2.0b2'
+
+ def options
+ [[ '--with-debug', 'Enable debugging symbols and build without optimization' ]]
+ end
- # MacPorts patches to fix broken audio in 64-bit, crash on accessing samples menu
def patches
- DATA
+ # When aclocal is run on configure.in, it is told to use a macro AM_PATH_ESD that
+ # only exists if esound is installed. Here CoreAudio is used not esound.
+ DATA unless Formula.factory('esound').installed?
end
def install
- system "./configure", "--disable-debug", "--disable-dependency-tracking",
- "--prefix=#{prefix}", "--mandir=#{man}",
- "--infodir=#{info}"
- system "make install"
+ ENV.no_optimization if ARGV.include? '--with-debug' # leave code unoptimzed 4 debug
+ ENV['LIBTOOLIZE'] = '/usr/bin/glibtoolize' # system libtoolize for autoreconf
+ acpath = "#{HOMEBREW_PREFIX}/share/aclocal" # esd.m4 if installed would be here
+ ENV['ACLOCAL'] = "/usr/bin/aclocal -I #{acpath}" if Formula.factory('esound').installed?
+
+ # Macports patched libmikmod-3.2.0-beta2.tar.bz2 in 2004. Most of their work
+ # was merged into the upstream source by 2005 when the devs moved to sourceforge.
+ # Development stopped a year later, after many more bug fixes and improvements.
+ # The version was never changed. It is still called 3.2.0b2 inside their code.
+ # This formula builds 3.2.0b2 from cvs, the final libmikmod at this time.
+
+ # The patch below is the only one from Macports the devs didn't merge. It
+ # prevents a crash on accessing the samples menu in Mikmod. Check if Samples[]
+ # exists before letting the subsequent code try to access the array items.
+
+ # Also in cvs is one error that stops the build. Below is a new patch
+ # that fixes the error when linking libmikmod.dylib, where the build outputs:
+ # ld: duplicate symbol _vc_callback in .libs/virtch2.o and .libs/virtch.o
+ # Problem: vc_callback is declared twice globally and once as an extern.
+ # Solution: Switch it to declared once globally and twice as extern.
+
+ # And finally in cvs the function vc_callback() is defined to use unsigned char*.
+ # With this patch, virtch2.c and virtch.c will use vc_callback() identically.
+
+ inreplace 'playercode/virtch_common.c', '(handle<MAXSAMPLEHANDLES)',
+ '(Samples && handle<MAXSAMPLEHANDLES)'
+
+ inreplace 'playercode/mdriver.c', 'extern MikMod_callback_t vc_callback',
+ 'MikMod_callback_t vc_callback'
+ inreplace 'playercode/virtch_common.c', 'MikMod_callback_t vc_callback',
+ 'extern MikMod_callback_t vc_callback'
+
+ inreplace 'playercode/virtch2.c', 'vc_callback((char*)vc_tickbuf, portion)',
+ 'vc_callback((unsigned char*)vc_tickbuf, portion)'
+
+
+ # OSX has CoreAudio, but ALSA is not for this OS nor is SAM9407 nor ULTRA.
+ # The osx and x11 tests may work automatically. They are explicit to be thorough.
+ args = ["--prefix=#{prefix}",
+ "--mandir=#{man}",
+ "--infodir=#{info}",
+ "--disable-alsa",
+ "--disable-sam9407",
+ "--disable-ultra",
+ "--enable-osx",
+ "--with-x",
+ "--x-includes=/usr/X11/include",
+ "--x-libraries=/usr/X11/lib"]
+ args << ((ARGV.include? '--with-debug') ? '--enable-debug' : '--disable-debug')
+ # autoreconf w/glibtoolize will fix PIC flags, flat_namespace from 2005 era code.
+ system "autoreconf -ivf"
+ # An oos build is recommended in the documentation.
+ Dir.mkdir 'macbuild'
+ Dir.chdir 'macbuild' do
+ system "../configure", *args
+ system "make"
+ system "make install"
+ end
end
end
-
__END__
-diff --git a/include/mikmod.h.in b/include/mikmod.h.in
-index 9b98f43..c39f779 100644
---- a/include/mikmod.h.in
-+++ b/include/mikmod.h.in
-@@ -85,7 +85,7 @@ typedef char CHAR;
-
- @DOES_NOT_HAVE_SIGNED@
-
--#if defined(__arch64__) || defined(__alpha)
-+#if defined(__arch64__) || defined(__alpha) || defined(_LP64)
- /* 64 bit architectures */
-
- typedef signed char SBYTE; /* 1 byte, signed */
-diff --git a/include/mikmod_internals.h b/include/mikmod_internals.h
-index c61dab1..4fab08d 100644
---- a/include/mikmod_internals.h
-+++ b/include/mikmod_internals.h
-@@ -50,7 +50,7 @@ extern "C" {
- /*========== More type definitions */
-
- /* SLONGLONG: 64bit, signed */
--#if defined (__arch64__) || defined(__alpha)
-+#if defined(__arch64__) || defined(__alpha) || defined(_LP64)
- typedef long SLONGLONG;
- #define NATIVE_64BIT_INT
- #elif defined(__WATCOMC__)
-diff --git a/playercode/virtch_common.c b/playercode/virtch_common.c
-index 17ffaac..9b4f976 100644
---- a/playercode/virtch_common.c
-+++ b/playercode/virtch_common.c
-@@ -351,7 +351,7 @@ void VC1_VoiceSetPanning(UBYTE voice,ULONG pan)
-
- void VC1_SampleUnload(SWORD handle)
- {
-- if (handle<MAXSAMPLEHANDLES) {
-+ if (Samples && handle<MAXSAMPLEHANDLES) {
- if (Samples[handle])
- free(Samples[handle]);
- Samples[handle]=NULL;
+--- a/configure.in 2007-12-03 12:50:05.000000000 -0800
++++ b/configure.in 2011-11-18 22:08:41.000000000 -0800
+@@ -331,7 +331,6 @@
+ if test $libmikmod_driver_esd = yes
+ then
+ libmikmod_driver_esd=no
+- AM_PATH_ESD(0.2.6,libmikmod_driver_esd=yes)
+ # We also need to know if esd is compiled with alsa support
+ if test $libmikmod_driver_esd = yes
+ then