aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt184
1 files changed, 184 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..f2a7aca
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,184 @@
+cmake_minimum_required (VERSION 2.8.11)
+project (libADLMIDI)
+
+#===========================================================================================
+# Strip garbage
+if(APPLE)
+ set(LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -dead_strip")
+ELSEIF(NOT MSVC)
+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os -s -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Os -s -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s")
+ set(LINK_FLAGS_RELEASE "${LINK_FLAGS_RELEASE} -Wl,--gc-sections -Wl,-s")
+ENDIF()
+
+# Global optimization flags
+IF(NOT MSVC)
+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -fno-omit-frame-pointer")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-omit-frame-pointer")
+ENDIF()
+
+if (CMAKE_BUILD_TYPE EQUAL "RELEASE")
+ add_definitions(-DNDEBUG)
+ENDIF()
+
+# Disable bogus MSVC warnings
+if(MSVC)
+ add_definitions(-D_CRT_SECURE_NO_WARNINGS)
+ENDIF()
+
+# -fPIC thing
+IF(NOT WIN32)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+ENDIF()
+#===========================================================================================
+
+option(WITH_MIDIPLAY "Build also demo MIDI player" OFF)
+option(WITH_OLD_UTILS "Build also old utilities" OFF)
+option(WITH_EMBEDDED_BANKS "Use embedded banks" ON)
+option(USE_DOSBOX_EMULATOR "Use DosBox emulator" OFF)
+
+option(libADLMIDI_STATIC "Build static library of libADLMIDI" ON)
+option(libADLMIDI_SHARED "Build shared library of libADLMIDI" OFF)
+
+
+
+set(libADLMIDI_INSTALLS)
+
+include_directories(${libADLMIDI_SOURCE_DIR}/include)
+include_directories(${libADLMIDI_SOURCE_DIR}/src/)
+link_directories(${libADLMIDI_BINARY_DIR}/)
+
+if(WITH_OLD_UTILS)
+ # Old utility to dump AdLib bank files
+ add_executable(adldumpbank
+ ${libADLMIDI_SOURCE_DIR}/utils/dumpbank/dumpbank.cpp
+ )
+ list(APPEND libADLMIDI_INSTALLS adldumpbank)
+
+ # Old utility to dump AIL bank files
+ add_executable(adldumpmiles
+ ${libADLMIDI_SOURCE_DIR}/utils/dumpmiles/dumpmiles.cpp
+ )
+ list(APPEND libADLMIDI_INSTALLS adldumpmiles)
+endif()
+
+if(WITH_EMBEDDED_BANKS)
+ add_executable(gen_adldata
+ ${libADLMIDI_SOURCE_DIR}/utils/gen_adldata/gen_adldata.cc
+ ${libADLMIDI_SOURCE_DIR}/utils/gen_adldata/progs_cache.cpp
+ ${libADLMIDI_SOURCE_DIR}/utils/gen_adldata/measurer.cpp
+ ${libADLMIDI_SOURCE_DIR}/utils/gen_adldata/ini/ini_processing.cpp
+ ${libADLMIDI_SOURCE_DIR}/src/nukedopl3.c
+ ${libADLMIDI_SOURCE_DIR}/src/dbopl.cpp
+ )
+ target_link_libraries(gen_adldata pthread)
+
+ add_custom_target (
+ gen-adldata-run
+ COMMAND ${libADLMIDI_BINARY_DIR}/gen_adldata ${libADLMIDI_SOURCE_DIR}/src/adldata.cpp
+ WORKING_DIRECTORY ${libADLMIDI_SOURCE_DIR}
+ )
+ add_dependencies(gen-adldata-run gen_adldata)
+endif()
+
+
+set(libADLMIDI_SOURCES)
+
+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/adlmidi_mus2mid.c
+ ${libADLMIDI_SOURCE_DIR}/src/adlmidi_xmi2mid.c
+)
+
+if(USE_DOSBOX_EMULATOR)
+ add_definitions(-DADLMIDI_USE_DOSBOX_OPL)
+ list(APPEND libADLMIDI_SOURCES
+ ${libADLMIDI_SOURCE_DIR}/src/dbopl.cpp
+ )
+else()
+ list(APPEND libADLMIDI_SOURCES
+ ${libADLMIDI_SOURCE_DIR}/src/nukedopl3.c
+ )
+endif()
+
+if(WITH_EMBEDDED_BANKS)
+ list(APPEND libADLMIDI_SOURCES
+ ${libADLMIDI_SOURCE_DIR}/src/adldata.cpp
+ )
+else()
+ add_definitions(-DDISABLE_EMBEDDED_BANKS)
+endif()
+
+if(libADLMIDI_STATIC)
+ add_library(ADLMIDI_static STATIC ${libADLMIDI_SOURCES})
+ set_target_properties(ADLMIDI_static PROPERTIES OUTPUT_NAME ADLMIDI)
+ target_include_directories(ADLMIDI_static PUBLIC ${SDLMixerX_SOURCE_DIR}/include)
+ list(APPEND libADLMIDI_INSTALLS ADLMIDI_static)
+ if(WITH_EMBEDDED_BANKS)
+ add_dependencies(ADLMIDI_static gen-adldata-run)
+ endif()
+endif()
+
+if(libADLMIDI_SHARED)
+ add_library(ADLMIDI_shared SHARED ${libADLMIDI_SOURCES})
+ set_target_properties(ADLMIDI_shared PROPERTIES OUTPUT_NAME ADLMIDI)
+ target_include_directories(ADLMIDI_shared PUBLIC ${SDLMixerX_SOURCE_DIR}/include)
+ list(APPEND libADLMIDI_INSTALLS ADLMIDI_shared)
+ if(WITH_EMBEDDED_BANKS)
+ add_dependencies(ADLMIDI_shared gen-adldata-run)
+ endif()
+endif()
+
+if(WITH_MIDIPLAY)
+ find_library(SDL2_LIBRARY SDL2 REQUIRED)
+ include_directories(${SDL2_INCLUDE_DIR})
+ message("Found ${SDL2_LIBRARY}")
+
+ add_executable(adlmidiplay
+ ${libADLMIDI_SOURCE_DIR}/utils/midiplay/adlmidiplay.cpp
+ ${libADLMIDI_SOURCE_DIR}/utils/midiplay/wave_writer.c
+ )
+
+ if(WIN32)
+ target_link_libraries(adlmidiplay ADLMIDI ${SDL2_LIBRARY} pthread)
+ else()
+ target_link_libraries(adlmidiplay ADLMIDI ${SDL2_LIBRARY} pthread dl)
+ endif()
+
+ if(libADLMIDI_SHARED)
+ add_dependencies(adlmidiplay ADLMIDI_shared)
+ # ========= WIP =========
+ # set_target_properties(adlmidiplay PROPERTIES COMPILE_FLAGS "-Wl,-rpath='$$ORIGIN/../lib'")
+ else()
+ if(NOT libADLMIDI_STATIC)
+ message(FATAL_ERROR "libADLMIDI is required to be built!")
+ endif()
+ add_dependencies(adlmidiplay ADLMIDI_static)
+ endif()
+
+ list(APPEND libADLMIDI_INSTALLS adlmidiplay)
+endif()
+
+install(TARGETS ${libADLMIDI_INSTALLS}
+ RUNTIME DESTINATION "bin"
+ LIBRARY DESTINATION "lib"
+ ARCHIVE DESTINATION "lib"
+ INCLUDES DESTINATION "include")
+
+install(FILES
+ include/adlmidi.h
+ DESTINATION include/)
+
+message("==== libADLMIDI options ====")
+message("WITH_MIDIPLAY = ${WITH_MIDIPLAY}")
+message("WITH_EMBEDDED_BANKS = ${WITH_EMBEDDED_BANKS}")
+message("USE_DOSBOX_EMULATOR = ${USE_DOSBOX_EMULATOR}")
+message("libADLMIDI_STATIC = ${libADLMIDI_STATIC}")
+message("libADLMIDI_SHARED = ${libADLMIDI_SHARED}")
+
+