diff --git a/common.mak b/common.mak
index ac317d99d94855962e79206598b0a9c1896eac96..58f6d7ef69a50b4460e5b6a6cbc0f3351dc4d108 100644
--- a/common.mak
+++ b/common.mak
@@ -10,14 +10,20 @@ vpath %.S $(LIBSRC)
 
 SRC_DIR = "$(LIBSRC)"
 
+ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale
+
 CFLAGS   += $(CFLAGS-yes)
 OBJS     += $(OBJS-yes)
 ASM_OBJS += $(ASM_OBJS-yes)
 CPP_OBJS += $(CPP_OBJS-yes)
+FFLIBS   += $(FFLIBS-yes)
 
 CFLAGS += -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
           -D_ISOC9X_SOURCE -I$(BUILD_ROOT) -I$(SRC_PATH) \
-          -I$(SRC_PATH)/libavutil $(OPTFLAGS)
+          $(addprefix -I$(SRC_PATH)/lib,$(ALLFFLIBS)) $(OPTFLAGS)
+
+EXTRALIBS := $(addprefix -l,$(addsuffix $(BUILDSUF),$(FFLIBS))) $(EXTRALIBS)
+LDFLAGS   := $(addprefix -L$(BUILD_ROOT)/lib,$(FFLIBS)) $(LDFLAGS)
 
 SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S) $(CPPOBJS:.o=.cpp)
 OBJS := $(OBJS) $(ASM_OBJS) $(CPPOBJS)
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 4fc2afda9b7ff8ce186199523baeea3de464ee10..22b2f48a6addac7ba8a7fc3efbc76c515ad4e138 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -4,8 +4,6 @@
 #
 include ../config.mak
 
-CFLAGS += -I$(SRC_PATH)/libswscale -I$(SRC_PATH)/libavcodec
-
 OBJS = allcodecs.o \
        audioconvert.o \
        bitstream.o \
@@ -456,7 +454,7 @@ ASM_OBJS-$(ARCH_BFIN)                  += bfin/pixels_bfin.o \
                                           bfin/idct_bfin.o   \
                                           bfin/vp3_idct_bfin.o   \
 
-EXTRALIBS := -L$(BUILD_ROOT)/libavutil -lavutil$(BUILDSUF) $(EXTRALIBS)
+FFLIBS = avutil
 
 NAME=avcodec
 LIBVERSION=$(LAVCVERSION)
diff --git a/libavdevice/Makefile b/libavdevice/Makefile
index 6047c11cb7eeefa16a6b615245b7d6b62133a8b6..be7bc9d55b9b2e35b72d673173336d511e796c6c 100644
--- a/libavdevice/Makefile
+++ b/libavdevice/Makefile
@@ -4,11 +4,7 @@ NAME=avdevice
 LIBVERSION=$(LAVDVERSION)
 LIBMAJOR=$(LAVDMAJOR)
 
-EXTRALIBS := -L$(BUILD_ROOT)/libavformat -lavformat$(BUILDSUF) \
-             -L$(BUILD_ROOT)/libavcodec  -lavcodec$(BUILDSUF) \
-             -L$(BUILD_ROOT)/libavutil   -lavutil$(BUILDSUF) $(EXTRALIBS)
-
-CFLAGS += -I$(SRC_PATH)/libavcodec -I$(SRC_PATH)/libavformat
+FFLIBS = avformat avcodec avutil
 
 OBJS = alldevices.o
 
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 69875d829d8b3ddfd5d0b1952ad9f2230497754c..eca5654986710773984548df99f936c24c692982 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -1,7 +1,5 @@
 include ../config.mak
 
-CFLAGS+=-I$(SRC_PATH)/libavformat -I$(SRC_PATH)/libavcodec -I$(SRC_PATH)/libswscale
-
 OBJS = allfilters.o \
        avfilter.o \
        defaults.o \
@@ -11,17 +9,10 @@ OBJS = allfilters.o \
 
 HEADERS = avfilter.h
 
-EXTRALIBS := -L$(BUILD_ROOT)/libavcodec -lavcodec$(BUILDSUF) \
-             -L$(BUILD_ROOT)/libavutil  -lavutil$(BUILDSUF) $(EXTRALIBS)
-
-ifeq ($(CONFIG_SWSCALER),yes)
-EXTRALIBS+=-L$(BUILD_ROOT)/libswscale
-EXTRALIBS+=-lswscale$(BUILDSUF)
-endif
+FFLIBS = avcodec avutil
 
-ifeq ($(CONFIG_AVFILTER_LAVF),yes)
-EXTRALIBS := -L$(BUILD_ROOT)/libavformat -lavformat$(BUILDSUF) $(EXTRALIBS)
-endif
+FFLIBS-$(CONFIG_SWSCALER)      += swscale
+FFLIBS-$(CONFIG_AVFILTER_LAVF) += avformat
 
 NAME=avfilter
 LIBVERSION=$(LAVFIVERSION)
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 041f224a70ba434e396ba5e6d5cb40b8582709a0..c1aabfa80b6c9924e7d4fbc0d34c96133b7b2675 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -4,8 +4,6 @@
 #
 include ../config.mak
 
-CFLAGS += -I$(SRC_PATH)/libavcodec
-
 OBJS = allformats.o cutils.o os_support.o sdp.o utils.o
 
 HEADERS = avformat.h avio.h rtsp.h rtspcodes.h
@@ -182,9 +180,6 @@ OBJS-$(CONFIG_LIBNUT_MUXER)              += libnut.o riff.o
 
 OBJS-$(CONFIG_VHOOK)                     += framehook.o
 
-EXTRALIBS := -L$(BUILD_ROOT)/libavcodec -lavcodec$(BUILDSUF) \
-             -L$(BUILD_ROOT)/libavutil  -lavutil$(BUILDSUF) $(EXTRALIBS)
-
 # protocols I/O
 OBJS+= avio.o aviobuf.o
 
@@ -195,6 +190,8 @@ OBJS-$(CONFIG_RTP_PROTOCOL)              += rtpproto.o
 OBJS-$(CONFIG_TCP_PROTOCOL)              += tcp.o
 OBJS-$(CONFIG_UDP_PROTOCOL)              += udp.o
 
+FFLIBS = avcodec avutil
+
 NAME=avformat
 LIBVERSION=$(LAVFVERSION)
 LIBMAJOR=$(LAVFMAJOR)
diff --git a/libpostproc/Makefile b/libpostproc/Makefile
index 8a285c6b0cea829e3e6f0942963ab223e4d814f9..ff15ad037943f2ae711177fec2b3147a694dbd4c 100644
--- a/libpostproc/Makefile
+++ b/libpostproc/Makefile
@@ -1,7 +1,7 @@
 
 include ../config.mak
 
-EXTRALIBS := -L$(BUILD_ROOT)/libavutil -lavutil$(BUILDSUF) $(EXTRALIBS)
+FFLIBS = avutil
 
 NAME=postproc
 LIBVERSION=$(SPPVERSION)