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

View of /ReleaseTools/standard.mk

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (download) (annotate)
Tue Apr 12 20:23:17 2005 UTC (14 years, 10 months ago) by efrank
Branch: MAIN
Changes since 1.11: +28 -4 lines
add perl to libs and bins
add C for bins.

note- the dot rule to "build" perl stuff does not use tool_hdr in order to keep
kah from breaking, but that's not right for seed.  so for moment, seed
package level makefile overrides the dot rule.  will figure out later.

see als figkernelscripts

#######################################################################
# 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:
########################################################################
#
# CBINS       := foo bar etc.  List of .c binaries to build. Do not put .c
#                in the name
# CEXCLUDE    := list of .c files, besides $(CBINS).c, to exclude from the
#                list of C code to build into a .o
#
#
#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)
#BINPERLSCRIPTS := script1.pl etc.  List of perl scripts to install in bin.
#                Installed as script1, not script1.pl.  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))
LIBPERLFILES := $(filter-out $(BINPERLSCRIPTS), $(wildcard *.pl))


########################################################################
# 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, $(BINPERLSCRIPTS), $(subst .pl,,$(bindir)/$(var))) $(foreach var, $(BINSHSCRIPTS), $(subst .sh,,$(bindir)/$(var))) $(foreach var, $(BINSCRIPTS), $(bindir)/$(var)) $(foreach var, $(CBINS), $(bindir)/$(var)) 

lib:	$(foreach var, $(LIBPYFILES), $(libdir)/$(PKGNAME)/$(var)) $(foreach var, $(LIBPERLFILES), $(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
	cp -p  $< $@

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

$(libdir)/$(PKGNAME)/%.pl: $(TOPDIR)/$(PKGNAME)/%.pl
	cp -p  $< $@


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

# generate .py from schematools description of class. (Kah related)

#    Note- add a __init__ dep because everything is required to be a package 
# and so must have an __init__.  putting the dep here is a way to force the
# __init__ to be copied into the dir first so that i can immediately
# be ref'd as a package.  this is needed for schema tools ina way i don't
# grok yet

$(libdir)/$(PKGNAME)Gen/%_st.py: $(TOPDIR)/$(PKGNAME)/%.py  $(libdir)/$(PKGNAME)/__init__.py
	cd $(libdir)/$(PKGNAME); env PYTHONPATH=$(libdir) $(bindir)/generatePy $< > $@

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

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

## 
# bin related
##

# C excecutables.
$(bindir)/%: $(TOPDIR)/$(PKGNAME)/%.c
	$(CC) $(CFLAGS) -o $@ $<

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

# perl scripts. make script, "foo" from "foo.pl".  (rewrite path #! someday)
$(bindir)/%: $(TOPDIR)/$(PKGNAME)/%.pl
	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