Advertisement
konalisp

Makefile

Nov 16th, 2014
380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.85 KB | None | 0 0
  1. CFLAGS=-std=gnu++11 -Wall -Wextra -ffreestanding -nostdlib -mcmodel=kernel -mno-red-zone -I Include -c -o
  2. CC=clang++
  3. OBJS:=start.o kernel.o
  4.  
  5. CRTI_OBJ:=crti.o
  6. CRTBEGIN_OBJ:=$(shell $(CC) -print-file-name=crtbegin.o)
  7. CRTEND_OBJ:=$(shell $(CC) -print-file-name=crtend.o)
  8. CRTN_OBJ=crtn.o
  9.  
  10. OBJ_LINK_LIST:=$(CRTI_OBJ) $(CRTBEGIN_OBJ) $(OBJS) $(CRTEND_OBJ) $(CRTN_OBJ)
  11. INTERNAL_OBJS:=$(CRTI_OBJ) $(OBJS) $(CRTN_OBJ)
  12.  
  13. kernel:
  14.         nasm -f elf64 x86HAL/start.asm -o start.o
  15.         nasm -f elf64 x86HAL/crti.asm -o crti.o
  16.         nasm -f elf64 x86HAL/crtn.asm -o crtn.o
  17.         $(CC) Kernel/main.cxx -target x86_64-elf -m64 $(CFLAGS) kernel.o
  18.         ld -z max-page-size=0x1000 -nodefaultlibs -m elf_x86_64 -T link.ld -o kernel.bin $(OBJ_LINK_LIST)
  19.         #ld -nodefaultlibs -T link.ld -o kernel.bin $(OBJ_LINK_LIST)
  20.         mkdir -p isodir
  21.         mkdir -p isodir/boot
  22.         cp kernel.bin isodir/boot/kernel.bin
  23.         mkdir -p isodir/boot/grub
  24.         cp grub.cfg isodir/boot/grub/grub.cfg
  25.         grub-mkrescue -o kernel.iso isodir
  26.  
  27. #kernel64: $(ISO)
  28. #$(ISO): $(OUTPUT)
  29. #       cp $(OUTPUT) isodir/boot
  30. #       grub-mkrescue -o kernel64.iso isodir
  31. #      
  32. #$(OUTPUT): $(OBJS) link64.ld
  33. #       ld -nodefaultlibs -T link64.ld -o $@ $(OBJS)
  34. #
  35. #start.o:  
  36. #       nasm -f elf64 x86HAL/start.asm $< -o $@
  37. #kernel.o: 
  38. #       $(CC) Kernel/main.cxx -target x86_64-elf -m64 -mcmodel=kernel -ffreestanding -nostdlib -mno-red-zone -c $< -o $@
  39.    
  40.  
  41. kernel32:
  42.         nasm -f elf32 x86HAL/start32.asm -o start.o
  43.         nasm -f elf32 x86HAL/crti32.asm -o crti.o
  44.         nasm -f elf32 x86HAL/crtn32.asm -o crtn.o
  45.         $(CC) Kernel/main.cxx -target i386-elf -m32 $(CFLAGS) kernel.o
  46.         ld -m elf_i386 -T link32.ld -o kernel.bin $(OBJ_LINK_LIST)
  47.         mkdir -p isodir
  48.         mkdir -p isodir/boot
  49.         cp kernel.bin isodir/boot/kernel.bin
  50.         mkdir -p isodir/boot/grub
  51.         cp grub.cfg isodir/boot/grub/grub.cfg
  52.         grub-mkrescue -o kernel.iso isodir
  53.  
  54. clean:
  55.         rm -f kernel.bin $(INTERNAL_OBJS)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement