s4_include(path)

This macro is similar to M4 include and M4sugar m4_include macros: all expand to content of the specified file. But there is some difference:

First, the most important, s4_include expands to quoted content of the file:

⇐ {s4_include([include.m4])}
⇒ {# file: include.m4 (made from: test/include.m4.in) #
⇒
⇒ =m4_toupper([String])=
⇒
⇒ # end #
⇒ }

(Note: m4_toupper macro is not expanded.)

m4_include returns unquoted content, i. e. subject to further macro expansion:

⇐ {m4_include([include.m4])}
⇒ {# file: include.m4 (made from: test/include.m4.in) #
⇒
⇒ =STRING=
⇒
⇒ # end #
⇒ }

(Note: m4_toupper macro is expanded to "STRING".)

Second, s4_include does not respect M4 -I option, while m4_include does. (I would like to respect the -I option, but it is hardly possible.)

Third, s4_include does not warn about agains multiple inclusions of the same file, while m4_include does. (However, it may change in the future.)