Advertisement
justin_hanekom

Ada Makefile

Nov 30th, 2018 (edited)
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.69 KB | None | 0 0
  1. # Makefile
  2. # Copyright (c) 2018 Justin Hanekom <justin_hanekom@yahoo.com>
  3.  
  4. rm      := rm --recursive --force
  5. mkdir   := mkdir --parents
  6.  
  7. ada_version         := gnat2012
  8.  
  9. src_dir             := src
  10. main_src_dir        := $(src_dir)/main/ada
  11. test_src_dir        := $(src_dir)/test/ada
  12. target_dir          := target
  13. main_target_dir     := $(target_dir)/main/ada
  14. test_target_dir     := $(target_dir)/test/ada
  15. docs_dir            := $(target_dir)/docs
  16.  
  17. shared_or_static    := shared
  18. optimization_level  := 2
  19.  
  20. src_file    := main.adb
  21. main_app    := fizzbuzz
  22. test_file   := test_runner.adb
  23. test_app    := test_fizzbuzz
  24.  
  25. BASE_MAKE_FLAGS := $(BASE_MAKE_FLAGS) -$(ada_version) -$(shared_or_static) \
  26.     -I$(main_src_dir) -C -E -gnata -gnatF -gnatn -gnatwae -gnatwl -gnaty-o \
  27.     -k -m -s
  28. MAKE_FLAGS  := $(MAKE_FLAGS) $(BASE_MAKE_FLAGS) -D $(main_target_dir) \
  29.     -O$(optimization_level) -fstack-check -funroll-loops \
  30.     -gnatyx3abcefhiIklL5M78nprStux
  31. TEST_MAKE_FLAGS := $(DEBUG_FLAGS) $(BASE_MAKE_FLAGS) -D $(test_target_dir) \
  32.     -I$(test_src_dir) -aI/usr/include/aunit -aI/GNAT/2018/include/aunit \
  33.     -aL/usr/lib/aunit -aL/GNAT/2018/lib/aunit -g
  34.  
  35. .DEFAULT: all
  36. .PHONY : all
  37. all: main
  38.  
  39. .PHONY : main
  40. main : init_dirs
  41.     gnatmake $(MAKE_FLAGS) -o $(target_dir)/$(main_app) $(src_file)
  42.  
  43. .PHONY : test
  44. test : main init_dirs
  45.     gnatmake $(TEST_MAKE_FLAGS) -o $(target_dir)/$(test_app) $(test_file)
  46.  
  47. .PHONY : docs
  48. docs : main init_dirs
  49.  
  50. .PHONY : clean
  51. clean :
  52.     -@$(rm) $(main_target_dir)/*
  53.     -@$(rm) $(test_target_dir)/*
  54.     -@$(rm) GNAT-TEMP-*
  55.  
  56. .PHONY : clobber
  57. clobber : clean
  58.     -@$(rm) target
  59.  
  60. .PHONY : init_dirs
  61. init_dirs :
  62.     -@$(mkdir) $(main_src_dir)
  63.     -@$(mkdir) $(test_src_dir)
  64.     -@$(mkdir) $(main_target_dir)
  65.     -@$(mkdir) $(test_target_dir)
  66.     -@$(mkdir) $(docs_dir)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement