Browse Source

Allow generation of .js instead of .html as output for Web platform.

Yao Wei Tjong 姚伟忠 8 years ago
parent
commit
c9b45bf1f1
2 changed files with 18 additions and 16 deletions
  1. 17 15
      CMake/Modules/UrhoCommon.cmake
  2. 1 1
      Rakefile

+ 17 - 15
CMake/Modules/UrhoCommon.cmake

@@ -1443,21 +1443,23 @@ macro (setup_main_executable)
         set_property (SOURCE ${RESOURCE_PAKS} PROPERTY GENERATED TRUE)
         if (WEB)
             if (EMSCRIPTEN)
-                # Check if shell-file is already added in source files list by downstream project
-                if (NOT CMAKE_PROJECT_NAME STREQUAL Urho3D)
-                    foreach (FILE ${SOURCE_FILES})
-                        get_property (EMCC_OPTION SOURCE ${FILE} PROPERTY EMCC_OPTION)
-                        if (EMCC_OPTION STREQUAL shell-file)
-                            set (SHELL_HTML_FOUND TRUE)
-                            break ()
-                        endif ()
-                    endforeach ()
-                endif ()
-                if (NOT SHELL_HTML_FOUND)
-                    # Use custom Urho3D shell.html
-                    set (SHELL_HTML ${CMAKE_BINARY_DIR}/Source/shell.html)
-                    list (APPEND SOURCE_FILES ${SHELL_HTML})
-                    set_source_files_properties (${SHELL_HTML} PROPERTIES EMCC_OPTION shell-file)
+                # When generating html as output, check if shell-file is already added in source files list by downstream project
+                if (CMAKE_EXECUTABLE_SUFFIX_CXX STREQUAL .html)
+                    if (NOT CMAKE_PROJECT_NAME STREQUAL Urho3D)
+                        foreach (FILE ${SOURCE_FILES})
+                            get_property (EMCC_OPTION SOURCE ${FILE} PROPERTY EMCC_OPTION)
+                            if (EMCC_OPTION STREQUAL shell-file)
+                                set (SHELL_HTML_FOUND TRUE)
+                                break ()
+                            endif ()
+                        endforeach ()
+                    endif ()
+                    if (NOT SHELL_HTML_FOUND)
+                        # Use custom Urho3D shell.html
+                        set (SHELL_HTML ${CMAKE_BINARY_DIR}/Source/shell.html)
+                        list (APPEND SOURCE_FILES ${SHELL_HTML})
+                        set_source_files_properties (${SHELL_HTML} PROPERTIES EMCC_OPTION shell-file)
+                    endif ()
                 endif ()
                 # Set the custom EMCC_OPTION property to peload the generated shared data file
                 if (EMSCRIPTEN_SHARE_DATA)

+ 1 - 1
Rakefile

@@ -54,7 +54,7 @@ task :cmake do
   platform = 'native'
   build_options = ''
   # TODO: Need to find a way to automatically populate the array with all the Urho3D supported build options, at the moment it only contains those being used in CI
-  ['URHO3D_64BIT', 'URHO3D_LIB_TYPE', 'URHO3D_STATIC_RUNTIME', 'URHO3D_PCH', 'URHO3D_BINDINGS', 'URHO3D_OPENGL', 'URHO3D_D3D11', 'URHO3D_TESTING', 'URHO3D_TEST_TIMEOUT', 'URHO3D_UPDATE_SOURCE_TREE', 'URHO3D_TOOLS', 'URHO3D_DEPLOYMENT_TARGET', 'URHO3D_USE_LIB64_RPM', 'CMAKE_BUILD_TYPE', 'CMAKE_OSX_DEPLOYMENT_TARGET', 'IOS', 'IPHONEOS_DEPLOYMENT_TARGET', 'WIN32', 'MINGW', 'ANDROID', 'ANDROID_ABI', 'ANDROID_NATIVE_API_LEVEL', 'ANDROID_TOOLCHAIN_NAME', 'RPI', 'RPI_ABI', 'ARM', 'ARM_ABI_FLAGS', 'WEB', 'EMSCRIPTEN_SHARE_DATA', 'EMSCRIPTEN_SHARE_JS', 'EMSCRIPTEN_WASM', 'EMSCRIPTEN_EMRUN_BROWSER'].each { |var|
+  ['URHO3D_64BIT', 'URHO3D_LIB_TYPE', 'URHO3D_STATIC_RUNTIME', 'URHO3D_PCH', 'URHO3D_BINDINGS', 'URHO3D_OPENGL', 'URHO3D_D3D11', 'URHO3D_TESTING', 'URHO3D_TEST_TIMEOUT', 'URHO3D_UPDATE_SOURCE_TREE', 'URHO3D_TOOLS', 'URHO3D_DEPLOYMENT_TARGET', 'URHO3D_USE_LIB64_RPM', 'CMAKE_BUILD_TYPE', 'CMAKE_OSX_DEPLOYMENT_TARGET', 'IOS', 'IPHONEOS_DEPLOYMENT_TARGET', 'WIN32', 'MINGW', 'ANDROID', 'ANDROID_ABI', 'ANDROID_NATIVE_API_LEVEL', 'ANDROID_TOOLCHAIN_NAME', 'RPI', 'RPI_ABI', 'ARM', 'ARM_ABI_FLAGS', 'WEB', 'EMSCRIPTEN_SHARE_DATA', 'EMSCRIPTEN_SHARE_JS', 'EMSCRIPTEN_WASM', 'EMSCRIPTEN_EMRUN_BROWSER', 'CMAKE_EXECUTABLE_SUFFIX_CXX'].each { |var|
     ARGV << "#{var}=\"#{ENV[var]}\"" if ENV[var] && !ARGV.find { |arg| /#{var}=/ =~ arg }
   }
   ARGV.each { |option|