[Bio] / ReleaseTools / standard.mk Repository:
ViewVC logotype

View of /ReleaseTools/standard.mk

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (download) (annotate)
Thu Dec 2 01:54:02 2004 UTC (15 years, 2 months ago) by efrank
Branch: MAIN
CVS Tags: V00-00-15, post-st-migration2, post-st-migration
Changes since 1.5: +14 -3 lines
Add new macro, BINSHSCRIPTS.  Set this to list of borne shell scripts
in package level makefile.

The old BINSCRIPTS is deprecated...although we ignore it now, we will
eventually need to know what kind of script each is so that we can
edit the #! line upon installation, especially for python and perl.
Even for the /usr/bin/env trick!  (was different on gentoo)

We now have BINPYSCRIPTS and BINSHSCRIPTS

#######################################################################
# standard.mk
#
# Centralized make rules, macros, etc., shared amongst the packages.
# Package level makefiles do  not define rules, targets, etc.  Instead,
# they define a few macros needed to generate the build lists and
# standard.mk does the rest.
#
# The general pattern is to have "all of a kind" selected by wildcard
# into a build product, e.g., all .c or .cc go into a library or
# all .py get .pyc'd into the install area.  But, there are a few
# macro's that define things to exclude, e.g., .c files that have main()
# and are executables or foo.py files that are top-level programs and
# are to be installed in bin as foo.
#
# A package level makefile does "include standard.mk".  This works because
# of -I's in the Makefile.top in the workdir.  See Makefile.PackageSample.
#
#######################################################################

########################################################################
# Document macros users define in their package level makefiles here:
########################################################################
#
#BINPYSCRIPTS := script1.py etc.  List of py scripts to install in bin.
#                Installed as script1, not script1.py.  Filtered out of
#                python library list (LIBPYFILES)
#BINSHSCRIPTS:   List of borne shell scripts to be copied to bin verbatim.
#
#SCHEMATOOLS := file.py, etc.  List of python files defining input to schema
#	        tools.
#
#BINSCRIPTS:     List of scripts to be copied to bin verbatim.
#
#                *** migrate away from BINSCRIPTS!  The extra info that
#                *** its borne shell, py, etc., will let us edit the #! line
#                *** during installation, eventually.
#



########################################################################
# Various lists of things to build
#   implemented via macros above.
########################################################################


LIBPYFILES := $(filter-out $(BINPYSCRIPTS) $(SCHEMATOOLS), $(wildcard *.py))



########################################################################
# Package-level makefile Targets
########################################################################

# this follows the all: in Makefile.top, but we drop decouple:, makefile:,
# and installdirs:, because those don't make sense at package level

all: schematools lib bin

bin:	$(foreach var, $(BINPYSCRIPTS), $(subst .py,,$(bindir)/$(var))) $(foreach var, $(BINSHSCRIPTS), $(subst .sh,,$(bindir)/$(var))) $(foreach var, $(BINSCRIPTS), $(bindir)/$(var)) 

lib:	$(foreach var, $(LIBPYFILES), $(libdir)/$(PKGNAME)/$(var))

schematools: stDeclFiles stGeneratedFiles

stDeclFiles: $(foreach var, $(SCHEMATOOLS), $(libdir)/$(PKGNAME)/$(var))

stGeneratedFiles: $(foreach var, $(subst .py,,$(SCHEMATOOLS)), $(libdir)/$(PKGNAME)Gen/$(var)_st.py) $(foreach var, $(subst .py,,$(SCHEMATOOLS)), $(libdir)/$(PKGNAME)Gen/$(var).sql) $(foreach var, $(subst .py,,$(SCHEMATOOLS)), $(libdir)/$(PKGNAME)Gen/$(var)DbiHandler.py)
 
test:

clean:

########################################################################
# Rules
########################################################################

##
# lib related
##
$(libdir)/$(PKGNAME)/%.py: $(TOPDIR)/$(PKGNAME)/%.py $(libdir)/$(PKGNAME)/__init__.py
	cp -p  $< $@

$(libdir)/$(PKGNAME)/__init__.py: $(TOPDIR)/$(PKGNAME)/__init__.py
	cp -p  $< $@

# verbatim copy from sourcedir to libdir, e.g., py (distutils someday...)
# keep this overly generic one below the more specific py, above.
$(libdir)/$(PKGNAME)/%: $(TOPDIR)/$(PKGNAME)/%
	cp -p  $< $@

# generate .py from schematools description of class. (Kah related)
$(libdir)/$(PKGNAME)Gen/%_st.py: $(TOPDIR)/$(PKGNAME)/%.py
	cd $(libdir)/$(PKGNAME); generatePy $< > $@

# generate .sql from schematools description of class. (Kah related)
$(libdir)/$(PKGNAME)Gen/%.sql: $(TOPDIR)/$(PKGNAME)/%.py
	cd $(libdir)/$(PKGNAME); generateDb $< > $@

# generate object/relational converters from schematools
# description of class. (Kah related)
$(libdir)/$(PKGNAME)Gen/%DbiHandler.py: $(TOPDIR)/$(PKGNAME)/%.py
	cd $(libdir)/$(PKGNAME); generateDbiHandler $< > $@

## 
# bin related
##
# python scripts. make script, "foo" from "foo.py".  (rewrite path #! someday)
$(bindir)/%: $(TOPDIR)/$(PKGNAME)/%.py
	cp -p  $< $@
	chmod 755 $@

# borne shell scripts

$(bindir)/%: $(TOPDIR)/$(PKGNAME)/%.sh
	cp -p  $< $@
	chmod 755 $@

# scripts to copy verbatim.
$(bindir)/%: $(TOPDIR)/$(PKGNAME)/%
	cp -p  $< $@
	chmod 755 $@


########################################################################
# Dependency generation
########################################################################
#
# not written yet.  (of all the things not to have...)
#

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3