# ANSLicensingSystem — DLL for license validation (also used by LabVIEW)
add_library(ANSLicensingSystem SHARED
    ANSLicense.cpp
    ANSLicense.h
    Utility.cpp
    Utility.h
    pch.cpp
    pch.h
    framework.h
    dllmain.cpp
)

target_include_directories(ANSLicensingSystem PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${SHARED_INCLUDE_DIR}
    # These are needed by consumers because ANSLicense.h / Utility.h include them
    ${RESEARCH_DIR}           # for LabVIEWHeader/extcode.h
    ${ANSLIBS_DIR}/ZLIB/include    # for zlib.h (Utility.h includes it)
    ${VCPKG_INCLUDE_DIR}           # for zip.h (Utility.h includes it)
)

target_include_directories(ANSLicensingSystem PRIVATE
    ${ANLS_ROOT}/ANSLIB/anszip
    ${RESEARCH_DIR}/ANS-HWiNFO/include
    ${RESEARCH_DIR}/spdlog-1.12.0/include
)

target_link_libraries(ANSLicensingSystem
    PRIVATE anslicensing
    PRIVATE labview
    PRIVATE opencv
    PRIVATE zlib_dep
    PRIVATE spdlog_dep
    PRIVATE boost
)

target_link_directories(ANSLicensingSystem PRIVATE
    ${RESEARCH_DIR}/ANS-HWiNFO/lib
    ${RESEARCH_DIR}/boost_lib
    ${VCPKG_LIB_DIR}
    ${ANLS_ROOT}/ANSLIB/anszip/x64/Release
)

# BASE64 class — not exported from anslicensing.dll, compile directly
target_include_directories(ANSLicensingSystem PRIVATE
    ${CMAKE_SOURCE_DIR}/core/anslicensing
)
target_sources(ANSLicensingSystem PRIVATE
    ${CMAKE_SOURCE_DIR}/core/anslicensing/base64.cpp
)

target_link_libraries(ANSLicensingSystem PRIVATE
    HWiNFO.lib OpenCL.lib OpenCLExt.lib
    bz2.lib zip.lib
    libboost_log-vc143-mt-x64-1_82.lib
    shlwapi.lib winhttp.lib
    ${WIN_COMMON_LIBS}
)

target_compile_definitions(ANSLicensingSystem PRIVATE
    ANSLICENSE_EXPORTS
    ANSLICENSINGSYSTEM_EXPORTS
    UNICODE _UNICODE
    _USRDLL
)

target_precompile_headers(ANSLicensingSystem PRIVATE pch.h)
