aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJia Tan <jiat0218@gmail.com>2023-07-24 21:43:44 +0800
committerLasse Collin <lasse.collin@tukaani.org>2023-08-01 18:41:42 +0300
commit19899340cf74d98304f9f5b726c72e85c7017d72 (patch)
treec8c643e58e47b467e1c4b3fc226b417a9575ed45 /src
parentTests: Skip .lz files in test_files.sh if not configured. (diff)
downloadxz-19899340cf74d98304f9f5b726c72e85c7017d72.tar.xz
liblzma: Prevent an empty translation unit in Windows builds.
To workaround Automake lacking Windows resource compiler support, an empty source file is compiled to overwrite the resource files for static library builds. Translation units without an external declaration are not allowed by the C standard and result in a warning when used with -Wempty-translation-unit (Clang) or -pedantic (GCC).
Diffstat (limited to 'src')
-rw-r--r--src/liblzma/Makefile.am6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/liblzma/Makefile.am b/src/liblzma/Makefile.am
index 8b3a678b..6e38cb65 100644
--- a/src/liblzma/Makefile.am
+++ b/src/liblzma/Makefile.am
@@ -72,11 +72,15 @@ endif
# static liblzma, we overwrite the static object file with an object file
# compiled from empty input. Note that GNU-specific features are OK here,
# because on Windows we are compiled with the GNU toolchain.
+#
+# The typedef in empty.c will prevent an empty translation unit, which is
+# not allowed by the C standard. It results in a warning with
+# -Wempty-translation-unit with Clang or -pedantic for GCC.
.rc.lo:
$(LIBTOOL) --mode=compile $(RC) $(DEFS) $(DEFAULT_INCLUDES) \
$(INCLUDES) $(liblzma_la_CPPFLAGS) $(CPPFLAGS) $(RCFLAGS) \
-i $< -o $@
- echo > empty.c
+ echo "typedef void empty;" > empty.c
$(COMPILE) -c empty.c -o $(*D)/$(*F).o
# Remove ordinals from the generated .def file. People must link by name,