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 -Werror=implicit-function-declaration \ 25 -msse2 \ 26 -fbuiltin \ 27 -DHAVE_STDINT_H \ 28 -DLINUX \ 29 -DGST_DISABLE_LOADSAVE \ 30 -DGSTREAMER_LITE \ 31 -ffunction-sections -fdata-sections 32 33 ifeq ($(BUILD_TYPE), Release) 34 CFLAGS += -Os 35 else 36 CFLAGS += -g -Wall 37 endif 38 39 PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0) 40 PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gobject-2.0) 41 42 INCLUDES= -I../../../plugins \ 43 -I../../../plugins/av \ 44 -I../../../gstreamer-lite/gstreamer \ 45 -I../../../gstreamer-lite/gstreamer/libs \ 46 $(PACKAGES_INCLUDES) 47 48 LDFLAGS = -L$(BUILD_DIR) \ 49 -lgstreamer-lite \ 50 $(PACKAGES_LIBS) \ 51 -static-libgcc -static-libstdc++ -Wl,--gc-sections 52 53 ifneq ($(strip $(LIBAV_DIR)),) 54 INCLUDES += -I$(LIBAV_DIR)/include 55 LDFLAGS += -L$(LIBAV_DIR)/lib/ -lavcodec -lavformat 56 else 57 INCLUDES += $(shell pkg-config --cflags libavcodec libavformat) 58 LDFLAGS += $(shell pkg-config --libs libavcodec libavformat) 59 endif 60 61 ifeq ($(ARCH), x32) 62 CFLAGS += -m32 63 LDFLAGS += -m32 64 endif 65 66 SOURCES = av/fxavcodecplugin.c \ 67 av/avelement.c \ 68 av/decoder.c \ 69 av/audiodecoder.c \ 70 av/videodecoder.c \ 71 av/mpegtsdemuxer.c 72 73 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST)) 74 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(SOURCES)) 75 76 .PHONY: default 77 78 default: $(TARGET) 79 80 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c 81 $(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ 82 83 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS) 84 85 $(OBJ_DIRS): 86 mkdir -p $(OBJ_DIRS) 87 88 $(TARGET_DIRS): 89 mkdir -p $(TARGET_DIRS) 90 91 $(TARGET): $(OBJECTS) 92 $(LINKER) -shared $(OBJECTS) $(LDFLAGS) -o $@