Revision: 4307 http://trac.macosforge.org/projects/ruby/changeset/4307 Author: lsansonetti@apple.com Date: 2010-06-29 18:33:47 -0700 (Tue, 29 Jun 2010) Log Message: ----------- rubyc: add --sdk option (work in progress) Modified Paths: -------------- MacRuby/trunk/bin/rubyc Modified: MacRuby/trunk/bin/rubyc =================================================================== --- MacRuby/trunk/bin/rubyc 2010-06-30 01:31:12 UTC (rev 4306) +++ MacRuby/trunk/bin/rubyc 2010-06-30 01:33:47 UTC (rev 4307) @@ -24,6 +24,7 @@ opts.on('-o <file>', 'Place the output into <file>') { |output| @output = output } opts.on('--static', "Create a standalone static executable") { @static = true } 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('-C', 'Compile, assemble and link a loadable object file') { @bundle = true } opts.on('-a', '--arch <ARCH>', 'Compile for specified CPU architecture') { |arch| @archs << arch } @@ -44,6 +45,9 @@ die "Invalid CPU architecture `#{arch}'. Possible values are: " + VALID_ARCHS.join(", ") end end + if @sdk and !File.exist?(@sdk) + die "Given SDK path `#{@sdk}' doesn't exist." + end @frameworks.uniq! end @@ -80,12 +84,13 @@ if File.exist?(f) "#{f}/Resources/BridgeSupport/#{File.basename(f)}Full.bridgesupport" else - "/System/Library/Frameworks/#{f}.framework/Resources/BridgeSupport/#{f}Full.bridgesupport" + base = (@sdk || '') + File.join(base, "/System/Library/Frameworks/#{f}.framework/Resources/BridgeSupport/#{f}Full.bridgesupport") end if File.exist?(p) @uses_bs_flags << "--uses-bs #{p} " else - die "Couldn't locate the Full BridgeSupport file for framework: `%{f}'" + $stderr.puts "Couldn't locate the Full BridgeSupport file for framework `#{f}' at path `#{p}', compilation might generate a unusable binary!" end end if @dont_link or @bundle @@ -294,7 +299,12 @@ # Link all objects into executable. path = @internal ? "-L." : "-L#{RbConfig::CONFIG['libdir']}" - linkf = "-lobjc -licucore -lauto " + linkf = "" + if @sdk + path = '' + linkf << "-F#{@sdk}/System/Library/Frameworks -L#{@sdk}/usr/lib " + end + linkf << "-lobjc -licucore -lauto " @frameworks.each { |f| linkf << "-framework #{f} " } linkf << (@static ? "#{path} #{RbConfig::CONFIG['LIBRUBYARG_STATIC_REALLY']}" :
participants (1)
-
source_changes@macosforge.org