set(PROJECT_NAME mimilib)

################################################################################
# Source groups
################################################################################
set(no_group_source_files
    "kappfree.c"
    "kcredentialprovider.c"
    "kcredentialprovider.h"
    "kdhcp.c"
    "kdhcp.h"
    "kdns.c"
    "kdns.h"
    "kfilt.c"
    "kfilt.h"
    "knp.c"
    "knp.h"
    "kssp.c"
    "kssp.h"
    "ksub.c"
    "ksub.h"
    "mimilib.def"
    "utils.c"
    "utils.h"
)
source_group("" FILES ${no_group_source_files})

set(sekurlsadbg
    "sekurlsadbg/kuhl_m_sekurlsa_nt6.c"
    "sekurlsadbg/kuhl_m_sekurlsa_nt6.h"
    "sekurlsadbg/kuhl_m_sekurlsa_packages.c"
    "sekurlsadbg/kuhl_m_sekurlsa_packages.h"
    "sekurlsadbg/kuhl_m_sekurlsa_utils.c"
    "sekurlsadbg/kuhl_m_sekurlsa_utils.h"
    "sekurlsadbg/kull_m_rpc.c"
    "sekurlsadbg/kull_m_rpc.h"
    "sekurlsadbg/kull_m_rpc_ms-credentialkeys.c"
    "sekurlsadbg/kull_m_rpc_ms-credentialkeys.h"
    "sekurlsadbg/kwindbg.c"
    "sekurlsadbg/kwindbg.h"
)
source_group("sekurlsadbg" FILES ${sekurlsadbg})

set(ALL_FILES
    ${no_group_source_files}
    ${sekurlsadbg}
)

add_library(mimilib STATIC ${ALL_FILES})
target_compile_options(mimilib PRIVATE "/w")
target_compile_options(mimilib PRIVATE "-Wno-incompatible-function-pointer-types")

################################################################################
# Target
################################################################################

use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
set(ROOT_NAMESPACE mimilib)

set_target_properties(${PROJECT_NAME} PROPERTIES
    VS_GLOBAL_KEYWORD "Win32Proj"
)
################################################################################
# Output directory
################################################################################
set_target_properties(${PROJECT_NAME} PROPERTIES
    OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/${CMAKE_VS_PLATFORM_NAME}/"
)
set_target_properties(${PROJECT_NAME} PROPERTIES
    INTERPROCEDURAL_OPTIMIZATION "TRUE"
)
################################################################################
# Compile definitions
################################################################################
target_compile_definitions(${PROJECT_NAME} PRIVATE
    "WIN32;"
    "NDEBUG;"
    "_CONSOLE;"
    "UNICODE;"
    "_UNICODE"
)

################################################################################
# Compile and link options
################################################################################
################################################################################
# Dependencies
################################################################################
set(ADDITIONAL_LIBRARY_DEPENDENCIES
    "advapi32;"
    "bcrypt;"
    "delayimp;"
    "ntdll.min;"
    "rpcrt4;"
    "ole32"
)
target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}")

