Makefile.kmk revision 2609df5222cfcceb51ec536b2e3173b7227a232a
# $Id$
## @file
# Sub-Makefile for the Shared OpenGL Host Service.
#
#
# Copyright (C) 2008-2010 Oracle Corporation
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#
SUB_DEPTH = ../../../..
include $(KBUILD_PATH)/subheader.kmk
#
# Target lists.
#
ifdef VBOX_WITH_MAIN
DLLS += VBoxSharedCrOpenGL VBoxOGLrenderspu
LIBRARIES += VBoxOGLcrserverlib VBoxOGLcrunpacker
BLDDIRS += \
$(VBOX_PATH_CROGL_GENFILES)/
endif
ifeq ($(KBUILD_TARGET),darwin)
#
# We have to symlink the system headers of OpenGl cause they have some
# different directory hierarchy on Mac OS X (no /GL sub directory).
#
# See Config.kmk for the global variables.
#
INSTALLS += DarwinOpenGLHdrs
DarwinOpenGLHdrs_INST = $(VBOX_DARWIN_OPENGL_INST)
DarwinOpenGLHdrs_SYMLINKS = \
$(foreach hdr, $(VBOX_DARWIN_OPENGL_HEADERS),\
$(hdr)=>$(VBOX_PATH_MACOSX_SDK)/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers/$(hdr))
endif # darwin
#
# VBoxSharedCrOpenGL
#
VBoxSharedCrOpenGL_TEMPLATE = VBOXCROGLR3HOSTDLL
ifdef VBOX_WITH_XPCOM
VBoxSharedCrOpenGL_DEFS = VBOX_WITH_XPCOM
VBoxSharedCrOpenGL_CXXFLAGS = -Wno-non-virtual-dtor
endif
VBoxSharedCrOpenGL_INTERMEDIATES = \
$(TEMPLATE_VBOXMAINEXE_INTERMEDIATES)
VBoxSharedCrOpenGL_INCS.win = \
$(PATH_TOOL_$(VBOX_VCC_TOOL)_ATLMFC_INC) \
$(VBOX_PATH_SDK)/bindings/mscom/include
ifdef VBOX_WITH_XPCOM
VBoxSharedCrOpenGL_INCS += \
$(VBOX_XPCOM_INCS)
endif
VBoxSharedCrOpenGL_SOURCES = \
crserver/crservice.cpp
VBoxSharedCrOpenGL_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxSharedCrOpenGL.dylib
VBoxSharedCrOpenGL_LIBS = \
$(PATH_STAGE_LIB)/VBoxOGLcrserverlib$(VBOX_SUFF_LIB) \
$(PATH_STAGE_LIB)/VBoxOGLhostcrstate$(VBOX_SUFF_LIB) \
$(PATH_STAGE_LIB)/VBoxOGLcrunpacker$(VBOX_SUFF_LIB) \
$(PATH_STAGE_LIB)/VBoxOGLhostcrpacker$(VBOX_SUFF_LIB) \
$(PATH_STAGE_LIB)/VBoxOGLhostspuload$(VBOX_SUFF_LIB) \
$(VBOX_LIB_OGL_HOSTCRUTIL) \
$(PATH_STAGE_LIB)/VBoxCOM$(VBOX_SUFF_LIB) \
$(LIB_RUNTIME) \
$(LIB_VMM)
VBoxSharedCrOpenGL_LIBS.darwin = \
$(LIB_REM)
ifeq ($(KBUILD_TARGET),win)
VBoxSharedCrOpenGL_LIBS += \
$(PATH_OBJ)/VBoxOGLrenderspu/VBoxOGLrenderspu$(VBOX_SUFF_LIB) \
$(PATH_TOOL_$(VBOX_VCC_TOOL)_ATLMFC_LIB)/atls$(VBOX_SUFF_LIB)
else
VBoxSharedCrOpenGL_LIBS += \
$(PATH_STAGE_BIN)/VBoxOGLrenderspu$(VBOX_SUFF_DLL)
endif
ifdef VBOX_WITH_XPCOM
VBoxSharedCrOpenGL_LIBS += \
$(LIB_XPCOM)
endif
ifdef VBOX_WITH_CRHGSMI
VBoxSharedCrOpenGL_DEFS += VBOX_WITH_CRHGSMI
endif
#
# VBoxOGLcrserverlib
#
VBoxOGLcrserverlib_TEMPLATE = VBOXCROGLR3HOSTLIB
VBoxOGLcrserverlib_INCS = \
. \
crserverlib
VBoxOGLcrserverlib_INTERMEDIATES = \
$(VBOX_PATH_CROGL_GENFILES)/spu_dispatch_table.h \
$(VBOX_PATH_CROGL_GENFILES)/server_dispatch.h \
$(VBOX_PATH_CROGL_GENFILES)/state/cr_currentpointers.h \
$(VBOX_PATH_CROGL_GENFILES)/state/cr_statefuncs.h
VBoxOGLcrserverlib_SOURCES := \
crserverlib/server_main.c \
crserverlib/server_boundsinfo.c \
crserverlib/server_bufferobject.c \
crserverlib/server_clear.c \
crserverlib/server_clip.c \
crserverlib/server_config.c \
crserverlib/server_context.c \
crserverlib/server_gentextures.c \
crserverlib/server_getmap.c \
crserverlib/server_getstring.c \
crserverlib/server_getpointer.c \
crserverlib/server_getpixelmap.c \
crserverlib/server_getteximage.c \
crserverlib/server_lists.c \
crserverlib/server_misc.c \
crserverlib/server_occlude.c \
crserverlib/server_papi.c \
crserverlib/server_projmatrix.c \
crserverlib/server_readpixels.c \
crserverlib/server_stream.c \
crserverlib/server_viewport.c \
crserverlib/server_window.c \
crserverlib/server_winpos.c \
crserverlib/server_writeback.c \
crserverlib/server_getshaders.c \
crserverlib/server_framebuffer.c \
crserverlib/server_glsl.c \
crserverlib/server_muralfbo.c \
crserverlib/server_texture.c \
$(VBOX_PATH_CROGL_GENFILES)/server_dispatch.c \
$(VBOX_PATH_CROGL_GENFILES)/server_retval.c \
$(VBOX_PATH_CROGL_GENFILES)/server_get.c \
$(VBOX_PATH_CROGL_GENFILES)/server_simpleget.c
VBoxOGLcrserverlib_CLEAN = \
$(VBOX_PATH_CROGL_GENFILES)/server_dispatch.c \
$(VBOX_PATH_CROGL_GENFILES)/server_retval.c \
$(VBOX_PATH_CROGL_GENFILES)/server_get.c \
$(VBOX_PATH_CROGL_GENFILES)/server_simpleget.c \
$(VBOX_PATH_CROGL_GENFILES)/server_dispatch.h
ifdef VBOXCR_LOGFPS
VBoxOGLcrserverlib_DEFS += VBOXCR_LOGFPS
endif
ifdef VBOX_WITH_CRHGSMI
VBoxOGLcrserverlib_DEFS += ifdef VBOX_WITH_CRHGSMI
endif
#
# Generate files for VBoxOGLcrserverlib
#
$(VBOX_PATH_CROGL_GENFILES)/server_dispatch.h: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_dispatch_header.py server_special) $(VBOX_CROGL_API_FILES) $(PATH_ROOT)/src/VBox/GuestHost/OpenGL/state_tracker/state_special | $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
$(VBOX_PATH_CROGL_GENFILES)/server_dispatch.c: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_dispatch.py server_special) $(VBOX_CROGL_API_FILES) $(PATH_ROOT)/src/VBox/GuestHost/OpenGL/state_tracker/state_special | $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
$(VBOX_PATH_CROGL_GENFILES)/server_retval.c: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_retval.py server_special) $(VBOX_CROGL_API_FILES) | $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
$(VBOX_PATH_CROGL_GENFILES)/server_get.c: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_get.py server_special get_components.py) $(VBOX_CROGL_API_FILES) | $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
$(VBOX_PATH_CROGL_GENFILES)/server_simpleget.c: $(addprefix $(PATH_SUB_CURRENT)/crserverlib/, server_simpleget.py get_sizes.py) $(VBOX_CROGL_API_FILES) | $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
#
# VBoxOGLcrunpacker
#
VBoxOGLcrunpacker_TEMPLATE = VBOXCROGLR3HOSTLIB
VBoxOGLcrunpacker_INCS = \
unpacker
VBoxOGLcrunpacker_INTERMEDIATES = \
$(VBOX_PATH_CROGL_GENFILES)/spu_dispatch_table.h \
$(VBOX_PATH_CROGL_GENFILES)/cr_opcodes.h \
$(VBOX_PATH_CROGL_GENFILES)/unpack_extend.h \
$(VBOX_PATH_CROGL_GENFILES)/state/cr_currentpointers.h \
$(VBOX_PATH_CROGL_GENFILES)/state/cr_statefuncs.h
VBoxOGLcrunpacker_SOURCES = \
unpacker/unpack_arrays.c \
unpacker/unpack_bounds.c \
unpacker/unpack_bufferobject.c \
unpacker/unpack_calllists.c \
unpacker/unpack_clipplane.c \
unpacker/unpack_context.c \
unpacker/unpack_drawpixels.c \
unpacker/unpack_fence.c \
unpacker/unpack_fog.c \
unpacker/unpack_lights.c \
unpacker/unpack_map.c \
unpacker/unpack_materials.c \
unpacker/unpack_matrices.c \
unpacker/unpack_misc.c \
unpacker/unpack_pixelmap.c \
unpacker/unpack_point.c \
unpacker/unpack_program.c \
unpacker/unpack_readpixels.c \
unpacker/unpack_regcombiner.c \
unpacker/unpack_stipple.c \
unpacker/unpack_texture.c \
unpacker/unpack_writeback.c \
unpacker/unpack_visibleregion.c \
unpacker/unpack_shaders.c \
unpacker/unpack_framebuffer.c \
$(VBOX_PATH_CROGL_GENFILES)/unpack.c
VBoxOGLcrunpacker_CLEAN = \
$(VBOX_PATH_CROGL_GENFILES)/unpack.c \
$(VBOX_PATH_CROGL_GENFILES)/unpack_extend.h
#
# Generate files for VBoxOGLcrunpacker.
#
$(VBOX_PATH_CROGL_GENFILES)/unpack.c: \
$(addprefix $(PATH_SUB_CURRENT)/unpacker/, unpack.py unpacker_special) \
$(VBOX_PATH_CROGL_GENFILES)/unpack_extend.h \
$(VBOX_CROGL_API_FILES) \
| $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
$(VBOX_PATH_CROGL_GENFILES)/unpack_extend.h: \
$(addprefix $(PATH_SUB_CURRENT)/unpacker/, unpack_extend.py unpacker_special) \
$(VBOX_CROGL_API_FILES) \
| $$(dir $$@)
$(call MSG_GENERATE,python,$@,$<)
$(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) $(<D)
#
# VBoxOGLrenderspu
#
VBoxOGLrenderspu_TEMPLATE = VBOXCROGLR3HOSTDLL
VBoxOGLrenderspu_INTERMEDIATES = \
$(VBOX_PATH_CROGL_GENFILES)/state/cr_currentpointers.h \
$(VBOX_PATH_CROGL_GENFILES)/state/cr_statefuncs.h
VBoxOGLrenderspu_SOURCES = \
render/renderspu.c \
render/renderspu_config.c \
render/renderspu_init.c
VBoxOGLrenderspu_SOURCES.win = render/renderspu_wgl.c render/render.def
VBoxOGLrenderspu_SOURCES.linux = render/renderspu_glx.c
VBoxOGLrenderspu_SOURCES.solaris = render/renderspu_glx.c
VBoxOGLrenderspu_SOURCES.freebsd = render/renderspu_glx.c
ifdef VBOX_WITH_COCOA_QT
VBoxOGLrenderspu_OBJCFLAGS.darwin = -Wno-shadow
VBoxOGLrenderspu_SOURCES.darwin = \
render/renderspu_cocoa.c \
render/renderspu_cocoa_helper.m
else
VBoxOGLrenderspu_SOURCES.darwin = render/renderspu_agl.c
endif
VBoxOGLrenderspu_LDFLAGS.darwin += -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxOGLrenderspu.dylib
VBoxOGLrenderspu_LIBS = \
$(PATH_STAGE_LIB)/VBoxOGLhostspuload$(VBOX_SUFF_LIB) \
$(VBOX_LIB_OGL_HOSTCRUTIL) \
$(LIB_RUNTIME)
if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris) # the X11 gang
VBoxOGLrenderspu_LIBS += \
Xmu \
X11 \
Xext
VBoxOGLrenderspu_LIBPATH = \
$(VBOX_LIBPATH_X11)
endif
include $(KBUILD_PATH)/subfooter.kmk