Makefile.clang 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #
  2. # Copyright (C) 2018 bzt (bztsrc@github)
  3. #
  4. # Permission is hereby granted, free of charge, to any person
  5. # obtaining a copy of this software and associated documentation
  6. # files (the "Software"), to deal in the Software without
  7. # restriction, including without limitation the rights to use, copy,
  8. # modify, merge, publish, distribute, sublicense, and/or sell copies
  9. # of the Software, and to permit persons to whom the Software is
  10. # furnished to do so, subject to the following conditions:
  11. #
  12. # The above copyright notice and this permission notice shall be
  13. # included in all copies or substantial portions of the Software.
  14. #
  15. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  18. # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  19. # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  20. # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  22. # DEALINGS IN THE SOFTWARE.
  23. #
  24. #
  25. SRCS = $(wildcard *.c)
  26. OBJS = $(SRCS:.c=.o)
  27. CFLAGS = -Wall -O2 -ffreestanding -nostdinc -nostdlib -mcpu=cortex-a53+nosimd
  28. all: clean kernel8.img
  29. start.o: start.S
  30. clang --target=aarch64-elf $(CFLAGS) -c start.S -o start.o
  31. %.o: %.c
  32. clang --target=aarch64-elf $(CFLAGS) -c $< -o $@
  33. kernel8.img: start.o $(OBJS)
  34. ld.lld -m aarch64elf -nostdlib start.o $(OBJS) -T link.ld -o kernel8.elf
  35. llvm-objcopy -O binary kernel8.elf kernel8.img
  36. clean:
  37. rm kernel8.elf *.o >/dev/null 2>/dev/null || true
  38. run:
  39. qemu-system-aarch64 -M raspi3b -kernel kernel8.img -drive file=test.dd,if=sd,format=raw -serial stdio