set(PROJECT_NAME mimilove)

################################################################################
# Source groups
################################################################################
set(no_group_source_files
    "mimilove.c"
    "mimilove.h"
)
source_group("" FILES ${no_group_source_files})

set(common_modules
    "../modules/kull_m_kernel.c"
    "../modules/kull_m_kernel.h"
    "../modules/kull_m_memory.c"
    "../modules/kull_m_memory.h"
    "../modules/kull_m_minidump.c"
    "../modules/kull_m_minidump.h"
    "../modules/kull_m_output.c"
    "../modules/kull_m_output.h"
    "../modules/kull_m_process.c"
    "../modules/kull_m_process.h"
    "../modules/kull_m_string.c"
    "../modules/kull_m_string.h"
)
source_group("common modules" FILES ${common_modules})

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

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

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

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;"
    "MIMIKATZ_W2000_SUPPORT;"
    "UNICODE;"
    "_UNICODE"
)

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

