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