summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--o3d/DEPS_gyp10
-rw-r--r--o3d/build/all.gyp4
-rw-r--r--o3d/build/common.gypi19
-rw-r--r--o3d/build/libs.gyp135
-rw-r--r--o3d/build/nacl.gyp52
-rw-r--r--o3d/compiler/technique/technique.gyp13
-rw-r--r--o3d/converter/converter.gyp29
-rw-r--r--o3d/core/core.gyp43
-rw-r--r--o3d/core/cross/canvas_paint.cc2
-rw-r--r--o3d/import/archive.gyp15
-rw-r--r--o3d/import/import.gyp19
-rw-r--r--o3d/plugin/cross/main.cc2
-rw-r--r--o3d/plugin/idl/codegen.py1
-rw-r--r--o3d/plugin/idl/idl.gyp118
-rw-r--r--o3d/plugin/idl/idl_filenames.py24
-rw-r--r--o3d/plugin/linux/main_linux.cc2
-rw-r--r--o3d/plugin/plugin.gyp76
-rw-r--r--o3d/samples/samples.gyp71
-rw-r--r--o3d/samples/samples_gen.py352
-rw-r--r--o3d/tests/selenium/main.py23
-rw-r--r--o3d/tests/selenium/selenium.gyp190
-rw-r--r--o3d/tests/tests.gyp43
22 files changed, 878 insertions, 365 deletions
diff --git a/o3d/DEPS_gyp b/o3d/DEPS_gyp
index c660f01..de4e395 100644
--- a/o3d/DEPS_gyp
+++ b/o3d/DEPS_gyp
@@ -4,12 +4,13 @@ vars = {
"chromium_rev": "22547",
"o3d_code_rev": "145",
"skia_rev": "279",
- "gyp_rev": "601",
+ "gyp_rev": "626",
"gtest_rev": "267",
"gflags_rev": "30",
"breakpad_rev": "346",
"v8_rev": "2624",
"icu38_rev": "20192",
+ "nacl_rev": "569",
}
deps = {
@@ -90,10 +91,8 @@ deps = {
"base":
Var("chromium_trunk") + "/src/base@" + Var("chromium_rev"),
- # NACL has to be in this weird directory because it looks for
- # googleclient two levels above it.
"native_client":
- "http://nativeclient.googlecode.com/svn/trunk/src/native_client@492",
+ "http://nativeclient.googlecode.com/svn/trunk/src/native_client@" + Var("nacl_rev"),
"breakpad/src":
"http://google-breakpad.googlecode.com/svn/trunk/src@" + Var("breakpad_rev"),
@@ -115,7 +114,6 @@ deps = {
"testing/gmock":
Var("chromium_trunk") + "/src/testing/gmock@" + Var("chromium_rev"),
-# "http://googlemock.googlecode.com/svn/tags/release-1.0.0",
# Stuff needed for GYP to run
"build":
@@ -146,7 +144,7 @@ deps_os = {
hooks = [
{
# A change to a .gyp, .gypi, or to GYP itself shound run the generator.
- "pattern": "\\.gypi?$|[/\\\\]src[/\\\\]tools[/\\\\]gyp[/\\\\]",
+ "pattern": "\\.gypi?$|[/\\\\]src[/\\\\]tools[/\\\\]gyp[/\\\\]|MANIFEST$",
"action": ["python", "tools/gyp/gyp", "o3d/build/all.gyp", "--depth", "."],
},
]
diff --git a/o3d/build/all.gyp b/o3d/build/all.gyp
index 32f3998..1996704 100644
--- a/o3d/build/all.gyp
+++ b/o3d/build/all.gyp
@@ -26,12 +26,10 @@
'../import/import.gyp:o3dImport',
'../installer/installer.gyp:installer',
'../plugin/idl/idl.gyp:o3dPluginIdl',
- '../plugin/plugin.gyp:add_version',
'../plugin/plugin.gyp:npo3dautoplugin',
- '../plugin/plugin.gyp:o3dPluginLogging',
'../samples/samples.gyp:*',
+ '../tests/selenium/selenium.gyp:*',
'../serializer/serializer.gyp:o3dSerializer',
- '../statsreport/statsreport.gyp:o3dStatsReport',
'../tests/tests.gyp:unit_tests',
'../utils/utils.gyp:o3dUtils',
],
diff --git a/o3d/build/common.gypi b/o3d/build/common.gypi
index a011c8e..5dc0538 100644
--- a/o3d/build/common.gypi
+++ b/o3d/build/common.gypi
@@ -16,10 +16,14 @@
'nacldir': 'third_party/native_client/googleclient',
'nixysadir': 'third_party/nixysa',
'npapidir': 'third_party/npapi',
+ 'pdiffdir': 'third_party/pdiff/files',
'pngdir': 'third_party/libpng',
+ 'screenshotsdir': 'o3d_assets/tests/screenshots',
+ 'seleniumdir': 'third_party/selenium_rc/files',
'skiadir': 'third_party/skia/include',
'zlibdir': 'third_party/zlib',
'o3d_in_chrome%': 0,
+ 'selenium_screenshots%': 0,
},
'target_defaults': {
'defines': [
@@ -44,7 +48,6 @@
'cgdir': 'third_party/cg/files/win',
'swiftshaderdir': 'o3d-internal/third_party/swiftshader/files',
'LIBRARY_SUFFIX': '.lib',
- 'CONFIGURATION': '$(ConfigurationName)',
},
'target_defaults': {
'defines': [
@@ -65,7 +68,6 @@
'renderer': 'gl',
'cgdir': 'third_party/cg/files/mac',
'LIBRARY_SUFFIX': '.a',
- 'CONFIGURATION': '$(CONFIGURATION)',
},
'target_defaults': {
'defines': [
@@ -103,12 +105,21 @@
'renderer': 'gl',
'cgdir': 'third_party/cg/files/linux',
'LIBRARY_SUFFIX': '.a',
- 'CONFIGURATION': '$(CONFIGURATION)',
},
'target_defaults': {
'defines': [
- 'RENDERER_GL',
+ 'LINUX',
+ 'MOZ_X11',
+ 'NACL_LINUX=1',
'OS_LINUX',
+ 'RENDERER_GL',
+ 'SK_BUILD_FOR_UNIX',
+ 'UNICODE',
+ 'XP_UNIX',
+ ],
+ 'cflags': [
+ '-fvisibility=hidden',
+ '-Wstrict-aliasing',
],
},
},
diff --git a/o3d/build/libs.gyp b/o3d/build/libs.gyp
index 88dba6b..0244c48 100644
--- a/o3d/build/libs.gyp
+++ b/o3d/build/libs.gyp
@@ -13,15 +13,99 @@
],
'targets': [
{
+ 'target_name': 'gl_libs',
+ 'type': 'none',
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '../../<(glewdir)/include',
+ ],
+ },
+ 'conditions': [
+ [ 'OS=="linux"',
+ {
+ 'direct_dependent_settings': {
+ 'defines': [
+ 'GL_GLEXT_PROTOTYPES',
+ ],
+ 'scons_variable_settings': {
+ 'LIBPATH': [
+ '../../<(glewdir)/lib',
+ ],
+ },
+ 'libraries': [
+ "-lGL",
+ "-lGLEW",
+ ],
+ },
+ },
+ ],
+ [ 'OS=="mac"',
+ {
+ 'direct_dependent_settings': {
+ 'libraries': [
+ '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework',
+ ],
+ },
+ },
+ ],
+ ],
+ },
+ {
'target_name': 'cg_libs',
'type': 'none',
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '../../<(cgdir)/include',
+ ],
+ },
+ 'conditions': [
+ [ 'OS=="linux"',
+ {
+ 'direct_dependent_settings': {
+ 'scons_variable_settings': {
+ 'LIBPATH': [
+ '<(PRODUCT_DIR)',
+ ],
+ },
+ 'libraries': [
+ "-lCg",
+ "-lCgGL",
+ ],
+ },
+ },
+ ],
+ [ 'OS=="win"',
+ {
+ 'direct_dependent_settings': {
+ 'libraries': [
+ "../../<(cgdir)/lib/cg.lib",
+ "../../<(cgdir)/lib/cgD3D9.lib",
+ "../../<(cgdir)/lib/cgGL.lib",
+ "../../<(cgdir)/lib/glut32.lib",
+ ],
+ },
+ },
+ ],
+ [ 'OS=="mac"',
+ {
+ 'direct_dependent_settings': {
+ 'libraries': [
+ "<(PRODUCT_DIR)/Cg.framework",
+ ],
+ },
+ }
+ ],
+ ],
'copies': [
{
'destination': '<(PRODUCT_DIR)',
'conditions' : [
- [ 'OS=="mac"',
+ [ 'OS=="linux"',
{
'files': [
+ "../../<(cgdir)/lib/libCg.so",
+ "../../<(cgdir)/lib/libCgGL.so",
+ "../../<(cgdir)/bin/cgc",
],
},
],
@@ -49,25 +133,38 @@
},
],
'conditions': [
- ['OS=="win"', {
- 'targets': [
- {
- 'target_name': 'dx_dll',
- 'type': 'none',
- 'copies': [
- {
- 'destination': '<(PRODUCT_DIR)',
- 'conditions' : [
- ['"<(dx_redist_exists)" == "True"', {
- 'files': ['<(dx_redist_path)/d3dx9_36.dll'],
- },{
- 'files': ['$(windir)/system32/d3dx9_36.dll'],
- }],
+ ['OS=="win"',
+ {
+ 'targets': [
+ {
+ 'target_name': 'dx_dll',
+ 'type': 'none',
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '$(DXSDK_DIR)/Include',
+ ],
+ 'libraries': [
+ '"$(DXSDK_DIR)/Lib/x86/d3dx9.lib"',
],
},
- ],
- },
- ],
- }],
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)',
+ 'conditions' : [
+ ['"<(dx_redist_exists)" == "True"',
+ {
+ 'files': ['<(dx_redist_path)/d3dx9_36.dll'],
+ },
+ {
+ 'files': ['$(windir)/system32/d3dx9_36.dll'],
+ }
+ ],
+ ],
+ },
+ ],
+ },
+ ],
+ }
+ ],
],
}
diff --git a/o3d/build/nacl.gyp b/o3d/build/nacl.gyp
index 19b4de5..e69de29 100644
--- a/o3d/build/nacl.gyp
+++ b/o3d/build/nacl.gyp
@@ -1,52 +0,0 @@
-# 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': [
- 'common.gypi',
- ],
- 'targets': [
- {
- 'target_name': 'build_nacl',
- 'type': 'none',
- 'variables': {
- 'nacl_output_dir': '<(SHARED_INTERMEDIATE_DIR)/nacl_libs',
- },
- 'actions': [
- {
- 'action_name': 'build_nacl',
- 'inputs' : [
- 'build_nacl.py',
- ],
- 'outputs': [
- '<(nacl_output_dir)/google_nacl_imc<(LIBRARY_SUFFIX)',
- '<(nacl_output_dir)/google_nacl_imc_c<(LIBRARY_SUFFIX)',
- 'dummy_file_that_never_gets_built_so_scons_always_runs',
- ],
- 'action': [
- 'python',
- '<@(_inputs)',
- '--output="<(nacl_output_dir)"',
- '--configuration="<(CONFIGURATION)"',
- '--platform=<(OS)',
- 'google_nacl_imc',
- 'google_nacl_imc_c',
- ],
- },
- ],
- 'direct_dependent_settings': {
- 'include_dirs': [
- '../../<(nacldir)',
- ],
- 'libraries': [
- '<(nacl_output_dir)/google_nacl_imc<(LIBRARY_SUFFIX)',
- '<(nacl_output_dir)/google_nacl_imc_c<(LIBRARY_SUFFIX)',
- ],
- },
- },
- ],
-}
diff --git a/o3d/compiler/technique/technique.gyp b/o3d/compiler/technique/technique.gyp
index a750038..3c409073 100644
--- a/o3d/compiler/technique/technique.gyp
+++ b/o3d/compiler/technique/technique.gyp
@@ -66,8 +66,19 @@
},
},
'xcode_settings': {
- 'OTHER_CFLAGS': ['-x', 'c++'],
+ 'OTHER_CFLAGS': [
+ '-x', 'c++',
+ ],
},
+ 'conditions': [
+ ['OS == "linux"',
+ {
+ 'cflags': [
+ '-x', 'c++',
+ ],
+ }
+ ],
+ ],
},
{
'target_name': 'o3dTechniqueTest',
diff --git a/o3d/converter/converter.gyp b/o3d/converter/converter.gyp
index 0e15f54..fea5c1a 100644
--- a/o3d/converter/converter.gyp
+++ b/o3d/converter/converter.gyp
@@ -35,7 +35,6 @@
'../import/import.gyp:o3dImport',
'../serializer/serializer.gyp:o3dSerializer',
'../utils/utils.gyp:o3dUtils',
- '../build/libs.gyp:cg_libs',
],
'sources': [
'cross/buffer_stub.cc',
@@ -56,6 +55,13 @@
'cross/texture_stub.h',
],
'conditions' : [
+ ['renderer == "gl"',
+ {
+ 'dependencies': [
+ '../build/libs.gyp:cg_libs',
+ ],
+ },
+ ],
['OS == "mac"',
{
'postbuilds': [
@@ -83,19 +89,28 @@
},
},
],
+ ['OS == "linux"',
+ {
+ 'link_settings': {
+ 'libraries': [
+ '-lGL',
+ ],
+ },
+ },
+ ],
['OS == "win"',
{
'dependencies': [
'../build/libs.gyp:dx_dll',
+ '../build/libs.gyp:cg_libs',
],
+ 'link_settings': {
+ 'libraries': [
+ '-lrpcrt4.lib',
+ ],
+ },
'msvs_settings': {
'VCLinkerTool': {
- 'AdditionalDependencies': [
- 'rpcrt4.lib',
- '"$(DXSDK_DIR)/Lib/x86/d3dx9.lib"',
- '../../<(cgdir)/lib/cg.lib',
- '../../<(cgdir)/lib/cgGL.lib',
- ],
# Set /SUBSYSTEM:CONSOLE for converter.exe, since
# it is a console app.
'SubSystem': '1',
diff --git a/o3d/core/core.gyp b/o3d/core/core.gyp
index 63952282..b38c8e7 100644
--- a/o3d/core/core.gyp
+++ b/o3d/core/core.gyp
@@ -24,13 +24,21 @@
],
}
],
+ ['OS == "linux"',
+ {
+ 'cflags': [
+ '-include',
+ 'core/cross/precompile.h',
+ ],
+ },
+ ],
['renderer == "gl"',
{
'include_dirs': [
'../../<(glewdir)/include',
'../../<(cgdir)/include',
],
- }
+ },
],
],
},
@@ -240,7 +248,6 @@
'direct_dependent_settings': {
'include_dirs': [
'..',
- 'cross',
],
},
'conditions': [
@@ -255,7 +262,15 @@
'win',
],
},
- }
+ },
+ ],
+ ['renderer == "gl"',
+ {
+ 'dependencies': [
+ '../build/libs.gyp:cg_libs',
+ '../build/libs.gyp:gl_libs',
+ ],
+ },
],
['OS == "linux"',
{
@@ -268,7 +283,7 @@
'linux',
],
},
- }
+ },
],
['OS == "mac"',
{
@@ -281,10 +296,10 @@
'mac',
],
},
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'cross/precompile.h',
- },
- },
+ 'xcode_settings': {
+ 'GCC_PREFIX_HEADER': 'cross/precompile.h',
+ },
+ },
],
],
},
@@ -299,10 +314,10 @@
'conditions': [
['OS == "mac"',
{
- 'xcode_settings': {
- 'GCC_PREFIX_HEADER': 'cross/precompile.h',
- },
- },
+ 'xcode_settings': {
+ 'GCC_PREFIX_HEADER': 'cross/precompile.h',
+ },
+ },
],
['renderer == "gl"',
{
@@ -332,7 +347,7 @@
'cross/gl/utils_gl.cc',
'cross/gl/utils_gl.h',
],
- }
+ },
],
['renderer == "d3d9" and OS == "win"',
{
@@ -362,7 +377,7 @@
'win/d3d9/utils_d3d9.cc',
'win/d3d9/utils_d3d9.h',
],
- }
+ },
],
],
},
diff --git a/o3d/core/cross/canvas_paint.cc b/o3d/core/cross/canvas_paint.cc
index 446c5c1f..fc7e55e 100644
--- a/o3d/core/cross/canvas_paint.cc
+++ b/o3d/core/cross/canvas_paint.cc
@@ -157,6 +157,7 @@ StrokeDrawLooper::StrokeDrawLooper(SkFlattenableReadBuffer& buffer) {
O3D_DEFN_CLASS(CanvasPaint, ParamObject);
+#ifndef OS_LINUX
static SkPaint::Align ToSKAlign(CanvasPaint::TextAlign align) {
switch (align) {
case CanvasPaint::LEFT:
@@ -169,6 +170,7 @@ static SkPaint::Align ToSKAlign(CanvasPaint::TextAlign align) {
return SkPaint::kLeft_Align;
}
}
+#endif // OS_LINUX
CanvasPaint::CanvasPaint(ServiceLocator* service_locator)
: ParamObject(service_locator),
diff --git a/o3d/import/archive.gyp b/o3d/import/archive.gyp
index 7465206..6de6cee 100644
--- a/o3d/import/archive.gyp
+++ b/o3d/import/archive.gyp
@@ -16,6 +16,21 @@
'../../<(cgdir)/include',
'../../<(gtestdir)',
],
+ 'conditions': [
+ ['OS=="linux"',
+ {
+ 'include_dirs': [
+ '/usr/include/cairo',
+ '/usr/include/glib-2.0',
+ '/usr/include/gtk-2.0',
+ '/usr/include/pango-1.0',
+ '/usr/lib/glib-2.0/include',
+ '/usr/lib/gtk-2.0/include',
+ '/usr/include/atk-1.0',
+ ],
+ },
+ ],
+ ],
},
'targets': [
{
diff --git a/o3d/import/import.gyp b/o3d/import/import.gyp
index 01d3dc3..3dc94b3 100644
--- a/o3d/import/import.gyp
+++ b/o3d/import/import.gyp
@@ -37,8 +37,6 @@
'cross/collada.h',
'cross/collada_zip_archive.cc',
'cross/collada_zip_archive.h',
- 'cross/destination_buffer.cc',
- 'cross/destination_buffer.h',
'cross/file_output_stream_processor.cc',
'cross/file_output_stream_processor.h',
'cross/precompile.h',
@@ -51,6 +49,13 @@
],
'conditions' : [
+ ['renderer == "gl"',
+ {
+ 'dependencies': [
+ '../build/libs.gyp:cg_libs',
+ ],
+ },
+ ],
['renderer == "d3d9" and OS == "win"',
{
'include_dirs': [
@@ -87,6 +92,13 @@
],
'include_dirs': [
'../../third_party/glew/files/include',
+ '/usr/include/cairo',
+ '/usr/include/glib-2.0',
+ '/usr/include/gtk-2.0',
+ '/usr/include/pango-1.0',
+ '/usr/lib/glib-2.0/include',
+ '/usr/lib/gtk-2.0/include',
+ '/usr/include/atk-1.0',
],
},
],
@@ -97,8 +109,11 @@
'type': 'static_library',
'sources': [
'cross/camera_info.cc',
+ 'cross/camera_info.h',
'cross/destination_buffer.cc',
+ 'cross/destination_buffer.h',
'cross/json_object.cc',
+ 'cross/json_object.h',
],
},
{
diff --git a/o3d/plugin/cross/main.cc b/o3d/plugin/cross/main.cc
index 1d33da5..d71e103 100644
--- a/o3d/plugin/cross/main.cc
+++ b/o3d/plugin/cross/main.cc
@@ -169,7 +169,7 @@ NPError EXPORT_SYMBOL OSCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) {
return NPERR_NO_ERROR;
}
-char * EXPORT_SYMBOL NP_GetMIMEDescription(void) {
+char* NP_GetMIMEDescription(void) {
return const_cast<char*>(O3D_PLUGIN_MIME_TYPE "::O3D MIME");
}
diff --git a/o3d/plugin/idl/codegen.py b/o3d/plugin/idl/codegen.py
index 22cbec2..76bd40a 100644
--- a/o3d/plugin/idl/codegen.py
+++ b/o3d/plugin/idl/codegen.py
@@ -19,7 +19,6 @@
import subprocess
import sys
import os
-import os.path
script_dir = os.path.join(os.path.dirname(sys.argv[0]))
third_party = os.path.normpath(
diff --git a/o3d/plugin/idl/idl.gyp b/o3d/plugin/idl/idl.gyp
index 4194115..b381e85 100644
--- a/o3d/plugin/idl/idl.gyp
+++ b/o3d/plugin/idl/idl.gyp
@@ -8,7 +8,7 @@
],
'variables': {
'chromium_code': 0,
- 'idl_out_dir': '<(SHARED_INTERMEDIATE_DIR)/idl_glue',
+ 'idl_out_path': '<(SHARED_INTERMEDIATE_DIR)/idl_glue',
'static_glue_dir': '../../../third_party/nixysa/static_glue/npapi',
'idl_files': [
'archive_request.idl',
@@ -71,85 +71,101 @@
'viewport.idl',
],
},
+ 'target_defaults': {
+ 'include_dirs': [
+ '../..',
+ '../../..',
+ '../../../<(npapidir)/include',
+ '../../../<(zlibdir)',
+ '../../../skia/config',
+ '../../plugin/cross',
+ '<(static_glue_dir)',
+ '<(idl_out_path)',
+ ],
+ 'conditions': [
+ ['OS=="win"',
+ {
+ 'defines': [
+ 'OS_WINDOWS',
+ ],
+ },
+ ],
+ ['OS=="mac"',
+ {
+ 'include_dirs': [
+ '../mac',
+ ],
+ 'defines': [
+ 'XP_MACOSX',
+ ],
+ },
+ ],
+ ['OS=="linux"',
+ {
+ 'include_dirs': [
+ '/usr/include/cairo',
+ '/usr/include/glib-2.0',
+ '/usr/include/gtk-2.0',
+ '/usr/include/pango-1.0',
+ '/usr/lib/glib-2.0/include',
+ '/usr/lib/gtk-2.0/include',
+ '/usr/include/atk-1.0',
+ ],
+ },
+ ],
+ ],
+ },
'targets': [
{
'target_name': 'o3dPluginIdl',
'type': 'static_library',
- 'rules': [
+ 'dependencies': [
+ '../../../<(zlibdir)/zlib.gyp:zlib',
+ '../../../base/base.gyp:base',
+ '../../../skia/skia.gyp:skia',
+ ],
+ 'direct_dependent_settings': {
+ 'include_dirs': [
+ '../../../<(npapidir)/include',
+ '<(idl_out_path)',
+ '<(static_glue_dir)',
+ ],
+ },
+ 'actions': [
{
- 'rule_name': 'generate_idl',
- 'extension': 'idl',
+ 'action_name': 'generate_idl',
'process_outputs_as_sources': 1,
'inputs': [
'../../../<(nixysadir)/codegen.py',
'codegen.py',
+ '<@(idl_files)',
],
'outputs': [
- '<(idl_out_dir)/<(RULE_INPUT_ROOT)_glue.cc',
- '<(idl_out_dir)/<(RULE_INPUT_ROOT)_glue.h',
+ '<(idl_out_path)/hash',
+ '<(idl_out_path)/globals_glue.cc',
+ '<(idl_out_path)/globals_glue.h',
+ '<!@(python idl_filenames.py \'<(idl_out_path)\' <@(idl_files))',
],
'action': [
'python',
'codegen.py',
+ '--force', # If the build system wants to rebuild, we rebuild.
'--binding-module=o3d:../../plugin/o3d_binding.py',
'--generate=npapi',
- '--output-dir=<(idl_out_dir)',
+ '--output-dir=<(idl_out_path)',
'<@(idl_files)',
],
- 'message': 'Generating IDL glue for <(RULE_INPUT_PATH)',
+ 'message': 'Generating IDL glue code.',
},
],
- 'include_dirs': [
- '../..',
- '../../..',
- '../../../<(npapidir)/include',
- '../../plugin/cross',
- '<(static_glue_dir)',
- '<(idl_out_dir)',
- ],
- 'dependencies': [
- '../../../<(zlibdir)/zlib.gyp:zlib',
- '../../../base/base.gyp:base',
- '../../../skia/skia.gyp:skia',
- ],
'sources': [
'../cross/archive_request_static_glue.cc',
'../cross/archive_request_static_glue.h',
'../cross/o3d_glue.cc',
'../cross/o3d_glue.h',
- '<(idl_out_dir)/globals_glue.cc',
- '<(idl_out_dir)/globals_glue.h',
'<(static_glue_dir)/common.cc',
'<(static_glue_dir)/npn_api.cc',
'<(static_glue_dir)/static_object.cc',
- '<@(idl_files)',
- ],
- 'hard_dependency': 1,
- 'direct_dependent_settings': {
- 'include_dirs': [
- '../../../<(npapidir)/include',
- '<(idl_out_dir)',
- '<(static_glue_dir)',
- ],
- },
- 'conditions': [
- ['OS=="win"',
- {
- 'defines': [
- 'OS_WINDOWS',
- ],
- },
- ],
- ['OS=="mac"',
- {
- 'include_dirs': [
- '../mac',
- ],
- 'defines': [
- 'XP_MACOSX',
- ],
- },
- ],
],
},
],
diff --git a/o3d/plugin/idl/idl_filenames.py b/o3d/plugin/idl/idl_filenames.py
new file mode 100644
index 0000000..ceb1575
--- /dev/null
+++ b/o3d/plugin/idl/idl_filenames.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+
+# This script takes a list of inputs and generates a list of outputs
+# that Nixysa will generate. It passes through any files not ending
+# in .idl, and converts idl files into corresponding .cc and .h files.
+
+# The first argument is the destintation directory for the output
+# files, and the rest are relative paths to the source files. The
+# output is posix paths, because that's what GYP expects.
+
+import sys
+import posixpath
+
+output_dir = sys.argv[1]
+
+for file in sys.argv[2:]:
+ (base, suffix) = posixpath.splitext(file)
+ if suffix == ".idl":
+ print posixpath.normpath(posixpath.join(output_dir, "%s_glue.h" % base))
+ print posixpath.normpath(posixpath.join(output_dir, "%s_glue.cc" % base))
+ else:
+ print posixpath.normpath(posixpath.join(output_dir, file))
+
+sys.exit(0)
diff --git a/o3d/plugin/linux/main_linux.cc b/o3d/plugin/linux/main_linux.cc
index 5fe7439..fbb6495 100644
--- a/o3d/plugin/linux/main_linux.cc
+++ b/o3d/plugin/linux/main_linux.cc
@@ -94,7 +94,6 @@ void LinuxExposeHandler(Widget w,
Boolean *cont) {
PluginObject *obj = static_cast<PluginObject *>(user_data);
if (event->type != Expose) return;
- XExposeEvent *expose_event = &event->xexpose;
DrawPlugin(obj);
}
@@ -468,6 +467,7 @@ static gboolean GtkHandleMouseButton(GtkWidget *widget,
event.set_type(Event::TYPE_DBLCLICK);
obj->client()->AddEventToQueue(event);
}
+ return TRUE;
}
static gboolean GtkHandleKey(GtkWidget *widget,
diff --git a/o3d/plugin/plugin.gyp b/o3d/plugin/plugin.gyp
index 9331ce3..53c24a2 100644
--- a/o3d/plugin/plugin.gyp
+++ b/o3d/plugin/plugin.gyp
@@ -73,6 +73,13 @@
],
},
],
+ ['renderer == "gl"',
+ {
+ 'dependencies': [
+ '../build/libs.gyp:cg_libs',
+ ],
+ },
+ ],
['OS == "mac"',
{
'mac_bundle': 1,
@@ -82,7 +89,7 @@
'../../breakpad/breakpad.gyp:breakpad',
],
'xcode_settings': {
- 'INFOPLIST_FILE': '<(SHARED_INTERMEDIATE_DIR)/plugin/Info.plist',
+ 'INFOPLIST_FILE': '<(SHARED_INTERMEDIATE_DIR)/plugin/Info.plist',
},
'mac_bundle_resources': [
'mac/Resources/English.lproj',
@@ -144,18 +151,42 @@
{
'postbuild_name': 'Process Resource File',
'action': ['python',
- 'version_info.py',
- 'mac/o3d_plugin.r',
- '${BUILT_PRODUCTS_DIR}/O3D.r',
- ],
+ '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',
- ],
+ '-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)',
+ ],
},
],
},
@@ -330,11 +361,11 @@
'msvs_settings': {
'VCLinkerTool': {
'ModuleDefinitionFile':
- 'npapi_host_control/win/npapi_host_control.def'
+ 'npapi_host_control/win/npapi_host_control.def'
},
'VCCLCompilerTool': {
'ForcedIncludeFiles':
- 'plugin/npapi_host_control/win/precompile.h',
+ 'plugin/npapi_host_control/win/precompile.h',
'CompileAs': '2', # Build all the files as C++, since
# ATL requires that.
},
@@ -343,6 +374,29 @@
'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)',
+ ],
+ },
+ ],
+ },
],
},
],
diff --git a/o3d/samples/samples.gyp b/o3d/samples/samples.gyp
index 27d96f1..7bc7999 100644
--- a/o3d/samples/samples.gyp
+++ b/o3d/samples/samples.gyp
@@ -11,35 +11,66 @@
],
'targets': [
{
- 'target_name': 'split_samples',
+ 'target_name': 'install_samples',
'type': 'none',
- 'rules': [
+ 'copies': [
{
- 'rule_name': 'split_sample',
- 'extension': 'html',
- 'inputs': [
- 'split_samples.py',
- ],
- 'outputs': [
- '<(PRODUCT_DIR)/samples/<(RULE_INPUT_NAME)',
- '<(PRODUCT_DIR)/samples/<(RULE_INPUT_ROOT).js',
- ],
- 'action': ['python', '<@(_inputs)',
- '--products', '<(PRODUCT_DIR)/samples',
- '--samples', '.',
- '<(RULE_INPUT_PATH)',
- ],
+ 'destination': '<(PRODUCT_DIR)/samples',
+ 'files': [
+ '2d.html',
+ 'animated-scene.html',
+ 'animation.html',
+ 'bitmap-draw-image.html',
+ 'billboards.html',
+ 'canvas-texturedraw.html',
+ 'canvas.html',
+ 'convolution.html',
+ 'culling.html',
+ 'customcamera.html',
+ 'displayfps.html',
+ 'error-texture.html',
+ 'generate-texture.html',
+ 'hellocube-colors.html',
+ 'hellocube-textures.html',
+ 'hellocube.html',
+ 'helloworld.html',
+ 'hud-2d-overlay.html',
+ 'instance-override.html',
+ 'instancing.html',
+ 'juggler.html',
+ 'julia.html',
+ 'multiple-clients.html',
+ 'multiple-views.html',
+ 'old-school-shadows.html',
+ 'particles.html',
+ 'phongshading.html',
+ 'picking.html',
+ 'primitives.html',
+ 'procedural-texture.html',
+ 'render-mode.html',
+ 'render-targets.html',
+ 'rotatemodel.html',
+ 'scatter-chart.html',
+ 'shader-test.html',
+ 'simple.html',
+ 'simpletexture.html',
+ 'skinning.html',
+ 'sobel.html',
+ 'stencil_example.html',
+ 'texturesamplers.html',
+ 'tutorial-primitive.html',
+ 'vertex-shader.html',
+ 'vertex-shader-animation.html',
+ 'zsorting.html'
+ ]
},
],
- 'sources': [
- '<!@(python split_samples.py --samples . --find_candidates)',
- ],
},
{
'target_name': 'samples',
'type': 'none',
'dependencies': [
- 'split_samples',
+ 'install_samples',
'<!(python samples_gen.py):build_samples',
],
},
diff --git a/o3d/samples/samples_gen.py b/o3d/samples/samples_gen.py
index 00fe45c..6add64b 100644
--- a/o3d/samples/samples_gen.py
+++ b/o3d/samples/samples_gen.py
@@ -1,168 +1,184 @@
-#!/usr/bin/env python
-# 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.
-
-import os.path
-import sys
-
-output_filename = 'samples_gen.gyp'
-try:
- output_file = open(output_filename, "w+")
-except IOError:
- sys.stderr.write('Unable to write to generated gyp file %s\n',
- output_filename)
-
-x_up = '1,0,0'
-y_up = '0,1,0'
-z_up = '0,0,1'
-
-names = {
- x_up : 'x_up',
- y_up : 'y_up',
- z_up : 'z_up',
-}
-
-assets = [
- {'path': 'GoogleIO-2009/convert_assets/background.zip', 'up': y_up},
- {'path': 'GoogleIO-2009/convert_assets/character.zip', 'up': y_up},
- {'path': 'beachdemo/convert_assets/beach-low-poly.dae', 'up': z_up},
- {'path': 'beachdemo/convert_assets/beachdemo.zip', 'up': z_up},
- {'path': 'convert_assets/dome1.zip', 'up': y_up},
- {'path': 'convert_assets/dome2.zip', 'up': y_up},
- {'path': 'convert_assets/dome3.zip', 'up': y_up},
- {'path': 'convert_assets/dome4.zip', 'up': y_up},
- {'path': 'convert_assets/kitty_151_idle_stand05_cff1.zip', 'up': y_up},
- {'path': 'convert_assets/part1.zip', 'up': y_up},
- {'path': 'convert_assets/part2.zip', 'up': y_up},
- {'path': 'convert_assets/part3.zip', 'up': y_up},
- {'path': 'convert_assets/seven_shapes.zip', 'up': y_up},
- {'path': 'convert_assets/stencil_frame.zip', 'up': y_up},
- {'path': 'convert_assets/teapot.zip', 'up': y_up},
- {'path': 'convert_assets/yard.zip', 'up': y_up},
- {'path': 'home-configurators/convert_cbassets/Agra_Rug.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Asimi_Rug.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Camden_Chair.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Elements_Bookshelf.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Ferrara_Rug.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/House_Roofless.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Lounge_Chair.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Lounge_Chaise.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Lounge_Sofa.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Lounge_Storage_Ottoman.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Madison_Dining_Table.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Miles_Side_Chair.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Pullman_Bar_Stool.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Puzzle_TV_Stand.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Stow_Leather_Ottoman.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Tivoli_Dining_Table.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Tivoli_Miles_Dining_Set.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Troy_Chair.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Troy_Ottoman.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Troy_Sofa.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Troy_Storage_Ottoman.kmz', 'up': z_up},
- {'path': 'home-configurators/convert_cbassets/Troy_Twin_Sleeper.kmz', 'up': z_up},
- {'path': 'io/convert_levels/all_actors.kmz', 'up': y_up},
- {'path': 'io/convert_levels/map1.kmz', 'up': y_up},
- {'path': 'simpleviewer/convert_assets/cube.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/bamboo.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/coconuts.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/driftwood.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/island.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/lazy_bridge.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/palm_leaves.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/palm_trees.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/rocks.9.zip', 'up': y_up},
- {'path': 'waterdemo/convert_assets/rocks.zip', 'up': y_up},
-]
-
-output_file.write("""# 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',
- ],
- 'targets': [
- {
- 'target_name': 'build_samples',
- 'type': 'none',
- 'dependencies': [
- '../converter/converter.gyp:o3dConverter',
- ],
- 'actions': [\n""")
-for asset in assets:
- filename = os.path.splitext(os.path.basename(asset['path']))[0]
- filename = filename.replace('.','_')
- filename = filename.replace('-','_')
- filename = filename.lower()
- name = "convert_" + filename
- output = asset['path'].replace('convert_', '')
- output = os.path.splitext(output)[0] + ".o3dtgz"
- output_dir = os.path.dirname(output)
- output_file.write(" {\n")
- output_file.write(" 'action_name': '%s',\n" % name)
- output_file.write(" 'inputs': [\n")
- output_file.write(" '../o3d_assets/samples/%s',\n" % asset['path'])
- output_file.write(" ],\n")
- output_file.write(" 'outputs': [\n")
- output_file.write(" '../samples/%s',\n" % output)
- output_file.write(" ],\n")
- output_file.write(" 'action': [\n")
- output_file.write(" '<(PRODUCT_DIR)/o3dConverter',\n")
- output_file.write(" '--no-condition',\n")
- output_file.write(" '--up-axis=%s',\n" % asset['up'])
- output_file.write(" '<(_inputs)',\n")
- output_file.write(" '<(_outputs)',\n")
- output_file.write(" ],\n")
- output_file.write(" },\n")
-
-output_file.write(" ],\n")
-
-# Coalesce copies by directory so we don't have tons of copies rules
-# to parse.
-copies = {}
-for asset in assets:
- output = asset['path'].replace('convert_', '')
- output = os.path.splitext(output)[0] + ".o3dtgz"
- output_dir = os.path.dirname(output)
- if output_dir in copies:
- # Make sure we don't add any twice.
- if not output in copies[output_dir]:
- copies[output_dir] += [output]
- else:
- copies[output_dir] = [output]
-
-# Add in all the MANIFEST files to be copied,
-# Skipping the ones in the assets above (if any).
-manifest = open("MANIFEST", "r")
-for item in manifest.read().splitlines():
- item_dir = os.path.dirname(item)
- if item_dir in copies:
- if not item in copies[item_dir]:
- copies[item_dir] += [item]
- else:
- copies[item_dir] = [item]
-
-output_file.write(" 'copies': [\n")
-for (dir, paths) in copies.items():
- output_file.write(" {\n")
- output_file.write(" 'destination': " \
- "'<(PRODUCT_DIR)/samples/%s',\n" % dir)
- output_file.write(" 'files': [\n")
- for path in paths:
- output_file.write(" '../samples/%s',\n" % path)
- output_file.write(" ],\n")
- output_file.write(" },\n")
-
-output_file.write(" ],\n")
-output_file.write(" },\n")
-output_file.write(" ],\n")
-output_file.write("}\n")
-
-print output_filename
-sys.exit(0)
+#!/usr/bin/env python
+# 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.
+
+import posixpath
+import sys
+
+output_filename = 'samples_gen.gyp'
+try:
+ output_file = open(output_filename, "w+")
+except IOError:
+ sys.stderr.write('Unable to write to generated gyp file %s\n',
+ output_filename)
+
+x_up = '1,0,0'
+y_up = '0,1,0'
+z_up = '0,0,1'
+
+names = {
+ x_up : 'x_up',
+ y_up : 'y_up',
+ z_up : 'z_up',
+}
+
+assets = [
+ {'path': 'GoogleIO-2009/convert_assets/background.zip', 'up': y_up},
+ {'path': 'GoogleIO-2009/convert_assets/character.zip', 'up': y_up},
+ {'path': 'beachdemo/convert_assets/beach-low-poly.dae', 'up': z_up},
+ {'path': 'beachdemo/convert_assets/beachdemo.zip', 'up': z_up},
+ {'path': 'convert_assets/dome1.zip', 'up': y_up},
+ {'path': 'convert_assets/dome2.zip', 'up': y_up},
+ {'path': 'convert_assets/dome3.zip', 'up': y_up},
+ {'path': 'convert_assets/dome4.zip', 'up': y_up},
+ {'path': 'convert_assets/kitty_151_idle_stand05_cff1.zip', 'up': y_up},
+ {'path': 'convert_assets/part1.zip', 'up': y_up},
+ {'path': 'convert_assets/part2.zip', 'up': y_up},
+ {'path': 'convert_assets/part3.zip', 'up': y_up},
+ {'path': 'convert_assets/seven_shapes.zip', 'up': y_up},
+ {'path': 'convert_assets/stencil_frame.zip', 'up': y_up},
+ {'path': 'convert_assets/teapot.zip', 'up': y_up},
+ {'path': 'convert_assets/yard.zip', 'up': y_up},
+ {'path': 'home-configurators/convert_cbassets/Agra_Rug.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Asimi_Rug.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Camden_Chair.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Elements_Bookshelf.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Ferrara_Rug.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/House_Roofless.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Lounge_Chair.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Lounge_Chaise.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Lounge_Sofa.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Lounge_Storage_Ottoman.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Madison_Dining_Table.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Miles_Side_Chair.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Pullman_Bar_Stool.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Puzzle_TV_Stand.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Stow_Leather_Ottoman.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Tivoli_Dining_Table.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Tivoli_Miles_Dining_Set.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Troy_Chair.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Troy_Ottoman.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Troy_Sofa.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Troy_Storage_Ottoman.kmz', 'up': z_up},
+ {'path': 'home-configurators/convert_cbassets/Troy_Twin_Sleeper.kmz', 'up': z_up},
+ {'path': 'io/convert_levels/all_actors.kmz', 'up': y_up},
+ {'path': 'io/convert_levels/map1.kmz', 'up': y_up},
+ {'path': 'simpleviewer/convert_assets/cube.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/bamboo.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/coconuts.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/driftwood.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/island.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/lazy_bridge.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/palm_leaves.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/palm_trees.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/rocks.9.zip', 'up': y_up},
+ {'path': 'waterdemo/convert_assets/rocks.zip', 'up': y_up},
+]
+
+output_file.write("""# 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',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'build_samples',
+ 'type': 'none',
+ 'dependencies': [
+ '../converter/converter.gyp:o3dConverter',
+ ],
+ 'actions': [\n""")
+for asset in assets:
+ filename = posixpath.splitext(posixpath.basename(asset['path']))[0]
+ filename = filename.replace('.','_')
+ filename = filename.replace('-','_')
+ filename = filename.lower()
+ name = "convert_" + filename
+ output = asset['path'].replace('convert_', '')
+ output = posixpath.splitext(output)[0] + ".o3dtgz"
+ output_dir = posixpath.dirname(output)
+ output_file.write(" {\n")
+ output_file.write(" 'action_name': '%s',\n" % name)
+ output_file.write(" 'inputs': [\n")
+ output_file.write(" '../o3d_assets/samples/%s',\n" % asset['path'])
+ output_file.write(" ],\n")
+ output_file.write(" 'outputs': [\n")
+ if sys.platform[:5] == 'linux':
+ # TODO(gspencer): This is a HACK! We shouldn't need to put the
+ # absolute path here, but currently on Linux (scons), it is unable
+ # to copy generated items out of the source tree (because the
+ # repository mojo fails to find it and puts in the wrong path).
+ output_file.write(" '%s',\n" % posixpath.abspath(output))
+ else:
+ output_file.write(" '../samples/%s',\n" % output)
+ output_file.write(" ],\n")
+ output_file.write(" 'action': [\n")
+ if sys.platform[:5] == 'linux':
+ output_file.write(" 'LD_LIBRARY_PATH=<(PRODUCT_DIR):<(PRODUCT_DIR)/lib',\n")
+ output_file.write(" '<(PRODUCT_DIR)/o3dConverter',\n")
+ output_file.write(" '--no-condition',\n")
+ output_file.write(" '--up-axis=%s',\n" % asset['up'])
+ output_file.write(" '<(_inputs)',\n")
+ output_file.write(" '<(_outputs)',\n")
+ output_file.write(" ],\n")
+ output_file.write(" },\n")
+
+output_file.write(" ],\n")
+
+# Coalesce copies by directory so we don't have tons of copies rules
+# to parse.
+copies = {}
+for asset in assets:
+ output = asset['path'].replace('convert_', '')
+ output = posixpath.splitext(output)[0] + ".o3dtgz"
+ output_dir = posixpath.dirname(output)
+ if output_dir in copies:
+ # Make sure we don't add any twice.
+ if not output in copies[output_dir]:
+ copies[output_dir] += [output]
+ else:
+ copies[output_dir] = [output]
+
+# Add in all the MANIFEST files to be copied,
+# Skipping the ones in the assets above (if any).
+manifest = open("MANIFEST", "r")
+for item in manifest.read().splitlines():
+ item_dir = posixpath.dirname(item)
+ if item_dir in copies:
+ if not item in copies[item_dir]:
+ copies[item_dir] += [item]
+ else:
+ copies[item_dir] = [item]
+
+output_file.write(" 'copies': [\n")
+for (dir, paths) in copies.items():
+ output_file.write(" {\n")
+ output_file.write(" 'destination': " \
+ "'<(PRODUCT_DIR)/samples/%s',\n" % dir)
+ output_file.write(" 'files': [\n")
+ for path in paths:
+ if sys.platform[:5] == 'linux':
+ # TODO(gspencer): This is a HACK! We shouldn't need to put the
+ # absolute path here, but currently on Linux (scons), it is unable
+ # to copy generated items out of the source tree (because the
+ # repository mojo fails to find it and puts in the wrong path).
+ output_file.write(" '%s',\n" % posixpath.abspath(path))
+ else:
+ output_file.write(" '../samples/%s',\n" % path)
+ output_file.write(" ],\n")
+ output_file.write(" },\n")
+
+output_file.write(" ],\n")
+output_file.write(" },\n")
+output_file.write(" ],\n")
+output_file.write("}\n")
+
+print output_filename
+sys.exit(0)
diff --git a/o3d/tests/selenium/main.py b/o3d/tests/selenium/main.py
index b421659..bf4e9a8 100644
--- a/o3d/tests/selenium/main.py
+++ b/o3d/tests/selenium/main.py
@@ -992,6 +992,21 @@ def main(unused_argv):
# Return error code 1.
return 1
+def GetChromePath():
+ value = None
+ if sys.platform == "win32" or sys.platform == "cygwin":
+ import _winreg
+ try:
+ key = _winreg.OpenKey(_winreg.HKEY_CLASSES_ROOT,
+ "Applications\\chrome.exe\\shell\\open\\command")
+ (value, type) = _winreg.QueryValueEx(key, None)
+ _winreg.CloseKey(key)
+ except WindowsError:
+ raise Exception("Unable to determine location for Chrome -- "
+ "it is installed?")
+ value = os.path.dirname(value)
+ return value
+
if __name__ == "__main__":
remaining_argv = FLAGS(sys.argv)
@@ -999,6 +1014,14 @@ if __name__ == "__main__":
os.environ["MOZ_CRASHREPORTER_DISABLE"] = "1"
os.environ["MOZ_PLUGIN_PATH"] = os.path.normpath(FLAGS.product_dir)
+ # Setup the path for chrome.
+ chrome_path = GetChromePath()
+ if chrome_path:
+ if os.environ.get("PATH"):
+ os.environ["PATH"] = os.pathsep.join([os.environ["PATH"], chrome_path])
+ else:
+ os.environ["PATH"] = chrome_path
+
# Setup the LD_LIBRARY_PATH on Linux.
if sys.platform[:5] == "linux":
if os.environ.get("LD_LIBRARY_PATH"):
diff --git a/o3d/tests/selenium/selenium.gyp b/o3d/tests/selenium/selenium.gyp
new file mode 100644
index 0000000..b9aa09f
--- /dev/null
+++ b/o3d/tests/selenium/selenium.gyp
@@ -0,0 +1,190 @@
+# 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,
+ 'selenium_args': [
+ '--referencedir=<(screenshotsdir)',
+ '--product_dir=<(PRODUCT_DIR)',
+ '--screencompare=<(PRODUCT_DIR)/perceptualdiff<(EXECUTABLE_SUFFIX)',
+ ],
+ },
+ 'includes': [
+ '../../build/common.gypi',
+ ],
+ 'targets': [
+ {
+ 'target_name': 'install_selenium_tests',
+ 'type': 'none',
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)/tests/selenium/tests',
+ 'files': [
+ 'tests/base-test.html',
+ 'tests/culling-zsort-test.html',
+ 'tests/drawshapes.html',
+ 'tests/effect-import-test.html',
+ 'tests/event-test.html',
+ 'tests/features-test.html',
+ 'tests/init-status-test.html',
+ 'tests/math-test.html',
+ 'tests/no-rendergraph.html',
+ 'tests/non-cachable-params.html',
+ 'tests/offscreen-test.html',
+ 'tests/ownership-test.html',
+ 'tests/param-array-test.html',
+ 'tests/pixel-perfection.html',
+ 'tests/quaternion-test.html',
+ 'tests/render-test.html',
+ 'tests/serialization-test.html',
+ 'tests/test-test.html',
+ 'tests/texture-set-test.html',
+ 'tests/type-test.html',
+ 'tests/util-test.html',
+ 'tests/v8-test.html',
+ 'tests/version-check-test.html',
+ 'tests/window-overlap-test.html',
+ 'tests/window-overlap-top.html',
+ ],
+ },
+ {
+ 'destination': '<(PRODUCT_DIR)/tests/selenium/tests/assets',
+ 'files': [
+ 'tests/assets/archive.o3dtgz',
+ ],
+ },
+ ]
+ },
+ {
+ 'target_name': 'selenium_firefox',
+ 'type': 'none',
+ 'dependencies': [
+ 'install_selenium_tests',
+ '../tests.gyp:unit_tests',
+ '../../plugin/plugin.gyp:npo3dautoplugin',
+ ],
+ 'scons_propagate_variables': [
+ 'HOME',
+ 'DISPLAY',
+ 'XAUTHORITY',
+ ],
+ 'run_as': {
+ 'working_directory': '<(DEPTH)',
+ 'action': [
+ 'python<(EXECUTABLE_SUFFIX)',
+ 'o3d/tests/selenium/main.py',
+ '<@(selenium_args)',
+ '--browser=*firefox',
+ '--screenshotsdir=<(PRODUCT_DIR)/tests/selenium/screenshots_firefox',
+ ],
+ },
+ },
+ {
+ 'target_name': 'selenium_chrome',
+ 'type': 'none',
+ 'dependencies': [
+ 'install_selenium_tests',
+ '../tests.gyp:unit_tests',
+ '../../plugin/plugin.gyp:npo3dautoplugin',
+ ],
+ 'scons_propagate_variables': [
+ 'HOME',
+ 'DISPLAY',
+ 'XAUTHORITY',
+ ],
+ 'run_as': {
+ 'action': [
+ 'python<(EXECUTABLE_SUFFIX)',
+ 'main.py',
+ '<@(selenium_args)',
+ '--browser=*googlechrome',
+ '--screenshotsdir=<(PRODUCT_DIR)/tests/selenium/screenshots_chrome',
+ ],
+ },
+ 'conditions': [
+ ['OS=="linux"',
+ {
+ 'variables': {
+ 'selenium_args': [
+ '--browserpath=/usr/bin/google-chrome',
+ ],
+ },
+ },
+ ],
+ ['OS=="mac"',
+ {
+ 'variables': {
+ 'selenium_args': [
+ '--browserpath="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"',
+ ],
+ },
+ },
+ ],
+ ],
+ },
+ ],
+ 'conditions': [
+ ['<(selenium_screenshots) == 1',
+ {
+ 'variables': {
+ 'selenium_args': [
+ '--screenshots',
+ ],
+ },
+ },
+ ],
+ ['OS=="mac"',
+ {
+ 'targets': [
+ {
+ 'target_name': 'selenium_safari',
+ 'type': 'none',
+ 'dependencies': [
+ 'install_selenium_tests',
+ '../tests.gyp:unit_tests',
+ '../../plugin/plugin.gyp:npo3dautoplugin',
+ ],
+ 'run_as': {
+ 'action': [
+ 'python<(EXECUTABLE_SUFFIX)',
+ 'main.py',
+ '<@(selenium_args)',
+ '--browser=*safari',
+ '--screenshotsdir=<(PRODUCT_DIR)/tests/selenium/screenshots_safari',
+ ],
+ },
+ },
+ ],
+ },
+ ],
+ ['OS=="win"',
+ {
+ 'targets': [
+ {
+ 'target_name': 'selenium_ie',
+ 'type': 'none',
+ 'dependencies': [
+ 'install_selenium_tests',
+ '../tests.gyp:unit_tests',
+ '../../plugin/plugin.gyp:npo3dautoplugin',
+ '../../plugin/plugin.gyp:o3d_host',
+ '../../plugin/plugin.gyp:o3d_host_register',
+ ],
+ 'run_as': {
+ 'action': [
+ 'python<(EXECUTABLE_SUFFIX)',
+ 'main.py',
+ '<@(selenium_args)',
+ '--servertimeout=80',
+ '--browser=*iexplore',
+ '--screenshotsdir=<(PRODUCT_DIR)/tests/selenium/screenshots_ie',
+ ],
+ },
+ },
+ ],
+ },
+ ],
+ ],
+}
diff --git a/o3d/tests/tests.gyp b/o3d/tests/tests.gyp
index 802f636..a8c6766 100644
--- a/o3d/tests/tests.gyp
+++ b/o3d/tests/tests.gyp
@@ -38,7 +38,6 @@
'../import/archive.gyp:o3dArchiveTest',
'../import/import.gyp:o3dImportTest',
'../serializer/serializer.gyp:o3dSerializerTest',
- '../statsreport/statsreport.gyp:o3dStatsReportTest',
'../utils/utils.gyp:o3dUtils',
'../utils/utils.gyp:o3dUtilsTest',
],
@@ -83,11 +82,30 @@
},
],
'conditions' : [
+ ['renderer == "gl"',
+ {
+ 'dependencies': [
+ '../build/libs.gyp:cg_libs',
+ '../build/libs.gyp:gl_libs',
+ ],
+ },
+ ],
['OS == "mac"',
{
+ 'dependencies': [
+ '../statsreport/statsreport.gyp:o3dStatsReportTest',
+ ],
'sources': [
'common/mac/testing_common.mm',
],
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)',
+ 'files': [
+ '../../<(pdiffdir)/bin/mac/perceptualdiff',
+ ],
+ },
+ ],
'include_dirs': [
'../../third_party/glew/files/include',
],
@@ -105,10 +123,22 @@
],
['OS == "win"',
{
+ 'dependencies': [
+ '../statsreport/statsreport.gyp:o3dStatsReportTest',
+ ],
'sources': [
'common/win/testing_common.cc',
'common/win/testing_common.h',
],
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)',
+ 'files': [
+ '../../<(pdiffdir)/bin/win/perceptualdiff.exe',
+ '../../<(pdiffdir)/bin/win/FreeImage.dll',
+ ],
+ },
+ ],
'msvs_settings': {
'VCLinkerTool': {
'AdditionalDependencies': [
@@ -138,7 +168,7 @@
'common/win/dxcapture.cc',
],
'include_dirs': [
- '$(DXSDK_DIR)/Include',
+ '"$(DXSDK_DIR)/Include"',
],
'msvs_settings': {
'VCLinkerTool': {
@@ -156,8 +186,13 @@
'sources': [
'common/linux/testing_common.cc',
],
- 'include_dirs': [
- '../../third_party/glew/files/include',
+ 'copies': [
+ {
+ 'destination': '<(PRODUCT_DIR)',
+ 'files': [
+ '../../<(pdiffdir)/bin/linux/perceptualdiff',
+ ],
+ },
],
},
],