1 /* 2 * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 ext.WIN = [:] 27 28 WIN.canBuild = IS_WINDOWS 29 if (!WIN.canBuild) return; 30 31 WIN.compileSwing = true; 32 WIN.compileSWT = true; 33 WIN.compileFXPackager = true; 34 35 WIN.includeNull3d = true 36 37 // Lambda for naming the generated libs 38 WIN.library = { name -> return "${name}.dll" as String } 39 40 WIN.libDest = "bin" 41 42 setupTools("windows_tools", 43 { propFile -> 44 // Create the properties file 45 ByteArrayOutputStream results = new ByteArrayOutputStream(); 46 String winsdkDir = System.getenv().get("WINSDK_DIR"); 47 exec({ 48 environment([ 49 "WINSDKPATH" : winsdkDir == null ? "" : winsdkDir, 50 "CONF" : "/$CONF", // TODO does this mean the generated properties must be reset when in a different configuration? 51 "VCARCH" : IS_64 ? "amd64" : "x86", 52 "SDKARCH" : IS_64 ? "/x64" : "/x86", 53 ]); 54 commandLine("cmd", "/q", "/c", "buildSrc\\genVSproperties.bat"); 55 setStandardOutput(results); 56 }); 57 BufferedReader reader = new BufferedReader(new StringReader(results.toString().trim())); 58 reader.readLine(); 59 reader.readLine(); 60 String line; 61 while ((line = reader.readLine()) != null && !line.startsWith("######")) { 62 line = line.replace("\\", "/").replace("/@@ENDOFLINE@@", "").replace("@@ENDOFLINE@@", "").replace("//", "/").replace("windows.vs.", "WINDOWS_VS_"); 63 propFile << line << "\r\n"; 64 } 65 }, 66 { properties -> 67 defineProperty("WINDOWS_VS_VSINSTALLDIR", properties, "c:/Program Files (x86)/Microsoft Visual Studio 12.0"); 68 defineProperty("WINDOWS_SDK_DIR", properties, System.getenv().get("WINSDK_DIR")) 69 defineProperty("WINDOWS_VS_VCINSTALLDIR", properties, "$WINDOWS_VS_VSINSTALLDIR/VC") 70 defineProperty("WINDOWS_VS_DEVENVDIR", properties, "$WINDOWS_VS_VSINSTALLDIR/Common7/IDE") 71 defineProperty("WINDOWS_VS_DEVENVCMD", properties, "$WINDOWS_VS_DEVENVDIR/VCExpress.exe") 72 defineProperty("WINDOWS_VS_MSVCDIR", properties, WINDOWS_VS_VCINSTALLDIR) 73 defineProperty("WINDOWS_DXSDK_DIR", properties, System.getenv().get("DXSDK_DIR")) 74 defineProperty("WINDOWS_VS_INCLUDE", properties, "$WINDOWS_VS_VCINSTALLDIR/INCLUDE;" + "$WINDOWS_SDK_DIR/include;") 75 defineProperty("WINDOWS_VS_VER", properties, "120") 76 defineProperty("WINDOWS_VS_LIB", properties, "$WINDOWS_VS_VCINSTALLDIR/LIB;" + "$WINDOWS_SDK_DIR/lib;") 77 defineProperty("WINDOWS_VS_LIBPATH", properties, "$WINDOWS_VS_VCINSTALLDIR/LIB;") 78 def parfaitPath = IS_COMPILE_PARFAIT ? System.getenv().get("PARFAIT_PATH") + ";" : ""; 79 defineProperty("WINDOWS_VS_PATH", properties, parfaitPath + "$WINDOWS_VS_DEVENVDIR;" + 80 "$WINDOWS_VS_VSINSTALLDIR/VC/BIN;" + 81 "$WINDOWS_VS_VSINSTALLDIR/Common7/Tools;" + 82 "$WINDOWS_VS_VCINSTALLDIR/VCPackages;" + 83 "$WINDOWS_SDK_DIR/bin/NETFX 4.0 Tools;" + 84 "$WINDOWS_SDK_DIR/bin;" + 85 System.getenv().get("PATH")) 86 } 87 ) 88 89 if (WINDOWS_SDK_DIR == null || WINDOWS_SDK_DIR == "") { 90 throw new GradleException("FAIL: WINSDK_DIR not defined"); 91 } 92 93 if (WINDOWS_DXSDK_DIR == null || WINDOWS_DXSDK_DIR == "") { 94 throw new GradleException("FAIL: DXSDK_DIR not defined"); 95 } 96 97 // Define set of flags shared for all targets that support debug compilation 98 def ccDebugFlags = 99 IS_DEBUG_NATIVE ? ["/MDd", "/Od", "/Zi", "/DDEBUG"] : ["/O2", "/MD", "/DNDEBUG"] 100 101 def winVsVer = Integer.parseInt(WINDOWS_VS_VER) 102 if (winVsVer >= 120) { 103 // Serialize access to PDB file for debug builds if on VS2013 or later 104 if (IS_DEBUG_NATIVE) ccDebugFlags += "/FS" 105 } 106 107 108 // Common set of flags for all modules except fxpackager 109 def ccFlags = ["/nologo", "/W3", "/EHsc", "/c", 110 "/D_STATIC_CPPLIB", "/D_DISABLE_DEPRECATE_STATIC_CPPLIB", "/DINLINE=__inline", 111 "/DUNICODE", "/D_UNICODE", "/DWIN32", "/DIAL", "/D_LITTLE_ENDIAN", "/DWIN32_LEAN_AND_MEAN", 112 "/I$JDK_HOME/include", "/I$JDK_HOME/include/win32", 113 ccDebugFlags].flatten(); 114 115 def linkFlags = ["/nologo", "/dll", "/manifest", "/opt:REF", "/incremental:no", "/dynamicbase", "/nxcompat"]; 116 if (!IS_64) linkFlags.add("/safeseh"); 117 if (IS_DEBUG_NATIVE) linkFlags.add("/debug"); 118 119 // Remove C++ static linking if not on VS2010 120 if (WINDOWS_VS_VER != "100") { 121 ccFlags -= ["/D_STATIC_CPPLIB", "/D_DISABLE_DEPRECATE_STATIC_CPPLIB"] 122 } 123 124 ext.WINDOWS_NATIVE_COMPILE_ENVIRONMENT = [ 125 "VCINSTALLDIR" : WINDOWS_VS_VCINSTALLDIR, 126 "VSINSTALLDIR" : WINDOWS_VS_VSINSTALLDIR, 127 "DEVENVDIR" : WINDOWS_VS_DEVENVDIR, 128 "MSVCDIR" : WINDOWS_VS_MSVCDIR, 129 "VS_VER" : WINDOWS_VS_VER, 130 "PATH" : WINDOWS_VS_PATH, 131 "INCLUDE" : WINDOWS_VS_INCLUDE, 132 "LIB" : WINDOWS_VS_LIB, 133 "LIBPATH" : WINDOWS_VS_LIBPATH, 134 "DXSDK_DIR" : WINDOWS_DXSDK_DIR 135 ]; 136 137 String msvcBinDir = (IS_64 138 ? "$WINDOWS_VS_VSINSTALLDIR/VC/BIN/amd64" 139 : "$WINDOWS_VS_VSINSTALLDIR/VC/BIN") 140 def compiler = IS_COMPILE_PARFAIT ? "cl.exe" : cygpath("$msvcBinDir/cl.exe") 141 def linker = IS_COMPILE_PARFAIT ? "link.exe" : cygpath("$msvcBinDir/link.exe") 142 def winSdkBinDir = "$WINDOWS_SDK_DIR/Bin" 143 if (WINDOWS_VS_VER != "100") { 144 winSdkBinDir += "/" + (IS_64 ? "x64" : "x86") 145 } 146 ext.RC = cygpath("$winSdkBinDir/RC.Exe") 147 def rcCompiler = RC 148 ext.FXC = cygpath("$WINDOWS_DXSDK_DIR/utilities/bin/x86/fxc.exe") 149 ext.MC = cygpath("$winSdkBinDir/mt.exe") 150 ext.MSVCR = cygpath("${WINDOWS_VS_MSVCDIR}/redist/${IS_64 ? 'x64' : 'x86'}/Microsoft.VC${WINDOWS_VS_VER}.CRT/msvcr${WINDOWS_VS_VER}.dll") 151 ext.MSVCP = cygpath("${WINDOWS_VS_MSVCDIR}/redist/${IS_64 ? 'x64' : 'x86'}/Microsoft.VC${WINDOWS_VS_VER}.CRT/msvcp${WINDOWS_VS_VER}.dll") 152 153 // Set up path to redistributable MS VC libraries if we are using a different 154 // version of Visual Studio than the JDK 155 def msvcrtDir = WINDOWS_VS_VER == "100" ? "" : cygpath("${WINDOWS_VS_MSVCDIR}/redist/${IS_64 ? 'x64' : 'x86'}/Microsoft.VC${WINDOWS_VS_VER}.CRT") 156 WIN.MSVCRTDIR = msvcrtDir 157 158 if (!file(RC).exists()) throw new GradleException("FAIL: cannot find RC: " + RC) 159 if (!file(FXC).exists()) throw new GradleException("FAIL: cannot find FXC: " + FXC) 160 161 // The product version passed to RC is defined as follows: 162 // 163 // MAJOR.MINOR.UPDATE_10.BUILD 164 // 165 // where: 166 // 167 // MAJOR = 8 (for JDK 8) 168 // MINOR = 0 169 // UPDATE_10 = JDK update * 10, so 8u65 --> 650 170 // BUILD = build number with no leading zeros 171 // 172 def rcVerMajor = Integer.parseInt(jfxReleaseMajorVersion) 173 def rcVerMinor = Integer.parseInt(jfxReleaseMinorVersion) 174 def rcVerMicro = Integer.parseInt(jfxReleaseMicroVersion) * 10 175 def rcVerSubMicro = Integer.parseInt(PROMOTED_BUILD_NUMBER) 176 177 def rcVer = "${rcVerMajor}.${rcVerMinor}.${rcVerMicro}.${rcVerSubMicro}" 178 def rcVerComma = "${rcVerMajor},${rcVerMinor},${rcVerMicro},${rcVerSubMicro}" 179 180 def rcVerProduct = "${rcVerMajor}" 181 182 def rcFlags = [ 183 "/d", "\"JFX_COMPANY=${COMPANY_NAME}\"", 184 "/d", "\"JFX_COMPONENT=${PRODUCT_NAME} ${PLATFORM_NAME} binary\"", 185 "/d", "\"JFX_NAME=${PRODUCT_NAME} ${PLATFORM_NAME} ${rcVerProduct}\"", 186 "/d", "\"JFX_VER=${rcVer}\"", 187 "/d", "\"JFX_BUILD_ID=${RAW_VERSION}-${RELEASE_MILESTONE}-b${PROMOTED_BUILD_NUMBER}\"", 188 "/d", "\"JFX_COPYRIGHT=Copyright \u00A9 ${Calendar.getInstance().get(Calendar.YEAR)}\"", 189 "/d", "\"JFX_FVER=${rcVerComma}\"", 190 "/d", "\"JFX_FTYPE=0x2L\"", 191 "/nologo" 192 ]; 193 194 def defaultRcSource = file("modules/graphics/src/main/resources/version.rc"); 195 196 WIN.glass = [:] 197 WIN.glass.javahInclude = [ 198 "com/sun/glass/events/**", 199 "com/sun/glass/ui/*", 200 "com/sun/glass/ui/win/*"] 201 WIN.glass.nativeSource = file("modules/graphics/src/main/native-glass/win") 202 WIN.glass.compiler = compiler 203 WIN.glass.rcCompiler = rcCompiler; 204 WIN.glass.rcSource = file("modules/graphics/src/main/native-glass/win/GlassResources.rc"); 205 WIN.glass.rcFlags = [ 206 "/I", file("modules/graphics/src/main/resources"), 207 "/d", "JFX_FNAME=glass.dll", 208 "/d", "JFX_INTERNAL_NAME=glass", 209 rcFlags].flatten(); 210 WIN.glass.ccFlags = [ccFlags, "/WX"].flatten() 211 if (WINDOWS_VS_VER != "100") WIN.glass.ccFlags -= ["/WX"] 212 WIN.glass.linker = linker 213 WIN.glass.linkFlags = [linkFlags, "delayimp.lib", "gdi32.lib", "urlmon.lib", "Comdlg32.lib", 214 "winmm.lib", "imm32.lib", "shell32.lib", "Uiautomationcore.lib", "dwmapi.lib", 215 "/DELAYLOAD:user32.dll", "/DELAYLOAD:urlmon.dll", "/DELAYLOAD:winmm.dll", "/DELAYLOAD:shell32.dll", 216 "/DELAYLOAD:Uiautomationcore.dll", "/DELAYLOAD:dwmapi.dll"].flatten() 217 WIN.glass.lib = "glass" 218 219 WIN.decora = [:] 220 WIN.decora.compiler = compiler 221 WIN.decora.ccFlags = [IS_64 ? [] : ["/arch:SSE"], "/fp:fast", ccFlags].flatten() 222 WIN.decora.linker = linker 223 WIN.decora.linkFlags = [linkFlags].flatten() 224 WIN.decora.lib = "decora_sse" 225 WIN.decora.rcCompiler = rcCompiler; 226 WIN.decora.rcSource = defaultRcSource 227 WIN.decora.rcFlags = ["/d", "JFX_FNAME=decora_sse.dll", "/d", "JFX_INTERNAL_NAME=decora", rcFlags].flatten() 228 229 WIN.prism = [:] 230 WIN.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"] 231 WIN.prism.nativeSource = file("modules/graphics/src/main/native-prism") 232 WIN.prism.compiler = compiler 233 WIN.prism.ccFlags = [ccFlags].flatten() 234 WIN.prism.linker = linker 235 WIN.prism.linkFlags = [linkFlags].flatten() 236 WIN.prism.lib = "prism_common" 237 WIN.prism.rcCompiler = rcCompiler; 238 WIN.prism.rcSource = defaultRcSource 239 WIN.prism.rcFlags = ["/d", "JFX_FNAME=prism_common.dll", "/d", "JFX_INTERNAL_NAME=prism", rcFlags].flatten() 240 241 WIN.prismSW = [:] 242 WIN.prismSW.javahInclude = ["com/sun/pisces/**/*"] 243 WIN.prismSW.nativeSource = file("modules/graphics/src/main/native-prism-sw") 244 WIN.prismSW.compiler = compiler 245 WIN.prismSW.ccFlags = [ccFlags].flatten() 246 WIN.prismSW.linker = linker 247 WIN.prismSW.linkFlags = [linkFlags].flatten() 248 WIN.prismSW.lib = "prism_sw" 249 WIN.prismSW.rcCompiler = rcCompiler; 250 WIN.prismSW.rcSource = defaultRcSource 251 WIN.prismSW.rcFlags = ["/d", "JFX_FNAME=prism_sw.dll", "/d", "JFX_INTERNAL_NAME=prismSW", rcFlags].flatten() 252 253 WIN.prismD3D = [:] 254 WIN.prismD3D.javahInclude = ["com/sun/prism/d3d/**/*"] 255 WIN.prismD3D.nativeSource = [ 256 file("modules/graphics/src/main/native-prism-d3d"), 257 file("modules/graphics/src/main/native-prism-d3d/hlsl")] 258 WIN.prismD3D.compiler = compiler 259 WIN.prismD3D.ccFlags = [ccFlags, "/Ibuild/headers/PrismD3D"].flatten() 260 WIN.prismD3D.linker = linker 261 WIN.prismD3D.linkFlags = [linkFlags, "user32.lib"].flatten() 262 WIN.prismD3D.lib = "prism_d3d" 263 WIN.prismD3D.rcCompiler = rcCompiler; 264 WIN.prismD3D.rcSource = defaultRcSource 265 WIN.prismD3D.rcFlags = ["/d", "JFX_FNAME=prism_d3d.dll", "/d", "JFX_INTERNAL_NAME=prismD3D", rcFlags].flatten(); 266 267 WIN.launcher = [:] 268 WIN.launcher.compiler = compiler 269 WIN.launcher.ccFlags = ["/nologo", "/W3", "/MT", "/EHsc", "/D_WINDOWS", "/DUNICODE", "/D_UNICODE", "/DWIN32", 270 "/D_LITTLE_ENDIAN", "/DWIN32_LEAN_AND_MEAN", "/I$JDK_HOME/include", "/I$JDK_HOME/include/win32", 271 ccDebugFlags].flatten(); 272 WIN.launcher.linker = linker 273 WIN.launcher.linkFlags = ["/link", "/nologo", "/WX", "/SUBSYSTEM:WINDOWS", "user32.lib", "shell32.lib", "advapi32.lib"] 274 if (IS_DEBUG_NATIVE) WIN.launcher.linkFlags.add("/debug"); 275 276 WIN.launcherlibrary = [:] 277 WIN.launcherlibrary.compiler = compiler 278 WIN.launcherlibrary.ccFlags = ["/nologo", "/W3", 279 // "/WX", 280 "/EHsc", "/c", "/D_WINDOWS", "/DUNICODE", "/D_UNICODE", "/DWIN32", 281 "/D_LITTLE_ENDIAN", "/DWIN32_LEAN_AND_MEAN", "/I$JDK_HOME/include", "/I$JDK_HOME/include/win32", 282 ccDebugFlags].flatten(); 283 WIN.launcherlibrary.linker = linker 284 WIN.launcherlibrary.linkFlags = ["/nologo", "/WX", "/DLL", "/SUBSYSTEM:WINDOWS", "user32.lib", "shell32.lib", "advapi32.lib", "ole32.lib"] 285 if (IS_DEBUG_NATIVE) WIN.launcherlibrary.linkFlags.add("/debug"); 286 287 WIN.iconLauncher = [:] 288 WIN.iconLauncher.compiler = compiler 289 WIN.iconLauncher.ccFlags = ["/nologo", "/W3", "/EHsc", "/D_WINDOWS", "/DUNICODE", "/D_UNICODE", 290 "/O2"] 291 WIN.iconLauncher.linker = linker 292 WIN.iconLauncher.linkFlags = ["/link", "/nologo", "/SUBSYSTEM:CONSOLE"]; 293 294 WIN.fxpackager = [:] 295 WIN.fxpackager.nativeSource = [ 296 file("modules/fxpackager/src/main/native/javapackager/win")] 297 WIN.fxpackager.compiler = compiler 298 WIN.fxpackager.ccFlags = ["/nologo", "/W3", "/EHsc", "/MT", "/GS", 299 "/DWIN32", "/D_LITTLE_ENDIAN", "/DWIN32_LEAN_AND_MEAN", 300 "/D_WIN32_WINDOWS=0X0500", "/D_WIN32_WINNT=0X0500", 301 "/I$JDK_HOME/include", "/I$JDK_HOME/include/win32", 302 "/O2", "-c"] 303 WIN.fxpackager.linker = linker 304 WIN.fxpackager.rcSource = file("modules/fxpackager/src/main/native/javapackager/win/javapackager.rc") 305 WIN.fxpackager.rcCompiler = rcCompiler 306 WIN.fxpackager.rcFlags = [ 307 "/l", "0x409", 308 "/d", "JFX_FNAME=javapackager.exe", 309 "/d", "JFX_INTERNAL_NAME=javapackager", 310 rcFlags].flatten(); 311 312 WIN.iio = [:] 313 WIN.iio.javahInclude = ["com/sun/javafx/iio/**/*"] 314 WIN.iio.nativeSource = [ 315 file("modules/graphics/src/main/native-iio"), 316 file("modules/graphics/src/main/native-iio/libjpeg7")] 317 WIN.iio.compiler = compiler 318 WIN.iio.ccFlags = [ccFlags].flatten() 319 WIN.iio.linker = linker 320 WIN.iio.linkFlags = [linkFlags].flatten() 321 WIN.iio.lib = "javafx_iio" 322 WIN.iio.rcCompiler = rcCompiler; 323 WIN.iio.rcSource = defaultRcSource 324 WIN.iio.rcFlags = ["/d", "JFX_FNAME=javafx_iio.dll", "/d", "JFX_INTERNAL_NAME=iio", rcFlags].flatten(); 325 326 WIN.prismES2 = [:] 327 WIN.prismES2.javahInclude = ["com/sun/prism/es2/**/*"] 328 WIN.prismES2.nativeSource = [ 329 file("modules/graphics/src/main/native-prism-es2"), 330 file("modules/graphics/src/main/native-prism-es2/GL"), 331 file("modules/graphics/src/main/native-prism-es2/windows") 332 ] 333 WIN.prismES2.compiler = compiler 334 WIN.prismES2.ccFlags = ["/Ob1", "/GF", "/Gy", "/GS", "/DWIN32", ccFlags].flatten() 335 WIN.prismES2.linker = linker 336 WIN.prismES2.linkFlags = [linkFlags, "/SUBSYSTEM:WINDOWS", "opengl32.lib", "gdi32.lib", "user32.lib", "kernel32.lib"].flatten() 337 WIN.prismES2.lib = "prism_es2" 338 WIN.prismES2.rcCompiler = rcCompiler; 339 WIN.prismES2.rcSource = defaultRcSource 340 WIN.prismES2.rcFlags = ["/d", "JFX_FNAME=prism_es2.dll", "/d", "JFX_INTERNAL_NAME=prismES2", rcFlags].flatten(); 341 342 def closedDir = file("$projectDir/../rt-closed") 343 WIN.font = [:] 344 WIN.font.javahInclude = [ 345 "com/sun/javafx/font/**/*", 346 "com/sun/javafx/text/**/*"] 347 WIN.font.nativeSource = [file("modules/graphics/src/main/native-font")] 348 WIN.font.compiler = compiler 349 WIN.font.ccFlags = ["/DJFXFONT_PLUS", "/D_WIN32_WINNT=0x0601", ccFlags].flatten() 350 WIN.font.ccFlags -= ["/DUNICODE", "/D_UNICODE"] 351 WIN.font.linker = linker 352 WIN.font.linkFlags = [linkFlags, "advapi32.lib", "gdi32.lib", "user32.lib", "dwrite.lib", "d2d1.lib", "windowscodecs.lib", "ole32.lib"].flatten() 353 WIN.font.lib = "javafx_font" 354 WIN.font.rcCompiler = rcCompiler; 355 WIN.font.rcSource = defaultRcSource 356 WIN.font.rcFlags = ["/d", "JFX_FNAME=javafx_font.dll", "/d", "JFX_INTERNAL_NAME=font", rcFlags].flatten(); 357 358 WIN.fontT2K = [:] 359 WIN.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"] 360 WIN.fontT2K.nativeSource = [ 361 file("$closedDir/javafx-font-t2k-native/src"), 362 file("$closedDir/javafx-font-t2k-native/src/layout")] 363 WIN.fontT2K.compiler = compiler 364 WIN.fontT2K.ccFlags = ["/DJFXFONT_PLUS", "/DLE_STANDALONE", ccFlags].flatten() 365 WIN.fontT2K.linker = linker 366 WIN.fontT2K.linkFlags = [linkFlags, "advapi32.lib", "gdi32.lib", "user32.lib"].flatten() 367 WIN.fontT2K.lib = "javafx_font_t2k" 368 WIN.fontT2K.rcCompiler = rcCompiler; 369 WIN.fontT2K.rcSource = defaultRcSource 370 WIN.fontT2K.rcFlags = ["/d", "JFX_FNAME=javafx_font_t2k.dll", "/d", "JFX_INTERNAL_NAME=fontT2K", rcFlags].flatten(); 371 372 WIN.media = [:] 373 WIN.media.rcCompiler = rcCompiler 374 WIN.media.rcSource = defaultRcSource 375 WIN.media.glibRcFile = "glib-lite.res" 376 WIN.media.gstreamerRcFile = "gstreamer-lite.res" 377 WIN.media.fxpluginsRcFile = "fxplugins.res" 378 WIN.media.jfxmediaRcFile = "jfxmedia.res" 379 WIN.media.glibRcFlags = ["/d", "JFX_FNAME=glib-lite.dll", "/d", "JFX_INTERNAL_NAME=glib", rcFlags].flatten() 380 WIN.media.gstreamerRcFlags = ["/d", "JFX_FNAME=gstreamer-lite.dll", "/d", "JFX_INTERNAL_NAME=gstreamer", rcFlags].flatten() 381 WIN.media.fxpluginsRcFlags = ["/d", "JFX_FNAME=fxplugins.dll", "/d", "JFX_INTERNAL_NAME=fxplugins", rcFlags].flatten() 382 WIN.media.jfxmediaRcFlags = ["/d", "JFX_FNAME=jfxmedia.dll", "/d", "JFX_INTERNAL_NAME=jfxmedia", rcFlags].flatten() 383 384 WIN.webkit = [:] 385 WIN.webkit.rcCompiler = rcCompiler 386 WIN.webkit.rcSource = defaultRcSource 387 WIN.webkit.rcFlags = ["/d", "JFX_FNAME=jfxwebkit.dll", "/d", "JFX_INTERNAL_NAME=webkit", rcFlags].flatten();