Skip to content

Commit

Permalink
Link with -latomic
Browse files Browse the repository at this point in the history
  • Loading branch information
Desour authored and sfan5 committed Dec 25, 2023
1 parent 46c930c commit b6c7c5a
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/CMakeLists.txt
Expand Up @@ -314,6 +314,13 @@ else()
endif()
endif()

# On clang and gcc, some functionalities of std::atomic require -latomic.
# See <https://en.cppreference.com/w/cpp/atomic/atomic#Notes>.
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set(PLATFORM_LIBS ${PLATFORM_LIBS} atomic)
endif()

check_include_files(endian.h HAVE_ENDIAN_H)

configure_file(
Expand Down

1 comment on commit b6c7c5a

@superfloh247
Copy link
Contributor

@superfloh247 superfloh247 commented on b6c7c5a Dec 25, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this breaks linking on MacOS 14.2.1 with Clang 17 (brew)

/opt/homebrew/opt/llvm/bin/clang++ -fcxx-exceptions -flto=full -I/opt/homebrew/opt/llvm/include -O3 -march=native -mtune=native -mllvm -polly -DNDEBUG -Wall -Wextra -Wno-unused-parameter  -pipe -funroll-loops -O3 -fomit-frame-pointer -fno-math-errno -fno-trapping-math -fno-signed-zeros -g -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk -mmacosx-version-min=14.0 -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/minetest.dir/client/activeobjectmgr.cpp.o CMakeFiles/minetest.dir/client/camera.cpp.o CMakeFiles/minetest.dir/client/client.cpp.o CMakeFiles/minetest.dir/client/clientenvironment.cpp.o CMakeFiles/minetest.dir/client/clientlauncher.cpp.o CMakeFiles/minetest.dir/client/clientmap.cpp.o CMakeFiles/minetest.dir/client/clientmedia.cpp.o CMakeFiles/minetest.dir/client/clientobject.cpp.o CMakeFiles/minetest.dir/client/clouds.cpp.o CMakeFiles/minetest.dir/client/content_cao.cpp.o CMakeFiles/minetest.dir/client/content_cso.cpp.o CMakeFiles/minetest.dir/client/content_mapblock.cpp.o CMakeFiles/minetest.dir/client/filecache.cpp.o CMakeFiles/minetest.dir/client/fontengine.cpp.o CMakeFiles/minetest.dir/client/game.cpp.o CMakeFiles/minetest.dir/client/gameui.cpp.o CMakeFiles/minetest.dir/client/guiscalingfilter.cpp.o CMakeFiles/minetest.dir/client/hud.cpp.o CMakeFiles/minetest.dir/client/imagefilters.cpp.o CMakeFiles/minetest.dir/client/inputhandler.cpp.o CMakeFiles/minetest.dir/client/joystick_controller.cpp.o CMakeFiles/minetest.dir/client/keycode.cpp.o CMakeFiles/minetest.dir/client/localplayer.cpp.o CMakeFiles/minetest.dir/client/mapblock_mesh.cpp.o CMakeFiles/minetest.dir/client/mesh.cpp.o CMakeFiles/minetest.dir/client/mesh_generator_thread.cpp.o CMakeFiles/minetest.dir/client/meshgen/collector.cpp.o CMakeFiles/minetest.dir/client/minimap.cpp.o CMakeFiles/minetest.dir/client/particles.cpp.o CMakeFiles/minetest.dir/client/render/anaglyph.cpp.o CMakeFiles/minetest.dir/client/render/core.cpp.o CMakeFiles/minetest.dir/client/render/factory.cpp.o CMakeFiles/minetest.dir/client/render/interlaced.cpp.o CMakeFiles/minetest.dir/client/render/pipeline.cpp.o CMakeFiles/minetest.dir/client/render/plain.cpp.o CMakeFiles/minetest.dir/client/render/secondstage.cpp.o CMakeFiles/minetest.dir/client/render/sidebyside.cpp.o CMakeFiles/minetest.dir/client/render/stereo.cpp.o CMakeFiles/minetest.dir/client/renderingengine.cpp.o CMakeFiles/minetest.dir/client/shader.cpp.o CMakeFiles/minetest.dir/client/shadows/dynamicshadows.cpp.o CMakeFiles/minetest.dir/client/shadows/dynamicshadowsrender.cpp.o CMakeFiles/minetest.dir/client/shadows/shadowsScreenQuad.cpp.o CMakeFiles/minetest.dir/client/shadows/shadowsshadercallbacks.cpp.o CMakeFiles/minetest.dir/client/sky.cpp.o CMakeFiles/minetest.dir/client/sound.cpp.o CMakeFiles/minetest.dir/client/sound/al_helpers.cpp.o CMakeFiles/minetest.dir/client/sound/ogg_file.cpp.o CMakeFiles/minetest.dir/client/sound/playing_sound.cpp.o CMakeFiles/minetest.dir/client/sound/proxy_sound_manager.cpp.o CMakeFiles/minetest.dir/client/sound/sound_data.cpp.o CMakeFiles/minetest.dir/client/sound/sound_manager.cpp.o CMakeFiles/minetest.dir/client/sound/sound_openal.cpp.o CMakeFiles/minetest.dir/client/sound/sound_singleton.cpp.o CMakeFiles/minetest.dir/client/tile.cpp.o CMakeFiles/minetest.dir/client/wieldmesh.cpp.o CMakeFiles/minetest.dir/content/content.cpp.o CMakeFiles/minetest.dir/content/mod_configuration.cpp.o CMakeFiles/minetest.dir/content/mods.cpp.o CMakeFiles/minetest.dir/content/subgames.cpp.o "CMakeFiles/minetest.dir/database/database-dummy.cpp.o" "CMakeFiles/minetest.dir/database/database-files.cpp.o" "CMakeFiles/minetest.dir/database/database-leveldb.cpp.o" "CMakeFiles/minetest.dir/database/database-postgresql.cpp.o" "CMakeFiles/minetest.dir/database/database-redis.cpp.o" "CMakeFiles/minetest.dir/database/database-sqlite3.cpp.o" CMakeFiles/minetest.dir/database/database.cpp.o CMakeFiles/minetest.dir/gui/guiAnimatedImage.cpp.o CMakeFiles/minetest.dir/gui/guiBackgroundImage.cpp.o CMakeFiles/minetest.dir/gui/guiBox.cpp.o CMakeFiles/minetest.dir/gui/guiButton.cpp.o CMakeFiles/minetest.dir/gui/guiButtonImage.cpp.o CMakeFiles/minetest.dir/gui/guiButtonItemImage.cpp.o CMakeFiles/minetest.dir/gui/guiChatConsole.cpp.o CMakeFiles/minetest.dir/gui/guiEditBox.cpp.o CMakeFiles/minetest.dir/gui/guiEditBoxWithScrollbar.cpp.o CMakeFiles/minetest.dir/gui/guiEngine.cpp.o CMakeFiles/minetest.dir/gui/guiFormSpecMenu.cpp.o CMakeFiles/minetest.dir/gui/guiHyperText.cpp.o CMakeFiles/minetest.dir/gui/guiInventoryList.cpp.o CMakeFiles/minetest.dir/gui/guiItemImage.cpp.o CMakeFiles/minetest.dir/gui/guiKeyChangeMenu.cpp.o CMakeFiles/minetest.dir/gui/guiPasswordChange.cpp.o CMakeFiles/minetest.dir/gui/guiPathSelectMenu.cpp.o CMakeFiles/minetest.dir/gui/guiScene.cpp.o CMakeFiles/minetest.dir/gui/guiScrollBar.cpp.o CMakeFiles/minetest.dir/gui/guiScrollContainer.cpp.o CMakeFiles/minetest.dir/gui/guiSkin.cpp.o CMakeFiles/minetest.dir/gui/guiTable.cpp.o CMakeFiles/minetest.dir/gui/guiVolumeChange.cpp.o CMakeFiles/minetest.dir/gui/modalMenu.cpp.o CMakeFiles/minetest.dir/gui/profilergraph.cpp.o CMakeFiles/minetest.dir/irrlicht_changes/CGUITTFont.cpp.o CMakeFiles/minetest.dir/irrlicht_changes/static_text.cpp.o CMakeFiles/minetest.dir/mapgen/cavegen.cpp.o CMakeFiles/minetest.dir/mapgen/dungeongen.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_carpathian.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_flat.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_fractal.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_singlenode.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_v5.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_v6.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_v7.cpp.o CMakeFiles/minetest.dir/mapgen/mapgen_valleys.cpp.o CMakeFiles/minetest.dir/mapgen/mg_biome.cpp.o CMakeFiles/minetest.dir/mapgen/mg_decoration.cpp.o CMakeFiles/minetest.dir/mapgen/mg_ore.cpp.o CMakeFiles/minetest.dir/mapgen/mg_schematic.cpp.o CMakeFiles/minetest.dir/mapgen/treegen.cpp.o CMakeFiles/minetest.dir/network/address.cpp.o CMakeFiles/minetest.dir/network/clientopcodes.cpp.o CMakeFiles/minetest.dir/network/clientpackethandler.cpp.o CMakeFiles/minetest.dir/network/connection.cpp.o CMakeFiles/minetest.dir/network/connectionthreads.cpp.o CMakeFiles/minetest.dir/network/networkpacket.cpp.o CMakeFiles/minetest.dir/network/serveropcodes.cpp.o CMakeFiles/minetest.dir/network/serverpackethandler.cpp.o CMakeFiles/minetest.dir/network/socket.cpp.o CMakeFiles/minetest.dir/script/common/c_content.cpp.o CMakeFiles/minetest.dir/script/common/c_converter.cpp.o CMakeFiles/minetest.dir/script/common/c_internal.cpp.o CMakeFiles/minetest.dir/script/common/c_packer.cpp.o CMakeFiles/minetest.dir/script/common/c_types.cpp.o CMakeFiles/minetest.dir/script/common/helper.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_async.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_base.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_client.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_entity.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_env.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_inventory.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_item.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_mainmenu.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_modchannels.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_node.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_nodemeta.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_player.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_security.cpp.o CMakeFiles/minetest.dir/script/cpp_api/s_server.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_areastore.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_auth.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_base.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_camera.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_client.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_client_sound.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_craft.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_env.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_http.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_inventory.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_item.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_itemstackmeta.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_localplayer.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_mainmenu.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_mainmenu_sound.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_mapgen.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_metadata.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_minimap.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_modchannels.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_nodemeta.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_nodetimer.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_noise.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_object.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_particles.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_particles_local.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_playermeta.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_rollback.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_server.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_settings.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_storage.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_util.cpp.o CMakeFiles/minetest.dir/script/lua_api/l_vmanip.cpp.o CMakeFiles/minetest.dir/script/scripting_client.cpp.o CMakeFiles/minetest.dir/script/scripting_mainmenu.cpp.o CMakeFiles/minetest.dir/script/scripting_server.cpp.o CMakeFiles/minetest.dir/server/activeobjectmgr.cpp.o CMakeFiles/minetest.dir/server/luaentity_sao.cpp.o CMakeFiles/minetest.dir/server/mods.cpp.o CMakeFiles/minetest.dir/server/player_sao.cpp.o CMakeFiles/minetest.dir/server/serveractiveobject.cpp.o CMakeFiles/minetest.dir/server/serverinventorymgr.cpp.o CMakeFiles/minetest.dir/server/unit_sao.cpp.o CMakeFiles/minetest.dir/threading/event.cpp.o CMakeFiles/minetest.dir/threading/semaphore.cpp.o CMakeFiles/minetest.dir/threading/thread.cpp.o CMakeFiles/minetest.dir/util/areastore.cpp.o CMakeFiles/minetest.dir/util/auth.cpp.o CMakeFiles/minetest.dir/util/base64.cpp.o CMakeFiles/minetest.dir/util/directiontables.cpp.o CMakeFiles/minetest.dir/util/enriched_string.cpp.o CMakeFiles/minetest.dir/util/ieee_float.cpp.o CMakeFiles/minetest.dir/util/metricsbackend.cpp.o CMakeFiles/minetest.dir/util/numeric.cpp.o CMakeFiles/minetest.dir/util/png.cpp.o CMakeFiles/minetest.dir/util/pointedthing.cpp.o CMakeFiles/minetest.dir/util/quicktune.cpp.o CMakeFiles/minetest.dir/util/serialize.cpp.o CMakeFiles/minetest.dir/util/sha1.cpp.o CMakeFiles/minetest.dir/util/sha256.c.o CMakeFiles/minetest.dir/util/srp.cpp.o CMakeFiles/minetest.dir/util/string.cpp.o CMakeFiles/minetest.dir/util/timetaker.cpp.o CMakeFiles/minetest.dir/ban.cpp.o CMakeFiles/minetest.dir/chat.cpp.o CMakeFiles/minetest.dir/clientiface.cpp.o CMakeFiles/minetest.dir/collision.cpp.o CMakeFiles/minetest.dir/content_mapnode.cpp.o CMakeFiles/minetest.dir/content_nodemeta.cpp.o CMakeFiles/minetest.dir/convert_json.cpp.o CMakeFiles/minetest.dir/craftdef.cpp.o CMakeFiles/minetest.dir/debug.cpp.o CMakeFiles/minetest.dir/defaultsettings.cpp.o CMakeFiles/minetest.dir/emerge.cpp.o CMakeFiles/minetest.dir/environment.cpp.o CMakeFiles/minetest.dir/face_position_cache.cpp.o CMakeFiles/minetest.dir/filesys.cpp.o CMakeFiles/minetest.dir/gettext.cpp.o CMakeFiles/minetest.dir/httpfetch.cpp.o CMakeFiles/minetest.dir/hud.cpp.o CMakeFiles/minetest.dir/inventory.cpp.o CMakeFiles/minetest.dir/inventorymanager.cpp.o CMakeFiles/minetest.dir/itemdef.cpp.o CMakeFiles/minetest.dir/itemstackmetadata.cpp.o CMakeFiles/minetest.dir/light.cpp.o CMakeFiles/minetest.dir/lighting.cpp.o CMakeFiles/minetest.dir/log.cpp.o CMakeFiles/minetest.dir/main.cpp.o CMakeFiles/minetest.dir/map.cpp.o CMakeFiles/minetest.dir/map_settings_manager.cpp.o CMakeFiles/minetest.dir/mapblock.cpp.o CMakeFiles/minetest.dir/mapnode.cpp.o CMakeFiles/minetest.dir/mapsector.cpp.o CMakeFiles/minetest.dir/metadata.cpp.o CMakeFiles/minetest.dir/modchannels.cpp.o CMakeFiles/minetest.dir/nameidmapping.cpp.o CMakeFiles/minetest.dir/nodedef.cpp.o CMakeFiles/minetest.dir/nodemetadata.cpp.o CMakeFiles/minetest.dir/nodetimer.cpp.o CMakeFiles/minetest.dir/noise.cpp.o CMakeFiles/minetest.dir/objdef.cpp.o CMakeFiles/minetest.dir/object_properties.cpp.o CMakeFiles/minetest.dir/particles.cpp.o CMakeFiles/minetest.dir/pathfinder.cpp.o CMakeFiles/minetest.dir/player.cpp.o CMakeFiles/minetest.dir/porting.cpp.o CMakeFiles/minetest.dir/profiler.cpp.o CMakeFiles/minetest.dir/raycast.cpp.o CMakeFiles/minetest.dir/reflowscan.cpp.o CMakeFiles/minetest.dir/remoteplayer.cpp.o CMakeFiles/minetest.dir/rollback.cpp.o CMakeFiles/minetest.dir/rollback_interface.cpp.o CMakeFiles/minetest.dir/serialization.cpp.o CMakeFiles/minetest.dir/server.cpp.o CMakeFiles/minetest.dir/serverenvironment.cpp.o CMakeFiles/minetest.dir/serverlist.cpp.o CMakeFiles/minetest.dir/settings.cpp.o CMakeFiles/minetest.dir/staticobject.cpp.o CMakeFiles/minetest.dir/terminal_chat_console.cpp.o CMakeFiles/minetest.dir/texture_override.cpp.o CMakeFiles/minetest.dir/tileanimation.cpp.o CMakeFiles/minetest.dir/tool.cpp.o CMakeFiles/minetest.dir/translation.cpp.o CMakeFiles/minetest.dir/version.cpp.o CMakeFiles/minetest.dir/voxel.cpp.o CMakeFiles/minetest.dir/voxelalgorithms.cpp.o -o /Users/lindner/VSCode/minetest/bin/minetest  /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libz.tbd ../lib/irrlichtmt/lib/OSX/libIrrlichtMt.a /opt/homebrew/lib/libzstd.dylib -framework OpenAL /opt/homebrew/lib/libvorbisfile.dylib /opt/homebrew/lib/libvorbis.dylib /opt/homebrew/lib/libogg.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libsqlite3.tbd /opt/homebrew/lib/libluajit-5.1.dylib /opt/homebrew/lib/libgmp.dylib /opt/homebrew/lib/libjsoncpp.dylib /opt/homebrew/lib/libfreetype.dylib -framework CoreFoundation /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libiconv.tbd -latomic /opt/homebrew/lib/libintl.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libcurl.tbd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libcurses.tbd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libform.tbd /opt/homebrew/lib/libhiredis.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/usr/lib/libz.tbd /opt/homebrew/lib/libjpeg.dylib /opt/homebrew/lib/libpng.dylib -framework OpenGL -framework Cocoa -framework IOKit 
clang++: warning: argument unused during compilation: '-mllvm -polly' [-Wunused-command-line-argument]
ld: library 'atomic' not found
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [/Users/lindner/VSCode/minetest/bin/minetest] Error 1
make[1]: *** [src/CMakeFiles/minetest.dir/all] Error 2
make: *** [all] Error 2

I had no troubles building before this patch

maybe this hints in the right direction nodejs/node#30093

Please sign in to comment.