# Makefile # Copyright (c) 2018 Justin Hanekom rm := rm --recursive --force mkdir := mkdir --parents ada_version := gnat2012 src_dir := src main_src_dir := $(src_dir)/main/ada test_src_dir := $(src_dir)/test/ada target_dir := target main_target_dir := $(target_dir)/main/ada test_target_dir := $(target_dir)/test/ada docs_dir := $(target_dir)/docs shared_or_static := shared optimization_level := 2 src_file := main.adb main_app := fizzbuzz test_file := test_runner.adb test_app := test_fizzbuzz BASE_MAKE_FLAGS := $(BASE_MAKE_FLAGS) -$(ada_version) -$(shared_or_static) \ -I$(main_src_dir) -C -E -gnata -gnatF -gnatn -gnatwae -gnatwl -gnaty-o \ -k -m -s MAKE_FLAGS := $(MAKE_FLAGS) $(BASE_MAKE_FLAGS) -D $(main_target_dir) \ -O$(optimization_level) -fstack-check -funroll-loops \ -gnatyx3abcefhiIklL5M78nprStux TEST_MAKE_FLAGS := $(DEBUG_FLAGS) $(BASE_MAKE_FLAGS) -D $(test_target_dir) \ -I$(test_src_dir) -aI/usr/include/aunit -aI/GNAT/2018/include/aunit \ -aL/usr/lib/aunit -aL/GNAT/2018/lib/aunit -g .DEFAULT: all .PHONY : all all: main .PHONY : main main : init_dirs gnatmake $(MAKE_FLAGS) -o $(target_dir)/$(main_app) $(src_file) .PHONY : test test : main init_dirs gnatmake $(TEST_MAKE_FLAGS) -o $(target_dir)/$(test_app) $(test_file) .PHONY : docs docs : main init_dirs .PHONY : clean clean : -@$(rm) $(main_target_dir)/* -@$(rm) $(test_target_dir)/* -@$(rm) GNAT-TEMP-* .PHONY : clobber clobber : clean -@$(rm) target .PHONY : init_dirs init_dirs : -@$(mkdir) $(main_src_dir) -@$(mkdir) $(test_src_dir) -@$(mkdir) $(main_target_dir) -@$(mkdir) $(test_target_dir) -@$(mkdir) $(docs_dir)