1 #
   2 # Makefile for libgstreamer-lite
   3 #
   4 
   5 BUILD_DIR = $(OUTPUT_DIR)/$(BUILD_TYPE)
   6 TARGET_DIRS = $(BUILD_DIR)
   7 
   8 BASE_DIR = ../../..
   9 SRCBASE_DIR = $(BASE_DIR)/gstreamer-lite
  10 OBJBASE_DIR = $(BUILD_DIR)/obj/gstreamer-lite
  11 
  12 DIRLIST = gstreamer/gst \
  13           gstreamer/libs/gst/base \
  14           gstreamer/libs/gst/controller \
  15           gst-plugins-base/gst-libs/gst/audio \
  16           gst-plugins-base/gst-libs/gst/interfaces \
  17           gst-plugins-base/gst-libs/gst/video \
  18           gst-plugins-base/gst-libs/gst/tag \
  19           gst-plugins-base/gst-libs/gst/riff \
  20           gst-plugins-base/gst-libs/gst/app \
  21           projects/plugins \
  22           gstreamer/plugins/elements \
  23           gst-plugins-base/gst-libs/gst/fft \
  24           gst-plugins-base/gst-libs/gst/pbutils \
  25           gst-plugins-base/gst/typefind \
  26           gst-plugins-base/gst/audioconvert \
  27           gst-plugins-base/gst/volume \
  28           gst-plugins-good/gst/audioparsers \
  29           gst-plugins-good/gst/isomp4 \
  30           gst-plugins-base/ext/alsa \
  31           gst-plugins-good/gst/audiofx \
  32           gst-plugins-good/gst/equalizer \
  33           gst-plugins-good/gst/spectrum \
  34           gst-plugins-good/gst/wavparse \
  35           gst-plugins-bad/gst/aiff \
  36           gst-plugins-base/gst/app
  37 
  38 TARGET = $(BUILD_DIR)/lib$(BASE_NAME).so
  39 
  40 CFLAGS =-fPIC                   \
  41         -Wformat                \
  42         -Wextra                 \
  43         -Wformat-security       \
  44         -fstack-protector       \
  45         -Werror=implicit-function-declaration \
  46         -D_GNU_SOURCE           \
  47         -DGST_REMOVE_DEPRECATED \
  48         -DGSTREAMER_LITE        \
  49         -DHAVE_CONFIG_H         \
  50         -DOUTSIDE_SPEEX         \
  51         -DLINUX                 \
  52         -DGST_DISABLE_GST_DEBUG \
  53         -DGST_DISABLE_LOADSAVE  \
  54         -ffunction-sections -fdata-sections
  55 
  56 ifeq ($(BUILD_TYPE), Release)
  57     CFLAGS += -Os
  58 else
  59     CFLAGS += -g -Wall
  60 endif
  61 
  62 INCLUDES = -I$(BASE_DIR)/plugins                          \
  63            -I$(SRCBASE_DIR)/projects/build/linux/common   \
  64            -I$(SRCBASE_DIR)/gstreamer                     \
  65            -I$(SRCBASE_DIR)/gstreamer/libs                \
  66            -I$(SRCBASE_DIR)/gstreamer/gst/parse           \
  67            -I$(SRCBASE_DIR)/gst-plugins-base              \
  68            -I$(SRCBASE_DIR)/gst-plugins-base/gst-libs     \
  69            -I$(SRCBASE_DIR)/projects/plugins              \
  70            -I$(SRCBASE_DIR)/gst-plugins-base/gst-libs     \
  71            -I$(SRCBASE_DIR)/gst-plugins-good/gst-libs     \
  72            -I$(SRCBASE_DIR)/gst-plugins-good/gst/isomp4   \
  73            -I$(SRCBASE_DIR)/gst-plugins-bad/gst-libs
  74 
  75 PACKAGES_INCLUDES := $(shell pkg-config --cflags alsa glib-2.0)
  76 PACKAGES_LIBS := $(shell pkg-config --libs alsa glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0)
  77 
  78 LDFLAGS = -L$(BUILD_DIR) -lm $(PACKAGES_LIBS) \
  79           -z relro \
  80           -static-libgcc -static-libstdc++ -Wl,--gc-sections
  81 
  82 ifeq ($(ARCH), x32)
  83     CFLAGS += -m32
  84     LDFLAGS += -m32
  85 endif
  86 
  87 SOURCES = \
  88 gstreamer/gst/gst.c \
  89             gstreamer/gst/gstallocator.c \
  90             gstreamer/gst/gstatomicqueue.c \
  91             gstreamer/gst/gstbin.c \
  92             gstreamer/gst/gstbuffer.c \
  93             gstreamer/gst/gstbufferlist.c \
  94             gstreamer/gst/gstbufferpool.c \
  95             gstreamer/gst/gstbus.c \
  96             gstreamer/gst/gstcaps.c \
  97             gstreamer/gst/gstcapsfeatures.c \
  98             gstreamer/gst/gstchildproxy.c \
  99             gstreamer/gst/gstclock.c \
 100             gstreamer/gst/gstcontext.c \
 101             gstreamer/gst/gstcontrolbinding.c \
 102             gstreamer/gst/gstcontrolsource.c \
 103             gstreamer/gst/gstdatetime.c \
 104             gstreamer/gst/gstdebugutils.c \
 105             gstreamer/gst/gstdynamictypefactory.c \
 106             gstreamer/gst/gstelement.c \
 107             gstreamer/gst/gstelementfactory.c \
 108             gstreamer/gst/gstenumtypes.c \
 109             gstreamer/gst/gsterror.c \
 110             gstreamer/gst/gstevent.c \
 111             gstreamer/gst/gstformat.c \
 112             gstreamer/gst/gstghostpad.c \
 113             gstreamer/gst/gstinfo.c \
 114             gstreamer/gst/gstiterator.c \
 115             gstreamer/gst/gstmemory.c \
 116             gstreamer/gst/gstmessage.c \
 117             gstreamer/gst/gstmeta.c \
 118             gstreamer/gst/gstminiobject.c \
 119             gstreamer/gst/gstobject.c \
 120             gstreamer/gst/gstpad.c \
 121             gstreamer/gst/gstpadtemplate.c \
 122             gstreamer/gst/gstparamspecs.c \
 123             gstreamer/gst/gstparse.c \
 124             gstreamer/gst/gstpipeline.c \
 125             gstreamer/gst/gstplugin.c \
 126             gstreamer/gst/gstpluginfeature.c \
 127             gstreamer/gst/gstpluginloader.c \
 128             gstreamer/gst/gstpoll.c \
 129             gstreamer/gst/gstpreset.c \
 130             gstreamer/gst/gstprotection.c \
 131             gstreamer/gst/gstquark.c \
 132             gstreamer/gst/gstquery.c \
 133             gstreamer/gst/gstregistry.c \
 134             gstreamer/gst/gstregistrybinary.c \
 135             gstreamer/gst/gstregistrychunks.c \
 136             gstreamer/gst/gstsample.c \
 137             gstreamer/gst/gstsegment.c \
 138             gstreamer/gst/gststructure.c \
 139             gstreamer/gst/gstsystemclock.c \
 140             gstreamer/gst/gststreamcollection.c \
 141             gstreamer/gst/gststreams.c \
 142             gstreamer/gst/gsttaglist.c \
 143             gstreamer/gst/gsttagsetter.c \
 144             gstreamer/gst/gsttask.c \
 145             gstreamer/gst/gsttaskpool.c \
 146             gstreamer/gst/gsttoc.c \
 147             gstreamer/gst/gsttocsetter.c \
 148             gstreamer/gst/gsttracer.c \
 149             gstreamer/gst/gsttracerfactory.c \
 150             gstreamer/gst/gsttracerrecord.c \
 151             gstreamer/gst/gsttracerutils.c \
 152             gstreamer/gst/gsttypefind.c \
 153             gstreamer/gst/gsttypefindfactory.c \
 154             gstreamer/gst/gsturi.c \
 155             gstreamer/gst/gstutils.c \
 156             gstreamer/gst/gstvalue.c \
 157             gstreamer/libs/gst/base/gstadapter.c \
 158             gstreamer/libs/gst/base/gstbaseparse.c \
 159             gstreamer/libs/gst/base/gstbasesink.c \
 160             gstreamer/libs/gst/base/gstbasesrc.c \
 161             gstreamer/libs/gst/base/gstbasetransform.c \
 162             gstreamer/libs/gst/base/gstbitreader.c \
 163             gstreamer/libs/gst/base/gstbytereader.c \
 164             gstreamer/libs/gst/base/gstbytewriter.c \
 165             gstreamer/libs/gst/base/gstcollectpads.c \
 166             gstreamer/libs/gst/base/gstdataqueue.c \
 167             gstreamer/libs/gst/base/gstflowcombiner.c \
 168             gstreamer/libs/gst/base/gstpushsrc.c \
 169             gstreamer/libs/gst/base/gstqueuearray.c \
 170             gstreamer/libs/gst/base/gsttypefindhelper.c \
 171             gst-plugins-base/gst-libs/gst/app/gstapp-marshal.c \
 172             gst-plugins-base/gst-libs/gst/app/gstappsink.c \
 173             gst-plugins-base/gst-libs/gst/audio/audio.c \
 174             gst-plugins-base/gst-libs/gst/audio/audio-channels.c \
 175             gst-plugins-base/gst-libs/gst/audio/audio-channel-mixer.c \
 176             gst-plugins-base/gst-libs/gst/audio/audio-converter.c \
 177             gst-plugins-base/gst-libs/gst/audio/audio-resampler.c \
 178             gst-plugins-base/gst-libs/gst/audio/audio-enumtypes.c \
 179             gst-plugins-base/gst-libs/gst/audio/audio-quantize.c \
 180             gst-plugins-base/gst-libs/gst/audio/audio-format.c \
 181             gst-plugins-base/gst-libs/gst/audio/audio-info.c \
 182             gst-plugins-base/gst-libs/gst/audio/gstaudiobasesink.c \
 183             gst-plugins-base/gst-libs/gst/audio/gstaudiobasesrc.c \
 184             gst-plugins-base/gst-libs/gst/audio/gstaudioclock.c \
 185             gst-plugins-base/gst-libs/gst/audio/gstaudiodecoder.c \
 186             gst-plugins-base/gst-libs/gst/audio/gstaudioencoder.c \
 187             gst-plugins-base/gst-libs/gst/audio/gstaudiofilter.c \
 188             gst-plugins-base/gst-libs/gst/audio/gstaudioiec61937.c \
 189             gst-plugins-base/gst-libs/gst/audio/gstaudiometa.c \
 190             gst-plugins-base/gst-libs/gst/audio/gstaudiopack-dist.c \
 191             gst-plugins-base/gst-libs/gst/audio/gstaudioringbuffer.c \
 192             gst-plugins-base/gst-libs/gst/audio/gstaudiosink.c \
 193             gst-plugins-base/gst-libs/gst/audio/gstaudiosrc.c \
 194             gst-plugins-base/gst-libs/gst/audio/gstaudioutilsprivate.c \
 195             gst-plugins-base/gst-libs/gst/audio/streamvolume.c \
 196             gst-plugins-base/gst-libs/gst/fft/gstfft.c \
 197             gst-plugins-base/gst-libs/gst/fft/gstfftf32.c \
 198             gst-plugins-base/gst-libs/gst/fft/kiss_fft_f32.c \
 199             gst-plugins-base/gst-libs/gst/fft/kiss_fftr_f32.c \
 200             gst-plugins-base/gst-libs/gst/pbutils/codec-utils.c \
 201             gst-plugins-base/gst-libs/gst/pbutils/descriptions.c \
 202             gst-plugins-base/gst-libs/gst/pbutils/encoding-profile.c \
 203             gst-plugins-base/gst-libs/gst/pbutils/encoding-target.c \
 204             gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.c \
 205             gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer-types.c \
 206             gst-plugins-base/gst-libs/gst/pbutils/gstpluginsbaseversion.c \
 207             gst-plugins-base/gst-libs/gst/pbutils/missing-plugins.c \
 208             gst-plugins-base/gst-libs/gst/pbutils/pbutils.c \
 209             gst-plugins-base/gst-libs/gst/pbutils/pbutils-enumtypes.c \
 210             gst-plugins-base/gst-libs/gst/riff/riff-media.c \
 211             gst-plugins-base/gst-libs/gst/riff/riff-read.c \
 212             gst-plugins-base/gst-libs/gst/riff/riff.c \
 213             gst-plugins-base/gst-libs/gst/tag/gstid3tag.c \
 214             gst-plugins-base/gst-libs/gst/tag/gsttagdemux.c \
 215             gst-plugins-base/gst-libs/gst/tag/id3v2.c \
 216             gst-plugins-base/gst-libs/gst/tag/id3v2frames.c \
 217             gst-plugins-base/gst-libs/gst/tag/lang.c \
 218             gst-plugins-base/gst-libs/gst/tag/tags.c \
 219             gst-plugins-base/gst-libs/gst/tag/tag-enumtypes.c \
 220             gst-plugins-base/gst-libs/gst/video/video.c \
 221             gst-plugins-base/gst-libs/gst/video/video-chroma.c \
 222             gst-plugins-base/gst-libs/gst/video/video-color.c \
 223             gst-plugins-base/gst-libs/gst/video/video-converter.c \
 224             gst-plugins-base/gst-libs/gst/video/video-format.c \
 225             gst-plugins-base/gst-libs/gst/video/video-enumtypes.c \
 226             gst-plugins-base/gst-libs/gst/video/video-info.c \
 227             gst-plugins-base/gst-libs/gst/video/video-multiview.c \
 228             gst-plugins-base/gst-libs/gst/video/video-orc-dist.c \
 229             gst-plugins-base/gst-libs/gst/video/video-tile.c \
 230             gst-plugins-good/gst/audiofx/audiofx.c \
 231             gst-plugins-good/gst/audiofx/audiopanorama.c \
 232             gst-plugins-good/gst/audiofx/audiopanoramaorc.c \
 233             gst-plugins-base/gst/audioconvert/plugin.c \
 234             gst-plugins-base/gst/audioconvert/gstaudioconvert.c \
 235             gst-plugins-bad/gst/aiff/aiff.c \
 236             gst-plugins-bad/gst/aiff/aiffparse.c \
 237             gst-plugins-base/gst/app/gstapp.c \
 238             gst-plugins-base/gst/typefind/gsttypefindfunctions.c \
 239             gst-plugins-good/gst/audioparsers/gstmpegaudioparse.c \
 240             gst-plugins-good/gst/audioparsers/parsersplugin.c \
 241             gst-plugins-good/gst/equalizer/gstiirequalizer.c \
 242             gst-plugins-good/gst/equalizer/gstiirequalizernbands.c \
 243             gst-plugins-good/gst/isomp4/isomp4-plugin.c \
 244             gst-plugins-good/gst/isomp4/qtdemux.c \
 245             gst-plugins-good/gst/isomp4/gstisoff.c \
 246             gst-plugins-good/gst/isomp4/qtdemux_dump.c \
 247             gst-plugins-good/gst/isomp4/qtdemux_lang.c \
 248             gst-plugins-good/gst/isomp4/qtdemux_types.c \
 249             gst-plugins-good/gst/spectrum/gstspectrum.c \
 250             gst-plugins-good/gst/wavparse/gstwavparse.c \
 251             gstreamer/plugins/elements/gstelements.c \
 252             gstreamer/plugins/elements/gstqueue.c \
 253             gstreamer/plugins/elements/gsttypefindelement.c \
 254             gst-plugins-base/gst/volume/gstvolume.c \
 255             gst-plugins-base/gst/volume/gstvolumeorc-dist.c \
 256             gst-plugins-base/ext/alsa/gstalsaplugin.c \
 257             gst-plugins-base/ext/alsa/gstalsa.c \
 258             gst-plugins-base/ext/alsa/gstalsadeviceprobe.c \
 259             gst-plugins-base/ext/alsa/gstalsasink.c \
 260             projects/plugins/gstplugins-lite.c
 261 
 262 OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST))
 263 OBJECTS = $(patsubst %.c,$(OBJBASE_DIR)/%.o,$(SOURCES))
 264 
 265 .PHONY: default list
 266 
 267 default: $(TARGET)
 268 
 269 $(OBJBASE_DIR)/%.o: $(SRCBASE_DIR)/%.c
 270         $(CC) $(CFLAGS) $(INCLUDES) $(PACKAGES_INCLUDES) -c $< -o $@
 271 
 272 $(OBJECTS): | $(OBJ_DIRS) $(TARGET_DIRS)
 273 
 274 $(OBJ_DIRS):
 275         mkdir -p $(OBJ_DIRS)
 276 
 277 $(TARGET_DIRS):
 278         mkdir -p $(TARGET_DIRS)
 279 
 280 $(TARGET): $(OBJECTS)
 281         $(LINKER) -shared $(OBJECTS) $(LDFLAGS) -o $@