xref: /titanic_50/usr/src/tools/Makefile.python (revision c0e7977a434048a8bc7386ea0e8befaa77a646cf)
1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21 
22 #
23 # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
24 #
25 
26 #
27 # This Makefile provides a framework for building the onbld python
28 # modules with multiple versions of python.
29 #
30 # It expects as input:
31 #
32 #    PYSRCS   - List of python source files, these are also delivered as
33 #               build product.
34 #
35 #    PYOBJS   - List of compiled python (.pyc) files, with no directory prefix
36 #
37 #    PYTOPDIR - Absolute (including $(ROOT)) path to which files will
38 #               be installed, up until the version specific component.
39 #
40 #    PYMODDIR - Relative path to which files will be installed, below
41 #               the version specific component.
42 #
43 #    For example, to install to /opt/onbld/lib/onbld/python*/bar/
44 #
45 #          PYTOPDIR = $(ROOTONBLDLIB)
46 #          PYMODDIR = bar
47 #
48 #
49 # It provides as output:
50 #
51 #    ROOTPYFILES - The list of $(ROOT)-relative paths to which python
52 #                  source and binary files will be installed.  Your
53 #                  Makefile's 'install' target should depend upon
54 #                  this.
55 #
56 #    PYVERSOBJS  - The list of paths to compiled python build products,
57 #                  including their subdirectory.
58 #
59 #    pyclobber   - A target on which 'clobber' should depend, which
60 #                  removes the per-version python directories and the
61 #                  output within them.
62 #
63 
64 PYFILES = $(PYSRCS) $(PYOBJS)
65 
66 ROOTPYDIR_26 = $(PYTOPDIR)/python2.6/$(PYMODDIR)
67 ROOTPYFILES_26	= $(PYFILES:%=$(ROOTPYDIR_26)/%)
68 
69 ROOTPYFILES = $(ROOTPYFILES_26)
70 $(ROOTPYFILES) := FILEMODE = 0444
71 
72 PYVERSDIRS = python2.6
73 
74 PY26OBJS = $(PYOBJS:%=python2.6/%)
75 $(PY26OBJS) := PYTHON = $(PYTHON_26)
76 
77 PYVERSOBJS = $(PY26OBJS)
78 
79 CLOBBERFILES += $(PYVERSOBJS)
80 CLOBBERDIRS += $(PYVERSDIRS)
81 
82 .KEEP_STATE:
83 
84 python2.6/%.pyc: %.py
85 	@[ -d $(@D) ] || mkdir $(@D)
86 	$(RM) $@
87 	$(PYTHON) -mpy_compile $<
88 	$(MV) $(*).pyc $@
89 
90 $(ROOTPYDIR_26)/%.pyc: python2.6/%.pyc
91 	$(INS.pyfile)
92 
93 $(ROOTPYDIR_26)/%.py: %.py
94 	$(INS.pyfile)
95 
96 pyclobber:
97 	$(RM) $(CLOBBERFILES)
98 	$(RM) -rf $(CLOBBERDIRS)
99