Something went wrong. Try again.
Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486project(darling-src)
unset(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES)unset(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES)
cmake_policy(SET CMP0005 NEW)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")include(mig)include(pyc)
# Force linker settings to match 3.30.5 behavior# Apple's ld64 in cctools does not support the `--dependency-file` flagset(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED FALSE)set(CMAKE_C_LINKER_DEPFILE_SUPPORTED FALSE)set(CMAKE_CXX_LINK_DEPENDS_USE_LINKER FALSE)set(CMAKE_C_LINK_DEPENDS_USE_LINKER FALSE)
set(CMAKE_CXX_LINK_LIBRARY_USING_WHOLE_ARCHIVE_SUPPORTED FALSE)set(CMAKE_C_LINK_LIBRARY_USING_WHOLE_ARCHIVE_SUPPORTED FALSE)
set(CMAKE_CXX_LINKER_INFORMATION_LOADED FALSE)set(CMAKE_C_LINKER_INFORMATION_LOADED FALSE)set(CMAKE_CXX_USE_LINKER_INFORMATION FALSE)set(CMAKE_C_USE_LINKER_INFORMATION FALSE)
## start core components## projects included here are strictly necessary for basic executables to function at all.# it should be very clear which projects belong here. a project should only be here if it# is one of the following or is necessary for one of the following:# * darlingserver# * dyld# * mldr# * libSystem# * the host-side `darling` executable# this includes any build tools that are necessary to build any of those projects.## these projects are always built#
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "core")
#add_subdirectory(external/xcbuild)add_subdirectory(bsdln)
add_definitions( -DDARLING)
set(DARLING TRUE)
execute_process( COMMAND git rev-parse --abbrev-ref HEAD WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_BRANCH OUTPUT_STRIP_TRAILING_WHITESPACE)execute_process( COMMAND git log -1 --format=%h WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE GIT_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE)
configure_file(include/darling-config.h.in include/darling-config.h)include_directories("${CMAKE_CURRENT_BINARY_DIR}/include")include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")
include(compiler_include)GetCompilerInclude(COMPILER_INC_PATH)message(STATUS "Compiler include path detected as ${COMPILER_INC_PATH}")include_directories(SYSTEM ${COMPILER_INC_PATH})
find_package(BISON)find_package(FLEX)
set(DARLING_SDK_RELATIVE_PATH "Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk")set(DARLING_ROOT_RELATIVE_TO_SDK "../../../../../..")
add_subdirectory(external/cctools-port/cctools/ld64/src)add_subdirectory(external/cctools-port/cctools/ar)#add_subdirectory(external/cctools-port/cctools/as)add_subdirectory(external/cctools-port/cctools/misc)
#add_subdirectory(util)#add_subdirectory(libmach-o)#add_subdirectory(libdyld)add_subdirectory(buildtools)add_subdirectory(hosttools)add_subdirectory(libelfloader/wrapgen)# add the Linux build of libsimple nowadd_subdirectory(libsimple "${CMAKE_CURRENT_BINARY_DIR}/libsimple-linux")add_subdirectory(external/darlingserver)add_subdirectory(startup)
include_directories(${CMAKE_SOURCE_DIR}/basic-headers)
add_subdirectory(external/bootstrap_cmds)
add_definitions( -D__APPLE__ -D__DYNAMIC__ -D__MACH__ -D_DARWIN_C_SOURCE -D_POSIX_C_SOURCE -DDARWIN -DTARGET_OS_MAC=1 -DPLATFORM_MacOSX)
set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ar")set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ranlib")#set(CMAKE_ASM_COMPILER "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/as/${APPLE_TARGET_TRIPLET_PRIMARY}-as")
# set macOS deployment versionSET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")set(CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
add_definitions(-target ${APPLE_TARGET_TRIPLET_PRIMARY})include(darling_lib)include(darling_static_lib)include(darling_bundle)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include)
include_directories( ${CMAKE_SOURCE_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include ${CMAKE_BINARY_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include ${CMAKE_SOURCE_DIR}/framework-include ${CMAKE_SOURCE_DIR}/framework-private-include)
include_directories(AFTER ${CMAKE_CURRENT_SOURCE_DIR}/external/lkm/include ${CMAKE_CURRENT_SOURCE_DIR}/libDiagnosticMessagesClient/include ${CMAKE_CURRENT_SOURCE_DIR}/libMobileGestalt/include ${CMAKE_CURRENT_SOURCE_DIR}/lib/include
# necessary because this is the expected behavior when using `xml2-config --cflags` # it adds `$sdk_dir/libxml2` to the include path ${CMAKE_SOURCE_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include/libxml2 ${CMAKE_BINARY_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include/libxml2)
# add the Mach-O build of libsimple nowadd_subdirectory(libsimple "${CMAKE_CURRENT_BINARY_DIR}/libsimple-darling")
add_subdirectory(external/libkqueue)
# needs to come before libplatform because it generates mig headers that libplatform needsadd_subdirectory(external/xnu/darling/src/libsystem_kernel)
add_subdirectory(external/libplatform)add_subdirectory(external/libpthread)add_subdirectory(external/libtrace)add_subdirectory(external/libc)add_subdirectory(vchroot)
add_subdirectory(lib)
# libstdc++ doesn't use the libc++ headers included belowadd_subdirectory(external/libstdcxx)
include_directories(BEFORE ${CMAKE_SOURCE_DIR}/src/external/libcxx/include)
add_definitions(-D_LIBC_NO_FEATURE_VERIFICATION)
add_subdirectory(launchd)add_subdirectory(libm)add_subdirectory(external/dyld)add_subdirectory(external/libxpc)add_subdirectory(libgcc)add_subdirectory(external/copyfile)add_subdirectory(external/Libinfo)add_subdirectory(external/compiler-rt/lib/builtins)add_subdirectory(external/libnotify)add_subdirectory(duct/src)add_subdirectory(external/syslog)add_subdirectory(external/libclosure)add_subdirectory(external/keymgr)add_subdirectory(external/libunwind)add_subdirectory(external/libmalloc)add_subdirectory(external/coretls)add_subdirectory(libsystem_coreservices)add_subdirectory(external/removefile)add_subdirectory(quarantine)add_subdirectory(sandbox)add_subdirectory(external/corecrypto)add_subdirectory(external/commoncrypto)add_subdirectory(networkextension)add_subdirectory(libcache)add_subdirectory(external/configd)add_subdirectory(external/libsystem)add_subdirectory(external/objc4/runtime)add_subdirectory(external/corefoundation)add_subdirectory(external/icu/icuSources)add_subdirectory(external/csu)add_subdirectory(external/libresolv)add_subdirectory(external/usertemplate)add_subdirectory(external/bsm)add_subdirectory(external/zlib)# shellspawn can actually spawn any executable we want within the prefix,# so we include it in core to allow executables to be executed with the `darling` command.add_subdirectory(shellspawn)
# typically considered CLI components, but required by launchctl (which is necessary for launchd to bootstrap)add_subdirectory(external/libedit)add_subdirectory(external/ncurses)
## end core components## the rest of the projects are not all neatly separated like the core components are because# some projects build multiple targets which may be part of different components#
if (COMPONENT_system) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "system")
add_subdirectory(external/libiconv) add_subdirectory(external/bzip2) add_subdirectory(external/libressl-2.8.3) add_subdirectory(external/libarchive/libarchive) add_subdirectory(external/liblzma) add_subdirectory(external/OpenDirectory) add_subdirectory(external/openssl_certificates) add_subdirectory(external/bash) add_subdirectory(external/zsh) add_subdirectory(external/tcsh) add_subdirectory(external/files) add_subdirectory(external/crontabs) add_subdirectory(external/swift)endif()
if (COMPONENT_cli) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli")
add_subdirectory(external/darling-dmg) add_subdirectory(external/libutil) add_subdirectory(xtrace) add_subdirectory(external/libxslt) add_subdirectory(external/openssl/src) add_subdirectory(external/nghttp2) add_subdirectory(external/passwordserver_sasl) add_subdirectory(external/curl) add_subdirectory(external/OpenLDAP) add_subdirectory(external/pcre) add_subdirectory(external/libtelnet) add_subdirectory(external/remote_cmds) add_subdirectory(external/IOKitTools) add_subdirectory(external/apr) add_subdirectory(xcselect) add_subdirectory(external/file/file) add_subdirectory(external/shell_cmds) add_subdirectory(external/file_cmds) add_subdirectory(external/text_cmds) add_subdirectory(external/adv_cmds) add_subdirectory(external/network_cmds) add_subdirectory(external/system_cmds) add_subdirectory(external/mail_cmds) add_subdirectory(external/doc_cmds) add_subdirectory(external/basic_cmds) add_subdirectory(external/misc_cmds) add_subdirectory(external/patch_cmds) add_subdirectory(external/less) add_subdirectory(external/grep) add_subdirectory(external/awk) add_subdirectory(external/groff) add_subdirectory(external/nano) add_subdirectory(external/man) add_subdirectory(external/bc) add_subdirectory(external/zip) add_subdirectory(external/installer) add_subdirectory(external/bind9) add_subdirectory(external/netcat) add_subdirectory(external/gpatch) add_subdirectory(external/gnudiff) add_subdirectory(external/openssh) add_subdirectory(external/top) add_subdirectory(external/screen) add_subdirectory(unxip) add_subdirectory(external/rsync) add_subdirectory(external/DSTools) add_subdirectory(libsysmon) add_subdirectory(PlistBuddy) add_subdirectory(libquit) add_subdirectory(external/lzfse) add_subdirectory(clt) add_subdirectory(diskutil) add_subdirectory(ditto)
# these aren't used by anything we build (they're just included because they're also present in macOS) # TODO: maybe we should introduce another component (e.g. `lib_stock`) for libraries we don't need but are expected in a stock macOS installation. add_subdirectory(external/libressl-2.2.9) add_subdirectory(external/libressl-2.5.5) add_subdirectory(external/libressl-2.6.5)endif()
if (COMPONENT_python OR COMPONENT_ruby) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "ffi") add_subdirectory(external/libffi)endif()
if (COMPONENT_cli_dev) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_dev") add_subdirectory(libgmalloc)endif()
if (COMPONENT_cli OR COMPONENT_dev_gui_common) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_gui_common")
add_subdirectory(external/libxml2) add_subdirectory(external/foundation) add_subdirectory(external/cfnetwork/src) add_subdirectory(external/sqlite) add_subdirectory(external/openpam) add_subdirectory(external/energytrace) add_subdirectory(external/xnu/libkern/kxld) add_subdirectory(external/IOKitUser) add_subdirectory(external/xar) add_subdirectory(libpmenergy) add_subdirectory(external/DirectoryService) add_subdirectory(libacm) add_subdirectory(libaks) add_subdirectory(libcompression) add_subdirectory(external/Heimdal) add_subdirectory(libDiagnosticMessagesClient) add_subdirectory(libsandbox) add_subdirectory(opendirectory_internal) add_subdirectory(external/fmdb) add_subdirectory(external/libnetwork) add_subdirectory(libMobileGestalt) add_subdirectory(external/MITKerberosShim) add_subdirectory(MobileKeyBag)endif()
if (COMPONENT_iokitd) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME iokitd) add_subdirectory(external/iokitd)endif()
if (COMPONENT_dev_gui_common) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_dev_gui_common")
add_subdirectory(libaccessibility) add_subdirectory(external/openjdk) # *should* be in `cli` component, but requires AppKitendif()
if (COMPONENT_cli_extra) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_extra")
add_subdirectory(external/gnutar/gnutar)endif()
if (COMPONENT_gui) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "gui")
add_subdirectory(external/cocotron)
add_subdirectory(CoreAudio) add_subdirectory(external/cups) add_subdirectory(pboard)
# not currently used by anything we build add_subdirectory(external/dbuskit)endif()
if (COMPONENT_python) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "python")
add_subdirectory(external/python_modules) add_subdirectory(external/python/2.7/Python-2.7.16)endif()
if (COMPONENT_cli OR COMPONENT_python) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_python_common")
add_subdirectory(external/BerkeleyDB) add_subdirectory(external/expat)endif()
if (COMPONENT_gui_frameworks AND COMPONENT_gui_stubs AND COMPONENT_python) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "pyobjc")
# TODO: pyobjc should only build individual modules if the respective components are enabled. # right now, it's all-or-nothing. add_subdirectory(external/pyobjc)endif()
if (COMPONENT_ruby) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "ruby")
add_subdirectory(external/ruby)endif()
if (COMPONENT_perl) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "perl")
add_subdirectory(external/perl)endif()
#add_subdirectory(external/mDNSResponder)#add_subdirectory(external/OpenAL)#add_subdirectory(VideoDecodeAcceleration)#add_subdirectory(external/glut)
# not a core component, but we always add it regardless of the components that are enabled;# it has its own component checks to determine which libraries to generate wrappers for.add_subdirectory(native)
# has its own component checksadd_subdirectory(external/vim)
# has its own component checksadd_subdirectory(tools)
# these have their own component checks on a per-framework basisadd_subdirectory(frameworks)add_subdirectory(private-frameworks)
# /Applications#add_subdirectory(external/TextEdit)
# Subprojects after this line need C++ headers
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/external/libcxxabi/include)
## start core components with C++#
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "core")
add_subdirectory(external/libcxxabi)add_subdirectory(external/libcxx)
add_subdirectory(external/libdispatch)add_subdirectory(external/cctools)
## end core components with C++#
if (COMPONENT_cli OR COMPONENT_dev_gui_common) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_gui_common")
add_subdirectory(external/SmartCardServices) add_subdirectory(external/security) add_subdirectory(external/SecurityTokend)endif()
if (COMPONENT_cli) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli")
add_subdirectory(external/dtrace) add_subdirectory(external/libauto)endif()
if (COMPONENT_dev_gui_common) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_dev_gui_common")
add_subdirectory(external/metal)endif()
if (COMPONENT_jsc OR COMPONENT_webkit) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "jsc_webkit_common")
add_subdirectory(external/WTF) add_subdirectory(external/bmalloc)endif()
if (COMPONENT_jsc) set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "jsc")
add_subdirectory(external/JavaScriptCore)endif()
#add_subdirectory(external/WebCore)