homebrew-core/Formula/mysql-connector-odbc.rb
Chen, Xiaoqiang 573bebda10 mysql-connector-odbc 5.1.12
Force static linking to libmysqlclient_r.a

Closes Homebrew/homebrew#20366.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
2013-06-10 10:53:04 -07:00

61 lines
1.9 KiB
Ruby

require 'formula'
class MySqlInstalled < Requirement
fatal true
default_formula 'mysql'
satisfy { which 'mysql_config' }
def message; <<-EOS.undent
MySQL is required to install.
You can install this with Homebrew using:
brew install mysql
If you plan to install mysql-odbc-connector as universal (32- and 64-bit),
install MySQL using:
brew install mysql --universal
Or, you can use an official installer from:
http://dev.mysql.com/downloads/mysql/
EOS
end
end
class MysqlConnectorOdbc < Formula
homepage 'http://dev.mysql.com/doc/refman/5.1/en/connector-odbc.html'
url 'http://mysql.mirror.iweb.ca/Downloads/Connector-ODBC/5.1/mysql-connector-odbc-5.1.12-src.tar.gz'
sha1 '6ee162de8a277cdb017c5c8eee6284601837e7da'
# Won't compile against mysql-connector-c, as the C connector exports an API version
# that causes issues with how "my_free" is declared
depends_on MySqlInstalled
depends_on 'cmake' => :build
option :universal
def install
args = ["-DCMAKE_INSTALL_PREFIX=#{prefix}"]
args << "-DCMAKE_OSX_ARCHITECTURES='i386;x86_64'" if build.universal?
args << "-DMYSQL_LIB:FILEPATH=#{HOMEBREW_PREFIX}/lib/libmysqlclient_r.a"
ENV['MYSQL_DIR'] = HOMEBREW_PREFIX
system 'cmake', ".", *args
fix_goofy_link_file_error
system 'make install'
end
def fix_goofy_link_file_error
# fixes linker error on linking up libmyodbc5.so on lion
# I have no idea why the -L/usr/local/lib -lmysqlclient_r doesn't do the
# trick. Can't use homebrew's patch system since it applies before link.txt
# exists; it gets generated by cmake.
#
# see http://bugs.mysql.com/bug.php?id=63302
#
link_file_name = "driver/CMakeFiles/myodbc5.dir/link.txt"
old_link = File.read link_file_name
File.open link_file_name, 'w' do |f|
f.puts "#{old_link.strip} #{HOMEBREW_PREFIX}/lib/libmysqlclient_r.a"
end
end
end