cmake_minimum_required(VERSION 3.0)
project(libstk)

set(LIBSTK_SOURCES
	src/ADSR.cpp
	src/Asymp.cpp
	src/BandedWG.cpp
	src/BeeThree.cpp
	src/BiQuad.cpp
	src/Blit.cpp
	src/BlitSaw.cpp
	src/BlitSquare.cpp
	src/BlowBotl.cpp
	src/BlowHole.cpp
	src/Bowed.cpp
	src/Brass.cpp
	src/Chorus.cpp
	src/Clarinet.cpp
	src/Delay.cpp
	src/DelayA.cpp
	src/DelayL.cpp
	src/Drummer.cpp
	src/Echo.cpp
	src/Envelope.cpp
	src/FileLoop.cpp
	src/FileRead.cpp
	src/FileWrite.cpp
	src/FileWvIn.cpp
	src/FileWvOut.cpp
	src/Fir.cpp
	src/Flute.cpp
	src/FM.cpp
	src/FMVoices.cpp
	src/FormSwep.cpp
	src/FreeVerb.cpp
	src/Granulate.cpp
	src/Guitar.cpp
	src/HevyMetl.cpp
	src/Iir.cpp
	src/JCRev.cpp
	src/LentPitShift.cpp
	src/Makefile.in
	src/Mandolin.cpp
	src/Mesh2D.cpp
	src/Messager.cpp
	src/MidiFileIn.cpp
	src/Modal.cpp
	src/ModalBar.cpp
	src/Modulate.cpp
	src/Moog.cpp
	src/Noise.cpp
	src/NRev.cpp
	src/OnePole.cpp
	src/OneZero.cpp
	src/PercFlut.cpp
	src/Phonemes.cpp
	src/PitShift.cpp
	src/Plucked.cpp
	src/PoleZero.cpp
	src/PRCRev.cpp
	src/Resonate.cpp
	src/Rhodey.cpp
	src/Sampler.cpp
	src/Saxofony.cpp
	src/Shakers.cpp
	src/Simple.cpp
	src/SineWave.cpp
	src/SingWave.cpp
	src/Sitar.cpp
	src/Skini.cpp
	src/Sphere.cpp
	src/StifKarp.cpp
	src/Stk.cpp
	src/TapDelay.cpp
	src/TubeBell.cpp
	src/Twang.cpp
	src/TwoPole.cpp
	src/TwoZero.cpp
	src/Voicer.cpp
	src/VoicForm.cpp
	src/Whistle.cpp
	src/Wurley.cpp)

set(LIBSTK_REALTIME_SOURCES
	src/InetWvIn.cpp
	src/InetWvOut.cpp
	src/Mutex.cpp
	src/RtAudio.cpp
	src/RtMidi.cpp
	src/RtWvIn.cpp
	src/RtWvOut.cpp
	src/Socket.cpp
	src/TcpClient.cpp
	src/TcpServer.cpp
	src/Thread.cpp
	src/UdpSocket.cpp
)

set(LIBSTK_HEADERS
	include/ADSR.h
	include/Asymp.h
	include/BandedWG.h
	include/BeeThree.h
	include/BiQuad.h
	include/Blit.h
	include/BlitSaw.h
	include/BlitSquare.h
	include/BlowBotl.h
	include/BlowHole.h
	include/Bowed.h
	include/BowTable.h
	include/Brass.h
	include/Chorus.h
	include/Clarinet.h
	include/Cubic.h
	include/Delay.h
	include/DelayA.h
	include/DelayL.h
	include/Drummer.h
	include/Echo.h
	include/Effect.h
	include/Envelope.h
	include/FileLoop.h
	include/FileRead.h
	include/FileWrite.h
	include/FileWvIn.h
	include/FileWvOut.h
	include/Filter.h
	include/Fir.h
	include/Flute.h
	include/FM.h
	include/FMVoices.h
	include/FormSwep.h
	include/FreeVerb.h
	include/Function.h
	include/Generator.h
	include/Granulate.h
	include/Guitar.h
	include/HevyMetl.h
	include/Iir.h
	include/InetWvIn.h
	include/InetWvOut.h
	include/Instrmnt.h
	include/JCRev.h
	include/JetTable.h
	include/LentPitShift.h
	include/Mandolin.h
	include/Mesh2D.h
	include/Messager.h
	include/MidiFileIn.h
	include/Modal.h
	include/ModalBar.h
	include/Modulate.h
	include/Moog.h
	include/Mutex.h
	include/Noise.h
	include/NRev.h
	include/OnePole.h
	include/OneZero.h
	include/PercFlut.h
	include/Phonemes.h
	include/PitShift.h
	include/Plucked.h
	include/PoleZero.h
	include/PRCRev.h
	include/ReedTable.h
	include/Resonate.h
	include/Rhodey.h
	include/RtAudio.h
	include/RtMidi.h
	include/RtWvIn.h
	include/RtWvOut.h
	include/Sampler.h
	include/Saxofony.h
	include/Shakers.h
	include/Simple.h
	include/SineWave.h
	include/SingWave.h
	include/Sitar.h
	include/Skini.h
	include/SKINImsg.h
	include/SKINItbl.h
	include/Socket.h
	include/Sphere.h
	include/StifKarp.h
	include/Stk.h
	include/TapDelay.h
	include/TcpClient.h
	include/TcpServer.h
	include/Thread.h
	include/TubeBell.h
	include/Twang.h
	include/TwoPole.h
	include/TwoZero.h
	include/UdpSocket.h
	include/Vector3D.h
	include/Voicer.h
	include/VoicForm.h
	include/Whistle.h
	include/Wurley.h
	include/WvIn.h
	include/WvOut.h
)

add_library(libstk ${LIBSTK_SOURCES})
target_include_directories(libstk PRIVATE include PUBLIC $<INSTALL_INTERFACE:include>)
set_target_properties(libstk PROPERTIES PUBLIC_HEADER "${LIBSTK_HEADERS}")
target_compile_definitions(libstk PRIVATE __LITTLE_ENDIAN__)

install(TARGETS libstk EXPORT unofficial-libstk-config
	LIBRARY DESTINATION lib
	ARCHIVE DESTINATION lib
	RUNTIME DESTINATION bin
	PUBLIC_HEADER DESTINATION include/stk)
install(EXPORT unofficial-libstk-config NAMESPACE unofficial::libstk:: DESTINATION share/unofficial-libstk)