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 and related options Also 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
115 116 117 118 119 120 |
# File 'lib/tebako/packager/patch_buildsystem.rb', line 115 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 110 111 112 113 |
# 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? # The configure LIBS env (crypt32 & co. for the static vcpkg OpenSSL, # tebako#345) is appended to MAINLIBS after ruby's defaults; the # pattern must match the resulting line exactly or the mlibs # substitution silently misses and the engine libs never get in "S[\"MAINLIBS\"]=\"-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt -lcrypt32 -ladvapi32 -luser32 " 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 |