tf_fuzz: refactor includes to only include what is needed
* Refactor Makefile to automatically gather prerequisites.
* Change the includes (using include-what-you-need) so that files only
include the specific headers they need. Many includes are also now
inside the .hpp files instead of the .cpp files.
This improves editor support: previously, external symbols in .hpp
files would not be resolved by clangd due to .hpp files not having any
imports.
Change-Id: Iece03f81c35aa43ac026aaeb49b87d2c4acf07cd
Signed-off-by: Nik Dewally <Nik.Dewally@arm.com>
diff --git a/tf_fuzz/tfz-cpp/tf_fuzz.hpp b/tf_fuzz/tfz-cpp/tf_fuzz.hpp
index ce9051f..9db970f 100644
--- a/tf_fuzz/tfz-cpp/tf_fuzz.hpp
+++ b/tf_fuzz/tfz-cpp/tf_fuzz.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -8,20 +8,28 @@
#ifndef TF_FUZZ_HPP
#define TF_FUZZ_HPP
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
+#include "class_forwards.hpp"
+#include "compute.hpp"
+#include "data_blocks.hpp"
+#include "find_or_create_asset.hpp"
+#include "gibberish.hpp"
+#include "template_line.hpp"
+#include "variables.hpp"
-/* This project's header files #including other project headers quickly becomes
- unrealistically complicated. The only solution is for each .cpp to include
- the headers it needs.
-#include "psa_call.hpp"
-#include "sst_asset.hpp"
-#include "crypto_asset.hpp"
-#include "boilerplate.hpp"
-*/
+class boilerplate;
+class psa_asset;
+class psa_call;
+class variable_info;
+class tf_fuzz_info;
+
/* Shortcuts, to reduce code clutter, and reduce risk of coding errors. */
#define IVM(content) if(rsrc->verbose_mode){content} // IVM = "If Verbose Mode"