Fix build on CMake 2.8, and fix Web build
authorKai Ninomiya <kainino@chromium.org>
Mon, 23 Mar 2020 19:26:53 +0000 (12:26 -0700)
committerKai Ninomiya <kainino@chromium.org>
Mon, 23 Mar 2020 19:34:55 +0000 (12:34 -0700)
And suppress some warnings that are too verbose in Web builds.

CMakeLists.txt
glslang/Include/Types.h
glslang/MachineIndependent/localintermediate.h
glslang/OSDependent/Web/CMakeLists.txt

index a80cd5f..b4b0fac 100644 (file)
@@ -142,7 +142,10 @@ if(ENABLE_GLSLANG_JS)
         add_compile_options(/Os /GR-)
     else()
         add_compile_options(-Os -fno-exceptions)
-        add_link_options(-Os)
+        if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang")
+            add_compile_options(-Wno-unused-parameter)
+            add_compile_options(-Wno-unused-variable -Wno-unused-const-variable)
+        endif()
     endif()
 endif(ENABLE_GLSLANG_JS)
 
@@ -150,7 +153,7 @@ endif(ENABLE_GLSLANG_JS)
 if(${CMAKE_VERSION} VERSION_LESS 3.1)
     # CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
     # remove this block once CMake >=3.1 has fixated in the ecosystem
-    add_compile_options(-std=c++11)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 else()
     set(CMAKE_CXX_STANDARD 11)
     set(CMAKE_CXX_STANDARD_REQUIRED ON)
index 350b0e8..d4f5e1d 100644 (file)
@@ -945,7 +945,7 @@ public:
     bool hasAttachment() const { return false; }
     TLayoutFormat getFormat() const { return ElfNone; }
     bool isPushConstant() const { return false; }
-    bool isShaderRecordNV() const { return false; }
+    bool isShaderRecord() const { return false; }
     bool hasBufferReference() const { return false; }
     bool hasBufferReferenceAlign() const { return false; }
     bool isNonUniform() const { return false; }
index 25b8b78..240944e 100644 (file)
@@ -503,7 +503,7 @@ public:
     bool getAutoMapBindings() const { return false; }
     bool getAutoMapLocations() const { return false; }
     int getNumPushConstants() const { return 0; }
-    void addShaderRecordNVCount() { }
+    void addShaderRecordCount() { }
     void addTaskNVCount() { }
     void setUseVulkanMemoryModel() { }
     bool usingVulkanMemoryModel() const { return false; }
index 015d6d7..697b0b7 100644 (file)
@@ -3,27 +3,31 @@ if(ENABLE_GLSLANG_JS)
     glslang_set_link_args(glslang.js)
     target_link_libraries(glslang.js glslang SPIRV)
 
+    # Link library names that start with "-" are treated as link flags.
+    # "-Os" should be OK in MSVC; don't use /Os because CMake won't
+    # treat it as a link flag.
+    target_link_libraries(glslang.js "-Os")
+
     if(EMSCRIPTEN)
         set_target_properties(glslang.js PROPERTIES
             OUTPUT_NAME "glslang"
             SUFFIX ".js")
         em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js")
 
-        target_link_options(glslang.js PRIVATE "SHELL: -Os")
-        target_link_options(glslang.js PRIVATE "SHELL: --llvm-lto 1")
-        target_link_options(glslang.js PRIVATE "SHELL: --closure 1")
-        target_link_options(glslang.js PRIVATE "SHELL: -s MODULARIZE=1")
-        target_link_options(glslang.js PRIVATE "SHELL: -s ALLOW_MEMORY_GROWTH=1")
-        target_link_options(glslang.js PRIVATE "SHELL: -s FILESYSTEM=0")
+        target_link_libraries(glslang.js "--llvm-lto 1")
+        target_link_libraries(glslang.js "--closure 1")
+        target_link_libraries(glslang.js "-s MODULARIZE=1")
+        target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1")
+        target_link_libraries(glslang.js "-s FILESYSTEM=0")
 
         if(ENABLE_EMSCRIPTEN_SINGLE_FILE)
-            target_link_options(glslang.js PRIVATE "SHELL: -s SINGLE_FILE=1")
+            target_link_libraries(glslang.js "-s SINGLE_FILE=1")
         endif(ENABLE_EMSCRIPTEN_SINGLE_FILE)
 
         if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
-            target_link_options(glslang.js PRIVATE "SHELL: -s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0")
+            target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0")
         else()
-            target_link_options(glslang.js PRIVATE "SHELL: -s ENVIRONMENT=web,worker")
+            target_link_libraries(glslang.js "-s ENVIRONMENT=web,worker")
         endif()
 
         if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)