mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-11 05:25:32 +03:00
Toolchain: Allow building using CMake on macOS
This commit is contained in:
parent
617655db0d
commit
a1e1aa96fb
Notes:
sideshowbarker
2024-07-19 04:53:04 +09:00
Author: https://github.com/Pagghiu 🔰 Commit: https://github.com/SerenityOS/serenity/commit/a1e1aa96fbd Pull-request: https://github.com/SerenityOS/serenity/pull/2750 Reviewed-by: https://github.com/ADKaster Reviewed-by: https://github.com/bugaevc
@ -126,6 +126,22 @@ set(CMAKE_RANLIB ${TOOLCHAIN_PREFIX}ranlib)
|
|||||||
set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}strip)
|
set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}strip)
|
||||||
set(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
|
set(CMAKE_AR ${TOOLCHAIN_PREFIX}ar)
|
||||||
|
|
||||||
|
foreach(lang ASM C CXX OBJC OBJCXX)
|
||||||
|
unset(CMAKE_${lang}_OSX_COMPATIBILITY_VERSION_FLAG)
|
||||||
|
unset(CMAKE_${lang}_OSX_CURRENT_VERSION_FLAG)
|
||||||
|
unset(CMAKE_${lang}_LINK_FLAGS)
|
||||||
|
unset(CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS)
|
||||||
|
unset(CMAKE_SHARED_MODULE_CREATE_${lang}_FLAGS)
|
||||||
|
unset(CMAKE_SHARED_MODULE_LOADER_${lang}_FLAG )
|
||||||
|
unset(CMAKE_${lang}_OSX_DEPLOYMENT_TARGET_FLAG)
|
||||||
|
unset(CMAKE_${lang}_SYSROOT_FLAG)
|
||||||
|
unset(CMAKE_SHARED_LIBRARY_SONAME_${lang}_FLAG)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(CMAKE_INSTALL_NAME_TOOL "true")
|
||||||
|
set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
|
||||||
|
set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-shared")
|
||||||
|
|
||||||
#FIXME: -fstack-protector
|
#FIXME: -fstack-protector
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -Wno-sized-deallocation -fno-sized-deallocation -fno-exceptions -fno-rtti -Wno-address-of-packed-member -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough -Wno-nonnull-compare -Wno-deprecated-copy -Wno-expansion-to-defined")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os -Wno-sized-deallocation -fno-sized-deallocation -fno-exceptions -fno-rtti -Wno-address-of-packed-member -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough -Wno-nonnull-compare -Wno-deprecated-copy -Wno-expansion-to-defined")
|
||||||
|
@ -54,10 +54,15 @@ set(ELF_SOURCES ${ELF_SOURCES} ../LibELF/Arch/i386/plt_trampoline.S)
|
|||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSERENITY_LIBC_BUILD")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSERENITY_LIBC_BUILD")
|
||||||
|
|
||||||
|
find_program(INSTALL_COMMAND ginstall)
|
||||||
|
if(NOT INSTALL_COMMAND)
|
||||||
|
set(INSTALL_COMMAND install)
|
||||||
|
endif()
|
||||||
|
|
||||||
add_library(crt0 STATIC crt0.cpp)
|
add_library(crt0 STATIC crt0.cpp)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET crt0
|
TARGET crt0
|
||||||
COMMAND install -D $<TARGET_OBJECTS:crt0> ${CMAKE_INSTALL_PREFIX}/usr/lib/crt0.o
|
COMMAND ${INSTALL_COMMAND} -D $<TARGET_OBJECTS:crt0> ${CMAKE_INSTALL_PREFIX}/usr/lib/crt0.o
|
||||||
)
|
)
|
||||||
|
|
||||||
set(SOURCES ${LIBC_SOURCES} ${AK_SOURCES} ${ELF_SOURCES})
|
set(SOURCES ${LIBC_SOURCES} ${AK_SOURCES} ${ELF_SOURCES})
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
shopt -s globstar
|
|
||||||
# This file will need to be run in bash, for now.
|
# This file will need to be run in bash, for now.
|
||||||
|
|
||||||
|
|
||||||
@ -24,6 +23,12 @@ NPROC="nproc"
|
|||||||
# It seems that Travis starts having trouble at 35 entries, so I think this is a good amount.
|
# It seems that Travis starts having trouble at 35 entries, so I think this is a good amount.
|
||||||
KEEP_CACHE_COUNT=8
|
KEEP_CACHE_COUNT=8
|
||||||
|
|
||||||
|
if command -v ginstall &>/dev/null; then
|
||||||
|
INSTALL=ginstall
|
||||||
|
else
|
||||||
|
INSTALL=install
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$(uname -s)" = "OpenBSD" ]; then
|
if [ "$(uname -s)" = "OpenBSD" ]; then
|
||||||
MAKE=gmake
|
MAKE=gmake
|
||||||
MD5SUM="md5 -q"
|
MD5SUM="md5 -q"
|
||||||
@ -230,11 +235,12 @@ pushd "$DIR/Build/"
|
|||||||
pushd "$BUILD"
|
pushd "$BUILD"
|
||||||
CXXFLAGS="-DBUILDING_SERENITY_TOOLCHAIN" cmake ..
|
CXXFLAGS="-DBUILDING_SERENITY_TOOLCHAIN" cmake ..
|
||||||
cmake --build . --target LibC
|
cmake --build . --target LibC
|
||||||
install -D Libraries/LibC/libc.a Libraries/LibM/libm.a Root/usr/lib/
|
"$INSTALL" -D Libraries/LibC/libc.a Libraries/LibM/libm.a Root/usr/lib/
|
||||||
SRC_ROOT=$(realpath "$DIR"/..)
|
SRC_ROOT=$(realpath "$DIR"/..)
|
||||||
for header in "$SRC_ROOT"/Libraries/Lib{C,M}/**/*.h; do
|
FILES=$(find "$SRC_ROOT"/Libraries/LibC "$SRC_ROOT"/Libraries/LibM -name '*.h' -print)
|
||||||
|
for header in $FILES; do
|
||||||
target=$(echo "$header" | sed -e "s@$SRC_ROOT/Libraries/LibC@@" -e "s@$SRC_ROOT/Libraries/LibM@@")
|
target=$(echo "$header" | sed -e "s@$SRC_ROOT/Libraries/LibC@@" -e "s@$SRC_ROOT/Libraries/LibM@@")
|
||||||
install -D "$header" "Root/usr/include/$target"
|
$INSTALL -D "$header" "Root/usr/include/$target"
|
||||||
done
|
done
|
||||||
unset SRC_ROOT
|
unset SRC_ROOT
|
||||||
popd
|
popd
|
||||||
|
Loading…
Reference in New Issue
Block a user