diff --git a/Makefile.pre.in b/Makefile.pre.in
index 8a47d6f..37df9a1 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -530,7 +530,7 @@
 		$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
 
 # Install everything
-install:	altinstall bininstall maninstall
+install:	altinstall bininstall maninstall idleinstall
 
 # Install almost everything without disturbing previous versions
 altinstall:	altbininstall libinstall inclinstall libainstall \
@@ -826,6 +826,10 @@
 	$(MAKE) -f $(srcdir)/Mac/OSX/Makefile installunixtools \
 		srcdir=$(srcdir) builddir=. dstroot=$(PYTHONFRAMEWORKPREFIX)/../..
 
+# This installs IDLE
+idleinstall:
+	SRCDIR=$(srcdir) ./$(BUILDPYTHON) $(srcdir)/Tools/idle/setup.py install --check-tkinter
+
 # Build the toplevel Makefile
 Makefile.pre: Makefile.pre.in config.status
 	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status
diff --git a/Misc/NEWS b/Misc/NEWS
index d35cc0f..5d97dd7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -582,6 +582,8 @@
 Build
 -----
 
+- On Unix, IDLE is now installed automatically.
+
 - The fpectl module is not built by default; it's dangerous or useless
   except in the hands of experts.
 
diff --git a/Tools/idle/setup.py b/Tools/idle/setup.py
index ba27bed..71549a8 100644
--- a/Tools/idle/setup.py
+++ b/Tools/idle/setup.py
@@ -1,9 +1,26 @@
-import os,glob
+import os, glob, sys
 from distutils.core import setup
 from distutils.command.build_py import build_py
 from distutils.command.install_lib import install_lib
 import idlever
 
+try:
+    pos = sys.argv.index("--check-tkinter")
+except ValueError:
+    pass
+else:
+    del sys.argv[pos]
+    try:
+        import _tkinter
+    except ImportError:
+        print >>sys.stderr, "Cannot install IDLE without _tkinter"
+        raise SystemExit
+
+try:
+    package_dir = os.path.join(os.environ["SRCDIR"], "Tools", "idle")
+except KeyError:
+    package_dir = "."
+
 # name of idle package
 idlelib = "idlelib"
 
@@ -24,7 +41,8 @@
             outfile = self.get_plain_outfile(self.build_lib, [idlelib], name)
             dir = os.path.dirname(outfile)
             self.mkpath(dir)
-            self.copy_file(name, outfile, preserve_mode = 0)
+            self.copy_file(os.path.join(package_dir, name), outfile,
+                           preserve_mode = 0)
         for name in Icons:
             outfile = self.get_plain_outfile(self.build_lib,
                                              [idlelib,"Icons"], name)
@@ -35,7 +53,8 @@
 
     def get_source_files(self):
         # returns the .py files, the .txt files, and the icons
-        icons = [os.path.join("Icons",name) for name in Icons]
+        icons = [os.path.join(package_dir, "Icons",name) for name in Icons]
+        txts = [os.path.join(package_dir, name) for name in txt_files]
         return build_py.get_source_files(self)+txt_files+icons
 
     def get_outputs(self, include_bytecode=1):
@@ -75,7 +94,7 @@
 
       cmdclass = {'build_py':idle_build_py,
                   'install_lib':idle_install_lib},
-      package_dir = {idlelib:'.'},
+      package_dir = {idlelib: package_dir},
       packages = [idlelib],
-      scripts = ['idle']
+      scripts = [os.path.join(package_dir, 'idle')]
       )
