1CC = @CC@
2CFLAGS = @CFLAGS@ @DEFS@
3CPPFLAGS = @CPPFLAGS@
4
5EXEEXT = @EXEEXT@
6OBJEXT = @OBJEXT@
7PATH_SEPARATOR = @PATH_SEPARATOR@
8
9LD = @CC@
10AR = @AR@
11RANLIB = @RANLIB@
12LOADLIBES =
13LDLIBS += @LIBS@ @MODLIBS@ -lm @NOMODS@ @MODLIBSCOND@
14LDFLAGS += @LDFLAGS@
15
16SHOBJFLAGS = @SHOBJFLAGS@
17SHOBJLDFLAGS = @SHOBJLDFLAGS@
18SHOBJEXT = @SHOBJEXT@
19
20MODLIBS = @MODLIBS@
21
22INSTALL = @INSTALL@
23@SET_MAKE@
24
25prefix = @prefix@
26exec_prefix = @exec_prefix@
27libdir = @prefix@/lib
28bindir = @prefix@/bin
29sysconfdir = @sysconfdir@
30mandir = @mandir@
31datadir = @datadir@
32
33CONF = $(sysconfdir)/dact.conf
34CFLAGS += -DDACT_CONFIG_FILE=\"$(CONF)\" -DEXEEXT=\"$(EXEEXT)\"
35#CFLAGS += -O3
36#LDFLAGS += -static
37
38DEBUGALGO = comp_bitsums.c comp_factor.c comp_textrle.c
39OBJS += dact_common.o comp_fail.o comp_plain.o buffer.o header.o sort.o dact.o module.o parse.o dendian.o crc.o net.o ui.o sfx.o libdact.o @LIBOBJS@
40# Note that the following lacks "dact_shr.o" but otherwise MUST
41# be kept in sync with OBJS
42SHLIBOBJS += dact_common_shr.o comp_fail_shr.o comp_plain_shr.o buffer_shr.o header_shr.o sort_shr.o module_shr.o parse_shr.o dendian_shr.o crc_shr.o net_shr.o ui_shr.o sfx_shr.o libdact_shr.o @SHLIBOBJS@
43ALGO = comp_snibble.c comp_delta.c comp_text.c comp_rle.c cipher_chaos.c cipher_sub.c cipher_psub.c @ALGO@
44MODS = $(ALGO:.c=.so)
45
46TOBUILD = dact$(EXEEXT) libdact.$(SHOBJEXT) libdact.a dact.conf
47
48all: @DEFAULT@
49
50module: @DEPEND@
51	@LDLIBS="@ALLMODLIBS@" \
52	  $(MAKE) $(TOBUILD)
53
54static: @DEPEND@
55	@OBJS="$(ALGO:.c=.o) $(CR_OBJ)" SHLIBOBJS="$(ALGO:.c=_shr.o)" LDLIBS="$(MODLIBS)" $(MAKE) $(TOBUILD)
56
57dact.conf: Makefile
58	@echo "version_check    off" > dact.conf
59	@echo "#block_size      0" >> dact.conf
60	@echo "#exclude_algo    0" >> dact.conf
61	@echo "use_urls         on" >> dact.conf
62	@echo "color_ui         off" >> dact.conf
63	@echo "network_access   on" >> dact.conf
64	@echo "binary_check     off" >> dact.conf
65	@echo "module_dir       $(datadir)/dact" >> dact.conf
66	@echo "module_load_all  off" >> dact.conf
67@MODS@	@for so in $(MODS:.so=); do echo "load_module	$$so" >> dact.conf; done
68
69dact$(EXEEXT): $(OBJS) $(MODS)
70	$(CC) $(OBJS) $(LIBS) -o dact$(EXEEXT) $(LDLIBS) $(LDFLAGS)
71
72libdact.$(SHOBJEXT): $(SHLIBOBJS)
73	$(CC) $(CPPFLAGS) $(CFLAGS) $(SHOBJFLAGS) -o $@ $^ $(LDLIBS) $(LDFLAGS) $(SHOBJLDFLAGS)
74
75libdact.a: $(OBJS)
76	@AR@ rcu libdact.a $(filter-out dact.o, $^)
77	-@RANLIB@ libdact.a
78
79%_shr.o: %.c
80	$(CC) $(CPPFLAGS) $(CFLAGS) $(SHOBJFLAGS) -c -o $@ $?
81
82%.so: %.c %.lnk
83	@echo $(CC) $(CPPFLAGS) $(CFLAGS) $(SHOBJFLAGS) -o $@ -DAS_MODULE $(SHOBJLDFLAGS) $(LDFLAGS) $< $(filter %.o, $^) `cat $(<:.c=.lnk)`; \
84	$(CC) $(CPPFLAGS) $(CFLAGS) $(SHOBJFLAGS) -o $@ -DAS_MODULE $(SHOBJLDFLAGS) $(LDFLAGS) $< $(filter %.o, $^) `cat $(<:.c=.lnk)`
85
86.PHONY: clean distclean install-bin install mrproper install-local install-bin-local uninstall depend
87clean:
88	rm -f dact dact$(EXEEXT) libdact.$(SHOBJEXT) libdact.$(SHOBJEXT).def libdact.$(SHOBJEXT).a libdact.a core *~ $(ALGO:.c=.so) *.o
89
90distclean: clean
91	rm -f Makefile config.h config.status config.log config.cache
92
93mrproper: distclean
94	rm -rf Makefile.dep configure autom4te.cache/ config.h.in
95
96install-bin: dact$(EXEEXT)
97	-$(INSTALL) -d $(bindir)
98	$(INSTALL) -m 755 dact$(EXEEXT) $(bindir)/dact$(EXEEXT)
99
100install: all install-bin
101	-$(INSTALL) -d $(mandir)/man1
102	-$(INSTALL) -d $(libdir)
103	-$(INSTALL) -d $(datadir)/dact
104	-$(INSTALL) -d $(sysconfdir)
105	$(INSTALL) -m 644 dact.conf $(CONF)
106	$(INSTALL) -m 644 Docs/dact.1 $(mandir)/man1/dact.1
107	-$(INSTALL) -m 755 libdact.$(SHOBJEXT) $(libdir)/libdact.$(SHOBJEXT)
108	-$(INSTALL) -m 644 libdact.$(SHOBJEXT).def $(libdir)/libdact.$(SHOBJEXT).def
109	-$(INSTALL) -m 644 libdact.$(SHOBJEXT).a $(libdir)/libdact.$(SHOBJEXT).a
110	-$(INSTALL) -m 644 libdact.a $(libdir)/libdact.a
111@MODS@	for so in $(MODS); do $(INSTALL) -m 755 $$so $(datadir)/dact/$$so; done
112	./patch-magic-file $(datadir)/magic
113
114install-bin-local: dact$(EXEEXT)
115	-$(INSTALL) -d $(HOME)/.dact/`uname -s | tr A-Z a-z`-`uname -m`
116	$(INSTALL) -m 755 dact$(EXEEXT) $(HOME)/.dact/`uname -s | tr A-Z a-z`-`uname -m`/dact$(EXEEXT)
117
118install-local: all install-bin-local
119	-$(INSTALL) -d $(HOME)/.dact/`uname -s | tr A-Z a-z`-`uname -m`
120	$(INSTALL) -m 644 dact.conf $(HOME)/.dact/dact.conf
121	-$(INSTALL) -m 644 libdact.a $(HOME)/.dact/`uname -s | tr A-Z a-z`-`uname -m`/dact$(EXEEXT)
122	-$(INSTALL) -m 755 libdact.$(SHOBJEXT) $(HOME)/.dact/`uname -s | tr A-Z a-z`-`uname -m`/dact$(EXEEXT)
123@MODS@	for so in $(MODS); do $(INSTALL) -m 755 $$so $(HOME)/.dact/`uname -s | tr A-Z a-z`-`uname -m`/$$so; done
124
125uninstall:
126	rm -f $(bindir)/dact$(EXEEXT)
127	rm -f $(mandir)/man1/dact.1 $(CONF)
128	rm -f $(libdir)/libdact.a $(libdir)/libdact.$(SHOBJEXT)
129@MODS@	rm -rf $(datadir)/dact
130
131depend: Makefile.dep
132
133Makefile.dep: *.c *.h Makefile
134	@echo "building Makefile.dep"
135	@$(CC) $(CFLAGS) $(CPPFLAGS) -MM $(ALGO) $(OBJS:.o=.c) $(MODS:.so=.c) dact.c > Makefile.dep
136	@$(CC) $(CFLAGS) $(CPPFLAGS) -MM $(ALGO) $(filter-out libdact.c, $(OBJS:.o=.c)) $(MODS:.so=.c) dact.c  | sed -e "s/^\([^ ]*\)\.o: /\1.so: /g" >> Makefile.dep
137
138include Makefile.dep
139