# # Makefile - makefile for boot rom kernel # # Copyright (C) 1995-2003 Gero Kuhlmann # # 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 2 of the License, or # 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, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # $Id: Makefile,v 1.5 2003/01/25 23:29:40 gkminix Exp $ # # # Include user configuration: # include ../make.config # # Name of this module # MODULE = kernel # # List of subdirectories # SUBDIRS = init arpa boot lib net # # List of source and object files: # LIBS = libnet.a libromlib.a libarpa.a libboot.a INITOBJS = kernel.o SEGEND = segend.o TARGET = kernel.bin # # Include system dependent definitions: # include ../make.defs # # The checksize script verifies that the kernel image doesn't grow too # large in order to fit into a certain amount of memory. MAXSIZE defines # that amount of memory. It represents the number of kB typically available # in a PC starting from 0x98000 up to the extended BIOS data area. STACKSIZE # defines the name of the file which contains the size of the stack in bytes. # MAXSIZE = 31 STACKSIZE = $(srcdir)/kernel/init/kernel.S # # Target rules. # all: subdirs (cd $(MODOBJDIR); \ $(LD86) $(LD86FLAGS) -M -o $(TARGET) $(INITOBJS) $(LIBS:lib%.a=-l%) $(SEGEND) | $(MAPSORT) >kernel.map; \ chmod 0644 $(TARGET); \ cp $(TARGET) $(bindestdir)/kernel.bin \ ) (cd $(MODOBJDIR); \ $(LD86) $(LD86FLAGS) -M -o $(TARGET:%.bin=%m.bin) $(INITOBJS:.o=.om) $(LIBS:lib%.a=-l%-m) $(SEGEND:.o=.om) | $(MAPSORT) >kernelm.map; \ chmod 0644 $(TARGET:%.bin=%m.bin); \ cp $(TARGET:%.bin=%m.bin) $(bindestdir)/kernelm.bin \ ) (cd $(MODOBJDIR); \ $(LD86) $(LD86FLAGS) -M -o $(TARGET:%.bin=%86.bin) $(INITOBJS:.o=.o16) $(LIBS:lib%.a=-l%-16) $(SEGEND:.o=.o16) | $(MAPSORT) >kernel86.map; \ chmod 0644 $(TARGET:%.bin=%86.bin); \ cp $(TARGET:%.bin=%86.bin) $(bindestdir)/kernel86.bin \ ) .PHONY: subdirs subdirs: @for subdir in $(SUBDIRS); do \ echo making all in $$subdir; \ (cd $$subdir && $(MAKE) all) || exit 1; \ done # # Maintenance rules # .PHONY: dep install clean realclean distclean .PHONY: clean-recursive realclean-recursive distclean-recursive dep: @for subdir in $(SUBDIRS); do \ echo making $@ in $$subdir; \ (cd $$subdir && $(MAKE) $@) || exit 1; \ done install: clean: clean-recursive rm -f $(MODOBJDIR)/*.o rm -f $(MODOBJDIR)/*.o16 rm -f $(MODOBJDIR)/*.om rm -f $(MODOBJDIR)/*.a rm -f $(MODOBJDIR)/*.bin rm -f $(MODOBJDIR)/*.map realclean distclean: distclean-recursive rm -f $(MODOBJDIR)/*.o rm -f $(MODOBJDIR)/*.o16 rm -f $(MODOBJDIR)/*.om rm -f $(MODOBJDIR)/*.a rm -f $(MODOBJDIR)/*.bin rm -f $(MODOBJDIR)/*.map clean-recursive realclean-recursive distclean-recursive: @for subdir in $(SUBDIRS); do \ target=`echo $@ | sed 's/-recursive//'`; \ echo making $$target in $$subdir; \ (cd $$subdir && $(MAKE) $$target) || exit 1; \ done