add files
[idlebox.git] / Makefile
blobaa94f62861cf4ff7447889c7aad8a58df8539b28
1 uname_S = $(shell sh -c 'uname -s 2>/dev/null || echo not')
2 uname_O = $(shell sh -c 'uname -o 2>/dev/null || echo not')
4 # compiler enviroment
5 MKDIR = mkdir
6 CC = gcc
7 CPPFLAGS = -D_GNU_SOURCE
8 CFLAGS = -g -static -Wall
9 LDFLAGS = -g -static -Wall
10 ifeq ($(uname_O), Cygwin)
11 CFLAGS = -g -Wall
12 LDFLAGS = -g -Wall
13 endif
14 LDLIBS =
16 # project setting
17 NODEPS = clean
18 OUTDIR = out# only support current directory now :(
19 SOURCES = $(wildcard *.c)
20 TARGET = $(OUTDIR)/init
21 PACKAGE = $(OUTDIR)/rootfs.cpio.gz
22 OBJECTS = $(patsubst %.c, $(OUTDIR)/%.o, ${SOURCES})
23 DEPFILES = $(patsubst %.c, $(OUTDIR)/%.d, ${SOURCES})
25 # link target
26 $(TARGET):$(OBJECTS)
27 @$(MKDIR) -p $(OUTDIR)
28 $(CC) $(LDFLAGS) $^ -o $@
30 $(PACKAGE) : $(TARGET)
31 @rm -rf out/package; \
32 mkdir -p out/package; \
33 cd out/package; \
34 cp ../init .; \
35 find . | cpio -o -H newc | gzip > ../rootfs.cpio.gz
37 # dependency
38 #ifneq ($(MAKECMDGOALS), clean)
39 -include $(DEPFILES)
40 #endif
42 #$(OUTDIR)/%.d:%.c
43 # @$(MKDIR) -p $(OUTDIR)
44 # set -e; rm -f $@; \
45 # $(CC) -MM $(CPPFLAGS) $< > $@.$$$$; \
46 # sed 's,\($*\)\.o[ :]*,$(OUTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \
47 # sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
48 # -e '/^$$/ d' -e 's/$$/ :/' < $@.$$$$ >> $@; \
49 # rm -f $@.$$$$
51 # compile
52 $(OUTDIR)/%.o:%.c
53 @$(MKDIR) -p $(OUTDIR)
54 @set -e;rm -f $(@:.o=.d); \
55 $(CC) -MM $(CPPFLAGS) $< > $(@:.o=.d).$$$$; \
56 sed 's,\($*\)\.o[ :]*,$(OUTDIR)/\1.o $@ : ,g' < $(@:.o=.d).$$$$ > $(@:.o=.d); \
57 sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
58 -e '/^$$/ d' -e 's/$$/ :/' < $(@:.o=.d).$$$$ >> $(@:.o=.d); \
59 rm -f $(@:.o=.d).$$$$;
60 $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
62 .PHONY:clean package
63 clean:
64 @echo clean project...
65 -rm -rf $(OUTDIR)
67 package : $(PACKAGE)