User:Sam/Drafts/macOS Clang
From Gentoo Wiki
< User:Sam
Jump to:navigation
Jump to:search
Notes on hackily using a GCC-bootstrapped macOS Prefix kind of work using Clang.
Installing Clang
Bootstrap
Mask an unusable flag:
FILE
${EPREFIX}/etc/portage/package.use.mask
# sys-devel/binutils is masked on Darwin sys-devel/llvm binutils-plugin
The system (not Prefix) Clang is used to bootstrap LLVM itself:
user $
CC=/usr/bin/clang CXX=/usr/bin/clang++ emerge -v1O sys-devel/llvm
Then Clang:
user $
CC=/usr/bin/clang CXX=/usr/bin/clang++ emerge -v1O sys-devel/clang
Add clang and friends to PATH:
user $
. ${EPREFIX}/etc/profile
Test it out
Do a test run:
FILE
${EPREFIX}/etc/portage/profile/package.use.mask
app-editors/emacs -aqua
user $
CC=clang CXX=clang++ USE=aqua emerge -v1 emacs
If that works, create an environment:
FILE
${EPREFIX}/etc/portage/env/clang
CC=clang CXX=clang++ # Needed to avoid errors with ld: # "ld: unknown option: -platform_version" LDFLAGS="${LDFLAGS} -mlinker-version=305"
And configure say, Emacs to use it:
FILE
${EPREFIX}/etc/portage/package.env/clang
app-editors/emacs clang
At this point, one should have a working Emacs with Aqua support!
user $
emacs
Building Clang with itself
Enhance the environment created earlier:
FILE
${EPREFIX}/etc/portage/env/clang
AR=llvm-ar CC=clang CXX=clang++ NM=llvm-nm RANLIB=llvm-ranlib READELF=llvm-readelf STRIP=llvm-strip OBJDUMP=llvm-objdump OBJCOPY=llvm-objcopy LDFLAGS="${LDFLAGS} -mlinker-version=305"
See Also
- Prefix/Darwin — brings the power of Gentoo to Darwin (macOS/OS X) based systems, similar to pkgsrc, macports, and homebrew.