# Collect all files that may contain translatable texts
FILE( GLOB_RECURSE POT_FILE_DEPENDS RELATIVE ${LIBZYPP_SOURCE_DIR} "*.h" "*.cc" )
SET( POT_FILE_DEPENDS_ZYPP_CURL ${POT_FILE_DEPENDS} PARENT_SCOPE )

INCLUDE_DIRECTORIES ( ${LIBZYPP_SOURCE_DIR} )

ADD_DEFINITIONS( -DLOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale" -DTEXTDOMAIN="zypp" -DZYPP_DLL )

SET( zypp_curl_HEADERS
  CurlConfig
  curlconfig.h
  ProxyInfo
  proxyinfo.h
  TransferSettings
  transfersettings.h
)

SET( zypp_curl_private_HEADERS
  private/curlhelper_p.h
)

SET( zypp_curl_SRCS
  curlconfig.cc
  proxyinfo.cc
  curlhelper.cc
  transfersettings.cc
)

INSTALL(  FILES ${zypp_curl_HEADERS} DESTINATION "${INCLUDE_INSTALL_DIR}/zypp-curl" )

SET( zypp_curl_auth_HEADERS
  auth/CurlAuthData
  auth/curlauthdata.h
)

SET( zypp_curl_auth_private_HEADERS
)

SET( zypp_curl_auth_SRCS
  auth/curlauthdata.cc
)

INSTALL(  FILES ${zypp_curl_auth_HEADERS} DESTINATION "${INCLUDE_INSTALL_DIR}/zypp-curl/auth" )

IF( NOT DISABLE_LIBPROXY )
  SET(zypp_curl_proxyinfo_libproxy_SRCS proxyinfo/proxyinfolibproxy.cc)
  SET(zypp_curl_proxyinfo_libproxy_HEADERS proxyinfo/ProxyInfoLibproxy proxyinfo/proxyinfolibproxy.h)
ENDIF( )

SET( zypp_curl_proxyinfo_SRCS
  proxyinfo/proxyinfosysconfig.cc
  ${zypp_curl_proxyinfo_libproxy_SRCS}
)

SET( zypp_curl_proxyinfo_HEADERS
  proxyinfo/proxyinfoimpl.h
  proxyinfo/ProxyInfoSysconfig
  proxyinfo/proxyinfosysconfig.h
  ${zypp_curl_proxyinfo_libproxy_HEADERS}
  proxyinfo/proxyinfos.h
)

INSTALL(  FILES ${zypp_curl_proxyinfo_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/zypp-curl/proxyinfo )

SET( zypp_curl_ng_network_SRCS
  ng/network/curlmultiparthandler.cc
  ng/network/downloader.cc
  ng/network/downloadspec.cc
  ng/network/mirrorcontrol.cc
  ng/network/networkrequestdispatcher.cc
  ng/network/networkrequesterror.cc
  ng/network/request.cc
)

SET( zypp_curl_ng_network_HEADERS
  ng/network/curlmultiparthandler.h
  ng/network/AuthData
  ng/network/authdata.h
  ng/network/Downloader
  ng/network/downloader.h
  ng/network/DownloadSpec
  ng/network/downloadspec.h
  ng/network/NetworkRequestDispatcher
  ng/network/networkrequestdispatcher.h
  ng/network/NetworkRequestError
  ng/network/networkrequesterror.h
  ng/network/Request
  ng/network/request.h
  ng/network/TransferSettings
  ng/network/transfersettings.h
)

SET( zypp_curl_ng_network_private_HEADERS
  ng/network/private/downloader_p.h
  ng/network/private/mediadebug_p.h
  ng/network/private/mirrorcontrol_p.h
  ng/network/private/networkrequestdispatcher_p.h
  ng/network/private/networkrequesterror_p.h
  ng/network/private/request_p.h
  ng/network/private/downloaderstates/base_p.h
  ng/network/private/downloaderstates/basicdownloader_p.h
  ng/network/private/downloaderstates/detectmeta_p.h
  ng/network/private/downloaderstates/final_p.h
  ng/network/private/downloaderstates/initial_p.h
  ng/network/private/downloaderstates/metalinkinfo_p.h
  ng/network/private/downloaderstates/metalink_p.h
  ng/network/private/downloaderstates/mirrorhandling_p.h
  ng/network/private/downloaderstates/normal_p.h
  ng/network/private/downloaderstates/preparemulti_p.h
  ng/network/private/downloaderstates/rangedownloader_p.h
  ng/network/private/downloaderstates/zck_p.h
)

SET( zypp_curl_ng_network_private_SRCS
  ng/network/private/downloaderstates/basicdownloader_p.cc
  ng/network/private/downloaderstates/detectmeta_p.cc
  ng/network/private/downloaderstates/final_p.cc
  ng/network/private/downloaderstates/initial_p.cc
  ng/network/private/downloaderstates/metalinkinfo_p.cc
  ng/network/private/downloaderstates/metalink_p.cc
  ng/network/private/downloaderstates/mirrorhandling_p.cc
  ng/network/private/downloaderstates/normal_p.cc
  ng/network/private/downloaderstates/preparemulti_p.cc
  ng/network/private/downloaderstates/rangedownloader_p.cc
  ng/network/private/downloaderstates/zck_p.cc
)

# ng files are not installed yet
# INSTALL(  FILES ${zypp_curl_ng_network_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/zypp-curl/ng/network )

SET( zypp_curl_parser_HEADERS
  parser/MediaBlockList
  parser/mediablocklist.h
  parser/metadatahelper.h
  parser/MetaLinkParser
  parser/metalinkparser.h
  parser/ZsyncParser
  parser/zsyncparser.h
)

SET( zypp_curl_parser_private_HEADERS
)

SET( zypp_curl_parser_SRCS
  parser/mediablocklist.cc
  parser/metadatahelper.cc
  parser/metalinkparser.cc
  parser/zsyncparser.cc
)

INSTALL(  FILES ${zypp_curl_parser_HEADERS} DESTINATION "${INCLUDE_INSTALL_DIR}/zypp-curl/parser" )


SET( zypp_curl_lib_SRCS
    ${zypp_curl_SRCS}
    ${zypp_curl_auth_SRCS}
    ${zypp_curl_ng_network_SRCS}
    ${zypp_curl_parser_SRCS}
    ${zypp_curl_proxyinfo_SRCS}
    ${zypp_curl_ng_network_private_SRCS}
)
SET( zypp_curl_lib_HEADERS
    ${zypp_curl_private_HEADERS} ${zypp_curl_HEADERS}
    ${zypp_curl_auth_private_HEADERS} ${zypp_curl_auth_HEADERS}
    ${zypp_curl_ng_network_HEADERS} ${zypp_curl_ng_network_private_HEADERS}
    ${zypp_curl_parser_private_HEADERS} ${zypp_curl_parser_HEADERS}
    ${zypp_curl_proxyinfo_HEADERS}
)

# Default loggroup for all files
SET_LOGGROUP( "zypp-curl" $${zypp_curl_lib_SRCS} )

if ( ZYPP_CXX_CLANG_TIDY OR ZYPP_CXX_CPPCHECK )
  if (ZYPP_CXX_CLANG_TIDY)
    set( CMAKE_CXX_CLANG_TIDY ${ZYPP_CXX_CLANG_TIDY} )
  endif(ZYPP_CXX_CLANG_TIDY)

  if (ZYPP_CXX_CPPCHECK)
    set(CMAKE_CXX_CPPCHECK ${ZYPP_CXX_CPPCHECK})
  endif(ZYPP_CXX_CPPCHECK)
endif( ZYPP_CXX_CLANG_TIDY OR ZYPP_CXX_CPPCHECK )

ADD_LIBRARY( zypp-curl STATIC ${zypp_curl_lib_SRCS} ${zypp_curl_lib_HEADERS}
  ng/network/curlmultiparthandler.h ng/network/curlmultiparthandler.cc )

target_link_libraries( zypp-curl PRIVATE zypp_lib_compiler_flags )
target_link_libraries( zypp-curl INTERFACE ${CURL_LIBRARIES} )
target_link_libraries( zypp-curl INTERFACE ${LIBXML2_LIBRARIES} )

IF( NOT DISABLE_LIBPROXY )
  # required for dlload and dlclose
  target_link_libraries( zypp-curl  INTERFACE ${CMAKE_DL_LIBS} )
ENDIF()
