genode/libports/ports/x86emu.mk

63 lines
2.0 KiB
Makefile

# XXX We stay with 1.12.0 currently as later versions changed many places just cosmetically.
X86EMU_VERSION = 1.12.0
X86EMU = x86emu-$(X86EMU_VERSION)
X86EMU_XSERVER = xserver-xorg-server-$(X86EMU_VERSION)
X86EMU_TGZ = $(X86EMU_XSERVER).tar.gz
X86EMU_URL = http://cgit.freedesktop.org/xorg/xserver/snapshot/$(X86EMU_TGZ)
#
# Check for tools
#
$(call check_tool,sed)
#
# Interface to top-level prepare Makefile
#
PORTS += $(X86EMU)
X86EMU_INC_DIR = include/x86emu
X86EMU_INCLUDES = $(X86EMU_INC_DIR)/x86emu.h
X86EMU_INCLUDES += $(X86EMU_INC_DIR)/x86emu/regs.h
X86EMU_INCLUDES += $(X86EMU_INC_DIR)/x86emu/types.h
# dummy links
X86EMU_INCLUDES += $(addprefix $(X86EMU_INC_DIR)/, stdint.h stdio.h stdlib.h string.h)
prepare-x86emu: $(CONTRIB_DIR)/$(X86EMU) $(X86EMU_INC_DIR)/x86emu $(X86EMU_INCLUDES)
$(CONTRIB_DIR)/$(X86EMU): clean-x86emu
#
# Port-specific local rules
#
$(DOWNLOAD_DIR)/$(X86EMU_TGZ):
$(VERBOSE)wget -c -P $(DOWNLOAD_DIR) $(X86EMU_URL) && touch $@
# use sed to replace in a structure a member 'private' - reserved keyword in C++
$(CONTRIB_DIR)/$(X86EMU): $(DOWNLOAD_DIR)/$(X86EMU_TGZ)
$(VERBOSE)mkdir $@ \
&& tar xzf $< -C $@ --strip-components=4 $(X86EMU_XSERVER)/hw/xfree86/x86emu \
&& cp $(CONTRIB_DIR)/$(X86EMU)/x86emu/regs.h $(CONTRIB_DIR)/$(X86EMU)/x86emu/regs.h.orig \
&& sed 's/private;/private_ptr;/g' <$(CONTRIB_DIR)/$(X86EMU)/x86emu/regs.h.orig >$(CONTRIB_DIR)/$(X86EMU)/x86emu/regs.h \
&& touch $@
$(X86EMU_INC_DIR)/x86emu:
$(VERBOSE) mkdir $@
# create dummy links to std*.h
$(X86EMU_INC_DIR)/std%.h:
$(VERBOSE) ln -sf sys/types.h $@
# create dummy link to string.h
$(X86EMU_INC_DIR)/string.h:
$(VERBOSE) ln -sf sys/types.h $@
# create links to x86emu header files
$(X86EMU_INC_DIR)/%.h:
$(VERBOSE)ln -sf ../..$(subst $(subst x86emu/,,$(subst $(X86EMU_INC_DIR)/,,$@)),,$(subst x86emu/,/..,$(subst $(X86EMU_INC_DIR)/,,$@)))/$(CONTRIB_DIR)/$(X86EMU)/$(subst $(X86EMU_INC_DIR)/,,$@) $@
clean-x86emu:
$(VERBOSE)rm -f $(X86EMU_INCLUDES)
$(VERBOSE)rm -rf $(CONTRIB_DIR)/$(X86EMU)