tags:
- ctags -R -h default --langmap=c:+.inc . ../guicast/ ../libzmpeg3 ../plugins ../thirdparty/ffmpeg-*
+ ctags -R -h default --langmap=c:+.inc . ../guicast/ ../libzmpeg3 ../plugins ../thirdparty/ffmpeg-* ../thirdparty/giflib-*
$(OBJDIR)/%.o: %.C
track->automation->get_camera(¢er_x,
¢er_y, ¢er_z, position, PLAY_FORWARD);
// follow image, not camera
- center_x = -center_x; center_y = -center_y;
+ center_x = -center_x * center_z; center_y = -center_y * center_z;
}
else
track->automation->get_projector(¢er_x,
// Processing drag operation.
// Create keyframe during first cursor motion.
- if(!button_press)
- {
+ if( !button_press ) {
float cursor_x = get_cursor_x();
float cursor_y = get_cursor_y();
canvas_to_output(mwindow->edl, 0, cursor_x, cursor_y);
- if(gui->current_operation == CWINDOW_CAMERA ||
- gui->current_operation == CWINDOW_PROJECTOR)
- {
- if(!gui->ctrl_down() && gui->shift_down() && !gui->translating_zoom)
- {
+ if( gui->current_operation == CWINDOW_CAMERA ||
+ gui->current_operation == CWINDOW_PROJECTOR ) {
+ if( !gui->ctrl_down() && gui->shift_down() && !gui->translating_zoom ) {
gui->translating_zoom = 1;
gui->reset_affected();
}
- else
- if(!gui->ctrl_down() && !gui->shift_down() && gui->translating_zoom)
- {
+ else if( !gui->ctrl_down() && !gui->shift_down() && gui->translating_zoom ) {
gui->translating_zoom = 0;
gui->reset_affected();
}
// Get target keyframe
- float last_center_x;
- float last_center_y;
- float last_center_z;
- int created;
-
- if(!gui->affected_x && !gui->affected_y && !gui->affected_z)
- {
- FloatAutos *affected_x_autos;
- FloatAutos *affected_y_autos;
- FloatAutos *affected_z_autos;
+ if( !gui->affected_x && !gui->affected_y && !gui->affected_z ) {
if(!gui->affected_track) return 0;
+ FloatAutos *affected_x_autos, *affected_y_autos, *affected_z_autos;
+ FloatAutos** autos = (FloatAutos**) gui->affected_track->automation->autos;
+ if( mwindow->edl->session->cwindow_operation == CWINDOW_CAMERA ) {
+ affected_x_autos = autos[AUTOMATION_CAMERA_X];
+ affected_y_autos = autos[AUTOMATION_CAMERA_Y];
+ affected_z_autos = autos[AUTOMATION_CAMERA_Z];
+ }
+ else {
+ affected_x_autos = autos[AUTOMATION_PROJECTOR_X];
+ affected_y_autos = autos[AUTOMATION_PROJECTOR_Y];
+ affected_z_autos = autos[AUTOMATION_PROJECTOR_Z];
+ }
double position = mwindow->edl->local_session->get_selectionstart(1);
int64_t track_position = gui->affected_track->to_units(position, 0);
-
- if(mwindow->edl->session->cwindow_operation == CWINDOW_CAMERA)
- {
- affected_x_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_CAMERA_X];
- affected_y_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_CAMERA_Y];
- affected_z_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_CAMERA_Z];
- }
- else
- {
- affected_x_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_PROJECTOR_X];
- affected_y_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_PROJECTOR_Y];
- affected_z_autos = (FloatAutos*)gui->affected_track->automation->autos[AUTOMATION_PROJECTOR_Z];
+ FloatAuto *prev_x = 0, *next_x = 0;
+ float new_x = affected_x_autos->get_value(track_position, PLAY_FORWARD, prev_x, next_x);
+ FloatAuto *prev_y = 0, *next_y = 0;
+ float new_y = affected_y_autos->get_value(track_position, PLAY_FORWARD, prev_y, next_y);
+ FloatAuto *prev_z = 0, *next_z = 0;
+ float new_z = affected_z_autos->get_value(track_position, PLAY_FORWARD, prev_z, next_z);
+ int zooming = gui->translating_zoom, created;
+ gui->affected_x = (FloatAuto*)gui->cwindow->calculate_affected_auto(
+ affected_x_autos, !zooming, &created, 0);
+ if( created ) {
+ gui->affected_x->set_value(new_x);
+ redraw_canvas = 1;
}
-
-
- if(gui->translating_zoom)
- {
- FloatAuto *previous = 0;
- FloatAuto *next = 0;
- float new_z = affected_z_autos->get_value(
- track_position,
- PLAY_FORWARD,
- previous,
- next);
- gui->affected_z =
- (FloatAuto*)gui->cwindow->calculate_affected_auto(
- affected_z_autos, 1, &created, 0);
- if(created) {
- gui->affected_z->set_value(new_z);
- redraw_canvas = 1;
- }
+ gui->affected_y = (FloatAuto*)gui->cwindow->calculate_affected_auto(
+ affected_y_autos, !zooming, &created, 0);
+ if( created ) {
+ gui->affected_y->set_value(new_y);
+ redraw_canvas = 1;
}
- else
- {
- FloatAuto *previous = 0;
- FloatAuto *next = 0;
- float new_x = affected_x_autos->get_value(
- track_position,
- PLAY_FORWARD,
- previous,
- next);
- previous = 0;
- next = 0;
- float new_y = affected_y_autos->get_value(
- track_position,
- PLAY_FORWARD,
- previous,
- next);
- gui->affected_x =
- (FloatAuto*)gui->cwindow->calculate_affected_auto(
- affected_x_autos, 1, &created, 0);
- if(created) {
- gui->affected_x->set_value(new_x);
- redraw_canvas = 1;
- }
- gui->affected_y =
- (FloatAuto*)gui->cwindow->calculate_affected_auto(
- affected_y_autos, 1, &created, 0);
- if(created) {
- gui->affected_y->set_value(new_y);
- redraw_canvas = 1;
- }
+ gui->affected_z = (FloatAuto*)gui->cwindow->calculate_affected_auto(
+ affected_z_autos, zooming, &created, 0);
+ if( created ) {
+ gui->affected_z->set_value(new_z);
+ redraw_canvas = 1;
}
-
calculate_origin();
- if(gui->translating_zoom)
- {
+ if( gui->translating_zoom ) {
gui->center_z = gui->affected_z->get_value();
}
- else
- {
+ else {
gui->center_x = gui->affected_x->get_value();
gui->center_y = gui->affected_y->get_value();
}
redraw = 1;
}
- if(gui->translating_zoom)
- {
- last_center_z = gui->affected_z->get_value();
+ float x_val = gui->affected_x->get_value();
+ float y_val = gui->affected_y->get_value();
+ float z_val = gui->affected_z->get_value();
+
+ if( gui->translating_zoom ) {
float z = gui->center_z + (cursor_y - gui->y_origin) / 128;
if( z < 0 ) z = 0;
- if(!EQUIV(last_center_z, z))
- {
+ if( !EQUIV(z_val, z) ) {
rerender = 1;
redraw = 1;
redraw_canvas = 1;
}
gui->affected_z->set_value(z);
}
- else
- {
- last_center_x = gui->affected_x->get_value();
- last_center_y = gui->affected_y->get_value();
+ else {
float dx = cursor_x - gui->x_origin;
float dy = cursor_y - gui->y_origin;
// follow image, not camera
- if(gui->current_operation == CWINDOW_CAMERA ) {
- dx = -dx; dy = -dy;
+ if( gui->current_operation == CWINDOW_CAMERA ) {
+ dx = -dx / z_val; dy = -dy / z_val;
}
float x = gui->center_x + dx;
float y = gui->center_y + dy;
gui->affected_x->set_value(x);
gui->affected_y->set_value(y);
- if( !EQUIV(last_center_x, x) || !EQUIV(last_center_y, y) )
- {
+ if( !EQUIV(x_val, x) || !EQUIV(y_val, y) ) {
rerender = 1;
redraw = 1;
redraw_canvas = 1;
}
- gui->affected_x->set_value(x);
- gui->affected_y->set_value(y);
}
}
static int gif_err = 0;
-#define GIF_ERR ,&gif_err
-#define GifErrorString(s) Gif##ErrorString(gif_err)
-#define GifLastError(s) gif_err
-
-const char *gifErrorString()
-{
- static char msg[32];
- snprintf(msg, sizeof(msg), "Gif Error %d", GifLastError());
- return msg;
-}
FileGIF::FileGIF(Asset *asset, File *file)
: FileList(asset, file, "GIFLIST", ".gif", FILE_GIF, FILE_GIF_LIST)
static int input_func(GifFileType *gif_file, GifByteType *buffer, int bytes)
{
FileGIF *file = (FileGIF*)gif_file->UserData;
- if(file->offset + bytes > file->size) bytes = file->size - file->offset;
- if(bytes > 0)
- {
+ if( file->offset + bytes > file->size )
+ bytes = file->size - file->offset;
+ if( bytes > 0 ) {
memcpy(buffer, file->data + file->offset, bytes);
file->offset += bytes;
}
offset = 0;
size = input->get_compressed_size();
- GifFileType *gif_file;
- GifRowType *gif_buffer;
- gif_file = DGifOpen(this, input_func GIF_ERR);
-
-
- if(gif_file == 0)
- {
- eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString());
+ GifFileType *gif_file = DGifOpen(this, input_func, &gif_err);
+ if( !gif_file ) {
+ eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString(gif_err));
return 1;
}
- gif_buffer = (GifRowType*)malloc(sizeof(GifRowType) * gif_file->SHeight);
+
+ GifRowType *gif_buffer = (GifRowType*)malloc(sizeof(GifRowType) * gif_file->SHeight);
int row_size = gif_file->SWidth * sizeof(GifPixelType);
gif_buffer[0] = (GifRowType)malloc(row_size);
- for(int i = 0; i < gif_file->SWidth; i++)
- {
+ for( int i=0; i<gif_file->SWidth; ++i )
gif_buffer[0][i] = gif_file->SBackGroundColor;
- }
-
- for(int i = 0; i < gif_file->SHeight; i++)
- {
+ for( int i=0; i<gif_file->SHeight; ++i ) {
gif_buffer[i] = (GifRowType)malloc(row_size);
memcpy(gif_buffer[i], gif_buffer[0], row_size);
}
+ int ret = 0, done = 0;
GifRecordType record_type;
- do
- {
- if(DGifGetRecordType(gif_file, &record_type) == GIF_ERROR)
- {
- eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString());
+ while( !ret && !done ) {
+ if( DGifGetRecordType(gif_file, &record_type) == GIF_ERROR ) {
+ eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString(gif_err));
+ ret = 1;
break;
}
- switch(record_type)
- {
- case IMAGE_DESC_RECORD_TYPE:
- {
- if(DGifGetImageDesc(gif_file) == GIF_ERROR)
- {
- eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString());
- break;
- }
-
- int row = gif_file->Image.Top;
- int col = gif_file->Image.Left;
- int width = gif_file->Image.Width;
- int height = gif_file->Image.Height;
- if(gif_file->Image.Left + gif_file->Image.Width > gif_file->SWidth ||
- gif_file->Image.Top + gif_file->Image.Height > gif_file->SHeight)
- {
- DGifCloseFile(gif_file GIF_ERR);
- for(int k = 0; k < gif_file->SHeight; k++)
- {
- free(gif_buffer[k]);
- }
- free(gif_buffer);
- return 1;
- }
-
- if (gif_file->Image.Interlace)
- {
- static int InterlacedOffset[] = { 0, 4, 2, 1 };
- static int InterlacedJumps[] = { 8, 8, 4, 2 };
+ switch( record_type ) {
+ case IMAGE_DESC_RECORD_TYPE: {
+ if( DGifGetImageDesc(gif_file) == GIF_ERROR ) {
+ eprintf("FileGIF::read_frame %d: %s\n", __LINE__, GifErrorString(gif_err));
+ break;
+ }
+ int row = gif_file->Image.Top;
+ int col = gif_file->Image.Left;
+ int width = gif_file->Image.Width;
+ int height = gif_file->Image.Height;
+ int ret = 0;
+ if( gif_file->Image.Left + gif_file->Image.Width > gif_file->SWidth ||
+ gif_file->Image.Top + gif_file->Image.Height > gif_file->SHeight )
+ ret = 1;
+ if( !ret && gif_file->Image.Interlace ) {
+ static int InterlacedOffset[] = { 0, 4, 2, 1 };
+ static int InterlacedJumps[] = { 8, 8, 4, 2 };
/* Need to perform 4 passes on the images: */
- for (int i = 0; i < 4; i++)
- {
- for (int j = row + InterlacedOffset[i];
- j < row + height;
- j += InterlacedJumps[i])
- {
- if (DGifGetLine(gif_file,
- &gif_buffer[j][col],
- width) == GIF_ERROR)
- {
- DGifCloseFile(gif_file GIF_ERR);
- for(int k = 0; k < gif_file->SHeight; k++)
- {
- free(gif_buffer[k]);
- }
- free(gif_buffer);
- return 1;
- }
- }
+ for( int i=0; i<4; ++i ) {
+ int j = row + InterlacedOffset[i];
+ for( ; !ret && j<row + height; j+=InterlacedJumps[i] ) {
+ if( DGifGetLine(gif_file, &gif_buffer[j][col], width) == GIF_ERROR )
+ ret = 1;
}
}
- else
- {
- for (int i = 0; i < height; i++)
- {
- if (DGifGetLine(gif_file, &gif_buffer[row++][col],
- width) == GIF_ERROR)
- {
- DGifCloseFile(gif_file GIF_ERR);
- for(int k = 0; k < gif_file->SHeight; k++)
- {
- free(gif_buffer[k]);
- }
- free(gif_buffer);
- return 1;
- }
- }
+ }
+ else {
+ for( int i=0; !ret && i<height; ++i ) {
+ if (DGifGetLine(gif_file, &gif_buffer[row++][col], width) == GIF_ERROR)
+ ret = 1;
}
-
- break;
}
- default:
- break;
- }
-
- } while(record_type != TERMINATE_RECORD_TYPE);
-
-
- //int background = gif_file->SBackGroundColor;
- ColorMapObject *color_map = (gif_file->Image.ColorMap
- ? gif_file->Image.ColorMap
- : gif_file->SColorMap);
- if(!color_map)
- {
- DGifCloseFile(gif_file GIF_ERR);
- for(int k = 0; k < gif_file->SHeight; k++)
- {
- free(gif_buffer[k]);
+ break; }
+ case EXTENSION_RECORD_TYPE: {
+ int ExtFunction = 0;
+ GifByteType *ExtData = 0;
+ if( DGifGetExtension(gif_file, &ExtFunction, &ExtData) == GIF_ERROR )
+ ret = 1;
+ while( !ret && ExtData ) {
+ if( DGifGetExtensionNext(gif_file, &ExtData) == GIF_ERROR )
+ ret = 1;
+ }
+ break; }
+ case TERMINATE_RECORD_TYPE:
+ done = 1;
+ break;
+ default:
+ break;
}
- free(gif_buffer);
- return 1;
}
- int screen_width = gif_file->SWidth;
- int screen_height = gif_file->SHeight;
- for(int i = 0; i < screen_height; i++)
- {
- GifRowType gif_row = gif_buffer[i];
- unsigned char *out_ptr = output->get_rows()[i];
- for(int j = 0; j < screen_width; j++)
- {
- GifColorType *color_map_entry = &color_map->Colors[gif_row[j]];
- *out_ptr++ = color_map_entry->Red;
- *out_ptr++ = color_map_entry->Green;
- *out_ptr++ = color_map_entry->Blue;
+ ColorMapObject *color_map = 0;
+ if( !ret ) {
+ //int background = gif_file->SBackGroundColor;
+ color_map = gif_file->Image.ColorMap;
+ if( !color_map ) color_map = gif_file->SColorMap;
+ if( !color_map ) ret = 1;
+ }
+ if( !ret ) {
+ int screen_width = gif_file->SWidth;
+ int screen_height = gif_file->SHeight;
+ for( int i=0; i<screen_height; ++i ) {
+ GifRowType gif_row = gif_buffer[i];
+ unsigned char *out_ptr = output->get_rows()[i];
+ for( int j=0; j<screen_width; ++j ) {
+ GifColorType *color_map_entry = &color_map->Colors[gif_row[j]];
+ *out_ptr++ = color_map_entry->Red;
+ *out_ptr++ = color_map_entry->Green;
+ *out_ptr++ = color_map_entry->Blue;
+ }
}
}
-
-
- for(int k = 0; k < gif_file->SHeight; k++)
- {
+ for( int k=0; k<gif_file->SHeight; ++k )
free(gif_buffer[k]);
- }
free(gif_buffer);
- DGifCloseFile(gif_file GIF_ERR);
- return 0;
+ DGifCloseFile(gif_file, &gif_err);
+ return ret;
}
}
-void MWindowGUI::show_message(const char *message, int color)
+void MWindowGUI::show_message(const char *message, int msg_color, int bar_color)
{
- statusbar->show_message(message, color);
+ statusbar->show_message(message, msg_color, bar_color);
}
void MWindowGUI::update_default_message()
int menu_w();
int menu_h();
// Draw on the status bar only.
- void show_message(const char *message, int color=-1);
+ void show_message(const char *message, int msg_color=-1, int box_color=-1);
void update_default_message();
void reset_default_message();
void default_message();
flash(0);
}
-void StatusBar::show_message(const char *text, int color)
+void StatusBar::show_message(const char *text, int msg_color, int box_color)
{
int mx = mwindow->theme->mstatus_message_x;
int my = mwindow->theme->mstatus_message_y;
int tx = status_text->get_x(), th = status_text->get_h();
- if( color >= 0 ) {
- set_color(color);
+ if( box_color >= 0 ) {
+ set_color(box_color);
int bb = th/4, bh = th - bb*2;
draw_box(mx+bb,my+bb, bh,bh);
flash(mx,my, th,th); mx += 5;
flash(mx,my, th,th);
status_text->reposition_window(mx, my);
}
- color = mwindow->theme->message_normal;
- status_text->set_color(color);
+ if( msg_color < 0 )
+ msg_color = mwindow->theme->message_normal;
+ status_text->set_color(msg_color);
status_text->update(text);
}
+
void StatusBar::reset_default_message()
{
status_color = -1;
StatusBar(MWindow *mwindow, MWindowGUI *gui);
~StatusBar();
- void show_message(const char *text, int color=-1);
+ void show_message(const char *text, int msg_color=-1, int box_color=-1);
void update_default_message();
void reset_default_message();
void default_message();
}
-void TrackCanvas::show_message(Auto *current, int color, const char *fmt, ...)
+void TrackCanvas::show_message(Auto *current, int box_color, const char *fmt, ...)
{
char string[BCTEXTLEN];
char *cp = string, *ep = cp + sizeof(string)-1;
- if( color >= 0 ) {
+ if( box_color >= 0 ) {
cp += snprintf(string, ep-cp, "%-8s ",
FloatAuto::curve_name(((FloatAuto*)current)->curve_mode));
}
va_start(ap, fmt);
vsnprintf(cp, ep-cp, fmt, ap);
va_end(ap);
- gui->show_message(string, color);
+ gui->show_message(string, -1, box_color);
}
// Patchbay* TrackCanvas::get_patchbay()
int update_drag_toggleauto(int cursor_x, int cursor_y);
int update_drag_auto(int cursor_x, int cursor_y);
int update_drag_pluginauto(int cursor_x, int cursor_y);
- void show_message(Auto *current, int color, const char *fmt, ...);
+ void show_message(Auto *current, int box_color, const char *fmt, ...);
// Update status bar to reflect drag operation
void update_drag_caption();
[ include ])
PKG_3RD([giflib],[yes],
- [giflib-5.1.4],
- [ lib/.libs/libgif.a \
- util/libgetarg.a ],
- [ lib ])
+ [giflib-5.1.6],
+ [ libgif.a ],
+ [ . ])
PKG_3RD([ilmbase],[auto],
[ilmbase-2.2.1],
fi
])
-# Checks for programs.
+## arch dep tests
+ARCH=`uname -m`
+I86=`expr "x$ARCH" : 'xi[346]86.*'`
+X86=`expr "x$ARCH" : 'x..._64*'`
+
+if test "x$I86$X86" != "x00" ; then
+ # Checks for ix86 programs.
+ REQUIRE_PROG(NASM, [nasm])
+ # libx264 nasm fix
+ AC_MSG_CHECKING([nasm x264 compatible])
+ echo "vmovdqa32 [[eax]]{k1}{z}, zmm0" > conftest.asm
+ nasm conftest.asm -o conftest.o > /dev/null 2>&1
+ if test $? != 0 ; then
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([libx264 built without assembly code])
+ X264_CFG_PARAMS="$X264_CFG_PARAMS --disable-asm"
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ rm -f conftest.asm conftest.o
+ REQUIRE_PROG(YASM, [yasm])
+fi
+## end arch dep tests
-REQUIRE_PROG(NASM, [nasm])
-REQUIRE_PROG(YASM, [yasm])
REQUIRE_PROG(OBJCOPY, [objcopy])
if test "x$FATAL_ERROR" != "x"; then
AC_MSG_ERROR("fatal eror.")
CHECK_PROG(PACTL, [pactl])
WANT_PACTL=$PROG_PACTL
-# libx264 nasm fix
-AC_MSG_CHECKING([nasm x264 compatible])
-echo "vmovdqa32 [[eax]]{k1}{z}, zmm0" > conftest.asm
-nasm conftest.asm -o conftest.o > /dev/null 2>&1
-if test $? != 0 ; then
- AC_MSG_RESULT([no])
- AC_MSG_WARN([libx264 built without assembly code])
- X264_CFG_PARAMS="$X264_CFG_PARAMS --disable-asm"
-else
- AC_MSG_RESULT([yes])
-fi
-rm -f conftest.asm conftest.o
-
AC_CHECK_DECL([X_HAVE_UTF8_STRING],,[no_utf=yes],[#include <X11/Xlib.h>])
if test "$no_utf" = "yes"; then
AC_MSG_ERROR([Cinelerra requires utf8 support in X Windows.])
<td align="left"><font face="Liberation Serif" size=4><br></font></td>
<td align="left"><font face="Liberation Serif" size=4>Reset projector</font></td>
</tr>
+ <tr>
+ <td height="26" align="left"><font face="Liberation Serif" size=4><br></font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Left mouse</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Shift</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Camera enabled - zooms in/out</font></td>
+ </tr>
+ <tr>
+ <td height="26" align="left"><font face="Liberation Serif" size=4><br></font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Left mouse</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Shift</font></td>
+ <td align="left"><font face="Liberation Serif" size=4>Projector enabled - zooms in/out</font></td>
+ </tr>
<tr>
<td height="26" align="left"><font face="Liberation Serif" size=4><br></font></td>
<td align="left"><font face="Liberation Serif" size=4>F1</font></td>
all: $(OUTPUT) $(UTILS)
$(BCXFER): bccmdl.py bcxfer.C bcxfer.h
- python3 < ./bccmdl.py
+ python < ./bccmdl.py
+$(MAKE) -C xfer
$(OUTPUT): $(OBJS) $(BCXFER)
audiofile.mak_params?=LIBS="-lm -lstdc++"
flac.cfg_params?= --enable-shared=no
flac.cflags?="$(call inc_path,libogg,include) $(call ld_path,libogg,src/.libs)"
-giflib.cfg_params?=--enable-shared=no
+giflib.cfg_params=echo "exec true" > ./configure; chmod +x ./configure;
ilmbase.cfg_vars= CFLAGS+=" -Wno-narrowing" CXXFLAGS+=" -Wno-narrowing"
ilmbase.cfg_params?=--prefix=$(call bld_path,ilmbase,usr)
ilmbase.mak_params?=; $(MAKE) -C ilmbase* install; cd $(call bld_path,ilmbase); ln -sf lib64 usr/lib
--- /dev/null
+--- a/Makefile 2019-02-12 07:26:13.000000000 -0700
++++ b/Makefile 2019-02-24 17:51:20.557618626 -0700
+@@ -7,8 +7,8 @@
+
+ #
+ CC = gcc
+-OFLAGS = -O0 -g
+-#OFLAGS = -O2 -fwhole-program
++#OFLAGS = -O0 -g
++OFLAGS = -O2 -g
+ CFLAGS = -std=gnu99 -fPIC -Wall -Wno-format-truncation $(OFLAGS)
+ LDFLAGS = -g
+