diff options
author | Vitaly Novichkov <admin@wohlnet.ru> | 2018-12-13 02:28:57 +0300 |
---|---|---|
committer | Vitaly Novichkov <admin@wohlnet.ru> | 2018-12-13 02:29:16 +0300 |
commit | 68c03edbb563983b6ac3e81a826871bfdf9e3bd4 (patch) | |
tree | c9bdcb2dfeaa60cececdd602b8a9f5fdb0b815fa /utils/adlmidi-2 | |
parent | d89084d6eaf3bb65c134201f61449656226cbf80 (diff) | |
download | libADLMIDI-68c03edbb563983b6ac3e81a826871bfdf9e3bd4.tar.gz libADLMIDI-68c03edbb563983b6ac3e81a826871bfdf9e3bd4.tar.bz2 libADLMIDI-68c03edbb563983b6ac3e81a826871bfdf9e3bd4.zip |
Build: Splid the main CMake build script
Keep it have library code only but no utils and examples are will be built independently
#196
Diffstat (limited to 'utils/adlmidi-2')
-rw-r--r-- | utils/adlmidi-2/CMakeLists.txt | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/utils/adlmidi-2/CMakeLists.txt b/utils/adlmidi-2/CMakeLists.txt new file mode 100644 index 0000000..3f3327b --- /dev/null +++ b/utils/adlmidi-2/CMakeLists.txt @@ -0,0 +1,97 @@ +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) + find_library(SDL2_LIBRARY SDL2 REQUIRED) + include_directories(${SDL2_INCLUDE_DIR}) + message("Found ${SDL2_LIBRARY}") +endif() + +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}) + +if(ADLMIDI2_HAS_PUZZLE_GAME) + target_compile_definitions(adlmidi2 PUBLIC "-DSUPPORT_PUZZLE_GAME") +endif() + +if(ADLMIDI2_VIDEO_OUT_SUPPORT) + target_compile_definitions(adlmidi2 PUBLIC "-DSUPPORT_VIDEO_OUTPUT") +endif() + +if(MSDOS OR DJGPP) + target_compile_definitions(adlmidi2 PUBLIC "-DHARDWARE_OPL3") + message("Turn on hardware OPL3 support on ADLMIDI2 tool") +endif() + +if(WIN32) + target_link_libraries(adlmidi2 ADLMIDI_IF winmm) +elseif(DJGPP OR MSDOS) + target_link_libraries(adlmidi2 ADLMIDI_IF) +else() + set(ADLMIDI2_LIBS ADLMIDI_IF ${SDL2_LIBRARY} pthread dl m stdc++) + if(OPENBSD_LOCALBASE) + list(REMOVE_ITEM ADLMIDI2_LIBS dl) + endif() + target_link_libraries(adlmidi2 ${ADLMIDI2_LIBS}) +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}" STREQUAL "GNU" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel" OR + "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MinGW" OR + CMAKE_COMPILER_IS_MINGW) + if(${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.2) + message("Turned on C++11 on GCC/CLang/Intel") + set_target_properties(adlmidi2 PROPERTIES + CXX_STANDARD 11 + CXX_STANDARD_REQUIRED YES) + endif() + if(OPENMP_FOUND) + target_compile_options(adlmidi2 PUBLIC "-fopenmp") + target_link_libraries(adlmidi2 "-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(libADLMIDI_SHARED) + add_dependencies(adlmidi2 ADLMIDI_shared) + if(NOT MSVC) + set_target_properties(adlmidi2 PROPERTIES COMPILE_FLAGS "-Wl,-rpath='$$ORIGIN/../lib'") + endif() +else() + if(NOT libADLMIDI_STATIC) + message(FATAL_ERROR "libADLMIDI is required to be built!") + endif() + add_dependencies(adlmidi2 ADLMIDI_static) +endif() + +install(TARGETS adlmidi2 + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") + |