cmake_minimum_required (VERSION 3.2) project(adlmidi2 CXX) set(CMAKE_CXX_STANDARD 11) find_package(OpenMP) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) if(NOT WIN32 AND NOT DJGPP AND NOT MSDOS) set(ADLMIDI2_HAS_PUZZLE_GAME TRUE) set(ADLMIDI2_VIDEO_OUT_SUPPORT TRUE) endif() set(adlmidi2_src) list(APPEND adlmidi2_src midiplay.cc input.cc ) if(ADLMIDI2_HAS_PUZZLE_GAME) list(APPEND adlmidi2_src puzzlegame.cc) endif() add_executable(adlmidi2 ${adlmidi2_src}) target_link_libraries(adlmidi2 PRIVATE ADLMIDI) if(NOT WIN32 AND NOT DJGPP AND NOT MSDOS) find_package(SDL2 REQUIRED) string(STRIP ${SDL2_LIBRARIES} SDL2_LIBRARIES) target_include_directories(adlmidi2 PRIVATE ${SDL2_INCLUDE_DIRS}) target_link_libraries(adlmidi2 PRIVATE ${SDL2_LIBRARIES}) endif() if(ADLMIDI2_HAS_PUZZLE_GAME) target_compile_definitions(adlmidi2 PUBLIC SUPPORT_PUZZLE_GAME) endif() if(ADLMIDI2_VIDEO_OUT_SUPPORT) target_compile_definitions(adlmidi2 PUBLIC SUPPORT_VIDEO_OUTPUT) endif() if(MSDOS OR DJGPP) target_compile_definitions(adlmidi2 PUBLIC HARDWARE_OPL3) message("Turn on hardware OPL3 support on ADLMIDI2 tool") endif() if(WIN32) target_link_libraries(adlmidi2 PRIVATE winmm) else(NOT DJGPP AND NOT MSDOS) if(NOT OPENBSD_LOCALBASE) target_link_libraries(adlmidi2 PRIVATE dl) endif() target_link_libraries(adlmidi2 PRIVATE pthread m stdc++) endif() if(NOT WITH_CPP_EXTRAS) message(FATAL_ERROR "ADLMIDI2 Requires C++ Extras. Please enable WITH_CPP_EXTRAS option!") endif() if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Intel|MinGW" OR MINGW) if(OPENMP_FOUND) target_compile_options(adlmidi2 PUBLIC "-fopenmp") target_link_libraries(adlmidi2 PRIVATE "-fopenmp") endif() else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") message("Turned on C++11 on MSVC") target_compile_options(adlmidi2 PUBLIC "/std:c++latest") endif() if(TARGET ADLMIDI_shared AND NOT MSVC) set_target_properties(adlmidi2 PROPERTIES COMPILE_FLAGS "-Wl,-rpath='$$ORIGIN/../lib'") endif() install(TARGETS adlmidi2 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")