Ignore:
Timestamp:
May 1, 2017, 7:53:04 PM (7 years ago)
Author:
coas-nagasima
Message:

mrbc.jsをemscriptenでビルド出来るようmrubyのビルドファイルを更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/mruby-1.2.0/tasks/mruby_build_commands.rake

    r270 r281  
    11require 'forwardable'
     2require 'digest/md5'
    23
    34module MRuby
     
    8485      if MRUBY_BUILD_HOST_IS_CYGWIN
    8586        _run compile_options, { :flags => all_flags(_defineds, _include_paths, _flags),
    86                                 :infile => cygwin_filename(infile), :outfile => cygwin_filename(outfile) }
     87                                :infile => cygwin_filename(infile), :outfile => cygwin_filename(outfile),
     88                                :outdir => File.dirname(outfile), :outfilebase => File.basename(outfile, ".*") }
    8789      else
    8890        _run compile_options, { :flags => all_flags(_defineds, _include_paths, _flags),
    89                                 :infile => filename(infile), :outfile => filename(outfile) }
     91                                :infile => filename(infile), :outfile => filename(outfile),
     92                                :outdir => File.dirname(outfile), :outfilebase => File.basename(outfile, ".*") }
    9093      end
    9194    end
     
    178181                             :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
    179182                             :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
    180                              :libs => library_flags.join(' ') }
     183                             :libs => library_flags.join(' '),
     184                             :outdir => File.dirname(outfile), :outfilebase => File.basename(outfile, ".*") }
    181185      else
    182186        _run link_options, { :flags => all_flags(_library_paths, _flags),
     
    184188                             :flags_before_libraries => [flags_before_libraries, _flags_before_libraries].flatten.join(' '),
    185189                             :flags_after_libraries => [flags_after_libraries, _flags_after_libraries].flatten.join(' '),
    186                              :libs => library_flags.join(' ') }
     190                             :libs => library_flags.join(' '),
     191                             :outdir => File.dirname(outfile), :outfilebase => File.basename(outfile, ".*") }
    187192      end
    188193    end
     
    201206      FileUtils.mkdir_p File.dirname(outfile)
    202207      _pp "AR", outfile.relative_path
     208
     209      # reference from emar.py
     210      outfilebase = File.dirname(outfile)
     211      to_delete = []
     212      newargs = []
     213      objfiles.each do |orig_name|
     214        dir_name = File.dirname(orig_name)
     215        dir_name = dir_name.relative_path_from(Dir.pwd)
     216        base_name = File.basename(orig_name)
     217        parts = base_name.split('.')
     218        # h = Digest::MD5.new.update(orig_name).to_s
     219        h = Digest::MD5.new.update(orig_name).to_s.slice(0,4)
     220        parts[0] += '_' + h
     221        newname = parts.join('.')
     222        full_newname = File.join(dir_name, newname)
     223        if not File.exists?(full_newname)
     224          begin # it is ok to fail here, we just don't get hashing
     225            FileUtils.cp(orig_name, full_newname)
     226            newargs << full_newname
     227            to_delete << full_newname
     228          rescue
     229          end
     230        end
     231      end
     232
    203233      if MRUBY_BUILD_HOST_IS_CYGWIN
    204         _run archive_options, { :outfile => cygwin_filename(outfile), :objs => cygwin_filename(objfiles).join(' ') }
    205       else
    206         _run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).join(' ') }
     234        _run archive_options, { :outfile => cygwin_filename(outfile), :objs => cygwin_filename(newargs).join(' '), :outdir => File.dirname(outfile), :outfilebase => File.basename(outfile, ".*") }
     235      else
     236        _run archive_options, { :outfile => filename(outfile), :objs => filename(newargs).join(' '), :outdir => File.dirname(outfile), :outfilebase => File.basename(outfile, ".*") }
     237      end
     238
     239      to_delete.each do |d|
     240        FileUtils.rm(d)
    207241      end
    208242    end
Note: See TracChangeset for help on using the changeset viewer.