Juce problem compiling Ctrlr


#1

Greetings,

Before anything else I must admit that I'm no programmer and I have zero skills debugging C++. However, I do know how to compile software for Linux, and I've run into a bad problem when compiling the VST plugin for the Ctrlr application. I'm hoping that one of the Juce gurus can point me towards a solution for this problem:

 

[dlphilp@localhost VST]$ ./build.sh
CTRLR[linux]: Building for x86_64
CTRLR[linux]: PCH not rebuilt, use -f to force
CTRLR[linux]: Remove the shared source, for main() compatibility
CTRLR[linux]: Build now

Compiling CtrlrStandaloneApplication.cpp
Compiling juce_audio_processors.cpp

...

In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:57:0:
/usr/include/X11/Xlib.h:3818:5: error: ‘Drawable’ has not been declared
     Drawable  /* d */,
     ^
/usr/include/X11/Xlib.h:3829:5: error: reference to ‘Drawable’ is ambiguous
     Drawable  /* d */,
     ^
In file included from /usr/include/X11/Xlib.h:44:0,
                 from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:57:
/usr/include/X11/X.h:97:13: note: candidates are: typedef XID Drawable
 typedef XID Drawable;
             ^
In file included from ../../../VST/JuceLibraryCode/modules/juce_audio_plugin_client/../../../../../Juce/modules/juce_audio_plugin_client/../juce_gui_basics/juce_gui_basics.h:185:0,
                 from ../../../VST/JuceLibraryCode/modules/juce_audio_plugin_client/../../../../../Juce/modules/juce_audio_plugin_client/juce_audio_plugin_client.h:28,
                 from ../../../VST/JuceLibraryCode/modules/juce_audio_plugin_client/juce_audio_plugin_client.h:4,
                 from ../../../VST/JuceLibraryCode/JuceHeader.h:20,
                 from ../../../../Source/Core/stdafx.h:86,
                 from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:36:
../../../VST/JuceLibraryCode/modules/juce_audio_plugin_client/../../../../../Juce/modules/juce_audio_plugin_client/../juce_gui_basics/drawables/juce_Drawable.h:35:7: note:                 class juce::Drawable
 class JUCE_API  Drawable  : public Component
       ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:57:0:
/usr/include/X11/Xlib.h:3829:5: error: ‘Drawable’ has not been declared
     Drawable  /* d */,
     ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:158:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘void juce::VSTPluginWindow::prepareXEvent(XEvent&, const juce::MouseEvent&) const’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2421:22: error: ‘struct XCrossingEvent’ has no member named ‘time’
         ev.xcrossing.time = CurrentTime;
                      ^
make: *** [../build/x86_64/juce_audio_processors_bd1ca294.o] Error 1
CTRLR[linux]: build failed

I have written to the author, but it may be a while before I hear from him. Meanwhile I was hoping that this information might give someone a hint where the troubles lie. Any suggestions ?

Thanks in advance, and thanks esp. to Jules and the whole community for Juce.

Best,

Dave Phillips

 


#2

Maybe try including the X headers before juce? It looks like the compiler is getting confused over the duplicate symbol "Drawable"


#3

Thanks, Jules, the headers relocation took care of that problem, but it opened another:



[dlphilp@localhost VST]$ ./build.sh
CTRLR[linux]: Building for x86_64
CTRLR[linux]: PCH not rebuilt, use -f to force
CTRLR[linux]: Remove the shared source, for main() compatibility
CTRLR[linux]: Build now

Compiling CtrlrStandaloneApplication.cpp
Compiling juce_audio_processors.cpp

In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:242:8: error: ‘Display’ does not name a type
 extern Display* display;
        ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:243:8: error: ‘XContext’ does not name a type
 extern XContext windowHandleXContext;
        ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:245:31: error: typedef ‘juce::EventProcPtr’ is initialized (use decltype instead)
 typedef void (*EventProcPtr) (XEvent* ev);
                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:245:31: error: ‘XEvent’ was not declared in this scope
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:245:39: error: ‘ev’ was not declared in this scope
 typedef void (*EventProcPtr) (XEvent* ev);
                                       ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:251:39: error: ‘Display’ was not declared in this scope
     static int temporaryErrorHandler (Display*, XErrorEvent*)
                                       ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:251:47: error: expected primary-expression before ‘,’ token
     static int temporaryErrorHandler (Display*, XErrorEvent*)
                                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:251:49: error: ‘XErrorEvent’ was not declared in this scope
     static int temporaryErrorHandler (Display*, XErrorEvent*)
                                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:251:61: error: expected primary-expression before ‘)’ token
     static int temporaryErrorHandler (Display*, XErrorEvent*)
                                                             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:252:5: error: expected ‘,’ or ‘;’ before ‘{’ token
     {
     ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:257:12: error: ‘EventProcPtr’ does not name a type
     static EventProcPtr getPropertyFromXWindow (Window handle, Atom atom)
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:276:5: error: ‘Window’ does not name a type
     Window getChildWindow (Window windowToCheck)
     ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:295:71: error: ‘XEvent’ has not been declared
     static void translateJuceToXButtonModifiers (const MouseEvent& e, XEvent& ev) noexcept
                                                                       ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In function ‘void juce::{anonymous}::translateJuceToXButtonModifiers(const juce::MouseEvent&, int&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:299:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.button = Button1;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:299:33: error: ‘Button1’ was not declared in this scope
             ev.xbutton.button = Button1;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:300:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.state |= Button1Mask;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:300:33: error: ‘Button1Mask’ was not declared in this scope
             ev.xbutton.state |= Button1Mask;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:304:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.button = Button3;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:304:33: error: ‘Button3’ was not declared in this scope
             ev.xbutton.button = Button3;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:305:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.state |= Button3Mask;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:305:33: error: ‘Button3Mask’ was not declared in this scope
             ev.xbutton.state |= Button3Mask;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:309:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.button = Button2;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:309:33: error: ‘Button2’ was not declared in this scope
             ev.xbutton.button = Button2;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:310:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.state |= Button2Mask;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:310:33: error: ‘Button2Mask’ was not declared in this scope
             ev.xbutton.state |= Button2Mask;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: At global scope:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:314:71: error: ‘XEvent’ has not been declared
     static void translateJuceToXMotionModifiers (const MouseEvent& e, XEvent& ev) noexcept
                                                                       ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In function ‘void juce::{anonymous}::translateJuceToXMotionModifiers(const juce::MouseEvent&, int&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:316:43: error: request for member ‘xmotion’ in ‘ev’, which is of non-class type ‘int’
         if (e.mods.isLeftButtonDown())          ev.xmotion.state |= Button1Mask;
                                           ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:316:60: error: ‘Button1Mask’ was not declared in this scope
         if (e.mods.isLeftButtonDown())          ev.xmotion.state |= Button1Mask;
                                                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:317:49: error: request for member ‘xmotion’ in ‘ev’, which is of non-class type ‘int’
         else if (e.mods.isRightButtonDown())    ev.xmotion.state |= Button3Mask;
                                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:317:66: error: ‘Button3Mask’ was not declared in this scope
         else if (e.mods.isRightButtonDown())    ev.xmotion.state |= Button3Mask;
                                                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:318:50: error: request for member ‘xmotion’ in ‘ev’, which is of non-class type ‘int’
         else if (e.mods.isMiddleButtonDown())   ev.xmotion.state |= Button2Mask;
                                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:318:67: error: ‘Button2Mask’ was not declared in this scope
         else if (e.mods.isMiddleButtonDown())   ev.xmotion.state |= Button2Mask;
                                                                   ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: At global scope:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:321:73: error: ‘XEvent’ has not been declared
     static void translateJuceToXCrossingModifiers (const MouseEvent& e, XEvent& ev) noexcept
                                                                         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In function ‘void juce::{anonymous}::translateJuceToXCrossingModifiers(const juce::MouseEvent&, int&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:323:43: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         if (e.mods.isLeftButtonDown())          ev.xcrossing.state |= Button1Mask;
                                           ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:323:62: error: ‘Button1Mask’ was not declared in this scope
         if (e.mods.isLeftButtonDown())          ev.xcrossing.state |= Button1Mask;
                                                              ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:324:49: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         else if (e.mods.isRightButtonDown())    ev.xcrossing.state |= Button3Mask;
                                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:324:68: error: ‘Button3Mask’ was not declared in this scope
         else if (e.mods.isRightButtonDown())    ev.xcrossing.state |= Button3Mask;
                                                                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:325:50: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         else if (e.mods.isMiddleButtonDown())   ev.xcrossing.state |= Button2Mask;
                                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:325:69: error: ‘Button2Mask’ was not declared in this scope
         else if (e.mods.isMiddleButtonDown())   ev.xcrossing.state |= Button2Mask;
                                                                     ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: At global scope:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:328:98: error: ‘XEvent’ has not been declared
     static void translateJuceToXMouseWheelModifiers (const MouseEvent& e, const float increment, XEvent& ev) noexcept
                                                                                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In function ‘void juce::{anonymous}::translateJuceToXMouseWheelModifiers(const juce::MouseEvent&, float, int&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:332:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.button = Button5;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:332:33: error: ‘Button5’ was not declared in this scope
             ev.xbutton.button = Button5;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:333:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.state |= Button5Mask;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:333:33: error: ‘Button5Mask’ was not declared in this scope
             ev.xbutton.state |= Button5Mask;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:337:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.button = Button4;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:337:33: error: ‘Button4’ was not declared in this scope
             ev.xbutton.button = Button4;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:338:16: error: request for member ‘xbutton’ in ‘ev’, which is of non-class type ‘int’
             ev.xbutton.state |= Button4Mask;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:338:33: error: ‘Button4Mask’ was not declared in this scope
             ev.xbutton.state |= Button4Mask;
                                 ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: At global scope:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2139:5: error: ‘Window’ does not name a type
     Window pluginWindow;
     ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2140:5: error: ‘EventProcPtr’ does not name a type
     EventProcPtr pluginProc;
     ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2399:28: error: ‘XEvent’ has not been declared
     void sendEventToChild (XEvent& event)
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2415:25: error: ‘XEvent’ has not been declared
     void prepareXEvent (XEvent& ev, const MouseEvent& e) const noexcept
                         ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In constructor ‘juce::VSTPluginWindow::VSTPluginWindow(juce::VSTPluginInstance&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1925:9: error: ‘pluginWindow’ was not declared in this scope
         pluginWindow = None;
         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1926:9: error: ‘pluginProc’ was not declared in this scope
         pluginProc = None;
         ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::componentMovedOrResized(bool, bool)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1978:17: error: ‘pluginWindow’ was not declared in this scope
             if (pluginWindow != 0)
                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1980:32: error: ‘display’ was not declared in this scope
                 XResizeWindow (display, pluginWindow, getWidth(), getHeight());
                                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1980:78: error: ‘XResizeWindow’ was not declared in this scope
                 XResizeWindow (display, pluginWindow, getWidth(), getHeight());
                                                                              ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1981:75: error: ‘XMoveWindow’ was not declared in this scope
                 XMoveWindow (display, pluginWindow, pos.getX(), pos.getY());
                                                                           ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:1982:50: error: ‘XMapRaised’ was not declared in this scope
                 XMapRaised (display, pluginWindow);
                                                  ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::paint(juce::Graphics&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2048:17: error: ‘pluginWindow’ was not declared in this scope
             if (pluginWindow != 0)
                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2052:17: error: ‘XEvent’ was not declared in this scope
                 XEvent ev = { 0 };
                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2052:24: error: expected ‘;’ before ‘ev’
                 XEvent ev = { 0 };
                        ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2053:17: error: ‘ev’ was not declared in this scope
                 ev.xexpose.type = Expose;
                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2053:35: error: ‘Expose’ was not declared in this scope
                 ev.xexpose.type = Expose;
                                   ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2054:38: error: ‘display’ was not declared in this scope
                 ev.xexpose.display = display;
                                      ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseDown(const juce::MouseEvent&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2102:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow == 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2107:9: error: ‘XEvent’ was not declared in this scope
         XEvent ev;
         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2107:16: error: expected ‘;’ before ‘ev’
         XEvent ev;
                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2108:24: error: ‘ev’ was not declared in this scope
         prepareXEvent (ev, e);
                        ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2109:27: error: ‘ButtonPress’ was not declared in this scope
         ev.xbutton.type = ButtonPress;
                           ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘void juce::VSTPluginWindow::openPluginWindow()’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2277:9: error: ‘pluginWindow’ was not declared in this scope
         pluginWindow = getChildWindow ((Window) getWindowHandle());
         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2277:41: error: ‘Window’ was not declared in this scope
         pluginWindow = getChildWindow ((Window) getWindowHandle());
                                         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2277:66: error: ‘getChildWindow’ was not declared in this scope
         pluginWindow = getChildWindow ((Window) getWindowHandle());
                                                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2280:13: error: ‘pluginProc’ was not declared in this scope
             pluginProc = (EventProcPtr) getPropertyFromXWindow (pluginWindow,
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2280:27: error: ‘EventProcPtr’ was not declared in this scope
             pluginProc = (EventProcPtr) getPropertyFromXWindow (pluginWindow,
                           ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2280:41: error: expected ‘;’ before ‘getPropertyFromXWindow’
             pluginProc = (EventProcPtr) getPropertyFromXWindow (pluginWindow,
                                         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2298:25: error: ‘display’ was not declared in this scope
             XMapRaised (display, pluginWindow);
                         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2298:46: error: ‘XMapRaised’ was not declared in this scope
             XMapRaised (display, pluginWindow);
                                              ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘void juce::VSTPluginWindow::closePluginWindow()’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2335:13: error: ‘pluginWindow’ was not declared in this scope
             pluginWindow = 0;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2336:13: error: ‘pluginProc’ was not declared in this scope
             pluginProc = 0;
             ^
In file included from ../../../../Juce/modules/juce_audio_processors/juce_audio_processors.cpp:168:0:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘void juce::VSTPluginWindow::sendEventToChild(int&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2401:13: error: ‘pluginProc’ was not declared in this scope
         if (pluginProc != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2406:18: error: ‘pluginWindow’ was not declared in this scope
         else if (pluginWindow != 0)
                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2410:25: error: ‘display’ was not declared in this scope
             XSendEvent (display, pluginWindow, False, NoEventMask, &event);
                         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2410:48: error: ‘False’ was not declared in this scope
             XSendEvent (display, pluginWindow, False, NoEventMask, &event);
                                                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2410:55: error: ‘NoEventMask’ was not declared in this scope
             XSendEvent (display, pluginWindow, False, NoEventMask, &event);
                                                       ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2410:74: error: ‘XSendEvent’ was not declared in this scope
             XSendEvent (display, pluginWindow, False, NoEventMask, &event);
                                                                          ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2411:28: error: ‘XFlush’ was not declared in this scope
             XFlush (display);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘void juce::VSTPluginWindow::prepareXEvent(int&, const juce::MouseEvent&) const’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2418:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.display = display;
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2418:32: error: ‘display’ was not declared in this scope
         ev.xcrossing.display = display;
                                ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2419:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.window = pluginWindow;
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2419:31: error: ‘pluginWindow’ was not declared in this scope
         ev.xcrossing.window = pluginWindow;
                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2420:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.root = RootWindow (display, DefaultScreen (display));
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2420:72: error: ‘DefaultScreen’ was not declared in this scope
         ev.xcrossing.root = RootWindow (display, DefaultScreen (display));
                                                                        ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2420:73: error: ‘RootWindow’ was not declared in this scope
         ev.xcrossing.root = RootWindow (display, DefaultScreen (display));
                                                                         ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2421:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.time = CurrentTime;
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2421:29: error: ‘CurrentTime’ was not declared in this scope
         ev.xcrossing.time = CurrentTime;
                             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2422:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.x = e.x;
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2423:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.y = e.y;
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2424:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.x_root = e.getScreenX();
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2425:12: error: request for member ‘xcrossing’ in ‘ev’, which is of non-class type ‘int’
         ev.xcrossing.y_root = e.getScreenY();
            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseEnter(const juce::MouseEvent&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2430:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2432:13: error: ‘XEvent’ was not declared in this scope
             XEvent ev;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2432:20: error: expected ‘;’ before ‘ev’
             XEvent ev;
                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2433:28: error: ‘ev’ was not declared in this scope
             prepareXEvent (ev, e);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2434:33: error: ‘EnterNotify’ was not declared in this scope
             ev.xcrossing.type = EnterNotify;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2435:33: error: ‘NotifyNormal’ was not declared in this scope
             ev.xcrossing.mode = NotifyNormal;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2436:35: error: ‘NotifyAncestor’ was not declared in this scope
             ev.xcrossing.detail = NotifyAncestor;
                                   ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseExit(const juce::MouseEvent&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2444:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2446:13: error: ‘XEvent’ was not declared in this scope
             XEvent ev;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2446:20: error: expected ‘;’ before ‘ev’
             XEvent ev;
                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2447:28: error: ‘ev’ was not declared in this scope
             prepareXEvent (ev, e);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2448:33: error: ‘LeaveNotify’ was not declared in this scope
             ev.xcrossing.type = LeaveNotify;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2449:33: error: ‘NotifyNormal’ was not declared in this scope
             ev.xcrossing.mode = NotifyNormal;
                                 ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2450:35: error: ‘NotifyAncestor’ was not declared in this scope
             ev.xcrossing.detail = NotifyAncestor;
                                   ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseMove(const juce::MouseEvent&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2459:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2461:13: error: ‘XEvent’ was not declared in this scope
             XEvent ev;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2461:20: error: expected ‘;’ before ‘ev’
             XEvent ev;
                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2462:28: error: ‘ev’ was not declared in this scope
             prepareXEvent (ev, e);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2463:31: error: ‘MotionNotify’ was not declared in this scope
             ev.xmotion.type = MotionNotify;
                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2464:34: error: ‘NotifyNormal’ was not declared in this scope
             ev.xmotion.is_hint = NotifyNormal;
                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseDrag(const juce::MouseEvent&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2471:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2473:13: error: ‘XEvent’ was not declared in this scope
             XEvent ev;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2473:20: error: expected ‘;’ before ‘ev’
             XEvent ev;
                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2474:28: error: ‘ev’ was not declared in this scope
             prepareXEvent (ev, e);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2475:31: error: ‘MotionNotify’ was not declared in this scope
             ev.xmotion.type = MotionNotify;
                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2476:34: error: ‘NotifyNormal’ was not declared in this scope
             ev.xmotion.is_hint = NotifyNormal;
                                  ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseUp(const juce::MouseEvent&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2484:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2486:13: error: ‘XEvent’ was not declared in this scope
             XEvent ev;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2486:20: error: expected ‘;’ before ‘ev’
             XEvent ev;
                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2487:28: error: ‘ev’ was not declared in this scope
             prepareXEvent (ev, e);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2488:31: error: ‘ButtonRelease’ was not declared in this scope
             ev.xbutton.type = ButtonRelease;
                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp: In member function ‘virtual void juce::VSTPluginWindow::mouseWheelMove(const juce::MouseEvent&, const juce::MouseWheelDetails&)’:
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2496:13: error: ‘pluginWindow’ was not declared in this scope
         if (pluginWindow != 0)
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2498:13: error: ‘XEvent’ was not declared in this scope
             XEvent ev;
             ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2498:20: error: expected ‘;’ before ‘ev’
             XEvent ev;
                    ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2499:28: error: ‘ev’ was not declared in this scope
             prepareXEvent (ev, e);
                            ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2500:31: error: ‘ButtonPress’ was not declared in this scope
             ev.xbutton.type = ButtonPress;
                               ^
../../../../Juce/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:2504:31: error: ‘ButtonRelease’ was not declared in this scope
             ev.xbutton.type = ButtonRelease;
                               ^
make: *** [../build/x86_64/juce_audio_processors_bd1ca294.o] Error 1
CTRLR[linux]: build failed

I missed something again ? Suggestions welcome. :)

Best,

dp