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.
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.
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]
23 # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
28 # This Makefile provides a framework for building the onbld python
29 # modules with multiple versions of python.
31 # It expects as input:
33 # PYSRCS - List of python source files, these are also delivered as
36 # PYOBJS - List of compiled python (.pyc) files, with no directory prefix
38 # PYTOPDIR - Absolute (including $(ROOT)) path to which files will
39 # be installed, up until the version specific component.
41 # PYMODDIR - Relative path to which files will be installed, below
42 # the version specific component.
44 # For example, to install to /opt/onbld/lib/onbld/python*/bar/
46 # PYTOPDIR = $(ROOTONBLDLIB)
50 # It provides as output:
52 # ROOTPYFILES - The list of $(ROOT)-relative paths to which python
53 # source and binary files will be installed. Your
54 # Makefile's 'install' target should depend upon
57 # PYVERSOBJS - The list of paths to compiled python build products,
58 # including their subdirectory.
60 # pyclobber - A target on which 'clobber' should depend, which
61 # removes the per-version python directories and the
65 PYFILES
= $
(PYSRCS
) $
(PYOBJS
)
67 ROOTPYDIR
= $
(PYTOPDIR
)/python$
(PYVER
)/$
(PYMODDIR
)
68 ROOTPYFILES
= $
(PYFILES
:%=$
(ROOTPYDIR
)/%)
70 $
(ROOTPYFILES
) := FILEMODE
= 0444
72 PYVERSDIRS
= python$
(PYVER
)
74 PYVERSOBJS
= $
(PYOBJS
:%=python$
(PYVER
)/%)
76 CLOBBERFILES
+= $
(PYVERSOBJS
)
77 CLOBBERDIRS
+= $
(PYVERSDIRS
)
81 $
(ROOTPYDIR
)/%.py
: ../%.py
86 $
(RM
) -rf $
(CLOBBERDIRS
)
88 # Python 2 module compilation
90 python$
(PYVER
)/%.pyc
: ../%.py
91 @[ -d $
(@D) ] || mkdir $
(@D)
93 $
(PYTHON
) -mpy_compile $
<
96 $
(ROOTPYDIR
)/%.pyc
: python$
(PYVER
)/%.pyc
99 # Python 3 module compilation
101 python$
(PYVER
)/__pycache__
/%.cpython$
(PYPKGVERS
).pyc
: ../%.py
102 @[ -d $
(@D) ] || mkdir
-p $
(@D)
104 $
(PYTHON3
) -mpy_compile $
<
105 $
(MV
) ../__pycache__
/$
(*).cpython$
(PYPKGVERS
).pyc $
@
107 $
(ROOTPYDIR
)/__pycache__
/%.pyc
: python$
(PYVER
)/__pycache__
/%.pyc