Skip to content
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

dependency on glibc 2.27 removed only on Linux x86/x64 architecture #1

Open
wants to merge 167 commits into
base: glibc-compatibility
Choose a base branch
from

Conversation

jobesu14
Copy link

@jobesu14 jobesu14 commented Jun 26, 2020

Compiling Taichi at this commit on Jetson Nano succeed but the linking phase failed with the following error:

/usr/bin/ld: libtaichi_core.so: No symbol version section for versioned symbol `powf@GLIBC_2.2.5'
/usr/bin/ld: final link failed: Nonrepresentable section on output
clang: error: linker command failed with exit code 1 (use -v to see invocation)
CMakeFiles/taichi_core.dir/build.make:3477: recipe for target 'libtaichi_core.so' failed
make[2]: *** [libtaichi_core.so] Error 1

On other part of the Taichi repo we can see that the following syntax has been used to selectively avoid dependencies on glibc 2.27
#if defined(TI_PLATFORM_LINUX) && defined(TI_ARCH_x64)

As the TI_PLATFORM_LINUX and TI_ARCH_x64 are defined in TaichiCXXFlags.cmake of the main taichi repository, I didnt want to use them to make sure the glfw repo still builds on its own.

Note: I am not sure if the proposed solution is good enough or if I should do this instead:
#if defined(__linux__) && !defined(__aarch64__)

elmindreda and others added 30 commits April 16, 2019 14:48
 - Migrate to Xenial
 - Use whitelisted PPA instead of hardcoded deb URL
 - Only add X11 dependencies for X11 builds
 - Only set sudo on matrix entries

(cherry picked from commit ff7d42a)
The monitor content scale was missing from the monitor properties
paragraph.

(cherry picked from commit be71147)
(cherry picked from commit 42a3e44)
GLFW does not require the X11 extension libraries to build or run, so
only fail if the headers are unavailable.

(cherry picked from commit 5c5963f)
This replaces the manual ad-hoc version variables we have used since
CMake 2.x (and GLFW 2.x lite).

(cherry picked from commit a255e7a)
This replaces the earlier manual logic for dependent CMake options with
the cmake_dependent_option function from CMakeDependentOption.

(cherry picked from commit cd290f7)
This was left over from an old workaround for Travis CI having an
ancient version of CMake pre-installed.

(cherry picked from commit 535491c)
(cherry picked from commit 0ccb690)
The X11_Xinput_* variables have been removed in recent CMake, leaving
only the X11_Xi_* set.

Related to glfw#1480.

(cherry picked from commit ceb16cb)
Related to glfw#1480.

(cherry picked from commit 57bf6b2)
(cherry picked from commit 700d1f2)
Most context related hint and attribute links had copypaste errors.
The GLFW_CONTEXT_RELEASE_BEHAVIOR and GLFW_CONTEXT_NO_ERROR attributes
did not have guide documentation.

(cherry picked from commit 3cf7645)
(cherry picked from commit feaa532)
Files built for Win32 must use C89 style declarations for compatibility
with VS 2010 and 2012, which are still supported by GLFW.

(cherry picked from commit 56aad76)
(cherry picked from commit 3fd4e79)
This should have been done when the WGL extension members were moved
from the context struct to the library struct.

(cherry picked from commit 22a6c02)
(cherry picked from commit 267e06a)
Disabled cursor mode interfered with some non-client actions.

(cherry picked from commit d0c3fa9)
(cherry picked from commit 84ec99b)
This will let higher-level projects override GLFW CMake options with
normal variables instead of having to use cache variables.

This means with CMake 3.13 and later you can now do:

set(GLFW_BUILD_TESTS ON)
add_subdirectory(path/to/glfw)

Instead of the more verbose:

set(GLFW_BUILD_TESTS ON CACHE BOOL "" FORCE)
add_subdirectory(path/to/glfw)

(cherry picked from commit 71e6ff3)
Thank you, Travis CI, for reminding me that one cannot disable a header
with inclusion guards if it doesn't exist.

(cherry picked from commit 537ea4c)
Fixes glfw#1477.

(cherry picked from commit d834f01)
Luflosi and others added 24 commits December 31, 2019 23:10
The `sizeof()` operator has the type `size_t`, so the `for` loop
iterating over it should use the same type.

Closes glfw#1614.

(cherry picked from commit 74a46df)
We can use C99 now and also we will need the event mask below.

(cherry picked from commit 8149a5f)
(cherry picked from commit bf292f0)
A window resize action that also resulting in the window being moved did
not emit any window positions events, as the position of real
ConfigureNotify events was ignored.  The real events use parent
coordinates instead of root coordinates so this adds parent tracking and
conditional translation.

Fixes glfw#1613.

(cherry picked from commit fe57e3c)
When the WM does not support EWMH or there is no WM running, GLFW falls
back to XSetInputFocus, which will emit BadMatch if the window is not
viewable, which will terminate the program.

Bug spotted on IRC.

(cherry picked from commit aa5e313)
This should have been initialized to the screen root, not None.  This
issue was introduced by fe57e3c.

Fixes glfw#1620.

(cherry picked from commit 9372ba9)
This is a fix relative to 3.3.1 but not 3.3.

Related to glfw#1620.
This adds optional support for the VK_EXT_metal_surface instance
extension.

Closes glfw#1619.

(cherry picked from commit c5cb4a2)
This mostly just follows the pattern established by X11.

Related to glfw#1619.

(cherry picked from commit 15d9180)
If the application is not linked against the Vulkan loader and relies on
a third-party loader library or glfwGetInstanceProcAddress, then our
call to dlopen will fail without a custom dyld environment variable.

This adds a fallback of looking in the directory of the main executable,
which matches the bundle structure recommended by the Vulkan SDK, making
that finally work out of the box for fully dynamic loading.

(cherry picked from commit 7da87aa)
The Win+V hotkey brings up a clipboard history IME that consumes the key
release.  This adds left and right Super to the modifier keys manually
polled for undetected release during event processing.

Fixes glfw#1622.

(cherry picked from commit 562c17d)
The synchronous key state seems to make more sense in context.

(cherry picked from commit a491b06)
Some synthetic key messages come with a scancode of zero, causing them
to be translate to GLFW_KEY_UNKNOWN.  This fills in the missing scancode
by translating the provided virtual key.

Rather than further complicate a single-use function, its body is merged
into the key message handler.

Fixes glfw#1623.

(cherry picked from commit 789a2bc)
(cherry picked from commit 190673e)
Merged from downstream kovidgoyal/glfw.  First of many.

Related to glfw#1602.

(cherry picked from commit a5e5b78)
Related to glfw#1602.

(cherry picked from commit 13479ed)
(cherry picked from commit 46c7c1c)
This removes most references to GLU, replaces the legacy CMake cache
variables for OpenGL with the modern namespaced target and switches to
$() for command substitution.

Fixes glfw#1580.

(cherry picked from commit d973acc)
@jobesu14
Copy link
Author

Actually as I have access to the Jetson Nano only, I cannot test on other ARM device like the Jetson TX2.
It might be worth trying on the TX2 before merging.

@jobesu14 jobesu14 marked this pull request as draft June 26, 2020 18:57
@jobesu14 jobesu14 marked this pull request as ready for review June 26, 2020 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.