[PD-cvs] externals Makefile,NONE,1.1 Makefile.buildlayout,NONE,1.1

Hans-Christoph Steiner eighthave at users.sourceforge.net
Fri Nov 18 08:08:37 CET 2005


Update of /cvsroot/pure-data/externals
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17110

Added Files:
	Makefile Makefile.buildlayout 
Log Message:
it builds everything that the previous one did, plus the doc/makefile was folded into this one; next, make it actually do the C compiling instead of having the separate makefiles for each platform

--- NEW FILE: Makefile ---
#==============================================================================#
#
# Centralized build system for "externals".  
#
# see README for instructions  <hans at at.or.at>
#
#==============================================================================#

# TODO: maybe this should be moved to the root like all the others

CWD := $(shell pwd)

# these are setup to be overridden by the packages/Makefile
SRC_ROOT_DIR = $(CWD)/..
INSTALL_PREFIX = $(CWD)/build
BUILDLAYOUT_DIR = $(CWD)

# default target
all: objects

.SUFFIXES: .$(EXTENSION)


include $(BUILDLAYOUT_DIR)/Makefile.buildlayout


# these are sent to all of the various Makefiles so that they all copy their
# output to the same directory tree
DEST_PATHS = BUILDLAYOUT_DIR=$(BUILDLAYOUT_DIR) \
				SRC_ROOT_DIR=$(SRC_ROOT_DIR) \
				INSTALL_PREFIX=$(INSTALL_PREFIX)

#==============================================================================#
#
# COMPILE TARGETS
#
#==============================================================================#

objects: objects_$(OS_NAME)
	@echo "Compiling objects for $(OS_NAME) aka $(UNAME)"
# try it this way so that it'll recognize files that have already been built
	cd $(EXTERNALS_SRC)/build/$(OS_NAME) && make -k

# these targets are for platform-specific needs
objects_darwin:

objects_linux:

objects_win:

objects_unknown:
# this target is for "everything else"

#==============================================================================#
#
# INSTALL TARGETS
#
#==============================================================================#

IEMABS_NAME = iemabs
IEMLIB_NAME = iemlib
PMPD_NAME = pmpd
applications_install: $(APPLICATIONS_DEST)
# iemlib
	install -d $(APPLICATIONS_DEST)/$(IEMLIB_NAME)
	install -p $(EXTERNALS_SRC)/iemlib/examples/*.* \
		$(APPLICATIONS_DEST)/$(IEMLIB_NAME)
# PMDP examples
	install -d $(APPLICATIONS_DEST)/$(PMPD_NAME)
	install -p $(EXTERNALS_SRC)/pmpd/exemples/*.pd $(APPLICATIONS_DEST)/$(PMPD_NAME)


docs_install: $(HELP_DEST)
#------------------------------------------------------------------------------#
# all standard objs' help files
#    it had to be broken up because the list is soo long
	install -p \
			$(EXTERNALS_SRC)/OSCx/doc/*.pd \
			$(EXTERNALS_SRC)/aenv~/*.pd \
			$(EXTERNALS_SRC)/arraysize/*.pd \
			$(EXTERNALS_SRC)/beatpipe/*.pd \
			$(EXTERNALS_SRC)/control/*/*.pd \
			$(EXTERNALS_SRC)/bbogart/chaos/tools/*.pd \
			$(EXTERNALS_SRC)/bbogart/*/*.pd \
			$(EXTERNALS_SRC)/creb/doc/*.pd \
				$(HELP_DEST)
	install -p \
			$(EXTERNALS_SRC)/creb/doc/examples/*.pd \
			$(EXTERNALS_SRC)/cxc/reference/*.pd \
			$(EXTERNALS_SRC)/dfx/*/*.pd \
			$(EXTERNALS_SRC)/ext13/doc/*.pd \
			$(EXTERNALS_SRC)/ggee/*/*-help.pd \
			$(EXTERNALS_SRC)/gem2pdp/*.pd \
			$(EXTERNALS_SRC)/ff/*.pd \
			$(EXTERNALS_SRC)/freeverb~/*.pd \
			$(EXTERNALS_SRC)/hcs/*-help.pd \
				$(HELP_DEST)
	install -p \
			$(EXTERNALS_SRC)/hcs/*/doc/*.pd \
			$(EXTERNALS_SRC)/hcs/hid/examples/*.pd \
			$(EXTERNALS_SRC)/hcs/pan/*-help.pd \
			$(EXTERNALS_SRC)/iem/*/*/*-help.pd \
			$(EXTERNALS_SRC)/markex/*.pd \
			$(EXTERNALS_SRC)/motex/*.pd \
			$(EXTERNALS_SRC)/nusmuk/line3/*.pd\
				$(HELP_DEST)
	install -p \
			$(EXTERNALS_SRC)/pdogg/*/*.pd \
			$(EXTERNALS_SRC)/plugin~/*.pd \
			$(EXTERNALS_SRC)/pmpd/help/*.pd\
			$(EXTERNALS_SRC)/rhythm_estimator/*.p? \
			$(EXTERNALS_SRC)/signal/*/*.pd \
			$(EXTERNALS_SRC)/sprinkler/sprinkler-help.pd \
			$(EXTERNALS_SRC)/susloop~/*.pd \
			$(EXTERNALS_SRC)/svf~/*.pd \
			$(EXTERNALS_SRC)/vbap/*.pd \
			$(EXTERNALS_SRC)/vst/*.pd \
			$(EXTERNALS_SRC)/zhzxh~/*.pd \
				$(HELP_DEST)
#------------------------------------------------------------------------------#
# IEMlib uses its own dir and since its not maintained in CVS
# its best not to change the objects
	install -d $(HELP_DEST)/iemhelp
	install -p $(EXTERNALS_SRC)/iemlib/iemhelp/*.* $(HELP_DEST)/iemhelp
#------------------------------------------------------------------------------#
# zexy uses its own dir
	install -d $(HELP_DEST)/zexy
	install -p $(EXTERNALS_SRC)/zexy/zexy.pd  $(HELP_DEST)
	install -p $(EXTERNALS_SRC)/zexy/examples/*.* $(HELP_DEST)/zexy
#------------------------------------------------------------------------------#
# iemmatrix uses its own dir
	install -d $(HELP_DEST)/iemmatrix
	install -p $(EXTERNALS_SRC)/iem/iemmatrix/doc/*.pd  $(HELP_DEST)/iemmatrix
#------------------------------------------------------------------------------#
#  mjlib [prob] conflicts with cyclone's [prob] so filter it
	install -p $(shell ls -1 $(EXTERNALS_SRC)/mjlib/doc/*.* | \
		grep -v 'prob') $(HELP_DEST)
#------------------------------------------------------------------------------#
#  maxlib [split] conflicts with cyclone so filter it
	install -p $(shell ls -1 $(EXTERNALS_SRC)/maxlib/help/*.* | \
		grep -v 'split') $(HELP_DEST)


manuals_install: $(MANUALS_DEST)
# pmpd
	install -d $(MANUALS_DEST)/$(PMPD_NAME)
	install -p $(EXTERNALS_SRC)/pmpd/doc/pmpd.pdf/pmpd.pdf \
		$(MANUALS_DEST)/$(PMPD_NAME)


objects_install: objects
	install -p $(EXTERNALS_SRC)/build/$(OS_NAME)/*.$(EXTENSION) $(OBJECTS_DEST)
#------------------------------------------------------------------------------#
# abstractions (i.e. objects written in Pd)
# iemmatrix
	install -p $(shell ls -1 $(EXTERNALS_SRC)/iem/iemmatrix/abs/*.* | \
		grep -v '\-help.pd') $(OBJECTS_DEST)
# IEMlib
#  iemabs still has the help patches in the old help-*.pd style
	install -d $(OBJECTS_DEST)/$(IEMABS_NAME)
	install -p $(shell ls -1 $(EXTERNALS_SRC)/iemlib/iemabs/*.pd | \
		grep -v 'help') $(OBJECTS_DEST)/$(IEMABS_NAME)
	install -d $(HELP_DEST)/$(IEMABS_NAME)
	install -p $(EXTERNALS_SRC)/iemlib/iemabs/*help*.pd \
		$(HELP_DEST)/$(IEMABS_NAME)
	install -p $(EXTERNALS_SRC)/iemlib/iemabs/*.mp3 $(HELP_DEST)/$(IEMABS_NAME)
	install -p $(EXTERNALS_SRC)/iemlib/iemabs/*.wav $(HELP_DEST)/$(IEMABS_NAME)
	install -d $(MANUALS_DEST)/$(IEMABS_NAME)
	install -p $(EXTERNALS_SRC)/iemlib/iemabs/*.txt \
		$(MANUALS_DEST)/$(IEMABS_NAME)
# vbap
	install -p $(EXTERNALS_SRC)/vbap/graph-to-aziele.pd $(OBJECTS_DEST)



install: $(OBJECTS_DEST) docs_install applications_install objects_install
install: manuals_install

#==============================================================================#
#
# DEVELOPER'S TARGETS
#
#==============================================================================#

# make the symlinks necessary to simulate the installed environment
devsymlinks: 


#==============================================================================#
#
# CLEAN TARGETS
#
#==============================================================================#

applications_clean:
	rm $(APPLICATIONS_DEST)/*/*.*
	rmdir $(APPLICATIONS_DEST)/*
	rmdir $(APPLICATIONS_DEST)

docs_clean:
	-rm $(HELP_DEST)/*.* $(HELP_DEST)/*/*.*
	rmdir $(HELP_DEST)/*

manuals_clean:
	rm $(MANUALS_DEST)/*/*.*
	rmdir $(MANUALS_DEST)/*
	rmdir $(MANUALS_DEST)

objects_clean:
	rm $(OBJECTS_DEST)/*.pd 
	rm $(OBJECTS_DEST)/*/*.pd
	rm $(OBJECTS_DEST)/*.$(EXTENSION)
# for upcoming lib directory structure
	-rm $(OBJECTS_DEST)/*/*.$(EXTENSION)
	rmdir $(OBJECTS_DEST)/*

clean: applications_clean docs_clean manuals_clean objects_clean
	rmdir $(DOCS_DEST)/*	
	rmdir $(DOCS_DEST)

--- NEW FILE: Makefile.buildlayout ---

## Makefile.buildlayout

# This file should be exactly the same in each section of the CVS.  A copy is
# kept in each section of the CVS so that each section will be self-contained.
# To use it, you need to include it in your Makefile (i.e. "include
# Makefile.buildlayout") and then define $(INSTALL_PREFIX) and $(SRC_ROOT_DIR).
#
# $(SRC_ROOT_DIR) is the base directory of src tree, equivalent to the root
# level of the pure-data CVS.
#
# $(INSTALL_PREFIX) is the base directory to where all of the resulting files
# will be copied.
#
# This file is currently located in these places: 
#	  abstractions
#	  externals/build
# 	  packages
#
# it will be going here too:
#    doc
#    extensions
#    gem
#    pd
#
# <hans at at.or.at>

#------------------------------------------------------------------------------#
# PLATFORM-SPECIFIC SETTINGS
#------------------------------------------------------------------------------#
# which OS to compile for
UNAME := $(shell uname -s)
ifeq ($(UNAME),Linux)
  OS_NAME = linux
  EXTENSION = pd_linux
else 
  ifeq ($(UNAME),Darwin)
    OS_NAME = darwin
    EXTENSION = pd_darwin
  else
    ifeq (MINGW,$(findstring MINGW,$(UNAME)))
      OS_NAME = win
      EXTENSION = dll
    else
      OS_NAME = unknown
      EXTENSION = so
      $(warning WARNING: unknown environment "$(UNAME)".)
    endif
  endif
endif

# sources
ABSTRACTIONS_SRC = $(SRC_ROOT_DIR)/abstractions
DOC_SRC = $(SRC_ROOT_DIR)/doc
EXTERNALS_SRC = $(SRC_ROOT_DIR)/externals
FLEXT_SRC = $(SRC_ROOT_DIR)/externals/grill/flext
GEM_SRC = $(SRC_ROOT_DIR)/Gem
GEMLIBS_SRC = $(SRC_ROOT_DIR)/GemLibs
PD_SRC = $(SRC_ROOT_DIR)/pd
SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts


# destinations
APPLICATIONS_DEST = $(DOCS_DEST)/examples
DOCS_DEST = $(INSTALL_PREFIX)/doc
OBJECTS_DEST = $(INSTALL_PREFIX)/extra
HELP_DEST = $(DOCS_DEST)/5.reference
MANUALS_DEST = $(DOCS_DEST)/manuals

#------------------------------------------------------------------------------#
# DIRECTORY STRUCTURE TARGETS
#------------------------------------------------------------------------------#
# first make sure that the directory structure is setup
$(INSTALL_PREFIX):
	install -d $(INSTALL_PREFIX)

$(APPLICATIONS_DEST):  $(INSTALL_PREFIX)
	install -d $(APPLICATIONS_DEST)

$(DOCS_DEST): $(INSTALL_PREFIX)
	install -d $(DOCS_DEST)

$(HELP_DEST): $(INSTALL_PREFIX)
	install -d $(HELP_DEST)

$(MANUALS_DEST): $(INSTALL_PREFIX)
	install -d $(MANUALS_DEST)

$(OBJECTS_DEST): $(INSTALL_PREFIX)
	install -d $(OBJECTS_DEST)





More information about the Pd-cvs mailing list