#
# Main gpac Makefile
#
include config.mak

VPATH=$(SRC_PATH)

CFLAGS= $(OPTFLAGS) -Wall -I. -I$(SRC_PATH) -I$(SRC_PATH)/Include

ifeq ($(DEBUGBUILD),yes)
CFLAGS+=-g
LDFLAGS+=-g
endif

ifeq ($(TARGET_GPROF),yes)
CFLAGS+=-p
LDFLAGS+=-p
endif

all: lib progs plugs

lib:
	$(MAKE) -C M4Systems all

progs:
	$(MAKE) -C Applications all

sggen:
	$(MAKE) -C Applications sggen

plugs:
	$(MAKE) -C Plugins all

depend:
	$(MAKE) -C M4Systems dep
	$(MAKE) -C Applications dep
	$(MAKE) -C Plugins dep

clean: $(CLEANVHOOK)
	$(MAKE) -C M4Systems clean
	$(MAKE) -C Applications clean
	$(MAKE) -C Plugins clean

distclean: $(CLEANVHOOK)
	$(MAKE) -C M4Systems distclean
	$(MAKE) -C Applications distclean
	$(MAKE) -C Plugins distclean
	rm -f config.mak

dep:	depend

# tar release (use 'make -k tar' on a checkouted tree)
FILE=gpac-$(shell grep "\#define M4_VERSION " include/gpac/m4_tools.h | \
                    cut -d "\"" -f 2 )

tar:
	( tar zcvf ~/$(FILE).tar.gz ../gpac --exclude CVS --exclude Debug --exclude bin --exclude lib --exclude Release --exclude Obj --exclude temp --exclude AMR_NB --exclude *.mak --exclude *.o --exclude *.~*)

install:
	install -d "$(prefix)/bin"
	install -c -s -m 755 bin/gcc/MP4Box "$(prefix)/bin"
	install -c -s -m 755 bin/gcc/MP42AVI "$(prefix)/bin"
	$(MAKE) -C Applications install
	install -d "$(plugdir)"
	install -c bin/gcc/*.$(DYN_LIB_SUFFIX) "$(plugdir)"
	rm -f $(plugdir)/libm4systems.$(DYN_LIB_SUFFIX)
ifeq ($(CONFIG_WIN32),yes)
	install -s -m 755 bin/gcc/libm4systems.dll $(prefix)/lib
else
	install -s -m 755 bin/gcc/libm4systems.$(DYN_LIB_SUFFIX) $(prefix)/lib/libm4systems-$(VERSION).$(DYN_LIB_SUFFIX)
	ln -sf libm4systems-$(VERSION).$(DYN_LIB_SUFFIX) $(prefix)/lib/libm4systems.$(DYN_LIB_SUFFIX)
	#not sure wether darwin uses ldconfig or not...
ifeq ($(CONFIG_DARWIN),yes)
else
	ldconfig || true
endif
endif
	install -d "$(mandir)/man1"
	install -c -m 644 doc/man/mp4box.1 $(mandir)/man1/
	install -c -m 644 doc/man/mp42avi.1 $(mandir)/man1/
	install -c -m 644 doc/man/mp4client.1 $(mandir)/man1/
	install -c -m 644 doc/man/gpac.1 $(mandir)/man1/

uninstall:
	$(MAKE) -C Applications uninstall
	rm -rf $(plugdir)
	rm -rf $(prefix)/lib/libm4systems*
	rm -rf $(prefix)/bin/MP4Box
	rm -rf $(prefix)/bin/MP42AVI
	rm -rf $(mandir)/man1/mp4box.1
	rm -rf $(mandir)/man1/mp42avi.1
	rm -rf $(mandir)/man1/mp4client.1
	rm -rf $(mandir)/man1/gpac.1

install-lib:
	mkdir -p "$(prefix)/include/gpac"
	install -m 644 $(SRC_PATH)/include/gpac/*.h "$(prefix)/include/gpac"
	mkdir -p "$(prefix)/include/gpac/intern" 
	install -m 644 $(SRC_PATH)/include/gpac/intern/*.h "$(prefix)/include/gpac/intern"
	mkdir -p "$(prefix)/lib"
	install -m 644 "./bin/gcc/libm4systems_static.a" "$(prefix)/lib"

uninstall-lib:
	rm -rf "$(prefix)/include/gpac/intern"
	rm -rf "$(prefix)/include/gpac"

help:
	@echo "Input to GPAC make:"
	@echo "depend/dep: builds dependencies (developer)"
	@echo "all (void): builds main library, programs and plugins"
	@echo "lib: builds M4Systems library only (libm4systems.a)"
	@echo "progs: builds programs only"
	@echo "plugs: builds plugins only"
	@echo 
	@echo "sggen: builds SGGen application only for scene graph regeneration"
	@echo 
	@echo "clean: clean src repository"
	@echo "distclean: clean src repository and host config file"
	@echo "tar: create GPAC tarball"
	@echo 
	@echo "install: install applications and plugins on system"
	@echo "uninstall: uninstall applications and plugins"
	@echo 
	@echo "install-lib: install M4Systems library (libm4systems.a) and headers <gpac/m4*.h> and <gpac/intern/*.h>"
	@echo "uninstall-lib: uninstall M4Systems library (libm4systems.a) and headers"

ifneq ($(wildcard .depend),)
include .depend
endif
