new netbsd files by Andrew
authorGood Guy <[email protected]>
Sat, 14 May 2022 17:09:04 +0000 (11:09 -0600)
committerGood Guy <[email protected]>
Sat, 14 May 2022 17:09:04 +0000 (11:09 -0600)
cinelerra-5.1/blds/netbsd.bld [new file with mode: 0644]
cinelerra-5.1/blds/netbsd.patch [new file with mode: 0644]

diff --git a/cinelerra-5.1/blds/netbsd.bld b/cinelerra-5.1/blds/netbsd.bld
new file mode 100644 (file)
index 0000000..b6c5f96
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+#use: patch -p2 < bsd.patch
+export CONFIG_SHELL=/bin/bash
+export MAKE=gmake
+export C_INCLUDE_PATH=/usr/local/include:/usr/X11R7/include:/usr/pkg/include:/usr/pkg/include/ffmpeg4
+export CPLUS_INCLUDE_PATH=/usr/local/include
+export LIBRARY_PATH=/usr/local/lib
+export LDFLAGS="-L/usr/X11R7/lib -L/usr/pkg/lib"
+export CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/ffmpeg4 -pthread -I/usr/pkg/include -I/usr/pkg/include/OpenEXR -I/usr/pkg/include -I/usr/pkg/include/Imath"
+
+alias make=gmake
+( ./autogen.sh
+  BSD=1 CC=gcc CXX=g++ CFLAGS="-g -fpermissive -O2 -DFFMPEG3" \
+  ./configure --with-single-user \
+    --disable-static-build --without-lv2 --disable-lame --disable-twolame \
+    --with-oss --without-alsa --without-firewire --without-dv --without-dvb \
+    --without-video4linux2 --without-xxf86vm --without-ladspa-build \
+    --without-libzmpeg --without-commercial --without-thirdparty \
+    --without-vaapi --without-openexr --with-jobs=4 --without-vdpau --without-shuttle --without-shuttle-usb \
+    --without-x10tv --without-wintv
+   gmake
+   gmake install ) 2>&1 | tee log
diff --git a/cinelerra-5.1/blds/netbsd.patch b/cinelerra-5.1/blds/netbsd.patch
new file mode 100644 (file)
index 0000000..0062a41
--- /dev/null
@@ -0,0 +1,668 @@
+diff --git a/cinelerra-5.1/Makefile.devel b/cinelerra-5.1/Makefile.devel
+index 55313308..ad671f57 100644
+--- a/cinelerra-5.1/Makefile.devel
++++ b/cinelerra-5.1/Makefile.devel
+@@ -4,7 +4,7 @@ TOPDIR := $(CURDIR)
+ CFLAGS ?= -ggdb
+ export CFLAGS_ := $(CFLAGS)
+
+-cpus:=$(shell grep -c "^proc" /proc/cpuinfo)
++cpus:=$(shell sysctl -n hw.ncpu)
+ jobs:=-j$(shell echo $$(($(cpus) + $(cpus)/2 +2)))
+ MAKEJ := $(MAKE) $(jobs)
+
+diff --git a/cinelerra-5.1/blds/bsd.bld b/cinelerra-5.1/blds/bsd.bld
+index 165cc00b..b6c5f96b 100755
+--- a/cinelerra-5.1/blds/bsd.bld
++++ b/cinelerra-5.1/blds/bsd.bld
+@@ -2,18 +2,21 @@
+ #use: patch -p2 < bsd.patch
+ export CONFIG_SHELL=/bin/bash
+ export MAKE=gmake
+-export C_INCLUDE_PATH=/usr/local/include
++export C_INCLUDE_PATH=/usr/local/include:/usr/X11R7/include:/usr/pkg/include:/usr/pkg/include/ffmpeg4
+ export CPLUS_INCLUDE_PATH=/usr/local/include
+ export LIBRARY_PATH=/usr/local/lib
++export LDFLAGS="-L/usr/X11R7/lib -L/usr/pkg/lib"
++export CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/ffmpeg4 -pthread -I/usr/pkg/include -I/usr/pkg/include/OpenEXR -I/usr/pkg/include -I/usr/pkg/include/Imath"
++
+ alias make=gmake
+ ( ./autogen.sh
+-  BSD=1 CC=clang CXX=clang++ CFLAGS="-g -O2 -DFFMPEG3" \
++  BSD=1 CC=gcc CXX=g++ CFLAGS="-g -fpermissive -O2 -DFFMPEG3" \
+   ./configure --with-single-user \
+     --disable-static-build --without-lv2 --disable-lame --disable-twolame \
+     --with-oss --without-alsa --without-firewire --without-dv --without-dvb \
+     --without-video4linux2 --without-xxf86vm --without-ladspa-build \
+     --without-libzmpeg --without-commercial --without-thirdparty \
+-    --without-vaapi --without-vdpau --without-shuttle --without-shuttle-usb \
++    --without-vaapi --without-openexr --with-jobs=4 --without-vdpau --without-shuttle --without-shuttle-usb \
+     --without-x10tv --without-wintv
+    gmake
+    gmake install ) 2>&1 | tee log
+diff --git a/cinelerra-5.1/cinelerra/Makefile b/cinelerra-5.1/cinelerra/Makefile
+index 1c10fc03..8bfbc754 100644
+--- a/cinelerra-5.1/cinelerra/Makefile
++++ b/cinelerra-5.1/cinelerra/Makefile
+@@ -435,7 +435,7 @@ LIBS := $(LIBRARIES)
+ ifeq ($(WANT_CIN_3RDPARTY),no)
+ LIBS += -lavcodec -lavdevice -lavfilter -lavformat -lavutil
+ LIBS += -lswresample -lswscale
+-LIBS += -lintl -liconv
++LIBS += -lintl -lpng16
+ LIBS += -lexecinfo
+
+ LIBS += $(shared_libs)
+@@ -500,14 +500,15 @@ CFLAGS += -DUSE_ALPHA
+ else
+
+ LDFLAGS1 = -Wl,-export-dynamic -g
+-LDFLAGS2 = $(LDFLAGS)
++LDFLAGS2 = $(LDFLAGS)
++LDFLAGS3 = -L/usr/X11R7/lib -L/usr/pkg/lib/ffmpeg4 -L/usr/pkg/lib
+ LINKER = $(CXX) -o $(OUTPUT)
+
+ endif
+
+ $(shell mkdir -p $(OBJDIR))
+ $(shell echo $(CFLAGS) > $(OBJDIR)/c_flags)
+-$(shell echo $(LDFLAGS1) $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBS) $(LDFLAGS2) > $(OBJDIR)/objs)
++$(shell echo $(LDFLAGS3) $(LDFLAGS1) $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBS) $(LDFLAGS2) > $(OBJDIR)/objs)
+
+ all:  $(OUTPUT) $(CUTADS) $(BDWRITE) $(LV2UI)
+
+@@ -517,7 +518,7 @@ all:       $(OUTPUT) $(CUTADS) $(BDWRITE) $(LV2UI)
+ $(OUTPUT): $(OBJS) $(THEME_DATA) $(DCRAW) $(LIBRARIES)
+       $(LINKER) `cat $(OBJDIR)/objs`
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(OUTPUT) $(OUTPUT_G))
+-      $(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
++      #$(if $(findstring -ggdb,$(CFLAGS)),,strip $(OUTPUT))
+       ln -f -s ../bin/$(WANT_CIN) ci
+
+ ifneq ($(WANT_COMMERCIAL),no)
+@@ -535,7 +536,7 @@ endif
+
+ $(BDWRITE):   $(BDWOBJS) $(LIBRARIES)
+       @echo $(CXX) -o $@ $(BDWOBJS)
+-      @$(CXX) $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS)
++      @$(CXX) $(CFLAGS) -pthread -o $@ $(BDWOBJS) $(LIBS) $(LDFLAGS3)
+       $(if $(findstring -g,$(CFLAGS)),objcopy --only-keep-debug $(BDWRITE) $(BDWRITE).debuginfo)
+       $(if $(findstring -ggdb,$(CFLAGS)),,strip $(BDWRITE))
+
+diff --git a/cinelerra-5.1/cinelerra/bdcreate.C b/cinelerra-5.1/cinelerra/bdcreate.C
+index 150f835d..fc313c72 100644
+--- a/cinelerra-5.1/cinelerra/bdcreate.C
++++ b/cinelerra-5.1/cinelerra/bdcreate.C
+@@ -24,8 +24,12 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/stat.h>
+-#include <sys/statfs.h>
++#include <sys/param.h>
++#include <sys/mount.h>
++
++#ifndef statfs
++#define statfs statvfs
++#endif
+
+ // BD Creation
+
+diff --git a/cinelerra-5.1/cinelerra/bdwrite.C b/cinelerra-5.1/cinelerra/bdwrite.C
+index 6a2b4ca3..78cf9bef 100644
+--- a/cinelerra-5.1/cinelerra/bdwrite.C
++++ b/cinelerra-5.1/cinelerra/bdwrite.C
+@@ -38,7 +38,7 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <endian.h>
++#include <sys/endian.h>
+ #include <limits.h>
+ #include <sys/stat.h>
+ // work arounds (centos)
+diff --git a/cinelerra-5.1/cinelerra/ci b/cinelerra-5.1/cinelerra/ci
+index bc987833..22858982 120000
+--- a/cinelerra-5.1/cinelerra/ci
++++ b/cinelerra-5.1/cinelerra/ci
+@@ -1 +1 @@
+-../bin/cinelerra
+\ No newline at end of file
++../bin/cin
+\ No newline at end of file
+diff --git a/cinelerra-5.1/cinelerra/cutads.C b/cinelerra-5.1/cinelerra/cutads.C
+index ac58d56a..f6690cf2 100644
+--- a/cinelerra-5.1/cinelerra/cutads.C
++++ b/cinelerra-5.1/cinelerra/cutads.C
+@@ -23,14 +23,6 @@
+ using namespace std;
+ #define fail(s) do { printf("fail %s%s:%d\n",__func__,#s,__LINE__); return 1; } while(0)
+
+-/* missing from system headers, no /usr/include <linux/ioprio.h>
+- *   IOPRIO_WHO_PROCESS, IOPRIO_CLASS_SHIFT, IOPRIO_CLASS_IDLE */
+-enum { IOPRIO_CLASS_NONE, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE, };
+-#define IO_CLASS(n) (((int)(n)) << 13)
+-#define IO_WHO_PROCESS  1
+-#include <sys/syscall.h>
+-#include <asm/unistd.h>
+-
+ // commercial edge detection:
+ // must have audio < min_audio
+ //   and within +- check_margin seconds of low audio
+@@ -55,11 +47,6 @@ class Video;
+ class Audio;
+ class Scan;
+
+-static int ioprio_set(int which, int who, int ioprio)
+-{
+-      return syscall(SYS_ioprio_set, which, who, ioprio);
+-}
+-
+ static inline int clip(int v, int mn, int mx)
+ {
+   return v<mn ? mn : v>mx ? mx : v;
+@@ -617,7 +604,6 @@ class Scan
+       const char *asset_path;
+       static void set_priority(int pr, int io) {
+               setpriority(PRIO_PROCESS, 0, pr);  // lowest cpu priority
+-              ioprio_set(IO_WHO_PROCESS, 0, IO_CLASS(io));
+       }
+       class low_priority { public:
+               low_priority() { set_priority(19, IOPRIO_CLASS_IDLE); }
+diff --git a/cinelerra-5.1/cinelerra/dvdcreate.C b/cinelerra-5.1/cinelerra/dvdcreate.C
+index 6ecb270b..822f0665 100644
+--- a/cinelerra-5.1/cinelerra/dvdcreate.C
++++ b/cinelerra-5.1/cinelerra/dvdcreate.C
+@@ -24,9 +24,12 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <errno.h>
+-#include <sys/stat.h>
+-#include <sys/statfs.h>
++#include <sys/param.h>
++#include <sys/mount.h>
+
++#ifndef statfs
++#define statfs statvfs
++#endif
+
+ #define DVD_PAL_4x3   0
+ #define DVD_PAL_16x9  1
+diff --git a/cinelerra-5.1/cinelerra/exportedl.C b/cinelerra-5.1/cinelerra/exportedl.C
+index cac86bcf..0af68abd 100644
+--- a/cinelerra-5.1/cinelerra/exportedl.C
++++ b/cinelerra-5.1/cinelerra/exportedl.C
+@@ -42,6 +42,7 @@
+
+ #include <ctype.h>
+ #include <string.h>
++#include <libgen.h>
+
+ ExportEDLAsset::ExportEDLAsset(MWindow *mwindow, EDL *edl)
+ {
+diff --git a/cinelerra-5.1/cinelerra/file.C b/cinelerra-5.1/cinelerra/file.C
+index 03941d9a..694c36bb 100644
+--- a/cinelerra-5.1/cinelerra/file.C
++++ b/cinelerra-5.1/cinelerra/file.C
+@@ -1620,7 +1620,14 @@ int File::record_fd()
+ void File::get_exe_path(char *result, char *bnp)
+ {
+ // Get executable path, basename
++#ifdef __FreeBSD__
++      char exe_path[BCTEXTLEN];
++      sprintf(exe_path,"/proc/%d/file",getpid());
++      int len = readlink(exe_path, result, BCTEXTLEN-1);
++#endif
++#if defined __NetBSD__ || defined __linux__ || defined __TERMUX__
+       int len = readlink("/proc/self/exe", result, BCTEXTLEN-1);
++#endif
+       if( len >= 0 ) {
+               result[len] = 0;
+               char *ptr = strrchr(result, '/');
+diff --git a/cinelerra-5.1/cinelerra/indexfile.C b/cinelerra-5.1/cinelerra/indexfile.C
+index 977ad1cb..29a93ad0 100644
+--- a/cinelerra-5.1/cinelerra/indexfile.C
++++ b/cinelerra-5.1/cinelerra/indexfile.C
+@@ -70,9 +70,7 @@
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#ifdef HAVE_ISOFS
+-#include <linux/iso_fs.h>
+-#endif
++#include <isofs/cd9660/iso.h>
+
+ // check for isofs volume_id for dvd/cdrom
+
+diff --git a/cinelerra-5.1/configure.ac b/cinelerra-5.1/configure.ac
+index c7394b7b..4f965048 100644
+--- a/cinelerra-5.1/configure.ac
++++ b/cinelerra-5.1/configure.ac
+@@ -22,14 +22,25 @@ CFG_CFLAGS+=" -Wno-unused-result"
+ CFG_CFLAGS+=" -Wno-stringop-overflow"
+ CFG_CFLAGS+=" -Wno-format-truncation"
+ CFG_CFLAGS+=" -Wno-format-overflow"
++CFG_CFLAGS+=" -Wno-unknown-warning-option"
+ CFG_CFLAGS+=" -Wno-parentheses"
+ CFG_CFLAGS+=" -Wno-stringop-truncation"
++CFG_CFLAGS+=" -Wno-gnu-designator"
++CFG_CFLAGS+=" -Wno-missing-braces"
++CFG_CFLAGS+=" -Wno-overloaded-virtual"
++CFG_CFLAGS+=" -Wno-self-assign-field"
++CFG_CFLAGS+=" -Wno-sometimes-uninitialized"
++CFG_CFLAGS+=" -Wno-tautological-pointer-compare"
++CFG_CFLAGS+=" -Wno-unused-function"
++CFG_CFLAGS+=" -Wno-unused-private-field"
++CFG_CFLAGS+=" -Wno-infinite-recursion"
+ CFG_CFLAGS+=" -D__STDC_CONSTANT_MACROS"
+ CFG_CFLAGS+=" -D__STDC_LIMIT_MACROS"
+ CFG_CFLAGS+=" -DPNG_SKIP_SETJMP_CHECK=1"
+ CFG_CFLAGS+=" -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
+-CFG_CFLAGS+=" -I/usr/include -I/usr/local/include"
+-CFG_CFLAGS+=" -I/usr/include/freetype2 -I/usr/local/include/freetype2"
++CFG_CFLAGS+=" -I/usr/pkg/include/ffmpeg4 -I/usr/pkg/include/uuid"
++CFG_CFLAGS+=" -I/usr/include -I/usr/local/include -I/usr/pkg/include/ -I/usr/X11R7/include"
++CFG_CFLAGS+=" -I/usr/X11R7/include/freetype2/ -I/usr/include/freetype2 -I/usr/local/include/freetype2"
+ CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/freetype2"
+ CFG_CFLAGS+=" -I/usr/include/uuid -I/usr/local/include/uuid"
+ CFG_CFLAGS+=" -I/data/data/com.termux/files/usr/include/uuid -I/usr/local/include/uuid"
+@@ -1178,6 +1189,13 @@ if test "x$CFG_LDFLAGS" != "x" ; then
+   echo ""
+ fi
+
++if test "x$BSD" != "x" ; then
++  echo "CFLAGS += -DNO_PRCTL"
++  echo "CFLAGS += -DNO_TID"
++  echo "CFLAGS += -DNO_GDB"
++  echo "CFLAGS += -DNO_BTRACE"
++  echo "CFLAGS += -DNO_CTX"
++fi
+ if test "x$CYGWIN" != "x" ; then
+   echo 'FF_PATH ?= /usr/local'
+   echo 'LDFLAGS += -L$(FF_PATH)/lib'
+@@ -1191,12 +1209,7 @@ if test "x$CYGWIN" != "x" ; then
+   echo "CFLAGS += -DNO_XSELECT"
+   echo ""
+ else
+-  LDFLAGS+=" -z noexecstack"
+-fi
+-if test "x$BSD" != "x" ; then
+-  echo "CFLAGS += -DNO_PRCTL"
+-  echo "CFLAGS += -DNO_TID"
+-  echo "CFLAGS += -DNO_GDB"
++  LDFLAGS+=" -L/usr/X11R7/lib, -L/usr/pkg/lib,  -z noexecstack"
+ fi
+
+ if test "x$WANT_X264_HIDEPTH" = "xyes" ; then
+diff --git a/cinelerra-5.1/db/tdb.h b/cinelerra-5.1/db/tdb.h
+index 24c8617c..74881ff0 100644
+--- a/cinelerra-5.1/db/tdb.h
++++ b/cinelerra-5.1/db/tdb.h
+@@ -33,7 +33,7 @@ inline void operator delete[](void *t,size_t n) { free(t); }
+ #endif
+
+ #define ZMEDIA
+-#define ZFUTEX
++//#define ZFUTEX
+ #ifdef ZFUTEX
+ #include <unistd.h>
+ #include <endian.h>
+diff --git a/cinelerra-5.1/guicast/Makefile b/cinelerra-5.1/guicast/Makefile
+index 57cfb21f..e16d13a6 100644
+--- a/cinelerra-5.1/guicast/Makefile
++++ b/cinelerra-5.1/guicast/Makefile
+@@ -5,6 +5,10 @@ ifeq ($(OBJDIR), i686)
+ BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf32-i386\""
+ endif
+
++ifeq ($(OBJDIR), i386)
++BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf32-i386\""
++endif
++
+ ifeq ($(OBJDIR), x86_64)
+ BOOTSTRAPFLAGS := -DBOOTSTRAP="\"objcopy -B i386 -I binary -O elf64-x86-64\""
+ endif
+@@ -118,7 +122,7 @@ $(OBJDIR)/pngtoh: pngtoh.c
+       $(CC) -O2 pngtoh.c -o $(OBJDIR)/pngtoh
+
+ $(OBJDIR)/pngtoraw: pngtoraw.c
+-      $(CC) -O2 pngtoraw.c -o $(OBJDIR)/pngtoraw -lpng -lz
++      $(CC) -O2 pngtoraw.c -o $(OBJDIR)/pngtoraw `pkg-config --libs libpng` -lz
+
+ clean:
+       rm -rf $(OBJDIR)
+diff --git a/cinelerra-5.1/guicast/bclistbox.h b/cinelerra-5.1/guicast/bclistbox.h
+index ce34ffc4..0e38913d 100644
+--- a/cinelerra-5.1/guicast/bclistbox.h
++++ b/cinelerra-5.1/guicast/bclistbox.h
+@@ -187,7 +187,9 @@ public:
+
+ // take_focus - used by the suggestion box to keep it from taking focus from the
+ // textbox
+-      int activate(int take_focus = 1);
++      int activate() {  return activate(1); }
++      int activate(int take_focus);
++
+       int activate(int x, int y, int w=-1, int h=-1);
+       int deactivate();
+       int is_active();
+diff --git a/cinelerra-5.1/guicast/bcpan.h b/cinelerra-5.1/guicast/bcpan.h
+index 40f5971f..73d47586 100644
+--- a/cinelerra-5.1/guicast/bcpan.h
++++ b/cinelerra-5.1/guicast/bcpan.h
+@@ -93,7 +93,8 @@ public:
+               int &stick_x,
+               int &stick_y);
+       static int rdtoxy(int &x, int &y, int a, int virtual_r);
+-      int activate(int popup_x = -1, int popup_y = -1);
++      int activate(int popup_x, int popup_y);
++      int activate() { return activate(-1,-1); }
+       int deactivate();
+       float* get_values();
+
+diff --git a/cinelerra-5.1/guicast/bcresources.C b/cinelerra-5.1/guicast/bcresources.C
+index cdac6305..de912dd1 100644
+--- a/cinelerra-5.1/guicast/bcresources.C
++++ b/cinelerra-5.1/guicast/bcresources.C
+@@ -39,6 +39,7 @@
+ #include <iconv.h>
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
++#include <sys/sysctl.h>
+ #include <X11/extensions/XShm.h>
+ #include <fontconfig/fontconfig.h>
+ #include <fontconfig/fcfreetype.h>
+@@ -298,23 +299,12 @@ int BC_Resources::machine_cpus = 1;
+
+ int BC_Resources::get_machine_cpus()
+ {
+-      int cpus = 1;
+-      FILE *proc = fopen("/proc/cpuinfo", "r");
+-      if( proc ) {
+-              char string[BCTEXTLEN], *cp;
+-              while(!feof(proc) && fgets(string, sizeof(string), proc) ) {
+-                      if( !strncasecmp(string, "processor", 9) &&
+-                          (cp = strchr(string, ':')) != 0 ) {
+-                              int n = atol(cp+1) + 1;
+-                              if( n > cpus ) cpus = n;
+-                      }
+-                      else if( !strncasecmp(string, "cpus detected", 13) &&
+-                          (cp = strchr(string, ':')) != 0 )
+-                              cpus = atol(cp+1);
+-              }
+-              fclose(proc);
+-      }
+-      return cpus;
++      int mib[2], ncpu;
++      size_t len = sizeof(ncpu);
++      mib[0] = CTL_HW;
++      mib[1] = HW_NCPU;
++      if( sysctl(mib, 2, &ncpu, &len, 0, 0) ) ncpu = 1;
++      return ncpu;
+ }
+
+ void BC_Resources::new_vframes(int n, VFrame *vframes[], ...)
+@@ -367,8 +357,8 @@ BC_Resources::BC_Resources(float x_scale, float y_scale)
+       BC_WindowBase::resources = this;
+       synchronous = 0;
+       vframe_shm = 0;
+-      use_shm = -1;
+-      shm_reply = 1;
++      use_shm = 0;
++      shm_reply = 0;
+
+       if( x_scale <= 0 ) x_scale = 1;
+       if( y_scale <= 0 ) y_scale = x_scale;
+diff --git a/cinelerra-5.1/guicast/bcsignals.C b/cinelerra-5.1/guicast/bcsignals.C
+index 858ba409..f43a64b9 100644
+--- a/cinelerra-5.1/guicast/bcsignals.C
++++ b/cinelerra-5.1/guicast/bcsignals.C
+@@ -403,70 +403,74 @@ const char* BC_Signals::sig_to_str(int number)
+ #include <sys/wait.h>
+ #include "thread.h"
+
++#define SC_(r)mc_##r
++
++#if 0
+ #if __i386__
+-#define IP eip
+-#define sigregs_t sigcontext
++#define IP SC_(eip)
++#define sigregs_t mcontext_t
+
+ static void reg_dump(FILE *fp,sigregs_t *rp)
+ {
+       fprintf(fp,"REGS:\n");
+-      fprintf(fp,"  gs: %04x:%04x\n", rp->gs,rp->__gsh);
+-      fprintf(fp,"  fs: %04x:%04x\n", rp->fs,rp->__fsh);
+-      fprintf(fp,"  es: %04x:%04x\n", rp->es,rp->__esh);
+-      fprintf(fp,"  ds: %04x:%04x\n", rp->ds,rp->__dsh);
+-      fprintf(fp," edi: %14p %d\n", (void*)rp->edi,rp->edi);
+-      fprintf(fp," esi: %14p %d\n", (void*)rp->esi,rp->esi);
+-      fprintf(fp," ebp: %14p %d\n", (void*)rp->ebp,rp->ebp);
+-      fprintf(fp," esp: %14p %d\n", (void*)rp->esp,rp->esp);
+-      fprintf(fp," ebx: %14p %d\n", (void*)rp->ebx,rp->ebx);
+-      fprintf(fp," edx: %14p %d\n", (void*)rp->edx,rp->edx);
+-      fprintf(fp," ecx: %14p %d\n", (void*)rp->ecx,rp->ecx);
+-      fprintf(fp," eax: %14p %d\n", (void*)rp->eax,rp->eax);
+-      fprintf(fp," trapno: %14p %d\n", (void*)rp->trapno,rp->trapno);
+-      fprintf(fp," err: %14p %d\n", (void*)rp->err,rp->err);
+-      fprintf(fp," eip: %14p %d\n", (void*)rp->eip,rp->eip);
+-      fprintf(fp," cs: %04xd : %04x\n", rp->cs,rp->__csh);
+-      fprintf(fp," eflags: %14p %d\n", (void*)rp->eflags,rp->eflags);
+-      fprintf(fp," esp_at_signal: %p %d\n", (void*)rp->esp_at_signal,rp->esp_at_signal);
+-      fprintf(fp," ss: %04xd : %04x\n", rp->ss,rp->__ssh);
+-      fprintf(fp," oldmask: %14p %d\n", (void*)rp->oldmask,rp->oldmask);
+-      fprintf(fp," cr2: %14p %d\n", (void*)rp->cr2,rp->cr2);
++      fprintf(fp,"  gs: %04x:%04x\n", rp->mc_gs,rp->mc_gs);
++      fprintf(fp,"  fs: %04x:%04x\n", rp->mc_fs,rp->mc_fs);
++      fprintf(fp,"  es: %04x:%04x\n", rp->mc_es,rp->mc_es);
++      fprintf(fp,"  ds: %04x:%04x\n", rp->mc_ds,rp->mc_ds);
++      fprintf(fp," edi: %14p %d\n", (void*)rp->mc_edi,rp->mc_edi);
++      fprintf(fp," esi: %14p %d\n", (void*)rp->mc_esi,rp->mc_esi);
++      fprintf(fp," ebp: %14p %d\n", (void*)rp->mc_ebp,rp->mc_ebp);
++      fprintf(fp," esp: %14p %d\n", (void*)rp->mc_esp,rp->mc_esp);
++      fprintf(fp," ebx: %14p %d\n", (void*)rp->mc_ebx,rp->mc_ebx);
++      fprintf(fp," edx: %14p %d\n", (void*)rp->mc_edx,rp->mc_edx);
++      fprintf(fp," ecx: %14p %d\n", (void*)rp->mc_ecx,rp->mc_ecx);
++      fprintf(fp," eax: %14p %d\n", (void*)rp->mc_eax,rp->mc_eax);
++      fprintf(fp," trapno: %14p %d\n", (void*)rp->mc_trapno,rp->mc_trapno);
++      fprintf(fp," err: %14p %d\n", (void*)rp->mc_err,rp->mc_err);
++      fprintf(fp," eip: %14p %d\n", (void*)rp->mc_eip,rp->mc_eip);
++      fprintf(fp," cs: %04x\n", (unsigned)rp->mc_cs);
++      fprintf(fp," eflags: %14p %d\n", (void*)rp->mc_eflags,rp->mc_eflags);
++      fprintf(fp," esp_at_signal: %p %d\n", (void*)rp->mc_esp_at_signal,rp->mc_esp_at_signal);
++      fprintf(fp," ss: %04xd : %04x\n", rp->mc_ss,rp->mc_ss);
++//    fprintf(fp," oldmask: %14p %d\n", (void*)rp->mc_oldmask,rp->mc_oldmask);
++//    fprintf(fp," cr2: %14p %d\n", (void*)rp->mc_cr2,rp->mc_cr2);
+       fprintf(fp,"\n");
+ }
+ #endif
++#endif
+
+ #if __x86_64__
+-#define IP rip
+-#define sigregs_t sigcontext
++#define IP SC_(rip)
++#define sigregs_t mcontext_t
+
+ static void reg_dump(FILE *fp,sigregs_t *rp)
+ {
+       fprintf(fp,"REGS:\n");
+-      fprintf(fp,"  r8: %20p %jd\n", (void*)rp->r8,rp->r8);
+-      fprintf(fp,"  r9: %20p %jd\n", (void*)rp->r9,rp->r9);
+-      fprintf(fp," r10: %20p %jd\n", (void*)rp->r10,rp->r10);
+-      fprintf(fp," r11: %20p %jd\n", (void*)rp->r11,rp->r11);
+-      fprintf(fp," r12: %20p %jd\n", (void*)rp->r12,rp->r12);
+-      fprintf(fp," r13: %20p %jd\n", (void*)rp->r13,rp->r13);
+-      fprintf(fp," r14: %20p %jd\n", (void*)rp->r14,rp->r14);
+-      fprintf(fp," r15: %20p %jd\n", (void*)rp->r15,rp->r15);
+-      fprintf(fp," rdi: %20p %jd\n", (void*)rp->rdi,rp->rdi);
+-      fprintf(fp," rsi: %20p %jd\n", (void*)rp->rsi,rp->rsi);
+-      fprintf(fp," rbp: %20p %jd\n", (void*)rp->rbp,rp->rbp);
+-      fprintf(fp," rbx: %20p %jd\n", (void*)rp->rbx,rp->rbx);
+-      fprintf(fp," rdx: %20p %jd\n", (void*)rp->rdx,rp->rdx);
+-      fprintf(fp," rax: %20p %jd\n", (void*)rp->rax,rp->rax);
+-      fprintf(fp," rcx: %20p %jd\n", (void*)rp->rcx,rp->rcx);
+-      fprintf(fp," rsp: %20p %jd\n", (void*)rp->rsp,rp->rsp);
+-      fprintf(fp," rip: %20p %jd\n", (void*)rp->rip,rp->rip);
+-      fprintf(fp," eflags: %14p %jd\n", (void*)rp->eflags,rp->eflags);
+-      fprintf(fp,"  cs: %04x\n", rp->cs);
+-      fprintf(fp,"  gs: %04x\n", rp->gs);
+-      fprintf(fp,"  fs: %04x\n", rp->fs);
+-      fprintf(fp," err: %20p %jd\n", (void*)rp->err,rp->err);
+-      fprintf(fp," trapno: %20p %jd\n", (void*)rp->trapno,rp->trapno);
+-      fprintf(fp," oldmask: %20p %jd\n", (void*)rp->oldmask,rp->oldmask);
+-      fprintf(fp," cr2: %20p %jd\n", (void*)rp->cr2,rp->cr2);
++      fprintf(fp,"  r8: %20p %jd\n", (void*)rp->mc_r8,rp->mc_r8);
++      fprintf(fp,"  r9: %20p %jd\n", (void*)rp->mc_r9,rp->mc_r9);
++      fprintf(fp," r10: %20p %jd\n", (void*)rp->mc_r10,rp->mc_r10);
++      fprintf(fp," r11: %20p %jd\n", (void*)rp->mc_r11,rp->mc_r11);
++      fprintf(fp," r12: %20p %jd\n", (void*)rp->mc_r12,rp->mc_r12);
++      fprintf(fp," r13: %20p %jd\n", (void*)rp->mc_r13,rp->mc_r13);
++      fprintf(fp," r14: %20p %jd\n", (void*)rp->mc_r14,rp->mc_r14);
++      fprintf(fp," r15: %20p %jd\n", (void*)rp->mc_r15,rp->mc_r15);
++      fprintf(fp," rdi: %20p %jd\n", (void*)rp->mc_rdi,rp->mc_rdi);
++      fprintf(fp," rsi: %20p %jd\n", (void*)rp->mc_rsi,rp->mc_rsi);
++      fprintf(fp," rbp: %20p %jd\n", (void*)rp->mc_rbp,rp->mc_rbp);
++      fprintf(fp," rbx: %20p %jd\n", (void*)rp->mc_rbx,rp->mc_rbx);
++      fprintf(fp," rdx: %20p %jd\n", (void*)rp->mc_rdx,rp->mc_rdx);
++      fprintf(fp," rax: %20p %jd\n", (void*)rp->mc_rax,rp->mc_rax);
++      fprintf(fp," rcx: %20p %jd\n", (void*)rp->mc_rcx,rp->mc_rcx);
++      fprintf(fp," rsp: %20p %jd\n", (void*)rp->mc_rsp,rp->mc_rsp);
++      fprintf(fp," rip: %20p %jd\n", (void*)rp->mc_rip,rp->mc_rip);
++      fprintf(fp," eflags: %14p %u\n", (void*)((unsigned long)rp->mc_flags),rp->mc_flags);
++      fprintf(fp,"  cs: %04x\n", (unsigned)rp->mc_cs);
++      fprintf(fp,"  gs: %04x\n", (unsigned)rp->mc_gs);
++      fprintf(fp,"  fs: %04x\n", (unsigned)rp->mc_fs);
++      fprintf(fp," err: %20p %jd\n", (void*)rp->mc_err,rp->mc_err);
++      fprintf(fp," trapno: %20p %d\n", (void*)((unsigned long)rp->mc_trapno),rp->mc_trapno);
++//    fprintf(fp," oldmask: %20p %jd\n", (void*)rp->mc_oldmask,rp->mc_oldmask);
++//    fprintf(fp," cr2: %20p %jd\n", (void*)rp->mc_cr2,rp->mc_cr2);
+       fprintf(fp,"\n");
+ }
+
+@@ -500,7 +504,7 @@ static void handle_dump(int n, siginfo_t * info, void *sc)
+       void *ip = 0;
+ #ifndef NO_CTX
+       ucontext_t *uc = (ucontext_t *)sc;
+-      struct sigregs_t *c = (struct sigregs_t *)&uc->uc_mcontext;
++      sigregs_t *c = (sigregs_t *)&uc->uc_mcontext;
+       ip = (void *)c->IP;
+ #endif
+       fprintf(stderr,"** %s at %p in pid %d, tid %d\n",
+diff --git a/cinelerra-5.1/guicast/bctrace.C b/cinelerra-5.1/guicast/bctrace.C
+index 7e453925..2d08b46b 100644
+--- a/cinelerra-5.1/guicast/bctrace.C
++++ b/cinelerra-5.1/guicast/bctrace.C
+@@ -309,7 +309,7 @@ void BC_Trace::dump_traces(FILE *fp)
+       }
+ }
+
+-void trace_info::set_owner() { owner = pthread_self(); }
++void trace_info::set_owner() { owner = (unsigned long)pthread_self(); }
+ void trace_info::unset_owner() { owner = 0; }
+
+ void BC_Trace::dump_locks(FILE *fp)
+@@ -322,7 +322,7 @@ void BC_Trace::dump_locks(FILE *fp)
+               fprintf(fp,"    %p %s, %s %p%s",
+                       p->info, p->title, p->loc,
+                       (void*)p->tid, p->is_owner ? " *" : "");
+-              if( p->info->owner && p->info->owner != p->tid )
++              if( p->info->owner && p->info->owner != (unsigned long)p->tid )
+                       fprintf(fp," %p", (void*)p->info->owner);
+               fprintf(fp,"\n");
+       }
+diff --git a/cinelerra-5.1/guicast/filesystem.h b/cinelerra-5.1/guicast/filesystem.h
+index c976135b..56137025 100644
+--- a/cinelerra-5.1/guicast/filesystem.h
++++ b/cinelerra-5.1/guicast/filesystem.h
+@@ -26,6 +26,9 @@
+ #include "bcwindowbase.inc"
+ #include "sizes.h"
+
++#define dirent64 dirent
++#define readdir64 readdir
++
+ class FileItem
+ {
+ public:
+diff --git a/cinelerra-5.1/guicast/thread.C b/cinelerra-5.1/guicast/thread.C
+index 9908a628..768ca61d 100644
+--- a/cinelerra-5.1/guicast/thread.C
++++ b/cinelerra-5.1/guicast/thread.C
+@@ -58,13 +58,6 @@ void* Thread::entrypoint(void *parameters)
+       pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+       thread->cancel_enabled = false;
+
+-// Set realtime here since it doesn't work in start
+-      if( thread->realtime && getuid() == 0 ) {
+-              struct sched_param param = { sched_priority : 1 };
+-              if(pthread_setschedparam(thread->tid, SCHED_RR, &param) < 0)
+-                      perror("Thread::entrypoint pthread_attr_setschedpolicy");
+-      }
+-
+       thread->run();
+       thread->finished = true;
+       if( !thread->synchronous ) {
+diff --git a/cinelerra-5.1/plugins/Makefile b/cinelerra-5.1/plugins/Makefile
+index c4a5fd43..9713b59e 100644
+--- a/cinelerra-5.1/plugins/Makefile
++++ b/cinelerra-5.1/plugins/Makefile
+@@ -37,7 +37,6 @@ DIRS = $(OPENCV_OBJS) \
+       brightness \
+       burn \
+       C41 \
+-      cdripper \
+       chorus \
+       chromakey \
+       chromakeyhsv \
+@@ -183,6 +182,8 @@ DIRS = $(OPENCV_OBJS) \
+ #     denoisemjpeg \
+ # duplicate
+ #     vocoder \
++# not in bsd
++#     cdripper \
+
+ PLUGIN_DIR = $(BINDIR)/plugins
+ DATA = $(PLUGIN_DIR)/fonts $(PLUGIN_DIR)/shapes $(PLUGIN_DIR)/scopes
+diff --git a/cinelerra-5.1/plugins/shapewipe/Makefile b/cinelerra-5.1/plugins/shapewipe/Makefile
+index b5e19639..b494009b 100644
+--- a/cinelerra-5.1/plugins/shapewipe/Makefile
++++ b/cinelerra-5.1/plugins/shapewipe/Makefile
+@@ -1,7 +1,7 @@
+ include ../../plugin_defs
+
+ OBJS = $(OBJDIR)/shapewipe.o
+-LFLAGS += -lpng
++LFLAGS += `pkg-config --libs libpng`
+
+ PLUGIN = shapewipe
+
+diff --git a/cinelerra-5.1/plugins/titler/Makefile b/cinelerra-5.1/plugins/titler/Makefile
+index 3e520ac7..44b43a33 100644
+--- a/cinelerra-5.1/plugins/titler/Makefile
++++ b/cinelerra-5.1/plugins/titler/Makefile
+@@ -7,7 +7,7 @@ PLUGIN = titler
+ CFLAGS += -Wall
+
+ ifneq ($(STATIC_LIBRARIES), y)
+-LFLAGS += -lfreetype
++LFLAGS += `pkg-config --libs freetype`
+ endif
+
+ include ../../plugin_config
+diff --git a/cinelerra-5.1/plugins/titler/titler.C b/cinelerra-5.1/plugins/titler/titler.C
+index 06fb7938..1a2e35fe 100644
+--- a/cinelerra-5.1/plugins/titler/titler.C
++++ b/cinelerra-5.1/plugins/titler/titler.C
+@@ -57,8 +57,7 @@
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <string.h>
+-#include <endian.h>
+-#include <byteswap.h>
++#include <sys/endian.h>
+ #include <iconv.h>
+ #include <sys/stat.h>
+ #include <fontconfig/fontconfig.h>