Added ARM32 support
This commit is contained in:
1 parent
df792729ef
commit
1212cb9dbe
36 files changed
+2381
-783
No files matched your search
@@ -5,6 +5,16 @@
|
||||
# independent of the project-wide BUILD_SHARED_LIBS default.
|
||||
add_lib_module(hotreload_lib TYPE STATIC OUTPUT_NAME "hotreload")
|
||||
|
||||
# hot_reload::Context (Context.cpp) uses std::shared_mutex internally for its thread-safety
|
||||
# guarantee (see Context.hpp's own doc comment), and the MSVC branch of Demangle.cpp uses
|
||||
# std::mutex to serialize calls into DbgHelp. Both need pthread linked explicitly on Linux with
|
||||
# glibc older than 2.34 (newer glibc merged libpthread into libc itself, making this a no-op
|
||||
# there rather than a requirement) -- Threads::Threads is CMake's own portable way to ask for
|
||||
# whatever that platform actually needs. PUBLIC for the same reason as CMAKE_DL_LIBS below: for a
|
||||
# STATIC library this needs to reach whatever executable ultimately links hotreload_lib.
|
||||
find_package(Threads REQUIRED)
|
||||
target_link_libraries(hotreload_lib PUBLIC Threads::Threads)
|
||||
|
||||
if(NOT WIN32)
|
||||
# dlopen/dlclose/dlinfo (ModuleHandle.cpp). PUBLIC, not PRIVATE:
|
||||
# for a STATIC library this needs to reach whatever executable
|
||||
@@ -13,14 +23,25 @@ if(NOT WIN32)
|
||||
target_link_libraries(hotreload_lib PUBLIC ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
# Two different questions, easy to conflate: "does this compiler take
|
||||
# MSVC-style command-line syntax" (the MSVC variable: real cl.exe and
|
||||
# clang-cl only) versus "does it produce MSVC-ABI output -- MSVC name
|
||||
# mangling, the Microsoft CRT, DbgHelp as its demangler" (also true of a
|
||||
# GNU-style clang++ pointed at the MSVC target, which is what a plain
|
||||
# Windows LLVM install gives you: no /W4-style flags, but still MSVC
|
||||
# mangling). This condition is the second question, and CMake derives
|
||||
# CMAKE_CXX_SIMULATE_ID from whether the compiler defines _MSC_VER --
|
||||
# the very macro Demangle.cpp's own #if keys on, so the two stay in
|
||||
# agreement by construction rather than by someone remembering to update
|
||||
# both. (cmake/BuildHelpers.cmake's /W4 and the root CMakeLists.txt's
|
||||
# /MP /EHsc are the first question, correctly keyed on MSVC alone.)
|
||||
if(MSVC OR CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
|
||||
# UnDecorateSymbolName (Demangle.cpp) lives in dbghelp.lib, which --
|
||||
# unlike kernel32/user32 -- MSVC does not link by default. Without
|
||||
# this, the final link fails with an undefined symbol for it;
|
||||
# found via an actual Windows build of this library, not just
|
||||
# documentation. PUBLIC for the same reason as CMAKE_DL_LIBS above.
|
||||
# Guarded on MSVC (true for both real cl.exe and clang-cl, and
|
||||
# false for MinGW) rather than WIN32, since MinGW's build of
|
||||
# Guarded on the MSVC ABI rather than WIN32, since MinGW's build of
|
||||
# Demangle.cpp takes the __GNUC__/__cxa_demangle branch instead and
|
||||
# never needs dbghelp at all.
|
||||
target_link_libraries(hotreload_lib PUBLIC dbghelp)
|
||||
|
||||
Reference in new issue
Block a user