#==============================================================================# # # Centralized cross-platform build system Makefile.buildsystem # # this file contains all the common locations and targets # # #==============================================================================# # 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 $(prefix) and $(cvs_root_dir). # # $(cvs_root_dir) is the base directory of src tree, equivalent to the root # level of the pure-data CVS. # # $(prefix) is the base directory to where all of the resulting files # will be copied. # # This file is currently located in these places: # abstractions # extensions # externals # packages # doc # # it will be going here too: # gem # pd # # #==============================================================================# # ## 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 = windows EXTENSION = dll else OS_NAME = unknown EXTENSION = so $(warning WARNING: unknown environment "$(UNAME)".) endif endif endif #==============================================================================# # # DIRECTORY STRUCTURE # #==============================================================================# # sources abstractions_src = $(cvs_root_dir)/abstractions doc_src = $(cvs_root_dir)/doc extensions_src = $(cvs_root_dir)/extensions externals_src = $(cvs_root_dir)/externals flext_src = $(cvs_root_dir)/externals/grill/flext gem_src = $(cvs_root_dir)/Gem packages_src = $(cvs_root_dir)/packages pd_src = $(cvs_root_dir)/pd scripts_src = $(cvs_root_dir)/scripts # destinations bindir = $(DESTDIR)$(prefix)/bin includedir = $(DESTDIR)$(prefix)/include libdir = $(DESTDIR)$(prefix)/lib mandir = $(DESTDIR)$(prefix)/man ifeq ($(OS_NAME),darwin) libpddir = $(DESTDIR)$(prefix) libpdbindir = $(bindir) else ifeq ($(OS_NAME),windows) libpddir = $(DESTDIR)$(prefix) libpdbindir = $(bindir) else libpddir = $(libdir)/pd libpdbindir = $(libpddir)/bin endif endif objectsdir = $(libpddir)/extra pddocdir = $(libpddir)/doc examplesdir = $(pddocdir)/examples helpdir = $(pddocdir)/5.reference manualsdir = $(pddocdir)/manuals readmesdir = $(manualsdir)/READMEs #==============================================================================# # # DIRECTORY STRUCTURE TARGETS # #==============================================================================# # first make sure that the directory structure is setup $(DESTDIR): install -d $(DESTDIR) $(bindir): $(DESTDIR) install -d $(bindir) $(examplesdir): $(DESTDIR) install -d $(examplesdir) $(includedir): $(DESTDIR) install -d $(includedir) $(pddocdir): $(DESTDIR) install -d $(pddocdir) $(helpdir): $(DESTDIR) install -d $(helpdir) $(manualsdir): $(DESTDIR) install -d $(manualsdir) $(objectsdir): $(DESTDIR) install -d $(objectsdir) $(readmesdir): $(manualsdir) install -d $(readmesdir) installdirs: $(DESTDIR) $(bindir) $(examplesdir) $(pddocdir) $(includedir) $(helpdir) $(manualsdir) $(objectsdir) $(readmesdir) #==============================================================================# # # PD VERSION AND PACKAGE NAMING # #==============================================================================# PD_MAJOR_VERSION := $(shell grep PD_MAJOR_VERSION $(pd_src)/src/m_pd.h | \ sed 's|^.define *PD_MAJOR_VERSION *\([0-9]*\).*|\1|' ) PD_MINOR_VERSION := $(shell grep PD_MINOR_VERSION $(pd_src)/src/m_pd.h | \ sed 's|^.define *PD_MINOR_VERSION *\([0-9]*\).*|\1|' ) PD_BUGFIX_VERSION := $(shell grep PD_BUGFIX_VERSION $(pd_src)/src/m_pd.h | \ sed 's|^.define *PD_BUGFIX_VERSION *\([0-9]*\).*|\1|' ) PD_TEST_VERSION := $(shell grep PD_TEST_VERSION $(pd_src)/src/m_pd.h | \ sed 's|^.define *PD_TEST_VERSION *"\(.*\)".*|\1|' ) PD_VERSION := $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION) ifneq ($(PD_TEST_VERSION),) PD_VERSION := $(PD_VERSION)-$(PD_TEST_VERSION) endif # release version for this distro PACKAGE_VERSION = extended-test4 PACKAGE_NAME = Pd-$(PD_VERSION) #==============================================================================# # # CLEAN TARGETS # #==============================================================================# applications_clean: -rm -f -- $(examplesdir)/*/*/*/*/*.* -rm -f -- $(examplesdir)/*/*/*/*.* -rm -f -- $(examplesdir)/*/*/*.* -rm -f -- $(examplesdir)/*/*.* -rmdir $(examplesdir)/*/*/*/* -rmdir $(examplesdir)/*/*/* -rmdir $(examplesdir)/*/* -rmdir $(examplesdir)/* -rmdir $(examplesdir) help_clean: -rm -f -- $(helpdir)/*/*/*.* -rm -f -- $(helpdir)/*/*.* -rm -f -- $(helpdir)/*.* -rmdir $(helpdir)/*/* -rmdir $(helpdir)/* -rmdir $(helpdir) manuals_clean: -rm -f -- $(manualsdir)/*/*/*.* -rm -f -- $(manualsdir)/*/*.* -rmdir $(manualsdir)/*/* -rmdir $(manualsdir)/* -rmdir $(manualsdir) objects_clean: -rm $(objectsdir)/*/*/*.pd -rm $(objectsdir)/*/*.pd -rm $(objectsdir)/*.pd -rm $(objectsdir)/*/*/*.$(EXTENSION) -rm $(objectsdir)/*/*.$(EXTENSION) -rm $(objectsdir)/*.$(EXTENSION) -rmdir $(objectsdir)/*/* -rmdir $(objectsdir)/* -rmdir $(objectsdir) install_clean: applications_clean help_clean manuals_clean objects_clean -rmdir $(pddocdir) -rmdir $(DESTDIR)$(prefix) -rmdir $(DESTDIR) @echo " " @echo "Build destination cleaned: $(DESTDIR)" cruft_clean: # emacs litter -rm -f -- */*/*/*/*.*~ -rm -f -- */*/*/*.*~ -rm -f -- */*/*.*~ -rm -f -- */*.*~ -rm -f -- *.*~ -rm -f -- Makefile~ Makefile.buildlayout~ # sed replace litter -rm -f -- */*/*/*/*.bak -rm -f -- */*/*/*.bak -rm -f -- */*/*.bak -rm -f -- */*.bak -rm -f -- *.bak # patching replace litter -rm -f -- */*/*/*/*.rej -rm -f -- */*/*/*.rej -rm -f -- */*/*.rej -rm -f -- */*.rej -rm -f -- *.rej # autoconf cache -rm -rf -- */*/*/*/autom4te.cache -rm -rf -- */*/*/autom4te.cache -rm -rf -- */*/autom4te.cache -rm -rf -- */autom4te.cache -rm -rf -- autom4te.cache