From 0ebec9c491c884d3e25515de40cfb59514b8a0d4 Mon Sep 17 00:00:00 2001 From: Dimitris Panokostas Date: Tue, 8 Nov 2022 18:45:06 +0100 Subject: [PATCH] Fixed CMake project files --- .gitignore | 1 + CMakeLists.txt | 564 ++++++++++++++++-------------- CMakeSettings.json | 32 ++ cmake/FindFLAC.cmake | 65 ++++ cmake/FindMpg123.cmake | 64 ++++ external/libguisan/CMakeLists.txt | 13 +- 6 files changed, 461 insertions(+), 278 deletions(-) create mode 100644 CMakeSettings.json create mode 100644 cmake/FindFLAC.cmake create mode 100644 cmake/FindMpg123.cmake diff --git a/.gitignore b/.gitignore index b4736a50..976cf965 100644 --- a/.gitignore +++ b/.gitignore @@ -216,3 +216,4 @@ Thumbs.db *.orig cmake-build-debug VSLinux/.vs +.vs diff --git a/CMakeLists.txt b/CMakeLists.txt index 080f121d..dd8259aa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,283 +3,303 @@ project(amiberry) set(CMAKE_CXX_STANDARD 17) -add_subdirectory(external/libguisan) -add_executable(amiberry - src/akiko.cpp - src/ar.cpp - src/audio.cpp - src/autoconf.cpp - src/blitfunc.cpp - src/blittable.cpp - src/blitter.cpp - src/blkdev.cpp - src/blkdev_cdimage.cpp - src/bsdsocket.cpp - src/calc.cpp - src/cd32_fmv.cpp - src/cd32_fmv_genlock.cpp - src/cdrom.cpp - src/cdtv.cpp - src/cdtvcr.cpp - src/cfgfile.cpp - src/cia.cpp - src/consolehook.cpp - src/crc32.cpp - src/custom.cpp - src/def_icons.cpp - src/devices.cpp - src/disk.cpp - src/diskutil.cpp - src/dlopen.cpp - src/dongle.cpp - src/drawing.cpp - src/driveclick.cpp - src/events.cpp - src/expansion.cpp - src/fdi2raw.cpp - src/filesys.cpp - src/flashrom.cpp - src/fpp.cpp - src/fsdb.cpp - src/fsusage.cpp - src/gayle.cpp - src/gfxboard.cpp - src/gfxutil.cpp - src/hardfile.cpp - src/hrtmon.rom.cpp - src/ide.cpp - src/ini.cpp - src/inputdevice.cpp - src/inputrecord.cpp - src/isofs.cpp - src/keybuf.cpp - src/main.cpp - src/memory.cpp - src/native2amiga.cpp - src/parser.cpp - src/rommgr.cpp - src/rtc.cpp - src/sampler.cpp - src/savestate.cpp - src/scp.cpp - src/scsi.cpp - src/scsiemul.cpp - src/scsitape.cpp - src/serial_win32.cpp - src/statusline.cpp - src/tabletlibrary.cpp - src/tinyxml2.cpp - src/traps.cpp - src/uaeexe.cpp - src/uaelib.cpp - src/uaenative.cpp - src/uaeresource.cpp - src/zfile.cpp - src/zfile_archive.cpp - src/archivers/7z/7zAlloc.c - src/archivers/7z/7zArcIn.c - src/archivers/7z/7zBuf.c - src/archivers/7z/7zBuf2.c - src/archivers/7z/7zCrc.c - src/archivers/7z/7zCrcOpt.c - src/archivers/7z/7zDec.c - src/archivers/7z/7zFile.c - src/archivers/7z/7zStream.c - src/archivers/7z/Aes.c - src/archivers/7z/AesOpt.c - src/archivers/7z/Alloc.c - src/archivers/7z/Bcj2.c - src/archivers/7z/Bra.c - src/archivers/7z/Bra86.c - src/archivers/7z/BraIA64.c - src/archivers/7z/CpuArch.c - src/archivers/7z/Delta.c - src/archivers/7z/LzFind.c - src/archivers/7z/Lzma2Dec.c - src/archivers/7z/Lzma2Enc.c - src/archivers/7z/Lzma86Dec.c - src/archivers/7z/Lzma86Enc.c - src/archivers/7z/LzmaDec.c - src/archivers/7z/LzmaEnc.c - src/archivers/7z/LzmaLib.c - src/archivers/7z/Ppmd7.c - src/archivers/7z/Ppmd7Dec.c - src/archivers/7z/Ppmd7Enc.c - src/archivers/7z/Sha256.c - src/archivers/7z/Sort.c - src/archivers/7z/Xz.c - src/archivers/7z/XzCrc64.c - src/archivers/7z/XzCrc64Opt.c - src/archivers/7z/XzDec.c - src/archivers/7z/XzEnc.c - src/archivers/7z/XzIn.c - src/archivers/chd/avhuff.cpp - src/archivers/chd/bitmap.cpp - src/archivers/chd/cdrom.cpp - src/archivers/chd/chd.cpp - src/archivers/chd/chdcd.cpp - src/archivers/chd/chdcodec.cpp - src/archivers/chd/corealloc.cpp - src/archivers/chd/corefile.cpp - src/archivers/chd/corestr.cpp - src/archivers/chd/flac.cpp - src/archivers/chd/harddisk.cpp - src/archivers/chd/hashing.cpp - src/archivers/chd/huffman.cpp - src/archivers/chd/md5.cpp - src/archivers/chd/osdcore.cpp - src/archivers/chd/osdlib_unix.cpp - src/archivers/chd/osdsync.cpp - src/archivers/chd/palette.cpp - src/archivers/chd/posixdir.cpp - src/archivers/chd/posixfile.cpp - src/archivers/chd/posixptty.cpp - src/archivers/chd/posixsocket.cpp - src/archivers/chd/strconv.cpp - src/archivers/chd/strformat.cpp - src/archivers/chd/unicode.cpp - src/archivers/chd/vecstream.cpp - src/archivers/chd/utf8proc.c - src/archivers/dms/crc_csum.cpp - src/archivers/dms/getbits.cpp - src/archivers/dms/maketbl.cpp - src/archivers/dms/pfile.cpp - src/archivers/dms/tables.cpp - src/archivers/dms/u_deep.cpp - src/archivers/dms/u_heavy.cpp - src/archivers/dms/u_init.cpp - src/archivers/dms/u_medium.cpp - src/archivers/dms/u_quick.cpp - src/archivers/dms/u_rle.cpp - src/archivers/lha/crcio.cpp - src/archivers/lha/dhuf.cpp - src/archivers/lha/header.cpp - src/archivers/lha/huf.cpp - src/archivers/lha/larc.cpp - src/archivers/lha/lhamaketbl.cpp - src/archivers/lha/lharc.cpp - src/archivers/lha/shuf.cpp - src/archivers/lha/shuf.cpp - src/archivers/lha/slide.cpp - src/archivers/lha/uae_lha.cpp - src/archivers/lha/util.cpp - src/archivers/lzx/unlzx.cpp - src/archivers/mp2/kjmp2.cpp - src/archivers/wrp/warp.cpp - src/archivers/zip/unzip.cpp - src/caps/caps_amiberry.cpp - src/machdep/support.cpp - src/floppybridge/ArduinoFloppyBridge.cpp - src/floppybridge/ArduinoInterface.cpp - src/floppybridge/CommonBridgeTemplate.cpp - src/floppybridge/floppybridge_lib.cpp - src/floppybridge/ftdi.cpp - src/floppybridge/GreaseWeazleBridge.cpp - src/floppybridge/GreaseWeazleInterface.cpp - src/floppybridge/pll.cpp - src/floppybridge/RotationExtractor.cpp - src/floppybridge/SerialIO.cpp - src/floppybridge/SuperCardProBridge.cpp - src/floppybridge/SuperCardProInterface.cpp - src/floppybridge/FloppyBridge.cpp - src/osdep/ahi_v1.cpp - src/osdep/bsdsocket_host.cpp - src/osdep/cda_play.cpp - src/osdep/charset.cpp - src/osdep/fsdb_host.cpp - src/osdep/clipboard.cpp - src/osdep/amiberry_hardfile.cpp - src/osdep/keyboard.cpp - src/osdep/mp3decoder.cpp - src/osdep/picasso96.cpp - src/osdep/writelog.cpp - src/osdep/amiberry.cpp - src/osdep/ahi_v2.cpp - src/osdep/amiberry_filesys.cpp - src/osdep/amiberry_input.cpp - src/osdep/amiberry_gfx.cpp - src/osdep/amiberry_gui.cpp - src/osdep/amiberry_mem.cpp - src/osdep/amiberry_whdbooter.cpp - src/osdep/sigsegv_handler.cpp - src/osdep/retroarch.cpp - src/sounddep/sound.cpp - src/threaddep/threading.cpp - src/osdep/gui/ControllerMap.cpp - src/osdep/gui/SelectorEntry.cpp - src/osdep/gui/ShowHelp.cpp - src/osdep/gui/ShowMessage.cpp - src/osdep/gui/ShowDiskInfo.cpp - src/osdep/gui/SelectFolder.cpp - src/osdep/gui/SelectFile.cpp - src/osdep/gui/CreateFilesysHardfile.cpp - src/osdep/gui/EditFilesysVirtual.cpp - src/osdep/gui/EditFilesysHardfile.cpp - src/osdep/gui/EditFilesysHardDrive.cpp - src/osdep/gui/PanelAbout.cpp - src/osdep/gui/PanelPaths.cpp - src/osdep/gui/PanelQuickstart.cpp - src/osdep/gui/PanelConfig.cpp - src/osdep/gui/PanelCPU.cpp - src/osdep/gui/PanelChipset.cpp - src/osdep/gui/PanelCustom.cpp - src/osdep/gui/PanelROM.cpp - src/osdep/gui/PanelRAM.cpp - src/osdep/gui/PanelFloppy.cpp - src/osdep/gui/PanelExpansions.cpp - src/osdep/gui/PanelHD.cpp - src/osdep/gui/PanelRTG.cpp - src/osdep/gui/PanelHWInfo.cpp - src/osdep/gui/PanelInput.cpp - src/osdep/gui/PanelIOPorts.cpp - src/osdep/gui/PanelDisplay.cpp - src/osdep/gui/PanelSound.cpp - src/osdep/gui/PanelDiskSwapper.cpp - src/osdep/gui/PanelMisc.cpp - src/osdep/gui/PanelPrio.cpp - src/osdep/gui/PanelSavestate.cpp - src/osdep/gui/main_window.cpp - src/osdep/gui/Navigation.cpp - src/osdep/aarch64_helper.s - src/newcpu.cpp - src/newcpu_common.cpp - src/readcpu.cpp - src/cpudefs.cpp - src/cpustbl.cpp - src/cpuemu_0.cpp - src/cpuemu_4.cpp - src/cpuemu_11.cpp - src/cpuemu_13.cpp - src/cpuemu_40.cpp - src/cpuemu_44.cpp - src/jit/compemu.cpp - src/jit/compstbl.cpp - src/jit/compemu_fpp.cpp - src/jit/compemu_support.cpp - ) +# Needed so that cmake uses our find modules. +list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include_directories( - src - src/osdep - src/include - src/threaddep - src/archivers + src + src/osdep + src/include + src/threaddep + src/archivers ) -add_definitions(-DAMIBERRY -DCPU_AARCH64) +add_subdirectory(external/libguisan) +add_definitions(-DAMIBERRY) -find_package(SDL2 CONFIG REQUIRED) -target_link_libraries(amiberry PRIVATE SDL2::SDL2 SDL2::SDL2main) -find_package(sdl2-image CONFIG REQUIRED) -target_link_libraries(amiberry PRIVATE SDL2::SDL2_image) -find_package(sdl2-ttf CONFIG REQUIRED) -target_link_libraries(amiberry PRIVATE SDL2::SDL2_ttf) +add_executable(${PROJECT_NAME} + src/akiko.cpp + src/ar.cpp + src/audio.cpp + src/autoconf.cpp + src/blitfunc.cpp + src/blittable.cpp + src/blitter.cpp + src/blkdev.cpp + src/blkdev_cdimage.cpp + src/bsdsocket.cpp + src/calc.cpp + src/cd32_fmv.cpp + src/cd32_fmv_genlock.cpp + src/cdrom.cpp + src/cdtv.cpp + src/cdtvcr.cpp + src/cfgfile.cpp + src/cia.cpp + src/consolehook.cpp + src/crc32.cpp + src/custom.cpp + src/def_icons.cpp + src/devices.cpp + src/disk.cpp + src/diskutil.cpp + src/dlopen.cpp + src/dongle.cpp + src/drawing.cpp + src/driveclick.cpp + src/events.cpp + src/expansion.cpp + src/fdi2raw.cpp + src/filesys.cpp + src/flashrom.cpp + src/fpp.cpp + src/fpp_native.cpp + src/fsdb.cpp + src/fsusage.cpp + src/gayle.cpp + src/gfxboard.cpp + src/gfxutil.cpp + src/hardfile.cpp + src/hrtmon.rom.cpp + src/ide.cpp + src/ini.cpp + src/inputdevice.cpp + src/inputrecord.cpp + src/isofs.cpp + src/keybuf.cpp + src/main.cpp + src/memory.cpp + src/native2amiga.cpp + src/parser.cpp + src/rommgr.cpp + src/rtc.cpp + src/sampler.cpp + src/savestate.cpp + src/scp.cpp + src/scsi.cpp + src/scsiemul.cpp + src/scsitape.cpp + src/serial_win32.cpp + src/statusline.cpp + src/tabletlibrary.cpp + src/tinyxml2.cpp + src/traps.cpp + src/uaeexe.cpp + src/uaelib.cpp + src/uaenative.cpp + src/uaeresource.cpp + src/uaeserial.cpp + src/vm.cpp + src/zfile.cpp + src/zfile_archive.cpp + src/archivers/7z/7zAlloc.c + src/archivers/7z/7zArcIn.c + src/archivers/7z/7zBuf.c + src/archivers/7z/7zBuf2.c + src/archivers/7z/7zCrc.c + src/archivers/7z/7zCrcOpt.c + src/archivers/7z/7zDec.c + src/archivers/7z/7zFile.c + src/archivers/7z/7zStream.c + src/archivers/7z/Aes.c + src/archivers/7z/AesOpt.c + src/archivers/7z/Alloc.c + src/archivers/7z/Bcj2.c + src/archivers/7z/Bra.c + src/archivers/7z/Bra86.c + src/archivers/7z/BraIA64.c + src/archivers/7z/CpuArch.c + src/archivers/7z/Delta.c + src/archivers/7z/LzFind.c + src/archivers/7z/Lzma2Dec.c + src/archivers/7z/Lzma2Enc.c + src/archivers/7z/Lzma86Dec.c + src/archivers/7z/Lzma86Enc.c + src/archivers/7z/LzmaDec.c + src/archivers/7z/LzmaEnc.c + src/archivers/7z/LzmaLib.c + src/archivers/7z/Ppmd7.c + src/archivers/7z/Ppmd7Dec.c + src/archivers/7z/Ppmd7Enc.c + src/archivers/7z/Sha256.c + src/archivers/7z/Sort.c + src/archivers/7z/Xz.c + src/archivers/7z/XzCrc64.c + src/archivers/7z/XzCrc64Opt.c + src/archivers/7z/XzDec.c + src/archivers/7z/XzEnc.c + src/archivers/7z/XzIn.c + src/archivers/chd/avhuff.cpp + src/archivers/chd/bitmap.cpp + src/archivers/chd/cdrom.cpp + src/archivers/chd/chd.cpp + src/archivers/chd/chdcd.cpp + src/archivers/chd/chdcodec.cpp + src/archivers/chd/corealloc.cpp + src/archivers/chd/corefile.cpp + src/archivers/chd/corestr.cpp + src/archivers/chd/flac.cpp + src/archivers/chd/harddisk.cpp + src/archivers/chd/hashing.cpp + src/archivers/chd/huffman.cpp + src/archivers/chd/md5.cpp + src/archivers/chd/osdcore.cpp + src/archivers/chd/osdlib_unix.cpp + src/archivers/chd/osdsync.cpp + src/archivers/chd/palette.cpp + src/archivers/chd/posixdir.cpp + src/archivers/chd/posixfile.cpp + src/archivers/chd/posixptty.cpp + src/archivers/chd/posixsocket.cpp + src/archivers/chd/strconv.cpp + src/archivers/chd/strformat.cpp + src/archivers/chd/unicode.cpp + src/archivers/chd/vecstream.cpp + src/archivers/chd/utf8proc.c + src/archivers/dms/crc_csum.cpp + src/archivers/dms/getbits.cpp + src/archivers/dms/maketbl.cpp + src/archivers/dms/pfile.cpp + src/archivers/dms/tables.cpp + src/archivers/dms/u_deep.cpp + src/archivers/dms/u_heavy.cpp + src/archivers/dms/u_init.cpp + src/archivers/dms/u_medium.cpp + src/archivers/dms/u_quick.cpp + src/archivers/dms/u_rle.cpp + src/archivers/lha/crcio.cpp + src/archivers/lha/dhuf.cpp + src/archivers/lha/header.cpp + src/archivers/lha/huf.cpp + src/archivers/lha/larc.cpp + src/archivers/lha/lhamaketbl.cpp + src/archivers/lha/lharc.cpp + src/archivers/lha/shuf.cpp + src/archivers/lha/shuf.cpp + src/archivers/lha/slide.cpp + src/archivers/lha/uae_lha.cpp + src/archivers/lha/util.cpp + src/archivers/lzx/unlzx.cpp + src/archivers/mp2/kjmp2.cpp + src/archivers/wrp/warp.cpp + src/archivers/zip/unzip.cpp + src/caps/caps_amiberry.cpp + src/machdep/m68k.cpp + src/machdep/support.cpp + src/floppybridge/ArduinoFloppyBridge.cpp + src/floppybridge/ArduinoInterface.cpp + src/floppybridge/CommonBridgeTemplate.cpp + src/floppybridge/floppybridge_lib.cpp + src/floppybridge/ftdi.cpp + src/floppybridge/GreaseWeazleBridge.cpp + src/floppybridge/GreaseWeazleInterface.cpp + src/floppybridge/pll.cpp + src/floppybridge/RotationExtractor.cpp + src/floppybridge/SerialIO.cpp + src/floppybridge/SuperCardProBridge.cpp + src/floppybridge/SuperCardProInterface.cpp + src/floppybridge/FloppyBridge.cpp + src/osdep/ahi_v1.cpp + src/osdep/bsdsocket_host.cpp + src/osdep/cda_play.cpp + src/osdep/charset.cpp + src/osdep/fsdb_host.cpp + src/osdep/clipboard.cpp + src/osdep/amiberry_hardfile.cpp + src/osdep/keyboard.cpp + src/osdep/mp3decoder.cpp + src/osdep/picasso96.cpp + src/osdep/writelog.cpp + src/osdep/amiberry.cpp + src/osdep/ahi_v2.cpp + src/osdep/amiberry_filesys.cpp + src/osdep/amiberry_input.cpp + src/osdep/amiberry_gfx.cpp + src/osdep/amiberry_gui.cpp + src/osdep/amiberry_mem.cpp + src/osdep/amiberry_whdbooter.cpp + src/osdep/sigsegv_handler.cpp + src/osdep/retroarch.cpp + src/sounddep/sound.cpp + src/threaddep/threading.cpp + src/osdep/gui/ControllerMap.cpp + src/osdep/gui/SelectorEntry.cpp + src/osdep/gui/ShowHelp.cpp + src/osdep/gui/ShowMessage.cpp + src/osdep/gui/ShowDiskInfo.cpp + src/osdep/gui/SelectFolder.cpp + src/osdep/gui/SelectFile.cpp + src/osdep/gui/CreateFilesysHardfile.cpp + src/osdep/gui/EditFilesysVirtual.cpp + src/osdep/gui/EditFilesysHardfile.cpp + src/osdep/gui/EditFilesysHardDrive.cpp + src/osdep/gui/PanelAbout.cpp + src/osdep/gui/PanelPaths.cpp + src/osdep/gui/PanelQuickstart.cpp + src/osdep/gui/PanelConfig.cpp + src/osdep/gui/PanelCPU.cpp + src/osdep/gui/PanelChipset.cpp + src/osdep/gui/PanelCustom.cpp + src/osdep/gui/PanelROM.cpp + src/osdep/gui/PanelRAM.cpp + src/osdep/gui/PanelFloppy.cpp + src/osdep/gui/PanelExpansions.cpp + src/osdep/gui/PanelHD.cpp + src/osdep/gui/PanelRTG.cpp + src/osdep/gui/PanelHWInfo.cpp + src/osdep/gui/PanelInput.cpp + src/osdep/gui/PanelIOPorts.cpp + src/osdep/gui/PanelDisplay.cpp + src/osdep/gui/PanelSound.cpp + src/osdep/gui/PanelDiskSwapper.cpp + src/osdep/gui/PanelMisc.cpp + src/osdep/gui/PanelPrio.cpp + src/osdep/gui/PanelSavestate.cpp + src/osdep/gui/main_window.cpp + src/osdep/gui/Navigation.cpp + src/osdep/aarch64_helper.s + src/newcpu.cpp + src/newcpu_common.cpp + src/readcpu.cpp + src/cpudefs.cpp + src/cpustbl.cpp + src/cpummu.cpp + src/cpummu30.cpp + src/cpuemu_0.cpp + src/cpuemu_11.cpp + src/cpuemu_13.cpp + src/cpuemu_20.cpp + src/cpuemu_21.cpp + src/cpuemu_22.cpp + src/cpuemu_23.cpp + src/cpuemu_24.cpp + src/cpuemu_31.cpp + src/cpuemu_32.cpp + src/cpuemu_33.cpp + src/cpuemu_34.cpp + src/cpuemu_35.cpp + src/cpuemu_40.cpp + src/cpuemu_50.cpp + src/jit/compemu.cpp + src/jit/compstbl.cpp + src/jit/compemu_fpp.cpp + src/jit/compemu_support.cpp + ) -target_link_libraries(amiberry PRIVATE guisan) -target_include_directories(amiberry PRIVATE ./external/libguisan/include) +INCLUDE(FindPkgConfig) + +PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) +PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) +PKG_SEARCH_MODULE(SDL2TTF REQUIRED SDL2_ttf) + +find_package(FLAC REQUIRED) +find_package(mpg123 REQUIRED) +find_package(PNG REQUIRED) + +INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} PRIVATE ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES} FLAC::FLAC PNG::PNG png_static) + +target_include_directories(${PROJECT_NAME} PRIVATE ./external/libguisan/include) +target_link_libraries(${PROJECT_NAME} PRIVATE guisan) -find_package(flac CONFIG REQUIRED) -target_link_libraries(amiberry PRIVATE FLAC::FLAC FLAC::FLAC++) -find_package(libpng CONFIG REQUIRED) -target_link_libraries(amiberry PRIVATE png_static) \ No newline at end of file diff --git a/CMakeSettings.json b/CMakeSettings.json new file mode 100644 index 00000000..037e88e5 --- /dev/null +++ b/CMakeSettings.json @@ -0,0 +1,32 @@ +{ + "configurations": [ + { + "name": "WSL-GCC-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeExecutable": "cmake", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "linux_x64" ], + "wslPath": "${defaultWSLPath}", + "variables": [] + }, + { + "name": "WSL-GCC-Release", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeExecutable": "cmake", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "", + "inheritEnvironments": [ "linux_x64" ], + "wslPath": "${defaultWSLPath}", + "variables": [] + } + ] +} \ No newline at end of file diff --git a/cmake/FindFLAC.cmake b/cmake/FindFLAC.cmake new file mode 100644 index 00000000..b96e468f --- /dev/null +++ b/cmake/FindFLAC.cmake @@ -0,0 +1,65 @@ +# - Find FLAC +# Find the native FLAC includes and libraries +# +# FLAC_INCLUDE_DIRS - where to find FLAC headers. +# FLAC_LIBRARIES - List of libraries when using libFLAC. +# FLAC_FOUND - True if libFLAC found. +# FLAC_DEFINITIONS - FLAC compile definitons + +if (FLAC_INCLUDE_DIR) + # Already in cache, be silent + set (FLAC_FIND_QUIETLY TRUE) +endif () + +find_package (Ogg QUIET) + +find_package (PkgConfig QUIET) +pkg_check_modules(PC_FLAC QUIET flac) + +set(FLAC_VERSION ${PC_FLAC_VERSION}) + +find_path (FLAC_INCLUDE_DIR FLAC/stream_decoder.h + HINTS + ${PC_FLAC_INCLUDEDIR} + ${PC_FLAC_INCLUDE_DIRS} + ${FLAC_ROOT} + ) + +# MSVC built libraries can name them *_static, which is good as it +# distinguishes import libraries from static libraries with the same extension. +find_library (FLAC_LIBRARY + NAMES + FLAC + libFLAC + libFLAC_dynamic + libFLAC_static + HINTS + ${PC_FLAC_LIBDIR} + ${PC_FLAC_LIBRARY_DIRS} + ${FLAC_ROOT} + ) + +# Handle the QUIETLY and REQUIRED arguments and set FLAC_FOUND to TRUE if +# all listed variables are TRUE. +include (FindPackageHandleStandardArgs) +find_package_handle_standard_args (FLAC + REQUIRED_VARS + FLAC_LIBRARY + FLAC_INCLUDE_DIR + VERSION_VAR + FLAC_VERSION + ) + +if (FLAC_FOUND) + set (FLAC_INCLUDE_DIRS ${FLAC_INCLUDE_DIR}) + set (FLAC_LIBRARIES ${FLAC_LIBRARY} ${OGG_LIBRARIES}) + if (NOT TARGET FLAC::FLAC) + add_library(FLAC::FLAC UNKNOWN IMPORTED) + set_target_properties(FLAC::FLAC PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${FLAC_INCLUDE_DIR}" + IMPORTED_LOCATION "${FLAC_LIBRARY}" + ) + endif () +endif () + +mark_as_advanced(FLAC_INCLUDE_DIR FLAC_LIBRARY) \ No newline at end of file diff --git a/cmake/FindMpg123.cmake b/cmake/FindMpg123.cmake new file mode 100644 index 00000000..046f3f58 --- /dev/null +++ b/cmake/FindMpg123.cmake @@ -0,0 +1,64 @@ +# - Find mpg123 +# Find the native mpg123 includes and libraries +# +# MPG123_INCLUDE_DIRS - where to find mpg123.h, etc. +# MPG123_LIBRARIES - List of libraries when using mpg123. +# MPG123_FOUND - True if Mpg123 found. + +if (MPG123_INCLUDE_DIR) + # Already in cache, be silent + set(MPG123_FIND_QUIETLY TRUE) +endif () + +find_package (PkgConfig QUIET) +pkg_check_modules(PC_MPG123 QUIET libmpg123>=1.25.10) + +set (MPG123_VERSION ${PC_MPG123_VERSION}) + +find_path (MPG123_INCLUDE_DIR mpg123.h + HINTS + ${PC_MPG123_INCLUDEDIR} + ${PC_MPG123_INCLUDE_DIRS} + ${MPG123_ROOT} + ) + +# MSVC built mpg123 may be named mpg123_static. +# The provided project files name the library with the lib prefix. + +find_library (MPG123_LIBRARY + NAMES + mpg123 + mpg123_static + libmpg123 + libmpg123_static + HINTS + ${PC_MPG123_LIBDIR} + ${PC_MPG123_LIBRARY_DIRS} + ${MPG123_ROOT} + ) + +# Handle the QUIETLY and REQUIRED arguments and set MPG123_FOUND +# to TRUE if all listed variables are TRUE. +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args (mpg123 + REQUIRED_VARS + MPG123_LIBRARY + MPG123_INCLUDE_DIR + VERSION_VAR + MPG123_VERSION + ) + +if (MPG123_FOUND) + set (MPG123_LIBRARIES ${MPG123_LIBRARY}) + set (MPG123_INCLUDE_DIRS ${MPG123_INCLUDE_DIR}) + + if (NOT TARGET MPG123::libmpg123) + add_library (MPG123::libmpg123 UNKNOWN IMPORTED) + set_target_properties (MPG123::libmpg123 PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${MPG123_INCLUDE_DIRS}" + IMPORTED_LOCATION "${MPG123_LIBRARIES}" + ) + endif () +endif () + +mark_as_advanced(MPG123_INCLUDE_DIR MPG123_LIBRARY) \ No newline at end of file diff --git a/external/libguisan/CMakeLists.txt b/external/libguisan/CMakeLists.txt index b140e392..6f288951 100644 --- a/external/libguisan/CMakeLists.txt +++ b/external/libguisan/CMakeLists.txt @@ -55,11 +55,12 @@ add_library(guisan STATIC src/widgets/window.cpp) target_include_directories(guisan PRIVATE ./include) -find_package(SDL2 CONFIG REQUIRED) -target_link_libraries(guisan PRIVATE PRIVATE SDL2::SDL2 SDL2::SDL2main) -find_package(sdl2-image CONFIG REQUIRED) -target_link_libraries(guisan PRIVATE SDL2::SDL2_image) -find_package(sdl2-ttf CONFIG REQUIRED) -target_link_libraries(guisan PRIVATE SDL2::SDL2_ttf) +INCLUDE(FindPkgConfig) + +PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2) +PKG_SEARCH_MODULE(SDL2IMAGE REQUIRED SDL2_image>=2.0.0) + +INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIRS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARIES}) install(TARGETS guisan DESTINATION ./lib) \ No newline at end of file