Commit Graph
122 Commits
Author SHA1 Message Date
gingerBill 3300b2c35a Fix typo with linker section name problem 2026-10-05 18:48:25 +01:00
gingerBill 3b700c4656 Fix merge conflict with the same code 2026-10-05 18:47:24 +01:00
gingerBill 579bc065ea Merge branch 'master' into bill/llvm-backend-improvements 2026-10-05 18:40:31 +01:00
gingerBill 20b3fdcd58 Accept an explicit -linker:radlink on Windows again, write no BOM for the default radlink's response file, and only require link.exe for -linker:msvc 2026-10-05 18:27:58 +01:00
A1029384756 b7e607737a [windows-cross-compile] merge conflict 2026-10-05 08:34:06 -04:00
A1029384756 ba04d81d40 Merge remote-tracking branch 'upstream/master' into windows-cross-compile 2026-10-05 08:31:04 -04:00
Matthias Huerbe 2b82056df2 Fix -linker:radlink being rejected on Windows 2026-10-04 22:08:37 +02:00
gingerBill 18aead3ba1 Merge pull request #7729 from odin-lang/bill/llvm-backend-improvements
LLVM Backend Performance Improvements to Reduce Compile Times Part 2
2026-10-04 19:01:11 +01:00
Jeroen van Rijn be590a7c35 Make radlink default linker on Windows 2026-10-04 13:00:24 +02:00
gingerBill 1396a36bd3 Prefer /OPT:NOICF when using -debug on Windows to improve linking performance 2026-10-03 23:25:17 +01:00
gingerBill d31ed5ee5f Use a response file for MSVC-style linkers (link.exe and radlink.exe) when the command line exceeds the CreateProcess limit of 32KiB 2026-10-03 12:02:15 +01:00
A1029384756 2f7a2b5246 [windows-cross-compile] don't require lld when cross-arch windows 2026-09-28 16:22:17 -04:00
A1029384756 967736fe66 [windows-cross-compile] permissive name matching 2026-09-28 15:58:14 -04:00
A1029384756 d89d196695 [windows-cross-compile] windows build fixes 2026-09-28 11:39:35 -04:00
A1029384756 4e00758c64 [windows-cross-compile] improve strictness 2026-09-28 11:27:28 -04:00
A1029384756 8a62dfdf7f [windows-cross-compile] initial commit 2026-09-28 11:23:20 -04:00
gingerBill 085af86dac Remove ' from __odin_entry_point 2026-09-02 12:49:40 +01:00
Yawning Angel 9aa84b5e3a src: Use posix_spawnp instead of system() when invoking the linker
Thanks to Matteo on discord for pointing this out.
2026-08-31 04:40:04 +09:00
Michael Tesař 56c49287a6 Fix default linker timing label on non-Windows platforms 2026-08-06 22:08:28 +02:00
Jeroen van Rijn 6154d5c577 Further LLVM 14 support removal. 2026-06-30 21:16:48 +02:00
Jeroen van Rijn 47cf0d3f42 Merge pull request #6790 from A1029384756/linux_pie
[linux] change default settings to enable pie and full relro
2026-06-12 11:21:51 +02:00
A1029384756 43b057dfeb [linux] change default settings to enable pie and full relro 2026-06-06 21:23:26 -04:00
lualvsil 1b07372547 AArch64 assembly support for foreign import 2026-06-05 23:23:50 -03:00
Ignacy Koper d1915fa6f5 removed Haiku from compiler targets, and tests
Signed-off-by: Ignacy Koper <ignacy423@gmail.com>
2026-04-28 19:27:23 +02:00
Ignacy Koper 3e64a72bad removed Essence from supported targets
Signed-off-by: Ignacy Koper <ignacy423@gmail.com>
2026-04-27 11:10:48 +02:00
xfitgd b965e46d7c fixes Android build 2026-03-19 08:27:09 +09:00
gingerBill 2de214418c Fix LTO with debug info by passing -g 2026-03-15 21:29:54 +00:00
Andrés Botero 9df092759e Add support for other Android architectures 2026-03-11 15:37:37 -05:00
Jesse Meyer b8276065f9 Merge branch 'master' into lto-support 2026-02-03 20:52:52 -05:00
Jesse MeyerandClaude Opus 4.5 a0562dfd6e Fix lld-link LTO jobs flag syntax on Windows
lld-link doesn't recognize /lldltojobs:N as a standalone flag and
treats it as a file path. Use /opt:lldltojobs=N instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:16:20 -05:00
Jesse MeyerandClaude Opus 4.5 43ad4a1d9f Add ThinLTO support via -lto:thin and -lto:thin-files flags
- Add -lto:thin and -lto:thin-files CLI flags with validation
- Emit LLVM bitcode (.bc) instead of object files when LTO is enabled
- Pass -flto=thin and -flto-jobs to clang/lld linkers
- Guard linkage corrections to skip declarations without definitions
  (required for LTO where declarations appear across modules)
- Allow module-per-file with LTO even at higher optimization levels

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:16:20 -05:00
gingerBill f3daaa62fe Merge pull request #6220 from laytan/fix-lto-macos
fix LTO on MacOS
2026-02-02 18:46:18 +00:00
Laytan Laats afbbb829ea fix LTO on MacOS
If no `-minimum-os-version` is given, ignore the `override-module`
warnings. The user not using, `-minimum-os-version` opts you into linker
warnings about target versions.

If a `-minimum-os-version` is provided, normalize it to a full version
`11` to `11.0.0` for example. The linker seems to want that when doing
LTO.
2026-02-02 18:13:48 +01:00
Jeroen van Rijn 6a07f70c1c support -> supported 2026-02-02 17:57:50 +01:00
Jesse MeyerandClaude Opus 4.5 1a7f78b665 Add ThinLTO support via -lto:thin and -lto:thin-files flags
- Add -lto:thin and -lto:thin-files CLI flags with validation
- Emit LLVM bitcode (.bc) instead of object files when LTO is enabled
- Pass -flto=thin and -flto-jobs to clang/lld linkers
- Guard linkage corrections to skip declarations without definitions
  (required for LTO where declarations appear across modules)
- Allow module-per-file with LTO even at higher optimization levels

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 09:04:53 -05:00
gingerBill 7125782bd2 Support -linker:mold on FreeBSD and NetBSD; Remove -use-lld and -use-radlink 2026-01-30 10:46:35 +00:00
Fabrice 622fa818bc Adds static linking to non-windows platforms (#6057) 2026-01-13 20:56:40 +01:00
Wrath 6356cadfcc Fix orca linking path 2025-10-15 10:08:44 -04:00
gingerBill 5f76d6ce15 Support -linker:mold 2025-09-19 10:25:11 +01:00
Jon Lipstate 231ce2da59 windows i386 support 2025-08-29 12:41:38 -07:00
Harold Brenes bab4ce11fc Rename iOS subtarget to iPhone for consistency.
Add `ODIN_PLATFORM_SUBTARGET_IOS` builtin constant which evaluated to
`true` when the platform is `Darwin` and the subtarget it either `iPhone` or `iPhoneSimulator`
2025-07-14 21:55:28 -04:00
Harold Brenes 77e5c71414 Fix correct versioned target triplet for iphonesimulator subtarget
- Always set the `-m*-version-min` linker flag for non-macOS Darwin subtargets
2025-07-14 14:28:07 -04:00
Harold Brenes 070943aa98 Provide default minimum version for iOS and apply its target triplet.
- Fix incorrect clang_path override for iOS during link stage.
2025-07-14 12:59:25 -04:00
Harold Brenes 4d2d890b4c Fix accidental incorrect assignment 2025-07-13 20:29:54 -04:00
Harold Brenes 0e245fb40f Updated iOS/iPhoneSimulator build support 2025-07-13 20:17:30 -04:00
xenobas 0ed54d3557 fix: escape object files with single quotes during linking 2025-06-20 19:40:24 +01:00
Feoramund 1fc390146f Let -no-entry-point work for Windows DLLs
Fixes #4660
2025-06-10 08:54:28 -04:00
Jeroen van Rijn 405bf7cd55 Also clean up .dSym on Darwin 2025-06-01 15:59:38 +02:00
Jeroen van Rijn 0d0f311df1 Always provide /PDB option to linker if generating debug info.
radlink by default places the .PDB file in the working directory, even if /OUT says to place it elsewhere,
unlike link.exe, which places it next to the executable by default.

So, if compiling using -debug, we generate a PDB path even if -pdb-name wasn't used to override it.
2025-05-29 19:02:46 +02:00
Jeroen van Rijn 229c734820 Add comments to builtin.odin, documenting ODIN_* constants. (#5218)
And document constants not previously listed.
2025-05-26 18:58:59 +02:00