| OLD | NEW |
| (Empty) |
| 1 # Copyright 2009, Google Inc. | |
| 2 # All rights reserved. | |
| 3 # | |
| 4 # Redistribution and use in source and binary forms, with or without | |
| 5 # modification, are permitted provided that the following conditions are | |
| 6 # met: | |
| 7 # | |
| 8 # * Redistributions of source code must retain the above copyright | |
| 9 # notice, this list of conditions and the following disclaimer. | |
| 10 # * Redistributions in binary form must reproduce the above | |
| 11 # copyright notice, this list of conditions and the following disclaimer | |
| 12 # in the documentation and/or other materials provided with the | |
| 13 # distribution. | |
| 14 # * Neither the name of Google Inc. nor the names of its | |
| 15 # contributors may be used to endorse or promote products derived from | |
| 16 # this software without specific prior written permission. | |
| 17 # | |
| 18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| 19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| 20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| 21 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| 22 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| 23 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| 24 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| 25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| 26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| 27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| 28 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| 29 | |
| 30 | |
| 31 import os.path | |
| 32 import sys | |
| 33 Import('env') | |
| 34 env.SConscript('$SCONSTRUCT_DIR/plugin/idl_list.scons') | |
| 35 Import('O3D_IDL_SOURCES') | |
| 36 | |
| 37 env.Tool('replace_strings') | |
| 38 env.Append(O3D_PLUGIN_DESCRIPTION= | |
| 39 '$O3D_PLUGIN_NAME version:$O3D_PLUGIN_VERSION', | |
| 40 O3D_PLUGIN_MIME_TYPE='application/vnd.o3d.auto') | |
| 41 | |
| 42 plugin_replace_strings = [ | |
| 43 ('@@@PluginName@@@', env.subst('$O3D_PLUGIN_NAME')), | |
| 44 ('@@@ProductVersionCommas@@@', | |
| 45 env.subst('$O3D_PLUGIN_VERSION_COMMAS')), | |
| 46 ('@@@ProductVersion@@@', env.subst('$O3D_PLUGIN_VERSION')), | |
| 47 ('@@@PluginDescription@@@', env.subst('$O3D_PLUGIN_DESCRIPTION')), | |
| 48 ('@@@PluginMimeType@@@', env.subst('$O3D_PLUGIN_MIME_TYPE')), | |
| 49 ] | |
| 50 | |
| 51 # TODO: collapse these if possible. | |
| 52 env.Append(GLUE_DIR = env.Dir('glue'), | |
| 53 NIXYSA_STATIC_GLUE = '$NIXYSA_DIR/static_glue/npapi') | |
| 54 | |
| 55 if env.Bit('windows'): | |
| 56 testing_inputs = [ | |
| 57 'win/plugin_metrics-win32.cc', | |
| 58 'win/plugin_logging-win32.cc', | |
| 59 ] | |
| 60 elif env.Bit('mac'): | |
| 61 testing_inputs = [ | |
| 62 'mac/plugin_metrics-mac.cc', | |
| 63 'mac/plugin_logging-mac.mm', | |
| 64 ] | |
| 65 | |
| 66 # Add Skia include paths | |
| 67 env.Append(CPPPATH=['$SKIA_DIR/include/core', | |
| 68 '$SKIA_DIR/include/effects']) | |
| 69 | |
| 70 # Build a library for testing. | |
| 71 # Currently windows and mac. | |
| 72 if env.Bit('windows') or env.Bit('mac'): | |
| 73 logging_lib = env.ComponentLibrary('o3dPlugin_logging', testing_inputs) | |
| 74 | |
| 75 # vista SDK provides an incompatible version of npapi.h, so make sure we | |
| 76 # prepend our blessed version. | |
| 77 env.Prepend(CPPPATH = ['$NPAPI_DIR/include']) | |
| 78 env.Append( | |
| 79 CPPPATH = [ | |
| 80 'cross', | |
| 81 '$GLUE_DIR', | |
| 82 '$NIXYSA_STATIC_GLUE', | |
| 83 '$SCONSTRUCT_DIR/plugin/win', # for RES resource.h | |
| 84 '$WTL_71_DIR/include', | |
| 85 '$THIRD_PARTY', | |
| 86 ], | |
| 87 LIBPATH = [ | |
| 88 '$NACL_LIB_DIR', | |
| 89 ], | |
| 90 LIBS = [ | |
| 91 # 'o3dBreakpad', | |
| 92 'o3dArchive', | |
| 93 'o3dCore', | |
| 94 'o3dArchive', | |
| 95 'o3dCorePlatform', | |
| 96 'o3dUtils', | |
| 97 'google_nacl_imc', | |
| 98 'o3d_base', | |
| 99 'v8', | |
| 100 'skia', | |
| 101 ], | |
| 102 ) | |
| 103 | |
| 104 | |
| 105 if env.Bit('windows'): | |
| 106 env.Append( | |
| 107 LIBS = [ | |
| 108 'advapi32', | |
| 109 'o3dBreakpad', | |
| 110 'o3dStatsreport_Common', | |
| 111 'o3dStatsreport', | |
| 112 'shell32', | |
| 113 'shlwapi', | |
| 114 ], | |
| 115 CPPDEFINES = ['XP_WIN'] | |
| 116 ) | |
| 117 | |
| 118 | |
| 119 | |
| 120 if env.Bit('mac'): | |
| 121 if env['DEBUG']: | |
| 122 env['MAC_BREAKPAD_CONFIG'] = 'Debug' | |
| 123 else: | |
| 124 env['MAC_BREAKPAD_CONFIG'] = 'Release' | |
| 125 env.Append( | |
| 126 MAC_BREAKPAD_SRC_DIR = '$BREAKPAD_DIR/client/mac', | |
| 127 # TODO: is there a way to tell xcodebuild to output the build in | |
| 128 # scons-out instead of the source tree ? | |
| 129 MAC_BREAKPAD_DIR = '$MAC_BREAKPAD_SRC_DIR/build/$MAC_BREAKPAD_CONFIG', | |
| 130 LIBS = [ | |
| 131 'o3dStatsreport_Common', | |
| 132 'o3dStatsreport', | |
| 133 'event', | |
| 134 logging_lib, | |
| 135 ], | |
| 136 FRAMEWORKS = [ | |
| 137 'Carbon', | |
| 138 'OpenGL', | |
| 139 'Cg', | |
| 140 'AGL', | |
| 141 'Foundation', | |
| 142 'Breakpad', | |
| 143 'Cocoa', | |
| 144 'IOKit', | |
| 145 'QuickTime', | |
| 146 ], | |
| 147 CCFLAGS = ['-F$MAC_BREAKPAD_DIR', | |
| 148 '-F$CG_DIR'], | |
| 149 CPPPATH = ['mac', '$MAC_BREAKPAD_SRC_DIR/Framework'], | |
| 150 CPPDEFINES = ['XP_MACOSX'] | |
| 151 ) | |
| 152 | |
| 153 if env.Bit('linux'): | |
| 154 env.Append( | |
| 155 CPPDEFINES = ['XP_UNIX', 'MOZ_X11'], | |
| 156 LIBS = [ | |
| 157 'event', | |
| 158 ], | |
| 159 ); | |
| 160 | |
| 161 # Add libraries based on the requested renderer | |
| 162 env.Append(CPPPATH = env['RENDERER_INCLUDE_PATH'], | |
| 163 LIBPATH = env['RENDERER_LIB_PATH'], | |
| 164 LIBS = env['RENDERER_LIBS'] + env['ICU_LIBS']) | |
| 165 | |
| 166 | |
| 167 def NixysaEmitter(target, source, env): | |
| 168 bases = [os.path.splitext(s.name)[0] for s in source] + ['globals'] | |
| 169 targets = ['glue/%s_glue.cc' % b for b in bases] | |
| 170 targets += ['glue/%s_glue.h' % b for b in bases] | |
| 171 return targets, source | |
| 172 | |
| 173 AUTOGEN_ARGS = ['$NIXYSA_DIR/codegen.py', | |
| 174 '--binding-module=o3d:plugin/o3d_binding.py', | |
| 175 '--generate=npapi', | |
| 176 '--output-dir=$GLUE_DIR', | |
| 177 '$SOURCES'] | |
| 178 | |
| 179 env['PYTHONPATH'] = ['$NIXYSA_DIR', | |
| 180 '$GFLAGS_DIR/python', | |
| 181 '$PLY_DIR'] | |
| 182 env['BUILDERS']['Nixysa'] = Builder(action=env.Python(AUTOGEN_ARGS), | |
| 183 emitter=NixysaEmitter) | |
| 184 AUTOGEN_OUTPUT = env.Nixysa(O3D_IDL_SOURCES) | |
| 185 env.SideEffect('glue/hash', AUTOGEN_OUTPUT) | |
| 186 AUTOGEN_CC_FILES = [f for f in AUTOGEN_OUTPUT if f.suffix == '.cc'] | |
| 187 | |
| 188 inputs = AUTOGEN_CC_FILES + [ | |
| 189 'cross/async_loading.cc', | |
| 190 'cross/archive_request_static_glue.cc', | |
| 191 'cross/blacklist.cc', | |
| 192 'cross/main_thread_task_poster.cc', | |
| 193 'cross/o3d_glue.cc', | |
| 194 'cross/np_v8_bridge.cc', | |
| 195 'cross/out_of_memory.cc', | |
| 196 'cross/stream_manager.cc', | |
| 197 'cross/texture_static_glue.cc', | |
| 198 'cross/config_common.cc', | |
| 199 ] | |
| 200 | |
| 201 env_version = env.Clone() | |
| 202 env_version.Append( | |
| 203 CPPDEFINES = [ | |
| 204 ('O3D_PLUGIN_NAME', '\\"$O3D_PLUGIN_NAME\\"'), | |
| 205 ('O3D_PLUGIN_DESCRIPTION', '\\"$O3D_PLUGIN_DESCRIPTION\\"'), | |
| 206 ('O3D_PLUGIN_MIME_TYPE', '\\"$O3D_PLUGIN_MIME_TYPE\\"') | |
| 207 ]) | |
| 208 | |
| 209 idlglue_static_sources = [ | |
| 210 'common', | |
| 211 'static_object', | |
| 212 'npn_api', | |
| 213 ] | |
| 214 env_idlglue = env.Clone() | |
| 215 | |
| 216 # TODO: figure out resources on the mac. | |
| 217 if env.Bit('windows'): | |
| 218 env.ReplaceStrings( | |
| 219 'win/o3dPlugin.rc', 'win/o3dPlugin.rc_template', | |
| 220 REPLACE_STRINGS = plugin_replace_strings | |
| 221 ) | |
| 222 if env['DEBUG']: | |
| 223 # release v8 brings libcmt that conflicts with libcmtd | |
| 224 env.Append(LINKFLAGS=['/NODEFAULTLIB:LIBCMT']) | |
| 225 env_idlglue.Append(CPPDEFINES=['OS_WINDOWS']) | |
| 226 inputs += [env_idlglue.ComponentObject(s, '$NIXYSA_STATIC_GLUE/%s.cc' % s) | |
| 227 for s in idlglue_static_sources] | |
| 228 inputs += env_version.ComponentObject('cross/main', 'cross/main.cc') | |
| 229 inputs += [ | |
| 230 logging_lib, | |
| 231 'win/main_win.cc', | |
| 232 'win/config.cc', | |
| 233 'win/o3dPlugin.def', | |
| 234 'win/update_lock.cc', | |
| 235 env.RES('win/o3dPlugin.rc'), | |
| 236 ] | |
| 237 | |
| 238 | |
| 239 if env.Bit('linux'): | |
| 240 env_idlglue.Append(CPPDEFINES=['OS_LINUX']) | |
| 241 inputs += [env_idlglue.SharedObject(s, '$NIXYSA_STATIC_GLUE/%s.cc' % s) | |
| 242 for s in idlglue_static_sources] | |
| 243 inputs += env_version.SharedObject('cross/main', 'cross/main.cc') | |
| 244 inputs += [ | |
| 245 'linux/main_linux.cc', | |
| 246 'linux/config.cc', | |
| 247 ] | |
| 248 # This sets the rpath property on the generated shared object, which specifies | |
| 249 # additional paths that the run-time linker/loader will search for its | |
| 250 # dependent shared libraries. We install libGLEW, libCg, and libCgGL to here. | |
| 251 env.Append(RPATH=['/opt/google/o3d/lib']) | |
| 252 | |
| 253 | |
| 254 # SCons doesn't really know about MacOSX bundles, so we need to override a | |
| 255 # lot of its behavior to make one, ie -bundle flag, no lib prefix, no .dylib suf
fix. | |
| 256 if env.Bit('mac'): | |
| 257 breakpad_framework = env.Command( | |
| 258 env.Dir('$MAC_BREAKPAD_DIR/Breakpad.framework'), | |
| 259 env.Dir('$MAC_BREAKPAD_SRC_DIR/Breakpad.xcodeproj'), | |
| 260 ' '.join(['cd $MAC_BREAKPAD_SRC_DIR &&', | |
| 261 'xcodebuild', | |
| 262 '-project Breakpad.xcodeproj', | |
| 263 '-target Breakpad', | |
| 264 '-configuration $MAC_BREAKPAD_CONFIG'])) | |
| 265 plugin_mac_object = env.SharedObject('mac/plugin_mac', 'mac/plugin_mac.mm') | |
| 266 env.Requires(plugin_mac_object, breakpad_framework) | |
| 267 | |
| 268 env_idlglue.Append(CPPDEFINES=['OS_MACOSX']) | |
| 269 inputs += [env_idlglue.SharedObject(s, '$NIXYSA_STATIC_GLUE/%s.cc' % s) | |
| 270 for s in idlglue_static_sources] | |
| 271 inputs += env_version.SharedObject('cross/main', 'cross/main.cc') | |
| 272 inputs += [ | |
| 273 'mac/main_mac.mm', | |
| 274 'mac/config_mac.mm', | |
| 275 'mac/graphics_utils_mac.mm', | |
| 276 plugin_mac_object | |
| 277 ] | |
| 278 | |
| 279 env['SHLINKFLAGS'] = ['-bundle', | |
| 280 '-F$MAC_BREAKPAD_DIR', | |
| 281 '-F$CG_DIR', | |
| 282 ] | |
| 283 env['SHLIBPREFIX'] = [''] | |
| 284 env['SHLIBSUFFIX'] = [''] | |
| 285 plugin_dll = env.SharedLibrary('O3D', inputs) | |
| 286 plugin_artifacts = env.Replicate('$ARTIFACTS_DIR/O3D.plugin/Contents/MacOS/',
plugin_dll) | |
| 287 | |
| 288 # insert version number into Info.plist | |
| 289 env.ReplaceStrings( | |
| 290 'mac/processed/Info.plist', '$SCONSTRUCT_DIR/plugin/mac/Info.plist', | |
| 291 REPLACE_STRINGS = plugin_replace_strings | |
| 292 ) | |
| 293 | |
| 294 # copy mac resource data | |
| 295 env.Replicate('$ARTIFACTS_DIR/O3D.plugin/Contents/', | |
| 296 '$SCONSTRUCT_DIR/plugin/mac/Resources') | |
| 297 env.Replicate('$ARTIFACTS_DIR/O3D.plugin/Contents', | |
| 298 'mac/processed/Info.plist') | |
| 299 | |
| 300 # Make a string substituted version of o3d_plugin.r in the artifacts | |
| 301 # directory. | |
| 302 env.ReplaceStrings( | |
| 303 '$ARTIFACTS_DIR/o3d_plugin.r', 'mac/o3d_plugin.r', | |
| 304 REPLACE_STRINGS = plugin_replace_strings | |
| 305 ) | |
| 306 # Compile the string substituted o3d_plugin.r to make O3D.rsrc | |
| 307 env.Command('$ARTIFACTS_DIR/O3D.plugin/Contents/Resources/O3D.rsrc', | |
| 308 ['$ARTIFACTS_DIR/o3d_plugin.r'], | |
| 309 [ | |
| 310 'Rez -useDF "$ARTIFACTS_DIR/o3d_plugin.r" -o "$ARTIFACTS_DIR/O3D.pl
ugin/Contents/Resources/O3D.rsrc"' | |
| 311 ]) | |
| 312 | |
| 313 if env['DEBUG']: | |
| 314 stripCmd = 'echo debug build, no strip' | |
| 315 else: | |
| 316 stripCmd = 'strip -S "$ARTIFACTS_DIR/O3D.plugin/Contents/MacOS/O3D"' | |
| 317 | |
| 318 # Cleanup end result | |
| 319 created_installer = env.Command('$ARTIFACTS_DIR/plugin_done', | |
| 320 [env.Dir('$ARTIFACTS_DIR/O3D.plugin')], | |
| 321 [ | |
| 322 'xcodebuild -project installer/mac/O3D_Stats/O3D_Stats.xcodeproj -
configuration Release', | |
| 323 'ditto "$SCONSTRUCT_DIR/installer/mac/O3D_Stats/build/Release/O3D_
Stats.bundle" "$ARTIFACTS_DIR/O3D_Stats.bundle"', | |
| 324 # Because the frameworks are inside a plugin bundle (not applicati
on bundle) the plugin executable needs to be | |
| 325 # tweaked to reference their paths via @loader_path instead of @ex
ecutable_path. | |
| 326 '$SCONSTRUCT_DIR/plugin/mac/Tools/fix_install_names.sh $ARTIFACTS_
DIR/O3D.plugin/Contents/MacOS/O3D', | |
| 327 | |
| 328 # make a copy of the executable, before we strip all the symbols | |
| 329 'rm -f "$ARTIFACTS_DIR/O3D"', | |
| 330 'cp -f "$ARTIFACTS_DIR/O3D.plugin/Contents/MacOS/O3D" "$ARTIFACTS_
DIR/O3D"', | |
| 331 stripCmd, | |
| 332 # Delete frameworks so we start fresh, and ditto can't get confuse
d | |
| 333 Delete("$ARTIFACTS_DIR/O3D.plugin/Contents/Frameworks/"), | |
| 334 # Use ditto, not Replicate() as Replicate mangles the symlinks. | |
| 335 # The use of ditto also lets us strip the frameworks down to just
i386, which saves a lot of space. | |
| 336 'ditto --arch i386 "$MAC_BREAKPAD_DIR/Breakpad.framework" "$ARTIFA
CTS_DIR/O3D.plugin/Contents/Frameworks/Breakpad.framework"', | |
| 337 '/usr/bin/install_name_tool -change ' | |
| 338 '@executable_path/../Frameworks/Breakpad.framework/Resources/break
padUtilities.dylib ' | |
| 339 '@loader_path/Resources/breakpadUtilities.dylib ' | |
| 340 '"$ARTIFACTS_DIR/O3D.plugin/Contents/Frameworks/Breakpad.framework
/Breakpad"', | |
| 341 'ditto --arch i386 "$CG_DIR/Cg.framework" "$ARTIFACTS_DIR/O3D.plug
in/Contents/Frameworks/Cg.framework"', | |
| 342 # Delete private frameworks headers. | |
| 343 'find "$ARTIFACTS_DIR/O3D.plugin/Contents/Frameworks" -iname "*.h"
-delete', | |
| 344 'find "$ARTIFACTS_DIR/O3D.plugin/Contents/Frameworks" -iname "Head
ers" -type l -delete', | |
| 345 'find "$ARTIFACTS_DIR/O3D.plugin/Contents/Frameworks" -iname "Head
ers" -type d -prune -delete', | |
| 346 Touch("$ARTIFACTS_DIR/O3D.plugin/"), | |
| 347 Touch('$ARTIFACTS_DIR/plugin_done') | |
| 348 ]) | |
| 349 | |
| 350 # Upload crash symbols to crash server. | |
| 351 if int(ARGUMENTS.get('O3D_ENABLE_BREAKPAD', 0)): | |
| 352 env.Command('$ARTIFACTS_DIR/O3D.sym.breakpad', | |
| 353 created_installer, | |
| 354 ['echo "UPLOADING SYMBOLS TO go/crash"', | |
| 355 ' '.join(['"$MAC_BREAKPAD_PREBUILT_DIR/dump_syms"', | |
| 356 '"$ARTIFACTS_DIR/O3D"', | |
| 357 '> $ARTIFACTS_DIR/O3D.sym.breakpad']), | |
| 358 ' '.join(['"$MAC_BREAKPAD_PREBUILT_DIR/symupload"', | |
| 359 '"$ARTIFACTS_DIR/O3D.sym.breakpad"', | |
| 360 'http://crash-symbols:3842/upload']) | |
| 361 ]) | |
| 362 | |
| 363 env['MAC_INSTALLER_DIR'] = env['SCONSTRUCT_DIR'] + '/../o3d-internal/mac_insta
ller' | |
| 364 env['MAC_INSTALLER_PROJECT'] = 'o3d.packproj' | |
| 365 # Default is to make the installer. | |
| 366 make_installer = int(ARGUMENTS.get('MAKE_INSTALLER', 1)) and os.path.exists(en
v['MAC_INSTALLER_DIR'] + '/' + env['MAC_INSTALLER_PROJECT']) | |
| 367 | |
| 368 | |
| 369 if make_installer: | |
| 370 env.ReplaceStrings( | |
| 371 "$ARTIFACTS_DIR/postflight.sh", '$MAC_INSTALLER_DIR/postflight.sh', | |
| 372 REPLACE_STRINGS = plugin_replace_strings | |
| 373 ) | |
| 374 if int(ARGUMENTS.get('MAC_KILLSWITCH', 0)): | |
| 375 kill_command = 'rm "$ARTIFACTS_DIR/O3D.plugin/Contents/MacOS/O3D"' | |
| 376 else: | |
| 377 kill_command = 'echo normal binary' | |
| 378 # Cleanup end result and build the installer | |
| 379 env.Command(env.Dir('$ARTIFACTS_DIR/O3D.mpkg'), | |
| 380 [ | |
| 381 "$ARTIFACTS_DIR/plugin_done", | |
| 382 "$ARTIFACTS_DIR/postflight.sh", | |
| 383 ], | |
| 384 [ | |
| 385 # Delete first as Copy can fail to overwrite if the packproj is
locked | |
| 386 Delete("$ARTIFACTS_DIR/$MAC_INSTALLER_PROJECT"), | |
| 387 # Copy installer project file into artifacts so it can operate o
n files local to own directory | |
| 388 # and so work on debug or release builds without change. | |
| 389 Copy("$ARTIFACTS_DIR/$MAC_INSTALLER_PROJECT", | |
| 390 '$MAC_INSTALLER_DIR/$MAC_INSTALLER_PROJECT'), | |
| 391 'ditto "$MAC_INSTALLER_DIR/GoogleSoftwareUpdate.pkg" "$ARTIFACT
S_DIR/GoogleSoftwareUpdate.pkg"', | |
| 392 # Make the installer. | |
| 393 kill_command, | |
| 394 'freeze "$ARTIFACTS_DIR/$MAC_INSTALLER_PROJECT"', | |
| 395 # Delete temp files in artifacts now we are done. | |
| 396 Delete("$ARTIFACTS_DIR/$MAC_INSTALLER_PROJECT") | |
| 397 ]) | |
| 398 | |
| 399 env.Command('$ARTIFACTS_DIR/o3d.dmg', | |
| 400 [ | |
| 401 env.Dir('$ARTIFACTS_DIR/O3D.mpkg'), | |
| 402 ], | |
| 403 [ | |
| 404 Delete("$ARTIFACTS_DIR/DMG_SRC"), | |
| 405 'mkdir "$ARTIFACTS_DIR/DMG_SRC"', | |
| 406 'cp "$MAC_INSTALLER_DIR/.keystone_install" "$ARTIFACTS_DIR/DMG_SRC
"', | |
| 407 'ditto "$ARTIFACTS_DIR/O3D.mpkg" "$ARTIFACTS_DIR/DMG_SRC/O3D.mpkg"
', | |
| 408 'hdiutil create -srcfolder "$ARTIFACTS_DIR/DMG_SRC" -size 30mb -ov
-fs HFS+ -imagekey zlib-level=9 -volname "O3D $O3D_PLUGIN_VERSION" "$ARTIFACTS_
DIR/o3d.dmg"', | |
| 409 Delete("$ARTIFACTS_DIR/DMG_SRC"), | |
| 410 ]) | |
| 411 | |
| 412 | |
| 413 # else build the shared library in a platform independent way | |
| 414 else: | |
| 415 plugin_dll = env.SharedLibrary('npo3dautoplugin', inputs) | |
| 416 # copy to artifacts | |
| 417 plugin_artifacts = env.Replicate('$ARTIFACTS_DIR', plugin_dll) | |
| 418 | |
| 419 if env.Bit('linux'): | |
| 420 env.Requires(plugin_artifacts, env.Replicate( | |
| 421 '$ARTIFACTS_DIR', [ | |
| 422 '$CG_DIR/lib/libCg.so', | |
| 423 '$CG_DIR/lib/libCgGL.so', | |
| 424 '$GLEW_DIR/lib/libGLEW.so.1.5', | |
| 425 ] | |
| 426 )) | |
| 427 | |
| 428 | |
| 429 # alias 'plugin' to build the plug-in in artifacts | |
| 430 env.Alias('plugin', plugin_artifacts) | |
| 431 | |
| 432 # TODO: have a common way to do colliding installs like this. | |
| 433 # Do the install step only if this variant is the first target. | |
| 434 if (env['BUILD_TYPE'] == ARGUMENTS.get('MODE') or | |
| 435 (ARGUMENTS.get('MODE', 'default') == 'default' and | |
| 436 env['BUILD_TYPE'] == 'dbg-d3d')): | |
| 437 plugin_install = env.Replicate('$FIREFOX_PLUGIN_DIR', plugin_dll[0]) | |
| 438 env.Alias('install', plugin_install) | |
| 439 | |
| 440 if env.Bit('windows'): | |
| 441 # Copy SwiftShader to plugin dir. | |
| 442 swiftshader_path = env.subst('$SWIFTSHADER_DIR/swiftshader_d3d9.dll') | |
| 443 if os.path.exists(swiftshader_path): | |
| 444 env.Requires(plugin_install, | |
| 445 env.Replicate('$FIREFOX_PLUGIN_DIR/O3DExtras', swiftshader_path)) | |
| 446 | |
| 447 if env.Bit('windows'): | |
| 448 # Make the logging program | |
| 449 exe = env.ComponentProgram('statsLogger', | |
| 450 logging_lib + ['win/logger_main.cc']) | |
| 451 # Copy the resulting executable to the Artifacts directory. | |
| 452 env.Replicate('$ARTIFACTS_DIR', [exe]) | |
| OLD | NEW |