Revision: 4472 http://trac.macosforge.org/projects/ruby/changeset/4472 Author: joshua.ballanco@apple.com Date: 2010-08-26 23:43:45 -0700 (Thu, 26 Aug 2010) Log Message: ----------- Added some linker options to rubyc Modified Paths: -------------- MacRuby/trunk/bin/rubyc MacRuby/trunk/rubyc.1 Modified: MacRuby/trunk/bin/rubyc =================================================================== --- MacRuby/trunk/bin/rubyc 2010-08-27 03:37:03 UTC (rev 4471) +++ MacRuby/trunk/bin/rubyc 2010-08-27 06:43:45 UTC (rev 4472) @@ -16,6 +16,7 @@ @archs = [] @internal = argv.delete('--internal') @frameworks = %w{Foundation} + @linkf = [] # Parse arguments. OptionParser.new do |opts| @@ -26,6 +27,9 @@ opts.on('--framework <name>', "Link standalone static executable with given framework") { |p| @frameworks << p } opts.on('--sdk <path>', "Use SDK when compiling standalone static executable") { |x| @sdk = x } opts.on('--dylib', "Create a dynamic library") { @dylib = true } + opts.on('--compatibility_version <VERSION>', "Compatibility Version for linking") { |ver| @linkf << "-compatibility_version #{ver}" } + opts.on('--current_version <VERSION>', "Current Version for linking") { |ver| @linkf << "-current_version #{ver}" } + opts.on('--install_name <NAME>', "Install Name for linking") { |name| @linkf << "-install_name #{name}" } opts.on('-C', 'Compile, assemble and link a loadable object file') { @bundle = true } opts.on('-a', '--arch <ARCH>', 'Compile for specified CPU architecture') { |arch| @archs << arch } opts.on('-v', '--version', 'Display the version') { puts RUBY_DESCRIPTION; exit 1 } @@ -139,7 +143,7 @@ end def cleanup - @tmpfiles.each { |x| File.delete(x) } + @tmpfiles.each { |x| File.delete(x) if File.exist?(x) } end private @@ -224,9 +228,9 @@ # Build. main = gen_tmpfile('main', 'c') File.open(main, 'w') { |io| io.write(main_txt) } - linkf = @internal ? "-L. -lmacruby" : "-L#{RbConfig::CONFIG['libdir']} -lmacruby" + @linkf << @internal ? "-L. -lmacruby" : "-L#{RbConfig::CONFIG['libdir']} -lmacruby" objs = objs_data.map { |obj, f| "\"#{obj}\"" }.join(' ') - execute("#{@gcxx} \"#{main}\" -dynamiclib -dynamic -undefined suppress -flat_namespace #{arch_flags} #{linkf} #{objs} -o \"#{output}\"") + execute("#{@gcxx} \"#{main}\" -dynamiclib -dynamic -undefined suppress -flat_namespace #{arch_flags} #{@linkf.join(' ')} #{objs} -o \"#{output}\"") strip(output) end Modified: MacRuby/trunk/rubyc.1 =================================================================== --- MacRuby/trunk/rubyc.1 2010-08-27 03:37:03 UTC (rev 4471) +++ MacRuby/trunk/rubyc.1 2010-08-27 06:43:45 UTC (rev 4472) @@ -45,6 +45,16 @@ .Nm require method. .Pp +.It Fl h, Fl -help +Display a short description of the command line options. +.Pp +.It Fl o Ar file +Place the output into +.Ar file . +If this option is not given, +.Nm macrubyc +will try to determine a default output file name based on the object file type that is being generated. For executables, the default is a.out. For objects, the default is the original source file name with the object type extension. For dynamic libraries, this option is mandatory. +.Pp .It Fl -dylib Create a dynamic library instead of an executable. This option compiles every Ruby source file passed to .Nm macrubyc @@ -54,16 +64,17 @@ .Fl o option must be provided when building dynamic libraries. .Pp -.It Fl h, Fl -help -Display a short description of the command line options. +.Bl -tag -width XXXXXXXXXX +The +.Fl -dylib +option can also take the following optional linker arguments (see +.Xr libtool 1 +for more information): +.It Fl -compatibility_version Ar VERSION +.It Fl -current_version Ar VERSION +.It Fl -install_name Ar NAME +.El .Pp -.It Fl o Ar file -Place the output into -.Ar file . -If this option is not given, -.Nm macrubyc -will try to determine a default output file name based on the object file type that is being generated. For executables, the default is a.out. For objects, the default is the original source file name with the object type extension. For dynamic libraries, this option is mandatory. -.Pp .It Fl -static Create a standalone, static executable. By default, executables created by .Nm macrubyc
participants (1)
-
source_changes@macosforge.org