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')
7 CPPFLAGS
= -D_GNU_SOURCE
8 CFLAGS
= -g
-static
-Wall
9 LDFLAGS
= -g
-static
-Wall
10 ifeq ($(uname_O
), Cygwin
)
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})
27 @
$(MKDIR
) -p
$(OUTDIR
)
28 $(CC
) $(LDFLAGS
) $^
-o
$@
30 $(PACKAGE
) : $(TARGET
)
31 @
rm -rf out
/package
; \
32 mkdir
-p out
/package
; \
35 find . | cpio
-o
-H newc | gzip
> ..
/rootfs.cpio.gz
38 #ifneq ($(MAKECMDGOALS), clean)
43 # @$(MKDIR) -p $(OUTDIR)
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/$$/ :/' < $@.$$$$ >> $@; \
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
$@
64 @echo
clean project...