diff options
author | Flamefire <git@grundis.de> | 2018-12-16 14:43:07 +0100 |
---|---|---|
committer | Flamefire <git@grundis.de> | 2018-12-16 16:36:53 +0100 |
commit | 16d2602e043eeb2398bb3be9bb4498228f221be1 (patch) | |
tree | de9d757f263347575320623319750e5981773c61 /CMakeLists.txt | |
parent | c75c232470117287c9e7865ff769fbf3155d1e80 (diff) | |
download | libADLMIDI-16d2602e043eeb2398bb3be9bb4498228f221be1.tar.gz libADLMIDI-16d2602e043eeb2398bb3be9bb4498228f221be1.tar.bz2 libADLMIDI-16d2602e043eeb2398bb3be9bb4498228f221be1.zip |
Use target_* functions
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 168 |
1 files changed, 78 insertions, 90 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c3c56c6..4355b75 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,12 +88,12 @@ endfunction() option(libADLMIDI_STATIC "Build static library of libADLMIDI" ON) option(libADLMIDI_SHARED "Build shared library of libADLMIDI" OFF) -option(WITH_CPP_EXTRAS "Build with support for C++ extras (features are can be found in 'adlmidi.hpp' header)" OFF) -option(WITH_MIDI_SEQUENCER "Build with embedded MIDI sequencer. Disable this if you want use library in real-time MIDI drivers or plugins.)" ON) +option(WITH_CPP_EXTRAS "Build with support for C++ extras (features can be found in 'adlmidi.hpp' header)" OFF) +option(WITH_MIDI_SEQUENCER "Build with embedded MIDI sequencer. Disable this if you want use library in real-time MIDI drivers or plugins." ON) option(WITH_EMBEDDED_BANKS "Use embedded banks" ON) option(WITH_HQ_RESAMPLER "Build with support for high quality resampling" OFF) -option(WITH_MUS_SUPPORT "Build with support for DMX MUS files)" ON) -option(WITH_XMI_SUPPORT "Build with support for AIL XMI files)" ON) +option(WITH_MUS_SUPPORT "Build with support for DMX MUS files" ON) +option(WITH_XMI_SUPPORT "Build with support for AIL XMI files" ON) option(USE_DOSBOX_EMULATOR "Use DosBox 0.74 OPL3 emulator (semi-accurate, suggested for slow or mobile platforms)" ON) option(USE_NUKED_EMULATOR "Use Nuked OPL3 emulator (most accurate, powerful)" ON) @@ -109,81 +109,84 @@ option(WITH_OLD_UTILS "Build also old utilities" OFF) option(WITH_XMI2MID "Build a XMI to MIDI converter" OFF) option(EXAMPLE_SDL2_AUDIO "Build also a simple SDL2 demo MIDI player" OFF) -set(libADLMIDI_INSTALLS) - -include_directories(${libADLMIDI_SOURCE_DIR}/include) -include_directories(${libADLMIDI_SOURCE_DIR}/src/) -link_directories(${libADLMIDI_BINARY_DIR}/) - -set(libADLMIDI_SOURCES) +function(handle_options targetLib) + if(WITH_MIDI_SEQUENCER) + target_sources(${targetLib} PRIVATE ${libADLMIDI_SOURCE_DIR}/src/adlmidi_sequencer.cpp) + target_compile_definitions(${targetLib} PUBLIC ENABLE_END_SILENCE_SKIPPING) + endif() -list(APPEND libADLMIDI_SOURCES - ${libADLMIDI_SOURCE_DIR}/src/adlmidi.cpp - ${libADLMIDI_SOURCE_DIR}/src/adlmidi_load.cpp - ${libADLMIDI_SOURCE_DIR}/src/adlmidi_midiplay.cpp - ${libADLMIDI_SOURCE_DIR}/src/adlmidi_opl3.cpp - ${libADLMIDI_SOURCE_DIR}/src/adlmidi_private.cpp - ${libADLMIDI_SOURCE_DIR}/src/wopl/wopl_file.c -) + if(NOT WITH_MUS_SUPPORT OR NOT WITH_MIDI_SEQUENCER) + target_compile_definitions(${targetLib} PUBLIC BWMIDI_DISABLE_MUS_SUPPORT) + endif() -if(WITH_MIDI_SEQUENCER) - list(APPEND libADLMIDI_SOURCES - ${libADLMIDI_SOURCE_DIR}/src/adlmidi_sequencer.cpp - ) - add_definitions(-DENABLE_END_SILENCE_SKIPPING) -endif() + if(NOT WITH_XMI_SUPPORT OR NOT WITH_MIDI_SEQUENCER) + target_compile_definitions(${targetLib} PUBLIC BWMIDI_DISABLE_XMI_SUPPORT) + endif() -if(NOT WITH_MUS_SUPPORT OR NOT WITH_MIDI_SEQUENCER) - add_definitions(-DBWMIDI_DISABLE_MUS_SUPPORT) -endif() + if(NOT ADLMIDI_DOS) + if(USE_DOSBOX_EMULATOR) + set(HAS_EMULATOR TRUE) + target_sources(${targetLib} PRIVATE + ${libADLMIDI_SOURCE_DIR}/src/chips/dosbox_opl3.cpp + ${libADLMIDI_SOURCE_DIR}/src/chips/dosbox/dbopl.cpp + ) + else() + target_compile_definitions(${targetLib} PUBLIC ADLMIDI_DISABLE_DOSBOX_EMULATOR) + endif() -if(NOT WITH_XMI_SUPPORT OR NOT WITH_MIDI_SEQUENCER) - add_definitions(-DBWMIDI_DISABLE_XMI_SUPPORT) -endif() + if(USE_NUKED_EMULATOR) + set(HAS_EMULATOR TRUE) + target_sources(${targetLib} PRIVATE + ${libADLMIDI_SOURCE_DIR}/src/chips/nuked_opl3.cpp # v 1.8 + ${libADLMIDI_SOURCE_DIR}/src/chips/nuked/nukedopl3.c + ${libADLMIDI_SOURCE_DIR}/src/chips/nuked_opl3_v174.cpp # v 1.7.4 + ${libADLMIDI_SOURCE_DIR}/src/chips/nuked/nukedopl3_174.c + ) + else() + target_compile_definitions(${targetLib} PUBLIC ADLMIDI_DISABLE_NUKED_EMULATOR) + endif() -if(NOT ADLMIDI_DOS) - if(USE_DOSBOX_EMULATOR) - set(HAS_EMULATOR TRUE) - list(APPEND libADLMIDI_SOURCES - ${libADLMIDI_SOURCE_DIR}/src/chips/dosbox_opl3.cpp - ${libADLMIDI_SOURCE_DIR}/src/chips/dosbox/dbopl.cpp - ) - else() - add_definitions(-DADLMIDI_DISABLE_DOSBOX_EMULATOR) + if(NOT HAS_EMULATOR) + message(FATAL_ERROR "No emulators enabled! You must enable at least one emulator!") + endif() endif() - if(USE_NUKED_EMULATOR) - set(HAS_EMULATOR TRUE) - list(APPEND libADLMIDI_SOURCES - ${libADLMIDI_SOURCE_DIR}/src/chips/nuked_opl3.cpp # v 1.8 - ${libADLMIDI_SOURCE_DIR}/src/chips/nuked/nukedopl3.c - ${libADLMIDI_SOURCE_DIR}/src/chips/nuked_opl3_v174.cpp # v 1.7.4 - ${libADLMIDI_SOURCE_DIR}/src/chips/nuked/nukedopl3_174.c - ) + if(WITH_EMBEDDED_BANKS) + target_sources(${targetLib} PRIVATE ${libADLMIDI_SOURCE_DIR}/src/adldata.cpp) else() - add_definitions(-DADLMIDI_DISABLE_NUKED_EMULATOR) + target_compile_definitions(${targetLib} PUBLIC DISABLE_EMBEDDED_BANKS) endif() - if(NOT HAS_EMULATOR) - message(FATAL_ERROR "No emulators enabled! You must enable at least one emulator!") + if(NOT WITH_MIDI_SEQUENCER) + target_compile_definitions(${targetLib} PUBLIC ADLMIDI_DISABLE_MIDI_SEQUENCER) endif() -endif() - -if(WITH_EMBEDDED_BANKS) - list(APPEND libADLMIDI_SOURCES - ${libADLMIDI_SOURCE_DIR}/src/adldata.cpp - ) -else() - add_definitions(-DDISABLE_EMBEDDED_BANKS) -endif() -if(NOT WITH_MIDI_SEQUENCER) - add_definitions(-DADLMIDI_DISABLE_MIDI_SEQUENCER) -endif() + if(NOT WITH_CPP_EXTRAS) + target_compile_definitions(${targetLib} PUBLIC ADLMIDI_DISABLE_CPP_EXTRAS) + endif() + + if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA AND NOT ADLMIDI_DOS) + add_dependencies(${targetLib} gen-adldata-run) + endif() + + if(WITH_HQ_RESAMPLER AND NOT ADLMIDI_DOS) + find_library(ZITA_RESAMPLER_LIBRARY "zita-resampler") + if(NOT ZITA_RESAMPLER_LIBRARY) + message(FATAL_ERROR "zita-resampler library not found") + endif() + target_compile_definitions(${targetLib} PRIVATE ADLMIDI_ENABLE_HQ_RESAMPLER) + target_link_libraries(${targetLib} PUBLIC ${ZITA_RESAMPLER_LIBRARY}) + endif() +endfunction() -if(NOT WITH_CPP_EXTRAS) - add_definitions(-DADLMIDI_DISABLE_CPP_EXTRAS) -endif() +set(libADLMIDI_SOURCES + ${libADLMIDI_SOURCE_DIR}/src/adlmidi.cpp + ${libADLMIDI_SOURCE_DIR}/src/adlmidi_load.cpp + ${libADLMIDI_SOURCE_DIR}/src/adlmidi_midiplay.cpp + ${libADLMIDI_SOURCE_DIR}/src/adlmidi_opl3.cpp + ${libADLMIDI_SOURCE_DIR}/src/adlmidi_private.cpp + ${libADLMIDI_SOURCE_DIR}/src/wopl/wopl_file.c +) # === Static library ==== if(libADLMIDI_STATIC OR WITH_VLC_PLUGIN) @@ -192,10 +195,7 @@ if(libADLMIDI_STATIC OR WITH_VLC_PLUGIN) target_include_directories(ADLMIDI_static PUBLIC ${libADLMIDI_SOURCE_DIR}/include) set_legacy_standard(ADLMIDI_static) set_visibility_hidden(ADLMIDI_static) - list(APPEND libADLMIDI_INSTALLS ADLMIDI_static) - if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA AND NOT ADLMIDI_DOS) - add_dependencies(ADLMIDI_static gen-adldata-run) - endif() + handle_options(ADLMIDI_static) if(NOT libADLMIDI_STATIC) set_target_properties(ADLMIDI_static PROPERTIES EXCLUDE_FROM_ALL TRUE) endif() @@ -208,7 +208,7 @@ if(libADLMIDI_SHARED) target_include_directories(ADLMIDI_shared PUBLIC ${libADLMIDI_SOURCE_DIR}/include) set_legacy_standard(ADLMIDI_shared) set_visibility_hidden(ADLMIDI_shared) - list(APPEND libADLMIDI_INSTALLS ADLMIDI_shared) + handle_options(ADLMIDI_shared) if(WIN32) target_compile_definitions(ADLMIDI_shared PRIVATE ADLMIDI_BUILD_DLL) if(CMAKE_COMPILER_IS_GNUCXX) @@ -219,9 +219,6 @@ if(libADLMIDI_SHARED) if(OPENBSD_LOCALBASE) set_property(TARGET ADLMIDI_shared APPEND_STRING PROPERTY LINK_FLAGS " -lc") endif() - if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA) - add_dependencies(ADLMIDI_shared gen-adldata-run) - endif() set_target_properties(ADLMIDI_shared PROPERTIES SOVERSION "1") endif() @@ -239,26 +236,10 @@ endif() if(WITH_OLD_UTILS) # Old utility to dump AdLib bank files add_subdirectory(utils/dumpbank) - # Old utility to dump AIL bank files add_subdirectory(utils/dumpmiles) endif() -if(WITH_HQ_RESAMPLER AND NOT ADLMIDI_DOS) - find_library(ZITA_RESAMPLER_LIBRARY "zita-resampler") - if(NOT ZITA_RESAMPLER_LIBRARY) - message(FATAL_ERROR "zita-resampler library not found") - endif() - if(TARGET ADLMIDI_shared) - target_compile_definitions(ADLMIDI_shared PRIVATE ADLMIDI_ENABLE_HQ_RESAMPLER) - target_link_libraries(ADLMIDI_shared PUBLIC "${ZITA_RESAMPLER_LIBRARY}") - endif() - if(TARGET ADLMIDI_static) - target_compile_definitions(ADLMIDI_static PRIVATE ADLMIDI_ENABLE_HQ_RESAMPLER) - target_link_libraries(ADLMIDI_static PUBLIC "${ZITA_RESAMPLER_LIBRARY}") - endif() -endif() - if(WITH_EMBEDDED_BANKS AND WITH_GENADLDATA AND NOT ADLMIDI_DOS) add_subdirectory(utils/gen_adldata) endif() @@ -283,6 +264,13 @@ if(WITH_VLC_PLUGIN AND NOT ADLMIDI_DOS) add_subdirectory(utils/vlc_codec) endif() +set(libADLMIDI_INSTALLS ) +foreach(lib ADLMIDI_static ADLMIDI_shared) + if(TARGET ${lib}) + list(APPEND libADLMIDI_INSTALLS ${lib}) + endif() +endforeach() + install(TARGETS ${libADLMIDI_INSTALLS} RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" |