1
function linuxmakeitoctave3(mode)
2
% This is the GNU/Linux version of makeit to build the Linux
3
% mex files for Octave on Linux.
5
if ~IsLinux || ~IsOctave
6
error('This script is for Octave on Linux only!');
13
fprintf('Building plugin type %i ...\n\n', mode);
15
% Target folder depends if this is a 64 bit or 32 bit runtime:
16
if ~isempty(findstr(computer, '_64'))
17
target = 'PsychBasic/Octave3LinuxFiles64/';
19
target = 'PsychBasic/Octave3LinuxFiles/';
22
% Special folder for ARM binaries:
23
if ~isempty(findstr(computer, 'arm'))
24
target = 'PsychBasic/Octave3LinuxFilesARM/';
30
% Setting "if 1" would enable GStreamer-SDK functions, but be backwards
31
% incompatible with older Linux distros we'd like to keep supporting,
34
% Build against GStreamer-SDK for Linux from www.gstreamer.com and
35
% enable support for camerabin2 recording with selection of video
36
% encoding profiles via -DPTB_USE_GSTENCODINGPROFILES
38
% This will disable backwards compatibility with old Linux distros,
39
% so only use for testing, not for production releases!
40
mex -v -g "-W -std=gnu99" --output ../Projects/Linux/build/Screen.mex -DPTBMODULE_Screen -DPTB_USE_GSTREAMER -DPTB_USE_GSTENCODINGPROFILES -DPTBVIDEOCAPTURE_LIBDC -DPTBOCTAVE3MEX -D_GNU_SOURCE -I/usr/X11R6/include -I/opt/gstreamer-sdk/include/gstreamer-0.10 -I/opt/gstreamer-sdk/include/glib-2.0 -I/opt/gstreamer-sdk/lib/glib-2.0/include -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/opt/gstreamer-sdk/include/libxml2 -ICommon/Base -ICommon/Screen -ILinux/Base -ILinux/Screen -L/usr/X11R6/lib -L/opt/gstreamer-sdk/lib Common/Base/*.cc Linux/Base/*.c Linux/Screen/*.c Common/Screen/*.c Common/Base/*.c -lc -ldl -lrt -lGL -lGLU -lX11 -lXext -lgstreamer-0.10 -lgstbase-0.10 -lgstapp-0.10 -lgstinterfaces-0.10 -lgstpbutils-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lglib-2.0 -lXxf86vm -ldc1394 -lusb-1.0 -lpciaccess -lXi -lXrandr -lXfixes
42
% Build against system installed GStreamer, backwards compatible to
43
% old Linux distros. This is the default for production builds:
44
mex -v -g "-W -std=gnu99" --output ../Projects/Linux/build/Screen.mex -DPTBMODULE_Screen -DPTB_USE_GSTREAMER -DPTBVIDEOCAPTURE_LIBDC -DPTBOCTAVE3MEX -D_GNU_SOURCE -I/usr/X11R6/include -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -ICommon/Base -ICommon/Screen -ILinux/Base -ILinux/Screen -L/usr/X11R6/lib Common/Base/*.cc Linux/Base/*.c Linux/Screen/*.c Common/Screen/*.c Common/Base/*.c -lc -ldl -lrt -lGL -lGLU -lX11 -lXext -lgstreamer-0.10 -lgstbase-0.10 -lgstapp-0.10 -lgstinterfaces-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lglib-2.0 -lXxf86vm -ldc1394 -lusb-1.0 -lpciaccess -lGLEW -lXi -lXrandr -lXfixes
47
unix(['mv ../Projects/Linux/build/Screen.mex ' PsychtoolboxRoot target]);
48
striplibsfrommexfile([PsychtoolboxRoot target 'Screen.mex']);
52
% Build Screen.mex with Waffle display backend, for desktop Linux:
53
fprintf('Hmm, me likes some Waffle with this Screen :-)\n');
54
mex -v -g "-W -std=gnu99" --output ../Projects/Linux/build/Screen.mex -DPTBMODULE_Screen -DPTB_USE_WAFFLE -DPTB_USE_GSTREAMER -DPTBVIDEOCAPTURE_LIBDC -DPTBOCTAVE3MEX -D_GNU_SOURCE -I/usr/local/include/waffle-1 -L/usr/local/lib/x86_64-linux-gnu/ -I/usr/X11R6/include -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libxml2 -ICommon/Base -ICommon/Screen -ILinux/Base -ILinux/Screen -L/usr/X11R6/lib Common/Base/*.cc Linux/Base/*.c Linux/Screen/*.c Common/Screen/*.c Common/Base/*.c -lc -ldl -lrt -lGL -lGLU -lX11 -lXext -lgstreamer-0.10 -lgstbase-0.10 -lgstapp-0.10 -lgstinterfaces-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lglib-2.0 -lXxf86vm -ldc1394 -lusb-1.0 -lpciaccess -lXi -lXrandr -lXfixes -lwaffle-1
56
unix(['mv ../Projects/Linux/build/Screen.mex ' PsychtoolboxRoot target]);
57
striplibsfrommexfile([PsychtoolboxRoot target 'Screen.mex']);
61
% Build Screen.mex with Waffle display backend, for embedded/android devices:
62
fprintf('Hmm, me likes some mobile Waffle with this Screen :-)\n');
63
mex -v -g "-W -std=gnu99" --output ../Projects/Linux/build/Screen.mex -DPTBMODULE_Screen -DPTB_USE_WAFFLE -DPTB_USE_EGL -DPTB_USE_GLES1 -DPTB_USE_GSTREAMER -DPTBVIDEOCAPTURE_LIBDC -DPTBOCTAVE3MEX -D_GNU_SOURCE -I/usr/local/include/waffle-1 -L/usr/local/lib/arm-linux-gnueabihf/ -I/usr/X11R6/include -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/libxml2 -ICommon/Base -ICommon/Screen -ILinux/Base -ILinux/Screen -L/usr/X11R6/lib Common/Base/*.cc Linux/Base/*.c Linux/Screen/*.c Common/Screen/*.c Common/Base/*.c -lc -ldl -lrt -lGLESv1_CM -lGL -lGLU -lX11 -lXext -lgstreamer-0.10 -lgstbase-0.10 -lgstapp-0.10 -lgstinterfaces-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lglib-2.0 -lXxf86vm -ldc1394 -lusb-1.0 -lpciaccess -lXi -lXrandr -lXfixes -lwaffle-1
65
unix(['mv ../Projects/Linux/build/Screen.mex ' PsychtoolboxRoot target]);
66
striplibsfrommexfile([PsychtoolboxRoot target 'Screen.mex']);
71
mex -v -g --output ../Projects/Linux/build/GetSecs.mex -DPTBMODULE_GetSecs -DPTBOCTAVE3MEX -ICommon/Base -ILinux/Base -ICommon/GetSecs -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/GetSecs/*.c -lc -lrt
72
unix(['mv ../Projects/Linux/build/GetSecs.mex ' PsychtoolboxRoot target]);
73
striplibsfrommexfile([PsychtoolboxRoot target 'GetSecs.mex']);
78
mex -v -g --output ../Projects/Linux/build/WaitSecs.mex -DPTBMODULE_WaitSecs -DPTBOCTAVE3MEX -ICommon/Base -ILinux/Base -ICommon/WaitSecs -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/WaitSecs/*.c -lc -lrt
79
unix(['mv ../Projects/Linux/build/WaitSecs.mex ' PsychtoolboxRoot target]);
80
striplibsfrommexfile([PsychtoolboxRoot target 'WaitSecs.mex']);
84
% Build PsychPortAudio.mex:
85
mex -v -g --output ../Projects/Linux/build/PsychPortAudio.mex -DPTBMODULE_PsychPortAudio -DPTBOCTAVE3MEX -ICommon/Base -ILinux/Base -ICommon/PsychPortAudio -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/PsychPortAudio/*.c /usr/local/lib/libportaudio.a -lc -lrt -lasound
86
unix(['mv ../Projects/Linux/build/PsychPortAudio.mex ' PsychtoolboxRoot target]);
87
striplibsfrommexfile([PsychtoolboxRoot target 'PsychPortAudio.mex']);
92
mex -v -g --output ../Projects/Linux/build/Eyelink.mex -DPTBMODULE_Eyelink -DPTBOCTAVE3MEX -ICommon/Base -ILinux/Base -ICommon/Eyelink -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/Eyelink/*.c -leyelink_core -lc -lrt
93
unix(['mv ../Projects/Linux/build/Eyelink.mex ' PsychtoolboxRoot target]);
94
striplibsfrommexfile([PsychtoolboxRoot target 'Eyelink.mex']);
99
mex -v -g --output ../Projects/Linux/build/IOPort.mex -DPTBMODULE_IOPort -DPTBOCTAVE3MEX -ICommon/Base -ILinux/Base -ICommon/IOPort -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/IOPort/*.c -lc -lrt
100
unix(['mv ../Projects/Linux/build/IOPort.mex ' PsychtoolboxRoot target]);
101
striplibsfrommexfile([PsychtoolboxRoot target 'IOPort.mex']);
105
% Build moglcore.mex:
107
cd('../../Psychtoolbox/PsychOpenGL/MOGL/source/')
109
mex -v -g --output moglcore.mex -DLINUX -DPTBOCTAVE3MEX -I/usr/X11R6/include -L/usr/X11R6/lib -lc -lGL -lGLU -lglut -lGLEW moglcore.c gl_auto.c gl_manual.c mogl_rebinder.c ftglesGlue.c
112
unix(['mv moglcore.mex ' PsychtoolboxRoot target]);
114
striplibsfrommexfile([PsychtoolboxRoot target 'moglcore.mex']);
118
% Build moglcore.mex for OpenGL-ES:
120
cd('../../Psychtoolbox/PsychOpenGL/MOGL/source/')
122
mex -v -g --output moglcore.mex -DPTB_USE_WAFFLE -DLINUX -DGLEW_STATIC -DPTBOCTAVE3MEX -I/usr/X11R6/include -L/usr/X11R6/lib -lc -lGLESv1_CM -lGL -lGLU -lglut moglcore.c gl_auto.c gl_manual.c glew.c mogl_rebinder.c ftglesGlue.c
125
unix(['mv moglcore.mex ' PsychtoolboxRoot target]);
127
striplibsfrommexfile([PsychtoolboxRoot target 'moglcore.mex']);
131
% Build PsychKinectCore.mex:
132
mex -v -g --output ../Projects/Linux/build/PsychKinectCore.mex -DPTBMODULE_PsychKinectCore -DPTBOCTAVE3MEX -I/usr/include/libusb-1.0 -I/usr/include/libfreenect -ICommon/Base -ILinux/Base -ICommon/PsychKinect -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/PsychKinect/*.c -lc -lrt -lfreenect -lusb-1.0
133
unix(['mv ../Projects/Linux/build/PsychKinectCore.mex ' PsychtoolboxRoot target]);
134
striplibsfrommexfile([PsychtoolboxRoot target 'PsychKinectCore.mex']);
138
% Build PsychHID.mex:
139
mex -v -g --output ../Projects/Linux/build/PsychHID.mex -DPTBMODULE_PsychHID -DPTBOCTAVE3MEX -I/usr/include/libusb-1.0 -ICommon/Base -ILinux/Base -ICommon/PsychHID -ILinux/PsychHID -ICommon/Screen Common/Base/*.cc Linux/Base/*.c Common/Base/*.c Common/PsychHID/*.c Linux/PsychHID/*.c -lc -ldl -lrt -lusb-1.0 -lX11 -lXi -lutil
140
unix(['mv ../Projects/Linux/build/PsychHID.mex ' PsychtoolboxRoot target]);
141
striplibsfrommexfile([PsychtoolboxRoot target 'PsychHID.mex']);
145
% Build moalcore.mex:
147
cd('../../Psychtoolbox/PsychSound/MOAL/source/')
149
mex -v -g --output moalcore.mex -DLINUX -DPTBOCTAVE3MEX -lc -lopenal moalcore.c al_auto.c al_manual.c alm.c
152
unix(['mv moalcore.mex ' PsychtoolboxRoot target]);
154
striplibsfrommexfile([PsychtoolboxRoot target 'moalcore.mex']);
159
mex -v -g --output PsychCV.mex -DPTBMODULE_PsychCV -DPTBOCTAVE3MEX -ICommon/Base -ICommon/PsychCV -ILinux/Base -I../Cohorts/ARToolkit/include Common/Base/*.cc Common/Base/*.c Linux/Base/*.c Common/PsychCV/*.c -lc -lrt /usr/local/lib/libARMulti.a /usr/local/lib/libARgsub.a /usr/local/lib/libARgsub_lite.a /usr/local/lib/libARgsubUtil.a /usr/local/lib/libAR.a -lglut
160
unix(['mv PsychCV.mex ' PsychtoolboxRoot target]);
161
striplibsfrommexfile([PsychtoolboxRoot target 'PsychCV.mex']);
164
% Remove stale object files: