blob: e68e8217cc8d4d5bfebf66dbcfbe7ddc5b6a061e [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
Nik Dewallyed341b72024-08-20 17:02:30 +010017headers = $(wildcard assets/*.hpp) \
18 $(wildcard crypto_model/*.hpp) \
19 $(wildcard boilerplate/*.hpp) \
20 $(wildcard calls/*.hpp) \
21 $(wildcard template/*.hpp) \
22 $(wildcard utility/*.hpp) \
23 $(wildcard *.hpp)
24
Nik Dewallybacae6c2024-07-30 16:58:14 +010025objs = $(sources:.cpp=.o)
26depends = $(sources:.cpp=.d)
27
28generated_sources = parser/tf_fuzz_grammar.tab.cpp parser/tf_fuzz_grammar.lex.c
29generated_objs = parser/tf_fuzz_grammar.tab.o parser/tf_fuzz_grammar.lex.o
30generated_includes = parser/tf_fuzz_grammar.tab.hpp
Nik Dewallybc9e1942024-07-02 17:00:15 +010031
32.PHONY: default
Nik Dewallybacae6c2024-07-30 16:58:14 +010033default: $(generated_includes) tfz;
Nik Dewallybc9e1942024-07-02 17:00:15 +010034
Nik Dewallybacae6c2024-07-30 16:58:14 +010035# Automatically gather prerequisites
36# [GNU Make manual, section 4.14]
Nik Dewallybc9e1942024-07-02 17:00:15 +010037
Nik Dewallybacae6c2024-07-30 16:58:14 +010038include $(depends)
Nik Dewallybc9e1942024-07-02 17:00:15 +010039
Nik Dewallybacae6c2024-07-30 16:58:14 +010040%.d: %.cpp $(generated_includes) $(generated_sources)
41 @set -e; rm -f $@; \
42 $(CXX) -M -MM $(CXXFLAGS) $< > $@.$$$$; \
43 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
44 rm -f $@.$$$$
45
Nik Dewallyed341b72024-08-20 17:02:30 +010046tfz: $(generated_includes) $(generated_objs) $(objs) $(headers) Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010047 $(CXX) $(CXXFLAGS) -o tfz $(generated_objs) $(objs)
Nik Dewallybc9e1942024-07-02 17:00:15 +010048
49parser/tf_fuzz_grammar.tab.hpp: parser/tf_fuzz_grammar.y class_forwards.hpp \
50boilerplate/boilerplate.hpp utility/gibberish.hpp utility/string_ops.hpp \
51tf_fuzz.hpp utility/data_blocks.hpp utility/variables.hpp \
52utility/find_or_create_asset.hpp assets/psa_asset.hpp \
53assets/sst_asset.hpp assets/crypto_asset.hpp calls/psa_call.hpp \
54template/template_line.hpp Makefile
55 rm -f parser/tf_fuzz_grammar.tab.hpp parser/tf_fuzz_grammar.tab.cpp \
56 parser/tf_fuzz_grammar.tab.o
57 bison --verbose -d parser/tf_fuzz_grammar.y -o \
58 parser/tf_fuzz_grammar.tab.cpp
59
60parser/tf_fuzz_grammar.tab.cpp: parser/tf_fuzz_grammar.y class_forwards.hpp \
61boilerplate/boilerplate.hpp utility/gibberish.hpp utility/string_ops.hpp \
62tf_fuzz.hpp utility/data_blocks.hpp utility/variables.hpp \
63utility/find_or_create_asset.hpp assets/psa_asset.hpp \
64assets/sst_asset.hpp assets/crypto_asset.hpp calls/psa_call.hpp \
65template/template_line.hpp Makefile
66 rm -f parser/tf_fuzz_grammar.tab.hpp parser/tf_fuzz_grammar.tab.cpp \
67 parser/tf_fuzz_grammar.tab.o
68 bison --verbose -d parser/tf_fuzz_grammar.y -o \
69 parser/tf_fuzz_grammar.tab.cpp
70
71parser/tf_fuzz_grammar.lex.c: parser/tf_fuzz_grammar.l \
72parser/tf_fuzz_grammar.tab.hpp Makefile
73 lex --outfile=parser/tf_fuzz_grammar.lex.c parser/tf_fuzz_grammar.l
Nik Dewallybacae6c2024-07-30 16:58:14 +010074
Nik Dewallybc9e1942024-07-02 17:00:15 +010075parser/tf_fuzz_grammar.lex.o: parser/tf_fuzz_grammar.lex.c Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010076 $(CXX) $(CXXFLAGS) -c -o $@ \
Nik Dewallybc9e1942024-07-02 17:00:15 +010077 parser/tf_fuzz_grammar.lex.c
78
79parser/tf_fuzz_grammar.tab.o: parser/tf_fuzz_grammar.lex.o \
80parser/tf_fuzz_grammar.tab.cpp parser/tf_fuzz_grammar.tab.hpp Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010081 $(CXX) $(CXXFLAGS) -c -o $@ \
82 parser/tf_fuzz_grammar.tab.cpp
Nik Dewallybc9e1942024-07-02 17:00:15 +010083
Nik Dewallybacae6c2024-07-30 16:58:14 +010084.PHONY: clean
Nik Dewallybc9e1942024-07-02 17:00:15 +010085clean:
Nik Dewallyabac0e52024-08-02 13:42:27 +010086 rm -f tfz *.d **/*.d *.d* **/*.d* $(objs) $(generated_objs) $(generated_includes) $(generated_sources)
87 rm -rf parser/tf_fuzz_grammar.lex.c parser/tf_fuzz_grammar.output
Nik Dewallybc9e1942024-07-02 17:00:15 +010088 rm -f `find regression -name "stdout_stderr"`
89 rm -f `find regression -name "test.c"`
90 rm -f demo/tossThis*