1
0
Fork 0
mirror of https://git.tukaani.org/xz.git synced 2024-04-04 12:36:23 +02:00
xz-archive/src/xz/Makefile.am
Lasse Collin bb0b1004f8 xz: Multiple fixes.
The code assumed that printing numbers with thousand separators
and decimal points would always produce only US-ASCII characters.
This was used for buffer sizes (with snprintf(), no overflows)
and aligning columns of the progress indicator and --list. That
assumption was wrong (e.g. LC_ALL=fi_FI.UTF-8 with glibc), so
multibyte character support was added in this commit. The old
way is used if the operating system doesn't have enough multibyte
support (e.g. lacks wcwidth()).

The sizes of buffers were increased to accomodate multibyte
characters. I don't know how big they should be exactly, but
they aren't used for anything critical, so it's not too bad.
If they still aren't big enough, I hopefully get a bug report.
snprintf() takes care of avoiding buffer overflows.

Some static buffers were replaced with buffers allocated on
stack. double_to_str() was removed. uint64_to_str() and
uint64_to_nicestr() now share the static buffer and test
for thousand separator support.

Integrity check names "None" and "Unknown-N" (2 <= N <= 15)
were marked to be translated. I had forgot these, plus they
wouldn't have worked correctly anyway before this commit,
because printing tables with multibyte strings didn't work.

Thanks to Marek Černocký for reporting the bug about
misaligned table columns in --list output.
2010-09-10 10:30:33 +03:00

104 lines
2.2 KiB
Makefile

##
## Author: Lasse Collin
##
## This file has been put into the public domain.
## You can do whatever you want with this file.
##
bin_PROGRAMS = xz
xz_SOURCES = \
args.c \
args.h \
coder.c \
coder.h \
file_io.c \
file_io.h \
hardware.c \
hardware.h \
list.c \
list.h \
main.c \
main.h \
message.c \
message.h \
options.c \
options.h \
private.h \
signals.c \
signals.h \
suffix.c \
suffix.h \
util.c \
util.h \
$(top_srcdir)/src/common/tuklib_open_stdxxx.c \
$(top_srcdir)/src/common/tuklib_progname.c \
$(top_srcdir)/src/common/tuklib_exit.c \
$(top_srcdir)/src/common/tuklib_cpucores.c \
$(top_srcdir)/src/common/tuklib_mbstr_width.c \
$(top_srcdir)/src/common/tuklib_mbstr_fw.c
if COND_W32
xz_SOURCES += xz_w32res.rc
endif
xz_CPPFLAGS = \
-DLOCALEDIR=\"$(localedir)\" \
-I$(top_srcdir)/src/common \
-I$(top_srcdir)/src/liblzma/api \
-I$(top_builddir)/lib \
$(STATIC_CPPFLAGS)
xz_LDFLAGS = $(STATIC_LDFLAGS)
xz_LDADD = $(top_builddir)/src/liblzma/liblzma.la
if COND_GNULIB
xz_LDADD += $(top_builddir)/lib/libgnu.a
endif
# libgnu.a may need these libs, so this must be after libgnu.a.
xz_LDADD += $(LTLIBINTL)
# Windows resource compiler support
.rc.o:
$(RC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(xz_CPPFLAGS) $(CPPFLAGS) $(RCFLAGS) -i $< -o $@
dist_man_MANS = xz.1
## Create symlinks for unxz and xzcat for convenience. Create symlinks also
## for lzma, unlzma, and lzcat for compatibility with LZMA Utils 4.32.x.
xzlinks = unxz xzcat lzma unlzma lzcat
install-exec-hook:
cd $(DESTDIR)$(bindir) && \
target=`echo xz | sed '$(transform)'`$(EXEEXT) && \
for name in $(xzlinks); do \
link=`echo $$name | sed '$(transform)'`$(LN_EXEEXT) && \
rm -f $$link && \
$(LN_S) $$target $$link; \
done
install-data-hook:
cd $(DESTDIR)$(mandir)/man1 && \
target=`echo xz | sed '$(transform)'` && \
for name in $(xzlinks); do \
link=`echo $$name | sed '$(transform)'` && \
rm -f $$link.1 && \
$(LN_S) $$target.1 $$link.1; \
done
uninstall-hook:
cd $(DESTDIR)$(bindir) && \
for name in $(xzlinks); do \
link=`echo $$name | sed '$(transform)'`$(LN_EXEEXT) && \
rm -f $$link; \
done
cd $(DESTDIR)$(mandir)/man1 && \
for name in $(xzlinks); do \
link=`echo $$name | sed '$(transform)'` && \
rm -f $$link.1; \
done