-
-
Notifications
You must be signed in to change notification settings - Fork 2.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
Linux 2025 #8255
base: master
Are you sure you want to change the base?
Linux 2025 #8255
Conversation
Removed Gold LD for the moment regarding: |
Makefile linux:
Really need to get the cmake stuff in soon. I'd re-added gold ld again with command check.
|
Latest libraries now has Linux arm64: Linux 64 |
Weird. Disabling caches / updating checkout to 4.2.2 |
Linux empty example is compiling just not addonsExample |
@ofTheo yeah the library subpath was being used for the targetarch name in for the makefile in the directory! So with linux/64 it was bugging out. I thought it was line spacing tab stuff. Makefiles are so sensitive though wow. It looks like maybe the streamer issue just reported is a spaces instead of tabs issue if they had run the code.
Linking Kiss is missing! Sweet looking into |
ha yeah!!
Spaces vs Tabs was a whole new nightmare - an editor that shows the difference is key there.
|
CompleteUbuntu Ubuntu |
@@ -80,7 +80,7 @@ linux: | |||
ADDON_LIBS_EXCLUDE = libs/assimp | |||
ADDON_INCLUDES_EXCLUDE = libs/assimp/% | |||
|
|||
linux64: | |||
linux/64: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will the old linux64
and linuxarmv6l
still work for PG etc?
@@ -68,21 +68,21 @@ ios: | |||
ADDON_LIBS = libs/svgtiny/lib/ios/svgtiny.a | |||
ADDON_LIBS += libs/libxml2/lib/ios/xml2.a | |||
|
|||
linux64: | |||
ADDON_LIBS = libs/svgtiny/lib/linux64/libsvgtiny.a | |||
ADDON_LIBS += libs/libxml2/lib/linux64/libxml2.a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Likewise will libs still get picked up in older addons from lib/linux64
endif | ||
|
||
# if not defined, construct the default PLATFORM_LIB_SUBPATH | ||
ifndef PLATFORM_LIB_SUBPATH | ||
# determine from the arch | ||
ifeq ($(PLATFORM_OS),Linux) | ||
ifeq ($(PLATFORM_ARCH),x86_64) | ||
PLATFORM_LIB_SUBPATH=linux64 | ||
PLATFORM_LIB_SUBPATH=linux/64 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks like older projects with addons in lib/linux64/ might not work based on this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes this does break older addons, something like this is required
# Separate target and arch with a slash in addon_config.mk (linux64 -> linux/64)
find $OF_ROOT/addons -name addon_config.mk -exec sed -i 's/\(linux\)\([a-zA-Z0-9]\+\):/\1\/\2:/g' {} \;
Good idea although make file location is a very minimal issue compared to all the this script will automatically replace issue strings in Called via: In the future this can also add in std:: replacements. Just requires stop and prompt by user since they need to back up files. |
Upgrade script are always handy, but I think we have to be able to support addons that would be fully compliant up until this PR is merged. I know its a pain to support two names, but I'd either suggest leaving the current system of linux64, linuxarmv6l or, making sure both linux/64 and linux64 libs get picked up by make files / PG etc. This feels like the amount it will break, is not worth the conceptual tidiness of having the subfolder approach. Curious what others think, but I am def nervous as it's the osx / macOS issue again, but with even more platforms. |
I think the optional subfolders will complicate the regex needed by makefiles. |
A couple of questions for this PR to get merged:
I saw you mentioned:
How was that benchmarked? |
subfolders are required - linux has two targets aarch64 and 64 by default the developer needs to build for these now. ARM64 is the standard going forward. i.e. all Macs running parallels/vm run arm64 linux Not having the subfolders caused the issue as historically we always had subfolders for platforms
For GCC version, if you are thinking for nightly you can set to GCC13 or a minimal one and set download for that. We can restrict GCC deploys to the majors though:
Bench marks of 400% maybe inflated but based on analysis of some benchmarks of GCC6 vs GCC11 -> 40% increase with a 5-10% optimisation per version. a closer analysis suggests about a 100% increase in performance for x64. 400% for ARM64 linux vs running in EMU mode x64 binaries, however that is actually 800%
However for arm64 with SIMD / Neon this is indeed about a 400% increase with GCC
Basically newer GCC's are closer to Clang performance but we should look at a Clang compiler for Linux for 13 as well after CMake toolchains implemented. Not going to do a clang makefile system changes |
Or we can just force apt install of GCC14 for the user ? seems like its worth it and only ship GCC14 |
@danoli3 in terms of the GCC stuff, one of our goals is to reduce our overall project complexity so I think simplifying things down to one GCC or maybe two GCCs would be the way to go. We could have the base GCC eg GCC 10 and then latest which could be 14 or whatever is latest. Forcing latest wouldn't be a good approach as 14 is not easily available on 22.04 and installing newer GCC on older machines is non-trivial. |
Rpi disabled while fixed
makefiles fixed remove i386
this is the same idea as MSVC 2019 and MSVC 2022 as different GCC's link to different libstdc++ sub versions and compatibility across. It should be tested at later lengths archlinux is at gcc14 |
* commit '5630d2034d835e81225a225355e97f4144b21179': Restore target build dir behavior for Xcode. Closes openframeworks#8321 (openframeworks#8340) of script updates (openframeworks#8339) _OBJC_CLASS_$_AVFoundationVideoPlayer fix (openframeworks#8337) # Conflicts: # scripts/of.sh
suggest not merging until after 0.12.1 as soon as we get 0.12.1 out we can merge and then make sure new PG tools all work well with this. |
Linux