1###############################################################################
2#
3# Makefile to build XZ Utils using DJGPP
4#
5# Author: Lasse Collin
6#
7# This file has been put into the public domain.
8# You can do whatever you want with this file.
9#
10###############################################################################
11
12# For debugging, set comment "#define NDEBUG 1" from config.h to enable
13# the assert() macro, set STRIP=rem to disable stripping, and finally
14# e.g. CFLAGS="-g -O0".
15CC = gcc
16STRIP = strip
17CPPFLAGS =
18CFLAGS = -g -Wall -Wextra -Wfatal-errors -march=i386 -mtune=i686 -O2
19LDFLAGS = -lemu
20
21ALL_CFLAGS = -std=gnu99
22
23ALL_CPPFLAGS = \
24	-I. \
25	-I../lib \
26	-I../src/common \
27	-I../src/liblzma/api \
28	-I../src/liblzma/common \
29	-I../src/liblzma/check \
30	-I../src/liblzma/rangecoder \
31	-I../src/liblzma/lz \
32	-I../src/liblzma/lzma \
33	-I../src/liblzma/delta \
34	-I../src/liblzma/simple \
35	-DHAVE_CONFIG_H
36
37ALL_CPPFLAGS += $(CPPFLAGS)
38ALL_CFLAGS += $(CFLAGS)
39
40.PHONY: all
41all: xz.exe
42
43SRCS_C = \
44	../lib/getopt.c \
45	../lib/getopt1.c \
46	../src/common/tuklib_cpucores.c \
47	../src/common/tuklib_exit.c \
48	../src/common/tuklib_mbstr_fw.c \
49	../src/common/tuklib_mbstr_width.c \
50	../src/common/tuklib_open_stdxxx.c \
51	../src/common/tuklib_physmem.c \
52	../src/common/tuklib_progname.c \
53	../src/liblzma/check/check.c \
54	../src/liblzma/check/crc32_table.c \
55	../src/liblzma/check/crc64_table.c \
56	../src/liblzma/check/sha256.c \
57	../src/liblzma/common/alone_decoder.c \
58	../src/liblzma/common/alone_encoder.c \
59	../src/liblzma/common/block_decoder.c \
60	../src/liblzma/common/block_encoder.c \
61	../src/liblzma/common/block_header_decoder.c \
62	../src/liblzma/common/block_header_encoder.c \
63	../src/liblzma/common/block_util.c \
64	../src/liblzma/common/common.c \
65	../src/liblzma/common/filter_common.c \
66	../src/liblzma/common/filter_decoder.c \
67	../src/liblzma/common/filter_encoder.c \
68	../src/liblzma/common/filter_flags_decoder.c \
69	../src/liblzma/common/filter_flags_encoder.c \
70	../src/liblzma/common/hardware_physmem.c \
71	../src/liblzma/common/index.c \
72	../src/liblzma/common/index_decoder.c \
73	../src/liblzma/common/index_encoder.c \
74	../src/liblzma/common/index_hash.c \
75	../src/liblzma/common/stream_decoder.c \
76	../src/liblzma/common/stream_encoder.c \
77	../src/liblzma/common/stream_flags_common.c \
78	../src/liblzma/common/stream_flags_decoder.c \
79	../src/liblzma/common/stream_flags_encoder.c \
80	../src/liblzma/common/vli_decoder.c \
81	../src/liblzma/common/vli_encoder.c \
82	../src/liblzma/common/vli_size.c \
83	../src/liblzma/delta/delta_common.c \
84	../src/liblzma/delta/delta_decoder.c \
85	../src/liblzma/delta/delta_encoder.c \
86	../src/liblzma/lz/lz_decoder.c \
87	../src/liblzma/lz/lz_encoder.c \
88	../src/liblzma/lz/lz_encoder_mf.c \
89	../src/liblzma/lzma/fastpos_table.c \
90	../src/liblzma/lzma/lzma2_decoder.c \
91	../src/liblzma/lzma/lzma2_encoder.c \
92	../src/liblzma/lzma/lzma_decoder.c \
93	../src/liblzma/lzma/lzma_encoder.c \
94	../src/liblzma/lzma/lzma_encoder_optimum_fast.c \
95	../src/liblzma/lzma/lzma_encoder_optimum_normal.c \
96	../src/liblzma/lzma/lzma_encoder_presets.c \
97	../src/liblzma/rangecoder/price_table.c \
98	../src/liblzma/simple/arm.c \
99	../src/liblzma/simple/armthumb.c \
100	../src/liblzma/simple/ia64.c \
101	../src/liblzma/simple/powerpc.c \
102	../src/liblzma/simple/simple_coder.c \
103	../src/liblzma/simple/simple_decoder.c \
104	../src/liblzma/simple/simple_encoder.c \
105	../src/liblzma/simple/sparc.c \
106	../src/liblzma/simple/x86.c \
107	../src/xz/args.c \
108	../src/xz/coder.c \
109	../src/xz/file_io.c \
110	../src/xz/hardware.c \
111	../src/xz/list.c \
112	../src/xz/main.c \
113	../src/xz/message.c \
114	../src/xz/mytime.c \
115	../src/xz/options.c \
116	../src/xz/signals.c \
117	../src/xz/suffix.c \
118	../src/xz/util.c
119SRCS_ASM = \
120	../src/liblzma/check/crc32_x86.S \
121	../src/liblzma/check/crc64_x86.S
122
123OBJS_C = $(SRCS_C:.c=.o)
124OBJS_ASM = $(SRCS_ASM:.S=.o)
125OBJS = $(OBJS_C) $(OBJS_ASM)
126
127getopt.h:
128	update ../lib/getopt.in.h getopt.h
129
130$(OBJS): getopt.h
131
132$(OBJS_C): %.o: %.c
133	$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
134
135$(OBJS_ASM): %.o: %.S
136	$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
137
138# Make xz.exe not depend on an external DPMI server.
139xz.exe: $(OBJS)
140	$(CC) $(ALL_CFLAGS) $(OBJS) $(LDFLAGS) -o $@
141	$(STRIP) --strip-all $@
142	exe2coff $@
143	del $@
144	copy /b $(DJGPP:DJGPP.ENV=BIN\CWSDSTUB.EXE) + $(@:.exe=) $@
145	del $(@:.exe=)
146