aboutsummaryrefslogtreecommitdiff
path: root/utils/adlmidi-2
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-12-13 02:28:57 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-12-13 02:29:16 +0300
commit68c03edbb563983b6ac3e81a826871bfdf9e3bd4 (patch)
treec9bdcb2dfeaa60cececdd602b8a9f5fdb0b815fa /utils/adlmidi-2
parentd89084d6eaf3bb65c134201f61449656226cbf80 (diff)
downloadlibADLMIDI-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.txt97
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}")
+