set_directory_properties(PROPERTIES SYSTEM TRUE) # These are the defaults set(RESID_INLINING 1) set(RESID_INLINE inline) set(RESID_BRANCH_HINTS 1) set(NEW_8580_FILTER 0) set(HAVE_BOOL 1) set(HAVE_LOG1P 1) if(CMAKE_CXX_COMPILER_ID MATCHES "GCC|Clang") set(HAVE_BUILTIN_EXPECT 1) else() set(HAVE_BUILTIN_EXPECT 0) endif() configure_file(resid/siddefs.h.in resid/siddefs.h @ONLY) add_library(resid_objects OBJECT resid/sid.cc resid/voice.cc resid/wave.cc resid/envelope.cc resid/filter.cc resid/dac.cc resid/extfilt.cc resid/pot.cc resid/version.cc ) target_include_directories(resid_objects PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/resid" "${CMAKE_CURRENT_BINARY_DIR}/resid" ) target_compile_definitions(resid_objects PUBLIC VERSION="1.0") set(RESID_WAVES wave6581_PST wave6581_PS_ wave6581_P_T wave6581__ST wave8580_PST wave8580_PS_ wave8580_P_T wave8580__ST ) set(RESID_SAMP2SRC_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/resid/samp2src.pl) foreach(WAVE_DATA IN LISTS RESID_WAVES) set(WAVE_DATA_IN ${CMAKE_CURRENT_SOURCE_DIR}/resid/${WAVE_DATA}.dat) set(WAVE_SRC_OUT ${CMAKE_CURRENT_BINARY_DIR}/resid/${WAVE_DATA}.h) set(WAVE_COMMAND "${PERL_EXECUTABLE}" "${RESID_SAMP2SRC_SCRIPT}" "${WAVE_DATA}" "${WAVE_DATA_IN}" "${WAVE_SRC_OUT}" ) add_custom_command(OUTPUT ${WAVE_SRC_OUT} COMMAND ${WAVE_COMMAND} VERBATIM) target_sources(resid_objects PUBLIC ${WAVE_SRC_OUT}) endforeach() # TODO CMake 3.12: Use target_link_libraries() to propagate usage requirements directly to sid plugin add_library(resid INTERFACE) target_sources(resid INTERFACE $) get_target_property(resid_includes resid_objects INCLUDE_DIRECTORIES) target_include_directories(resid INTERFACE ${resid_includes})