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/calls/crypto_call.cpp b/tf_fuzz/tfz-cpp/calls/crypto_call.cpp
index 7dc1c8e..4ff2ce3 100644
--- a/tf_fuzz/tfz-cpp/calls/crypto_call.cpp
+++ b/tf_fuzz/tfz-cpp/calls/crypto_call.cpp
@@ -1,29 +1,25 @@
/*
- * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
+#include <stdint.h>
#include <cstdlib>
-
-#include "class_forwards.hpp"
+#include <iostream>
#include "boilerplate.hpp"
#include "variables.hpp"
#include "gibberish.hpp"
-#include "compute.hpp"
-#include "randomization.hpp"
#include "string_ops.hpp"
#include "data_blocks.hpp"
#include "psa_asset.hpp"
#include "find_or_create_asset.hpp"
-#include "template_line.hpp"
#include "tf_fuzz.hpp"
#include "crypto_asset.hpp"
#include "psa_call.hpp"
#include "crypto_call.hpp"
-#include "sst_asset.hpp"
/**********************************************************************************
@@ -1349,4 +1345,3 @@
/**********************************************************************************
End of methods of class remove_key_call.
**********************************************************************************/
-
diff --git a/tf_fuzz/tfz-cpp/calls/crypto_call.hpp b/tf_fuzz/tfz-cpp/calls/crypto_call.hpp
index 6937686..782bb1b 100644
--- a/tf_fuzz/tfz-cpp/calls/crypto_call.hpp
+++ b/tf_fuzz/tfz-cpp/calls/crypto_call.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -10,13 +10,14 @@
#include <string>
#include <vector>
+#include <iosfwd>
-/* 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 "data_blocks.hpp"
+#include "find_or_create_asset.hpp"
+#include "psa_asset.hpp"
#include "psa_call.hpp"
-#include "crypto_asset.hpp"
-*/
+
+class tf_fuzz_info;
template<class T> bool copy_call_to_asset_t (psa_call *call, bool create_asset_bool)
{
diff --git a/tf_fuzz/tfz-cpp/calls/psa_call.cpp b/tf_fuzz/tfz-cpp/calls/psa_call.cpp
index 98c7ba2..1bb8c46 100644
--- a/tf_fuzz/tfz-cpp/calls/psa_call.cpp
+++ b/tf_fuzz/tfz-cpp/calls/psa_call.cpp
@@ -5,18 +5,15 @@
*
*/
-#include "class_forwards.hpp"
+#include <stdlib.h>
+#include <iostream>
#include "boilerplate.hpp"
-#include "gibberish.hpp"
-#include "compute.hpp"
#include "string_ops.hpp"
#include "data_blocks.hpp"
#include "psa_asset.hpp"
#include "find_or_create_asset.hpp"
-#include "template_line.hpp"
#include "tf_fuzz.hpp"
-#include "crypto_asset.hpp"
#include "psa_call.hpp"
diff --git a/tf_fuzz/tfz-cpp/calls/psa_call.hpp b/tf_fuzz/tfz-cpp/calls/psa_call.hpp
index ed66245..4aa8bda 100644
--- a/tf_fuzz/tfz-cpp/calls/psa_call.hpp
+++ b/tf_fuzz/tfz-cpp/calls/psa_call.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
*
@@ -9,13 +9,14 @@
#define PSA_CALL_HPP
#include <string>
+#include <iosfwd>
+#include <vector>
-/* 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 "tf_fuzz.hpp"
-*/
+#include "data_blocks.hpp"
+class psa_asset;
+enum class psa_asset_usage;
+class tf_fuzz_info;
using namespace std;
diff --git a/tf_fuzz/tfz-cpp/calls/security_call.cpp b/tf_fuzz/tfz-cpp/calls/security_call.cpp
index c861d6f..806df17 100644
--- a/tf_fuzz/tfz-cpp/calls/security_call.cpp
+++ b/tf_fuzz/tfz-cpp/calls/security_call.cpp
@@ -1,28 +1,19 @@
/*
- * Copyright (c) 2019-2022, Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
-#include <cstdlib>
+#include <string>
+#include <vector>
-#include "class_forwards.hpp"
-
-#include "boilerplate.hpp"
-#include "gibberish.hpp"
-#include "compute.hpp"
-#include "randomization.hpp"
-#include "string_ops.hpp"
#include "data_blocks.hpp"
-#include "psa_asset.hpp"
#include "find_or_create_asset.hpp"
-#include "template_line.hpp"
-#include "tf_fuzz.hpp"
-#include "crypto_asset.hpp"
#include "psa_call.hpp"
#include "security_call.hpp"
-#include "sst_asset.hpp"
+
+class tf_fuzz_info;
diff --git a/tf_fuzz/tfz-cpp/calls/security_call.hpp b/tf_fuzz/tfz-cpp/calls/security_call.hpp
index e55a278..fb4d8ca 100644
--- a/tf_fuzz/tfz-cpp/calls/security_call.hpp
+++ b/tf_fuzz/tfz-cpp/calls/security_call.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
*
@@ -10,11 +10,12 @@
#include <string>
#include <vector>
+#include <iosfwd>
-/* 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 "find_or_create_asset.hpp"
+#include "psa_call.hpp"
+class tf_fuzz_info;
using namespace std;
diff --git a/tf_fuzz/tfz-cpp/calls/sst_call.cpp b/tf_fuzz/tfz-cpp/calls/sst_call.cpp
index 5007314..2c49d95 100644
--- a/tf_fuzz/tfz-cpp/calls/sst_call.cpp
+++ b/tf_fuzz/tfz-cpp/calls/sst_call.cpp
@@ -5,22 +5,17 @@
*
*/
-#include "class_forwards.hpp"
+#include <vector>
#include "boilerplate.hpp"
-#include "gibberish.hpp"
-#include "compute.hpp"
#include "string_ops.hpp"
#include "data_blocks.hpp"
#include "psa_asset.hpp"
#include "find_or_create_asset.hpp"
-#include "template_line.hpp"
#include "tf_fuzz.hpp"
-#include "crypto_asset.hpp"
#include "psa_call.hpp"
#include "sst_call.hpp"
#include "sst_asset.hpp"
-#include "crypto_asset.hpp"
#include "variables.hpp"
diff --git a/tf_fuzz/tfz-cpp/calls/sst_call.hpp b/tf_fuzz/tfz-cpp/calls/sst_call.hpp
index 537b21f..39c277b 100644
--- a/tf_fuzz/tfz-cpp/calls/sst_call.hpp
+++ b/tf_fuzz/tfz-cpp/calls/sst_call.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
*
@@ -11,14 +11,12 @@
#include <string>
#include <vector>
#include <cstdint>
+#include <iosfwd>
-/* 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 "sst_asset.hpp"
+#include "find_or_create_asset.hpp"
#include "psa_call.hpp"
-*/
+class tf_fuzz_info;
using namespace std;
@@ -93,4 +91,3 @@
};
#endif // SST_CALL_HPP
-