cmake_minimum_required(VERSION 3.19.0)


# specify the C++ standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED True)



include(FindPkgConfig)
 
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")

if (CMAKE_BUILD_TYPE MATCHES Debug)
    message(STATUS "Debug build")
    # Must not use -D_GLIBCXX_DEBUG (incompatible with SQLiteCpp)
    set (CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -O0 -DDEBUG " )
endif()

# Can't get the pkg_check to work.
# pkg_check_modules(LIBNL3 "nl-genl-3")
# if(!LIBNL3_FOUND)
#   message(ERROR "libnl-genl-3-dev package not installed.")
# else()
#   message(STATUS "LIBNL3 libraries: ${LIBNL3_LIBRARIES}")
#   message(STATUS "LBNL3 includes: ${LIBNL3_INCLUDE_DIRS}")
# endif()

# nlgenl-3 library.
# execute_process(COMMAND ls /usr/include/libnl3/netlink/netlink.h RESULT_VARIABLE LNL3_MISSING OUTPUT_QUIET ERROR_QUIET)
# if(LNL3_MISSING)
#     message(ERROR " Need to: sudo apt install libnl-3-dev libnl-genl-3-dev ")
# endif()
# set(LIBNL3_INCLUDE_DIRS /usr/include/libnl3)
# set(LIBNL3_LIBRARIES nl-3 nl-genl-3)



message(STATUS "NMPIPEDAL CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")


# Use the sdbus-c++ target in SDBusCpp namespace
add_library(PiPedalCommon STATIC
  include/Finally.hpp
  include/dbus/org.freedesktop.NetworkManager.Device.Statistics.hpp
  include/dbus/org.freedesktop.NetworkManager.Settings.Connection.hpp
  include/dbus/org.freedesktop.NetworkManager.IP6Config.hpp
  include/dbus/org.freedesktop.NetworkManager.Connection.Active.hpp
  include/dbus/org.freedesktop.NetworkManager.DnsManager.hpp
  include/dbus/org.freedesktop.NetworkManager.IP4Config.hpp
  include/dbus/org.freedesktop.NetworkManager.Settings.hpp
  include/dbus/org.freedesktop.NetworkManager.Device.hpp
  include/dbus/org.freedesktop.NetworkManager.DHCP6Config.hpp
  include/dbus/org.freedesktop.NetworkManager.AccessPoint.hpp
  include/dbus/org.freedesktop.NetworkManager.Device.WifiP2P.hpp
  include/dbus/org.freedesktop.NetworkManager.WifiP2PPeer.hpp  
  include/dbus/org.freedesktop.NetworkManager.hpp
  include/dbus/org.freedesktop.NetworkManager.Device.Wireless.hpp
  include/dbus/org.freedesktop.NetworkManager.DHCP4Config.hpp

  AlsaSequencer.cpp include/AlsaSequencer.hpp
  Utf8Utils.cpp include/Utf8Utils.hpp
  NetworkManagerInterfaces.cpp
  include/NetworkManagerInterfaces.hpp
  Lv2Log.cpp include/Lv2Log.hpp
  DBusEvent.cpp
  DBusVariantHelper.cpp
  DBusLog.cpp
  DBusDispatcher.cpp
  include/DBusDispatcher.hpp
  include/DBusEvent.hpp
  include/DBusLog.hpp
  include/DBusVariantHelper.hpp

  ofstream_synced.cpp include/ofstream_synced.hpp
  ConfigSerializer.cpp include/ConfigSerializer.hpp
  WifiRegs.cpp include/WifiRegs.hpp
  WifiRegulations.cpp include/WifiRegulations.hpp
  WifiDirectConfigSettings.cpp include/WifiDirectConfigSettings.hpp
  WifiConfigSettings.cpp include/WifiConfigSettings.hpp
  ServiceConfiguration.cpp include/ServiceConfiguration.hpp
  WriteTemplateFile.cpp include/WriteTemplateFile.hpp
  #NetLinkChannelInfo.cpp include/NetLinkChannelInfo.hpp
  ChannelInfo.cpp include/ChannelInfo.hpp
  HtmlHelper.cpp include/HtmlHelper.hpp
  RegDb.cpp include/RegDb.hpp
  ConfigUtil.cpp include/ConfigUtil.hpp
  SysExec.cpp include/SysExec.hpp
  util.cpp include/util.hpp
  json.cpp include/json.hpp

  json_variant.cpp include/json_variant.hpp
  include/autoptr_vector.h

  include/P2pConfigFiles.hpp

  ss.hpp
)
target_include_directories(PiPedalCommon PUBLIC "include" ${LIBNL3_INCLUDE_DIRS})
target_link_libraries(PiPedalCommon PUBLIC ${LIBNL3_LIBRARIES} sdbus-c++-objlib asound
 )



