cmake_minimum_required(VERSION 3.5)

project(openmpt VERSION 0.3.7 LANGUAGES CXX)

find_package(ZLIB REQUIRED)

add_library(${PROJECT_NAME}
  common/BuildSettings.h
  common/CompilerDetect.h
  common/ComponentManager.cpp
  common/ComponentManager.h
  common/Endianness.h
  common/FileReader.cpp
  common/FileReader.h
  common/FileReaderFwd.h
  common/FlagSet.h
  common/Logging.cpp
  common/Logging.h
  common/misc_util.cpp
  common/misc_util.h
  common/mptAlloc.cpp
  common/mptAlloc.h
  common/mptAssert.h
  common/mptBaseMacros.h
  common/mptBaseTypes.h
  common/mptBaseUtils.h
  common/mptBufferIO.h
  common/mptCPU.cpp
  common/mptCPU.h
  common/mptCRC.h
  common/mptException.h
  common/mptExceptionText.h
  common/mptFileIO.cpp
  common/mptFileIO.h
  common/mptIO.cpp
  common/mptIO.h
  common/mptLibrary.cpp
  common/mptLibrary.h
  common/mptMemory.h
  common/mptMutex.h
  common/mptOS.cpp
  common/mptOS.h
  common/mptPathString.cpp
  common/mptPathString.h
  common/mptRandom.cpp
  common/mptRandom.h
  common/mptSpan.h
  common/mptString.cpp
  common/mptString.h
  common/mptStringBuffer.cpp
  common/mptStringBuffer.h
  common/mptStringFormat.cpp
  common/mptStringFormat.h
  common/mptStringParse.cpp
  common/mptStringParse.h
  common/mptThread.h
  common/mptTime.cpp
  common/mptTime.h
  common/mptUUID.cpp
  common/mptUUID.h
  common/mptWine.cpp
  common/mptWine.h
  common/Profiler.cpp
  common/Profiler.h
  common/serialization_utils.cpp
  common/serialization_utils.h
  common/stdafx.h
  common/version.cpp
  common/version.h
  common/versionNumber.h
  libopenmpt/libopenmpt.h
  libopenmpt/libopenmpt.hpp
  libopenmpt/libopenmpt_c.cpp
  libopenmpt/libopenmpt_config.h
  libopenmpt/libopenmpt_cxx.cpp
  libopenmpt/libopenmpt_ext.h
  libopenmpt/libopenmpt_ext.hpp
  libopenmpt/libopenmpt_ext_impl.cpp
  libopenmpt/libopenmpt_ext_impl.hpp
  libopenmpt/libopenmpt_impl.cpp
  libopenmpt/libopenmpt_impl.hpp
  libopenmpt/libopenmpt_internal.h
  libopenmpt/libopenmpt_stream_callbacks_buffer.h
  libopenmpt/libopenmpt_stream_callbacks_fd.h
  libopenmpt/libopenmpt_stream_callbacks_file.h
  libopenmpt/libopenmpt_version.h
  soundbase/SampleFormat.h
  soundbase/SampleFormatConverters.h
  soundbase/SampleFormatCopy.h
  sounddsp/AGC.cpp
  sounddsp/AGC.h
  sounddsp/DSP.cpp
  sounddsp/DSP.h
  sounddsp/EQ.cpp
  sounddsp/EQ.h
  sounddsp/Reverb.cpp
  sounddsp/Reverb.h
  soundlib/AudioCriticalSection.cpp
  soundlib/AudioCriticalSection.h
  soundlib/AudioReadTarget.h
  soundlib/BitReader.h
  soundlib/ChunkReader.h
  soundlib/Container.h
  soundlib/ContainerMMCMP.cpp
  soundlib/ContainerPP20.cpp
  soundlib/ContainerUMX.cpp
  soundlib/ContainerXPK.cpp
  soundlib/Dither.cpp
  soundlib/Dither.h
  soundlib/Dlsbank.cpp
  soundlib/Dlsbank.h
  soundlib/Fastmix.cpp
  soundlib/FloatMixer.h
  soundlib/InstrumentExtensions.cpp
  soundlib/IntMixer.h
  soundlib/ITCompression.cpp
  soundlib/ITCompression.h
  soundlib/ITTools.cpp
  soundlib/ITTools.h
  soundlib/Load_669.cpp
  soundlib/Load_amf.cpp
  soundlib/Load_ams.cpp
  soundlib/Load_c67.cpp
  soundlib/Load_dbm.cpp
  soundlib/Load_digi.cpp
  soundlib/Load_dmf.cpp
  soundlib/Load_dsm.cpp
  soundlib/Load_dtm.cpp
  soundlib/Load_far.cpp
  soundlib/Load_gdm.cpp
  soundlib/Load_imf.cpp
  soundlib/Load_it.cpp
  soundlib/Load_itp.cpp
  soundlib/load_j2b.cpp
  soundlib/Load_mdl.cpp
  soundlib/Load_med.cpp
  soundlib/Load_mid.cpp
  soundlib/Load_mo3.cpp
  soundlib/Load_mod.cpp
  soundlib/Load_mt2.cpp
  soundlib/Load_mtm.cpp
  soundlib/Load_okt.cpp
  soundlib/Load_plm.cpp
  soundlib/Load_psm.cpp
  soundlib/Load_ptm.cpp
  soundlib/Load_s3m.cpp
  soundlib/Load_sfx.cpp
  soundlib/Load_stm.cpp
  soundlib/Load_stp.cpp
  soundlib/Load_uax.cpp
  soundlib/Load_ult.cpp
  soundlib/Load_wav.cpp
  soundlib/Load_xm.cpp
  soundlib/Loaders.h
  soundlib/Message.cpp
  soundlib/Message.h
  soundlib/MIDIEvents.cpp
  soundlib/MIDIEvents.h
  soundlib/MIDIMacros.cpp
  soundlib/MIDIMacros.h
  soundlib/Mixer.h
  soundlib/MixerInterface.h
  soundlib/MixerLoops.cpp
  soundlib/MixerLoops.h
  soundlib/MixerSettings.cpp
  soundlib/MixerSettings.h
  soundlib/MixFuncTable.cpp
  soundlib/MixFuncTable.h
  soundlib/mod_specifications.cpp
  soundlib/mod_specifications.h
  soundlib/ModChannel.cpp
  soundlib/ModChannel.h
  soundlib/modcommand.cpp
  soundlib/modcommand.h
  soundlib/ModInstrument.cpp
  soundlib/ModInstrument.h
  soundlib/ModSample.cpp
  soundlib/ModSample.h
  soundlib/ModSampleCopy.h
  soundlib/ModSequence.cpp
  soundlib/ModSequence.h
  soundlib/modsmp_ctrl.cpp
  soundlib/modsmp_ctrl.h
  soundlib/MPEGFrame.cpp
  soundlib/MPEGFrame.h
  soundlib/OggStream.cpp
  soundlib/OggStream.h
  soundlib/opal.h
  soundlib/OPL.cpp
  soundlib/OPL.h
  soundlib/pattern.cpp
  soundlib/pattern.h
  soundlib/patternContainer.cpp
  soundlib/patternContainer.h
  soundlib/Paula.cpp
  soundlib/Paula.h
  soundlib/plugins/DigiBoosterEcho.cpp
  soundlib/plugins/DigiBoosterEcho.h
  soundlib/plugins/dmo/Chorus.cpp
  soundlib/plugins/dmo/Chorus.h
  soundlib/plugins/dmo/Compressor.cpp
  soundlib/plugins/dmo/Compressor.h
  soundlib/plugins/dmo/Distortion.cpp
  soundlib/plugins/dmo/Distortion.h
  soundlib/plugins/dmo/DMOPlugin.cpp
  soundlib/plugins/dmo/DMOPlugin.h
  soundlib/plugins/dmo/Echo.cpp
  soundlib/plugins/dmo/Echo.h
  soundlib/plugins/dmo/Flanger.cpp
  soundlib/plugins/dmo/Flanger.h
  soundlib/plugins/dmo/Gargle.cpp
  soundlib/plugins/dmo/Gargle.h
  soundlib/plugins/dmo/I3DL2Reverb.cpp
  soundlib/plugins/dmo/I3DL2Reverb.h
  soundlib/plugins/dmo/ParamEq.cpp
  soundlib/plugins/dmo/ParamEq.h
  soundlib/plugins/dmo/WavesReverb.cpp
  soundlib/plugins/dmo/WavesReverb.h
  soundlib/plugins/LFOPlugin.cpp
  soundlib/plugins/LFOPlugin.h
  soundlib/plugins/PluginManager.cpp
  soundlib/plugins/PluginManager.h
  soundlib/plugins/PluginMixBuffer.h
  soundlib/plugins/PluginStructs.h
  soundlib/plugins/PlugInterface.cpp
  soundlib/plugins/PlugInterface.h
  soundlib/Resampler.h
  soundlib/RowVisitor.cpp
  soundlib/RowVisitor.h
  soundlib/S3MTools.cpp
  soundlib/S3MTools.h
  soundlib/SampleFormatFLAC.cpp
  soundlib/SampleFormatMediaFoundation.cpp
  soundlib/SampleFormatMP3.cpp
  soundlib/SampleFormatOpus.cpp
  soundlib/SampleFormats.cpp
  soundlib/SampleFormatVorbis.cpp
  soundlib/SampleIO.cpp
  soundlib/SampleIO.h
  soundlib/Snd_defs.h
  soundlib/Snd_flt.cpp
  soundlib/Snd_fx.cpp
  soundlib/Sndfile.cpp
  soundlib/Sndfile.h
  soundlib/Sndmix.cpp
  soundlib/SoundFilePlayConfig.cpp
  soundlib/SoundFilePlayConfig.h
  soundlib/Tables.cpp
  soundlib/Tables.h
  soundlib/Tagging.cpp
  soundlib/Tagging.h
  soundlib/tuning.cpp
  soundlib/tuning.h
  soundlib/tuningbase.cpp
  soundlib/tuningbase.h
  soundlib/tuningCollection.cpp
  soundlib/tuningcollection.h
  soundlib/UMXTools.cpp
  soundlib/UMXTools.h
  soundlib/UpgradeModule.cpp
  soundlib/WAVTools.cpp
  soundlib/WAVTools.h
  soundlib/WindowedFIR.cpp
  soundlib/WindowedFIR.h
  soundlib/XMTools.cpp
  soundlib/XMTools.h
)

target_include_directories(${PROJECT_NAME} PRIVATE . include common build/svn_version ${ZLIB_INCLUDE_DIR})
target_compile_definitions(${PROJECT_NAME} PRIVATE LIBOPENMPT_BUILD MPT_PACKAGE MPT_WITH_ZLIB)

install(FILES libopenmpt/libopenmpt.h libopenmpt/libopenmpt_config.h libopenmpt/libopenmpt_version.h DESTINATION include/libopenmpt)
install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib)
