diff options
Diffstat (limited to 'Library/Formula/libmikmod.rb')
| -rw-r--r-- | Library/Formula/libmikmod.rb | 125 |
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 |
