55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| include Makefile.config
 | |
| 
 | |
| LIBRARY_SOURCES=$(wildcard library/*.c)
 | |
| LIBRARY_HEADERS=$(wildcard library/*.h)
 | |
| USER_SOURCES=$(wildcard user/*.c)
 | |
| USER_PROGRAMS=$(USER_SOURCES:c=exe)
 | |
| KERNEL_SOURCES=$(wildcard kernel/*.[chS])
 | |
| WORDS=/usr/share/dict/words
 | |
| 
 | |
| .PHONY: build-kernel build-library build-userspace build-cdrom-image
 | |
| 
 | |
| all: build-cdrom-image
 | |
| 
 | |
| build-kernel: kernel/basekernel.img
 | |
| 
 | |
| build-library: library/baselib.a
 | |
| 
 | |
| build-userspace: $(USER_PROGRAMS)
 | |
| 
 | |
| build-cdrom-image: basekernel.iso
 | |
| 
 | |
| kernel/basekernel.img: $(KERNEL_SOURCES) $(LIBRARY_HEADERS)
 | |
| 	cd kernel && make
 | |
| 
 | |
| library/baselib.a: $(LIBRARY_SOURCES) $(LIBRARY_HEADERS)
 | |
| 	cd library && make
 | |
| 
 | |
| $(USER_PROGRAMS): $(USER_SOURCES) library/baselib.a $(LIBRARY_HEADERS)
 | |
| 	cd user && make
 | |
| 
 | |
| image: kernel/basekernel.img $(USER_PROGRAMS)
 | |
| 	rm -rf image
 | |
| 	mkdir image image/boot image/bin image/data
 | |
| 	cp kernel/basekernel.img image/boot
 | |
| 	cp $(USER_PROGRAMS) image/bin
 | |
| 	if [ -f ${WORDS} ]; then head -2000 ${WORDS} > image/data/words; fi
 | |
| 
 | |
| basekernel.iso: image
 | |
| 	${ISOGEN} -input-charset utf-8 -iso-level 2 -J -R -o $@ -b boot/basekernel.img image
 | |
| 
 | |
| disk.img:
 | |
| 	qemu-img create disk.img 10M
 | |
| 
 | |
| run: basekernel.iso disk.img
 | |
| 	qemu-system-i386 -cdrom basekernel.iso -hda disk.img
 | |
| 
 | |
| debug: basekernel.iso disk.img
 | |
| 	qemu-system-i386 -cdrom basekernel.iso -hda disk.img -s -S &
 | |
| 
 | |
| clean:
 | |
| 	rm -rf basekernel.iso image disk.img
 | |
| 	cd kernel && make clean
 | |
| 	cd library && make clean
 | |
| 	cd user && make clean
 |