# Iris: micro-kernel for a capability-based operating system. # Makefile: build rules # Copyright 2009 Bas Wijnen # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Define some variables. SERIAL = /dev/ttyUSB0 CXXFLAGS = -Wno-unused-parameter -fno-strict-aliasing -fno-builtin -nostdinc $(ARCH_CXXFLAGS) -ggdb3 CPPFLAGS = -O5 -fno-inline $(ARCH_CPPFLAGS) CC = $(CROSS)gcc LD = $(CROSS)ld OBJCOPY = $(CROSS)objcopy headers = kernel.hh iris.hh devices.hh ui.hh keys.hh $(arch_headers) iris_sources = panic.cc data.cc alloc.cc memory.cc invoke.cc schedule.cc $(arch_iris_sources) BUILT_SOURCES = $(iris_sources) $(boot_sources) # Include arch-specific rules. include Makefile.arch # Disable implicit rules. %.o: %.S %.o: %.cc PYPP = /usr/bin/pypp %.cc: %.ccp $(PYPP) --name $< < $< > $@ %.hh: %.hhp $(PYPP) --name $< < $< > $@ %.o:%.cc Makefile Makefile.arch $(headers) $(CC) $(CPPFLAGS) $(TARGET_FLAGS) $(CXXFLAGS) -c $< -o $@ %.elf: boot-programs/crt0.o boot-programs/%.o $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ $(OBJCOPY) -S $(OBJCOPYFLAGS) $@ fs/%.elf: source/crt0.o source/%.o fs/init.config $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ $(OBJCOPY) -S $(OBJCOPYFLAGS) $@ fs/%: % test -d fs || mkdir fs ln -s ../$< $@ clean: rm -f *.o boot-programs/*.o $(BUILT_SOURCES) $(ARCH_CLEAN_FILES) rm -rf fs/ debug: stty -F $(SERIAL) raw 57600 while : ; do cat $(SERIAL) ; done .PHONY: clean .PRECIOUS: $(headers) boot-programs/crt0.o source/crt0.o