Commit f3ec2d46 authored by Slavik Gnatenko's avatar Slavik Gnatenko Committed by Michael Niedermayer

os2 support patch by ("Slavik Gnatenko" <miracle9 at newmail dot ru>)

Originally committed as revision 1447 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 143cc725
......@@ -18,21 +18,26 @@ ifeq ($(CONFIG_WIN32),yes)
EXE=.exe
PROG=ffmpeg$(EXE)
else
EXT=
ifeq ($(CONFIG_OS2),yes)
EXE=.exe
PROG=ffmpeg$(EXE)
else
EXE=
PROG=ffmpeg ffplay
ifeq ($(CONFIG_FFSERVER),yes)
PROG+=ffserver
endif
endif
endif
ifeq ($(CONFIG_AUDIO_BEOS),yes)
EXTRALIBS+=-lmedia -lbe
endif
ifeq ($(BUILD_SHARED),yes)
DEP_LIBS=libavcodec/libavcodec.so libavformat/libavformat.a
DEP_LIBS=libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF)
else
DEP_LIBS=libavcodec/libavcodec.a libavformat/libavformat.a
DEP_LIBS=libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF)
ifeq ($(CONFIG_MP3LAME),yes)
EXTRALIBS+=-lmp3lame
endif
......@@ -61,7 +66,8 @@ ffmpeg_g$(EXE): ffmpeg.o $(DEP_LIBS)
-lavformat -lavcodec $(EXTRALIBS)
ffmpeg$(EXE): ffmpeg_g$(EXE)
cp -p $< $@ ; $(STRIP) $@
cp -p $< $@
$(STRIP) $@
ffserver$(EXE): ffserver.o $(DEP_LIBS)
$(CC) $(LDFLAGS) $(FFSLDFLAGS) \
......
......@@ -13,6 +13,7 @@ fi
TMPC="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c"
TMPO="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o"
TMPE="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}"
TMPS="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S"
TMPH="${TMPDIR1}/ffmpeg-conf-${RANDOM}-$$-${RANDOM}.h"
......@@ -61,6 +62,7 @@ a52bin="no"
win32="no"
mingw32="no"
cygwin="no"
os2="no"
lshared="no"
extralibs="-lm"
simpleidct="yes"
......@@ -75,6 +77,10 @@ need_inet_aton="no"
ffserver="yes"
LDFLAGS=-Wl,--warn-common
FFSLDFLAGS=-Wl,-E
LIBPREF="lib"
LIBSUF=".a"
SLIBPREF="lib"
SLIBSUF=".so"
# OS specific
targetos=`uname -s`
......@@ -169,6 +175,25 @@ echo "Missing inttypes.h, please copy cygwin_inttypes.h to" \
Linux)
LDFLAGS="$LDFLAGS -rdynamic"
;;
OS/2)
TMPE=$TMPE".exe"
ar="emxomfar -p32"
strip="echo ignore strip"
CFLAGS="-Zomf"
LDFLAGS="-Zomf -Zstack 16384"
SHFLAGS=""
FFSLDFLAGS=""
LIBPREF=""
LIBSUF=".lib"
SLIBPREF=""
SLIBSUF=".dll"
extralibs=""
v4l="no"
audio_oss="no"
network="no"
ffserver="no"
os2="yes"
;;
*) ;;
esac
......@@ -190,13 +215,13 @@ EOF
ldl=-ldl
if $cc -o $TMPO $TMPC -ldl 2> /dev/null ; then
if $cc -o $TMPE $TMPC -ldl 2> /dev/null ; then
vhook=yes
dlfcn=yes
dlopen=yes
fi
if $cc -o $TMPO $TMPC 2> /dev/null ; then
if $cc -o $TMPE $TMPC 2> /dev/null ; then
vhook=yes
dlfcn=yes
dlopen=yes
......@@ -207,12 +232,12 @@ cat > $TMPC << EOF
int main( void ) { return (int) dlopen("foo", 0); }
EOF
if $cc -o $TMPO $TMPC -ldl 2> /dev/null ; then
if $cc -o $TMPE $TMPC -ldl 2> /dev/null ; then
vhook=yes
dlopen=yes
fi
if $cc -o $TMPO $TMPC 2> /dev/null ; then
if $cc -o $TMPE $TMPC 2> /dev/null ; then
vhook=yes
dlopen=yes
ldl=""
......@@ -226,7 +251,7 @@ int main( void ) { return (int) imlib_load_font("foo"); }
EOF
imlib2=no
if $cc -o $TMPO $TMPC -lImlib2 2> /dev/null ; then
if $cc -o $TMPE $TMPC -lImlib2 2> /dev/null ; then
imlib2=yes
fi
......@@ -318,7 +343,7 @@ int main(void) {
return 0;
}
EOF
$cc -o $TMPO $TMPC -faltivec 2> /dev/null || altivec="no"
$cc -o $TMPE $TMPC -faltivec 2> /dev/null || altivec="no"
fi
# Can only do mmi on mips
......@@ -338,7 +363,7 @@ int main(void) {
return 0;
}
EOF
$cc -o $TMPO $TMPC 2> /dev/null || mmi="no"
$cc -o $TMPE $TMPC 2> /dev/null || mmi="no"
fi
# Checking for CFLAGS
......@@ -377,8 +402,8 @@ int main(int argc, char ** argv){
}
EOF
if $cc -o $TMPO $TMPC 2>/dev/null ; then
$TMPO && bigendian="yes"
if $cc -o $TMPE $TMPC 2>/dev/null ; then
$TMPE && bigendian="yes"
else
echo big/little test failed
fi
......@@ -402,7 +427,7 @@ EOF
_memalign=no
_malloc_h=no
if $cc -o $TMPO $TMPC 2> /dev/null ; then
if $cc -o $TMPE $TMPC 2> /dev/null ; then
_malloc_h=yes
_memalign=yes
# check for memalign - atmos
......@@ -414,7 +439,7 @@ string = memalign(64, sizeof(char));
return 0;
}
EOF
$cc -o $TMPO $TMPC 2> /dev/null || _memalign=no
$cc -o $TMPE $TMPC 2> /dev/null || _memalign=no
fi
cat > $TMPC << EOF
......@@ -424,7 +449,7 @@ int main( void ) { return *strptime("", "", 0); }
EOF
strptime=no
if $cc -o $TMPO $TMPC 2> /dev/null ; then
if $cc -o $TMPE $TMPC 2> /dev/null ; then
strptime=yes
fi
......@@ -439,8 +464,8 @@ if (zlibVersion() != ZLIB_VERSION)
return 0;
}
EOF
$cc -o $TMPO $TMPC -lz 2> /dev/null || zlib="no"
# $TMPO 2> /dev/null > /dev/null || zlib="no"
$cc -o $TMPE $TMPC -lz 2> /dev/null || zlib="no"
# $TMPE 2> /dev/null > /dev/null || zlib="no"
# XXX: more tests needed - runtime test
fi
if test "$zlib" = "yes"; then
......@@ -455,9 +480,9 @@ int main( void ) { return (lrintf(3.999f) > 0)?0:1; }
EOF
have_lrintf="no"
if $cc $extralibs -o $TMPO $TMPC 2> /dev/null ; then
if $cc $extralibs -o $TMPE $TMPC 2> /dev/null ; then
have_lrintf="yes"
$TMPO 2> /dev/null > /dev/null || have_lrintf="no"
$TMPE 2> /dev/null > /dev/null || have_lrintf="no"
fi
_restrict=
......@@ -577,6 +602,10 @@ echo "OPTFLAGS=$CFLAGS" >> config.mak
echo "LDFLAGS=$LDFLAGS" >> config.mak
echo "FFSLDFLAGS=$FFSLDFLAGS" >> config.mak
echo "SHFLAGS=$SHFLAGS" >> config.mak
echo "LIBPREF=$LIBPREF" >> config.mak
echo "LIBSUF=$LIBSUF" >> config.mak
echo "SLIBPREF=$SLIBPREF" >> config.mak
echo "SLIBSUF=$SLIBSUF" >> config.mak
if test "$cpu" = "x86" ; then
echo "TARGET_ARCH_X86=yes" >> config.mak
echo "#define ARCH_X86 1" >> $TMPH
......@@ -728,6 +757,11 @@ if test "$cygwin" = "yes" ; then
echo "CONFIG_WIN32=yes" >> config.mak
fi
if test "$os2" = "yes" ; then
echo "#define CONFIG_OS2 1" >> $TMPH
echo "CONFIG_OS2=yes" >> config.mak
fi
if test "$darwin" = "yes"; then
echo "#define CONFIG_DARWIN 1" >> $TMPH
echo "CONFIG_DARWIN=yes" >> config.mak
......@@ -786,4 +820,4 @@ else
echo "config.h is unchanged"
fi
rm -f $TMPO $TMPC $TMPS $TMPH
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
......@@ -28,6 +28,11 @@
#include <termios.h>
#include <sys/resource.h>
#endif
#ifdef CONFIG_OS2
#include <sys/types.h>
#include <sys/select.h>
#include <stdlib.h>
#endif
#include <time.h>
#include <ctype.h>
......@@ -2497,18 +2502,18 @@ void opt_pass(const char *pass_str)
do_pass = pass;
}
#ifndef CONFIG_WIN32
#if defined(CONFIG_WIN32) || defined(CONFIG_OS2)
INT64 getutime(void)
{
struct rusage rusage;
getrusage(RUSAGE_SELF, &rusage);
return (rusage.ru_utime.tv_sec * 1000000LL) + rusage.ru_utime.tv_usec;
return av_gettime();
}
#else
INT64 getutime(void)
{
return av_gettime();
struct rusage rusage;
getrusage(RUSAGE_SELF, &rusage);
return (rusage.ru_utime.tv_sec * 1000000LL) + rusage.ru_utime.tv_usec;
}
#endif
......
......@@ -91,9 +91,9 @@ endif
SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S)
OBJS := $(OBJS) $(ASM_OBJS)
LIB= libavcodec.a
LIB= $(LIBPREF)avcodec$(LIBSUF)
ifeq ($(BUILD_SHARED),yes)
SLIB= libavcodec.so
SLIB= $(SLIBPREF)avcodec$(SLIBSUF)
endif
TESTS= imgresample-test dct-test motion-test fft-test
......@@ -104,7 +104,9 @@ tests: apiexample cpuid_test $(TESTS)
$(LIB): $(OBJS)
rm -f $@
$(AR) rc $@ $(OBJS)
ifneq ($(CONFIG_OS2),yes)
$(RANLIB) $@
endif
$(SLIB): $(OBJS)
$(CC) $(SHFLAGS) -o $@ $(OBJS) $(EXTRALIBS)
......
......@@ -89,7 +89,38 @@ typedef INT64 int64_t;
# define snprintf _snprintf
#else /* CONFIG_WIN32 */
/* CONFIG_WIN32 end */
#elif defined (CONFIG_OS2)
/* OS/2 EMX */
#include <inttypes.h>
typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef unsigned int UINT32;
typedef unsigned long long UINT64;
typedef signed char INT8;
typedef signed short INT16;
typedef signed int INT32;
typedef signed long long INT64;
#ifdef HAVE_AV_CONFIG_H
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
#ifdef USE_FASTMEMCPY
#include "fastmemcpy.h"
#endif
#include <float.h>
#endif /* HAVE_AV_CONFIG_H */
/* CONFIG_OS2 end */
#else
/* unix */
......@@ -119,7 +150,7 @@ typedef signed long long INT64;
# endif
# endif /* HAVE_AV_CONFIG_H */
#endif /* !CONFIG_WIN32 */
#endif /* !CONFIG_WIN32 && !CONFIG_OS2 */
#ifdef HAVE_AV_CONFIG_H
......
......@@ -48,14 +48,16 @@ ifeq ($(CONFIG_VORBIS),yes)
OBJS+= ogg.o
endif
LIB= libavformat.a
LIB= $(LIBPREF)avformat$(LIBSUF)
all: $(LIB)
$(LIB): $(OBJS)
rm -f $@
$(AR) rc $@ $(OBJS)
ifneq ($(CONFIG_OS2),yes)
$(RANLIB) $@
endif
installlib: all
install -m 644 $(LIB) $(prefix)/lib
......@@ -73,4 +75,4 @@ installlib: all
g++ $(subst -Wall,,$(CFLAGS)) -c -o $@ $<
clean:
rm -f *.o *~ *.a
rm -f *.o *~ *.a $(LIB)
......@@ -42,7 +42,7 @@ static int file_open(URLContext *h, const char *filename, int flags)
} else {
access = O_RDONLY;
}
#ifdef CONFIG_WIN32
#if defined(CONFIG_WIN32) || defined(CONFIG_OS2)
access |= O_BINARY;
#endif
fd = open(filename, access, 0666);
......
......@@ -26,9 +26,13 @@
#ifdef __BEOS__
# ifndef usleep
# include <OS.h>
# define usleep(t) snooze((bigtime_t)(t))
# define usleep(t) snooze((bigtime_t)(t))
# endif
#endif
#if defined(CONFIG_OS2)
# include <stdlib.h>
# define usleep(t) _sleep2((t) / 1000)
#endif
typedef struct {
int width;
......
......@@ -18,14 +18,18 @@
*/
#include "avformat.h"
#include <ctype.h>
#ifndef CONFIG_WIN32
#include <unistd.h>
#include <fcntl.h>
#include <sys/time.h>
#else
#ifdef CONFIG_WIN32
#define strcasecmp _stricmp
#include <sys/types.h>
#include <sys/timeb.h>
#elif defined(CONFIG_OS2)
#include <string.h>
#define strcasecmp stricmp
#include <sys/time.h>
#else
#include <unistd.h>
#include <fcntl.h>
#include <sys/time.h>
#endif
#include <time.h>
......@@ -362,7 +366,7 @@ int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,
}
/* XXX: suppress this hack for redirectors */
#ifndef __MINGW32__
#ifdef CONFIG_NETWORK
if (fmt == &redir_demux) {
err = redir_open(ic_ptr, &ic->pb);
url_fclose(&ic->pb);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment