#==============================================================================# # # 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 # 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 DYLIB_EXTENSION = so LN_S = ln -s endif ifeq ($(UNAME),Darwin) OS_NAME = darwin EXTENSION = pd_darwin DYLIB_EXTENSION = dylib LN_S = ln -s endif ifeq (MINGW,$(findstring MINGW,$(UNAME))) OS_NAME = windows EXTENSION = dll DYLIB_EXTENSION = dll LN_S = cp -a endif ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME))) OS_NAME = windows EXTENSION = dll DYLIB_EXTENSION = dll LN_S = ln -s endif # which CPU to compile for UNAME_MACHINE := $(shell uname -m) ifeq ($(UNAME_MACHINE),i386) ARCH = i386 endif ifeq ($(UNAME_MACHINE),i686) ARCH = i386 endif ifeq ($(UNAME_MACHINE),ppc) ARCH = powerpc endif #==============================================================================# # ## CFLAGS # #==============================================================================# # base level optimizations OPT_CFLAGS = -O2 DEBUG_CFLAGS = -ggdb #==============================================================================# # # DIRECTORY STRUCTURE # #==============================================================================# # sources abstractions_src = $(cvs_root_dir)/abstractions doc_src = $(cvs_root_dir)/doc externals_src = $(cvs_root_dir)/externals flext_src = $(cvs_root_dir)/externals/grill/flext gem_src = $(cvs_root_dir)/externals/Gem packages_src = $(cvs_root_dir)/packages pd_src = $(cvs_root_dir)/pd scripts_src = $(cvs_root_dir)/scripts # destinations bindir = $(prefix)/bin includedir = $(prefix)/include mandir = $(prefix)/man libdir = $(prefix)/lib ifeq ($(OS_NAME),darwin) libpddir = $(prefix) libpdbindir = $(bindir) else ifeq ($(OS_NAME),windows) libpddir = $(prefix)/. libpdbindir = $(bindir) else libpddir = $(libdir)/pd-extended libpdbindir = $(libpddir)/bin endif endif objectsdir = $(libpddir)/extra pddocdir = $(libpddir)/doc helpdir = $(pddocdir)/5.reference manualsdir = $(pddocdir)/manuals #==============================================================================# # # DIRECTORY STRUCTURE TARGETS # #==============================================================================# # first make sure that the directory structure is setup $(DESTDIR): install -d $(DESTDIR) $(bindir): $(DESTDIR) install -d $(DESTDIR)$(bindir) $(includedir): $(DESTDIR) install -d $(DESTDIR)$(includedir) $(pddocdir): $(DESTDIR) install -d $(DESTDIR)$(pddocdir) $(helpdir): $(DESTDIR) install -d $(DESTDIR)$(helpdir) $(manualsdir): $(DESTDIR) install -d $(DESTDIR)$(manualsdir) $(objectsdir): $(DESTDIR) install -d $(DESTDIR)$(objectsdir) installdirs: $(DESTDIR) $(bindir) $(pddocdir) $(includedir) $(helpdir) $(manualsdir) $(objectsdir) #==============================================================================# # # 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 VERSION_DATE := $(shell date +%Y%m%d) # release version for this distro PD-EXTENDED_VERSION_PREFIX = extended PD-EXTENDED_VERSION = $(PD-EXTENDED_VERSION_PREFIX)-$(VERSION_DATE) PACKAGE_NAME = Pd-$(PD_VERSION)