Advertisement
xerpi

ZeOS Makefile

Sep 9th, 2015
434
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.84 KB | None | 0 0
  1. ################################
  2. ##############ZeOS #############
  3. ################################
  4. ########## Makefile ############
  5. ################################
  6.  
  7. # package dev86 is required
  8. AS86    = as86 -0 -a
  9. LD86    = ld86 -0
  10.  
  11. HOSTCFLAGS = -m32 -Wall -Wstrict-prototypes -g
  12. HOSTCC  = gcc
  13. CC      = gcc
  14. AS      = as
  15. LD      = ld
  16. OBJCOPY = objcopy -O binary -R .note -R .comment -S
  17.  
  18. INCLUDEDIR = include
  19.  
  20. # Define here flags to compile the tests if needed
  21. JP =
  22.  
  23. CFLAGS = -m32 -O2  -g $(JP) -fno-omit-frame-pointer -ffreestanding -Wall -I$(INCLUDEDIR)
  24. ASMFLAGS = -I$(INCLUDEDIR)
  25. ASFLAGS = --32 $(ASMFLAGS)
  26. SYSLDFLAGS = -T system.lds
  27. USRLDFLAGS = -T user.lds
  28. LINKFLAGS = -m elf_i386 -g
  29.  
  30. SYSOBJ = interrupt.o entry.o sys_call_table.o io.o sched.o sys.o mm.o devices.o utils.o hardware.o list.o
  31.  
  32. LIBZEOS = -L . -l zeos
  33.  
  34. #add to USROBJ the object files required to complete the user program
  35. USROBJ = libc.o # libjp.a
  36.  
  37. all:zeos.bin
  38.  
  39. zeos.bin: bootsect system build user
  40.     $(OBJCOPY) system system.out
  41.     $(OBJCOPY) user user.out
  42.     ./build bootsect system.out user.out > zeos.bin
  43.  
  44. build: build.c
  45.     $(HOSTCC) $(HOSTCFLAGS) -o $@ $<
  46.  
  47. bootsect: bootsect.o
  48.     $(LD86) -s -o $@ $<
  49.  
  50. bootsect.o: bootsect.s
  51.     $(AS86) -o $@ $<
  52.  
  53. bootsect.s: bootsect.S Makefile
  54.     $(CPP) $(ASMFLAGS) -traditional $< -o $@
  55.  
  56. entry.s: entry.S $(INCLUDEDIR)/asm.h $(INCLUDEDIR)/segment.h
  57.     $(CPP) $(ASMFLAGS) -o $@ $<
  58.  
  59. sys_call_table.s: sys_call_table.S $(INCLUDEDIR)/asm.h $(INCLUDEDIR)/segment.h
  60.     $(CPP) $(ASMFLAGS) -o $@ $<
  61.  
  62. user.o:user.c $(INCLUDEDIR)/libc.h
  63.  
  64. interrupt.o:interrupt.c $(INCLUDEDIR)/interrupt.h $(INCLUDEDIR)/segment.h $(INCLUDEDIR)/types.h
  65.  
  66. io.o:io.c $(INCLUDEDIR)/io.h
  67.  
  68. sched.o:sched.c $(INCLUDEDIR)/sched.h
  69.  
  70. libc.o:libc.c $(INCLUDEDIR)/libc.h
  71.  
  72. mm.o:mm.c $(INCLUDEDIR)/types.h $(INCLUDEDIR)/mm.h
  73.  
  74. sys.o:sys.c $(INCLUDEDIR)/devices.h
  75.  
  76. utils.o:utils.c $(INCLUDEDIR)/utils.h
  77.  
  78.  
  79. system.o:system.c $(INCLUDEDIR)/hardware.h system.lds $(SYSOBJ) $(INCLUDEDIR)/segment.h $(INCLUDEDIR)/types.h $(INCLUDEDIR)/interrupt.h $(INCLUDEDIR)/system.h $(INCLUDEDIR)/sched.h $(INCLUDEDIR)/mm.h $(INCLUDEDIR)/io.h $(INCLUDEDIR)/mm_address.h
  80.  
  81.  
  82. system: system.o system.lds $(SYSOBJ)
  83.     $(LD) $(LINKFLAGS) $(SYSLDFLAGS) -o $@ $< $(SYSOBJ) $(LIBZEOS)
  84.  
  85. user: user.o user.lds $(USROBJ)
  86.     $(LD) $(LINKFLAGS) $(USRLDFLAGS) -o $@ $< $(USROBJ)
  87.  
  88.  
  89. clean:
  90.     rm -f *.o *.s bochsout.txt parport.out system.out system bootsect zeos.bin user user.out *~ build
  91.  
  92. disk: zeos.bin
  93.     dd if=zeos.bin of=/dev/fd0
  94.  
  95. emul: zeos.bin
  96.     bochs -q -f .bochsrc
  97.  
  98. gdb: zeos.bin
  99.     @echo "=================================================="
  100.     @echo "GDB Usage:"
  101.     @echo " gdb system"
  102.     @echo " target remote localhost:1234"
  103.     @echo " add-symbol-file user 0x100000"
  104.     @echo "=================================================="
  105.     bochs -q -f .bochsrc_gdb
  106.  
  107. emuldbg: zeos.bin
  108.     bochs_nogdb -q -f .bochsrc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement