# Project: libgstreamer
# Makefile to use with GNU Make
#
# Uses the Free Visual C++ 2003 compiler from Microsoft
# http://msdn.microsoft.com/visualc/vctoolkit2003/

# Compile with debug information ? IMPOSSIBLE with the free version of the compiler
#DEBUG = yes

# Link with MSVCRT as a DLL ? IMPOSSIBLE with the free version of the compiler
MSVCRT = yes

SRC_DIR=..\tools
GLIB_DIR=..\..\glib

#
# Don't change anything below this line.
#
CXX  = cl /Tp
CC   = cl /Tc
SRC  = $(SRC_DIR)\gst-launch.obj
OBJ  = $(patsubst %.c,%.obj,$(SRC))
INCS = /I. /I.. /I../libs /I../../popt/include /I../../libiconv/include /I../../libxml2/include/libxml2 /I$(GLIB_DIR) /I$(GLIB_DIR)\glib /I$(GLIB_DIR)\gmodule /I$(GLIB_DIR)\build\win32
LDFLAGS = /NOLOGO /DLL /IMPLIB:gstreamer-0.8.lib /MAP:gst-launch.map /LIBPATH:$(GLIB_DIR)/glib /LIBPATH:$(GLIB_DIR)/gobject /LIBPATH:$(GLIB_DIR)/gmodule /LIBPATH:$(GLIB_DIR)/gthread /LIBPATH:../../popt/lib /LIBPATH:../../libxml2/lib
OPTMIZ = /G6 /O2 /Oi /Wp64 /GL
CXXFLAGS = $(INCS) /DWIN32 /D_WINDOWS /DHAVE_CONFIG_H /D_USRDLL /DHAVE_WIN32 /nologo


HEADERS = $(SRC_DIR)\gstconfig.h $(SRC_DIR)\gstenumtypes.h $(SRC_DIR)\gstversion.h $(SRC_DIR)\gstenumtypes.c $(SRC_DIR)\gstmarshal.h

ifeq (yes,$(DEBUG))

ifeq (yes,$(MSVCRT))
 CXXFLAGS += /MDd
else
 CXXFLAGS += /MTd
endif
CXXFLAGS += /Zi /DDEBUG /D_DEBUG /RTC1
LDFLAGS += /DEBUG

else

ifeq (yes,$(MSVCRT))
 CXXFLAGS += /MD
else
 CXXFLAGS += /MT
endif
CXXFLAGS += /DGST_DISABLE_GST_DEBUG
LDFLAGS += /OPT:REF
endif

.PHONY: all all-before all-after clean clean-custom

%.obj : %.cpp
	$(CXX) $< /c $(CXXFLAGS) /Fo$@

%.obj : %.c
	$(CC) $< /c $(CXXFLAGS) /Fo$@

all: gst-launch.exe

clean:
	$(RM) gst-launch.exe gst-launch.obj

gst-launch.exe:
	$(CC) $(SRC_DIR)\gst-launch.c $(CXXFLAGS) gstreamer-0.8.lib $(GLIB_DIR)/glib/glib-2.0.lib $(GLIB_DIR)/gobject/gobject-2.0.lib
	

depend:
	$(CXX) $(CXXFLAGS) -MM $(SRC) > .depend

#
# include dependency files if they exist
#
ifneq ($(wildcard .depend),)
include .depend
endif
