From 0d9a681eff867b569a31ab4f85a43ce53712a9cd Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sun, 3 Mar 2024 15:02:00 +0000 Subject: [PATCH] enc: Expand substitution variables in Makefile.in by default This change makes `make_encmake.rb` expand all substitution variables when replacing them in `enc/Makefile.in` to avoid propagating all possibly referenced variables to the generated Makefile. The old behavior, which don't expand make variables when generating Makefile, was useful to temporarily override inherited variables like `cflags` in `CFLAGS` at make-time. However, it's not a common use case and it requires to propagate all possibly referenced variables properly considering key name duplication between `enc/Makefile.in` and `RbConfig::CONFIG`. --- enc/make_encmake.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/enc/make_encmake.rb b/enc/make_encmake.rb index a0bf4be969d7e0..09e19f65514499 100755 --- a/enc/make_encmake.rb +++ b/enc/make_encmake.rb @@ -129,7 +129,12 @@ def target_transcoders dep = "" end mkin = File.read(File.join($srcdir, "Makefile.in")) -mkin.gsub!(/@(#{CONFIG.keys.join('|')})@/) {CONFIG[$1]} +# Variables that should not be expanded in Makefile.in to allow +# overriding inherited variables at make-time. +not_expand_vars = %w(CFLAGS) +mkin.gsub!(/@(#{RbConfig::CONFIG.keys.join('|')})@/) do + not_expand_vars.include?($1) ? CONFIG[$1] : RbConfig::CONFIG[$1] +end File.open(ARGV[0], 'wb') {|f| f.puts mkin, dep }