This is a record on my effors to port Cinelerra to the FreeBSD Operating System. It is my hope that the information included here as well as the lessons I have learned will be helpful to other people who are working on porting software to FreeBSD or other Operating Systems. Cinelerra is a Non-Linear Editor (NLE) for audio and video available for GNU/Linux. It is also my favorite video editor
Note: I do have a port that compiles cinelerra successfully on FreeBSD. If you are interested in obtaining it, please send me an e-mail.
First, I downloaded the Cinelerra 1.2.1 source tarball then extracted it on my FreeBSD box. Looking at the toplevel directory of the source, I see that there is no configure script, but just a Makefile to build the program with. Looking in the toplevel Makefile, I see that it provides three targets: all, install, and clean; and that the real logic is in build/Makefile.cinelerra which the toplevel Makefile invokes. The Makefile under build includes a file called global_plugin
Now that I have the source extracted, I decide to see what happens when I try to build it. I invoke make and immediately, make bombs with the following error messages:
$ make
make -f build/Makefile.cinelerra
"global_config", line 17: Missing dependency operator
"global_config", line 19: Need an operator
"global_config", line 21: Need an operator
"global_config", line 39: Missing dependency operator
"global_config", line 41: Need an operator
...
"build/Makefile.cinelerra", line 31: Missing dependency operator
"build/Makefile.cinelerra", line 34: Need an operator
"build/Makefile.cinelerra", line 41: Missing dependency operator
"build/Makefile.cinelerra", line 42: warning: duplicate script for target "ifeq" ignored
"build/Makefile.cinelerra", line 42: warning: duplicate script for target "(y,)" ignored
"build/Makefile.cinelerra", line 42: warning: duplicate script for target "(y)"ignored
"build/Makefile.cinelerra", line 43: Need an operator
make: fatal errors encountered -- cannot continue
*** Error code 1
Stop in /usr/home/sttng359/cinelerra/src/cinelerra-1.2.1.
From past experience, I've discovered the most likely reason for a perfectly good Makefile to get syntax errors like that shown above is because it uses extensions that aren't supported by the current version of make. Since this program is GPLed and is only supported to run on GNU/Linux, most likely it's written to use GNU make. So I try running gmake instead and, sure enough, that fixed one problem, but instead I get a different error.
$ gmake
gmake -f build/Makefile.cinelerra
uname: illegal option -- -
usage: uname -aimnprsv
gmake1: Entering directory `/usr/home/sttng359/cinelerra/src/cinelerra-1.2.1'
gcc -c -O2 -fomit-frame-pointer -falign-loops=2 -falign-jumps=2 -falign-functions=2 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I../../freetype-2.1.4/include -I../../ -DHAVE_OSS -DHAVE_FIREWIRE soundtest.c -o /soundtest.o
Assembler messages:
FATAL: can't create /soundtest.o: Permission denied
gmake1: *** /soundtest.o Error 1
gmake1: Leaving directory `/usr/home/sttng359/cinelerra/src/cinelerra-1.2.1'
gmake: *** all Error 2
The fi