cmake_minimum_required(VERSION 3.14)
project(fileprobe)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wextra -Ofast")

set(SRC_DIR "${CMAKE_SOURCE_DIR}")

set(FILEPROBE_PROBES
		src/probes/document/pdf/pdf_probe.cpp
		src/probes/image/jpeg/jpeg_probe.cpp
		src/probes/archive/zip/zip_probe.cpp
		src/probes/archive/7zip/7zip_probe.cpp
		src/probes/archive/ace/ace_probe.cpp
		src/probes/archive/arj/arj_probe.cpp
		src/probes/archive/bz2/bz2_probe.cpp
		src/probes/archive/cab/cab_probe.cpp
		src/probes/archive/deb/deb_probe.cpp
		src/probes/archive/iso/iso_probe.cpp
		src/probes/archive/rar/rar_probe.cpp
		src/probes/archive/rpm/rpm_probe.cpp
		src/probes/archive/tar/tar_probe.cpp
		src/probes/executable/dll-ne/dll-ne_probe.cpp
		src/probes/executable/dll-pe/dll-pe_probe.cpp
		src/probes/executable/elf/elf_probe.cpp
		src/probes/executable/exe-dos/exe-dos_probe.cpp
		src/probes/executable/exe-le/exe-le_probe.cpp
		src/probes/executable/exe-ne/exe-ne_probe.cpp
		src/probes/executable/exe-pe/exe-pe_probe.cpp
		src/probes/executable/mach-o/mach-o_probe.cpp
		src/probes/document/ole/ole_probe.cpp
		src/probes/document/postscript/postscript_probe.cpp
		src/probes/document/rtf/rtf_probe.cpp
		src/probes/document/ooxml/ooxml_probe.cpp
		src/probes/image/bmp/bmp_probe.cpp
		src/probes/image/gif/gif_probe.cpp
		src/probes/image/ico/ico_probe.cpp
		src/probes/image/png/png_probe.cpp
		src/probes/image/tiff/tiff_probe.cpp
		src/probes/media/asf/asf_probe.cpp
		src/probes/media/avi/avi_probe.cpp
		src/probes/media/flac/flac_probe.cpp
		src/probes/media/mkv/mkv_probe.cpp
		src/probes/media/mp3/mp3_probe.cpp
		src/probes/media/mp4/mp4_probe.cpp
		src/probes/media/wav/wav_probe.cpp
		src/probes/text/general_text_probe.cpp
		src/probes/text/script/javascript/javascript_probe.cpp
		src/probes/text/other/css/css_probe.cpp
		src/probes/text/other/eml/eml_probe.cpp
		src/probes/text/other/html/html_probe.cpp
		src/probes/text/other/ini/ini_probe.cpp
		src/probes/text/other/reg/reg_probe.cpp
		src/probes/text/script/bat/bat_probe.cpp
		src/probes/text/script/python/python_probe.cpp
		src/probes/text/source_code/c/c_probe.cpp
		src/probes/text/source_code/cpp/cpp_probe.cpp
		src/probes/text/source_code/makefile/makefile_probe.cpp
		src/probes/android/apk/apk_probe.cpp
		src/probes/android/dex/dex_probe.cpp
		src/probes/java/class/class_probe.cpp
		src/probes/java/jar/jar_probe.cpp
		src/probes/other/cat/cat_probe.cpp
		src/probes/other/chm/chm_probe.cpp
		src/probes/other/dmg/dmg_probe.cpp
		src/probes/other/json/json_probe.cpp
		src/probes/other/lnk/lnk_probe.cpp
		src/probes/other/mbr/mbr_probe.cpp
		src/probes/other/pdb/pdb_probe.cpp
		src/probes/other/swf/swf_probe.cpp
		src/probes/other/torrent/torrent_probe.cpp
		src/probes/other/ttf/ttf_probe.cpp
		src/probes/other/xpi/xpi_probe.cpp
        src/probes/document/flatopc/flatopc_probe.cpp
		src/probes/document/wordml/wordml_probe.cpp
		src/probes/document/powerpoint/powerpoint_ooxml_probe.cpp
		src/probes/document/powerpoint/powerpoint_ole_probe.cpp
		)

set(FILEPROBE_BUILD_TARGETS
		${FILEPROBE_PROBES}
		src/file_probe.cpp
		src/utils/utilities.cpp
		src/utils/opened_zip_archive.cpp
		src/general/exceptions.cpp
		src/general/probe_base.cpp
		src/app.cpp
        )

add_library(fileprobe STATIC ${FILEPROBE_BUILD_TARGETS})
target_include_directories(fileprobe PUBLIC
	${SRC_DIR}
)
target_link_libraries(fileprobe PUBLIC
	libzip
	libchardet
)

add_executable(fileprobe-app
	main.cpp
)
target_link_libraries(fileprobe-app PRIVATE
	fileprobe
)

add_executable(fileprobe-test
	test/tests.cpp
	test/test_fixture.cpp
	test/test_main.cpp
)
target_link_libraries(fileprobe-test PRIVATE
	fileprobe
)
