| # Copyright (c) 2014, 2015 Alexander Lamaison <[email protected]> |
| # |
| # Redistribution and use in source and binary forms, |
| # with or without modification, are permitted provided |
| # that the following conditions are met: |
| # |
| # Redistributions of source code must retain the above |
| # copyright notice, this list of conditions and the |
| # following disclaimer. |
| # |
| # Redistributions in binary form must reproduce the above |
| # copyright notice, this list of conditions and the following |
| # disclaimer in the documentation and/or other materials |
| # provided with the distribution. |
| # |
| # Neither the name of the copyright holder nor the names |
| # of any other contributors may be used to endorse or |
| # promote products derived from this software without |
| # specific prior written permission. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
| # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
| # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
| # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
| # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
| # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE |
| # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY |
| # OF SUCH DAMAGE. |
| |
| cmake_minimum_required(VERSION 2.8.11) |
| |
| set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) |
| |
| project(libssh2 C) |
| set(PROJECT_URL "https://www.libssh2.org/") |
| set(PROJECT_DESCRIPTION "The SSH library") |
| |
| if (CMAKE_VERSION VERSION_LESS "3.1") |
| if (CMAKE_C_COMPILER_ID STREQUAL "GNU") |
| set (CMAKE_C_FLAGS "--std=gnu90 ${CMAKE_C_FLAGS}") |
| endif() |
| else() |
| set (CMAKE_C_STANDARD 90) |
| endif() |
| |
| option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) |
| |
| # Parse version |
| |
| file(READ ${CMAKE_CURRENT_SOURCE_DIR}/include/libssh2.h _HEADER_CONTENTS) |
| string( |
| REGEX REPLACE ".*#define LIBSSH2_VERSION[ \t]+\"([^\"]+)\".*" "\\1" |
| LIBSSH2_VERSION "${_HEADER_CONTENTS}") |
| string( |
| REGEX REPLACE ".*#define LIBSSH2_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" |
| LIBSSH2_VERSION_MAJOR "${_HEADER_CONTENTS}") |
| string( |
| REGEX REPLACE ".*#define LIBSSH2_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" |
| LIBSSH2_VERSION_MINOR "${_HEADER_CONTENTS}") |
| string( |
| REGEX REPLACE ".*#define LIBSSH2_VERSION_PATCH[ \t]+([0-9]+).*" "\\1" |
| LIBSSH2_VERSION_PATCH "${_HEADER_CONTENTS}") |
| |
| if(NOT LIBSSH2_VERSION OR |
| NOT LIBSSH2_VERSION_MAJOR MATCHES "^[0-9]+$" OR |
| NOT LIBSSH2_VERSION_MINOR MATCHES "^[0-9]+$" OR |
| NOT LIBSSH2_VERSION_PATCH MATCHES "^[0-9]+$") |
| message( |
| FATAL_ERROR |
| "Unable to parse version from" |
| "${CMAKE_CURRENT_SOURCE_DIR}/include/libssh2.h") |
| endif() |
| |
| include(GNUInstallDirs) |
| install( |
| FILES docs/AUTHORS COPYING docs/HACKING README RELEASE-NOTES NEWS |
| DESTINATION ${CMAKE_INSTALL_DOCDIR}) |
| |
| include(max_warnings) |
| include(FeatureSummary) |
| |
| add_subdirectory(src) |
| |
| option(BUILD_EXAMPLES "Build libssh2 examples" ON) |
| if(BUILD_EXAMPLES) |
| add_subdirectory(example) |
| endif() |
| |
| option(BUILD_TESTING "Build libssh2 test suite" ON) |
| if(BUILD_TESTING) |
| enable_testing() |
| add_subdirectory(tests) |
| endif() |
| |
| option(LINT "Check style while building" OFF) |
| if(LINT) |
| add_custom_target(lint ALL |
| ./ci/checksrc.sh |
| WORKING_DIRECTORY ${libssh2_SOURCE_DIR}) |
| add_dependencies(libssh2 lint) |
| endif() |
| |
| add_subdirectory(docs) |
| |
| feature_summary(WHAT ALL) |
| |
| set(CPACK_PACKAGE_VERSION_MAJOR ${LIBSSH2_VERSION_MAJOR}) |
| set(CPACK_PACKAGE_VERSION_MINOR ${LIBSSH2_VERSION_MINOR}) |
| set(CPACK_PACKAGE_VERSION_PATCH ${LIBSSH2_VERSION_PATCH}) |
| set(CPACK_PACKAGE_VERSION ${LIBSSH2_VERSION}) |
| include(CPack) |