if(NOT ESP_PLATFORM) if(PICO_BOARD) cmake_minimum_required(VERSION 3.12) message(STATUS "Configuring libsmb2 for ${PICO_BOARD}") project(libsmb2 C CXX ASM) add_library(libsmb2 STATIC lib/aes.c lib/aes128ccm.c lib/alloc.c lib/dcerpc.c lib/dcerpc-lsa.c lib/dcerpc-srvsvc.c lib/errors.c lib/init.c lib/hmac.c lib/hmac-md5.c lib/krb5-wrapper.c lib/libsmb2.c lib/md4c.c lib/md5.c lib/ntlmssp.c lib/pdu.c lib/sha1.c lib/sha224-256.c lib/sha384-512.c lib/smb2-cmd-close.c lib/smb2-cmd-create.c lib/smb2-cmd-echo.c lib/smb2-cmd-error.c lib/smb2-cmd-flush.c lib/smb2-cmd-ioctl.c lib/smb2-cmd-logoff.c lib/smb2-cmd-negotiate.c lib/smb2-cmd-query-directory.c lib/smb2-cmd-query-info.c lib/smb2-cmd-read.c lib/smb2-cmd-session-setup.c lib/smb2-cmd-set-info.c lib/smb2-cmd-tree-connect.c lib/smb2-cmd-tree-disconnect.c lib/smb2-cmd-write.c lib/smb2-data-file-info.c lib/smb2-data-filesystem-info.c lib/smb2-data-security-descriptor.c lib/smb2-data-reparse-point.c lib/smb2-share-enum.c lib/smb3-seal.c lib/smb2-signing.c lib/socket.c lib/sync.c lib/timestamps.c lib/unicode.c lib/usha.c lib/compat.c ) include_directories(libsmb2 STATIC ${PICO_SDK_PATH}/lib/lwip/src/include ${PICO_SDK_PATH}/src/rp2_common/pico_lwip/include lib include include/smb2 include/picow ) ##### EMD PICO_BOARD else() ##### DEFAULT cmake_minimum_required(VERSION 3.5) project(libsmb2 LANGUAGES C VERSION 4.0.0) set(SOVERSION 1 CACHE STRING "" FORCE) set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "Installation directory for libraries") set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers") set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/cmake/libsmb2" CACHE PATH "Installation directory for cmake (.cmake) files") option(BUILD_SHARED_LIBS "Build shared libraries" ON) option(ENABLE_EXAMPLES "Build example programs" OFF) list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules) # find_package(GSSAPI) # find_package(OpenSSL) # if(GSSAPI_FOUND) # add_definitions(-DHAVE_LIBKRB5) # endif() # if(OPENSSL_FOUND) # add_definitions(-DHAVE_OPENSSL_LIBS) # endif() include(cmake/ConfigureChecks.cmake) include_directories(${CMAKE_CURRENT_BINARY_DIR} include include/smb2 ${OPENSSL_INCLUDE_DIR}) set(core_DEPENDS ${GSSAPI_LIBRARIES} CACHE STRING "" FORCE) if(MSVC AND BUILD_SHARED_LIBS) # If we are building dll with msvc, then generate a def file according to the syms file SET(SYMS_FILE_PATH "${PROJECT_SOURCE_DIR}/lib/libsmb2.syms") SET(DEF_FILE_PATH "${PROJECT_BINARY_DIR}/lib/libsmb2.def") file(READ ${SYMS_FILE_PATH} EXPORT_SYMBOLS) file(WRITE ${DEF_FILE_PATH} "LIBRARY smb2\nEXPORTS\n\n${EXPORT_SYMBOLS}") # Pass def file to the linker set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEF:${DEF_FILE_PATH}") endif() if(CMAKE_SYSTEM_NAME MATCHES Windows) list(APPEND CORE_LIBRARIES ws2_32.lib) add_definitions(-DWIN32_LEAN_AND_MEAN -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) include_directories(include/msvc) elseif(CMAKE_SYSTEM_NAME STREQUAL Solaris) find_library(SOCKET_LIBRARY socket) find_library(NSL_LIBRARY nsl) list(APPEND CORE_LIBRARIES ${SOCKET_LIBRARY} ${NSL_LIBRARY}) endif() if(ENABLE_EXAMPLES) add_subdirectory(examples) endif() add_subdirectory(lib) include(CMakePackageConfigHelpers) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/libsmb2-config-version.cmake VERSION ${PROJECT_VERSION} COMPATIBILITY AnyNewerVersion) configure_file(cmake/libsmb2.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libsmb2.pc @ONLY) install(DIRECTORY include/smb2 DESTINATION ${INSTALL_INC_DIR}) install(FILES cmake/FindSMB2.cmake ${CMAKE_CURRENT_BINARY_DIR}/libsmb2-config-version.cmake DESTINATION ${INSTALL_CMAKE_DIR}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libsmb2.pc DESTINATION ${INSTALL_PKGCONFIG_DIR}) endif() ### DEFAULT else() ##### ESP_PLATFORM if(NOT CMAKE_BUILD_EARLY_EXPANSION) add_definitions(-DHAVE_CONFIG_H) endif() set(COMPONENT_ADD_INCLUDEDIRS "lib" include include/smb2 include/esp ) set(COMPONENT_SRCS lib/aes.c lib/aes128ccm.c lib/alloc.c lib/dcerpc.c lib/dcerpc-lsa.c lib/dcerpc-srvsvc.c lib/errors.c lib/init.c lib/hmac.c lib/hmac-md5.c lib/krb5-wrapper.c lib/libsmb2.c lib/md4c.c lib/md5.c lib/ntlmssp.c lib/pdu.c lib/sha1.c lib/sha224-256.c lib/sha384-512.c lib/smb2-cmd-close.c lib/smb2-cmd-create.c lib/smb2-cmd-echo.c lib/smb2-cmd-error.c lib/smb2-cmd-flush.c lib/smb2-cmd-ioctl.c lib/smb2-cmd-logoff.c lib/smb2-cmd-negotiate.c lib/smb2-cmd-query-directory.c lib/smb2-cmd-query-info.c lib/smb2-cmd-read.c lib/smb2-cmd-session-setup.c lib/smb2-cmd-set-info.c lib/smb2-cmd-tree-connect.c lib/smb2-cmd-tree-disconnect.c lib/smb2-cmd-write.c lib/smb2-data-file-info.c lib/smb2-data-filesystem-info.c lib/smb2-data-security-descriptor.c lib/smb2-data-reparse-point.c lib/smb2-share-enum.c lib/smb3-seal.c lib/smb2-signing.c lib/socket.c lib/sync.c lib/timestamps.c lib/unicode.c lib/usha.c lib/compat.c) set(COMPONENT_NAME ".") register_component() endif() ##### ESP_PLATFORM