# -*- coding: utf-8 -*- %w[. xot rucy].map {|s| "../../#{s}/lib"}.each do |path| $: << File.expand_path(File.join File.dirname(__FILE__), *path.split('/')) end require 'rubygems' require 'mkmf' require 'xot/rake/helpers' require 'xot/module' require 'rucy/module' require 'rays/module' include Xot::Rake DEBUG = env :DEBUG, false DEFS = [] INCDIRS = %w[ /opt/local/include /opt/include ] LIBDIRS = [] HEADERS = %w[ boost/shared_ptr.hpp ruby.h xot.h rucy.h rays.h ] LIBS = %w[ stdc++ xot rucy rays ] FRAMEWORKS = [] DEFS << '_DEBUG' if DEBUG DEFS << $~[0].upcase if RUBY_PLATFORM =~ /mswin|ming|cygwin|darwin/i if win32? DEFS << 'WINDOWS' << 'WIN32' LIBS.unshift 'gdi32', 'opengl32' elsif cocoa? DEFS << 'COCOA' FRAMEWORKS << 'AppKit' << 'OpenGL' end $CPPFLAGS << DEFS.map {|s| " -D#{s}"}.join $CPPFLAGS << INCDIRS.map {|s| " -I#{s}"}.join $LDFLAGS << LIBDIRS.map {|s| " -L#{s}"}.join $LDFLAGS << FRAMEWORKS.map {|s| " -framework #{s}"}.join $LOCAL_LIBS << ' -lrucy' Config::CONFIG.each {|key, val| val.gsub!(/gcc/, 'g++')} dir_config 'boost' dir_config 'xot', Xot.root_dir dir_config 'rucy', Rucy.root_dir dir_config 'rays', Rays.root_dir exit 1 unless HEADERS.all? {|s| have_header(s)} exit 1 unless LIBS.all? {|s| have_library(s)} create_makefile 'rays/native'