diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,6 +59,15 @@ else() set(HAVE_CDDA_IOCTL_DEVICE 0) endif() +execute_process( + COMMAND sed -e "s|cdda_private_data_t \\*private;|cdda_private_data_t \\*private_data;|g" + INPUT_FILE ${CDPARANOIA_INCLUDE_DIR}/cdda_interface.h + OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/cdda_interface.hpp + RESULT_VARIABLE CDDA_INTERFACE_EDIT_ERROR +) +if (CDDA_INTERFACE_EDIT_ERROR) + message(STATUS "Fixing cdda_interface.h for C++ failed with exit code ${CDDA_INTERFACE_EDIT_ERROR}") +endif() configure_file(config-audiocd.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-audiocd.h) diff --git a/audiocd.cpp b/audiocd.cpp --- a/audiocd.cpp +++ b/audiocd.cpp @@ -28,10 +28,9 @@ extern "C" { //cdda_interface.h in cdparanoia 10.2 has a member called 'private' which the C++ compiler doesn't like - #define private _private - #include + //we will thus use a generated local copy which renames that member. + #include "cdda_interface.hpp" #include - #undef private void paranoiaCallback(long, int); KDE_EXPORT int kdemain(int argc, char ** argv); diff --git a/plugins/wav/encodercda.cpp b/plugins/wav/encodercda.cpp --- a/plugins/wav/encodercda.cpp +++ b/plugins/wav/encodercda.cpp @@ -43,9 +43,8 @@ extern "C" { //cdda_interface.h in cdparanoia 10.2 has a member called 'private' which the C++ compiler doesn't like - #define private _private - #include - #undef private + //we will thus use a generated local copy which renames that member. + #include "cdda_interface.hpp" } inline int16_t swap16 (int16_t i)