
include makefile.common

GCC=gcc
MOC=$(strip $(shell which moc-qt4))
ifeq ($(MOC),)
MOC=moc
endif

CXXOPTS=-Os -D_GNU_SOURCE -D_linux_

BUILDINFO_ARCH_NAME=$(shell $(GCC) -dumpmachine)
BUILDINFO_BUILD_DATE=$(shell date)
DESTDIR=
PREFIX=/usr
LIBDIR=${PREFIX}/lib


all: out/libdriveio.so.0 out/libmakemkv.so.1 out/makemkv
	@echo "type \"sudo make -f makefile.linux install\" to install"

clean:
	-rm -rf out tmp

install: out/libdriveio.so.0 out/libmakemkv.so.1 out/makemkv
	install -D -m 644 out/libdriveio.so.0 $(DESTDIR)$(LIBDIR)/libdriveio.so.0
	install -D -m 644 out/libmakemkv.so.1 $(DESTDIR)$(LIBDIR)/libmakemkv.so.1
ifndef DESTDIR
	ldconfig
endif
	install -D -m 755 out/makemkv $(DESTDIR)$(PREFIX)/bin/makemkv
	install -D -m 644 makemkvgui/share/makemkv.desktop $(DESTDIR)$(PREFIX)/share/applications/makemkv.desktop
	install -D -m 644 makemkvgui/share/icons/16x16/makemkv.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/makemkv.png
	install -D -m 644 makemkvgui/share/icons/22x22/makemkv.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/22x22/apps/makemkv.png
	install -D -m 644 makemkvgui/share/icons/32x32/makemkv.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/32x32/apps/makemkv.png
	install -D -m 644 makemkvgui/share/icons/64x64/makemkv.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/64x64/apps/makemkv.png
	install -D -m 644 makemkvgui/share/icons/128x128/makemkv.png $(DESTDIR)$(PREFIX)/share/icons/hicolor/128x128/apps/makemkv.png

out/%: out/%.full
	objcopy --strip-all --strip-debug --strip-unneeded --discard-all $< $@ 

out/libdriveio.so.0.full:
	mkdir -p out
	$(GCC) $(CXXOPTS) -D_REENTRANT -shared -Wl,-z,defs -o$@ $(LIBDRIVEIO_INC) $(LIBDRIVEIO_SRC) \
	-fPIC -Xlinker -dy -Xlinker --version-script=libdriveio/src/libdriveio.vers \
	-Xlinker -soname=libdriveio.so.0 -lc -lstdc++

out/libmakemkv.so.1.full: tmp/gen_buildinfo.h
	mkdir -p out
	$(GCC) $(CXXOPTS) -D_REENTRANT -shared -Wl,-z,defs -o$@ $(LIBEBML_INC) $(LIBEBML_DEF) $(LIBMATROSKA_INC) \
	$(LIBMAKEMKV_INC) $(SSTRING_INC) $(MAKEMKVGUI_INC) $(LIBABI_INC) $(LIBFFCODEC_INC) \
	$(LIBEBML_SRC) $(LIBMATROSKA_SRC) $(LIBMAKEMKV_SRC) $(GLIBC_SRC) $(SSTRING_SRC) \
	$(LIBABI_SRC) $(LIBABI_SRC_LINUX) $(LIBFFCODEC_SRC) \
	-DHAVE_BUILDINFO_H -Itmp \
	-fPIC -Xlinker -dy -Xlinker --version-script=libmakemkv/src/libmakemkv.vers \
	-Xlinker -soname=libmakemkv.so.1 -lc -lstdc++ -lcrypto -lz -lexpat

out/makemkv.full: $(MAKEMKVGUI_GEN) $(MAKEMKVGUI_SRC_LINUX) tmp/gen_buildinfo.h
	mkdir -p out
	$(GCC) $(CXXOPTS) -o$@ $(MAKEMKVGUI_INC) $(LIBMAKEMKV_INC) $(SSTRING_INC) $(LIBDRIVEIO_INC) $(LIBABI_INC) \
	$(MAKEMKVGUI_SRC) $(MAKEMKVGUI_SRC_LINUX) $(MAKEMKVGUI_GEN) $(SSTRING_SRC) $(LIBDRIVEIO_SRC_PUB) \
	-DHAVE_BUILDINFO_H -Itmp \
	-I/usr/include/qt4 -I/usr/lib/qt4/include -L/usr/lib/qt4 -L/usr/lib/qt4/lib -lc -lstdc++ \
	-lQtGui -lQtCore -lQtDBus -lpthread -lz -lrt

tmp/gen_buildinfo.h:
	mkdir -p tmp
	echo "#define BUILDINFO_ARCH_NAME \"$(BUILDINFO_ARCH_NAME)\"" >> $@
	echo "#define BUILDINFO_BUILD_DATE \"$(BUILDINFO_BUILD_DATE)\"" >> $@

tmp/moc_%.cpp : makemkvgui/src/%.h
	mkdir -p tmp
	$(MOC) -o $@ $<

tmp/image_data.o : makemkvgui/bin/image_data.bin
	mkdir -p tmp
	ld -r -b binary -o $@.rw $<
	objcopy --rename-section .data=.rodata2,readonly,alloc,load,data,contents $@.rw $@

