project(libssh-threads C) set(LIBSSH_THREADS_PUBLIC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} CACHE INTERNAL "libssh public include directories" ) set(LIBSSH_THREADS_PRIVATE_INCLUDE_DIRS ${CMAKE_BINARY_DIR} ) set(LIBSSH_THREADS_SHARED_LIBRARY ssh_threads_shared CACHE INTERNAL "libssh threads shared library" ) if (WITH_STATIC_LIB) set(LIBSSH_THREADS_STATIC_LIBRARY ssh_threads_static CACHE INTERNAL "libssh threads static library" ) endif (WITH_STATIC_LIB) set(LIBSSH_THREADS_LINK_LIBRARIES ${LIBSSH_SHARED_LIBRARY} ) message(STATUS "threads library: Threads_FOUND=${Threads_FOUND}") set(libssh_threads_SRCS) # empty SRC # build and link pthread if (CMAKE_USE_PTHREADS_INIT) set(libssh_threads_SRCS ${libssh_threads_SRCS} pthread.c ) set(LIBSSH_THREADS_LINK_LIBRARIES ${LIBSSH_THREADS_LINK_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ) message(STATUS "libssh_threads_SRCS=${libssh_threads_SRCS}") endif (CMAKE_USE_PTHREADS_INIT) set(LIBSSH_THREADS_LINK_LIBRARIES ${LIBSSH_THREADS_LINK_LIBRARIES} CACHE INTERNAL "libssh threads link libraries" ) include_directories( ${LIBSSH_THREADS_PUBLIC_INCLUDE_DIRS} ${LIBSSH_THREADS_PRIVATE_INCLUDE_DIRS} ) if (libssh_threads_SRCS) set(LIBSSH_THREADS ON CACHE "libssh threads lib" INTERNAL) add_library(${LIBSSH_THREADS_SHARED_LIBRARY} SHARED ${libssh_threads_SRCS}) target_link_libraries(${LIBSSH_THREADS_SHARED_LIBRARY} ${LIBSSH_THREADS_LINK_LIBRARIES}) set_target_properties( ${LIBSSH_THREADS_SHARED_LIBRARY} PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_SOVERSION} OUTPUT_NAME ssh_threads DEFINE_SYMBOL LIBSSH_EXPORTS ) if (WITH_VISIBILITY_HIDDEN) set_target_properties(${LIBSSH_THREADS_SHARED_LIBRARY} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden") endif (WITH_VISIBILITY_HIDDEN) install( TARGETS ${LIBSSH_THREADS_SHARED_LIBRARY} RUNTIME DESTINATION ${BIN_INSTALL_DIR} LIBRARY DESTINATION ${LIB_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR} COMPONENT libraries ) if (WITH_STATIC_LIB) add_library(${LIBSSH_THREADS_STATIC_LIBRARY} STATIC ${libssh_threads_SRCS}) if (MSVC) set(OUTPUT_SUFFIX static) else (MSVC) set(OUTPUT_SUFFIX ) endif (MSVC) set_target_properties( ${LIBSSH_THREADS_STATIC_LIBRARY} PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_SOVERSION} OUTPUT_NAME ssh_threads ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_SUFFIX} ) if (WIN32) set_target_properties( ${LIBSSH_THREADS_STATIC_LIBRARY} PROPERTIES COMPILE_FLAGS "-DLIBSSH_STATIC" ) endif (WIN32) install( TARGETS ${LIBSSH_THREADS_STATIC_LIBRARY} DESTINATION ${LIB_INSTALL_DIR}/${OUTPUT_SUFFIX} COMPONENT libraries ) endif (WITH_STATIC_LIB) endif (libssh_threads_SRCS)