# -*- coding: utf-8 -*- require 'bundler/setup' 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 << 'NDEBUG' unless 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 $LDFLAGS << ' -Wl,--out-implib=native.dll.a' if cygwin? $CFLAGS << ' --stdlib=libc++' if clang? $LOCAL_LIBS << ' -lrucy' RbConfig::CONFIG.each do |key, val| {'gcc' => 'g++', 'clang' => 'clang++'}.each {|from, to| val.gsub! from, to} end 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'