diff options
author | Wohlstand <admin@wohlnet.ru> | 2025-03-25 19:52:51 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2025-03-25 19:52:51 +0300 |
commit | 55d2eab229b563aa0e0f5f9319570876c525ccb8 (patch) | |
tree | 72da417f1dd7845675413e7c4dce189e7912fcd7 /CMakeLists.txt | |
parent | 06fb33d4641cbb0d136d069edbf6d8687267166b (diff) | |
download | libADLMIDI-55d2eab229b563aa0e0f5f9319570876c525ccb8.tar.gz libADLMIDI-55d2eab229b563aa0e0f5f9319570876c525ccb8.tar.bz2 libADLMIDI-55d2eab229b563aa0e0f5f9319570876c525ccb8.zip |
Implemented support of YMFM emulators and OPL2
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b88bb9..faaab65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,12 +3,34 @@ project (libADLMIDI VERSION 1.5.1 LANGUAGES C CXX) include(GNUInstallDirs) include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) # Prefer C90 standard set(CMAKE_C_STANDARD 90) # Prefer C++98 standard set(CMAKE_CXX_STANDARD 98) +if(MSVC) + check_cxx_compiler_flag("/std:c++14" COMPILER_SUPPORTS_CXX14) + if(COMPILER_SUPPORTS_CXX14) + set(FLAG_CPP14 "/std:c++14") + endif() + if(MSVC_VERSION LESS 1910) + unset(COMPILER_SUPPORTS_CXX14) # MSVC older than 2017 fails to build YMFM + endif() +else() + check_cxx_compiler_flag("-std=c++14" COMPILER_SUPPORTS_CXX14) + if(COMPILER_SUPPORTS_CXX14) + set(FLAG_CPP14 "-std=c++14") + endif() +endif() + +if(COMPILER_SUPPORTS_CXX14) + message("== Your C++ compiler supports C++14, YMFM emulator will be ENABLED") +else() + message("== Your C++ compiler does NOT supports C++14, YMFM emulator will be DISABLED") +endif() + if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) endif() @@ -190,6 +212,9 @@ option(USE_NUKED_EMULATOR "Use Nuked OPL3 emulator (most accurate, powerful)" option(USE_OPAL_EMULATOR "Use Opal emulator (inaccurate)" ${DEFAULT_HEAVY_EMULATORS}) option(USE_JAVA_EMULATOR "Use JavaOPL emulator" ${DEFAULT_HEAVY_EMULATORS}) option(USE_ESFMU_EMULATOR "Use ESFMu emulator (Based on Nuked OPL3, powerful)" ${DEFAULT_HEAVY_EMULATORS}) +if(COMPILER_SUPPORTS_CXX14) + option(USE_YMFM_EMULATOR "Use YMFM emulator (requires C++14 support)" ON) +endif() option(USE_HW_SERIAL "Use the hardware OPL3 chip via Serial on modern systems" OFF) option(WITH_GENADLDATA "Build and run full rebuild of embedded banks cache" OFF) @@ -307,6 +332,34 @@ function(handle_options targetLib) target_compile_definitions(${targetLib} PUBLIC ADLMIDI_DISABLE_ESFMU_EMULATOR) endif() + if(USE_YMFM_EMULATOR) + set(YMFM_SOURCES + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm_opl2.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm_opl2.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm_opl3.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm_opl3.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_adpcm.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_adpcm.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_fm.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_fm.ipp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_misc.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_misc.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_opl.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_opl.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_pcm.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_pcm.h + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_ssg.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/ymfm/ymfm_ssg.h + ) + if(DEFINED FLAG_CPP14) + set_source_files_properties(${YMFM_SOURCES} COMPILE_FLAGS ${FLAG_CPP14}) + endif() + target_sources(${targetLib} PRIVATE ${YMFM_SOURCES}) + set(HAS_EMULATOR TRUE) + else() + target_compile_definitions(${targetLib} PUBLIC -DADLMIDI_DISABLE_YMFM_EMULATOR) + endif() + if(USE_HW_SERIAL) set(HAS_EMULATOR TRUE) target_sources(${targetLib} PRIVATE @@ -578,6 +631,10 @@ message("USE_DOSBOX_EMULATOR = ${USE_DOSBOX_EMULATOR}") message("USE_NUKED_EMULATOR = ${USE_NUKED_EMULATOR}") message("USE_OPAL_EMULATOR = ${USE_OPAL_EMULATOR}") message("USE_JAVA_EMULATOR = ${USE_JAVA_EMULATOR}") +message("USE_ESFMU_EMULATOR = ${USE_ESFMU_EMULATOR}") +if(COMPILER_SUPPORTS_CXX14) + message("USE_YMFM_EMULATOR = ${USE_YMFM_EMULATOR}") +endif() message("USE_HW_SERIAL = ${USE_HW_SERIAL}") message("===== Utils and extras =====") |