From 658a53c6aee000b8846695132e22bb914e6cf7dc Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Thu, 27 Apr 2017 10:07:36 +0200 Subject: fixed probing for libssh (especially fixes OSX build issues) --- 3rdParty/linenoise/CMakeLists.txt | 2 +- CMakeLists.txt | 6 +++++- cmake/find_gengetopt.cmake | 33 +++++++++++++++++++++++++++++++++ cmake/find_libssh.cmake | 21 +++++++++++++++++++++ cmake/gengetopt.cmake | 33 --------------------------------- src/CMakeLists.txt | 4 ++-- 6 files changed, 62 insertions(+), 37 deletions(-) create mode 100644 cmake/find_gengetopt.cmake create mode 100644 cmake/find_libssh.cmake delete mode 100644 cmake/gengetopt.cmake diff --git a/3rdParty/linenoise/CMakeLists.txt b/3rdParty/linenoise/CMakeLists.txt index 6ccf4e0..e4df181 100644 --- a/3rdParty/linenoise/CMakeLists.txt +++ b/3rdParty/linenoise/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR) -include_directories(${LIBSSH_PUBLIC_INCLUDE_DIRS}) +include_directories(${libssh_INCLUDE_PATH}) set(LINENOUSE_C_SRC linenoise.c diff --git a/CMakeLists.txt b/CMakeLists.txt index a134b6a..b5e5786 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,8 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") -include(cmake/gengetopt.cmake) +include(cmake/find_gengetopt.cmake) +include(cmake/find_libssh.cmake) project(cssh C) @@ -10,6 +11,9 @@ set( CSSH_VERSION 0.0.1 ) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Wall -D_XOPEN_SOURCE=700") +set( libssh_FIND_REQUIRED TRUE) +find_libssh( ) + enable_testing( ) add_subdirectory(3rdParty) diff --git a/cmake/find_gengetopt.cmake b/cmake/find_gengetopt.cmake new file mode 100644 index 0000000..3caea3e --- /dev/null +++ b/cmake/find_gengetopt.cmake @@ -0,0 +1,33 @@ +MACRO(FIND_GENGETOPT) + IF(NOT GENGETOPT_EXECUTABLE) + FIND_PROGRAM(GENGETOPT_EXECUTABLE gengetopt) + IF (NOT GENGETOPT_EXECUTABLE) + MESSAGE(FATAL_ERROR "gengetopt not found - aborting") + ENDIF (NOT GENGETOPT_EXECUTABLE) + ENDIF(NOT GENGETOPT_EXECUTABLE) +ENDMACRO(FIND_GENGETOPT) + +MACRO(ADD_GENGETOPT_FILES _sources ) + FIND_GENGETOPT() + + FOREACH (_current_FILE ${ARGN}) + GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE) + GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) + + SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c) + SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) + + ADD_CUSTOM_COMMAND( + OUTPUT ${_out} ${_header} + COMMAND ${GENGETOPT_EXECUTABLE} + ARGS + -F ${_basename} + --unamed-opts + --input=${_in} + DEPENDS ${_in} + ) + + SET(${_sources} ${${_sources}} ${_out} ) + SET(${_sources} ${${_sources}} ${_header} ) + ENDFOREACH (_current_FILE) +ENDMACRO(ADD_GENGETOPT_FILES) diff --git a/cmake/find_libssh.cmake b/cmake/find_libssh.cmake new file mode 100644 index 0000000..30cf41f --- /dev/null +++ b/cmake/find_libssh.cmake @@ -0,0 +1,21 @@ + +MACRO( FIND_LIBSSH ) + find_path(libssh_INCLUDE_PATH NAMES libssh/libssh.h) + find_library(libssh_LIBRARY NAMES ssh) + if(libssh_INCLUDE_PATH AND libssh_LIBRARY) + set(libssh_FOUND TRUE) + endif(libssh_INCLUDE_PATH AND libssh_LIBRARY) + if(libssh_FOUND) + if(NOT libssh_FIND_QUIETLY) + message(STATUS "Found libssh: ${libssh_LIBRARY}") + message(STATUS "libssh include: ${libssh_INCLUDE_PATH}") + message(STATUS "libssh library: ${libssh_LIBRARY}") + endif(NOT libssh_FIND_QUIETLY) + else(libssh_FOUND) + if(libssh_FIND_REQUIRED) + message(FATAL_ERROR "Could not find libssh library.") + endif(libssh_FIND_REQUIRED) + endif(libssh_FOUND) + +ENDMACRO( FIND_LIBSSH ) + diff --git a/cmake/gengetopt.cmake b/cmake/gengetopt.cmake deleted file mode 100644 index 3caea3e..0000000 --- a/cmake/gengetopt.cmake +++ /dev/null @@ -1,33 +0,0 @@ -MACRO(FIND_GENGETOPT) - IF(NOT GENGETOPT_EXECUTABLE) - FIND_PROGRAM(GENGETOPT_EXECUTABLE gengetopt) - IF (NOT GENGETOPT_EXECUTABLE) - MESSAGE(FATAL_ERROR "gengetopt not found - aborting") - ENDIF (NOT GENGETOPT_EXECUTABLE) - ENDIF(NOT GENGETOPT_EXECUTABLE) -ENDMACRO(FIND_GENGETOPT) - -MACRO(ADD_GENGETOPT_FILES _sources ) - FIND_GENGETOPT() - - FOREACH (_current_FILE ${ARGN}) - GET_FILENAME_COMPONENT(_in ${_current_FILE} ABSOLUTE) - GET_FILENAME_COMPONENT(_basename ${_current_FILE} NAME_WE) - - SET(_out ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.c) - SET(_header ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h) - - ADD_CUSTOM_COMMAND( - OUTPUT ${_out} ${_header} - COMMAND ${GENGETOPT_EXECUTABLE} - ARGS - -F ${_basename} - --unamed-opts - --input=${_in} - DEPENDS ${_in} - ) - - SET(${_sources} ${${_sources}} ${_out} ) - SET(${_sources} ${${_sources}} ${_header} ) - ENDFOREACH (_current_FILE) -ENDMACRO(ADD_GENGETOPT_FILES) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d61aec9..6404868 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR) include_directories( - ${LIBSSH_PUBLIC_INCLUDE_DIRS} + ${libssh_INCLUDE_PATH} "${PROJECT_BINARY_DIR}/src" "${PROJECT_SOURCE_DIR}/3rdParty/linenoise" ) @@ -16,6 +16,6 @@ ADD_GENGETOPT_FILES(SRC options.ggo) add_executable(cssh ${SRC}) -target_link_libraries(cssh ssh curses linenoise) +target_link_libraries(cssh ${libssh_LIBRARY} curses linenoise) install( TARGETS cssh RUNTIME DESTINATION bin ) -- cgit v1.2.3-54-g00ecf