# Make sure the compiler can find include files from our Hello library.
include_directories (
	${FriiDump_SOURCE_DIR}/libfriidump
)

# Make sure the linker can find the Hello library once it is built.
link_directories (
	${FriiDump_BINARY_DIR}/libfriidump
)

# Add executable called "helloDemo" that is built from the source files
# "demo.cxx" and "demo_b.cxx".  The extensions are automatically found.
if (WIN32)
	set(
		additional_sources
	
		getopt-win32.h
		getopt-win32.c
		getopt_long-win32.c
	)
endif (WIN32)

# Keep the stable Redump DAT resources with the CMake-built executable.
# This makes source-tree builds independent of the process working directory.
file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/redump_dat")
foreach (FRIIDUMP_REDUMP_DAT_FILE
    "Microsoft - Xbox.dat"
    "Nintendo - GameCube.dat"
    "Nintendo - Wii.dat"
    "README.txt"
)
    configure_file (
        "${FriiDump_SOURCE_DIR}/redump_dat/${FRIIDUMP_REDUMP_DAT_FILE}"
        "${CMAKE_CURRENT_BINARY_DIR}/redump_dat/${FRIIDUMP_REDUMP_DAT_FILE}"
        COPYONLY
    )
endforeach ()

add_executable (
	friidump

	friidump.c
	native_report.c
	native_report.h
	redump_dat.c
	redump_dat.h
	${additional_sources}
)

if (UNIX AND NOT WIN32)
	target_sources (friidump PRIVATE linux_rawio.c linux_rawio.h)
endif ()

# Link the executable to the Hello library.
target_link_libraries (
	friidump
	
	friidumplib
)

if (FRIIDUMP_BUILD_COMMIT)
	target_compile_definitions (
		friidump
		PRIVATE FRIIDUMP_BUILD_COMMIT="${FRIIDUMP_BUILD_COMMIT}"
	)
endif (FRIIDUMP_BUILD_COMMIT)

if (WIN32)
	target_link_libraries (friidump ole32)
endif (WIN32)

if (WIN32)
	# We only want a version number on Windows (Is it any use?)
	set_target_properties (friidump	PROPERTIES VERSION 0.2)
	
	install(
		TARGETS friidump
		RUNTIME DESTINATION /
	)
	install(
		DIRECTORY "${FriiDump_SOURCE_DIR}/redump_dat/"
		DESTINATION redump_dat
	)
else (WIN32)
	install(
		TARGETS friidump
		RUNTIME DESTINATION bin
	)
	install(
		DIRECTORY "${FriiDump_SOURCE_DIR}/redump_dat/"
		DESTINATION share/friidump/redump_dat
	)
endif (WIN32)
if (BUILD_NATIVE_REPORT_TESTS)
	if (UNIX AND NOT WIN32)
		add_executable (
			friidump-linux-rawio-test
			${FriiDump_SOURCE_DIR}/tests/test_linux_rawio.c
			linux_rawio.c
			linux_rawio.h
		)
		target_include_directories (friidump-linux-rawio-test PRIVATE ${FriiDump_SOURCE_DIR}/src)
	endif ()

	add_executable (
		friidump-report-fixtures
		${FriiDump_SOURCE_DIR}/tests/test_native_report.c
		${FriiDump_SOURCE_DIR}/libfriidump/nintendo_disc_header.c
		${FriiDump_SOURCE_DIR}/libfriidump/nintendo_disc_header.h
		${FriiDump_SOURCE_DIR}/libfriidump/xbox_region.c
		${FriiDump_SOURCE_DIR}/libfriidump/xbox_region.h
		native_report.c
		native_report.h
	)
	target_include_directories (friidump-report-fixtures PRIVATE ${FriiDump_SOURCE_DIR}/src ${FriiDump_SOURCE_DIR}/libfriidump)
	if (WIN32)
		target_link_libraries (friidump-report-fixtures ole32)
	endif (WIN32)

	add_executable (
		friidump-redump-dat-resolver-test
		${FriiDump_SOURCE_DIR}/tests/test_redump_dat_resolver.c
		redump_dat.c
		redump_dat.h
	)
	target_include_directories (friidump-redump-dat-resolver-test PRIVATE ${FriiDump_SOURCE_DIR}/src)

	add_executable (
		friidump-redump-dat-verify-test
		${FriiDump_SOURCE_DIR}/tests/test_redump_dat_verify.c
		redump_dat.c
		redump_dat.h
	)
	target_include_directories (friidump-redump-dat-verify-test PRIVATE ${FriiDump_SOURCE_DIR}/src)

	add_executable (
		friidump-xbox-portable-metadata-test
		${FriiDump_SOURCE_DIR}/tests/test_xbox_portable_metadata.c
	)
	target_include_directories (friidump-xbox-portable-metadata-test PRIVATE ${FriiDump_SOURCE_DIR}/libfriidump)
	target_link_libraries (friidump-xbox-portable-metadata-test friidumplib)
endif (BUILD_NATIVE_REPORT_TESTS)
