Guest User

Untitled

a guest
Nov 20th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. # change application name here (executable output name)
  2. TARGET=kernel
  3. LINKERSCRIPT=link.ld
  4.  
  5. # compiler
  6. CC=gcc
  7. ASM=nasm
  8. QEMU=qemu-system-i386 -kernel
  9. LD=ld
  10.  
  11. # Specific C compiler flags
  12. OPT=-O2
  13. # OPT=-ggdb
  14. WARN=-Wall -Wextra
  15. STD=c99
  16.  
  17. # compiler, assembler, linker flags
  18. CCFLAGS= -m32 $(WARN) -std="$(STD)" $(OPT) #-pipe
  19. ASMFLAGS= -f elf32
  20. LINKERFLAGS= -m elf_i386 -T $(LINKERSCRIPT)
  21.  
  22. # source files
  23. CCSRCS = $(wildcard *.c)
  24. ASMSRCS = $(wildcard *.asm)
  25. SRCS = $(CCSRCS) $(ASMSRCS)
  26.  
  27. # object files
  28. CCOBJS = $(patsubst %.c, %_c.o, $(CCSRCS))
  29. ASMOBJS = $(patsubst %.asm, %_asm.o, $(ASMSRCS))
  30. OBJS = $(CCOBJS) $(ASMOBJS)
  31.  
  32. .PHONY: default all run clean
  33.  
  34. default: $(TARGET)
  35.  
  36. all: default
  37.  
  38. %_c.o: %.c
  39. $(CC) $(CCFLAGS) -c $< -o $@
  40.  
  41. %_asm.o: %.asm
  42. $(ASM) $(ASMFLAGS) $< -o $@
  43.  
  44. $(TARGET): $(OBJS)
  45. $(LD) $(LINKERFLAGS) -o $(TARGET) $(OBJS)
  46.  
  47. run: all
  48. $(QEMU) $(TARGET)
  49.  
  50. .PRECIOUS: $(TARGET) $(OBJS)
  51.  
  52. clean:
  53. rm -f *.o $(TARGET)
Add Comment
Please, Sign In to add comment