| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 1 | #!/bin/sh | 
|  | 2 |  | 
| Gilles Peskine | 91e890e | 2021-08-05 15:13:57 +0200 | [diff] [blame] | 3 | DEFAULT_OUTPUT_FILE=programs/test/cpp_dummy_build.cpp | 
|  | 4 |  | 
|  | 5 | if [ "$1" = "--help" ]; then | 
|  | 6 | cat <<EOF | 
|  | 7 | Usage: $0 [OUTPUT] | 
|  | 8 | Generate a C++ dummy build program that includes all the headers. | 
|  | 9 | OUTPUT defaults to "programs/test/cpp_dummy_build.cpp". | 
|  | 10 | Run this program from the root of an Mbed TLS directory tree or from | 
|  | 11 | its "programs" or "programs/test" subdirectory. | 
|  | 12 | EOF | 
|  | 13 | exit | 
|  | 14 | fi | 
|  | 15 |  | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 16 | # Copyright The Mbed TLS Contributors | 
| Dave Rodgman | 16799db | 2023-11-02 19:47:20 +0000 | [diff] [blame] | 17 | # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 18 |  | 
|  | 19 | set -e | 
|  | 20 |  | 
|  | 21 | # Ensure a reproducible order for *.h | 
|  | 22 | export LC_ALL=C | 
|  | 23 |  | 
|  | 24 | print_cpp () { | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 25 | cat <<'EOF' | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 26 | /* Automatically generated file. Do not edit. | 
|  | 27 | * | 
|  | 28 | *  This program is a dummy C++ program to ensure Mbed TLS library header files | 
|  | 29 | *  can be included and built with a C++ compiler. | 
|  | 30 | * | 
|  | 31 | *  Copyright The Mbed TLS Contributors | 
| Dave Rodgman | 16799db | 2023-11-02 19:47:20 +0000 | [diff] [blame] | 32 | *  SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 33 | * | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 34 | */ | 
|  | 35 |  | 
|  | 36 | #include "mbedtls/build_info.h" | 
|  | 37 |  | 
|  | 38 | EOF | 
|  | 39 |  | 
| Ronald Cron | 7e5d61c | 2024-06-10 14:25:46 +0200 | [diff] [blame] | 40 | for header in include/mbedtls/*.h; do | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 41 | case ${header#include/} in | 
|  | 42 | mbedtls/mbedtls_config.h) :;; # not meant for direct inclusion | 
| Gilles Peskine | 9af413b | 2023-05-18 20:12:44 +0200 | [diff] [blame] | 43 | mbedtls/config_*.h) :;; # not meant for direct inclusion | 
| Ronald Cron | 7e5d61c | 2024-06-10 14:25:46 +0200 | [diff] [blame] | 44 | *) echo "#include \"${header#include/}\"";; | 
|  | 45 | esac | 
|  | 46 | done | 
|  | 47 |  | 
| Ronald Cron | f4606d4 | 2024-06-17 17:49:28 +0200 | [diff] [blame] | 48 | for header in tf-psa-crypto/drivers/builtin/include/mbedtls/*.h; do | 
|  | 49 | case ${header#tf-psa-crypto/drivers/builtin/include/} in | 
|  | 50 | mbedtls/config_*.h) :;; # not meant for direct inclusion | 
|  | 51 | *) echo "#include \"${header#tf-psa-crypto/drivers/builtin/include/}\"";; | 
|  | 52 | esac | 
|  | 53 | done | 
|  | 54 |  | 
| Ronald Cron | 7e5d61c | 2024-06-10 14:25:46 +0200 | [diff] [blame] | 55 | for header in tf-psa-crypto/include/psa/*.h; do | 
|  | 56 | case ${header#tf-psa-crypto/include/} in | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 57 | psa/crypto_config.h) :;; # not meant for direct inclusion | 
| Gilles Peskine | b9664ee | 2023-09-04 16:54:38 +0200 | [diff] [blame] | 58 | psa/crypto_ajdust_config*.h) :;; # not meant for direct inclusion | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 59 | # Some of the psa/crypto_*.h headers are not meant to be included | 
|  | 60 | # directly. They do have include guards that make them no-ops if | 
|  | 61 | # psa/crypto.h has been included before. Since psa/crypto.h comes | 
|  | 62 | # before psa/crypto_*.h in the wildcard enumeration, we don't need | 
|  | 63 | # to skip those headers. | 
| Ronald Cron | 7e5d61c | 2024-06-10 14:25:46 +0200 | [diff] [blame] | 64 | *) echo "#include \"${header#tf-psa-crypto/include/}\"";; | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 65 | esac | 
|  | 66 | done | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 67 |  | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 68 | cat <<'EOF' | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 69 |  | 
|  | 70 | int main() | 
|  | 71 | { | 
|  | 72 | mbedtls_platform_context *ctx = NULL; | 
|  | 73 | mbedtls_platform_setup(ctx); | 
|  | 74 | mbedtls_printf("CPP Build test passed\n"); | 
|  | 75 | mbedtls_platform_teardown(ctx); | 
|  | 76 | } | 
|  | 77 | EOF | 
|  | 78 | } | 
|  | 79 |  | 
|  | 80 | if [ -d include/mbedtls ]; then | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 81 | : | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 82 | elif [ -d ../include/mbedtls ]; then | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 83 | cd .. | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 84 | elif [ -d ../../include/mbedtls ]; then | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 85 | cd ../.. | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 86 | else | 
| Gilles Peskine | 3cbd69c | 2021-08-05 15:10:27 +0200 | [diff] [blame] | 87 | echo >&2 "This script must be run from an Mbed TLS source tree." | 
|  | 88 | exit 3 | 
| Gilles Peskine | 03ab544 | 2021-07-09 15:19:28 +0200 | [diff] [blame] | 89 | fi | 
|  | 90 |  | 
| Gilles Peskine | 91e890e | 2021-08-05 15:13:57 +0200 | [diff] [blame] | 91 | print_cpp >"${1:-$DEFAULT_OUTPUT_FILE}" |