#
# Copyright (c) 2002-2026 WEINZIERL ENGINEERING GmbH
# All rights reserved.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
# SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
# WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
#

######################################################################
# CMake Setup
######################################################################

cmake_minimum_required(VERSION 3.16.3)

######################################################################
# Project Setup
######################################################################

# ---------- Project

project(SampleBaosProject LANGUAGES CXX)

# ---------- Global CMake properties

# Require C++17 standard (default is C++20)
# Disable gnu etc. C++ extensions (better for portable code)
# The user could set CMAKE_CXX_STANDARD optional from outside. The default value is C++20
if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 20)
else()
  message(STATUS "User defined value for CMAKE_CXX_STANDARD")
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
message(STATUS "Selected C++ standard: C++${CMAKE_CXX_STANDARD}")

######################################################################
# Thirdparty Target: OpenSSL
######################################################################

find_package(OpenSSL REQUIRED COMPONENTS Crypto)

message( STATUS "OpenSSL found with version ${OPENSSL_VERSION}" )
message( STATUS "  OPENSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}")
message( STATUS "  OPENSSL_CRYPTO_LIBRARY: ${OPENSSL_CRYPTO_LIBRARY}")
message( STATUS "  OPENSSL_LIBRARIES: ${OPENSSL_LIBRARIES}")

message( STATUS "--------------------------------------" )

######################################################################
# Thirdparty Target: Threads
######################################################################

find_package(Threads REQUIRED)

######################################################################
# External: BaosLib
######################################################################

set(BaosLib_DIR "../../lib/cmake/BaosLib")
set(WzCpp_DIR "../../share/cmake/WzCpp-2.0.0")
message(STATUS "The Baoslib search path is ${BaosLib_DIR}")
find_package(BaosLib REQUIRED)

######################################################################
# Sample Project
######################################################################

add_executable(sampleBaosProject)
target_sources(sampleBaosProject PRIVATE "main.cpp")
target_link_libraries(sampleBaosProject PRIVATE BaosLib)