<commit_before>require 'formula'

class Libmikmod < Formula
  homepage 'http://mikmod.raphnet.net/'
  url 'https://github.com/mistydemeo/libmikmod.git', :tag => '446324a45a6d165b1941a4758f6cd221301b479e'
  version '3.2.0b2'

  def options
    [[ '--with-debug', 'Enable debugging symbols and build without optimization']]
  end

  if MacOS.xcode_version >= "4.3"
    depends_on "automake" => :build
    depends_on "libtool" => :build
  end

  # 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.
  def patches
    DATA unless Formula.factory('esound').installed?
  end

  def install
    ENV.no_optimization if ARGV.include? '--with-debug'  # leave code unoptimzed 4 debug
    ENV['LIBTOOLIZE'] = 'glibtoolize'           # system libtoolize for autoreconf
    acpath = "#{HOMEBREW_PREFIX}/share/aclocal"          # esd.m4 if installed would be here
    ENV['ACLOCAL'] = "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"

    mkdir 'macbuild' do
      system "../configure", *args
      system "make"
      system "make install"
    end
  end
end

__END__
--- 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<commit_msg>libmikmod 3.2.0b3<commit_after>require 'formula'

class Libmikmod < Formula
  homepage 'http://mikmod.shlomifish.org'
  url 'http://mikmod.shlomifish.org/files/libmikmod-3.2.0b3.tar.gz'
  sha256 '3e2e04caff8726d5ceca0d8a5a1a43528cc627f935e92291aded1d87603ade4f'

  def options
    [[ '--with-debug', 'Enable debugging symbols']]
  end

  def install
    ENV.x11
    if ARGV.include? '--with-debug' then
      (ENV.compiler == :clang) ? ENV.Og : ENV.O2
    end

    # The following four patches have been merged upstream by Shlomi.
    # Remove them at 3.2.0b4 or 3.2.0 stable.  The explanation for these is
    # recorded here:  https://gist.github.com/2355354
    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.
    args = %W[
      --prefix=#{prefix}
      --disable-alsa
      --disable-sam9407
      --disable-ultra
    ]
    args << '--with-debug' if ARGV.include? '--with-debug'
    mkdir 'macbuild' do
      system "../configure", *args
      system "make install"
    end
  end
end
{'fraction_non_alphanumeric': 0.10454783063251437, 'fraction_numerical': 0.03798571179648022, 'mean_word_length': 2.5652173913043477, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 7, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 13, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5859308', 'n_tokens_mistral': 2000, 'n_tokens_neox': 1822, 'n_words': 529}