From: Apple Date: Tue, 30 Sep 2008 02:47:45 +0000 (+0000) Subject: Libsystem-111.1.3.tar.gz X-Git-Tag: mac-os-x-1056^0 X-Git-Url: https://git.saurik.com/apple/libsystem.git/commitdiff_plain/c9e8bbd6db2dd3826646d72ddf34fa6c442d8889?ds=sidebyside Libsystem-111.1.3.tar.gz --- diff --git a/APPLE_LICENSE b/APPLE_LICENSE new file mode 100644 index 0000000..fe81a60 --- /dev/null +++ b/APPLE_LICENSE @@ -0,0 +1,367 @@ +APPLE PUBLIC SOURCE LICENSE +Version 2.0 - August 6, 2003 + +Please read this License carefully before downloading this software. +By downloading or using this software, you are agreeing to be bound by +the terms of this License. If you do not or cannot agree to the terms +of this License, please do not download or use the software. + +1. General; Definitions. This License applies to any program or other +work which Apple Computer, Inc. ("Apple") makes publicly available and +which contains a notice placed by Apple identifying such program or +work as "Original Code" and stating that it is subject to the terms of +this Apple Public Source License version 2.0 ("License"). As used in +this License: + +1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is +the grantor of rights, (i) claims of patents that are now or hereafter +acquired, owned by or assigned to Apple and (ii) that cover subject +matter contained in the Original Code, but only to the extent +necessary to use, reproduce and/or distribute the Original Code +without infringement; and (b) in the case where You are the grantor of +rights, (i) claims of patents that are now or hereafter acquired, +owned by or assigned to You and (ii) that cover subject matter in Your +Modifications, taken alone or in combination with Original Code. + +1.2 "Contributor" means any person or entity that creates or +contributes to the creation of Modifications. + +1.3 "Covered Code" means the Original Code, Modifications, the +combination of Original Code and any Modifications, and/or any +respective portions thereof. + +1.4 "Externally Deploy" means: (a) to sublicense, distribute or +otherwise make Covered Code available, directly or indirectly, to +anyone other than You; and/or (b) to use Covered Code, alone or as +part of a Larger Work, in any way to provide a service, including but +not limited to delivery of content, through electronic communication +with a client other than You. + +1.5 "Larger Work" means a work which combines Covered Code or portions +thereof with code not governed by the terms of this License. + +1.6 "Modifications" mean any addition to, deletion from, and/or change +to, the substance and/or structure of the Original Code, any previous +Modifications, the combination of Original Code and any previous +Modifications, and/or any respective portions thereof. When code is +released as a series of files, a Modification is: (a) any addition to +or deletion from the contents of a file containing Covered Code; +and/or (b) any new file or other representation of computer program +statements that contains any part of Covered Code. + +1.7 "Original Code" means (a) the Source Code of a program or other +work as originally made available by Apple under this License, +including the Source Code of any updates or upgrades to such programs +or works made available by Apple under this License, and that has been +expressly identified by Apple as such in the header file(s) of such +work; and (b) the object code compiled from such Source Code and +originally made available by Apple under this License. + +1.8 "Source Code" means the human readable form of a program or other +work that is suitable for making modifications to it, including all +modules it contains, plus any associated interface definition files, +scripts used to control compilation and installation of an executable +(object code). + +1.9 "You" or "Your" means an individual or a legal entity exercising +rights under this License. For legal entities, "You" or "Your" +includes any entity which controls, is controlled by, or is under +common control with, You, where "control" means (a) the power, direct +or indirect, to cause the direction or management of such entity, +whether by contract or otherwise, or (b) ownership of fifty percent +(50%) or more of the outstanding shares or beneficial ownership of +such entity. + +2. Permitted Uses; Conditions & Restrictions. Subject to the terms +and conditions of this License, Apple hereby grants You, effective on +the date You accept this License and download the Original Code, a +world-wide, royalty-free, non-exclusive license, to the extent of +Apple's Applicable Patent Rights and copyrights covering the Original +Code, to do the following: + +2.1 Unmodified Code. You may use, reproduce, display, perform, +internally distribute within Your organization, and Externally Deploy +verbatim, unmodified copies of the Original Code, for commercial or +non-commercial purposes, provided that in each instance: + +(a) You must retain and reproduce in all copies of Original Code the +copyright and other proprietary notices and disclaimers of Apple as +they appear in the Original Code, and keep intact all notices in the +Original Code that refer to this License; and + +(b) You must include a copy of this License with every copy of Source +Code of Covered Code and documentation You distribute or Externally +Deploy, and You may not offer or impose any terms on such Source Code +that alter or restrict this License or the recipients' rights +hereunder, except as permitted under Section 6. + +2.2 Modified Code. You may modify Covered Code and use, reproduce, +display, perform, internally distribute within Your organization, and +Externally Deploy Your Modifications and Covered Code, for commercial +or non-commercial purposes, provided that in each instance You also +meet all of these conditions: + +(a) You must satisfy all the conditions of Section 2.1 with respect to +the Source Code of the Covered Code; + +(b) You must duplicate, to the extent it does not already exist, the +notice in Exhibit A in each file of the Source Code of all Your +Modifications, and cause the modified files to carry prominent notices +stating that You changed the files and the date of any change; and + +(c) If You Externally Deploy Your Modifications, You must make +Source Code of all Your Externally Deployed Modifications either +available to those to whom You have Externally Deployed Your +Modifications, or publicly available. Source Code of Your Externally +Deployed Modifications must be released under the terms set forth in +this License, including the license grants set forth in Section 3 +below, for as long as you Externally Deploy the Covered Code or twelve +(12) months from the date of initial External Deployment, whichever is +longer. You should preferably distribute the Source Code of Your +Externally Deployed Modifications electronically (e.g. download from a +web site). + +2.3 Distribution of Executable Versions. In addition, if You +Externally Deploy Covered Code (Original Code and/or Modifications) in +object code, executable form only, You must include a prominent +notice, in the code itself as well as in related documentation, +stating that Source Code of the Covered Code is available under the +terms of this License with information on how and where to obtain such +Source Code. + +2.4 Third Party Rights. You expressly acknowledge and agree that +although Apple and each Contributor grants the licenses to their +respective portions of the Covered Code set forth herein, no +assurances are provided by Apple or any Contributor that the Covered +Code does not infringe the patent or other intellectual property +rights of any other entity. Apple and each Contributor disclaim any +liability to You for claims brought by any other entity based on +infringement of intellectual property rights or otherwise. As a +condition to exercising the rights and licenses granted hereunder, You +hereby assume sole responsibility to secure any other intellectual +property rights needed, if any. For example, if a third party patent +license is required to allow You to distribute the Covered Code, it is +Your responsibility to acquire that license before distributing the +Covered Code. + +3. Your Grants. In consideration of, and as a condition to, the +licenses granted to You under this License, You hereby grant to any +person or entity receiving or distributing Covered Code under this +License a non-exclusive, royalty-free, perpetual, irrevocable license, +under Your Applicable Patent Rights and other intellectual property +rights (other than patent) owned or controlled by You, to use, +reproduce, display, perform, modify, sublicense, distribute and +Externally Deploy Your Modifications of the same scope and extent as +Apple's licenses under Sections 2.1 and 2.2 above. + +4. Larger Works. You may create a Larger Work by combining Covered +Code with other code not governed by the terms of this License and +distribute the Larger Work as a single product. In each such instance, +You must make sure the requirements of this License are fulfilled for +the Covered Code or any portion thereof. + +5. Limitations on Patent License. Except as expressly stated in +Section 2, no other patent rights, express or implied, are granted by +Apple herein. Modifications and/or Larger Works may require additional +patent licenses from Apple which Apple may grant in its sole +discretion. + +6. Additional Terms. You may choose to offer, and to charge a fee for, +warranty, support, indemnity or liability obligations and/or other +rights consistent with the scope of the license granted herein +("Additional Terms") to one or more recipients of Covered Code. +However, You may do so only on Your own behalf and as Your sole +responsibility, and not on behalf of Apple or any Contributor. You +must obtain the recipient's agreement that any such Additional Terms +are offered by You alone, and You hereby agree to indemnify, defend +and hold Apple and every Contributor harmless for any liability +incurred by or claims asserted against Apple or such Contributor by +reason of any such Additional Terms. + +7. Versions of the License. Apple may publish revised and/or new +versions of this License from time to time. Each version will be given +a distinguishing version number. Once Original Code has been published +under a particular version of this License, You may continue to use it +under the terms of that version. You may also choose to use such +Original Code under the terms of any subsequent version of this +License published by Apple. No one other than Apple has the right to +modify the terms applicable to Covered Code created under this +License. + +8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in +part pre-release, untested, or not fully tested works. The Covered +Code may contain errors that could cause failures or loss of data, and +may be incomplete or contain inaccuracies. You expressly acknowledge +and agree that use of the Covered Code, or any portion thereof, is at +Your sole and entire risk. THE COVERED CODE IS PROVIDED "AS IS" AND +WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND +APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE +PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM +ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT +NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF +MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR +PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD +PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST +INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE +FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, +THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR +ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO +ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE +AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. +You acknowledge that the Covered Code is not intended for use in the +operation of nuclear facilities, aircraft navigation, communication +systems, or air traffic control machines in which case the failure of +the Covered Code could lead to death, personal injury, or severe +physical or environmental damage. + +9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO +EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, +SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING +TO THIS LICENSE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR +ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY, +TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF +APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY +REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF +INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY +TO YOU. In no event shall Apple's total liability to You for all +damages (other than as may be required by applicable law) under this +License exceed the amount of fifty dollars ($50.00). + +10. Trademarks. This License does not grant any rights to use the +trademarks or trade names "Apple", "Apple Computer", "Mac", "Mac OS", +"QuickTime", "QuickTime Streaming Server" or any other trademarks, +service marks, logos or trade names belonging to Apple (collectively +"Apple Marks") or to any trademark, service mark, logo or trade name +belonging to any Contributor. You agree not to use any Apple Marks in +or as part of the name of products derived from the Original Code or +to endorse or promote products derived from the Original Code other +than as expressly permitted by and in strict compliance at all times +with Apple's third party trademark usage guidelines which are posted +at http://www.apple.com/legal/guidelinesfor3rdparties.html. + +11. Ownership. Subject to the licenses granted under this License, +each Contributor retains all rights, title and interest in and to any +Modifications made by such Contributor. Apple retains all rights, +title and interest in and to the Original Code and any Modifications +made by or on behalf of Apple ("Apple Modifications"), and such Apple +Modifications will not be automatically subject to this License. Apple +may, at its sole discretion, choose to license such Apple +Modifications under this License, or on different terms from those +contained in this License or may choose not to license them at all. + +12. Termination. + +12.1 Termination. This License and the rights granted hereunder will +terminate: + +(a) automatically without notice from Apple if You fail to comply with +any term(s) of this License and fail to cure such breach within 30 +days of becoming aware of such breach; + +(b) immediately in the event of the circumstances described in Section +13.5(b); or + +(c) automatically without notice from Apple if You, at any time during +the term of this License, commence an action for patent infringement +against Apple; provided that Apple did not first commence +an action for patent infringement against You in that instance. + +12.2 Effect of Termination. Upon termination, You agree to immediately +stop any further use, reproduction, modification, sublicensing and +distribution of the Covered Code. All sublicenses to the Covered Code +which have been properly granted prior to termination shall survive +any termination of this License. Provisions which, by their nature, +should remain in effect beyond the termination of this License shall +survive, including but not limited to Sections 3, 5, 8, 9, 10, 11, +12.2 and 13. No party will be liable to any other for compensation, +indemnity or damages of any sort solely as a result of terminating +this License in accordance with its terms, and termination of this +License will be without prejudice to any other right or remedy of +any party. + +13. Miscellaneous. + +13.1 Government End Users. The Covered Code is a "commercial item" as +defined in FAR 2.101. Government software and technical data rights in +the Covered Code include only those rights customarily provided to the +public as defined in this License. This customary commercial license +in technical data and software is provided in accordance with FAR +12.211 (Technical Data) and 12.212 (Computer Software) and, for +Department of Defense purchases, DFAR 252.227-7015 (Technical Data -- +Commercial Items) and 227.7202-3 (Rights in Commercial Computer +Software or Computer Software Documentation). Accordingly, all U.S. +Government End Users acquire Covered Code with only those rights set +forth herein. + +13.2 Relationship of Parties. This License will not be construed as +creating an agency, partnership, joint venture or any other form of +legal association between or among You, Apple or any Contributor, and +You will not represent to the contrary, whether expressly, by +implication, appearance or otherwise. + +13.3 Independent Development. Nothing in this License will impair +Apple's right to acquire, license, develop, have others develop for +it, market and/or distribute technology or products that perform the +same or similar functions as, or otherwise compete with, +Modifications, Larger Works, technology or products that You may +develop, produce, market or distribute. + +13.4 Waiver; Construction. Failure by Apple or any Contributor to +enforce any provision of this License will not be deemed a waiver of +future enforcement of that or any other provision. Any law or +regulation which provides that the language of a contract shall be +construed against the drafter will not apply to this License. + +13.5 Severability. (a) If for any reason a court of competent +jurisdiction finds any provision of this License, or portion thereof, +to be unenforceable, that provision of the License will be enforced to +the maximum extent permissible so as to effect the economic benefits +and intent of the parties, and the remainder of this License will +continue in full force and effect. (b) Notwithstanding the foregoing, +if applicable law prohibits or restricts You from fully and/or +specifically complying with Sections 2 and/or 3 or prevents the +enforceability of either of those Sections, this License will +immediately terminate and You must immediately discontinue any use of +the Covered Code and destroy all copies of it that are in your +possession or control. + +13.6 Dispute Resolution. Any litigation or other dispute resolution +between You and Apple relating to this License shall take place in the +Northern District of California, and You and Apple hereby consent to +the personal jurisdiction of, and venue in, the state and federal +courts within that District with respect to this License. The +application of the United Nations Convention on Contracts for the +International Sale of Goods is expressly excluded. + +13.7 Entire Agreement; Governing Law. This License constitutes the +entire agreement between the parties with respect to the subject +matter hereof. This License shall be governed by the laws of the +United States and the State of California, except that body of +California law concerning conflicts of law. + +Where You are located in the province of Quebec, Canada, the following +clause applies: The parties hereby confirm that they have requested +that this License and all related documents be drafted in English. Les +parties ont exige que le present contrat et tous les documents +connexes soient rediges en anglais. + +EXHIBIT A. + +"Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights +Reserved. + +This file contains Original Code and/or Modifications of Original Code +as defined in and that are subject to the Apple Public Source License +Version 2.0 (the 'License'). You may not use this file except in +compliance with the License. Please obtain a copy of the License at +http://www.opensource.apple.com/apsl/ and read it before using this +file. + +The Original Code and all software distributed under the License are +distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, +INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. +Please see the License for the specific language governing rights and +limitations under the License." diff --git a/GNUmakefile b/GNUmakefile index d589dc3..9cc72e4 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -5,69 +5,99 @@ # end. This is because the comm page symbols are added as a special segment, # which the linker will not thin, so we have to build thin and combine. ##--------------------------------------------------------------------- -PROJECT = Libsystem +Project = Libsystem +VersionLetter = B + +include $(MAKEFILEPATH)/CoreOS/ReleaseControl/Common.make + +ifeq ($(Version),0) +ifdef RC_ProjectSourceVersion +Version = $(RC_ProjectSourceVersion) +endif +endif no_target: @$(MAKE) -f Makefile +ifndef RC_TARGET_CONFIG +export RC_TARGET_CONFIG = MacOSX +endif +include Platforms/$(RC_TARGET_CONFIG)/Makefile.inc + ##--------------------------------------------------------------------- # For each arch, we setup the independent OBJROOT and DSTROOT, and adjust # the other flags. After all the archs are built, we copy over one on # time (for the non-dylib files), and then call lipo to create fat files # for the three dylibs. ##--------------------------------------------------------------------- -ALLARCHS = hppa i386 m68k ppc ppc64 sparc x86_64 NARCHS = $(words $(RC_ARCHS)) USRLIB = /usr/lib ifdef ALTUSRLOCALLIBSYSTEM LIBSYS = $(ALTUSRLOCALLIBSYSTEM) else -LIBSYS = $(NEXT_ROOT)/usr/local/lib/system +LIBSYS = $(SDKROOT)/usr/local/lib/system endif +FORMS = dynamic +SUFFIX = '' +ifdef FEATURE_DEBUG_DYLIB +FORMS += debug +SUFFIX += _debug +endif +ifdef FEATURE_PROFILE_DYLIB +FORMS += profile +SUFFIX += _profile +endif +BSD_LIBS = c info m pthread dbm poll dl rpcsvc proc +FPATH = /System/Library/Frameworks/System.framework -install: fake $(DSTROOT)/usr/local/lib/system/libc.a $(RC_ARCHS) -ifneq "$(NARCHS)" "1" - rsync -aH $(OBJROOT)/$(word 1,$(RC_ARCHS))/dstroot/ $(DSTROOT) - rsync -aH $(OBJROOT)/$(word 1,$(RC_ARCHS))/symroot/ $(SYMROOT) +build:: fake libSystem @set -x && \ - for i in libSystem.B.dylib libSystem.B_debug.dylib libSystem.B_profile.dylib; do \ - rm -f $(DSTROOT)$(USRLIB)/$$i && \ - lipo -create -o $(DSTROOT)$(USRLIB)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/dstroot$(USRLIB)/$$i) && \ - rm -f $(SYMROOT)/$$i && \ - lipo -create -o $(SYMROOT)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/symroot/$$i) || exit 1; \ + cd $(DSTROOT)/usr/lib && \ + for i in $(BSD_LIBS); do \ + ln -sf libSystem.dylib lib$$i.dylib || exit 1; \ done -endif + find $(DSTROOT) -type l ! -perm 755 | xargs chmod -hv 755 + install -d $(DSTROOT)$(FPATH)/Versions/$(VersionLetter)/Resources @set -x && \ - for i in libSystem.B.dylib libSystem.B_debug.dylib libSystem.B_profile.dylib; do \ - dsymutil $(SYMROOT)/$$i || exit 1; \ - done + cd $(DSTROOT)$(FPATH) && \ + ln -sf Versions/Current/PrivateHeaders && \ + ln -sf Versions/Current/Resources && \ + for S in $(SUFFIX); do \ + ln -sf Versions/Current/System$$S || exit 1; \ + done && \ + cd Versions && \ + ln -sf $(VersionLetter) Current && \ + cd $(VersionLetter) && \ + for S in $(SUFFIX); do \ + ln -sf ../../../../../../usr/lib/libSystem.$(VersionLetter)$$S.dylib System$$S || exit 1; \ + done && \ + cp -f $(SRCROOT)/Info.plist Resources # 4993197: force dependency generation for libsyscall.a fake: @set -x && \ cd $(OBJROOT) && \ echo 'main() { __getpid(); return 0; }' > fake.c && \ - cc -c fake.c && \ - ld -r -o fake fake.o -lsyscall -L$(LIBSYS) - -$(DSTROOT)/usr/local/lib/system/libc.a: - bsdmake -C libsys install + cc -c $(RC_CFLAGS) fake.c && \ + ld -r -o fake $(foreach ARCH,$(RC_ARCHS),-arch $(ARCH)) fake.o -lsyscall -L$(LIBSYS) -$(ALLARCHS): -ifneq "$(NARCHS)" "1" - mkdir -p $(OBJROOT)/$@/objroot $(OBJROOT)/$@/dstroot $(OBJROOT)/$@/symroot - $(MAKE) -f Makefile install \ - OBJROOT='$(OBJROOT)/$@/objroot' \ - TOPOBJROOT='$(OBJROOT)' \ - DSTROOT='$(OBJROOT)/$@/dstroot' \ - SYMROOT='$(OBJROOT)/$@/symroot' \ - DESTDIR='$(DSTROOT)' \ - RC_CFLAGS='-arch $@ $(RC_NONARCH_CFLAGS)' \ - RC_ARCHS='$@' \ - RC_$@=YES $(foreach ARCH,$(filter-out $@,$(ALLARCHS)),RC_$(ARCH)=) -else # NARCHS == 1 - $(MAKE) -f Makefile install TOPOBJROOT='$(OBJROOT)' DESTDIR='$(DSTROOT)' -endif # NARCHS != 1 +libc: + mkdir -p '$(OBJROOT)/libc' + bsdmake -C libsys install \ + DSTROOT='$(DSTROOT)' \ + OBJROOT='$(OBJROOT)/libc' \ + SRCROOT='$(SRCROOT)' \ + SYMROOT='$(SYMROOT)' -.DEFAULT: - @$(MAKE) -f Makefile $@ +libSystem: libc + mkdir -p '$(OBJROOT)/libSystem' + bsdmake install \ + FEATURE_LIBMATHCOMMON=$(FEATURE_LIBMATHCOMMON) \ + FEATURE_ORDER_FILE=$(FEATURE_ORDER_FILE) \ + FORMS='$(FORMS)' \ + Version=$(Version) \ + VersionLetter=$(VersionLetter) \ + DSTROOT='$(DSTROOT)' \ + OBJROOT='$(OBJROOT)/libSystem' \ + SRCROOT='$(SRCROOT)' \ + SYMROOT='$(SYMROOT)' diff --git a/Info.plist b/Info.plist index 5c67285..4261d79 100644 --- a/Info.plist +++ b/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 9.1 + 9.2 CFBundleSignature ???? CarbonLazyValues diff --git a/Makefile b/Makefile index 3354d6d..cad8f79 100644 --- a/Makefile +++ b/Makefile @@ -1,66 +1,141 @@ -# -# Generated by the Apple Project Builder. -# -# NOTE: Do NOT change this file -- Project Builder maintains it. -# -# Put all of your customizations in files called Makefile.preamble -# and Makefile.postamble (both optional), and Makefile will include them. -# - -NAME = System - -PROJECTVERSION = 2.8 -PROJECT_TYPE = Library - -OTHERLINKED = SystemMath.s -OTHERLINKEDOFILES = SystemMath.o - -OTHERSRCS = GNUmakefile Makefile.preamble Makefile Makefile.postamble \ - SystemInit.order System.order Info.plist CommPageSymbols.st libsys - -MAKEFILEDIR = $(MAKEFILEPATH)/pb_makefiles -CURRENTLY_ACTIVE_VERSION = YES -DEPLOY_WITH_VERSION_NAME = B -CODE_GEN_STYLE = DYNAMIC -MAKEFILE = library.make -NEXTSTEP_INSTALLDIR = $(USRLIBDIR) -WINDOWS_INSTALLDIR = /Library/Frameworks -PDO_UNIX_INSTALLDIR = /Library/Frameworks - -ifneq ($(filter %64,$(RC_ARCHS)),) -LP64 = 1 -endif +NAME0 = libSystem +NAME = $(NAME0).$(VersionLetter) + +# for now, use the default compiler +GCC := $(CC) +GCCLIBS = -lgcc -lgcc_eh +NARCHS != echo $(RC_ARCHS) | wc -w +.ifdef ALTUSRLOCALLIBSYSTEM +LIBSYS = $(ALTUSRLOCALLIBSYSTEM) +.else +LIBSYS = $(SDKROOT)/usr/local/lib/system +.endif +SLFS_F_PH = $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders +.ifdef SDKROOT +SDKROOTCFLAGS = -isysroot '$(SDKROOT)' +SDKROOTLDFLAGS = -syslibroot '$(SDKROOT)' +.endif +.if !empty(FEATURE_ORDER_FILE) +ORDERFILES = -Wl,-order_file,$(SRCROOT)/SystemInit.order -Wl,-order_file,$(SRCROOT)/System.order +.endif LIBS = -lc -lcommonCrypto -ldyldapis\ -linfo -ldns_sd -lm -lmacho\ - -lnotify -lunc -lkeymgr -llaunch\ - -lcopyfile -lsandbox -lquarantine -lremovefile -DEBUG_LIBS = $(LIBS) -PROF_LIBS = $(LIBS) + -lnotify -lkeymgr -llaunch \ + -lcopyfile -lsandbox -lremovefile +CONDITIONALLIBS = unc quarantine +.for L in $(CONDITIONALLIBS) +# the following should be replaced with tconf when 5784037 is complete +.if exists($(LIBSYS)/lib$(L).a) +LIBS += -l$(L) +.endif +.endfor # CONDITIONALLIBS -ifdef ALTUSRLOCALLIBSYSTEM -LIBSYS = $(ALTUSRLOCALLIBSYSTEM) -else -LIBSYS = $(NEXT_ROOT)/usr/local/lib/system -endif +# These variables are to guarantee that the left-hand side of an expression is +# always a variable +dynamic = dynamic + +all: build + +build: build-debug build-dynamic build-profile + +# These are the non B&I defaults +.ifndef RC_ProjectName +install: installhdrs install-all + +.else # RC_ProjectName + +.for F in $(FORMS) +install: BI-install-$(F) +.endfor # FORMS +.endif # RC_ProjectName + +.for A in $(RC_ARCHS) +OBJS-$(A) = $(OBJROOT)/$(A)/SystemMath.o $(OBJROOT)/$(A)/System_vers.o +.endfor # RC_ARCHS + +.for F in $(FORMS) +.if $(dynamic) == $(F) +SUFFIX$(F) = +.else +SUFFIX$(F) = _$(F) +.endif +.if !empty(FEATURE_LIBMATHCOMMON) +LIBMATHCOMMON$(F) = -L/usr/lib/system -sub_library libmathCommon$(SUFFIX$(F)) -lmathCommon$(SUFFIX$(F)) +.endif +LIPOARGS$(F) != perl -e 'printf "%s\n", join(" ", map(qq(-arch $$_ \"$(OBJROOT)/$$_/$(F)/$(NAME)$(SUFFIX$(F)).dylib\"), qw($(RC_ARCHS))))' + +.for A in $(RC_ARCHS) +build-$(F): build-$(A)-$(F) +.endfor # RC_ARCHS +build-$(F): +.if $(NARCHS) == 1 + cp -p "$(OBJROOT)/$(RC_ARCHS)/$(F)/$(NAME)$(SUFFIX$(F)).dylib" "$(SYMROOT)" +.else + lipo -create $(LIPOARGS$(F)) -output "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).dylib" +.endif + dsymutil "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).dylib" + +.for A in $(RC_ARCHS) +build-$(A)-$(F): $(OBJROOT)/$(A)/$(F) $(OBJROOT)/$(A)/CommPageSymbols.o $(OBJS-$(A)) + $(GCC) -dynamiclib -arch $(A) -pipe \ + -o '$(OBJROOT)/$(A)/$(F)/$(NAME)$(SUFFIX$(F)).dylib' \ + -compatibility_version 1 -current_version $(Version) \ + -install_name /usr/lib/$(NAME)$(SUFFIX$(F)).dylib \ + -nodefaultlibs -all_load -multi_module -Wl,-search_paths_first \ + -segcreate __DATA __commpage $(OBJROOT)/$(A)/CommPageSymbols.o \ + $(ORDERFILES) $(SKDROOTLDFLAGS) $(OBJS-$(A)) \ + -L$(DSTROOT)/usr/local/lib/system -L$(LIBSYS) $(LIBMATHCOMMON$(F)) \ + $(LIBS:C/$/$(SUFFIX$(F))/) $(GCCLIBS) + +$(OBJROOT)/$(A)/$(F): + mkdir -p '$(.TARGET)' + +.endfor # RC_ARCHS +.endfor # FORMS + +SEG1ADDR_i386 = 0xffff0000 +SEG1ADDR_ppc = 0xffff8000 +SEG1ADDR_ppc64 = 0xffffffffffff8000 +SEG1ADDR_x86_64 = 0x00007fffffe00000 +SEG1ADDR_arm = 0xffff8000 + +CFLAGS = -g -Os -Wall -Werror -I'$(SLFS_F_PH)' -fno-common $(SDKROOTCFLAGS) + +$(OBJROOT)/System_vers.c: + vers_string -c System | \ + sed -e 's/SGS_VERS/SYSTEM_VERS_STRING/' -e 's/VERS_NUM/SYSTEM_VERS_NUM/' > $(.TARGET) -LIBRARY_PATHS = -L$(DESTDIR)/usr/local/lib/system -L$(LIBSYS) -NEXTSTEP_PB_CFLAGS = -Wall -Werror -I$(NEXT_ROOT)/System/Library/Frameworks/System.framework/PrivateHeaders -NEXTSTEP_PB_LDFLAGS = -nodefaultlibs -all_load -multi_module -Wl,-search_paths_first +.for A in $(RC_ARCHS) +$(OBJROOT)/$(A)/CommPageSymbols.o: $(SRCROOT)/CommPageSymbols.st + $(GCC) -c -o '$(.TARGET:R)_intermediate.$(.TARGET:E)' -arch $(A) -x assembler-with-cpp $(CFLAGS) '$(.ALLSRC)' + ld -arch $(A) -r -seg1addr $(SEG1ADDR_$(A:C/^armv.*$/arm/)) '$(.TARGET:R)_intermediate.$(.TARGET:E)' -o '$(.TARGET)' +$(OBJROOT)/$(A)/SystemMath.o: $(SRCROOT)/SystemMath.s + $(GCC) -c -o '$(.TARGET)' -arch $(A) $(CFLAGS) '$(.ALLSRC)' -NEXTSTEP_OBJCPLUS_COMPILER = /usr/bin/cc -WINDOWS_OBJCPLUS_COMPILER = $(DEVDIR)/gcc -PDO_UNIX_OBJCPLUS_COMPILER = $(NEXTDEV_BIN)/gcc -NEXTSTEP_JAVA_COMPILER = /usr/bin/javac -WINDOWS_JAVA_COMPILER = $(JDKBINDIR)/javac.exe -PDO_UNIX_JAVA_COMPILER = $(JDKBINDIR)/javac +$(OBJROOT)/$(A)/System_vers.o: $(OBJROOT)/System_vers.c + $(GCC) -c -o '$(.TARGET)' -arch $(A) $(CFLAGS) '$(.ALLSRC)' -include $(MAKEFILEDIR)/platform.make +.endfor # RC_ARCHS --include Makefile.preamble +installhdrs: -include $(MAKEFILEDIR)/$(MAKEFILE) +.for F in $(FORMS) +BI-install-$(F): build-$(F) + mkdir -p "$(DSTROOT)/usr/lib" + @echo "===== Installing $(NAME)$(SUFFIX$(F)).dylib =====" + install "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).dylib" "$(DSTROOT)/usr/lib" + strip -S "$(DSTROOT)/usr/lib/$(NAME)$(SUFFIX$(F)).dylib" + chmod a-w "$(DSTROOT)/usr/lib/$(NAME)$(SUFFIX$(F)).dylib" + ln -sf "$(NAME)$(SUFFIX$(F)).dylib" "$(DSTROOT)/usr/lib/$(NAME0)$(SUFFIX$(F)).dylib" +.endfor # FORMS --include Makefile.postamble +install-all: build +.for F in $(FORMS) +install-all: BI-install-$(F) +.endfor # FORMS --include Makefile.dependencies +clean: +.for A in $(RC_ARCHS) + rm -rf $(OBJROOT)/$(A) +.endfor # RC_ARCHS diff --git a/Makefile.postamble b/Makefile.postamble deleted file mode 100644 index 6821dfe..0000000 --- a/Makefile.postamble +++ /dev/null @@ -1,71 +0,0 @@ -include $(CoreOSMakefiles)/ProjectBuilder/Makefile.Postamble.Common - -CC = $(GCC) # override -# gcc-3.5 doesn't support -precomp-trustfile (3689986), which -# pb_makefiles/flags.make sets, so we overwrite PRECOMP_CFLAGS -PRECOMP_CFLAGS = - -ifeq "$(BUILD_TYPE)" "normal" -LIBS += $(GCCLIBS) -else -LIBS = -endif - -# pb_makefiles erroneously omits $(BUILD_TYPE_SUFFIX) from the install name -DYLIB_INSTALL_NAME = $(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$(BUILD_TYPE_SUFFIX)$(LIBRARY_EXT) - -# The nonversioned suffix link is required by cc -pg, which is a bug in the compiler. -# We can remove those when this is fixed. - -override DEBUG_SUFFIX = _debug -PRODUCTS += $(foreach TYPE, DEBUG PROFILE, \ - $(PRODUCT_DIR)/$(LIBRARY_PREFIX)$(NAME)$($(TYPE)_SUFFIX)$(LIBRARY_EXT) \ - $(PRODUCT_DIR)/$(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$($(TYPE)_SUFFIX)$(LIBRARY_EXT) \ - ) - -SystemFramework = $(NSFRAMEWORKDIR)/System.framework -VersionDir = Versions/$(VERSION_NAME) - -compat-next: - $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)" - $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)/Versions" - $(INSTALL_DIRECTORY) "$(DSTROOT)$(SystemFramework)/$(VersionDir)" - $(LN) -fs "$(VERSION_NAME)" "$(DSTROOT)$(SystemFramework)/Versions/Current" - set -x && for suffix in "" $(DEBUG_SUFFIX) $(PROFILE_SUFFIX); do \ - $(LN) -fs "Versions/Current/$(NAME)$${suffix}" "$(DSTROOT)$(SystemFramework)/$(NAME)$${suffix}" && \ - $(LN) -fs "../../../../../..$(INSTALLDIR)/$(LIBRARY_PREFIX)$(NAME).$(VERSION_NAME)$${suffix}$(LIBRARY_EXT)" \ - "$(DSTROOT)$(SystemFramework)/$(VersionDir)/$(NAME)$${suffix}" || exit 1; \ - done - $(LN) -fs "Versions/Current/PrivateHeaders" "$(DSTROOT)$(SystemFramework)" - -compat-bsd: - set -x && for lib in $(BSD_LIBS) ; do \ - $(LN) -fs libSystem.dylib "$(DSTROOT)$(INSTALLDIR)/lib$${lib}.dylib" || exit 1; \ - done - -copy_plist: - $(MKDIR) $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources - $(LN) -fs Versions/Current/Resources $(DSTROOT)$(SystemFramework)/Resources - $(RM) -f $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources/Info.plist - $(CP) $(SRCROOT)/Info.plist $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources - $(CHMOD) 444 $(DSTROOT)$(SystemFramework)/$(VersionDir)/Resources/Info.plist - -.PHONY: comm-page-symbols -comm-page-symbols: CommPageSymbols.o - -.SUFFIXES: .st - -ALL_ARCHS = i386 ppc ppc64 x86_64 -SEG1ADDR_i386 = 0xffff0000 -SEG1ADDR_ppc = 0xffff8000 -SEG1ADDR_ppc64 = 0xffffffffffff8000 -SEG1ADDR_x86_64 = 0x00007fffffe00000 -SLFS_F_PH = /System/Library/Frameworks/System.framework/PrivateHeaders - -$(foreach A,$(ALL_ARCHS),$(OFILE_DIR)/%.$(A).o %.$(A).o): %.st - $(CC) -arch $(CURRENT_ARCH) -x assembler-with-cpp \ - -I$(SLFS_F_PH)/$(CURRENT_ARCH) \ - $(ALL_CFLAGS) -c -o $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o $< - strip -S $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o - ld -arch $(CURRENT_ARCH) -r -seg1addr $(SEG1ADDR_$(CURRENT_ARCH)) \ - $(OFILE_DIR)/commsym.$(CURRENT_ARCH).o -o $(OFILE_DIR)/$(notdir $@) diff --git a/Makefile.preamble b/Makefile.preamble deleted file mode 100644 index 1a7dd31..0000000 --- a/Makefile.preamble +++ /dev/null @@ -1,24 +0,0 @@ -GCC = gcc-4.0 -GCCLIBS = -lgcc -lgcc_eh - -BEFORE_BUILD += comm-page-symbols -BEFORE_INSTALL += profile debug -AFTER_INSTALL += compat-next compat-bsd copy_plist - -PROFILE_BUILD_LIBS := $(foreach LIBS, $(LIBS), $(LIBS)_profile) $(GCCLIBS) -DEBUG_BUILD_LIBS := $(foreach LIBS, $(LIBS), $(LIBS)_debug ) $(GCCLIBS) - -ifeq ($(BUILD_TYPE),normal) -LIBMATHCOMMONSUFFIX = -else -LIBMATHCOMMONSUFFIX = $(BUILD_TYPE_SUFFIX) -endif -OTHER_LIBTOOL_FLAGS = \ - -L/usr/lib/system -sub_library libmathCommon$(LIBMATHCOMMONSUFFIX) \ - -lmathCommon$(LIBMATHCOMMONSUFFIX) \ - -segcreate __DATA __commpage $(OFILE_DIR)/CommPageSymbols.o \ - -Wl,-order_file,SystemInit.order -Wl,-order_file,System.order - -BSD_LIBS = c info m pthread dbm poll dl rpcsvc proc - -include $(MAKEFILEPATH)/CoreOS/ProjectBuilder/Makefile.Preamble.Common diff --git a/PB.project b/PB.project deleted file mode 100644 index 3fe639f..0000000 --- a/PB.project +++ /dev/null @@ -1,32 +0,0 @@ -{ - CURRENTLY_ACTIVE_VERSION = YES; - DEPLOY_WITH_VERSION_NAME = B; - DYNAMIC_CODE_GEN = YES; - FILESTABLE = { - FRAMEWORKS = (); - FRAMEWORKSEARCH = (); - LIBRARYSEARCH = ("$(NEXT_ROOT)/usr/local/lib/system"); - OTHER_LIBS = (c, dyld, info, kvm, m, macho, notify, streams, unc, keymgr, poll, dl); - OTHER_LINKED = (SystemMath.s); - OTHER_SOURCES = (GNUmakefile, Makefile.preamble, Makefile, Makefile.postamble, System.order, Info.plist, CommPageSymbols.st); - }; - LANGUAGE = English; - MAKEFILEDIR = "$(MAKEFILEPATH)/pb_makefiles"; - NEXTSTEP_BUILDTOOL = /usr/bin/gnumake; - NEXTSTEP_COMPILEROPTIONS = "-Wall -Werror"; - NEXTSTEP_INSTALLDIR = "$(USRLIBDIR)"; - NEXTSTEP_JAVA_COMPILER = /usr/bin/javac; - NEXTSTEP_LINKEROPTIONS = "-nostdlib -all_load"; - NEXTSTEP_OBJCPLUS_COMPILER = /usr/bin/cc; - PDO_UNIX_BUILDTOOL = $NEXT_ROOT/Developer/bin/make; - PDO_UNIX_INSTALLDIR = /Library/Frameworks; - PDO_UNIX_JAVA_COMPILER = "$(JDKBINDIR)/javac"; - PDO_UNIX_OBJCPLUS_COMPILER = "$(NEXTDEV_BIN)/gcc"; - PROJECTNAME = System; - PROJECTTYPE = Library; - PROJECTVERSION = 2.8; - WINDOWS_BUILDTOOL = $NEXT_ROOT/Developer/Executables/make; - WINDOWS_INSTALLDIR = /Library/Frameworks; - WINDOWS_JAVA_COMPILER = "$(JDKBINDIR)/javac.exe"; - WINDOWS_OBJCPLUS_COMPILER = "$(DEVDIR)/gcc"; -} diff --git a/Platforms/AppleTV/Makefile.inc b/Platforms/AppleTV/Makefile.inc new file mode 100644 index 0000000..fca1805 --- /dev/null +++ b/Platforms/AppleTV/Makefile.inc @@ -0,0 +1,15 @@ +# +# Selectable features for AppleTV +# + +# Build _debug.dylib +FEATURE_DEBUG_DYLIB = 1 + +# Link libmathCommon +FEATURE_LIBMATHCOMMON = 1 + +# Use order file +FEATURE_ORDER_FILE = 1 + +# Build _profile.dylib +FEATURE_PROFILE_DYLIB = 1 diff --git a/Platforms/MacOSX/Makefile.inc b/Platforms/MacOSX/Makefile.inc new file mode 100644 index 0000000..ba71fee --- /dev/null +++ b/Platforms/MacOSX/Makefile.inc @@ -0,0 +1,15 @@ +# +# Selectable features for MacOSX +# + +# Build _debug.dylib +FEATURE_DEBUG_DYLIB = 1 + +# Link libmathCommon +FEATURE_LIBMATHCOMMON = 1 + +# Use order file +FEATURE_ORDER_FILE = 1 + +# Build _profile.dylib +FEATURE_PROFILE_DYLIB = 1 diff --git a/Platforms/iPhone/Makefile.inc b/Platforms/iPhone/Makefile.inc new file mode 100644 index 0000000..c8f102c --- /dev/null +++ b/Platforms/iPhone/Makefile.inc @@ -0,0 +1,15 @@ +# +# Selectable features for iPhone +# + +# Build _debug.dylib +#FEATURE_DEBUG_DYLIB = 1 + +# Link libmathCommon +#FEATURE_LIBMATHCOMMON = 1 + +# Use order file +#FEATURE_ORDER_FILE = 1 + +# Build _profile.dylib +#FEATURE_PROFILE_DYLIB = 1 diff --git a/SystemMath.exp b/SystemMath.exp new file mode 100644 index 0000000..ef94b1e --- /dev/null +++ b/SystemMath.exp @@ -0,0 +1,205 @@ +__fpclassifyd +__fpclassifyf +__inf +__isfinited +__isfinitef +__isnand +__isnanf +__isnormald +__isnormalf +__signbitd +__signbitf +abort +abs +acos +acosh +asctime +asin +asinh +atan +atan2 +atanh +atexit +atof +atoi +atol +bsearch +calloc +ceil +clearerr +clock +close +copysign +cos +cosh +ctime +difftime +div +dup +erf +erfc +exit +exp +exp2 +expm1 +fabs +fclose +fcntl +fdim +fdopen +feclearexcept +fegetenv +fegetexcept +fegetround +feholdexcept +feof +feraiseexcept +ferror +fesetenv +fesetexcept +fesetround +fetestexcept +feupdateenv +fflush +fgetc +fgetpos +fgets +floor +fmax +fmin +fmod +fopen +fprintf +fputc +fputs +fread +free +freopen +frexp +fscanf +fseek +fsetpos +ftell +fwrite +gamma +getc +getchar +getenv +getpid +gets +getw +gmtime +hypot +ioctl +isalnum +isalpha +isascii +iscntrl +isdigit +isgraph +islower +isprint +ispunct +isspace +isupper +isxdigit +labs +ldexp +ldiv +lgamma +localeconv +localtime +log +log10 +log1p +log2 +logb +longjmp +malloc +mblen +mbstowcs +mbtowc +memchr +memcmp +memcpy +memmove +memset +mktime +modf +modff +nan +nanf +nearbyint +nextafterd +nextafterf +open +perror +pow +printf +putc +putchar +puts +putw +qsort +rand +read +realloc +remainder +remove +remquo +rename +rewind +rint +rinttol +round +roundtol +scalb +scanf +setbuf +setlocale +setvbuf +sin +sinh +sprintf +sqrt +srand +sscanf +strcat +strchr +strcmp +strcoll +strcpy +strcspn +strerror +strftime +strlen +strncat +strncmp +strncpy +strpbrk +strrchr +strspn +strstr +strtod +strtok +strtol +strtoul +strxfrm +system +tan +tanh +time +tmpfile +tmpnam +toascii +tolower +toupper +trunc +ungetc +unlink +vfprintf +vprintf +vsprintf +wcstombs +wctomb +write diff --git a/libsys/Makefile b/libsys/Makefile index 780fb2d..409ef46 100644 --- a/libsys/Makefile +++ b/libsys/Makefile @@ -1,37 +1,19 @@ -.ifndef DSTROOT -DSTROOT != x=`pwd`/DSTROOT && mkdir -p $$x && echo $$x -.endif -.ifndef OBJROOT -OBJROOT != x=`pwd`/OBJROOT && mkdir -p $$x && echo $$x -.endif -.ifndef SRCROOT -SRCROOT != dirname `pwd` -.endif -.ifndef SYMROOT -SYMROOT != x=`pwd`/SYMROOT && mkdir -p $$x && echo $$x -.endif -ARCH != arch -.ifndef RC_ARCHS -RC_ARCHS = $(ARCH) -RC_$(RC_ARCHS) = 1 -.endif +NAME = libc + NARCHS != echo $(RC_ARCHS) | wc -w .ifdef ALTUSRLOCALLIBSYSTEM LIBSYS = $(ALTUSRLOCALLIBSYSTEM) .else -LIBSYS = $(NEXT_ROOT)/usr/local/lib/system +LIBSYS = $(SDKROOT)/usr/local/lib/system .endif NJOBS != perl -e '$$n = `/usr/sbin/sysctl -n hw.ncpu`; printf "%d\n", $$n < 2 ? 2 : ($$n * 1.5)' BSDMAKE = bsdmake -f Makefile BSDMAKEJ = $(BSDMAKE) -j $(NJOBS) -# This variables are to guarantee that the left-hand side of an expression is +# These variables are to guarantee that the left-hand side of an expression is # always a variable dynamic = dynamic -# Remove the arch stuff, since we know better here. -LOCAL_CFLAGS != echo $(RC_CFLAGS) | sed 's/ *-arch [^ ][^ ]*//g' - FORMS := debug dynamic profile all: build @@ -55,27 +37,37 @@ SUFFIX$(F) = .else SUFFIX$(F) = _$(F) .endif -LIPOARGS$(F) != perl -e 'printf "%s\n", join(" ", map(qq(-arch $$_ \"$(OBJROOT)/$$_/$(F)/libc$(SUFFIX$(F)).a\"), qw($(RC_ARCHS))))' +LIPOARGS$(F) != perl -e 'printf "%s\n", join(" ", map(qq(-arch $$_ \"$(OBJROOT)/$$_/$(F)/$(NAME)$(SUFFIX$(F)).a\"), qw($(RC_ARCHS))))' .for A in $(RC_ARCHS) build-$(F): build-$(A)-$(F) .endfor # RC_ARCHS build-$(F): .if $(NARCHS) == 1 - cp -p "$(OBJROOT)/$(RC_ARCHS)/$(F)/libc$(SUFFIX$(F)).a" "$(SYMROOT)" + cp -p "$(OBJROOT)/$(RC_ARCHS)/$(F)/$(NAME)$(SUFFIX$(F)).a" "$(SYMROOT)" .else - lipo -create $(LIPOARGS$(F)) -output "$(SYMROOT)/libc$(SUFFIX$(F)).a" + lipo -create $(LIPOARGS$(F)) -output "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).a" .endif - ranlib "$(SYMROOT)/libc$(SUFFIX$(F)).a" + ranlib "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).a" .for A in $(RC_ARCHS) build-$(A)-$(F): $(OBJROOT)/$(A)/libsystem.o mkdir -p '$(OBJROOT)/$(A)/$(F)' @set -x && \ cd '$(OBJROOT)/$(A)/$(F)' && \ - ditto -arch $(A) '$(LIBSYS)/libc-partial$(SUFFIX$(F)).a' . && \ - ar x 'libc-partial$(SUFFIX$(F)).a' && \ - ditto -arch $(A) '$(LIBSYS)/libsyscall$(SUFFIX$(F)).a' . && \ + if lipo -info '$(LIBSYS)/$(NAME)-partial$(SUFFIX$(F)).a' | grep -q '^Non-'; then \ + cp -p '$(LIBSYS)/$(NAME)-partial$(SUFFIX$(F)).a' .; \ + else \ + arch=`lipo -detailed_info '$(LIBSYS)/$(NAME)-partial$(SUFFIX$(F)).a' | sed -E -n 's/.*architecture:? //p' | sort | grep '^$(A)' | head -n 1` && \ + lipo -thin $$arch '$(LIBSYS)/$(NAME)-partial$(SUFFIX$(F)).a' -output '$(NAME)-partial$(SUFFIX$(F)).a'; \ + fi && \ + ar x '$(NAME)-partial$(SUFFIX$(F)).a' && \ + if lipo -info '$(LIBSYS)/libsyscall$(SUFFIX$(F)).a' | grep -q '^Non-'; then \ + cp -p '$(LIBSYS)/libsyscall$(SUFFIX$(F)).a' .; \ + else \ + arch=`lipo -detailed_info '$(LIBSYS)/libsyscall$(SUFFIX$(F)).a' | sed -E -n 's/.*architecture:? //p' | sort | grep '^$(A)' | head -n 1` && \ + lipo -thin $$arch '$(LIBSYS)/libsyscall$(SUFFIX$(F)).a' -output 'libsyscall$(SUFFIX$(F)).a'; \ + fi && \ ar x 'libsyscall$(SUFFIX$(F)).a' && \ '$(SRCROOT)/libsys/build-libc.pl' '$(LIBSYS)' '$(OBJROOT)/$(A)/$(F)' && \ ln -s ../libsystem.o && \ @@ -90,17 +82,17 @@ $(OBJROOT)/$(A)/libsystem.o: $(OBJROOT)/libsystem.c .endfor # RC_ARCHS $(OBJROOT)/libsystem.c: - /Developer/Makefiles/bin/version.pl Libsystem > $(.TARGET) + $(SDKROOT)/Developer/Makefiles/bin/version.pl Libsystem > $(.TARGET) installhdrs: .for F in $(FORMS) BI-install-$(F): build-$(F) mkdir -p "$(DSTROOT)/usr/local/lib/system" - @echo "Installing libc$(SUFFIX$(F)).a" - install "$(SYMROOT)/libc$(SUFFIX$(F)).a" "$(DSTROOT)/usr/local/lib/system" - ranlib "$(DSTROOT)/usr/local/lib/system/libc$(SUFFIX$(F)).a" - chmod 0444 "$(DSTROOT)/usr/local/lib/system/libc$(SUFFIX$(F)).a" + @echo "===== Installing $(NAME)$(SUFFIX$(F)).a =====" + install "$(SYMROOT)/$(NAME)$(SUFFIX$(F)).a" "$(DSTROOT)/usr/local/lib/system" + ranlib "$(DSTROOT)/usr/local/lib/system/$(NAME)$(SUFFIX$(F)).a" + chmod 0444 "$(DSTROOT)/usr/local/lib/system/$(NAME)$(SUFFIX$(F)).a" .endfor # FORMS install-all: build diff --git a/libsys/build-libc.pl b/libsys/build-libc.pl index 11519b0..ff11e1d 100755 --- a/libsys/build-libc.pl +++ b/libsys/build-libc.pl @@ -64,9 +64,9 @@ my $SyscallBase = 'libc.syscall'; # list. ########################################################################## sub processLibc { - my($arch, $dir) = @_; + my($arch, $dir, $sufname) = @_; local $_; - my $file = File::Spec->join($dir, 'libc-partial.a'); + my $file = File::Spec->join($dir, "libc-partial$sufname.a"); my $f = IO::File->new("nm -g -arch $arch $file |"); die "$MyName: nm -g -arch $arch $file: $!\n" unless defined($f); while(<$f>) { @@ -85,7 +85,12 @@ sub readLibcSyscalls { local $_; my @files = (File::Spec->join($dir, $SyscallBase)); my $archfile = File::Spec->join($dir, "$SyscallBase.$arch"); - push(@files, $archfile) if -r $archfile; + if(-r $archfile) { + push(@files, $archfile); + } elsif($arch =~ s/^armv.*/arm/) { + $archfile = File::Spec->join($dir, "$SyscallBase.$arch"); + push(@files, $archfile) if -r $archfile; + } foreach my $file (@files) { my $f = IO::File->new($file, 'r'); die "$MyName: $file: $!\n" unless defined($f); @@ -142,7 +147,7 @@ die "$MyName: $form: Unknown form\n" unless defined($suf); my($suffix, $sufname) = @$suf; readStub($usr_local_lib_system); readLibcSyscalls($arch, $usr_local_lib_system); -processLibc($arch, $usr_local_lib_system); +processLibc($arch, $usr_local_lib_system, $sufname); ########################################################################## # Invert the Stub hash, so the key will correspond to the file to process.