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 $@