1# This file can be invoked from the various frameworkinstall... targets in the 2# main Makefile. The next couple of variables are overridden on the 3# commandline in that case. 4 5VERSION=@VERSION@ 6ABIFLAGS=@ABIFLAGS@ 7LDVERSION=@LDVERSION@ 8ENSUREPIP=@ENSUREPIP@ 9builddir = .. 10srcdir=@srcdir@ 11prefix=@prefix@ 12exec_prefix=@exec_prefix@ 13LIBDEST=$(prefix)/lib/python$(VERSION) 14RUNSHARED=@RUNSHARED@ 15BUILDEXE=@BUILDEXEEXT@ 16BUILDPYTHON=$(builddir)/python$(BUILDEXE) 17DESTDIR= 18LDFLAGS=@LDFLAGS@ 19FRAMEWORKUNIXTOOLSPREFIX=@FRAMEWORKUNIXTOOLSPREFIX@ 20PYTHONFRAMEWORK=@PYTHONFRAMEWORK@ 21PYTHONFRAMEWORKIDENTIFIER=@PYTHONFRAMEWORKIDENTIFIER@ 22LIPO_32BIT_FLAGS=@LIPO_32BIT_FLAGS@ 23LIPO_INTEL64_FLAGS=@LIPO_INTEL64_FLAGS@ 24CC=@CC@ 25MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@ 26export MACOSX_DEPLOYMENT_TARGET 27 28 29 30# These are normally glimpsed from the previous set 31BINDIR= @bindir@ 32PYTHONAPPSDIR=@FRAMEWORKINSTALLAPPSPREFIX@/$(PYTHONFRAMEWORK) $(VERSION) 33APPINSTALLDIR=$(prefix)/Resources/Python.app 34 35# Variables for installing the "normal" unix binaries 36INSTALLED_PYTHONAPP=$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK) 37 38# Items more-or-less copied from the main Makefile 39DIRMODE=755 40FILEMODE=644 41INSTALL=@INSTALL@ 42INSTALL_SYMLINK=ln -fsn 43INSTALL_PROGRAM=@INSTALL_PROGRAM@ 44INSTALL_SCRIPT= @INSTALL_SCRIPT@ 45INSTALL_DATA=@INSTALL_DATA@ 46LN=@LN@ 47STRIPFLAG=-s 48CPMAC=CpMac 49 50APPTEMPLATE=$(srcdir)/Resources/app 51APPSUBDIRS=MacOS Resources 52compileall=$(srcdir)/../Lib/compileall.py 53 54installapps: install_Python install_PythonLauncher install_IDLE 55 56# 57# Install unix tools in /usr/local/bin. These are just aliases for the 58# actual installation inside the framework. 59# 60installunixtools: 61 if [ ! -d "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ]; then \ 62 $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\ 63 fi 64 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 65 for fn in \ 66 idle3 \ 67 pydoc3 \ 68 python3 \ 69 python3-config \ 70 ; \ 71 do \ 72 rm -f $${fn} ; \ 73 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 74 done 75 -if test "x$(VERSION)" != "x$(LDVERSION)"; then \ 76 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 77 for fn in \ 78 python$(VERSION)-config \ 79 ; \ 80 do \ 81 rm -f $${fn} ;\ 82 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 83 done ;\ 84 fi 85 -if test "x$(LIPO_32BIT_FLAGS)" != "x"; then \ 86 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 87 for fn in \ 88 python3-32 \ 89 ; \ 90 do \ 91 rm -f $${fn} ;\ 92 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 93 done ;\ 94 fi 95 -if test "x$(LIPO_INTEL64_FLAGS)" != "x"; then \ 96 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 97 for fn in \ 98 python3-intel64 \ 99 ; \ 100 do \ 101 rm -f $${fn} ;\ 102 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 103 done ;\ 104 fi 105 -if test "x$(ENSUREPIP)" != "xno" ; then \ 106 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 107 for fn in \ 108 pip3 \ 109 ; \ 110 do \ 111 rm -f $${fn} ;\ 112 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 113 done ;\ 114 fi 115 116# 117# Like installunixtools, but only install links to the versioned binaries. 118# 119altinstallunixtools: 120 if [ ! -d "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ]; then \ 121 $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" ;\ 122 fi 123 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 124 for fn in \ 125 idle$(VERSION) \ 126 pydoc$(VERSION) \ 127 python$(VERSION) \ 128 python$(LDVERSION)-config \ 129 ; \ 130 do \ 131 rm -f $${fn} ;\ 132 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 133 done 134 -if test "x$(VERSION)" != "x$(LDVERSION)"; then \ 135 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 136 for fn in \ 137 python$(LDVERSION) \ 138 ; \ 139 do \ 140 rm -f $${fn} ;\ 141 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 142 done ;\ 143 fi 144 -if test "x$(LIPO_32BIT_FLAGS)" != "x"; then \ 145 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 146 for fn in \ 147 python$(VERSION)-32 \ 148 ; \ 149 do \ 150 rm -f $${fn} ;\ 151 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 152 done ;\ 153 fi 154 -if test "x$(LIPO_INTEL64_FLAGS)" != "x"; then \ 155 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 156 for fn in \ 157 python$(VERSION)-intel64 \ 158 ; \ 159 do \ 160 rm -f $${fn} ;\ 161 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 162 done ;\ 163 fi 164 -if test "x$(ENSUREPIP)" != "xno" ; then \ 165 cd "$(DESTDIR)$(FRAMEWORKUNIXTOOLSPREFIX)/bin" && \ 166 for fn in \ 167 pip$(VERSION) \ 168 ; \ 169 do \ 170 rm -f $${fn} ;\ 171 $(LN) -s $(BINDIR)/$${fn} $${fn} ;\ 172 done ;\ 173 fi 174 175pythonw: $(srcdir)/Tools/pythonw.c Makefile 176 $(CC) $(LDFLAGS) -DPYTHONFRAMEWORK='"$(PYTHONFRAMEWORK)"' -o $@ \ 177 $(srcdir)/Tools/pythonw.c -I.. -I$(srcdir)/../Include \ 178 ../$(PYTHONFRAMEWORK).framework/Versions/$(VERSION)/$(PYTHONFRAMEWORK) 179 180install_PythonLauncher: 181 cd PythonLauncher && make install DESTDIR=$(DESTDIR) 182 183install_Python: 184 @for i in "$(PYTHONAPPSDIR)" "$(APPINSTALLDIR)" "$(APPINSTALLDIR)/Contents"; do \ 185 if test ! -d "$(DESTDIR)$$i"; then \ 186 echo "Creating directory $(DESTDIR)$$i"; \ 187 $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$$i"; \ 188 fi;\ 189 done 190 @for i in $(APPSUBDIRS); do \ 191 if test ! -d "$(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; then \ 192 echo "Creating directory $(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ 193 $(INSTALL) -d -m $(DIRMODE) "$(DESTDIR)$(APPINSTALLDIR)/Contents/$$i"; \ 194 else true; \ 195 fi; \ 196 done 197 @for d in . $(APPSUBDIRS); \ 198 do \ 199 a=$(APPTEMPLATE)/$$d; \ 200 if test ! -d $$a; then continue; else true; fi; \ 201 b="$(DESTDIR)$(APPINSTALLDIR)/Contents/$$d"; \ 202 for i in $$a/*; \ 203 do \ 204 case $$i in \ 205 *CVS) ;; \ 206 *.svn) ;; \ 207 *.py[co]) ;; \ 208 *.orig) ;; \ 209 *~) ;; \ 210 *idx) \ 211 echo $(CPMAC) "$$i" $$b; \ 212 $(CPMAC) "$$i" "$$b"; \ 213 ;; \ 214 *) \ 215 if test -d $$i; then continue; fi; \ 216 if test -x $$i; then \ 217 echo $(INSTALL_SCRIPT) "$$i" "$$b"; \ 218 $(INSTALL_SCRIPT) "$$i" "$$b"; \ 219 else \ 220 echo $(INSTALL_DATA) "$$i" "$$b"; \ 221 $(INSTALL_DATA) "$$i" "$$b"; \ 222 fi;; \ 223 esac; \ 224 done; \ 225 done 226 $(INSTALL_PROGRAM) $(STRIPFLAG) $(BUILDPYTHON) "$(DESTDIR)$(APPINSTALLDIR)/Contents/MacOS/$(PYTHONFRAMEWORK)" 227 sed -e "s!%bundleid%!$(PYTHONFRAMEWORKIDENTIFIER)!g" \ 228 -e "s!%version%!`$(RUNSHARED) $(BUILDPYTHON) \ 229 -c 'import platform; print(platform.python_version())'`!g" \ 230 < "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist.in" \ 231 > "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist" 232 rm "$(DESTDIR)$(APPINSTALLDIR)/Contents/Info.plist.in" 233 234 235install_IDLE: 236 test -d "$(DESTDIR)$(PYTHONAPPSDIR)" || mkdir -p "$(DESTDIR)$(PYTHONAPPSDIR)" 237 -test -d "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" && rm -rf "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" 238 /bin/cp -PR "$(srcdir)/IDLE/IDLE.app" "$(DESTDIR)$(PYTHONAPPSDIR)" 239 ln -sf "$(INSTALLED_PYTHONAPP)" "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app/Contents/MacOS/Python" 240 sed -e "s!%prefix%!$(prefix)!g" -e 's!%exe%!$(PYTHONFRAMEWORK)!g' < "$(srcdir)/IDLE/IDLE.app/Contents/MacOS/IDLE" > "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app/Contents/MacOS/IDLE" 241 sed "s!%version%!`$(RUNSHARED) $(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`!g" < "$(srcdir)/IDLE/IDLE.app/Contents/Info.plist" > "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app/Contents/Info.plist" 242 if [ -f "$(DESTDIR)$(LIBDEST)/idlelib/config-main.def" ]; then \ 243 /bin/cp -p "$(DESTDIR)$(LIBDEST)/idlelib/config-main.def" \ 244 "$(DESTDIR)$(LIBDEST)/idlelib/config-main.def~" ; \ 245 sed -e 's!name= IDLE Classic Windows!name= IDLE Classic OSX!g' \ 246 < "$(DESTDIR)$(LIBDEST)/idlelib/config-main.def~" \ 247 > "$(DESTDIR)$(LIBDEST)/idlelib/config-main.def" ; \ 248 rm "$(DESTDIR)$(LIBDEST)/idlelib/config-main.def~" ; \ 249 fi 250 if [ -f "$(DESTDIR)$(LIBDEST)/idlelib/config-extensions.def" ]; then \ 251 /bin/cp -p "$(DESTDIR)$(LIBDEST)/idlelib/config-extensions.def" \ 252 "$(DESTDIR)$(LIBDEST)/idlelib/config-extensions.def~" ; \ 253 sed -e 's!zoom-height=<Alt-Key-2>!zoom-height=<Option-Key-0>!g' \ 254 -e 's!<Alt-Key-!<Option-Key-!g' \ 255 < "$(DESTDIR)$(LIBDEST)/idlelib/config-extensions.def~" \ 256 > "$(DESTDIR)$(LIBDEST)/idlelib/config-extensions.def" ; \ 257 rm "$(DESTDIR)$(LIBDEST)/idlelib/config-extensions.def~" ; \ 258 fi 259 touch "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" 260 chmod -R ugo+rX,go-w "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app" 261 chmod ugo+x "$(DESTDIR)$(PYTHONAPPSDIR)/IDLE.app/Contents/MacOS/IDLE" 262 263$(INSTALLED_PYTHONAPP): install_Python 264 265installextras: $(srcdir)/Extras.install.py 266 $(INSTALL) -d "$(DESTDIR)$(prefix)/share/doc/python$(VERSION)/examples" 267 $(RUNSHARED) $(BUILDPYTHON) $(srcdir)/Extras.install.py $(srcdir)/../Tools \ 268 "$(DESTDIR)$(prefix)/share/doc/python$(VERSION)/examples/Tools" ; \ 269 chmod -R ugo+rX,go-w "$(DESTDIR)$(prefix)/share/doc/python$(VERSION)/examples/Tools" 270 271clean: 272 rm pythonw 273 cd PythonLauncher && make clean 274 275Makefile: $(srcdir)/Makefile.in ../config.status 276 cd .. && CONFIG_FILES=Mac/Makefile CONFIG_HEADERS= $(SHELL) ./config.status 277