blob: 488b6755017bfdffd8307a961f13cdd40df3589a [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++
6INCLUDES = -I /usr/include -I . -I ./parser -I ./template -I ./assets -I ./calls -I ./boilerplate -I ./utility
7override CXXFLAGS += -std=gnu++11 -O0 -g $(INCLUDES)
8
9sources = $(wildcard assets/*.cpp) \
10 $(wildcard boilerplate/*.cpp) \
11 $(wildcard calls/*.cpp) \
12 $(wildcard template/*.cpp) \
13 $(wildcard utility/*.cpp) \
14 $(wildcard *.cpp)
15
16objs = $(sources:.cpp=.o)
17depends = $(sources:.cpp=.d)
18
19generated_sources = parser/tf_fuzz_grammar.tab.cpp parser/tf_fuzz_grammar.lex.c
20generated_objs = parser/tf_fuzz_grammar.tab.o parser/tf_fuzz_grammar.lex.o
21generated_includes = parser/tf_fuzz_grammar.tab.hpp
Nik Dewallybc9e1942024-07-02 17:00:15 +010022
23.PHONY: default
Nik Dewallybacae6c2024-07-30 16:58:14 +010024default: $(generated_includes) tfz;
Nik Dewallybc9e1942024-07-02 17:00:15 +010025
Nik Dewallybacae6c2024-07-30 16:58:14 +010026# Automatically gather prerequisites
27# [GNU Make manual, section 4.14]
Nik Dewallybc9e1942024-07-02 17:00:15 +010028
Nik Dewallybacae6c2024-07-30 16:58:14 +010029include $(depends)
Nik Dewallybc9e1942024-07-02 17:00:15 +010030
Nik Dewallybacae6c2024-07-30 16:58:14 +010031%.d: %.cpp $(generated_includes) $(generated_sources)
32 @set -e; rm -f $@; \
33 $(CXX) -M -MM $(CXXFLAGS) $< > $@.$$$$; \
34 sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
35 rm -f $@.$$$$
36
37tfz: $(generated_includes) $(generated_objs) $(objs) Makefile
38 $(CXX) $(CXXFLAGS) -o tfz $(generated_objs) $(objs)
Nik Dewallybc9e1942024-07-02 17:00:15 +010039
40parser/tf_fuzz_grammar.tab.hpp: parser/tf_fuzz_grammar.y class_forwards.hpp \
41boilerplate/boilerplate.hpp utility/gibberish.hpp utility/string_ops.hpp \
42tf_fuzz.hpp utility/data_blocks.hpp utility/variables.hpp \
43utility/find_or_create_asset.hpp assets/psa_asset.hpp \
44assets/sst_asset.hpp assets/crypto_asset.hpp calls/psa_call.hpp \
45template/template_line.hpp Makefile
46 rm -f parser/tf_fuzz_grammar.tab.hpp parser/tf_fuzz_grammar.tab.cpp \
47 parser/tf_fuzz_grammar.tab.o
48 bison --verbose -d parser/tf_fuzz_grammar.y -o \
49 parser/tf_fuzz_grammar.tab.cpp
50
51parser/tf_fuzz_grammar.tab.cpp: parser/tf_fuzz_grammar.y class_forwards.hpp \
52boilerplate/boilerplate.hpp utility/gibberish.hpp utility/string_ops.hpp \
53tf_fuzz.hpp utility/data_blocks.hpp utility/variables.hpp \
54utility/find_or_create_asset.hpp assets/psa_asset.hpp \
55assets/sst_asset.hpp assets/crypto_asset.hpp calls/psa_call.hpp \
56template/template_line.hpp Makefile
57 rm -f parser/tf_fuzz_grammar.tab.hpp parser/tf_fuzz_grammar.tab.cpp \
58 parser/tf_fuzz_grammar.tab.o
59 bison --verbose -d parser/tf_fuzz_grammar.y -o \
60 parser/tf_fuzz_grammar.tab.cpp
61
62parser/tf_fuzz_grammar.lex.c: parser/tf_fuzz_grammar.l \
63parser/tf_fuzz_grammar.tab.hpp Makefile
64 lex --outfile=parser/tf_fuzz_grammar.lex.c parser/tf_fuzz_grammar.l
Nik Dewallybacae6c2024-07-30 16:58:14 +010065
Nik Dewallybc9e1942024-07-02 17:00:15 +010066parser/tf_fuzz_grammar.lex.o: parser/tf_fuzz_grammar.lex.c Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010067 $(CXX) $(CXXFLAGS) -c -o $@ \
Nik Dewallybc9e1942024-07-02 17:00:15 +010068 parser/tf_fuzz_grammar.lex.c
69
70parser/tf_fuzz_grammar.tab.o: parser/tf_fuzz_grammar.lex.o \
71parser/tf_fuzz_grammar.tab.cpp parser/tf_fuzz_grammar.tab.hpp Makefile
Nik Dewallybacae6c2024-07-30 16:58:14 +010072 $(CXX) $(CXXFLAGS) -c -o $@ \
73 parser/tf_fuzz_grammar.tab.cpp
Nik Dewallybc9e1942024-07-02 17:00:15 +010074
Nik Dewallybacae6c2024-07-30 16:58:14 +010075.PHONY: clean
Nik Dewallybc9e1942024-07-02 17:00:15 +010076clean:
Nik Dewallybacae6c2024-07-30 16:58:14 +010077 rm -f tfz *.d **/*.d *.d* **/*.d* $(objs) $(generated_objs) $(generated_includes) $(generated_sources)\
Nik Dewallybc9e1942024-07-02 17:00:15 +010078 parser/tf_fuzz_grammar.output
79 rm -f `find regression -name "stdout_stderr"`
80 rm -f `find regression -name "test.c"`
81 rm -f demo/tossThis*