-
-
Notifications
You must be signed in to change notification settings - Fork 21.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Undefined reference/symbol for dynamically linked glslang module #44536
Comments
Possibly related: -KhronosGroup/glslang#2419 (glslang upstream) Additionally to the mentioned flags above, adding local cmakeargs=(
-DBUILD_SHARED_LIBS=ON
) to the glslang configure stage with this modified patch (changed STATIC to SHARED) glslang.patch
From d6e59ca08971c261f8297027d9c274f884c9d1e0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
Date: Mon, 12 Oct 2020 11:20:05 +0200
Subject: [PATCH 1/2] CMake: Make glslang-default-resource-limits STATIC
---
StandAlone/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index 8038c043..a2009165 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -31,7 +31,7 @@
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-add_library(glslang-default-resource-limits
+add_library(glslang-default-resource-limits SHARED
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp)
set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
--
2.30.0.383.g1c29ac3944.dirty
From 5868365b3a8636a468c4d12b20a221f5b7602de9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
Date: Mon, 12 Oct 2020 11:21:05 +0200
Subject: [PATCH 2/2] CMake: Use VERSION/SOVERSION for all shared libs
---
SPIRV/CMakeLists.txt | 14 ++++++++++----
StandAlone/CMakeLists.txt | 7 +++++--
hlsl/CMakeLists.txt | 7 +++++--
3 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index d699dadd..55d77c45 100644
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -69,8 +69,11 @@ set(SPVREMAP_HEADERS
doc.h)
add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
-set_property(TARGET SPIRV PROPERTY FOLDER glslang)
-set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
+set_target_properties(SPIRV PROPERTIES
+ FOLDER glslang
+ POSITION_INDEPENDENT_CODE ON
+ VERSION "${GLSLANG_VERSION}"
+ SOVERSION "${GLSLANG_VERSION_MAJOR}")
target_include_directories(SPIRV PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
@@ -79,8 +82,11 @@ glslang_add_build_info_dependency(SPIRV)
if (ENABLE_SPVREMAPPER)
add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
- set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
- set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON)
+ set_target_properties(SPVRemapper PROPERTIES
+ FOLDER glslang
+ POSITION_INDEPENDENT_CODE ON
+ VERSION "${GLSLANG_VERSION}"
+ SOVERSION "${GLSLANG_VERSION_MAJOR}")
endif()
if(WIN32 AND BUILD_SHARED_LIBS)
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index a2009165..6ff5e65b 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -34,8 +34,11 @@
add_library(glslang-default-resource-limits STATIC
${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp)
-set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang)
-set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON)
+set_target_properties(glslang-default-resource-limits PROPERTIES
+ FOLDER glslang
+ POSITION_INDEPENDENT_CODE ON
+ VERSION "${GLSLANG_VERSION}"
+ SOVERSION "${GLSLANG_VERSION_MAJOR}")
target_include_directories(glslang-default-resource-limits
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt
index 62faa195..a5472e7e 100644
--- a/hlsl/CMakeLists.txt
+++ b/hlsl/CMakeLists.txt
@@ -38,8 +38,11 @@
# projects that referenced this target.
add_library(HLSL ${LIB_TYPE} "stub.cpp")
-set_property(TARGET HLSL PROPERTY FOLDER hlsl)
-set_property(TARGET HLSL PROPERTY POSITION_INDEPENDENT_CODE ON)
+set_target_properties(HLSL PROPERTIES
+ FOLDER hlsl
+ POSITION_INDEPENDENT_CODE ON
+ VERSION "${GLSLANG_VERSION}"
+ SOVERSION "${GLSLANG_VERSION_MAJOR}")
if(WIN32 AND BUILD_SHARED_LIBS)
set_target_properties(HLSL PROPERTIES PREFIX "")
--
2.30.0.383.g1c29ac3944.dirty as a workaround fixes the compilation problem in Godot including linkage. |
Can you still reproduce this in the current |
Current master branch compiles fine now with |
Godot version:
OS/device including version:
Gentoo Linux
Issue description:
Compiling godot on gentoo with this ebuild: https://cgit.gentoo.org/repo/user/Drauthius.git/tree/dev-games/godot/godot-9999.ebuild?id=4034cbc02a58c457e29973bfad3e3b6f875e12dd
(flags below) doesn't work with dynamically linked external glslang.
However it compiles fine with these additional flags:
-L/usr/lib64/ -lglslang-default-resource-limits
Steps to reproduce:
/usr/include/StandAlone
(which is required by godot/glslang include file)/usr/lib64/libglslang-default-resource-limits.so
(dynamically compiled library)builtin_glslang=no
to scons command-L/usr/lib64/ -lglslang-default-resource-limits
, compilation fails with this error output:Output1:
Output2:
The text was updated successfully, but these errors were encountered: