1## 2# Makefile for python 3## 4 5Project = python 6Extra_Configure_Flags = --enable-ipv6 --with-threads --enable-framework=/System/Library/Frameworks --enable-toolbox-glue 7 8##--------------------------------------------------------------------- 9# Extra_CC_Flags and Extra_LD_Flags are needed because CFLAGS gets overridden 10# by the RC_* variables. These values would normally be set by the default 11# python Makefile 12# 13# Workaround for 3281234 (test_coercion failure due to non IEEE-754 in 14# optimizer): add -mno-fused-madd flag 15##--------------------------------------------------------------------- 16Extra_CC_Flags += -fno-common -mno-fused-madd 17Extra_LD_Flags += -Wl,-F. 18Extra_Install_Flags = DESTDIR=${DSTROOT} 19GnuAfterInstall = fixup-after-install 20 21# It's a GNU Source project 22include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make 23 24# Override compiler setting from GNUSource.make to use those set in GNUmakefile 25override CC = $(MY_CC) 26override CXX = $(MY_CXX) 27 28Install_Flags := $(shell echo $(Install_Flags) | sed 's/prefix=[^ ]* *//') 29Install_Target = frameworkinstallstructure libinstall libainstall sharedinstall oldsharedinstall 30FIX = $(SRCROOT)/fix 31 32##--------------------------------------------------------------------- 33# Patch Makefiles and pyconfig.h just after running configure 34##--------------------------------------------------------------------- 35ConfigStamp2 = $(ConfigStamp)2 36 37configure:: $(ConfigStamp2) 38 39$(ConfigStamp2): $(ConfigStamp) 40 $(_v) ed - ${OBJROOT}/Makefile < $(FIX)/Makefile.ed 41 $(_v) ed - ${OBJROOT}/pyconfig.h < $(FIX)/pyconfig.ed 42 $(_v) patch ${OBJROOT}/Lib/plat-mac/applesingle.py \ 43 $(FIX)/applesingle.py.patch 44 $(_v) $(TOUCH) $(ConfigStamp2) 45 46##--------------------------------------------------------------------- 47# Fixup a lot of problems after the install 48##--------------------------------------------------------------------- 49FRAMEWORKS = /System/Library/Frameworks 50PYFRAMEWORK = $(FRAMEWORKS)/Python.framework 51VERSIONSVER = $(PYFRAMEWORK)/Versions/$(VERS) 52RESOURCESVERS = $(VERSIONSVER)/Resources 53LIBPYTHONVERS = $(VERSIONSVER)/lib/python$(VERS) 54RUNPYTHON = DYLD_FRAMEWORK_PATH=$(OBJROOT) $(OBJROOT)/python.exe 55BYTE2UTF16 = $(RUNPYTHON) $(FIX)/byte2utf16.py 56UTF162BYTE = $(RUNPYTHON) $(FIX)/utf162byte.py 57 58fixup-after-install: delete-stuff \ 59 strip-installed-files \ 60 fix-empty-file \ 61 fix-CFBundleIdentifier \ 62 fix-CFBundleShortVersionString \ 63 fix-paths \ 64 make-Library-Python \ 65 fix-permissions \ 66 fix-LINKFORSHARED 67 68delete-stuff: 69 rm -rf $(DSTROOT)/usr/local 70 rm -rf $(DSTROOT)$(PYFRAMEWORK)/Headers 71 rm -rf $(DSTROOT)$(PYFRAMEWORK)/Python 72 rm -rf $(DSTROOT)$(PYFRAMEWORK)/Resources 73 rm -rf $(DSTROOT)$(PYFRAMEWORK)/Versions/Current 74 rm -rf $(DSTROOT)$(VERSIONSVER)/Headers 75 rm -rf $(DSTROOT)$(VERSIONSVER)/bin 76 77strip-installed-files: 78 strip -x $(DSTROOT)$(VERSIONSVER)/Python 79 strip -x $(DSTROOT)$(LIBPYTHONVERS)/config/python.o 80 strip -x $(DSTROOT)$(LIBPYTHONVERS)/lib-dynload/*.so 81 82fix-empty-file: 83 echo '#' > $(DSTROOT)$(LIBPYTHONVERS)/bsddb/test/__init__.py 84 $(RUNPYTHON) $(OBJROOT)/Lib/py_compile.py $(DSTROOT)$(LIBPYTHONVERS)/bsddb/test/__init__.py 85 $(RUNPYTHON) -O $(OBJROOT)/Lib/py_compile.py $(DSTROOT)$(LIBPYTHONVERS)/bsddb/test/__init__.py 86 87fix-CFBundleIdentifier: 88 ed - $(DSTROOT)$(RESOURCESVERS)/Info.plist < $(FIX)/pfinfo.ed 89 90fix-CFBundleShortVersionString: 91 @set -x && \ 92 for s in `find $(DSTROOT)$(RESOURCESVERS) -name InfoPlist.strings`; do \ 93 $(UTF162BYTE) $$s $(OBJROOT)/temp.ip.strings && \ 94 ed - $(OBJROOT)/temp.ip.strings < $(FIX)/removeCFkeys.ed && \ 95 $(BYTE2UTF16) $(OBJROOT)/temp.ip.strings $$s; \ 96 done 97 98##--------------------------------------------------------------------- 99# adjustSLF.ed removes -arch xxx flags. 100##--------------------------------------------------------------------- 101fix-paths: 102 ed - $(DSTROOT)$(LIBPYTHONVERS)/config/Makefile < $(FIX)/adjustSLF.ed 103 104# 4144521 105fix-LINKFORSHARED: 106 ed - $(DSTROOT)$(LIBPYTHONVERS)/config/Makefile < $(FIX)/LINKFORSHARED.ed 107 108LIBRARYPYTHON = /Library/Python 109LIBRARYPYTHONVERS = $(LIBRARYPYTHON)/$(VERS) 110ORIGSITEPACKAGES = $(LIBRARYPYTHONVERS)/site-packages 111SITEPACKAGES = $(LIBPYTHONVERS)/site-packages 112 113make-Library-Python: 114 install -d $(DSTROOT)$(LIBRARYPYTHONVERS) 115 mv -f $(DSTROOT)$(SITEPACKAGES) $(DSTROOT)$(LIBRARYPYTHONVERS) 116 ln -sf ../../../../../../../..$(ORIGSITEPACKAGES) $(DSTROOT)$(SITEPACKAGES) 117 118fix-permissions: 119 @set -x && for i in Library; do \ 120 chgrp -Rf admin $(DSTROOT)/$$i && \ 121 chmod -Rf g+w $(DSTROOT)/$$i; \ 122 done 123