# Copyright (c) 2009 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. { 'variables': { 'chromium_code': 1, }, 'includes': [ '../build/common.gypi', ], 'target_defaults': { 'include_dirs': [ '..', '../..', '../../<(gtestdir)', ], 'defines': [ 'O3D_PLUGIN_DESCRIPTION="<!(python version_info.py --description)"', 'O3D_PLUGIN_MIME_TYPE="<!(python version_info.py --mimetype)"', 'O3D_PLUGIN_NAME="<!(python version_info.py --name)"', 'O3D_PLUGIN_VERSION="<!(python version_info.py --version)"', ], }, 'targets': [ { 'target_name': 'npo3dautoplugin', 'type': '<(o3d_main_lib_type)', 'dependencies': [ '../../<(jpegdir)/libjpeg.gyp:libjpeg', '../../<(pngdir)/libpng.gyp:libpng', '../../<(zlibdir)/zlib.gyp:zlib', '../../base/base.gyp:base', '../../skia/skia.gyp:skia', '../../v8/tools/gyp/v8.gyp:v8', '../core/core.gyp:o3dCore', '../core/core.gyp:o3dCorePlatform', '../import/archive.gyp:o3dArchive', '../utils/utils.gyp:o3dUtils', '../../native_client/src/shared/imc/imc.gyp:google_nacl_imc', 'idl/idl.gyp:o3dPluginIdl', ], 'sources': [ 'cross/async_loading.cc', 'cross/async_loading.h', 'cross/blacklist.cc', 'cross/config.h', 'cross/config_common.cc', 'cross/download_stream.h', 'cross/main.cc', 'cross/main.h', 'cross/main_thread_task_poster.cc', 'cross/main_thread_task_poster.h', 'cross/marshaling_utils.h', 'cross/np_v8_bridge.cc', 'cross/np_v8_bridge.h', 'cross/out_of_memory.cc', 'cross/out_of_memory.h', 'cross/plugin_logging.h', 'cross/plugin_main.h', 'cross/stream_manager.cc', 'cross/stream_manager.h', 'cross/texture_static_glue.cc', ], 'conditions' : [ ['OS != "linux"', { 'dependencies': [ '../statsreport/statsreport.gyp:o3dStatsReport', 'add_version', 'o3dPluginLogging', ], }, ], ['renderer == "gl"', { 'dependencies': [ '../build/libs.gyp:gl_libs', '../build/libs.gyp:cg_libs', ], }, ], ['OS == "mac"', { 'mac_bundle': 1, 'product_extension': 'plugin', 'product_name': 'O3D', 'dependencies': [ '../../breakpad/breakpad.gyp:breakpad', ], 'xcode_settings': { 'INFOPLIST_FILE': '<(SHARED_INTERMEDIATE_DIR)/plugin/Info.plist', }, 'mac_bundle_resources': [ 'mac/Resources/English.lproj', ], 'sources': [ 'mac/config_mac.mm', 'mac/main_mac.mm', 'mac/o3d_plugin.r', 'mac/plugin_logging-mac.mm', 'mac/plugin_mac.h', 'mac/plugin_mac.mm', 'mac/graphics_utils_mac.mm', ], 'mac_framework_dirs': [ '../../<(cgdir)', ], 'include_dirs': [ '../../breakpad/src/client/mac/Framework', ], 'defines': [ 'XP_MACOSX=1', ], 'link_settings': { 'libraries': [ '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework', '$(SDKROOT)/System/Library/Frameworks/Carbon.framework', '$(SDKROOT)/System/Library/Frameworks/AGL.framework', '$(SDKROOT)/System/Library/Frameworks/Foundation.framework', '$(SDKROOT)/System/Library/Frameworks/IOKit.framework', '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework', '$(SDKROOT)/System/Library/Frameworks/QuickTime.framework', 'libbreakpad.a', 'libbreakpad_utilities.a', '../../third_party/cg/files/mac/Cg.framework', '../../third_party/glew/files/lib/libMacStaticGLEW.a', ], }, 'postbuilds': [ { 'variables': { # Define install_name in a variable ending in _path # so that gyp understands it's a path and performs proper # relativization during dict merging. 'install_name_path': 'mac/plugin_fix_install_names.sh', }, 'postbuild_name': 'Fix Framework Paths', 'action': ['<(install_name_path)'], }, { 'variables': { # Define copy_frameworks in a variable ending in _path # so that gyp understands it's a path and performs proper # relativization during dict merging. 'copy_frameworks_path': 'mac/plugin_copy_frameworks.sh', }, 'postbuild_name': 'Copy Frameworks', 'action': ['<(copy_frameworks_path)'], }, { 'postbuild_name': 'Process Resource File', 'action': ['python', 'version_info.py', 'mac/o3d_plugin.r', '${BUILT_PRODUCTS_DIR}/O3D.r', ], }, { 'postbuild_name': 'Compile Resource File', 'action': ['/usr/bin/Rez', '-o', '${BUILT_PRODUCTS_DIR}/O3D.plugin/Contents/Resources/O3D.rsrc', '${BUILT_PRODUCTS_DIR}/O3D.r', ], }, ], }, ], ['OS == "linux"', { 'sources': [ 'linux/main_linux.cc', 'linux/config.cc', ], 'link_settings': { 'libraries': [ '-lGL', ], }, # On Linux, shared library targets aren't copied to the # product dir automatically. Filed GYP issue #74 to address this. # TODO(gspencer): Remove when issue #74 is resolved. 'copies': [ { 'destination': '<(PRODUCT_DIR)', 'files': [ '<(PRODUCT_DIR)/obj/o3d/plugin/<(LIBRARY_PREFIX)<(_target_name)<(SHARED_LIB_SUFFIX)', ], }, ], }, ], ['OS == "win"', { 'dependencies': [ '../breakpad/breakpad.gyp:o3dBreakpad', ], 'sources': [ 'win/config.cc', 'win/logger_main.cc', 'win/main_win.cc', 'win/o3dPlugin.def', 'win/o3dPlugin.rc', 'win/plugin_logging-win32.cc', 'win/resource.h', 'win/update_lock.cc', 'win/update_lock.h', ], 'link_settings': { 'libraries': [ '-lrpcrt4.lib', ], }, }, ], ['OS == "win" and renderer == "d3d9"', { 'link_settings': { 'libraries': [ '"$(DXSDK_DIR)/Lib/x86/d3dx9.lib"', '-ld3d9.lib', ], }, }, ], ['OS == "win" and (renderer == "d3d9" or cb_service == "d3d9")', { 'link_settings': { 'libraries': [ '"$(DXSDK_DIR)/Lib/x86/DxErr.lib"', ], }, }, ], ], }, ], 'conditions': [ ['o3d_in_chrome == "True"', { 'variables': { 'o3d_main_lib_type': 'static_library', }, 'target_defaults': { 'defines': [ 'O3D_INTERNAL_PLUGIN=1', ], }, }, { 'variables': { 'o3d_main_lib_type': 'loadable_module', }, }, ], ['OS != "linux"', { 'targets': [ { 'target_name': 'o3dPluginLogging', 'type': 'static_library', 'conditions': [ ['OS=="win"', { 'sources': [ 'win/plugin_metrics-win32.cc', 'win/plugin_logging-win32.cc', ], }, ], ['OS=="mac"', { 'sources': [ 'mac/plugin_metrics-mac.cc', 'mac/plugin_logging-mac.mm', ], }, ], ], }, { 'target_name': 'add_version', 'type': 'none', 'actions': [ { 'action_name': 'add_version', 'inputs': [ 'version_info.py', ], 'conditions': [ ['OS=="win"', { 'inputs': [ 'win/o3dPlugin.rc_template', ], 'outputs': [ 'win/o3dPlugin.rc' ], 'action': ['python', 'version_info.py', 'win/o3dPlugin.rc_template', 'win/o3dPlugin.rc'], }, ], ['OS=="mac"', { 'inputs': [ 'mac/Info.plist', ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/plugin/Info.plist', ], 'action': ['python', 'version_info.py', 'mac/Info.plist', '<(SHARED_INTERMEDIATE_DIR)/plugin/Info.plist', ], }, ], ], }, ], }, ], }, ], ['OS=="win"', { 'targets': [ { 'target_name': 'o3d_host', 'type': 'shared_library', 'include_dirs': [ '<(INTERMEDIATE_DIR)', ], 'sources': [ '<(INTERMEDIATE_DIR)/npapi_host_control_i.c', 'npapi_host_control/win/dispatch_proxy.cc', 'npapi_host_control/win/dispatch_proxy.h', 'npapi_host_control/win/host_control.cc', 'npapi_host_control/win/host_control.h', 'npapi_host_control/win/module.h', 'npapi_host_control/win/np_browser_proxy.cc', 'npapi_host_control/win/np_browser_proxy.h', 'npapi_host_control/win/np_object_proxy.cc', 'npapi_host_control/win/np_object_proxy.h', 'npapi_host_control/win/np_plugin_proxy.cc', 'npapi_host_control/win/np_plugin_proxy.h', 'npapi_host_control/win/npapi_host_control.cc', 'npapi_host_control/win/npapi_host_control.idl', 'npapi_host_control/win/npapi_host_control.rc', 'npapi_host_control/win/precompile.h', 'npapi_host_control/win/resource.h', 'npapi_host_control/win/stream_operation.cc', 'npapi_host_control/win/stream_operation.h', 'npapi_host_control/win/variant_utils.cc', 'npapi_host_control/win/variant_utils.h', ], 'link_settings': { 'libraries': [ '-lwininet.lib', ], }, 'defines': [ '_MIDL_USE_GUIDDEF_', 'DLL_NPAPI_HOST_CONTROL_EXPORT', ], 'msvs_settings': { 'VCLinkerTool': { 'ModuleDefinitionFile': 'npapi_host_control/win/npapi_host_control.def' }, 'VCCLCompilerTool': { 'ForcedIncludeFiles': 'plugin/npapi_host_control/win/precompile.h', 'CompileAs': '2', # Build all the files as C++, since # ATL requires that. }, }, 'msvs_configuration_attributes': { 'UseOfATL': '1', # 1 = static link to ATL, 2 = dynamic link }, }, { 'target_name': 'o3d_host_register', 'type': 'none', 'dependencies': [ 'o3d_host', ], 'actions': [ { 'action_name': 'register_o3d_host', 'inputs': [ '<(PRODUCT_DIR)/o3d_host.dll', ], 'outputs': [ 'file_that_never_exists_so_this_action_always_runs', ], 'action': [ 'regsvr32', '/s', '<(_inputs)', ], }, ], }, ], }, ], ], }