Merge pull request #136 from amandeepgautam/master
[libsmb2.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.2)
2
3 project(libsmb2
4         LANGUAGES C
5         VERSION 3.0.0)
6
7 set(SOVERSION 1 CACHE STRING "" FORCE)
8
9 set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "Installation directory for libraries")
10 set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers")
11 set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
12 set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/cmake/libsmb2" CACHE PATH "Installation directory for cmake (.cmake) files")
13
14 option(BUILD_SHARED_LIBS "Build shared libraries" ON)
15 option(ENABLE_EXAMPLES "Build example programs" OFF)
16
17 list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules)
18
19 find_package(GSSAPI)
20 find_package(OpenSSL)
21
22 if(GSSAPI_FOUND)
23   add_definitions(-DHAVE_LIBKRB5)
24 endif()
25
26 if(OPENSSL_FOUND)
27   add_definitions(-DHAVE_OPENSSL_LIBS)
28 endif()
29
30 include(cmake/ConfigureChecks.cmake)
31
32 include_directories(${CMAKE_CURRENT_BINARY_DIR}
33                     include
34                     include/smb2
35                     ${OPENSSL_INCLUDE_DIR})
36
37 set(core_DEPENDS ${GSSAPI_LIBRARIES} CACHE STRING "" FORCE)
38
39 if(CMAKE_SYSTEM_NAME MATCHES Windows)
40   list(APPEND CORE_LIBRARIES ws2_32.lib)
41   add_definitions(-DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS)
42   include_directories(include/msvc)
43 elseif(CMAKE_SYSTEM_NAME STREQUAL Solaris)
44   find_library(SOCKET_LIBRARY socket)
45   find_library(NSL_LIBRARY nsl)
46   list(APPEND CORE_LIBRARIES ${SOCKET_LIBRARY} ${NSL_LIBRARY})
47 endif()
48
49 if(ENABLE_EXAMPLES)
50   add_subdirectory(examples)
51 endif()
52
53 add_subdirectory(lib)
54
55 include(CMakePackageConfigHelpers)
56 write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/libsmb2-config-version.cmake
57                                  VERSION ${PROJECT_VERSION}
58                                  COMPATIBILITY AnyNewerVersion)
59
60 configure_file(cmake/libsmb2.pc.cmake
61                ${CMAKE_CURRENT_BINARY_DIR}/libsmb2.pc @ONLY)
62
63 install(DIRECTORY include/smb2
64         DESTINATION ${INSTALL_INC_DIR})
65
66 install(FILES cmake/FindSMB2.cmake
67               ${CMAKE_CURRENT_BINARY_DIR}/libsmb2-config-version.cmake
68         DESTINATION ${INSTALL_CMAKE_DIR})
69
70 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libsmb2.pc
71         DESTINATION ${INSTALL_PKGCONFIG_DIR})