2021-05-11 16:08:08 -04:00
cmake_minimum_required ( VERSION 3.0 )
2022-01-31 16:33:37 -05:00
if ( APPLE )
set ( MACOSX_DEPLOYMENT_TARGET 10.9 )
endif ( )
2021-05-13 04:22:57 -04:00
project ( furnace )
2021-05-11 16:08:08 -04:00
2022-02-08 02:04:23 -05:00
if ( APPLE )
enable_language ( OBJC )
endif ( )
2021-12-09 03:37:31 -05:00
set ( CMAKE_CXX_STANDARD 14 )
2022-05-06 06:40:33 -04:00
set ( CMAKE_CXX_EXTENSIONS OFF )
2021-05-11 16:08:08 -04:00
2021-12-24 18:12:36 -05:00
set ( CMAKE_PROJECT_VERSION_MAJOR 0 )
2022-04-01 06:24:35 -04:00
set ( CMAKE_PROJECT_VERSION_MINOR 6 )
set ( CMAKE_PROJECT_VERSION_PATCH 0 )
2021-12-24 18:12:36 -05:00
2022-05-08 16:59:42 -04:00
set ( BUILD_GUI_DEFAULT ON )
2022-05-22 20:01:50 -04:00
set ( USE_SDL2_DEFAULT ON )
set ( USE_SNDFILE_DEFAULT ON )
2022-05-08 16:59:42 -04:00
set ( SYSTEM_SDL2_DEFAULT OFF )
2022-07-14 23:15:14 -04:00
include ( CheckIncludeFile )
2022-08-19 01:23:45 -04:00
include ( TestBigEndian )
2022-07-14 23:15:14 -04:00
2021-12-11 02:10:09 -05:00
if ( ANDROID )
2022-02-21 13:47:49 -05:00
set ( USE_RTMIDI_DEFAULT OFF )
2022-05-24 14:06:29 -04:00
set ( USE_BACKWARD_DEFAULT OFF )
2022-05-27 16:51:57 -04:00
find_library ( TERMUX rt )
if ( TERMUX )
message ( STATUS "Termux detected" )
endif ( )
2021-12-11 02:10:09 -05:00
else ( )
2022-02-21 13:47:49 -05:00
set ( USE_RTMIDI_DEFAULT ON )
2022-07-23 23:19:07 -04:00
if ( WIN32 OR APPLE )
2022-07-14 23:15:14 -04:00
set ( USE_BACKWARD_DEFAULT ON )
else ( )
2022-07-23 23:19:07 -04:00
CHECK_INCLUDE_FILE ( execinfo.h EXECINFO_FOUND )
if ( EXECINFO_FOUND )
2022-07-14 23:15:14 -04:00
set ( USE_BACKWARD_DEFAULT ON )
else ( )
set ( USE_BACKWARD_DEFAULT OFF )
endif ( )
endif ( )
2021-12-11 02:10:09 -05:00
endif ( )
2022-02-01 15:50:25 -05:00
find_package ( PkgConfig )
2022-05-08 16:59:42 -04:00
if ( PKG_CONFIG_FOUND AND NOT ANDROID )
2022-02-01 15:50:25 -05:00
pkg_check_modules ( JACK jack )
set ( WITH_JACK_DEFAULT ${ JACK_FOUND } )
else ( )
set ( WITH_JACK_DEFAULT OFF )
endif ( )
2021-12-11 16:44:02 -05:00
2022-02-01 15:50:25 -05:00
option ( BUILD_GUI "Build the tracker (disable to build only a headless player)" ${ BUILD_GUI_DEFAULT } )
2022-05-22 20:01:50 -04:00
option ( USE_RTMIDI "Build with MIDI support using RtMidi." ${ USE_RTMIDI_DEFAULT } )
option ( USE_SDL2 "Build with SDL2. Required to build with GUI." ${ USE_SDL2_DEFAULT } )
option ( USE_SNDFILE "Build with libsndfile. Required in order to work with audio files." ${ USE_SNDFILE_DEFAULT } )
2022-05-24 14:06:29 -04:00
option ( USE_BACKWARD "Use backward-cpp to print a backtrace on crash/abort." ${ USE_BACKWARD_DEFAULT } )
2022-02-01 15:50:25 -05:00
option ( WITH_JACK "Whether to build with JACK support. Auto-detects if JACK is available" ${ WITH_JACK_DEFAULT } )
2022-05-31 04:24:29 -04:00
option ( SYSTEM_FFTW "Use a system-installed version of FFTW instead of the vendored one" OFF )
2022-02-01 15:50:25 -05:00
option ( SYSTEM_FMT "Use a system-installed version of fmt instead of the vendored one" OFF )
option ( SYSTEM_LIBSNDFILE "Use a system-installed version of libsndfile instead of the vendored one" OFF )
2022-02-13 15:02:43 -05:00
option ( SYSTEM_RTMIDI "Use a system-installed version of RtMidi instead of the vendored one" OFF )
2022-02-01 15:50:25 -05:00
option ( SYSTEM_ZLIB "Use a system-installed version of zlib instead of the vendored one" OFF )
2022-02-01 16:05:01 -05:00
option ( SYSTEM_SDL2 "Use a system-installed version of SDL2 instead of the vendored one" ${ SYSTEM_SDL2_DEFAULT } )
2022-12-31 18:36:33 -05:00
option ( SUPPORT_XP "Build a Windows XP-compatible binary" OFF )
2022-02-01 15:50:25 -05:00
option ( WARNINGS_ARE_ERRORS "Whether warnings in furnace's C++ code should be treated as errors" OFF )
2022-08-04 18:48:10 -04:00
option ( WITH_DEMOS "Install demo songs" ON )
option ( WITH_INSTRUMENTS "Install instruments" ON )
2023-02-19 17:36:14 -05:00
option ( WITH_WAVETABLES "Install wavetables" ON )
2022-02-01 15:50:25 -05:00
set ( DEPENDENCIES_INCLUDE_DIRS "" )
2022-05-11 17:09:23 -04:00
2022-05-27 16:51:57 -04:00
if ( ANDROID AND NOT TERMUX )
2022-08-19 01:23:45 -04:00
set ( DEPENDENCIES_DEFINES "IS_MOBILE" )
2022-05-11 17:09:23 -04:00
else ( )
2022-08-19 01:23:45 -04:00
set ( DEPENDENCIES_DEFINES "" )
endif ( )
TEST_BIG_ENDIAN ( IS_BIG_ENDIAN )
if ( IS_BIG_ENDIAN )
list ( APPEND DEPENDENCIES_DEFINES "TA_BIG_ENDIAN" )
2022-05-11 17:09:23 -04:00
endif ( )
2022-02-01 15:50:25 -05:00
set ( DEPENDENCIES_COMPILE_OPTIONS "" )
set ( DEPENDENCIES_LIBRARIES "" )
set ( DEPENDENCIES_LIBRARY_DIRS "" )
set ( DEPENDENCIES_LINK_OPTIONS "" )
set ( DEPENDENCIES_LEGACY_LDFLAGS "" )
2022-02-01 16:05:01 -05:00
if ( BUILD_GUI )
set ( SYSTEM_SDL_MIN_VER 2.0.18 )
else ( )
set ( SYSTEM_SDL_MIN_VER 2.0.0 )
endif ( )
2022-02-13 17:02:49 -05:00
list ( APPEND DEPENDENCIES_INCLUDE_DIRS "extern/SAASound/include" )
2022-09-16 10:48:06 -04:00
list ( APPEND DEPENDENCIES_INCLUDE_DIRS "extern/vgsound_emu-modified" )
2022-02-13 17:02:49 -05:00
2022-02-01 15:50:25 -05:00
find_package ( Threads REQUIRED )
list ( APPEND DEPENDENCIES_LIBRARIES ${ CMAKE_THREAD_LIBS_INIT } )
2022-05-31 04:24:29 -04:00
if ( SYSTEM_FFTW )
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( FFTW REQUIRED fftw3>=3.3 )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ FFTW_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ FFTW_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ FFTW_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ FFTW_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ FFTW_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ FFTW_LDFLAGS } )
message ( STATUS "Using system-installed FFTW" )
else ( )
2022-05-31 13:42:47 -04:00
if ( WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
set ( WITH_OUR_MALLOC ON CACHE BOOL "aaa" FORCE )
endif ( )
2022-06-25 17:08:41 -04:00
set ( BUILD_TESTS OFF CACHE BOOL "come on" FORCE )
2022-05-31 04:24:29 -04:00
add_subdirectory ( extern/fftw EXCLUDE_FROM_ALL )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS extern/fftw/api )
list ( APPEND DEPENDENCIES_LIBRARIES fftw3 )
message ( STATUS "Using vendored FFTW" )
endif ( )
2022-02-01 15:50:25 -05:00
if ( SYSTEM_FMT )
if ( PKG_CONFIG_FOUND )
2022-04-11 03:05:58 -04:00
pkg_check_modules ( FMT fmt>=7.1.0 )
2022-02-01 15:50:25 -05:00
if ( FMT_FOUND )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ FMT_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ FMT_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ FMT_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ FMT_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ FMT_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ FMT_LDFLAGS } )
endif ( )
endif ( )
if ( NOT FMT_FOUND )
find_package ( fmt REQUIRED )
list ( APPEND DEPENDENCIES_LIBRARIES fmt::fmt )
endif ( )
message ( STATUS "Using system-installed fmt" )
else ( )
2022-01-18 01:00:08 -05:00
add_subdirectory ( extern/fmt EXCLUDE_FROM_ALL )
2022-02-01 15:50:25 -05:00
list ( APPEND DEPENDENCIES_INCLUDE_DIRS extern/fmt/include )
list ( APPEND DEPENDENCIES_LIBRARIES fmt )
message ( STATUS "Using vendored fmt" )
2022-01-18 00:45:17 -05:00
endif ( )
2021-12-30 17:31:08 -05:00
2022-05-22 20:01:50 -04:00
if ( USE_SNDFILE )
list ( APPEND DEPENDENCIES_DEFINES HAVE_SNDFILE )
if ( SYSTEM_LIBSNDFILE )
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( LIBSNDFILE REQUIRED sndfile )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ LIBSNDFILE_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ LIBSNDFILE_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ LIBSNDFILE_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ LIBSNDFILE_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ LIBSNDFILE_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ LIBSNDFILE_LDFLAGS } )
message ( STATUS "Using system-installed libsndfile" )
else ( )
set ( BUILD_TESTING OFF CACHE BOOL "aaaaaa" FORCE )
set ( BUILD_PROGRAMS OFF CACHE BOOL "aaa" FORCE )
set ( BUILD_EXAMPLES OFF CACHE BOOL "a" FORCE )
set ( ENABLE_EXTERNAL_LIBS OFF CACHE BOOL "come on" FORCE )
set ( ENABLE_MPEG OFF CACHE BOOL "come on" FORCE )
add_subdirectory ( extern/libsndfile EXCLUDE_FROM_ALL )
list ( APPEND DEPENDENCIES_LIBRARIES sndfile )
message ( STATUS "Using vendored libsndfile" )
endif ( )
2022-02-01 15:50:25 -05:00
else ( )
2022-05-22 20:01:50 -04:00
message ( STATUS "Not using libsndfile" )
2022-02-01 15:50:25 -05:00
endif ( )
2021-12-07 12:21:23 -05:00
2022-02-21 13:47:49 -05:00
if ( USE_RTMIDI )
if ( SYSTEM_RTMIDI )
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( RTMIDI REQUIRED rtmidi )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ RTMIDI_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ RTMIDI_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ RTMIDI_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ RTMIDI_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ RTMIDI_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ RTMIDI_LDFLAGS } )
message ( STATUS "Using system-installed RtMidi" )
else ( )
add_subdirectory ( extern/rtmidi EXCLUDE_FROM_ALL )
list ( APPEND DEPENDENCIES_LIBRARIES rtmidi )
message ( STATUS "Using vendored RtMidi" )
endif ( )
2022-02-13 15:02:43 -05:00
endif ( )
2022-02-01 15:50:25 -05:00
if ( SYSTEM_ZLIB )
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( ZLIB REQUIRED zlib )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ ZLIB_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ ZLIB_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ ZLIB_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ ZLIB_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ ZLIB_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ ZLIB_LDFLAGS } )
message ( STATUS "Using system-installed zlib" )
2022-01-18 02:56:12 -05:00
else ( )
2022-02-01 15:50:25 -05:00
set ( BUILD_TESTING OFF CACHE BOOL "aaaaaa" FORCE )
set ( BUILD_PROGRAMS OFF CACHE BOOL "aaa" FORCE )
set ( BUILD_EXAMPLES OFF CACHE BOOL "a" FORCE )
set ( ENABLE_EXTERNAL_LIBS OFF CACHE BOOL "come on" FORCE )
set ( ENABLE_MPEG OFF CACHE BOOL "come on" FORCE )
add_subdirectory ( extern/zlib EXCLUDE_FROM_ALL )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS extern/zlib ${ CMAKE_CURRENT_BINARY_DIR } /extern/zlib )
list ( APPEND DEPENDENCIES_LIBRARIES zlibstatic )
message ( STATUS "Using vendored zlib" )
2022-01-18 00:45:17 -05:00
endif ( )
2022-05-22 20:01:50 -04:00
if ( USE_SDL2 )
if ( SYSTEM_SDL2 )
if ( PKG_CONFIG_FOUND )
pkg_check_modules ( SDL2 sdl2>= ${ SYSTEM_SDL_MIN_VER } )
if ( SDL2_FOUND )
list ( APPEND DEPENDENCIES_DEFINES HAVE_SDL2 )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ SDL2_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ SDL2_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ SDL2_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ SDL2_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ SDL2_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ SDL2_LDFLAGS } )
endif ( )
2022-02-01 15:50:25 -05:00
endif ( )
2022-05-22 20:01:50 -04:00
if ( NOT SDL2_FOUND )
find_package ( SDL2 ${ SYSTEM_SDL_MIN_VER } REQUIRED )
list ( APPEND DEPENDENCIES_DEFINES HAVE_SDL2 )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ SDL2_INCLUDE_DIR } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ SDL2_LIBRARY } )
endif ( )
message ( STATUS "Using system-installed SDL2" )
2022-05-08 16:59:42 -04:00
else ( )
2022-05-27 16:51:57 -04:00
if ( ANDROID AND NOT TERMUX )
2022-05-22 20:01:50 -04:00
set ( SDL_SHARED ON CACHE BOOL "Force no dynamically-linked SDL" FORCE )
set ( SDL_STATIC OFF CACHE BOOL "Force statically-linked SDL" FORCE )
else ( )
set ( SDL_SHARED OFF CACHE BOOL "Force no dynamically-linked SDL" FORCE )
set ( SDL_STATIC ON CACHE BOOL "Force statically-linked SDL" FORCE )
endif ( )
2022-07-13 17:47:09 -04:00
# https://github.com/libsdl-org/SDL/issues/5535
# disable PipeWire support due to an unfixable bug:
# Looks like their headers have a C90 violation... I imagine they're probably on C99 so not the craziest bug in the world. Definitely file this at the PipeWire repository as well so they know this is out there.
set ( SDL_PIPEWIRE OFF CACHE BOOL "Use Pipewire audio" FORCE )
2022-05-22 20:01:50 -04:00
# https://github.com/libsdl-org/SDL/issues/1481
# On 2014-06-22 17:15:50 +0000, Sam Lantinga wrote:
# If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses.
# This should probably go in a FAQ.
set ( SDL_LIBC ON CACHE BOOL "Tell SDL that we want it to use our C runtime (required for proper static linking)" FORCE )
add_subdirectory ( extern/SDL EXCLUDE_FROM_ALL )
list ( APPEND DEPENDENCIES_DEFINES HAVE_SDL2 )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include )
2022-05-27 16:51:57 -04:00
if ( ANDROID AND NOT TERMUX )
2022-05-22 20:01:50 -04:00
list ( APPEND DEPENDENCIES_LIBRARIES SDL2 )
else ( )
list ( APPEND DEPENDENCIES_LIBRARIES SDL2-static )
endif ( )
# Work around add_subdirectory'd SDL not propagating HAVE_LIBC to MSVC furnace build
if ( MSVC )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS "/DHAVE_LIBC" )
endif ( )
2023-01-14 14:57:03 -05:00
if ( WIN32 )
list ( APPEND DEPENDENCIES_LIBRARIES SDL2main )
endif ( )
2022-05-22 20:01:50 -04:00
message ( STATUS "Using vendored SDL2" )
2022-05-08 16:59:42 -04:00
endif ( )
2022-05-22 20:01:50 -04:00
else ( )
message ( STATUS "Not using SDL2" )
if ( BUILD_GUI )
message ( FATAL_ERROR "SDL2 is required in order to build with GUI! Disable BUILD_GUI otherwise." )
2022-04-09 08:33:13 -04:00
endif ( )
2021-05-11 16:08:08 -04:00
endif ( )
2022-02-01 15:50:25 -05:00
set ( AUDIO_SOURCES
s r c / a u d i o / a b s t r a c t . c p p
2022-03-28 04:46:50 -04:00
s r c / a u d i o / m i d i . c p p
2022-02-01 15:50:25 -05:00
)
2022-05-22 20:01:50 -04:00
if ( USE_SDL2 )
2022-06-23 17:25:51 -04:00
list ( APPEND AUDIO_SOURCES src/audio/sdlAudio.cpp )
2022-05-22 20:01:50 -04:00
endif ( )
if ( WITH_JACK )
2022-02-01 15:50:25 -05:00
find_package ( PkgConfig REQUIRED )
pkg_check_modules ( JACK REQUIRED jack )
2021-05-11 16:08:08 -04:00
list ( APPEND AUDIO_SOURCES src/audio/jack.cpp )
2022-02-01 15:50:25 -05:00
list ( APPEND DEPENDENCIES_INCLUDE_DIRS ${ JACK_INCLUDE_DIRS } )
list ( APPEND DEPENDENCIES_DEFINES HAVE_JACK )
list ( APPEND DEPENDENCIES_COMPILE_OPTIONS ${ JACK_CFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LIBRARIES ${ JACK_LIBRARIES } )
list ( APPEND DEPENDENCIES_LIBRARY_DIRS ${ JACK_LIBRARY_DIRS } )
list ( APPEND DEPENDENCIES_LINK_OPTIONS ${ JACK_LDFLAGS_OTHER } )
list ( APPEND DEPENDENCIES_LEGACY_LDFLAGS ${ JACK_LDFLAGS } )
message ( STATUS "Building with JACK support" )
else ( )
message ( STATUS "Building without JACK support" )
2021-05-11 16:08:08 -04:00
endif ( )
2022-02-21 13:47:49 -05:00
if ( USE_RTMIDI )
list ( APPEND AUDIO_SOURCES src/audio/rtmidi.cpp )
message ( STATUS "Building with RtMidi" )
2022-03-28 04:46:50 -04:00
list ( APPEND DEPENDENCIES_DEFINES HAVE_RTMIDI )
2022-02-21 13:47:49 -05:00
else ( )
message ( STATUS "Building without RtMidi" )
endif ( )
2021-05-12 04:58:55 -04:00
set ( ENGINE_SOURCES
s r c / l o g . c p p
2022-11-13 16:25:50 -05:00
s r c / b a s e u t i l s . c p p
2022-01-20 05:04:03 -05:00
s r c / f i l e u t i l s . c p p
2022-01-25 18:46:27 -05:00
s r c / u t f u t i l s . c p p
2021-05-12 18:19:18 -04:00
2022-02-13 17:02:49 -05:00
e x t e r n / S A A S o u n d / s r c / S A A A m p . c p p
e x t e r n / S A A S o u n d / s r c / S A A D e v i c e . c p p
e x t e r n / S A A S o u n d / s r c / S A A E n v . c p p
e x t e r n / S A A S o u n d / s r c / S A A F r e q . c p p
e x t e r n / S A A S o u n d / s r c / S A A I m p l . c p p
e x t e r n / S A A S o u n d / s r c / S A A N o i s e . c p p
e x t e r n / S A A S o u n d / s r c / S A A S n d C . c p p
e x t e r n / S A A S o u n d / s r c / S A A S o u n d . c p p
2022-09-16 10:48:06 -04:00
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / c o r e / v o x / v o x . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / e s 5 5 0 x / e s 5 5 0 x . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / e s 5 5 0 x / e s 5 5 0 x _ a l u . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / e s 5 5 0 x / e s 5 5 0 x _ f i l t e r . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / e s 5 5 0 x / e s 5 5 0 4 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / e s 5 5 0 x / e s 5 5 0 5 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / e s 5 5 0 x / e s 5 5 0 6 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / k 0 0 5 2 8 9 / k 0 0 5 2 8 9 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / k 0 0 7 2 3 2 / k 0 0 7 2 3 2 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / k 0 5 3 2 6 0 / k 0 5 3 2 6 0 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / m s m 6 2 9 5 / m s m 6 2 9 5 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / n 1 6 3 / n 1 6 3 . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / s c c / s c c . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / v r c v i / v r c v i . c p p
e x t e r n / v g s o u n d _ e m u - m o d i f i e d / v g s o u n d _ e m u / s r c / x 1 _ 0 1 0 / x 1 _ 0 1 0 . c p p
2022-02-24 03:57:45 -05:00
e x t e r n / a d p c m / b s _ c o d e c . c
e x t e r n / a d p c m / o k i _ c o d e c . c
e x t e r n / a d p c m / y m a _ c o d e c . c
e x t e r n / a d p c m / y m b _ c o d e c . c
e x t e r n / a d p c m / y m z _ c o d e c . c
2022-12-24 02:29:37 -05:00
e x t e r n / o p n / y m 3 4 3 8 . c
2022-05-26 19:46:20 -04:00
e x t e r n / N u k e d - P S G / y m p s g . c
2021-12-09 01:03:05 -05:00
e x t e r n / o p m / o p m . c
2022-02-25 04:26:01 -05:00
e x t e r n / N u k e d - O P L L / o p l l . c
2022-05-04 19:06:32 -04:00
e x t e r n / o p l / o p l 3 . c
2021-05-14 04:23:40 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s n 7 6 4 9 6 . c p p
2022-01-13 02:52:19 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / a y 8 9 1 0 . c p p
2022-01-14 16:29:27 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s a a 1 0 9 9 . c p p
2022-05-20 03:43:39 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / n a m c o . c p p
2023-02-09 19:11:27 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s e g a p c m . c p p
2021-05-22 22:10:25 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / g b / a p u . c
2021-05-27 06:06:43 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / g b / t i m i n g . c
2021-06-06 15:02:38 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / p c e _ p s g . c p p
2021-12-03 16:04:07 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s / a p u . c
2022-04-03 23:37:16 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s / f d s . c
2022-04-06 01:34:12 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s / m m c 5 . c
2022-03-10 15:51:27 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / v e r a _ p s g . c
s r c / e n g i n e / p l a t f o r m / s o u n d / v e r a _ p c m . c
2021-05-12 18:19:18 -04:00
2022-05-01 23:52:22 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s _ n s f p l a y / n e s _ a p u . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s _ n s f p l a y / n e s _ d m c . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s _ n s f p l a y / n e s _ f d s . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s _ n s f p l a y / n e s _ m m c 5 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s _ n s f p l a y / n e s _ n 1 0 6 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / n e s _ n s f p l a y / n e s _ v r c 6 . c p p
2021-12-04 02:42:22 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / s i d . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / v o i c e . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / e n v e l o p e . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / f i l t e r . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / e x t f i l t . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / p o t . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / v e r s i o n . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 6 5 8 1 _ P S _ . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 6 5 8 1 _ P S T . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 6 5 8 1 _ P _ T . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 6 5 8 1 _ _ S T . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 8 5 8 0 _ P S _ . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 8 5 8 0 _ P S T . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 8 5 8 0 _ P _ T . c c
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 / w a v e 8 5 8 0 _ _ S T . c c
2023-02-14 01:02:35 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / a r r a y . c p p
2022-08-28 16:10:16 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / D a c . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / E n v e l o p e G e n e r a t o r . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / E x t e r n a l F i l t e r . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / F i l t e r 6 5 8 1 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / F i l t e r 8 5 8 0 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / F i l t e r . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / F i l t e r M o d e l C o n f i g 6 5 8 1 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / F i l t e r M o d e l C o n f i g 8 5 8 0 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / F i l t e r M o d e l C o n f i g . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / I n t e g r a t o r 6 5 8 1 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / I n t e g r a t o r 8 5 8 0 . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / O p A m p . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / S I D . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / S p l i n e . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / W a v e f o r m C a l c u l a t o r . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / W a v e f o r m G e n e r a t o r . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / c 6 4 _ f p / r e s a m p l e / S i n c R e s a m p l e r . c p p
2022-09-10 00:21:45 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / t i a / A u d i o C h a n n e l . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / t i a / A u d i o . c p p
2022-01-14 03:37:36 -05:00
2021-12-15 01:23:58 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / y m f m / y m f m _ a d p c m . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / y m f m / y m f m _ o p m . c p p
s r c / e n g i n e / p l a t f o r m / s o u n d / y m f m / y m f m _ o p n . c p p
2022-02-09 23:19:02 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / y m f m / y m f m _ o p z . c p p
2021-12-15 01:23:58 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / y m f m / y m f m _ s s g . c p p
2021-12-09 03:37:31 -05:00
2022-02-20 12:15:15 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / l y n x / M i k e y . c p p
2022-12-19 17:10:45 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / p o k e y / m z p o k e y s n d . c
2022-12-22 16:40:29 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / p o k e y / A l t A S A P . c p p
2022-12-19 17:10:45 -05:00
2022-02-22 04:01:57 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / q s o u n d . c
2022-03-07 07:04:20 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s w a n . c p p
2022-03-06 11:13:47 -05:00
2022-04-27 05:48:56 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s u . c p p
2022-03-22 03:48:48 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / v i c 2 0 s o u n d . c
2022-05-18 02:55:33 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / y m z 2 8 0 b . c p p
2022-10-08 20:37:22 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / v s u . c p p
2022-10-09 16:18:52 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / t 6 w 2 8 / T 6 W 2 8 _ A p u . c p p
2022-05-20 14:45:26 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / r f 5 c 6 8 . c p p
2022-10-01 04:15:40 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / o k i / m s m 5 2 3 2 . c p p
2022-05-22 18:49:41 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / o k i / o k i m 6 2 5 8 . c p p
2022-03-21 03:38:12 -04:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s n e s / S P C _ D S P . c p p
2022-05-22 18:49:41 -04:00
2022-12-15 06:03:54 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / g a 2 0 / i r e m g a 2 0 . c p p
2023-02-11 07:37:11 -05:00
s r c / e n g i n e / p l a t f o r m / s o u n d / s m 8 5 2 1 . c
2022-05-13 15:59:36 -04:00
s r c / e n g i n e / p l a t f o r m / o p l A I n t e r f a c e . c p p
2022-05-13 03:52:43 -04:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 0 8 I n t e r f a c e . c p p
2021-12-09 13:25:02 -05:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 1 0 I n t e r f a c e . c p p
2021-05-12 04:58:55 -04:00
s r c / e n g i n e / b l i p _ b u f . c
2022-09-24 05:27:53 -04:00
s r c / e n g i n e / b r r U t i l s . c
2021-05-12 04:58:55 -04:00
s r c / e n g i n e / s a f e R e a d e r . c p p
2021-12-15 14:15:44 -05:00
s r c / e n g i n e / s a f e W r i t e r . c p p
2022-02-18 13:11:04 -05:00
s r c / e n g i n e / c o n f i g . c p p
2022-09-29 02:24:26 -04:00
s r c / e n g i n e / c o n f i g E n g i n e . c p p
2022-01-08 16:03:32 -05:00
s r c / e n g i n e / d i s p a t c h C o n t a i n e r . c p p
2021-05-12 04:58:55 -04:00
s r c / e n g i n e / e n g i n e . c p p
2022-02-18 12:39:45 -05:00
s r c / e n g i n e / f i l e O p s . c p p
2022-04-03 03:15:04 -04:00
s r c / e n g i n e / f i l e O p s I n s . c p p
2022-03-20 04:14:00 -04:00
s r c / e n g i n e / f i l t e r . c p p
2022-01-19 03:28:29 -05:00
s r c / e n g i n e / i n s t r u m e n t . c p p
2021-05-15 17:42:48 -04:00
s r c / e n g i n e / m a c r o I n t . c p p
2021-12-09 01:44:40 -05:00
s r c / e n g i n e / p a t t e r n . c p p
2021-05-12 04:58:55 -04:00
s r c / e n g i n e / p l a y b a c k . c p p
2021-12-15 14:15:44 -05:00
s r c / e n g i n e / s a m p l e . c p p
s r c / e n g i n e / s o n g . c p p
2022-02-18 13:04:33 -05:00
s r c / e n g i n e / s y s D e f . c p p
2022-01-19 05:10:06 -05:00
s r c / e n g i n e / w a v e t a b l e . c p p
2022-04-07 16:46:48 -04:00
s r c / e n g i n e / w a v e S y n t h . c p p
2022-02-18 12:58:36 -05:00
s r c / e n g i n e / v g m O p s . c p p
2022-05-26 01:24:21 -04:00
s r c / e n g i n e / z s m O p s . c p p
s r c / e n g i n e / z s m . c p p
2021-05-12 04:58:55 -04:00
s r c / e n g i n e / p l a t f o r m / a b s t r a c t . c p p
2021-05-12 18:19:18 -04:00
s r c / e n g i n e / p l a t f o r m / g e n e s i s . c p p
2021-05-16 18:43:10 -04:00
s r c / e n g i n e / p l a t f o r m / g e n e s i s e x t . c p p
2021-05-15 15:18:16 -04:00
s r c / e n g i n e / p l a t f o r m / s m s . c p p
2022-02-25 04:26:01 -05:00
s r c / e n g i n e / p l a t f o r m / o p l l . c p p
2021-05-26 04:17:12 -04:00
s r c / e n g i n e / p l a t f o r m / g b . c p p
2021-06-06 15:02:38 -04:00
s r c / e n g i n e / p l a t f o r m / p c e . c p p
2022-04-06 01:34:12 -04:00
s r c / e n g i n e / p l a t f o r m / m m c 5 . c p p
2021-12-04 01:19:54 -05:00
s r c / e n g i n e / p l a t f o r m / n e s . c p p
2021-12-04 23:55:28 -05:00
s r c / e n g i n e / p l a t f o r m / c 6 4 . c p p
2021-12-08 17:40:35 -05:00
s r c / e n g i n e / p l a t f o r m / a r c a d e . c p p
2022-04-06 23:56:06 -04:00
s r c / e n g i n e / p l a t f o r m / t x 8 1 z . c p p
2022-05-11 04:29:03 -04:00
s r c / e n g i n e / p l a t f o r m / y m 2 2 0 3 . c p p
2022-05-14 19:19:07 -04:00
s r c / e n g i n e / p l a t f o r m / y m 2 2 0 3 e x t . c p p
2022-05-13 03:52:43 -04:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 0 8 . c p p
2022-05-18 23:49:21 -04:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 0 8 e x t . c p p
2021-12-09 13:25:02 -05:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 1 0 . c p p
2021-12-14 14:31:57 -05:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 1 0 e x t . c p p
2022-02-24 11:02:35 -05:00
s r c / e n g i n e / p l a t f o r m / y m 2 6 1 0 b . c p p
s r c / e n g i n e / p l a t f o r m / y m 2 6 1 0 b e x t . c p p
2022-01-13 02:52:19 -05:00
s r c / e n g i n e / p l a t f o r m / a y . c p p
2022-01-14 00:02:10 -05:00
s r c / e n g i n e / p l a t f o r m / a y 8 9 3 0 . c p p
2022-03-05 18:18:08 -05:00
s r c / e n g i n e / p l a t f o r m / o p l . c p p
2022-04-03 23:37:16 -04:00
s r c / e n g i n e / p l a t f o r m / f d s . c p p
2022-01-14 03:37:36 -05:00
s r c / e n g i n e / p l a t f o r m / t i a . c p p
2022-01-14 16:29:27 -05:00
s r c / e n g i n e / p l a t f o r m / s a a . c p p
2022-01-15 17:28:33 -05:00
s r c / e n g i n e / p l a t f o r m / a m i g a . c p p
2022-10-01 04:15:40 -04:00
s r c / e n g i n e / p l a t f o r m / m s m 5 2 3 2 . c p p
2022-05-23 20:01:10 -04:00
s r c / e n g i n e / p l a t f o r m / m s m 6 2 5 8 . c p p
2022-05-23 02:46:58 -04:00
s r c / e n g i n e / p l a t f o r m / m s m 6 2 9 5 . c p p
2022-03-04 18:18:43 -05:00
s r c / e n g i n e / p l a t f o r m / p c s p k r . c p p
2022-02-23 02:52:30 -05:00
s r c / e n g i n e / p l a t f o r m / s e g a p c m . c p p
2022-02-22 04:01:57 -05:00
s r c / e n g i n e / p l a t f o r m / q s o u n d . c p p
2022-03-06 12:31:03 -05:00
s r c / e n g i n e / p l a t f o r m / x 1 _ 0 1 0 . c p p
2022-12-19 19:45:04 -05:00
s r c / e n g i n e / p l a t f o r m / p o k e y . c p p
2022-02-20 12:15:15 -05:00
s r c / e n g i n e / p l a t f o r m / l y n x . c p p
2022-04-27 05:48:56 -04:00
s r c / e n g i n e / p l a t f o r m / s u . c p p
2022-03-07 07:04:20 -05:00
s r c / e n g i n e / p l a t f o r m / s w a n . c p p
2022-10-12 01:12:56 -04:00
s r c / e n g i n e / p l a t f o r m / t 6 w 2 8 . c p p
2022-10-08 20:37:22 -04:00
s r c / e n g i n e / p l a t f o r m / v b . c p p
2022-03-04 06:13:49 -05:00
s r c / e n g i n e / p l a t f o r m / v e r a . c p p
2022-05-14 01:22:23 -04:00
s r c / e n g i n e / p l a t f o r m / z x b e e p e r . c p p
2022-03-16 21:11:48 -04:00
s r c / e n g i n e / p l a t f o r m / b u b s y s w s g . c p p
2022-03-22 12:48:45 -04:00
s r c / e n g i n e / p l a t f o r m / n 1 6 3 . c p p
2022-03-21 10:02:51 -04:00
s r c / e n g i n e / p l a t f o r m / p e t . c p p
2022-12-13 13:32:35 -05:00
s r c / e n g i n e / p l a t f o r m / p o k e m i n i . c p p
2022-10-24 04:19:42 -04:00
s r c / e n g i n e / p l a t f o r m / p o n g . c p p
2022-03-22 03:48:48 -04:00
s r c / e n g i n e / p l a t f o r m / v i c 2 0 . c p p
2022-03-27 12:06:56 -04:00
s r c / e n g i n e / p l a t f o r m / v r c 6 . c p p
2022-04-20 12:52:37 -04:00
s r c / e n g i n e / p l a t f o r m / e s 5 5 0 6 . c p p
2022-05-10 00:18:25 -04:00
s r c / e n g i n e / p l a t f o r m / s c c . c p p
2022-05-18 02:55:33 -04:00
s r c / e n g i n e / p l a t f o r m / y m z 2 8 0 b . c p p
2022-05-20 14:22:35 -04:00
s r c / e n g i n e / p l a t f o r m / n a m c o w s g . c p p
2022-05-20 14:45:26 -04:00
s r c / e n g i n e / p l a t f o r m / r f 5 c 6 8 . c p p
2022-03-21 03:38:12 -04:00
s r c / e n g i n e / p l a t f o r m / s n e s . c p p
2022-12-08 00:18:22 -05:00
s r c / e n g i n e / p l a t f o r m / k 0 0 7 2 3 2 . c p p
2022-12-15 06:03:54 -05:00
s r c / e n g i n e / p l a t f o r m / g a 2 0 . c p p
2023-02-11 07:37:11 -05:00
s r c / e n g i n e / p l a t f o r m / s m 8 5 2 1 . c p p
2022-07-02 14:42:47 -04:00
s r c / e n g i n e / p l a t f o r m / p c m d a c . c p p
2022-02-01 15:50:25 -05:00
s r c / e n g i n e / p l a t f o r m / d u m m y . c p p
)
2022-06-28 03:00:08 -04:00
if ( USE_SNDFILE )
list ( APPEND ENGINE_SOURCES src/engine/sfWrapper.cpp )
endif ( )
2022-02-01 15:50:25 -05:00
if ( WIN32 )
list ( APPEND ENGINE_SOURCES src/utfutils.cpp )
list ( APPEND ENGINE_SOURCES src/engine/winStuff.cpp )
list ( APPEND ENGINE_SOURCES res/furnace.rc )
endif ( )
2021-05-11 16:08:08 -04:00
2022-07-25 18:23:56 -04:00
set ( CLI_SOURCES
s r c / c l i / c l i . c p p
)
2021-12-11 02:10:09 -05:00
set ( GUI_SOURCES
2022-05-18 16:23:10 -04:00
e x t e r n / i m g u i _ p a t c h e d / i m g u i . c p p
e x t e r n / i m g u i _ p a t c h e d / i m g u i _ d r a w . c p p
e x t e r n / i m g u i _ p a t c h e d / i m g u i _ t a b l e s . c p p
e x t e r n / i m g u i _ p a t c h e d / i m g u i _ w i d g e t s . c p p
e x t e r n / i m g u i _ p a t c h e d / b a c k e n d s / i m g u i _ i m p l _ s d l r e n d e r e r . c p p
e x t e r n / i m g u i _ p a t c h e d / b a c k e n d s / i m g u i _ i m p l _ s d l . c p p
e x t e r n / i m g u i _ p a t c h e d / m i s c / c p p / i m g u i _ s t d l i b . c p p
2021-12-11 02:10:09 -05:00
e x t e r n / i g f d / I m G u i F i l e D i a l o g . c p p
2021-12-18 17:54:26 -05:00
s r c / g u i / p l o t _ n o l e r p . c p p
2023-02-15 18:32:31 -05:00
2022-01-19 16:58:01 -05:00
s r c / g u i / f o n t _ e x o . c p p
s r c / g u i / f o n t _ l i b e r a t i o n S a n s . c p p
s r c / g u i / f o n t _ m o n o n o k i . c p p
s r c / g u i / f o n t _ p l e x M o n o . c p p
s r c / g u i / f o n t _ p l e x S a n s . c p p
s r c / g u i / f o n t _ p r o g g y C l e a n . c p p
s r c / g u i / f o n t _ p t M o n o . c p p
s r c / g u i / f o n t _ u n i f o n t . c p p
2021-12-21 00:30:55 -05:00
s r c / g u i / f o n t _ i c o n . c p p
2022-01-19 16:58:01 -05:00
s r c / g u i / f o n t s . c p p
2023-02-15 18:32:31 -05:00
s r c / g u i / i m a g e _ i c o n . c p p
2023-02-16 04:13:43 -05:00
s r c / g u i / i m a g e _ t a l o g o . c p p
s r c / g u i / i m a g e _ t a c h i p . c p p
s r c / g u i / i m a g e _ l o g o . c p p
2023-02-17 16:30:24 -05:00
s r c / g u i / i m a g e _ w o r d m a r k . c p p
2023-02-17 19:40:18 -05:00
s r c / g u i / i m a g e _ i n t r o b g . c p p
2023-02-18 19:43:23 -05:00
s r c / g u i / i m a g e _ p a t . c p p
2023-02-15 18:32:31 -05:00
s r c / g u i / i m a g e . c p p
2022-01-27 00:29:16 -05:00
s r c / g u i / d e b u g . c p p
2022-03-13 19:32:35 -04:00
s r c / g u i / f i l e D i a l o g . c p p
2022-02-17 14:04:39 -05:00
2022-02-17 13:08:17 -05:00
s r c / g u i / i n t C o n s t . c p p
s r c / g u i / g u i C o n s t . c p p
2022-02-17 14:04:39 -05:00
2022-03-21 18:34:43 -04:00
s r c / g u i / a b o u t . c p p
s r c / g u i / c h a n n e l s . c p p
2022-04-30 04:58:30 -04:00
s r c / g u i / c h a n O s c . c p p
2022-11-10 01:26:59 -05:00
s r c / g u i / c l o c k . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / c o m p a t F l a g s . c p p
s r c / g u i / c u r s o r . c p p
2022-03-21 17:34:19 -04:00
s r c / g u i / d a t a L i s t . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / d e b u g W i n d o w . c p p
s r c / g u i / d o A c t i o n . c p p
s r c / g u i / e d i t i n g . c p p
s r c / g u i / e d i t C o n t r o l s . c p p
2022-04-19 19:44:05 -04:00
s r c / g u i / e f f e c t L i s t . c p p
2022-06-06 06:03:19 -04:00
s r c / g u i / f i n d R e p l a c e . c p p
2022-06-21 19:01:53 -04:00
s r c / g u i / g r a d i e n t . c p p
2023-02-05 02:56:39 -05:00
s r c / g u i / g r o o v e s . c p p
2022-02-17 14:04:39 -05:00
s r c / g u i / i n s E d i t . c p p
2023-02-15 16:25:35 -05:00
s r c / g u i / i n t r o . c p p
2022-04-10 23:12:02 -04:00
s r c / g u i / l o g . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / m i x e r . c p p
2022-03-29 17:09:15 -04:00
s r c / g u i / m i d i M a p . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / n e w S o n g . c p p
2022-02-17 22:40:23 -05:00
s r c / g u i / o r d e r s . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / o s c . c p p
2022-08-16 04:42:17 -04:00
s r c / g u i / p a t M a n a g e r . c p p
2022-02-17 14:04:39 -05:00
s r c / g u i / p a t t e r n . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / p i a n o . c p p
s r c / g u i / p r e s e t s . c p p
s r c / g u i / r e g V i e w . c p p
2022-03-16 19:40:11 -04:00
s r c / g u i / s a m p l e E d i t . c p p
2022-10-20 02:49:33 -04:00
s r c / g u i / s c a l i n g . c p p
2022-02-17 22:59:11 -05:00
s r c / g u i / s e t t i n g s . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / s o n g I n f o . c p p
s r c / g u i / s o n g N o t e s . c p p
2023-02-04 17:01:32 -05:00
s r c / g u i / s p e e d . c p p
2022-06-20 16:20:02 -04:00
s r c / g u i / s p o i l e r . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / s t a t s . c p p
2022-05-15 02:42:49 -04:00
s r c / g u i / s u b S o n g s . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / s y s C o n f . c p p
2022-05-08 03:01:32 -04:00
s r c / g u i / s y s E x . c p p
2022-08-19 05:41:45 -04:00
s r c / g u i / s y s M a n a g e r . c p p
2022-08-26 20:30:13 -04:00
s r c / g u i / s y s P i c k e r . c p p
2023-02-19 00:08:37 -05:00
s r c / g u i / t u t o r i a l . c p p
2022-02-17 22:59:11 -05:00
s r c / g u i / u t i l . c p p
2022-03-21 17:34:19 -04:00
s r c / g u i / w a v e E d i t . c p p
2022-03-21 18:34:43 -04:00
s r c / g u i / v o l M e t e r . c p p
2022-02-01 15:50:25 -05:00
s r c / g u i / g u i . c p p
)
2021-12-11 02:10:09 -05:00
2022-12-31 18:36:33 -05:00
if ( WIN32 AND NOT SUPPORT_XP )
2022-06-19 01:11:18 -04:00
list ( APPEND GUI_SOURCES extern/nfd-modified/src/nfd_common.cpp )
2022-06-17 02:28:22 -04:00
list ( APPEND GUI_SOURCES extern/nfd-modified/src/nfd_win.cpp )
endif ( )
2022-02-08 02:04:23 -05:00
if ( APPLE )
2022-12-28 16:07:01 -05:00
list ( APPEND GUI_SOURCES extern/nfd-modified/src/nfd_common.cpp )
2022-02-08 02:04:23 -05:00
list ( APPEND GUI_SOURCES src/gui/macstuff.m )
2022-06-19 01:11:18 -04:00
list ( APPEND GUI_SOURCES extern/nfd-modified/src/nfd_cocoa.mm )
2022-02-08 02:04:23 -05:00
endif ( )
2023-02-15 18:32:31 -05:00
if ( NOT WIN32 AND NOT APPLE )
2022-06-23 17:23:46 -04:00
CHECK_INCLUDE_FILE ( sys/io.h SYS_IO_FOUND )
CHECK_INCLUDE_FILE ( linux/input.h LINUX_INPUT_FOUND )
CHECK_INCLUDE_FILE ( linux/kd.h LINUX_KD_FOUND )
if ( SYS_IO_FOUND )
2022-07-14 23:29:04 -04:00
try_compile ( HAVE_INOUTB ${ CMAKE_BINARY_DIR } /check SOURCES ${ CMAKE_SOURCE_DIR } /src/check/check_sysIO.c )
if ( HAVE_INOUTB )
list ( APPEND DEPENDENCIES_DEFINES HAVE_SYS_IO )
message ( STATUS "PC speaker output: outb()" )
else ( )
message ( STATUS "sys/io.h found but inb()/outb() not present" )
endif ( )
2022-06-23 17:23:46 -04:00
endif ( )
if ( LINUX_INPUT_FOUND )
list ( APPEND DEPENDENCIES_DEFINES HAVE_LINUX_INPUT )
message ( STATUS "PC speaker output: evdev" )
endif ( )
if ( LINUX_KD_FOUND )
list ( APPEND DEPENDENCIES_DEFINES HAVE_LINUX_KD )
message ( STATUS "PC speaker output: KIOCSOUND" )
endif ( )
2022-01-20 01:46:03 -05:00
endif ( )
2022-07-23 23:11:30 -04:00
if ( NOT WIN32 )
try_compile ( HAVE_DIRENT_TYPE ${ CMAKE_BINARY_DIR } /check SOURCES ${ CMAKE_SOURCE_DIR } /src/check/check_dirent_type.c )
if ( HAVE_DIRENT_TYPE )
list ( APPEND DEPENDENCIES_DEFINES HAVE_DIRENT_TYPE )
endif ( )
endif ( )
2022-07-25 18:23:56 -04:00
set ( USED_SOURCES ${ ENGINE_SOURCES } ${ AUDIO_SOURCES } ${ CLI_SOURCES } src/main.cpp )
2022-01-20 02:59:14 -05:00
2022-05-24 14:06:29 -04:00
if ( USE_BACKWARD )
2022-05-29 01:44:21 -04:00
list ( APPEND USED_SOURCES src/backtrace.cpp )
2022-05-24 14:17:40 -04:00
if ( WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
2022-05-24 23:15:43 -04:00
list ( APPEND DEPENDENCIES_LIBRARIES dbghelp psapi )
2022-05-24 14:17:40 -04:00
endif ( )
2022-07-14 23:15:14 -04:00
find_library ( EXECINFO_IS_LIBRARY execinfo )
if ( EXECINFO_IS_LIBRARY )
list ( APPEND DEPENDENCIES_LIBRARIES execinfo )
endif ( )
2022-05-29 00:12:22 -04:00
message ( STATUS "Using backward-cpp" )
else ( )
message ( STATUS "Not using backward-cpp" )
2022-05-24 14:06:29 -04:00
endif ( )
2021-12-11 02:10:09 -05:00
if ( BUILD_GUI )
2022-01-20 02:59:14 -05:00
list ( APPEND USED_SOURCES ${ GUI_SOURCES } )
2022-02-01 15:50:25 -05:00
list ( APPEND DEPENDENCIES_INCLUDE_DIRS
2022-05-18 16:23:10 -04:00
e x t e r n / i m g u i _ p a t c h e d
2022-02-14 18:00:04 -05:00
e x t e r n / i m g u i _ c o n f
2022-05-18 16:23:10 -04:00
e x t e r n / i m g u i _ p a t c h e d / b a c k e n d s
2022-02-01 15:50:25 -05:00
e x t e r n / I c o n F o n t C p p H e a d e r s
e x t e r n / i g f d
)
2022-06-17 02:28:22 -04:00
if ( WIN32 OR APPLE )
list ( APPEND DEPENDENCIES_INCLUDE_DIRS
e x t e r n / n f d - m o d i f i e d / s r c / i n c l u d e
)
endif ( )
2022-02-01 15:50:25 -05:00
list ( APPEND DEPENDENCIES_DEFINES HAVE_GUI )
message ( STATUS "Building GUI" )
2021-12-11 02:10:09 -05:00
else ( )
2022-02-01 15:50:25 -05:00
message ( STATUS "Building headless" )
2021-12-11 02:10:09 -05:00
endif ( )
2021-05-11 16:08:08 -04:00
2022-02-01 15:50:25 -05:00
if ( WIN32 )
list ( APPEND DEPENDENCIES_LIBRARIES shlwapi )
2022-02-02 01:06:29 -05:00
if ( NOT MSVC )
list ( APPEND DEPENDENCIES_LIBRARIES -static )
endif ( )
2022-12-28 15:40:27 -05:00
# support Windows XP
2022-12-31 18:36:33 -05:00
if ( SUPPORT_XP )
2022-12-28 16:40:22 -05:00
list ( APPEND DEPENDENCIES_DEFINES "_WIN32_WINNT=0x0501" )
2022-12-28 15:40:27 -05:00
endif ( )
2022-11-16 05:07:13 -05:00
elseif ( APPLE )
2022-02-10 06:40:51 -05:00
find_library ( COCOA Cocoa REQUIRED )
list ( APPEND DEPENDENCIES_LIBRARIES ${ COCOA } )
2022-11-16 05:07:13 -05:00
else ( )
list ( APPEND DEPENDENCIES_LIBRARIES dl )
2022-02-10 06:40:51 -05:00
endif ( )
2022-02-01 15:50:25 -05:00
if ( NOT MSVC )
set ( WARNING_FLAGS -Wall -Wextra -Wno-unused-parameter )
2022-03-13 23:21:01 -04:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
2022-06-20 05:55:28 -04:00
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0.0 )
# nothing
else ( )
list ( APPEND WARNING_FLAGS -Wno-cast-function-type )
endif ( )
2022-03-13 23:21:01 -04:00
endif ( )
2022-02-01 15:50:25 -05:00
if ( WARNINGS_ARE_ERRORS )
list ( APPEND WARNING_FLAGS -Werror )
endif ( )
else ( )
2022-03-31 12:50:09 -04:00
add_compile_options ( "/utf-8" )
set ( WARNING_FLAGS /W2 /D_CRT_SECURE_NO_WARNINGS )
2022-04-02 12:35:00 -04:00
list ( APPEND WARNING_FLAGS
/ w d 4 2 4 4 # implicit type conversions
/ w d 4 3 0 5 # truncations
/ w d 4 3 0 9 # truncations of constant values
)
2022-02-01 15:50:25 -05:00
if ( WARNINGS_ARE_ERRORS )
list ( APPEND WARNING_FLAGS /WX )
endif ( )
endif ( )
# Nicer but cannot be narrowed down to just C++
# target_compile_options(furnace PRIVATE ${WARNING_FLAGS})
string ( REPLACE ";" " " WARNING_FLAGS_STRING "${WARNING_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS_STRING}" )
if ( WARNINGS_ARE_ERRORS )
message ( WARNING
" T r e a t i n g a l l w a r n i n g s i n f u r n a c e ' s C + + c o d e a s e r r o r s ! "
" P l e a s e r e p o r t a n y e r r o r s y o u e n c o u n t e r o n t h e b u g t r a c k e r . "
)
endif ( )
2021-05-11 16:08:08 -04:00
2023-02-14 01:02:35 -05:00
if ( ANDROID AND NOT TERMUX )
2022-05-08 16:59:42 -04:00
add_library ( furnace SHARED ${ USED_SOURCES } )
2022-02-01 15:50:25 -05:00
else ( )
add_executable ( furnace ${ USED_SOURCES } )
2021-05-11 16:08:08 -04:00
endif ( )
2022-02-01 15:50:25 -05:00
target_include_directories ( furnace SYSTEM PRIVATE ${ DEPENDENCIES_INCLUDE_DIRS } )
2022-02-14 18:00:04 -05:00
target_compile_definitions ( furnace PRIVATE ${ DEPENDENCIES_DEFINES } IMGUI_USER_CONFIG= "imconfig_fur.h" )
2022-02-01 15:50:25 -05:00
target_compile_options ( furnace PRIVATE ${ DEPENDENCIES_COMPILE_OPTIONS } )
target_link_libraries ( furnace PRIVATE ${ DEPENDENCIES_LIBRARIES } )
2022-02-20 17:58:12 -05:00
if ( PKG_CONFIG_FOUND AND ( SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYSTEM_SDL2 OR SYSTEM_RTMIDI OR WITH_JACK ) )
2022-02-01 15:50:25 -05:00
if ( "${CMAKE_VERSION}" VERSION_LESS "3.13" )
message ( WARNING
" C M a k e v e r s i o n i s < 3 . 1 3 , u s i n g o l d p k g - c o n f i g L D F L A G S . "
" Y o u m a y e n c o u n t e r l i n k i n g p r o b l e m s w i t h t h e s e ! "
)
target_link_libraries ( furnace PRIVATE ${ DEPENDENCIES_LEGACY_LDFLAGS } )
else ( )
target_link_directories ( furnace PRIVATE ${ DEPENDENCIES_LIBRARY_DIRS } )
target_link_options ( furnace PRIVATE ${ DEPENDENCIES_LINK_OPTIONS } )
2022-01-20 02:59:14 -05:00
endif ( )
2021-05-11 16:08:08 -04:00
endif ( )
2021-12-24 18:12:36 -05:00
2022-05-27 16:51:57 -04:00
if ( NOT ANDROID OR TERMUX )
2022-05-08 16:59:42 -04:00
if ( NOT WIN32 AND NOT APPLE )
include ( GNUInstallDirs )
2022-07-23 23:11:30 -04:00
install ( TARGETS furnace RUNTIME DESTINATION ${ CMAKE_INSTALL_BINDIR } )
2022-05-08 16:59:42 -04:00
install ( FILES res/furnace.desktop DESTINATION ${ CMAKE_INSTALL_DATADIR } /applications )
install ( FILES res/furnace.appdata.xml DESTINATION ${ CMAKE_INSTALL_DATADIR } /metainfo )
install ( DIRECTORY papers DESTINATION ${ CMAKE_INSTALL_DOCDIR } )
install ( FILES LICENSE DESTINATION ${ CMAKE_INSTALL_DATADIR } /licenses/furnace )
2022-08-04 18:48:10 -04:00
if ( WITH_DEMOS )
install ( DIRECTORY demos DESTINATION ${ CMAKE_INSTALL_DATADIR } /furnace )
endif ( )
if ( WITH_INSTRUMENTS )
install ( DIRECTORY instruments DESTINATION ${ CMAKE_INSTALL_DATADIR } /furnace )
endif ( )
2023-02-19 17:36:14 -05:00
if ( WITH_WAVETABLES )
install ( DIRECTORY wavetables DESTINATION ${ CMAKE_INSTALL_DATADIR } /furnace )
endif ( )
2022-05-16 13:16:55 -04:00
foreach ( num 16 32 64 128 256 512 )
set ( res ${ num } x ${ num } )
install ( FILES res/icon.iconset/icon_ ${ res } .png RENAME furnace.png DESTINATION ${ CMAKE_INSTALL_DATADIR } /icons/hicolor/ ${ res } /apps )
2022-05-16 13:25:15 -04:00
install ( FILES res/icon.iconset/icon_ ${ res } @2x.png RENAME furnace.png DESTINATION ${ CMAKE_INSTALL_DATADIR } /icons/hicolor/ ${ res } @2/apps )
2022-05-16 13:16:55 -04:00
endforeach ( )
2022-05-08 16:59:42 -04:00
install ( FILES res/logo.png RENAME furnace.png DESTINATION ${ CMAKE_INSTALL_DATADIR } /icons/hicolor/1024x1024/apps )
2022-07-23 23:11:30 -04:00
else ( )
install ( TARGETS furnace RUNTIME DESTINATION bin )
2022-05-08 16:59:42 -04:00
endif ( )
2022-07-23 23:11:30 -04:00
2022-05-08 16:59:42 -04:00
set ( CPACK_PACKAGE_NAME "Furnace" )
set ( CPACK_PACKAGE_VENDOR "tildearrow" )
set ( CPACK_PACKAGE_DESCRIPTION "free and open-source chiptune tracker" )
if ( APPLE )
set ( CPACK_GENERATOR Bundle )
set ( CPACK_DMG_SLA_DIR ${ CMAKE_SOURCE_DIR } /res/macLicense )
set ( CPACK_DMG_SLA_LANGUAGES en )
set ( CPACK_BUNDLE_NAME "Furnace" )
set ( CPACK_DMG_VOLUME_NAME "Furnace" )
set ( CPACK_BUNDLE_PLIST ${ CMAKE_SOURCE_DIR } /res/Info.plist )
set ( CPACK_BUNDLE_ICON ${ CMAKE_SOURCE_DIR } /res/icon.icns )
set ( CPACK_BUNDLE_STARTUP_COMMAND "furnace" )
endif ( )
include ( CPack )
2021-12-24 18:12:36 -05:00
endif ( )