[FFmpeg-devel] [PATCH] Re-add OS/2 support
Dave Yeo
daveryeo
Sun Sep 16 06:38:39 CEST 2007
Diego Biurrun wrote:
> On Mon, Sep 10, 2007 at 10:03:40PM -0700, Dave Yeo wrote:
>> I also just realized that make install was slightly broken when built with
>> --enable-shared. Updated patch included. (SLIB_INSTALL_EXTRA_CMD was
>> missing target and added SLIBNAME_WITH_VERSION).
>
> I just applied the LN_S part.
Thank you
>
>> --- ffmpeg/configure Sun Sep 9 00:01:48 2007
>> +++ ffmpeg.os2/configure Mon Sep 10 21:47:56 2007
>> @@ -1196,6 +1199,27 @@
>> + os/2)
>> + LIBPREF=""
>> + LIBSUF="_s.lib"
>> + SLIBPREF=""
>> + SLIBSUF=".dll"
>> + SLIBNAME_WITH_VERSION='$(SLIBPREF)$(NAME)-$(LIBVERSION)$(SLIBSUF)'
>> + SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(NAME)-$(LIBMAJOR)$(SLIBSUF)'
>> + SLIB_EXTRA_CMD="dllar -o \$(NAME)\$(SLIBSUF) \$(NAME)\$(LIBSUF) -d \"\$(SLIBNAME_WITH_MAJOR)\" -omf -ord \$(LDFLAGS) \$(EXTRALIBS) \$(EXTRAOBJS); cp -f \$(SLIBNAME) \$(SLIBNAME_WITH_MAJOR)"
>> + SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME:\$(SLIBSUF)=.lib) \$(SLIBNAME:\$(SLIBSUF)=.a) \$(LIBDIR)"
>
> These two can be simplified by using single quotes.
You mean like in the attached patch?
>
>> + SLIB_INSTALL_EXTRA_CMD="-install -m 644 \$(SLIBNAME:\$(SLIBSUF)=.lib) \$(SLIBNAME:\$(SLIBSUF)=.a) \$(LIBDIR)"
>
> This looks wrong. First you set SLIBSUF to .dll then you change it
> here? What's going on? Also, there should be no libs with the names
> you are trying to install, since they are created under different names
> according to what you have set LIBSUF and SLIBSUF to ...
>
GCC on OS/2 supports both a.out binaries, objects and libs. Libs use .a
suffix, uses ld for linking, needs to be bound to execute. Plus OMF
objects, binaries, and libs. Libs use .lib suffix, and uses native
linker for linking. Can also use IBM debuggers and other tools.
To link to DLLs we create an import lib from the DLL (or DEF) and link
to that so ideally we want to end up with static foo_s.a and foo_s.lib
(we only get the .lib now), foo.dll and foo.a and foo.lib which the
respective linkers actually link against. Most of this is taken care of
here by dllar.cmd. Here is the log of that part of the build for libavcodec
...
dllar -o avcodec.dll avcodec_s.lib -d avcodec-51.dll -omf -ord -Zomf
-Zbin-files -Zargs-wild -L"/usr/src/ffmpeg"/libavutil -lavutil -lz ;
cp -f avcodec.dll avcodec-51.dll
emxexp -u avcodec_s.lib >>$_avcodec.def
cat $_avcodec.def | sort.exe | uniq.exe | rxqueue.exe S38Q0396702192
gcc.exe -Zcrtdll -Zomf -Zdll -o avcodec.dll avcodec.def avcodec_s.lib
-Zomf -Zbin-files -Zargs-wild -L/usr/src/ffmpeg/libavutil -lavutil -lz
emximp -o avcodec.a avcodec.def
emximp -o avcodec.lib avcodec.def
lxlite -cs -t: -mrn -ml1 -ynd avcodec.dll
?[ lxLite ]??????????????????????????????????[ Version 1.3.3 ]?
? Copyright 1996,97 by FRIENDS software ? All rights ?
? Copyright 2001,03 by Max Alekseyev ? reserved ?
? Processing file avcodec.dll ? The file avcodec.dll contains 6817729
bytes of debug information
? Processing file avcodec.dll ? Backing up avcodec.dll ... ? Saving
file avcodec.dll ... ? avcodec.dll initial:10690782
final: 2242948 gain: 79.1%
??Total gain: 8447834 bytes
??Done
...
These could also be named libfoo_s.a, libfoo.dll.a etc. Older GCC did
not understand these so I stayed with the older naming partially out of
habit and partially to keep some backwards compatibility.
Note also that we (and also Windows?) need an extra uninstall command as
well in a future patch.
After ./configure --enable-shared --enable-os2threads && make && make
install with attached patch.
I:\usr\local\lib>dir *avcodec*
The volume label in drive I is klibc.
The Volume Serial Number is 987A:45C4.
Directory of I:\usr\local\lib
9-15-07 8:38p 2242948 124 avcodec-51.44.0.dll
9-15-07 8:38p 2242948 124 avcodec-51.dll
9-15-07 8:38p 167202 124 avcodec.a
9-15-07 8:38p 2242948 124 avcodec.dll
9-15-07 8:38p 103424 124 avcodec.lib
9-15-07 8:38p 10993664 124 avcodec_s.lib
6 file(s) 17993134 bytes used
Note that the shared libs are stripped and compressed and will only work
with OS/2 ver 3 or newer.
Dave
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ffmpeg.diff
Type: text/x-patch
Size: 1698 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070915/49916423/attachment.bin>
More information about the ffmpeg-devel
mailing list