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 # Copyright 2012 OmniTI Computer Consulting, Inc. All rights reserved. 25 # 26 27 # 28 # This Makefile provides a framework for building the onbld python 29 # modules with multiple versions of python. 30 # 31 # It expects as input: 32 # 33 # PYSRCS - List of python source files, these are also delivered as 34 # build product. 35 # 36 # PYOBJS - List of compiled python (.pyc) files, with no directory prefix 37 # 38 # PYTOPDIR - Absolute (including $(ROOT)) path to which files will 39 # be installed, up until the version specific component. 40 # 41 # PYMODDIR - Relative path to which files will be installed, below 42 # the version specific component. 43 # 44 # For example, to install to /opt/onbld/lib/onbld/python*/bar/ 45 # 46 # PYTOPDIR = $(ROOTONBLDLIB) 47 # PYMODDIR = bar 48 # 49 # 50 # It provides as output: 51 # 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 55 # this. 56 # 57 # PYVERSOBJS - The list of paths to compiled python build products, 58 # including their subdirectory. 59 # 60 # pyclobber - A target on which 'clobber' should depend, which 61 # removes the per-version python directories and the 62 # output within them. 63 # 64 65 PYFILES = $(PYSRCS) $(PYOBJS) 66 67 ROOTPYDIR_26 = $(PYTOPDIR)/python2.6/$(PYMODDIR) 68 ROOTPYFILES_26 = $(PYFILES:%=$(ROOTPYDIR_26)/%) 69 70 ROOTPYFILES = $(ROOTPYFILES_26) 71 $(ROOTPYFILES) := FILEMODE = 0444 72 73 PYVERSDIRS = python2.6 74 75 PY26OBJS = $(PYOBJS:%=python2.6/%) 76 $(PY26OBJS) := PYTHON = $(PYTHON_26) 77 78 PYVERSOBJS = $(PY26OBJS) 79 80 CLOBBERFILES += $(PYVERSOBJS) 81 CLOBBERDIRS += $(PYVERSDIRS) 82 83 .KEEP_STATE: 84 85 python2.6/%.pyc: %.py 86 @[ -d $(@D) ] || mkdir $(@D) 87 $(RM) $@ 88 $(PYTHON) -mpy_compile $< 89 $(MV) $(*).pyc $@ 90 91 $(ROOTPYDIR_26)/%.pyc: python2.6/%.pyc 92 $(INS.pyfile) 93 94 $(ROOTPYDIR_26)/%.py: %.py 95 $(INS.pyfile) 96 97 pyclobber: 98 $(RM) $(CLOBBERFILES) 99 $(RM) -rf $(CLOBBERDIRS)