# Makefile
# Copyright (c) 2018 Justin Hanekom <[email protected]>
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)