blob: e0a099fbf30c4ef91a86b7c43c22dc0a1361defc [file] [log] [blame]
Nik Dewallybacae6c2024-07-30 16:58:14 +01001# Copyright (c) 2019-2024, Arm Limited. All rights reserved.
Nik Dewallybc9e1942024-07-02 17:00:15 +01002#
3# SPDX-License-Identifier: BSD-3-Clause
Nik Dewallybacae6c2024-07-30 16:58:14 +01004
5CXX = g++
Nik Dewallyabac0e52024-08-02 13:42:27 +01006INCLUDES = -I /usr/include -I . -I ./parser -I ./template -I ./assets -I ./calls -I ./boilerplate -I ./utility -I ./crypto_model
7override CXXFLAGS += -std=gnu++17 -Werror=return-type -O0 -g $(INCLUDES)
Nik Dewallybacae6c2024-07-30 16:58:14 +01008
9sources = $(wildcard assets/*.cpp) \
Nik Dewallyabac0e52024-08-02 13:42:27 +010010 $(wildcard crypto_model/*.cpp) \
Nik Dewallybacae6c2024-07-30 16:58:14 +010011 $(wildcard boilerplate/*.cpp) \
12 $(wildcard calls/*.cpp) \
13 $(wildcard template/*.cpp) \
14 $(wildcard utility/*.cpp) \
15 $(wildcard *.cpp)
16
17objs = $(sources:.cpp=.o)
18depends = $(sources:.cpp=.d)
19
20generated_sources = parser/tf_fuzz_grammar.tab.cpp parser/tf_fuzz_grammar.lex.c
21generated_objs = parser/tf_fuzz_grammar.tab.o parser/tf_fuzz_grammar.lex.o
22generated_includes = parser/tf_fuzz_grammar.tab.hpp
Nik Dewallybc9e1942024-07-02 17:00:15 +010023
24.PHONY: default
Nik Dewallybacae6c2024-07-30 16:58:14 +010025default: $(generated_includes) tfz;
Nik Dewallybc9e1942024-07-02 17:00:15 +010026
Nik Dewallybacae6c2024-07-30 16:58:14 +010027# Automatically gather prerequisites
28# [GNU Make manual, section 4.14]
Nik Dewallybc9e1942024-07-02 17:00:15 +010029
Nik Dewallybacae6c2024-07-30 16:58:14 +010030include $(depends)
Nik Dewallybc9e1942024-07-02 17:00:15 +010031
Nik Dewallybacae6c2024-07-30 16:58:14 +010032%.d: %.cpp $(generated_includes) $(generated_sources)
33 @set -e; rm -f $@; \
34 $(CXX) -M -MM $(CXXFLAGS) $< > $@.$$$$; \
35 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
36 rm -f $@.$$$$
37
38tfz: $(generated_includes) $(generated_objs) $(objs) Makefile
39 $(CXX) $(CXXFLAGS) -o tfz $(generated_objs) $(objs)
Nik Dewallybc9e1942024-07-02 17:00:15 +010040
41parser/tf_fuzz_grammar.tab.hpp: parser/tf_fuzz_grammar.y class_forwards.hpp \
42boilerplate/boilerplate.hpp utility/gibberish.hpp utility/string_ops.hpp \
43tf_fuzz.hpp utility/data_blocks.hpp utility/variables.hpp \
44utility/find_or_create_asset.hpp assets/psa_asset.hpp \
45assets/sst_asset.hpp assets/crypto_asset.hpp calls/psa_call.hpp \
46template/template_line.hpp Makefile
47 rm -f parser/tf_fuzz_grammar.tab.hpp parser/tf_fuzz_grammar.tab.cpp \
48 parser/tf_fuzz_grammar.tab.o
49 bison --verbose -d parser/tf_fuzz_grammar.y -o \
50 parser/tf_fuzz_grammar.tab.cpp
51
52parser/tf_fuzz_grammar.tab.cpp: parser/tf_fuzz_grammar.y class_forwards.hpp \
53boilerplate/boilerplate.hpp utility/gibberish.hpp utility/string_ops.hpp \
54tf_fuzz.hpp utility/data_blocks.hpp utility/variables.hpp \
55utility/find_or_create_asset.hpp assets/psa_asset.hpp \
56assets/sst_asset.hpp assets/crypto_asset.hpp calls/psa_call.hpp \
57template/template_line.hpp Makefile
58 rm -f parser/tf_fuzz_grammar.tab.hpp parser/tf_fuzz_grammar.tab.cpp \
59 parser/tf_fuzz_grammar.tab.o
60 bison --verbose -d parser/tf_fuzz_grammar.y -o \
61 parser/tf_fuzz_grammar.tab.cpp
62
63parser/tf_fuzz_grammar.lex.c: parser/tf_fuzz_grammar.l \
64parser/tf_fuzz_grammar.tab.hpp Makefile
65 lex --outfile=parser/tf_fuzz_grammar.lex.c parser/tf_fuzz_grammar.l
Nik Dewallybacae6c2024-07-30 16:58:14 +010066
Nik Dewallybc9e1942024-07-02 17:00:15 +010067parser/tf_fuzz_grammar.lex.o: parser/tf_fuzz_grammar.lex.c Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010068 $(CXX) $(CXXFLAGS) -c -o $@ \
Nik Dewallybc9e1942024-07-02 17:00:15 +010069 parser/tf_fuzz_grammar.lex.c
70
71parser/tf_fuzz_grammar.tab.o: parser/tf_fuzz_grammar.lex.o \
72parser/tf_fuzz_grammar.tab.cpp parser/tf_fuzz_grammar.tab.hpp Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010073 $(CXX) $(CXXFLAGS) -c -o $@ \
74 parser/tf_fuzz_grammar.tab.cpp
Nik Dewallybc9e1942024-07-02 17:00:15 +010075
Nik Dewallybacae6c2024-07-30 16:58:14 +010076.PHONY: clean
Nik Dewallybc9e1942024-07-02 17:00:15 +010077clean:
Nik Dewallyabac0e52024-08-02 13:42:27 +010078 rm -f tfz *.d **/*.d *.d* **/*.d* $(objs) $(generated_objs) $(generated_includes) $(generated_sources)
79 rm -rf parser/tf_fuzz_grammar.lex.c parser/tf_fuzz_grammar.output
Nik Dewallybc9e1942024-07-02 17:00:15 +010080 rm -f `find regression -name "stdout_stderr"`
81 rm -f `find regression -name "test.c"`
82 rm -f demo/tossThis*