1 #
   2 # Makefile for Linux only avplugin
   3 #
   4 
   5 BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE)
   6 TARGET_DIRS = $(BUILD_DIR)
   7 
   8 SRCBASE_DIR = ../../../plugins
   9 
  10 DIRLIST = av
  11 
  12 ifneq ($(strip $(VERSION)),)
  13 TARGET = $(BUILD_DIR)/lib$(BASE_NAME)$(SUFFIX)-$(VERSION).so
  14 OBJBASE_DIR = $(BUILD_DIR)/obj/plugins/$(BASE_NAME)$(SUFFIX)-$(VERSION)
  15 else
  16 TARGET = $(BUILD_DIR)/lib$(BASE_NAME).so
  17 OBJBASE_DIR = $(BUILD_DIR)/obj/plugins/avplugin
  18 endif
  19 
  20 CFLAGS = -fPIC                   \
  21          -Wformat                \
  22          -Wextra                 \
  23          -Wformat-security       \
  24          -fstack-protector       \
  25          -Werror=implicit-function-declaration \
  26          -msse2                  \
  27          -fbuiltin               \
  28          -DHAVE_STDINT_H         \
  29          -DLINUX                 \
  30          -DGST_DISABLE_LOADSAVE  \
  31          -DGSTREAMER_LITE \
  32          -ffunction-sections -fdata-sections
  33 
  34 ifeq ($(BUILD_TYPE), Release)
  35     CFLAGS += -Os
  36 else
  37     CFLAGS += -g -Wall
  38 endif
  39 
  40 PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0)
  41 PACKAGES_LIBS     := $(shell pkg-config --libs glib-2.0 gobject-2.0)
  42 
  43 INCLUDES= -I../../../plugins                          \
  44           -I../../../plugins/av                       \
  45           -I../../../gstreamer-lite/gstreamer         \
  46           -I../../../gstreamer-lite/gstreamer/libs    \
  47           $(PACKAGES_INCLUDES)
  48 
  49 LDFLAGS = -L$(BUILD_DIR)    \
  50           -lgstreamer-lite  \
  51            $(PACKAGES_LIBS) \
  52           -z relro          \
  53           -static-libgcc -static-libstdc++ -Wl,--gc-sections
  54 
  55 ifneq ($(strip $(LIBAV_DIR)),)
  56 INCLUDES += -I$(LIBAV_DIR)/include
  57 LDFLAGS  += -L$(LIBAV_DIR)/lib/ -lavcodec -lavformat
  58 else
  59 INCLUDES += $(shell pkg-config --cflags libavcodec libavformat)
  60 LDFLAGS  += $(shell pkg-config --libs libavcodec libavformat)
  61 endif
  62 
  63 ifeq ($(ARCH), x32)
  64     CFLAGS += -m32
  65     LDFLAGS += -m32
  66 endif
  67 
  68 SOURCES = av/fxavcodecplugin.c  \
  69           av/avelement.c        \
  70           av/decoder.c          \
  71           av/audiodecoder.c     \
  72           av/videodecoder.c     \
  73           av/mpegtsdemuxer.c
  74 
  75 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
  76 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(SOURCES))
  77 
  78 .PHONY: default
  79 
  80 default: $(TARGET)
  81 
  82 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c
  83         $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
  84 
  85 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS)
  86 
  87 $(OBJ_DIRS):
  88         mkdir -p $(OBJ_DIRS)
  89 
  90 $(TARGET_DIRS):
  91         mkdir -p $(TARGET_DIRS)
  92 
  93 $(TARGET): $(OBJECTS)
  94         $(LINKER) -shared $(OBJECTS) $(LDFLAGS) -o $@