this repo has no description
at fixPythonPipStalling 485 lines 15 kB view raw
1project(darling-src) 2 3unset(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES) 4unset(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES) 5 6cmake_policy(SET CMP0005 NEW) 7 8set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") 9include(mig) 10include(pyc) 11 12# Force linker settings to match 3.30.5 behavior 13# Apple's ld64 in cctools does not support the `--dependency-file` flag 14set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED FALSE) 15set(CMAKE_C_LINKER_DEPFILE_SUPPORTED FALSE) 16set(CMAKE_CXX_LINK_DEPENDS_USE_LINKER FALSE) 17set(CMAKE_C_LINK_DEPENDS_USE_LINKER FALSE) 18 19set(CMAKE_CXX_LINK_LIBRARY_USING_WHOLE_ARCHIVE_SUPPORTED FALSE) 20set(CMAKE_C_LINK_LIBRARY_USING_WHOLE_ARCHIVE_SUPPORTED FALSE) 21 22set(CMAKE_CXX_LINKER_INFORMATION_LOADED FALSE) 23set(CMAKE_C_LINKER_INFORMATION_LOADED FALSE) 24set(CMAKE_CXX_USE_LINKER_INFORMATION FALSE) 25set(CMAKE_C_USE_LINKER_INFORMATION FALSE) 26 27# 28# start core components 29# 30# projects included here are strictly necessary for basic executables to function at all. 31# it should be very clear which projects belong here. a project should only be here if it 32# is one of the following or is necessary for one of the following: 33# * darlingserver 34# * dyld 35# * mldr 36# * libSystem 37# * the host-side `darling` executable 38# this includes any build tools that are necessary to build any of those projects. 39# 40# these projects are always built 41# 42 43set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "core") 44 45#add_subdirectory(external/xcbuild) 46add_subdirectory(bsdln) 47 48add_definitions( 49 -DDARLING 50) 51 52set(DARLING TRUE) 53 54execute_process( 55 COMMAND git rev-parse --abbrev-ref HEAD 56 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 57 OUTPUT_VARIABLE GIT_BRANCH 58 OUTPUT_STRIP_TRAILING_WHITESPACE 59) 60execute_process( 61 COMMAND git log -1 --format=%h 62 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} 63 OUTPUT_VARIABLE GIT_COMMIT_HASH 64 OUTPUT_STRIP_TRAILING_WHITESPACE 65) 66 67configure_file(include/darling-config.h.in include/darling-config.h) 68include_directories("${CMAKE_CURRENT_BINARY_DIR}/include") 69include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include") 70 71include(compiler_include) 72GetCompilerInclude(COMPILER_INC_PATH) 73message(STATUS "Compiler include path detected as ${COMPILER_INC_PATH}") 74include_directories(SYSTEM ${COMPILER_INC_PATH}) 75 76find_package(BISON) 77find_package(FLEX) 78 79set(DARLING_SDK_RELATIVE_PATH "Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk") 80set(DARLING_ROOT_RELATIVE_TO_SDK "../../../../../..") 81 82add_subdirectory(external/cctools-port/cctools/ld64/src) 83add_subdirectory(external/cctools-port/cctools/ar) 84#add_subdirectory(external/cctools-port/cctools/as) 85add_subdirectory(external/cctools-port/cctools/misc) 86 87#add_subdirectory(util) 88#add_subdirectory(libmach-o) 89#add_subdirectory(libdyld) 90add_subdirectory(buildtools) 91add_subdirectory(hosttools) 92add_subdirectory(libelfloader/wrapgen) 93# add the Linux build of libsimple now 94add_subdirectory(libsimple "${CMAKE_CURRENT_BINARY_DIR}/libsimple-linux") 95add_subdirectory(external/darlingserver) 96add_subdirectory(startup) 97 98include_directories(${CMAKE_SOURCE_DIR}/basic-headers) 99 100add_subdirectory(external/bootstrap_cmds) 101 102add_definitions( 103 -D__APPLE__ 104 -D__DYNAMIC__ 105 -D__MACH__ 106 -D_DARWIN_C_SOURCE 107 -D_POSIX_C_SOURCE 108 -DDARWIN 109 -DTARGET_OS_MAC=1 110 -DPLATFORM_MacOSX 111) 112 113set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ar") 114set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/${APPLE_TARGET_TRIPLET_PRIMARY}-ranlib") 115#set(CMAKE_ASM_COMPILER "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/as/${APPLE_TARGET_TRIPLET_PRIMARY}-as") 116 117# set macOS deployment version 118SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") 119SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") 120set(CMAKE_OBJC_FLAGS "${CMAKE_OBJC_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") 121 122add_definitions(-target ${APPLE_TARGET_TRIPLET_PRIMARY}) 123include(darling_lib) 124include(darling_static_lib) 125include(darling_bundle) 126 127file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include) 128 129include_directories( 130 ${CMAKE_SOURCE_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include 131 ${CMAKE_BINARY_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include 132 ${CMAKE_SOURCE_DIR}/framework-include 133 ${CMAKE_SOURCE_DIR}/framework-private-include 134) 135 136include_directories(AFTER 137 ${CMAKE_CURRENT_SOURCE_DIR}/external/lkm/include 138 ${CMAKE_CURRENT_SOURCE_DIR}/libDiagnosticMessagesClient/include 139 ${CMAKE_CURRENT_SOURCE_DIR}/libMobileGestalt/include 140 ${CMAKE_CURRENT_SOURCE_DIR}/lib/include 141 142 # necessary because this is the expected behavior when using `xml2-config --cflags` 143 # it adds `$sdk_dir/libxml2` to the include path 144 ${CMAKE_SOURCE_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include/libxml2 145 ${CMAKE_BINARY_DIR}/${DARLING_SDK_RELATIVE_PATH}/usr/include/libxml2 146) 147 148# add the Mach-O build of libsimple now 149add_subdirectory(libsimple "${CMAKE_CURRENT_BINARY_DIR}/libsimple-darling") 150 151add_subdirectory(external/libkqueue) 152 153# needs to come before libplatform because it generates mig headers that libplatform needs 154add_subdirectory(external/xnu/darling/src/libsystem_kernel) 155 156add_subdirectory(external/libplatform) 157add_subdirectory(external/libpthread) 158add_subdirectory(external/libtrace) 159add_subdirectory(external/libc) 160add_subdirectory(vchroot) 161 162add_subdirectory(lib) 163 164# libstdc++ doesn't use the libc++ headers included below 165add_subdirectory(external/libstdcxx) 166 167include_directories(BEFORE 168 ${CMAKE_SOURCE_DIR}/src/external/libcxx/include 169) 170 171add_definitions(-D_LIBC_NO_FEATURE_VERIFICATION) 172 173add_subdirectory(launchd) 174add_subdirectory(libm) 175add_subdirectory(external/dyld) 176add_subdirectory(external/libxpc) 177add_subdirectory(libgcc) 178add_subdirectory(external/copyfile) 179add_subdirectory(external/Libinfo) 180add_subdirectory(external/compiler-rt/lib/builtins) 181add_subdirectory(external/libnotify) 182add_subdirectory(duct/src) 183add_subdirectory(external/syslog) 184add_subdirectory(external/libclosure) 185add_subdirectory(external/keymgr) 186add_subdirectory(external/libunwind) 187add_subdirectory(external/libmalloc) 188add_subdirectory(external/coretls) 189add_subdirectory(libsystem_coreservices) 190add_subdirectory(external/removefile) 191add_subdirectory(quarantine) 192add_subdirectory(sandbox) 193add_subdirectory(external/corecrypto) 194add_subdirectory(external/commoncrypto) 195add_subdirectory(networkextension) 196add_subdirectory(libcache) 197add_subdirectory(external/configd) 198add_subdirectory(external/libsystem) 199add_subdirectory(external/objc4/runtime) 200add_subdirectory(external/corefoundation) 201add_subdirectory(external/icu/icuSources) 202add_subdirectory(external/csu) 203add_subdirectory(external/libresolv) 204add_subdirectory(external/usertemplate) 205add_subdirectory(external/bsm) 206add_subdirectory(external/zlib) 207# shellspawn can actually spawn any executable we want within the prefix, 208# so we include it in core to allow executables to be executed with the `darling` command. 209add_subdirectory(shellspawn) 210 211# typically considered CLI components, but required by launchctl (which is necessary for launchd to bootstrap) 212add_subdirectory(external/libedit) 213add_subdirectory(external/ncurses) 214 215# 216# end core components 217# 218# the rest of the projects are not all neatly separated like the core components are because 219# some projects build multiple targets which may be part of different components 220# 221 222if (COMPONENT_system) 223 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "system") 224 225 add_subdirectory(external/libiconv) 226 add_subdirectory(external/bzip2) 227 add_subdirectory(external/libressl-2.8.3) 228 add_subdirectory(external/libarchive/libarchive) 229 add_subdirectory(external/liblzma) 230 add_subdirectory(external/OpenDirectory) 231 add_subdirectory(external/openssl_certificates) 232 add_subdirectory(external/bash) 233 add_subdirectory(external/zsh) 234 add_subdirectory(external/tcsh) 235 add_subdirectory(external/files) 236 add_subdirectory(external/crontabs) 237 add_subdirectory(external/swift) 238endif() 239 240if (COMPONENT_cli) 241 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli") 242 243 add_subdirectory(external/darling-dmg) 244 add_subdirectory(external/libutil) 245 add_subdirectory(xtrace) 246 add_subdirectory(external/libxslt) 247 add_subdirectory(external/openssl/src) 248 add_subdirectory(external/nghttp2) 249 add_subdirectory(external/passwordserver_sasl) 250 add_subdirectory(external/curl) 251 add_subdirectory(external/OpenLDAP) 252 add_subdirectory(external/pcre) 253 add_subdirectory(external/libtelnet) 254 add_subdirectory(external/remote_cmds) 255 add_subdirectory(external/IOKitTools) 256 add_subdirectory(external/apr) 257 add_subdirectory(xcselect) 258 add_subdirectory(external/file/file) 259 add_subdirectory(external/shell_cmds) 260 add_subdirectory(external/file_cmds) 261 add_subdirectory(external/text_cmds) 262 add_subdirectory(external/adv_cmds) 263 add_subdirectory(external/network_cmds) 264 add_subdirectory(external/system_cmds) 265 add_subdirectory(external/mail_cmds) 266 add_subdirectory(external/doc_cmds) 267 add_subdirectory(external/basic_cmds) 268 add_subdirectory(external/misc_cmds) 269 add_subdirectory(external/patch_cmds) 270 add_subdirectory(external/less) 271 add_subdirectory(external/grep) 272 add_subdirectory(external/awk) 273 add_subdirectory(external/groff) 274 add_subdirectory(external/nano) 275 add_subdirectory(external/man) 276 add_subdirectory(external/bc) 277 add_subdirectory(external/zip) 278 add_subdirectory(external/installer) 279 add_subdirectory(external/bind9) 280 add_subdirectory(external/netcat) 281 add_subdirectory(external/gpatch) 282 add_subdirectory(external/gnudiff) 283 add_subdirectory(external/openssh) 284 add_subdirectory(external/top) 285 add_subdirectory(external/screen) 286 add_subdirectory(unxip) 287 add_subdirectory(external/rsync) 288 add_subdirectory(external/DSTools) 289 add_subdirectory(libsysmon) 290 add_subdirectory(PlistBuddy) 291 add_subdirectory(libquit) 292 add_subdirectory(external/lzfse) 293 add_subdirectory(clt) 294 add_subdirectory(diskutil) 295 add_subdirectory(ditto) 296 297 # these aren't used by anything we build (they're just included because they're also present in macOS) 298 # 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. 299 add_subdirectory(external/libressl-2.2.9) 300 add_subdirectory(external/libressl-2.5.5) 301 add_subdirectory(external/libressl-2.6.5) 302endif() 303 304if (COMPONENT_python OR COMPONENT_ruby) 305 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "ffi") 306 add_subdirectory(external/libffi) 307endif() 308 309if (COMPONENT_cli_dev) 310 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_dev") 311 add_subdirectory(libgmalloc) 312endif() 313 314if (COMPONENT_cli OR COMPONENT_dev_gui_common) 315 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_gui_common") 316 317 add_subdirectory(external/libxml2) 318 add_subdirectory(external/foundation) 319 add_subdirectory(external/cfnetwork/src) 320 add_subdirectory(external/sqlite) 321 add_subdirectory(external/openpam) 322 add_subdirectory(external/energytrace) 323 add_subdirectory(external/xnu/libkern/kxld) 324 add_subdirectory(external/IOKitUser) 325 add_subdirectory(external/xar) 326 add_subdirectory(libpmenergy) 327 add_subdirectory(external/DirectoryService) 328 add_subdirectory(libacm) 329 add_subdirectory(libaks) 330 add_subdirectory(libcompression) 331 add_subdirectory(external/Heimdal) 332 add_subdirectory(libDiagnosticMessagesClient) 333 add_subdirectory(libsandbox) 334 add_subdirectory(opendirectory_internal) 335 add_subdirectory(external/fmdb) 336 add_subdirectory(external/libnetwork) 337 add_subdirectory(libMobileGestalt) 338 add_subdirectory(external/MITKerberosShim) 339 add_subdirectory(MobileKeyBag) 340endif() 341 342if (COMPONENT_iokitd) 343 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME iokitd) 344 add_subdirectory(external/iokitd) 345endif() 346 347if (COMPONENT_dev_gui_common) 348 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_dev_gui_common") 349 350 add_subdirectory(libaccessibility) 351 add_subdirectory(external/openjdk) # *should* be in `cli` component, but requires AppKit 352endif() 353 354if (COMPONENT_cli_extra) 355 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_extra") 356 357 add_subdirectory(external/gnutar/gnutar) 358endif() 359 360if (COMPONENT_gui) 361 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "gui") 362 363 add_subdirectory(external/cocotron) 364 365 add_subdirectory(CoreAudio) 366 add_subdirectory(external/cups) 367 add_subdirectory(pboard) 368 369 # not currently used by anything we build 370 add_subdirectory(external/dbuskit) 371endif() 372 373if (COMPONENT_python) 374 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "python") 375 376 add_subdirectory(external/python_modules) 377 add_subdirectory(external/python/2.7/Python-2.7.16) 378endif() 379 380if (COMPONENT_cli OR COMPONENT_python) 381 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_python_common") 382 383 add_subdirectory(external/BerkeleyDB) 384 add_subdirectory(external/expat) 385endif() 386 387if (COMPONENT_gui_frameworks AND COMPONENT_gui_stubs AND COMPONENT_python) 388 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "pyobjc") 389 390 # TODO: pyobjc should only build individual modules if the respective components are enabled. 391 # right now, it's all-or-nothing. 392 add_subdirectory(external/pyobjc) 393endif() 394 395if (COMPONENT_ruby) 396 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "ruby") 397 398 add_subdirectory(external/ruby) 399endif() 400 401if (COMPONENT_perl) 402 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "perl") 403 404 add_subdirectory(external/perl) 405endif() 406 407#add_subdirectory(external/mDNSResponder) 408#add_subdirectory(external/OpenAL) 409#add_subdirectory(VideoDecodeAcceleration) 410#add_subdirectory(external/glut) 411 412# not a core component, but we always add it regardless of the components that are enabled; 413# it has its own component checks to determine which libraries to generate wrappers for. 414add_subdirectory(native) 415 416# has its own component checks 417add_subdirectory(external/vim) 418 419# has its own component checks 420add_subdirectory(tools) 421 422# these have their own component checks on a per-framework basis 423add_subdirectory(frameworks) 424add_subdirectory(private-frameworks) 425 426# /Applications 427#add_subdirectory(external/TextEdit) 428 429# Subprojects after this line need C++ headers 430 431include_directories(BEFORE 432 ${CMAKE_CURRENT_SOURCE_DIR}/external/libcxxabi/include 433) 434 435# 436# start core components with C++ 437# 438 439set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "core") 440 441add_subdirectory(external/libcxxabi) 442add_subdirectory(external/libcxx) 443 444add_subdirectory(external/libdispatch) 445add_subdirectory(external/cctools) 446 447# 448# end core components with C++ 449# 450 451if (COMPONENT_cli OR COMPONENT_dev_gui_common) 452 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_gui_common") 453 454 add_subdirectory(external/SmartCardServices) 455 add_subdirectory(external/security) 456 add_subdirectory(external/SecurityTokend) 457endif() 458 459if (COMPONENT_cli) 460 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli") 461 462 add_subdirectory(external/dtrace) 463 add_subdirectory(external/libauto) 464endif() 465 466if (COMPONENT_dev_gui_common) 467 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "cli_dev_gui_common") 468 469 add_subdirectory(external/metal) 470endif() 471 472if (COMPONENT_jsc OR COMPONENT_webkit) 473 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "jsc_webkit_common") 474 475 add_subdirectory(external/WTF) 476 add_subdirectory(external/bmalloc) 477endif() 478 479if (COMPONENT_jsc) 480 set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "jsc") 481 482 add_subdirectory(external/JavaScriptCore) 483endif() 484 485#add_subdirectory(external/WebCore)