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