Skip to content
Snippets Groups Projects
Makefile 912 B
Newer Older
  • Learn to ignore specific revisions
  • Avi Kivity's avatar
    Avi Kivity committed
    CXXFLAGS = -std=gnu++11 -lstdc++ $(CFLAGS)
    
    Avi Kivity's avatar
    Avi Kivity committed
    CFLAGS = $(autodepend) -g -Wall
    
    Avi Kivity's avatar
    Avi Kivity committed
    
    autodepend = -MD $(@.o=.d) -MT $@
    
    Avi Kivity's avatar
    Avi Kivity committed
    
    all: loader.bin
    
    loader.bin: loader.elf
    
    Avi Kivity's avatar
    Avi Kivity committed
    	objcopy -O elf32-i386 $^ $@
    
    Avi Kivity's avatar
    Avi Kivity committed
    fs = fs/fs.o fs/bootfs.o bootfs.o
    
    Avi Kivity's avatar
    Avi Kivity committed
    drivers = drivers/vga.o
    
    drivers += $(fs)
    
    Avi Kivity's avatar
    Avi Kivity committed
    
    libc = libc/string/strcmp.o
    
    loader.elf: arch/x64/boot.o arch/x64/loader.ld loader.o runtime.o $(drivers) \
    
    Avi Kivity's avatar
    Avi Kivity committed
    		$(libc) bootfs.bin
    
    Avi Kivity's avatar
    Avi Kivity committed
    	$(CXX) $(CXXFLAGS) -nostartfiles -static -nodefaultlibs -o $@ \
    
    Avi Kivity's avatar
    Avi Kivity committed
    	    $(filter-out %.bin, $(^:%.ld=-T %.ld)) \
    	     -lsupc++ libunwind.a -lstdc++
    
    jdk-jni.h := $(shell rpm -ql java-1.7.0-openjdk-devel | grep include/jni.h$$)
    jdkbase := $(jdk-jni.h:%/include/jni.h=%)
    
    bootfs.bin: scripts/mkbootfs.py bootfs.manifest
    	scripts/mkbootfs.py -o $@ -d $@.d -m bootfs.manifest \
    		-D jdkbase=$(jdkbase)
    
    bootfs.o: bootfs.bin
    
    Avi Kivity's avatar
    Avi Kivity committed
    clean:
    	find -name '*.[od]' | xargs rm
    	rm -f loader.elf loader.bin
    
    
    Avi Kivity's avatar
    Avi Kivity committed
    -include $(shell find -name '*.d')