# Makefile for hal/3pp/DirectFB


### Requires these modules

REQUIRES += hal/3pp/libjpeg-v6b
REQUIRES += link/3pp/ati


### Component specification

COMPONENT_IS_3PP = true
COMPONENT_TARGETS += $(TARGET_NAME_VIP1500)
COMPONENT_TARGETS += $(TARGET_NAME_VIP1200)
COMPONENT_TARGETS += $(TARGET_NAME_VIP1900)
NEEDS_ABS_PATHS = true


### Tar archive

dfb_ver     = 0.9.20
SRC_ARCHIVE = $(CURDIR)/DirectFB-$(dfb_ver).tar.gz
SRC_DIR     = $(TARGET)/DirectFB-$(dfb_ver)
obj_dir     = $(TARGET)
marker      = $(SRC_DIR)/.done

PATCHES      = $(CURDIR)/PATCHES
PATCHES_1500 = $(CURDIR)/PATCHES_1500
PATCHES_1900 = $(CURDIR)/PATCHES_1900

### Targets

LIB_TARGETS += $(obj_dir)/dist/usr/lib/libdirectfb-0.9.so.20.0.0
LIB_TARGETS += $(obj_dir)/dist/usr/lib/libdirectfb-0.9.so.20
LIB_TARGETS += $(obj_dir)/dist/usr/lib/libdirectfb.so

lib_dir = $(obj_dir)/dist/usr/lib/directfb-$(dfb_ver)

LIB_TARGETS += $(lib_dir)/systems/libdirectfb_fbdev.so
LIB_TARGETS += $(lib_dir)/inputdrivers/libdirectfb_keyboard.so
LIB_TARGETS += $(lib_dir)/inputdrivers/libdirectfb_ps2mouse.so
LIB_TARGETS += $(lib_dir)/inputdrivers/libdirectfb_linux_input.so
LIB_TARGETS += $(lib_dir)/interfaces/IDirectFBFont/libidirectfbfont_default.so
LIB_TARGETS += $(lib_dir)/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so
LIB_TARGETS += $(lib_dir)/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so


BIN_TARGETS += $(obj_dir)/tools/.libs/dfbg
BIN_TARGETS += $(obj_dir)/tools/.libs/dfbdump
BIN_TARGETS += $(obj_dir)/tools/.libs/dfbinfo
BIN_TARGETS += $(obj_dir)/tools/.libs/dfbsummon
BIN_TARGETS += $(obj_dir)/tools/.libs/fusion_bench

OTHER_TARGETS += $(TARGET_INSTALL_DIR)/include/directfb
OTHER_TARGETS += $(TARGET_INSTALL_DIR)/include/directfb-internal

TARGETCONFIG_TARGETS += $(obj_dir)/dist/usr/share/directfb-$(dfb_ver)/cursor.dat
CONFIG_OMIT_SOURCE_DIR = yes
CONFIG_PATH = directfb

INTERFACE_PATH =
INTERFACE_OMIT_SOURCE_DIR = yes

INTERFACE_LIBS = directfb

DOC_TARGETS = $(SRC_DIR)/COPYING
DOC_OMIT_SOURCE_DIR = yes
DOC_PATH = ../../doc/doc


### Extra cleanup

CLEANUP_FILES += .done


### Common.mk

include ../../../makesystem/common.mk

ifeq ($(TARGET),$(TARGET_NAME_VIP1500))
  MULTI_SUPPORT = --enable-multi=yes
  PATCHES += $(PATCHES_1500)
endif

ifeq ($(TARGET),$(TARGET_NAME_VIP1900))
  PATCHES += $(PATCHES_1900)
endif

### Dependencies

$(SRC_DIR)/configure: $(SRC_ARCHIVE) $(PATCHES_DEP)
	$(UNPACK_SRC_ARCHIVE)
	$(APPLY_PATCHES)
	@touch $@

$(obj_dir)/Makefile: $(SRC_DIR)/configure
	cd $(obj_dir) && \
	  $(BSG_DEVSETUP) \
	    ../$(SRC_DIR)/configure \
	      --prefix=/usr \
	      --build=$(ARCH_BUILD) \
	      --host=$(TARGET_ARCH) \
	      --target=$(TARGET_ARCH) \
	      --with-gnu-ld \
	      --disable-debug \
	      --enable-fbdev \
	      $(MULTI_SUPPORT) \
	      --enable-linux-input \
	      --enable-gif \
	      --enable-jpeg \
	      --disable-sdl \
	      --disable-png \
	      --disable-freetype \
	      --disable-libmpeg3 \
	      --disable-rgb332 \
	      --disable-video4linux \
	      --with-gfxdrivers=none

$(marker): $(obj_dir)/Makefile
	$(BSG_DEVSETUP) $(MAKE) -C $(obj_dir)
	$(BSG_DEVSETUP) $(MAKE) -C $(obj_dir) DESTDIR=$(CURDIR)/$(obj_dir)/dist install
	@touch $@

$(LIB_TARGETS): $(marker)

$(BIN_TARGETS): $(marker)

$(TARGET_INSTALL_DIR)/include/directfb: $(marker)
	@echo "=== Disting directfb include files ==="
	@rm -rf $@
	@cp -a $(obj_dir)/dist/usr/include/directfb $@
	@touch $@

$(TARGET_INSTALL_DIR)/include/directfb-internal: $(marker)
	@echo "=== Disting directfb-internal and config.h include files ==="
	@rm -rf $@
	@cp -a $(obj_dir)/dist/usr/include/directfb-internal $@
	@cp $(obj_dir)/config.h $@
	@touch $@

$(TARGETCONFIG_TARGETS): $(marker)

$(DOC_TARGETS): $(SRC_DIR)/configure
