man: --nbi, not --NBI
[wraplinux.git] / Makefile
1 -include                MCONFIG
2 PERL                    ?= perl
3
4 RELOC_OBJS              = $(patsubst %.c,%.o,$(wildcard reloc/*.c)) \
5                           $(patsubst %.S,%.o,$(wildcard reloc/*.S))
6
7 HIGHMOVE_OBJS           = $(patsubst %.c,%.o,$(wildcard highmove/*.c)) \
8                           $(patsubst %.S,%.o,$(wildcard highmove/*.S))
9
10 all: wraplinux
11
12 reloc/%.o: reloc/%.c
13         $(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) -c -o $@ $<
14
15 reloc/%.o: reloc/%.S
16         $(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) -c -D__ASSEMBLY__ -o $@ $<
17
18 highmove/%.o: highmove/%.c
19         $(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) -c -o $@ $<
20
21 highmove/%.o: highmove/%.S
22         $(CC_FOR_TARGET) $(CFLAGS_FOR_TARGET) -c -D__ASSEMBLY__ -o $@ $<
23
24 %.o: %.S
25         $(CC) $(CFLAGS) -c -o $@ $<
26
27 %.s: %.S
28         $(CC) $(CFLAGS) -E -o $@ $<
29
30 %.o: %.c
31         $(CC) $(CFLAGS) -c -o $@ $<
32
33 %.s: %.c
34         $(CC) $(CFLAGS) -S -o $@ $<
35
36 %.i: %.c
37         $(CC) $(CFLAGS) -E -o $@ $<
38
39 reloc/reloc.bin: reloc/reloc.elf
40         $(OBJCOPY_FOR_TARGET) -O binary $< $@
41
42 reloc/reloc.elf: $(RELOC_OBJS) reloc/reloc.ld
43         $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) -T reloc/reloc.ld \
44                 -o $@ $(RELOC_OBJS)
45
46 reloc.o: reloc.S reloc/reloc.bin
47
48 highmove/highmove.bin: highmove/highmove.elf
49         $(OBJCOPY_FOR_TARGET) -O binary $< $@
50
51 highmove/highmove.elf: $(HIGHMOVE_OBJS) reloc/reloc.ld
52         $(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) -T reloc/reloc.ld \
53                 -o $@ $(HIGHMOVE_OBJS)
54
55 highmove.o: highmove.S highmove/highmove.bin
56
57 wraplinux: main.o linux.o reloc.o highmove.o elf.o nbi.o segment.o mapfile.o \
58            cwrite.o xmalloc.o
59         $(CC) $(LDFLAGS) -o $@ $^
60
61 #
62 # Install
63 #
64 install: all
65         $(MKDIR_P) $(INSTALLROOT)$(bindir)
66         $(INSTALL_PROGRAM) wraplinux $(INSTALLROOT)$(bindir)
67         $(MKDIR_P) $(INSTALLROOT)$(mandir)/man1
68         $(INSTALL_DATA) wraplinux.1 $(INSTALLROOT)$(mandir)/man1
69
70 #
71 # Cleanup
72 #
73 clean:
74         rm -f wraplinux *.o *.s *.i
75         rm -f reloc/*.o reloc/*.bin reloc/*.elf
76         rm -f highmove/*.o highmove/*.bin highmove/*.elf
77
78 cleaner: clean
79         rm -rf MCONFIG config.h *.cache config.status config.log
80
81 distclean: cleaner
82         find . -name '*~' -print0 | xargs -0rt rm -f
83
84 spotless: distclean
85         rm -rf configure config.h.in wraplinux.spec .depend
86
87 #
88 # Prepare a release
89 #
90 release:
91         $(MAKE) depend
92         $(MAKE) spec
93         $(MAKE) distclean
94
95 #
96 # Autoconf
97 #
98 config: MCONFIG
99
100 MCONFIG: configure MCONFIG.in config.h.in
101         ./configure
102
103 config.h: MCONFIG
104         : Generated by side effect
105
106 config.h.in: configure.in
107         rm -f config.h.in
108         autoheader
109
110 configure: configure.in aclocal.m4
111         autoconf
112         rm -f MCONFIG config.cache config.log config.status config.h
113
114 #
115 # Version header
116 #
117 VERSION = $(shell cat version)
118
119 version.h: version
120         echo "#define WRAPLINUX_VERSION \"$(VERSION)\"" > version.h
121
122 #
123 # RPM specfile
124 #
125 spec: wraplinux.spec
126
127 wraplinux.spec: wraplinux.spec.in version
128         $(SED) -e 's/@@VERSION@@/$(VERSION)/g' < $< > $@
129
130 #
131 # Dependencies
132 #
133 depend: .depend
134
135 .depend:
136         : > $@
137         $(PERL) mkdep.pl -M $@ -- . reloc highmove
138
139 -include .depend