aboutsummaryrefslogtreecommitdiff
path: root/Makefile.in
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.in')
-rw-r--r--Makefile.in461
1 files changed, 0 insertions, 461 deletions
diff --git a/Makefile.in b/Makefile.in
deleted file mode 100644
index a072d63..0000000
--- a/Makefile.in
+++ /dev/null
@@ -1,461 +0,0 @@
-#=========================================================================
-# Toplevel Makefile for the Modular C++ Build System
-#=========================================================================
-# Please read the documenation in 'mcppbs-doc.txt' for more details on
-# how the Modular C++ Build System works. For most projects, a developer
-# will not need to make any changes to this makefile. The key targets
-# are as follows:
-#
-# - default : build all libraries and programs
-# - check : build and run all unit tests
-# - install : install headers, project library, and some programs
-# - clean : remove all generated content (except autoconf files)
-# - dist : make a source tarball
-# - distcheck : make a source tarball, untar it, check it, clean it
-# - distclean : remove everything
-#
-
-#-------------------------------------------------------------------------
-# Basic setup
-#-------------------------------------------------------------------------
-
-# Remove all default implicit rules since they can cause subtle bugs
-# and they just make things run slower
-.SUFFIXES:
-% : %,v
-% : RCS/%,v
-% : RCS/%
-% : s.%
-% : SCCS/s.%
-
-# Default is to build the prereqs of the all target (defined at bottom)
-default : all
-.PHONY : default
-
-project_name := @PACKAGE_TARNAME@
-src_dir := @srcdir@
-scripts_dir := $(src_dir)/scripts
-
-# If the version information is not in the configure script, then we
-# assume that we are in a working directory. We use the vcs-version.sh
-# script in the scripts directory to generate an appropriate version
-# string. Currently the way things are setup we have to run this script
-# everytime we run make so the script needs to be as fast as possible.
-
-ifeq (@PACKAGE_VERSION@,?)
- project_ver:=$(shell $(scripts_dir)/vcs-version.sh $(src_dir))
-else
- project_ver:=@PACKAGE_VERSION@
-endif
-
-# Installation directories
-
-prefix := @prefix@
-enable_stow := @enable_stow@
-
-ifeq ($(enable_stow),yes)
- stow_pkg_dir := $(prefix)/pkgs
- DESTDIR ?= $(stow_pkg_dir)/$(project_name)-$(project_ver)
-else
- DESTDIR ?= $(prefix)
-endif
-
-install_hdrs_dir := $(DESTDIR)/include/$(project_name)
-install_libs_dir := $(DESTDIR)/lib/$(project_name)
-install_exes_dir := $(DESTDIR)/bin
-
-#-------------------------------------------------------------------------
-# List of subprojects
-#-------------------------------------------------------------------------
-
-sprojs := @subprojects@
-sprojs_enabled := @subprojects_enabled@
-
-sprojs_include := -I. $(addprefix -I$(src_dir)/, $(sprojs_enabled))
-VPATH := $(addprefix $(src_dir)/, $(sprojs_enabled))
-
-#-------------------------------------------------------------------------
-# Programs and flags
-#-------------------------------------------------------------------------
-
-# C++ compiler
-# - CPPFLAGS : flags for the preprocessor (eg. -I,-D)
-# - CXXFLAGS : flags for C++ compiler (eg. -Wall,-g,-O3)
-
-CC := @CC@
-CFLAGS := @CFLAGS@
-COMPILE := $(CC) -MMD -MP $(CFLAGS) \
- $(sprojs_include)
-# Linker
-# - LDFLAGS : Flags for the linker (eg. -L)
-# - LIBS : Library flags (eg. -l)
-
-LD := $(CC)
-LDFLAGS := @LDFLAGS@ -nostartfiles -nostdlib
-LIBS := @LIBS@
-LINK := $(LD) $(LDFLAGS) -T $(src_dir)/pk/pk.ld
-
-# Library creation
-
-AR := @AR@
-RANLIB := @RANLIB@
-
-# Host simulator
-
-RUN := @RUN@
-RUNFLAGS := @RUNFLAGS@
-
-# Installation
-
-MKINSTALLDIRS := $(scripts_dir)/mk-install-dirs.sh
-INSTALL := @INSTALL@
-INSTALL_HDR := $(INSTALL) -m 444
-INSTALL_LIB := $(INSTALL) -m 644
-INSTALL_EXE := $(INSTALL) -m 555
-STOW := @stow@
-
-#-------------------------------------------------------------------------
-# Include subproject makefile fragments
-#-------------------------------------------------------------------------
-
-sprojs_mk = $(addsuffix .mk, $(sprojs_enabled))
-
--include $(sprojs_mk)
-
-dist_junk += $(sprojs_mk)
-
-#-------------------------------------------------------------------------
-# Reverse list helper function
-#-------------------------------------------------------------------------
-# This function is used by the subproject template to reverse the list
-# of dependencies. It uses recursion to perform the reversal.
-#
-# Arguments:
-# $(1) : space separated input list
-# retval : input list in reverse order
-#
-
-reverse_list = $(call reverse_list_h,$(1),)
-define reverse_list_h
- $(if $(strip $(1)), \
- $(call reverse_list_h, \
- $(wordlist 2,$(words $(1)),$(1)), \
- $(firstword $(1)) $(2)), \
- $(2))
-endef
-
-#-------------------------------------------------------------------------
-# Template for per subproject rules
-#-------------------------------------------------------------------------
-# The template is instantiated for each of the subprojects. It relies on
-# subprojects defining a certain set of make variables which are all
-# prefixed with the subproject name. Since subproject names can have
-# dashes in them (and the make variables are assumed to only use
-# underscores) the template takes two arguments - one with the regular
-# subproject name and one with dashes replaced with underscores.
-#
-# Arguments:
-# $(1) : real subproject name (ie with dashes)
-# $(2) : normalized subproject name (ie dashes replaced with underscores)
-#
-
-define subproject_template
-
-# In some (rare) cases, a subproject might not have any actual object
-# files. It might only include header files or program sources. To keep
-# things consistent we still want a library for this subproject, so in
-# this spectial case we create a dummy source file and thus the build
-# system will create a library for this subproject with just the
-# corresponding dummy object file.
-
-ifeq ($$(strip $$($(2)_c_srcs)),)
-$(2)_c_srcs += _$(1).c
-$(2)_junk += _$(1).c
-endif
-
-_$(1).c :
- echo "int _$(2)( int arg ) { return arg; }" > $$@
-
-# Build the object files for this subproject
-
-$(2)_c_objs := $$(patsubst %.c, %.o, $$($(2)_c_srcs))
-$(2)_asm_objs := $$(patsubst %.S, %.o, $$($(2)_asm_srcs))
-$(2)_c_deps := $$(patsubst %.o, %.d, $$($(2)_c_objs))
-$$($(2)_c_objs) : %.o : %.c
- $(COMPILE) -c $$<
-$$($(2)_asm_objs) : %.o : %.S
- $(COMPILE) -c $$<
-
-$(2)_junk += $$($(2)_c_objs) $$($(2)_c_deps) $$($(2)_asm_objs)
-
-# Build a library for this subproject
-
-lib$(1).a : $$($(2)_c_objs) $$($(2)_asm_objs)
- $(AR) rcv $$@ $$^
- $(RANLIB) $$@
-
-$(2)_junk += lib$(1).a
-
-# Reverse the dependency list so that a given subproject only depends on
-# subprojects listed to its right. This is the correct order for linking
-# the list of subproject libraries.
-
-$(2)_reverse_deps := $$(call reverse_list,$$($(2)_subproject_deps))
-
-# Build unit tests
-
-$(2)_test_objs := $$(patsubst %.c, %.o, $$($(2)_test_srcs))
-$(2)_test_deps := $$(patsubst %.o, %.d, $$($(2)_test_objs))
-$(2)_test_exes := $$(patsubst %.t.c, %-utst, $$($(2)_test_srcs))
-$(2)_test_outs := $$(patsubst %, %.out, $$($(2)_test_exes))
-$(2)_test_libs := $(1) $$($(2)_reverse_deps) utst
-$(2)_test_libnames := $$(patsubst %, lib%.a, $$($(2)_test_libs))
-$(2)_test_libarg := -L. $$(patsubst %, -l%, $$($(2)_test_libs))
-
-$$($(2)_test_objs) : %.o : %.c
- $(COMPILE) -c $$<
-
-$$($(2)_test_exes) : %-utst : %.t.o $$($(2)_test_libnames)
- $(LINK) -o $$@ $$< $$($(2)_test_libarg) $(LIBS)
-
-$(2)_c_deps += $$($(2)_test_deps)
-$(2)_junk += \
- $$($(2)_test_objs) $$($(2)_test_deps) \
- $$($(2)_test_exes) *.junk-dat
-
-# Run unit tests
-
-$$($(2)_test_outs) : %.out : %
- $(RUN) $(RUNFLAGS) ./$$< default | tee $$@
-
-$(2)_junk += $$($(2)_test_outs)
-
-# Build programs
-
-$(2)_prog_objs := $$(patsubst %.S, %.o, $$($(2)_prog_srcs))
-$(2)_prog_deps := $$(patsubst %.o, %.d, $$($(2)_prog_objs))
-$(2)_prog_exes := $$(patsubst %.S, %, $$($(2)_prog_srcs))
-$(2)_prog_libs := $(1) $$($(2)_reverse_deps)
-$(2)_prog_libnames := $$(patsubst %, lib%.a, $$($(2)_prog_libs))
-$(2)_prog_libarg := -L. $$(patsubst %, -l%, $$($(2)_prog_libs))
-
-$$($(2)_prog_objs) : %.o : %.S
- $(COMPILE) -c $$<
-
-$$($(2)_prog_exes) : % : %.o $$($(2)_prog_libnames)
- $(LINK) -o $$@ $$< $$($(2)_prog_libarg) $(LIBS)
-
-$(2)_c_deps += $$($(2)_prog_deps)
-$(2)_junk += $$($(2)_prog_objs) $$($(2)_prog_deps) $$($(2)_prog_exes)
-
-# Build programs which will be installed
-
-$(2)_install_prog_objs := $$(patsubst %.S, %.o, $$($(2)_install_prog_srcs))
-$(2)_install_prog_deps := $$(patsubst %.o, %.d, $$($(2)_install_prog_objs))
-$(2)_install_prog_exes := $$(patsubst %.S, %, $$($(2)_install_prog_srcs))
-
-$$($(2)_install_prog_objs) : %.o : %.S
- $(COMPILE) -c $$<
-
-$$($(2)_install_prog_exes) : % : %.o $$($(2)_prog_libnames)
- $(LINK) -o $$@ $$< $$($(2)_prog_libarg) $(LIBS)
-
-$(2)_c_deps += $$($(2)_install_prog_deps)
-$(2)_junk += \
- $$($(2)_install_prog_objs) $$($(2)_install_prog_deps) \
- $$($(2)_install_prog_exes)
-
-# Subproject specific targets
-
-all-$(1) : lib$(1).a $$($(2)_install_prog_exes)
-
-check-$(1) : $$($(2)_test_outs)
- echo; grep -h -e'Unit Tests' -e'FAILED' -e'Segementation' $$^; echo
-
-clean-$(1) :
- rm -rf $$($(2)_junk)
-
-.PHONY : all-$(1) check-$(1) clean-$(1)
-
-# Update running variables
-
-libs += lib$(1).a
-objs += $$($(2)_c_objs)
-srcs += $$(addprefix $(src_dir)/$(1)/, $$($(2)_c_srcs))
-hdrs += $$(addprefix $(src_dir)/$(1)/, $$($(2)_hdrs))
-junk += $$($(2)_junk)
-deps += $$($(2)_c_deps)
-
-test_outs += $$($(2)_test_outs)
-
-install_hdrs += $$(addprefix $(src_dir)/$(1)/, $$($(2)_hdrs))
-install_libs += lib$(1).a
-install_exes += $$($(2)_install_prog_exes)
-
-endef
-
-# Iterate over the subprojects and call the template for each one
-
-$(foreach sproj,$(sprojs_enabled), \
- $(eval $(call subproject_template,$(sproj),$(subst -,_,$(sproj)))))
-
-#-------------------------------------------------------------------------
-# Autodependency files
-#-------------------------------------------------------------------------
-
--include $(deps)
-
-deps : $(deps)
-.PHONY : deps
-
-#-------------------------------------------------------------------------
-# Check
-#-------------------------------------------------------------------------
-
-check : $(test_outs)
- echo; grep -h -e'Unit Tests' -e'FAILED' -e'Segementation' $^; echo
-
-.PHONY : check
-
-#-------------------------------------------------------------------------
-# Installation
-#-------------------------------------------------------------------------
-
-install-hdrs : $(install_hdrs)
- $(MKINSTALLDIRS) $(install_hdrs_dir)
- for file in $(install_hdrs); \
- do \
- $(INSTALL_HDR) $$file $(install_hdrs_dir); \
- done
-
-install-libs : $(install_libs)
- $(MKINSTALLDIRS) $(install_libs_dir)
- for file in $(install_libs); \
- do \
- $(INSTALL_LIB) $$file $(install_libs_dir); \
- done
-
-install-exes : $(install_exes)
- $(MKINSTALLDIRS) $(install_exes_dir)
- for file in $(install_exes); \
- do \
- $(INSTALL_EXE) $$file $(install_exes_dir); \
- done
-
-install : install-hdrs install-libs install-exes
-ifeq ($(enable_stow),yes)
- $(MKINSTALLDIRS) $(stow_pkg_dir)
- cd $(stow_pkg_dir) && \
- $(STOW) --delete $(project_name)-* && \
- $(STOW) $(project_name)-$(project_ver)
-endif
-
-.PHONY : install install-hdrs install-libs install-exes
-
-#-------------------------------------------------------------------------
-# Regenerate configure information
-#-------------------------------------------------------------------------
-
-configure_prereq = \
- $(src_dir)/configure.ac \
- $(src_dir)/aclocal.m4 \
- $(join $(addprefix $(src_dir)/, $(sprojs_enabled)), \
- $(patsubst %, /%.ac, $(sprojs_enabled)))
-
-$(src_dir)/configure : $(configure_prereq)
- cd $(src_dir) && autoconf && autoheader
-
-config.status : $(src_dir)/configure
- ./config.status --recheck
-
-sprojs_mk_in = \
- $(join $(addprefix $(src_dir)/, $(sprojs_enabled)), \
- $(patsubst %, /%.mk.in, $(sprojs_enabled)))
-
-Makefile : $(src_dir)/Makefile.in $(sprojs_mk_in) config.status
- ./config.status
-
-dist_junk += config.status config.h Makefile config.log
-
-#-------------------------------------------------------------------------
-# Distribution
-#-------------------------------------------------------------------------
-# The distribution tarball is named project-ver.tar.gz and it includes
-# both enabled and disabled subprojects.
-
-dist_files = \
- $(sprojs) \
- README \
- style-guide.txt \
- mcppbs-uguide.txt \
- scripts \
- configure.ac \
- aclocal.m4 \
- configure \
- config.h.in \
- Makefile.in \
-
-dist_dir := $(project_name)-$(project_ver)
-dist_tgz := $(project_name)-$(project_ver).tar.gz
-
-# Notice that when we make the distribution we rewrite the configure.ac
-# script with the current version and we rerun autoconf in the new
-# source directory so that the distribution will have the proper version
-# information. We also rewrite the "Version : " line in the README.
-
-dist :
- rm -rf $(dist_dir)
- mkdir $(dist_dir)
- tar -C $(src_dir) -cf - $(dist_files) | tar -C $(dist_dir) -xpf -
- sed -i.bak 's/^\(# Version :\).*/\1 $(project_ver)/' $(dist_dir)/README
- sed -i.bak 's/\( proj_version,\).*/\1 [$(project_ver)])/' $(dist_dir)/configure.ac
- cd $(dist_dir) && \
- autoconf && autoheader && \
- rm -rf autom4te.cache configure.ac.bak README.bak
- tar -czvf $(dist_tgz) $(dist_dir)
- rm -rf $(dist_dir)
-
-# You can use the distcheck target to try untarring the distribution and
-# then running configure, make, make check, and make distclean. A
-# "directory is not empty" error means distclean is not removing
-# everything.
-
-distcheck : dist
- rm -rf $(dist_dir)
- tar -xzvf $(dist_tgz)
- mkdir -p $(dist_dir)/build
- cd $(dist_dir)/build; ../configure; make; make check; make distclean
- rm -rf $(dist_dir)
-
-junk += $(project_name)-*.tar.gz
-
-.PHONY : dist distcheck
-
-#-------------------------------------------------------------------------
-# Default
-#-------------------------------------------------------------------------
-
-all : $(install_hdrs) $(install_libs) $(install_exes)
-.PHONY : all
-
-#-------------------------------------------------------------------------
-# Makefile debugging
-#-------------------------------------------------------------------------
-# This handy rule will display the contents of any make variable by
-# using the target debug-<varname>. So for example, make debug-junk will
-# display the contents of the junk variable.
-
-debug-% :
- @echo $* = $($*)
-
-#-------------------------------------------------------------------------
-# Clean up junk
-#-------------------------------------------------------------------------
-
-clean :
- rm -rf *~ \#* $(junk)
-
-distclean :
- rm -rf *~ \#* $(junk) $(dist_junk)
-
-.PHONY : clean distclean