#==============================================================================# # # 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 $(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 # doc # # it will be going here too: # extensions # 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 = win EXTENSION = dll else OS_NAME = unknown EXTENSION = so $(warning WARNING: unknown environment "$(UNAME)".) endif endif endif #==============================================================================# # # DIRECTORY STRUCTURE # #==============================================================================# # 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 PACKAGES_SRC = $(SRC_ROOT_DIR)/packages PD_SRC = $(SRC_ROOT_DIR)/pd SCRIPTS_SRC = $(SRC_ROOT_DIR)/scripts # destinations APPLICATIONS_DEST = $(DOCS_DEST)/examples BIN_DEST = $(INSTALL_PREFIX)/bin DOCS_DEST = $(INSTALL_PREFIX)/doc INCLUDE_DEST = $(INSTALL_PREFIX)/include LIB_DEST = $(INSTALL_PREFIX)/lib MAN_DEST = $(INSTALL_PREFIX)/man 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) #==============================================================================# # # PD VERSION AND PACKAGE NAMING # #==============================================================================# PD_MAJOR_VERSION := $(shell grep 'Pd version' $(PD_SRC)/src/s_main.c | \ sed 's/char pd_version\[\] = "Pd version \([0-9]\)\.[0-9]*[. TES-]*[0-9]*[0-9extndRC.-]*\\n";/\1/') PD_MINOR_VERSION := $(shell grep 'Pd version' $(PD_SRC)/src/s_main.c | \ sed 's/char pd_version\[\] = "Pd version [0-9]\.\([0-9]*\)[. TES-]*\([0-9]*\)[0-9extndRC.-]*\\n";/\1/') PD_BUGFIX_VERSION := $(shell grep 'Pd version' $(PD_SRC)/src/s_main.c | \ sed 's/char pd_version\[\] = "Pd version [0-9]\.[0-9]*[. TES-]*\([0-9]*\)[0-9extndRC.-]*\\n";/\1/') # the separators [.-] need to be the same as in s_main.c or the regexps break PD_VERSION = $(PD_MAJOR_VERSION).$(PD_MINOR_VERSION).$(PD_BUGFIX_VERSION) # release version for this distro PACKAGE_VERSION = extended-RC4 PACKAGE_NAME = Pd-$(PD_VERSION)-$(PACKAGE_VERSION) #==============================================================================# # # CLEAN TARGETS # #==============================================================================# applications_clean: -rm -f -- $(APPLICATIONS_DEST)/*/*/*/*/*.* -rm -f -- $(APPLICATIONS_DEST)/*/*/*/*.* -rm -f -- $(APPLICATIONS_DEST)/*/*/*.* -rm -f -- $(APPLICATIONS_DEST)/*/*.* -rmdir $(APPLICATIONS_DEST)/*/*/*/* -rmdir $(APPLICATIONS_DEST)/*/*/* -rmdir $(APPLICATIONS_DEST)/*/* -rmdir $(APPLICATIONS_DEST)/* -rmdir $(APPLICATIONS_DEST) help_clean: -rm -f -- $(HELP_DEST)/*/*/*.* -rm -f -- $(HELP_DEST)/*/*.* -rm -f -- $(HELP_DEST)/*.* -rmdir $(HELP_DEST)/*/* -rmdir $(HELP_DEST)/* -rmdir $(HELP_DEST) manuals_clean: -rm -f -- $(MANUALS_DEST)/*/*/*.* -rm -f -- $(MANUALS_DEST)/*/*.* -rmdir $(MANUALS_DEST)/*/* -rmdir $(MANUALS_DEST)/* -rmdir $(MANUALS_DEST) objects_clean: -rm $(OBJECTS_DEST)/*/*/*.pd -rm $(OBJECTS_DEST)/*/*.pd -rm $(OBJECTS_DEST)/*.pd -rm $(OBJECTS_DEST)/*/*/*.$(EXTENSION) -rm $(OBJECTS_DEST)/*/*.$(EXTENSION) -rm $(OBJECTS_DEST)/*.$(EXTENSION) -rmdir $(OBJECTS_DEST)/*/* -rmdir $(OBJECTS_DEST)/* -rmdir $(OBJECTS_DEST) install_clean: applications_clean help_clean manuals_clean objects_clean -rmdir $(DOCS_DEST) -rmdir $(INSTALL_PREFIX) @echo " " @echo "Build destination cleaned: $(INSTALL_PREFIX)" 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 # autoconf cache -rm -rf -- */*/*/*/autom4te.cache -rm -rf -- */*/*/autom4te.cache -rm -rf -- */*/autom4te.cache -rm -rf -- */autom4te.cache -rm -rf -- autom4te.cache