Merge pull request #2149 from kainino0x/web-fix-cmake2.8
Fix build on CMake 2.8, and fix Web build
This commit is contained in:
commit
393c564ae0
@ -142,7 +142,10 @@ if(ENABLE_GLSLANG_JS)
|
|||||||
add_compile_options(/Os /GR-)
|
add_compile_options(/Os /GR-)
|
||||||
else()
|
else()
|
||||||
add_compile_options(-Os -fno-exceptions)
|
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()
|
||||||
endif(ENABLE_GLSLANG_JS)
|
endif(ENABLE_GLSLANG_JS)
|
||||||
|
|
||||||
@ -150,7 +153,7 @@ endif(ENABLE_GLSLANG_JS)
|
|||||||
if(${CMAKE_VERSION} VERSION_LESS 3.1)
|
if(${CMAKE_VERSION} VERSION_LESS 3.1)
|
||||||
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
|
# CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD
|
||||||
# remove this block once CMake >=3.1 has fixated in the ecosystem
|
# 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()
|
else()
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
24
README.md
24
README.md
@ -209,27 +209,29 @@ With no arguments it builds the full grammar, and with a "web" argument,
|
|||||||
the web grammar subset (see more about the web subset in the next section).
|
the web grammar subset (see more about the web subset in the next section).
|
||||||
|
|
||||||
### Building to WASM for the Web and Node
|
### Building to WASM for the Web and Node
|
||||||
|
### Building a standalone JS/WASM library for the Web and Node
|
||||||
|
|
||||||
Use the steps in [Build Steps](#build-steps), with the following notes/exceptions:
|
Use the steps in [Build Steps](#build-steps), with the following notes/exceptions:
|
||||||
* For building the web subset of core glslang:
|
* `emsdk` needs to be present in your executable search path, *PATH* for
|
||||||
|
Bash-like environments:
|
||||||
|
+ [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
||||||
|
* Wrap cmake call: `emcmake cmake`
|
||||||
|
* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`.
|
||||||
|
* Set `-DENABLE_HLSL=OFF` if HLSL is not needed.
|
||||||
|
* For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`.
|
||||||
|
* For building a minimum-size web subset of core glslang:
|
||||||
|
+ turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL)
|
||||||
+ execute `updateGrammar web` from the glslang subdirectory
|
+ execute `updateGrammar web` from the glslang subdirectory
|
||||||
(or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument)
|
(or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument)
|
||||||
+ set `-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`
|
+ optionally, for GLSL compilation error messages, turn on
|
||||||
+ turn on `-DENABLE_GLSLANG_JS=ON`
|
`-DENABLE_GLSLANG_WEBMIN_DEVEL=ON`
|
||||||
+ optionally, for a minimum-size binary, turn on `-DENABLE_GLSLANG_WEBMIN=ON`
|
|
||||||
+ optionally, for GLSL compilation error messages, turn on `-DENABLE_GLSLANG_WEB_DEVEL=ON`
|
|
||||||
* `emsdk` needs to be present in your executable search path, *PATH* for
|
|
||||||
Bash-like environments
|
|
||||||
+ [Instructions located
|
|
||||||
here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install)
|
|
||||||
* Wrap cmake call: `emcmake cmake`
|
|
||||||
* To get a fully minimized build, make sure to use `brotli` to compress the .js
|
* To get a fully minimized build, make sure to use `brotli` to compress the .js
|
||||||
and .wasm files
|
and .wasm files
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_WEB=ON \
|
emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \
|
||||||
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
|
-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF ..
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -945,7 +945,7 @@ public:
|
|||||||
bool hasAttachment() const { return false; }
|
bool hasAttachment() const { return false; }
|
||||||
TLayoutFormat getFormat() const { return ElfNone; }
|
TLayoutFormat getFormat() const { return ElfNone; }
|
||||||
bool isPushConstant() const { return false; }
|
bool isPushConstant() const { return false; }
|
||||||
bool isShaderRecordNV() const { return false; }
|
bool isShaderRecord() const { return false; }
|
||||||
bool hasBufferReference() const { return false; }
|
bool hasBufferReference() const { return false; }
|
||||||
bool hasBufferReferenceAlign() const { return false; }
|
bool hasBufferReferenceAlign() const { return false; }
|
||||||
bool isNonUniform() const { return false; }
|
bool isNonUniform() const { return false; }
|
||||||
|
@ -503,7 +503,7 @@ public:
|
|||||||
bool getAutoMapBindings() const { return false; }
|
bool getAutoMapBindings() const { return false; }
|
||||||
bool getAutoMapLocations() const { return false; }
|
bool getAutoMapLocations() const { return false; }
|
||||||
int getNumPushConstants() const { return 0; }
|
int getNumPushConstants() const { return 0; }
|
||||||
void addShaderRecordNVCount() { }
|
void addShaderRecordCount() { }
|
||||||
void addTaskNVCount() { }
|
void addTaskNVCount() { }
|
||||||
void setUseVulkanMemoryModel() { }
|
void setUseVulkanMemoryModel() { }
|
||||||
bool usingVulkanMemoryModel() const { return false; }
|
bool usingVulkanMemoryModel() const { return false; }
|
||||||
|
@ -3,27 +3,31 @@ if(ENABLE_GLSLANG_JS)
|
|||||||
glslang_set_link_args(glslang.js)
|
glslang_set_link_args(glslang.js)
|
||||||
target_link_libraries(glslang.js glslang SPIRV)
|
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)
|
if(EMSCRIPTEN)
|
||||||
set_target_properties(glslang.js PROPERTIES
|
set_target_properties(glslang.js PROPERTIES
|
||||||
OUTPUT_NAME "glslang"
|
OUTPUT_NAME "glslang"
|
||||||
SUFFIX ".js")
|
SUFFIX ".js")
|
||||||
em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js")
|
em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js")
|
||||||
|
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -Os")
|
target_link_libraries(glslang.js "--llvm-lto 1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: --llvm-lto 1")
|
target_link_libraries(glslang.js "--closure 1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: --closure 1")
|
target_link_libraries(glslang.js "-s MODULARIZE=1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s MODULARIZE=1")
|
target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s ALLOW_MEMORY_GROWTH=1")
|
target_link_libraries(glslang.js "-s FILESYSTEM=0")
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s FILESYSTEM=0")
|
|
||||||
|
|
||||||
if(ENABLE_EMSCRIPTEN_SINGLE_FILE)
|
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)
|
endif(ENABLE_EMSCRIPTEN_SINGLE_FILE)
|
||||||
|
|
||||||
if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
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()
|
else()
|
||||||
target_link_options(glslang.js PRIVATE "SHELL: -s ENVIRONMENT=web,worker")
|
target_link_libraries(glslang.js "-s ENVIRONMENT=web,worker")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user