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