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