Module: Tebako::Packager::PatchBuildsystem
- Included in:
- Pass2Patch
- Defined in:
- lib/tebako/packager/patch_buildsystem.rb
Overview
Ruby buildsystem patches (pass2)
Constant Summary collapse
- COMMON_MK_PATCH =
This patch forces rebuild of extinit.c when exts.mk changes exts.mk changes when we rebuild extensions to make them statically linked
- TODO
-
it is possible that we can build extensions statically on pass1 and it will eliminate the need for this patch
{ "ext/extinit.c: $(srcdir)/template/extinit.c.tmpl $(PREP)" => "ext/extinit.c: $(srcdir)/template/extinit.c.tmpl $(PREP) $(EXTS_MK)" }.freeze
- TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_1 =
This patch changes libraries that are used for Ruby linking MAINLIBS is patched elsewhere (not with literal but dynamically)
to haold the list of sattic libraries andAlso we have to put LIBRUBYARG_STATIC instead of LIBRUBYARG to link with static libruby, configure’s –disable-shared option does not do it Several variants depending on os and version
"\t\t$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINOBJ) " \ "$(EXTOBJS) $(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@"
- TEMPLATE_MAKEFILE_IN_BASE_PATCH_PRE_3_1 =
"# -- Start of tebako patch --\n" \ "\t\t$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) " \ "$(EXTOBJS) $(LIBRUBYARG_STATIC) $(OUTFLAG)$@\n" \ "# -- End of tebako patch --"
- TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_3 =
"\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) " \ "$(LIBRUBYARG) $(MAINLIBS) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@"
- TEMPLATE_MAKEFILE_IN_BASE_PATTERN =
"\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(XLDFLAGS) $(MAINOBJ) $(EXTOBJS) " \ "$(LIBRUBYARG) $(MAINLIBS) $(EXTLIBS) $(OUTFLAG)$@"
- TEMPLATE_MAKEFILE_IN_BASE_PATCH =
"# -- Start of tebako patch --\n" \ "\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(MAINOBJ) " \ "$(EXTOBJS) $(LIBRUBYARG_STATIC) $(OUTFLAG)$@\n" \ "# -- End of tebako patch --"
- TEMPLATE_MAKEFILE_IN_BASE_PATCH_MSYS =
"# -- Start of tebako patch --\n" \ "\t\t$(Q) $(PURIFY) $(CC) $(EXE_LDFLAGS) $(RUBY_EXP) $(MAINOBJ) " \ "$(EXTOBJS) $(LIBRUBYARG_STATIC) $(OUTFLAG)$@\n" \ "# -- End of tebako patch --"
Instance Method Summary collapse
- #get_config_status_patch(ostype, deps_lib_dir, ruby_ver) ⇒ Object
- #get_config_status_pattern(ostype) ⇒ Object
- #template_makefile_in_patch_two(ruby_ver) ⇒ Object
- #template_makefile_in_subst(ruby_ver) ⇒ Object
Instance Method Details
#get_config_status_patch(ostype, deps_lib_dir, ruby_ver) ⇒ Object
111 112 113 114 115 116 |
# File 'lib/tebako/packager/patch_buildsystem.rb', line 111 def get_config_status_patch(ostype, deps_lib_dir, ruby_ver) { get_config_status_pattern(ostype) => "S[\"MAINLIBS\"]=\"#{PatchLibraries.mlibs(ostype, deps_lib_dir, ruby_ver, false)}\"" } end |
#get_config_status_pattern(ostype) ⇒ Object
100 101 102 103 104 105 106 107 108 109 |
# File 'lib/tebako/packager/patch_buildsystem.rb', line 100 def get_config_status_pattern(ostype) scmb = ScenarioManagerBase.new(ostype) if scmb.macos? "S[\"MAINLIBS\"]=\"-ldl -lobjc -lpthread \"" elsif scmb.msys? "S[\"MAINLIBS\"]=\"-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt \"" else "S[\"MAINLIBS\"]=\"-lz -lrt -lrt -ldl -lcrypt -lm -lpthread \"" end end |
#template_makefile_in_patch_two(ruby_ver) ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'lib/tebako/packager/patch_buildsystem.rb', line 90 def template_makefile_in_patch_two(ruby_ver) if !ruby_ver.ruby31? { TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_1 => template_makefile_in_subst(ruby_ver) } elsif !ruby_ver.ruby33? { TEMPLATE_MAKEFILE_IN_BASE_PATTERN_PRE_3_3 => template_makefile_in_subst(ruby_ver) } else { TEMPLATE_MAKEFILE_IN_BASE_PATTERN => template_makefile_in_subst(ruby_ver) } end end |
#template_makefile_in_subst(ruby_ver) ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/tebako/packager/patch_buildsystem.rb', line 80 def template_makefile_in_subst(ruby_ver) if ScenarioManagerBase.new.msys? TEMPLATE_MAKEFILE_IN_BASE_PATCH_MSYS elsif !ruby_ver.ruby31? TEMPLATE_MAKEFILE_IN_BASE_PATCH_PRE_3_1 else TEMPLATE_MAKEFILE_IN_BASE_PATCH end end |