Merge pull request #4259 from CJKay/cmake-config
Add CMake package config file
This commit is contained in:
commit
10bda58b49
14 changed files with 324 additions and 41 deletions
3
programs/test/cmake_package/.gitignore
vendored
Normal file
3
programs/test/cmake_package/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
build
|
||||
Makefile
|
||||
cmake_package
|
36
programs/test/cmake_package/CMakeLists.txt
Normal file
36
programs/test/cmake_package/CMakeLists.txt
Normal file
|
@ -0,0 +1,36 @@
|
|||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
#
|
||||
# Simulate configuring and building Mbed TLS as the user might do it. We'll
|
||||
# skip installing it, and use the build directory directly instead.
|
||||
#
|
||||
|
||||
set(MbedTLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../..")
|
||||
set(MbedTLS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/mbedtls")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
"-H${MbedTLS_SOURCE_DIR}"
|
||||
"-B${MbedTLS_BINARY_DIR}"
|
||||
"-DENABLE_PROGRAMS=NO"
|
||||
"-DENABLE_TESTING=NO")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
--build "${MbedTLS_BINARY_DIR}")
|
||||
|
||||
#
|
||||
# Locate the package.
|
||||
#
|
||||
|
||||
set(MbedTLS_DIR "${MbedTLS_BINARY_DIR}/cmake")
|
||||
find_package(MbedTLS REQUIRED)
|
||||
|
||||
#
|
||||
# At this point, the Mbed TLS targets should have been imported, and we can now
|
||||
# link to them from our own program.
|
||||
#
|
||||
|
||||
add_executable(cmake_package cmake_package.c)
|
||||
target_link_libraries(cmake_package
|
||||
MbedTLS::mbedcrypto MbedTLS::mbedtls MbedTLS::mbedx509)
|
53
programs/test/cmake_package/cmake_package.c
Normal file
53
programs/test/cmake_package/cmake_package.c
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Simple program to test that Mbed TLS builds correctly as a CMake package.
|
||||
*
|
||||
* Copyright The Mbed TLS Contributors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#if !defined(MBEDTLS_CONFIG_FILE)
|
||||
#include "mbedtls/config.h"
|
||||
#else
|
||||
#include MBEDTLS_CONFIG_FILE
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_C)
|
||||
#include "mbedtls/platform.h"
|
||||
#else
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define mbedtls_fprintf fprintf
|
||||
#define mbedtls_printf printf
|
||||
#define mbedtls_exit exit
|
||||
#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS
|
||||
#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE
|
||||
#endif /* MBEDTLS_PLATFORM_C */
|
||||
|
||||
#include "mbedtls/version.h"
|
||||
|
||||
/* The main reason to build this is for testing the CMake build, so the program
|
||||
* doesn't need to do very much. It calls a single library function to ensure
|
||||
* linkage works, but that is all. */
|
||||
int main()
|
||||
{
|
||||
/* This version string is 18 bytes long, as advised by version.h. */
|
||||
char version[18];
|
||||
|
||||
mbedtls_version_get_string_full( version );
|
||||
|
||||
mbedtls_printf( "Built against %s\n", version );
|
||||
|
||||
return( 0 );
|
||||
}
|
3
programs/test/cmake_package_install/.gitignore
vendored
Normal file
3
programs/test/cmake_package_install/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
build
|
||||
Makefile
|
||||
cmake_package_install
|
39
programs/test/cmake_package_install/CMakeLists.txt
Normal file
39
programs/test/cmake_package_install/CMakeLists.txt
Normal file
|
@ -0,0 +1,39 @@
|
|||
cmake_minimum_required(VERSION 2.8.12)
|
||||
|
||||
#
|
||||
# Simulate configuring and building Mbed TLS as the user might do it. We'll
|
||||
# install into a directory inside our own build directory.
|
||||
#
|
||||
|
||||
set(MbedTLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../..")
|
||||
set(MbedTLS_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/mbedtls")
|
||||
set(MbedTLS_BINARY_DIR "${MbedTLS_INSTALL_DIR}${CMAKE_FILES_DIRECTORY}")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
"-H${MbedTLS_SOURCE_DIR}"
|
||||
"-B${MbedTLS_BINARY_DIR}"
|
||||
"-DENABLE_PROGRAMS=NO"
|
||||
"-DENABLE_TESTING=NO"
|
||||
"-DCMAKE_INSTALL_PREFIX=${MbedTLS_INSTALL_DIR}")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
--build "${MbedTLS_BINARY_DIR}"
|
||||
--target install)
|
||||
|
||||
#
|
||||
# Locate the package.
|
||||
#
|
||||
|
||||
set(MbedTLS_DIR "${MbedTLS_INSTALL_DIR}/cmake")
|
||||
find_package(MbedTLS REQUIRED)
|
||||
|
||||
#
|
||||
# At this point, the Mbed TLS targets should have been imported, and we can now
|
||||
# link to them from our own program.
|
||||
#
|
||||
|
||||
add_executable(cmake_package_install cmake_package_install.c)
|
||||
target_link_libraries(cmake_package_install
|
||||
MbedTLS::mbedcrypto MbedTLS::mbedtls MbedTLS::mbedx509)
|
54
programs/test/cmake_package_install/cmake_package_install.c
Normal file
54
programs/test/cmake_package_install/cmake_package_install.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
/*
|
||||
* Simple program to test that Mbed TLS builds correctly as an installable CMake
|
||||
* package.
|
||||
*
|
||||
* Copyright The Mbed TLS Contributors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#if !defined(MBEDTLS_CONFIG_FILE)
|
||||
#include "mbedtls/config.h"
|
||||
#else
|
||||
#include MBEDTLS_CONFIG_FILE
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_PLATFORM_C)
|
||||
#include "mbedtls/platform.h"
|
||||
#else
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define mbedtls_fprintf fprintf
|
||||
#define mbedtls_printf printf
|
||||
#define mbedtls_exit exit
|
||||
#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS
|
||||
#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE
|
||||
#endif /* MBEDTLS_PLATFORM_C */
|
||||
|
||||
#include "mbedtls/version.h"
|
||||
|
||||
/* The main reason to build this is for testing the CMake build, so the program
|
||||
* doesn't need to do very much. It calls a single library function to ensure
|
||||
* linkage works, but that is all. */
|
||||
int main()
|
||||
{
|
||||
/* This version string is 18 bytes long, as advised by version.h. */
|
||||
char version[18];
|
||||
|
||||
mbedtls_version_get_string_full( version );
|
||||
|
||||
mbedtls_printf( "Built against %s\n", version );
|
||||
|
||||
return( 0 );
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue