changing Makefile system a bit, again
git-svn-id: svn://anubis/hos/trunk@19 5b3e749e-e535-0410-8002-a9bb6afbdfca
This commit is contained in:
parent
8fe8d78051
commit
a5ca4348d9
@ -1,23 +1,31 @@
|
|||||||
|
|
||||||
KERNEL := hos
|
|
||||||
LDFLAGS := -T link.ld
|
|
||||||
|
|
||||||
export PLATFORM := $(shell if [[ `uname` =~ "CYGWIN" ]]; then \
|
export PLATFORM := $(shell if [[ `uname` =~ "CYGWIN" ]]; then \
|
||||||
echo cygwin; \
|
echo cygwin; \
|
||||||
else \
|
else \
|
||||||
echo unix; \
|
echo unix; \
|
||||||
fi)
|
fi)
|
||||||
ifeq ($(PLATFORM), cygwin)
|
|
||||||
export LD := i586-elf-ld
|
|
||||||
export CC := i586-elf-gcc
|
|
||||||
export CXX := i586-elf-g++
|
|
||||||
else
|
|
||||||
export LD := ld
|
|
||||||
export CC := gcc
|
|
||||||
export CXX := g++
|
|
||||||
endif
|
|
||||||
export NASM := nasm
|
|
||||||
|
|
||||||
|
ifeq ($(PLATFORM), cygwin)
|
||||||
|
export LD := i586-elf-ld
|
||||||
|
export CC := i586-elf-gcc
|
||||||
|
export CXX := i586-elf-g++
|
||||||
|
else
|
||||||
|
export LD := ld
|
||||||
|
export CC := gcc
|
||||||
|
export CXX := g++
|
||||||
|
endif
|
||||||
|
export NASM := nasm
|
||||||
|
|
||||||
|
WD := $(shell pwd)
|
||||||
|
LDSCRIPT := link.ld
|
||||||
|
KERNEL := hos
|
||||||
|
export CPPFLAGS := -I$(WD)/include
|
||||||
|
export CFLAGS := -Wall -O2
|
||||||
|
export CXXFLAGS := -Wall -O2
|
||||||
|
export LDFLAGS := -T $(LDSCRIPT)
|
||||||
|
|
||||||
|
SUBDIRS := boot
|
||||||
|
SUBDIRS_clean := $(subdirs:%=%.clean)
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(KERNEL).gz
|
all: $(KERNEL).gz
|
||||||
@ -25,12 +33,16 @@ all: $(KERNEL).gz
|
|||||||
$(KERNEL).gz: $(KERNEL)
|
$(KERNEL).gz: $(KERNEL)
|
||||||
gzip -c $< > $@
|
gzip -c $< > $@
|
||||||
|
|
||||||
$(KERNEL): boot.o
|
$(KERNEL): $(SUBDIRS)
|
||||||
$(LD) $(LDFLAGS) -o $@ $<
|
$(LD) $(LDFLAGS) -o $@ $(SUBDIRS:%=%/%.o)
|
||||||
|
|
||||||
boot.o: boot.asm
|
.PHONY: $(SUBDIRS)
|
||||||
$(NASM) -f elf -o $@ $<
|
$(SUBDIRS):
|
||||||
|
$(MAKE) -C $@
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean: $(SUBDIRS_clean)
|
||||||
-rm -f *~ $(KERNEL) $(KERNEL).gz *.o
|
-rm -f *~ $(KERNEL) $(KERNEL).gz
|
||||||
|
|
||||||
|
%.clean:
|
||||||
|
$(MAKE) -C $* clean clean=1
|
||||||
|
33
kernel/subdir.mak
Normal file
33
kernel/subdir.mak
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
ASMOBJS := $(patsubst %.asm,%.o,$(wildcard *.asm))
|
||||||
|
COBJS := $(patsubst %.c,%.o,$(wildcard *.c))
|
||||||
|
CXXOBJS := $(patsubst %.cc,%.o,$(wildcard *.cc))
|
||||||
|
CDEPS := $(COBJS:.o=.dep)
|
||||||
|
CXXDEPS := $(CXXOBJS:.o=.dep)
|
||||||
|
|
||||||
|
all: $(SUBDIR).o
|
||||||
|
|
||||||
|
$(SUBDIR).o: $(ASMOBJS) $(COBJS) $(CXXOBJS)
|
||||||
|
$(LD) -r -o $@ $^
|
||||||
|
|
||||||
|
%.o: %.asm
|
||||||
|
$(NASM) -f elf -o $@ $<
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
|
||||||
|
|
||||||
|
%.o: %.cc
|
||||||
|
$(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) $<
|
||||||
|
|
||||||
|
# Make dependency files
|
||||||
|
%.dep: %.c
|
||||||
|
@set -e; rm -f $@; \
|
||||||
|
$(CC) -MM $(CPPFLAGS) $< | sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' > $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -f *.o *.dep *~
|
||||||
|
|
||||||
|
# Include dependency files
|
||||||
|
ifndef clean
|
||||||
|
-include $(DEPS)
|
||||||
|
endif
|
Loading…
x
Reference in New Issue
Block a user