>From 607ee0dc9dac385f20b54cf383996d6d312acdee Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Thu, 12 Jun 2014 21:13:49 +0200 Subject: [PATCH] Make the handling of variables for directory prefixes a little more consistent with common UNIX practice, and support setting the important ones from Make through the environment (by using ?=-style instead of =-style assignment) Unfortunately this is slightly backwards-incompatible, as it renames INCDIR and changes the meaning of MANDIR. I think sticking with common practice is more important than backwards compat for the small set of cases where these variables will be overridden. --- NEWS | 10 ++++++++++ defaults.make | 44 +++++++++++++++++++++++++++++++++----------- rules.make | 16 ++++++++-------- 3 files changed, 51 insertions(+), 19 deletions(-) diff --git a/NEWS b/NEWS index acec2fc..c2b6dd0 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,16 @@ C_get_environment_variable[_2] functions. - C_mutate2 has been deprecated in favor of C_mutate +- Build system + - TOPMANDIR is now deprecated and renamed to MANDIR. What used to + be called MANDIR was renamed to MAN1DIR in order to comply with + standard Makefile practice in UNIX. + - INCDIR is now deprecated and renamed to CHICKENINCDIR, which + derives from INCLUDEDIR, which itself defaults to $(PREFIX)/include + - BINDIR, LIBDIR, SHAREDIR, INCLUDEDIR, MANDIR, MAN1DIR, DOCDIR, + CHICKENINCDIR and CHICKENLIBDIR will now also be taken from + the environment, if present (like PLATFORM, DESTDIR and PREFIX). + 4.9.0 - Security fixes diff --git a/defaults.make b/defaults.make index 6deb228..4a7eabe 100644 --- a/defaults.make +++ b/defaults.make @@ -37,23 +37,45 @@ SEP ?= / DESTDIR ?= PREFIX ?= /usr/local -BINDIR = $(PREFIX)/bin -LIBDIR = $(PREFIX)/lib -SHAREDIR = $(PREFIX)/share -DATADIR = $(SHAREDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) -TOPMANDIR = $(SHAREDIR)/man -MANDIR = $(TOPMANDIR)/man1 -INCDIR = $(PREFIX)/include/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) -DOCDIR = $(DATADIR)/doc +# OBSOLETE +ifdef TOPMANDIR +$(warning The TOPMANDIR variable is **deprecated**; it was renamed to MANDIR.) +$(warning In CHICKEN 4.11.0, setting TOPMANDIR will cause a build error, in 4.12.0 it will be removed.) +ifdef MANDIR +$(error You have supplied both TOPMANDIR and MANDIR. The old MANDIR is now MAN1DIR.) +else +MANDIR=$(TOPMANDIR) +endif +endif + +# OBSOLETE +ifdef INCDIR +$(warning The INCDIR variable is **deprecated**; it was renamed to CHICKENINCDIR.) +$(warning The recommended way to define your header path is INCLUDEDIR, the "root" include directory.) +$(warning By default, CHICKENINCDIR will be $$(INCLUDEDIR)/chicken (possibly with a prefix or suffix).) +$(warning In CHICKEN 4.11.0, setting INCDIR will cause a build error, in 4.12.0 it will be removed.) +CHICKENINCDIR=$(INCDIR) +endif + +BINDIR ?= $(PREFIX)/bin +LIBDIR ?= $(PREFIX)/lib +SHAREDIR ?= $(PREFIX)/share +DATADIR ?= $(SHAREDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) +INCLUDEDIR ?= $(PREFIX)/include +MANDIR ?= $(SHAREDIR)/man + +DOCDIR ?= $(DATADIR)/doc VARDIR ?= $(LIBDIR) -CHICKENLIBDIR = $(VARDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) +MAN1DIR ?= $(MANDIR)/man1 +CHICKENLIBDIR ?= $(VARDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) EGGDIR ?= $(CHICKENLIBDIR)/$(BINARYVERSION) +CHICKENINCDIR ?= $(INCLUDEDIR)/$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) # For the windows shell, we must distinguish between paths built into # binaries (system calls may use slash as a separator) and paths # passed to shell commands when installing. We prefix the latter with # an 'I': -INST_DIRS=BINDIR LIBDIR SHAREDIR DATADIR MANDIR INCDIR DOCDIR EGGDIR +INST_DIRS=BINDIR LIBDIR SHAREDIR DATADIR MAN1DIR CHICKENINCDIR DOCDIR EGGDIR $(foreach dir,$(INST_DIRS),$(eval I$(dir)=$(subst /,$(SEP),$($(dir))))) INSTALL_LIB_NAME = $(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX) @@ -361,7 +383,7 @@ endif $(call echo, >>, $@,# define C_INSTALL_STATIC_LIB_HOME "$(LIBDIR)") $(call echo, >>, $@,#endif) $(call echo, >>, $@,#ifndef C_INSTALL_INCLUDE_HOME) - $(call echo, >>, $@,# define C_INSTALL_INCLUDE_HOME "$(INCDIR)") + $(call echo, >>, $@,# define C_INSTALL_INCLUDE_HOME "$(CHICKENINCDIR)") $(call echo, >>, $@,#endif) $(call echo, >>, $@,#ifndef C_INSTALL_MORE_LIBS) $(call echo, >>, $@,# define C_INSTALL_MORE_LIBS "$(LIBRARIES)") diff --git a/rules.make b/rules.make index 05a1a49..e12632e 100644 --- a/rules.make +++ b/rules.make @@ -324,14 +324,14 @@ install-dev: install-libs $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(ILIBDIR)" $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(ISHAREDIR)" $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IEGGDIR)" - $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IINCDIR)" + $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(ICHICKENINCDIR)" $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IDATADIR)" $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_STATIC_LIBRARY_OPTIONS) lib$(PROGRAM_PREFIX)chicken$(PROGRAM_SUFFIX)$(A) "$(DESTDIR)$(ILIBDIR)" ifneq ($(POSTINSTALL_STATIC_LIBRARY),true) $(POSTINSTALL_STATIC_LIBRARY) $(POSTINSTALL_STATIC_LIBRARY_FLAGS) "$(ILIBDIR)$(SEP)libchicken$(A)" endif - $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(SRCDIR)chicken.h "$(DESTDIR)$(IINCDIR)" - $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(CHICKEN_CONFIG_H) "$(DESTDIR)$(IINCDIR)" + $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(SRCDIR)chicken.h "$(DESTDIR)$(ICHICKENINCDIR)" + $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(CHICKEN_CONFIG_H) "$(DESTDIR)$(ICHICKENINCDIR)" ifeq ($(PLATFORM),macosx) $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(SRCDIR)mac.r "$(DESTDIR)$(ISHAREDIR)" $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(SRCDIR)CHICKEN.icns "$(DESTDIR)$(IDATADIR)" @@ -410,12 +410,12 @@ endif endif install-other-files: - $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IMANDIR)" + $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IMAN1DIR)" $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IDOCDIR)" $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IDATADIR)" $(foreach obj, $(MANPAGES), \ $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) \ - $(SRCDIR)$(obj) "$(DESTDIR)$(IMANDIR)" $(NL)) + $(SRCDIR)$(obj) "$(DESTDIR)$(IMAN1DIR)" $(NL)) $(MAKEDIR_COMMAND) $(MAKEDIR_COMMAND_OPTIONS) "$(DESTDIR)$(IDOCDIR)$(SEP)manual" -$(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(SRCDIR)manual-html$(SEP)* "$(DESTDIR)$(IDOCDIR)$(SEP)manual" $(INSTALL_PROGRAM) $(INSTALL_PROGRAM_FILE_OPTIONS) $(SRCDIR)README "$(DESTDIR)$(IDOCDIR)" @@ -452,10 +452,10 @@ endif $(foreach obj,$(MANPAGES),\ $(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) \ - "$(DESTDIR)$(IMANDIR)$(SEP)$(obj)" $(NL)) + "$(DESTDIR)$(IMAN1DIR)$(SEP)$(obj)" $(NL)) - $(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IINCDIR)$(SEP)chicken.h" - $(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(IINCDIR)$(SEP)$(CHICKEN_CONFIG_H)" + $(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(ICHICKENINCDIR)$(SEP)chicken.h" + $(REMOVE_COMMAND) $(REMOVE_COMMAND_OPTIONS) "$(DESTDIR)$(ICHICKENINCDIR)$(SEP)$(CHICKEN_CONFIG_H)" $(REMOVE_COMMAND) $(REMOVE_COMMAND_RECURSIVE_OPTIONS) "$(DESTDIR)$(IDATADIR)" $(REMOVE_COMMAND) $(REMOVE_COMMAND_RECURSIVE_OPTIONS) "$(DESTDIR)$(IEGGDIR)" ifdef WINDOWS_SHELL -- 1.7.10.4