1#
2# Copyright 2016, NICTA
3#
4# This software may be distributed and modified according to the terms of
5# the GNU General Public License version 2. Note that NO WARRANTY is provided.
6# See "LICENSE_GPLv2.txt" for details.
7#
8# @TAG(NICTA_GPL)
9#
10
11NAME=toplevel-polyfunc
12
13SRC=toplevel-polyfunc.cogent
14OUTPUT=generated # $(SRC:.cogent=-gen)
15COUTPUT=$(addsuffix .c, $(OUTPUT))
16HOUTPUT=$(addsuffix .h, $(OUTPUT))
17
18LIBGUM=$(shell cogent --libgum-dir)
19
20ACFILES=main.ac
21
22PP=$(ACFILES:.ac=_pp.ac)
23PPINFER=$(ACFILES:.ac=_pp_inferred.c)
24
25ABSDIR=./abstract
26
27OBJ=$(PPINFER:.c=.o)
28
29CFLAGS+=-I. -I$(LIBGUM) -std=gnu99
30
31.PHONY: default cogent clean gen-anti test
32.SECONDARY:
33
34default: all
35
36all: gen-anti $(OBJ)
37	$(CC) -o $(NAME) $(OBJ)
38
39test: gen-anti $(OBJ)
40
41$(OBJ): $(PPINFER)
42
43gen-anti:
44	mkdir -p $(ABSDIR)
45	cogent $(SRC) -g -Od -o$(OUTPUT) --fno-fncall-as-macro --ffunc-purity-attr \
46		--Wno-warn --infer-c-funcs="$(ACFILES)" \
47		--cpp-args="\$$CPPIN -o \$$CPPOUT -E -P $(CFLAGS)" \
48		--entry-funcs=entrypoints.cfg
49
50clean:
51	rm -f $(COUTPUT) $(HOUTPUT) $(PP) $(PPINFER) $(OBJ)
52	@# rm -f *-gen.*
53	rm -rf $(ABSDIR)
54	rm -f $(NAME)
55
56