# Universal Unix Makefile for Python extensions (for use with Autoconf)
# =====================================================================
# Note that this is not the same file as that distributed with Python 1.4.
# It has been slightly modified so that it can be used with scripts created
# by autoconf (using some extra commands written by James Henstridge)
# Also note that this file will also work with Python 1.5 or 1.5.1
# Short Instructions
# ------------------
# 1. Build and install Python (1.4 or newer).
# 2. run "./configure"
# 3. run "make"
# You should now have a shared library.
# Long Instructions
# -----------------
# Build *and install* the basic Python 1.4 distribution. See the
# Python README for instructions.
# Create a file Setup.in for your extension. This file follows the
# format of the Modules/Setup.in file; see the instructions there.
# The first line should just have the string
# *shared*
# For a simple module called "spam" on file "spammodule.c", it only needs
# to contain one extra line::
# spam spammodule.c
# You can build as many modules as you want in the same directory --
# just have a separate line for each of them in the Setup.in file.
#
# Note that when configure is run, The file Setup.in is parsed for @VARNAME@
# expressions, and after they are expanded, the output is put in the file
# Setup. Every time configure is run, Setup is overwritten each time
# configure is run.
# Copy this file (Misc/Makefile.pre.in) to the directory containing
# your extension. Also create a configure script. You may wish to use the
# generic one supplied with this file. (This should be done by the one
# writing the extension -- not the user).
# Run "./configure". This creates Makefile
# (producing Makefile.pre as intermediate files) and
# config.c, incorporating the values for sys.prefix, sys.exec_prefix
# and sys.version from the installed Python binary. For this to work,
# the python binary must be on your path. If this fails, try
# ./configure --with-python=<path>/python
# or
# ./configure --with-python-version=<version> --with-python-prefix=<prefix> \
# --with-python-exec-prefix=<exec_prefix>
# where <prefix> is the prefix used to install Python
# If you are building your extension as a shared library (your
# Setup.in file starts with *shared*), run "make" or "make sharedmods"
# to build the shared library files. If you are building a statically
# linked Python binary (the only solution of your platform doesn't
# support shared libraries, and sometimes handy if you want to
# distribute or install the resulting Python binary), run "make
# python".
# Note: Each time you edit Makefile.pre.in or Setup.in, you must run
# "./configure" before running "make".
# Hint: if you want to use VPATH, you can start in an empty
# subdirectory and type (where <srcdir> is the location of the source):
# <srcdir>/configure --srcdir=<srcdir>
# make
# === Bootstrap variables (edited through "./configure") ===
# The prefix used by "make inclinstall libainstall" of core python
prefix= @prefix@
# The exec_prefix used by the same
exec_prefix= @exec_prefix@
# Source directory and VPATH (for VPATH builds).
srcdir= @srcdir@
VPATH= @srcdir@
# === Variables that you may want to customize (rarely) ===
# (Static) build target
TARGET= python
# Add more -I and -D options here
CFLAGS= $(OPT) -I$(INCLUDEPY) -I$(LIBPL) $(DEFS)
# These two variables can be set in Setup to merge extensions.
# See example[23].
BASELIB=
BASESETUP=
# === Variables set by makesetup ===
MODOBJS= _MODOBJS_
MODLIBS= _MODLIBS_
# === Definitions added by makesetup ===
# === Variables from configure ===
VERSION= @VERSION@
CC= @CC@
LINKCC= @LINKCC@
SGI_ABI= @SGI_ABI@
OPT= @OPT@
LDFLAGS= @LDFLAGS@
LDLAST= @LDLAST@
DEFS= @DEFS@
LIBS= @LIBS@
LIBM= @LIBM@
LIBC= @LIBC@
RANLIB= @RANLIB@
MACHDEP= @MACHDEP@
SO= @SO@
LDSHARED= @LDSHARED@
CCSHARED= @CCSHARED@
LINKFORSHARED= @LINKFORSHARED@
@SET_CCC@
#the python executable (from configure)
PYTHON = @PYTHON@
# Install Stuff
INSTALL = @INSTALL@
PY_LIB_DIR = @PYTHON_LIBRARY_DIR@
PY_MOD_DIR = @PYTHON_MODULE_DIR@
# === Fixed definitions ===
# Shell used by make (some versions default to the login shell, which is bad)
SHELL= /bin/sh
# Expanded directories
BINDIR= $(exec_prefix)/bin
LIBDIR= $(exec_prefix)/lib
MANDIR= $(prefix)/man
INCLUDEDIR= $(prefix)/include
SCRIPTDIR= $(prefix)/lib
# Detailed destination directories
BINLIBDEST= $(LIBDIR)/python$(VERSION)
LIBDEST= $(SCRIPTDIR)/python$(VERSION)
INCLUDEPY= $(INCLUDEDIR)/python$(VERSION)
LIBP= $(exec_prefix)/lib/python$(VERSION)
LIBPL= $(LIBP)/config
# === Fixed rules ===
# Default target. This builds shared libraries.
default: sharedmods
# Build shared libraries from our extension modules
sharedmods: $(SHAREDMODS)
# Target to build a pyc file from a py file:
.py.pyc:
$(PYTHON) -c "import py_compile; py_compile.compile('$<')"
.SUFFIXES: .py .pyc
# Target to install scripts and modules
install: install-shmods install-scripts
install-shmods: $(SHAREDMODS)
@echo 'Installing shared modules...'
@if [ -n "$(SHAREDMODS)" ]; then \
for mod in $(SHAREDMODS); do \
echo " install -m 555 $$mod $(PY_MOD_DIR)"; \
$(INSTALL) -m 555 $$mod $(PY_MOD_DIR); \
done; \
fi
install-scripts: $(SCRIPTS)
@if [ -n "$(SCRIPTS)" ]; then \
echo 'Installing scripts...'; \
for script in $(SCRIPTS); do \
dir=`dirname $$script`; \
if [ ! -d $(PY_LIB_DIR)/$$dir ]; then \
$(INSTALL) -d $(PY_LIB_DIR)/$$dir; \
fi; \
echo " install -m 644 $$script $(PY_LIB_DIR)/$$dir"; \
$(INSTALL) -m 644 $$script $(PY_LIB_DIR)/$$dir; \
done; \
echo "Compiling..."; \
for script in $(SCRIPTS); do \
$(PYTHON) -c "import py_compile; py_compile.compile(\"$(PY_LIB_DIR)/$$script\")"; \
done; \
fi
# Handy target to remove intermediate files and backups
clean:
-rm -f *.o *~
# Handy target to remove everything that is easily regenerated
clobber: clean
-rm -f *.a tags TAGS config.c Makefile.pre python
-rm -f *.so *.sl so_locations
# Handy target to remove everything you don't want to distribute
distclean: clobber
-rm -f Makefile Setup
-rm -f config.status config.log config.cache
syntax highlighted by Code2HTML, v. 0.9.1