# And over-ride all of the other magic.
include scripts/boiler.mk
-# These are not yet converted to the new system
-SUBDIRS = $(wildcard raddb)
-
.PHONY: test
test:
@$(MAKE) -C raddb/certs
- @$(MAKE) -C src/tests tests
#
# The $(R) is a magic variable not defined anywhere in this source.
install.sbindir:
@[ -d $(R)$(sbindir) ] || $(INSTALL) -d -m 755 $(R)$(sbindir)
-.PHONY: install.raddbdir
-install.raddbdir:
- @[ -d $(R)$(raddbdir) ] || $(INSTALL) -d -m 755 $(R)$(raddbdir)
-
.PHONY: install.dirs
install.dirs: install.bindir install.sbindir
@$(INSTALL) -d -m 755 $(R)$(mandir)
install: install.dirs install.share install.man
-install:
- @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
-
ifneq ($(RADMIN),)
ifneq ($(RGROUP),)
.PHONY: install-chown
endif
endif
-.PHONY: common $(SUBDIRS)
-
-#
-# We need to convert these directories to boilermake!
-#
-all:
- @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
-
-common: $(SUBDIRS)
-
-$(SUBDIRS):
- @echo "Making $(WHAT_TO_MAKE) in $@..."
- @$(MAKE) $(MFLAGS) -C $@ $(WHAT_TO_MAKE)
-
distclean: clean
@rm -f config.cache config.log config.status libtool \
src/include/radpaths.h src/include/stamp-h \
-SUBMAKEFILES := src/all.mk scripts/all.mk doc/all.mk
+SUBMAKEFILES := src/all.mk scripts/all.mk doc/all.mk raddb/all.mk
+++ /dev/null
-#
-# Makefile
-#
-# Version: $Id$
-#
-
-include ../Make.inc
-
-#
-# The list of files to install.
-#
-FILES = acct_users clients.conf dictionary templates.conf \
- experimental.conf hints huntgroups \
- preproxy_users proxy.conf radiusd.conf trigger.conf \
- users README.rst
-
-DEFAULT_SITES = default inner-tunnel
-
-DEFAULT_MODULES = always attr_filter attr_rewrite cache_eap chap checkval \
- counter cui detail detail.log digest dhcp dynamic_clients eap \
- echo exec expiration expr files inner-eap linelog logintime \
- mschap ntlm_auth pap passwd preprocess radutmp realm \
- replicate soh sradutmp unix utf8 wimax
-
-#
-# This target is here for local debugging
-#
-all: sites-enabled mods-enabled
-
-.PHONY: sites-enabled
-sites-enabled:
- @if [ ! -d sites-enabled ]; then \
- mkdir sites-enabled; \
- fi
- @cd sites-enabled/; \
- for x in $(DEFAULT_SITES); do \
- if [ ! -f $$x ]; then \
- ln -s ../sites-available/$$x; \
- fi; \
- done
-
-.PHONY: mods-enabled
-mods-enabled:
- @if [ ! -d mods-enabled ]; then \
- mkdir mods-enabled; \
- fi
- @cd mods-enabled/; \
- for x in $(DEFAULT_MODULES); do \
- if [ ! -f $$x ]; then \
- ln -s ../mods-available/$$x; \
- fi; \
- done
-
-install:
- $(INSTALL) -d -m 750 $(R)$(raddbdir)
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/sites-available
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/sites-enabled
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/mods-available
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/mods-enabled
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/policy.d
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/filter
- @echo "Creating/updating files in $(R)$(raddbdir)"; \
- for i in $(FILES) `find sites-available/ mods-available/ policy.d/ filter/ -type f -print | sed 's/.*~//;s/.*#.*//' `; do \
- [ ! -f $(R)$(raddbdir)/$$i ] && $(INSTALL) -m 640 $$i $(R)$(raddbdir)/$$i; \
- if [ "`find $$i -newer $(R)$(raddbdir)/$$i`" ]; then \
- echo "** $(R)$(raddbdir)/$$i"; \
- nt=1; \
- fi; \
- done; \
- if [ "$$nt" ]; then \
- echo "**";\
- echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
- echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
- echo "**";\
- echo "** The sample configuration files in `pwd`";\
- echo "** are newer than those in $(R)$(raddbdir)";\
- echo "**";\
- echo "** Please investigate and manually copy (if appropriate) the files listed above.";\
- echo "**";\
- echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
- echo "** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **";\
- fi
- chmod 640 $(R)$(raddbdir)/clients.conf
- if [ ! -d $(R)$(raddbdir)/certs ]; then \
- $(INSTALL) -d -m 750 $(R)$(raddbdir)/certs; \
- $(INSTALL) -m 750 certs/bootstrap $(R)$(raddbdir)/certs; \
- for i in Makefile README xpextensions ca.cnf server.cnf client.cnf; do \
- $(INSTALL) -m 640 certs/$$i $(R)$(raddbdir)/certs; \
- done; \
- $(MAKE) -C $(R)$(raddbdir)/certs; \
- fi
- if [ ! -d $(R)$(raddbdir)/sql ]; then \
- find sql -name CVS -prune -o -print | \
- while read file; do \
- if [ -d "$$file" ]; then \
- $(INSTALL) -d -m 750 "$(R)$(raddbdir)/$$file"; \
- else \
- $(INSTALL) -m 640 "$$file" "$(R)$(raddbdir)/$$file"; \
- fi; \
- done; \
- fi
- @cd $(R)$(raddbdir)/sites-enabled/; \
- for x in $(DEFAULT_SITES); do \
- if [ ! -f $$x ]; then \
- ln -s ../sites-available/$$x; \
- fi; \
- done
- @cd $(R)$(raddbdir)/mods-enabled/; \
- for x in $(DEFAULT_MODULES); do \
- if [ ! -f $$x ]; then \
- ln -s ../mods-available/$$x; \
- fi; \
- done
-
-clean:
- @rm -rf *~ $(addprefix sites-enabled/,$(DEFAULT_SITES)) \
- $(addprefix mods-enabled/,$(DEFAULT_MODULES))
-
-triggers:
- @grep exec_trigger `find ../src -name "*.c" -print` | grep '"' | sed -e 's/.*,//' -e 's/ *"//' -e 's/");.*//'
--- /dev/null
+#
+# The list of files to install.
+#
+LOCAL_FILES := acct_users clients.conf dictionary templates.conf \
+ experimental.conf hints huntgroups \
+ preproxy_users proxy.conf radiusd.conf trigger.conf \
+ users README.rst
+
+DEFAULT_SITES := default inner-tunnel
+LOCAL_SITES := $(addprefix raddb/sites-enabled/,$(DEFAULT_SITES))
+
+DEFAULT_MODULES := always attr_filter attr_rewrite cache_eap chap checkval \
+ counter cui detail detail.log digest dhcp dynamic_clients eap \
+ echo exec expiration expr files inner-eap linelog logintime \
+ mschap ntlm_auth pap passwd preprocess radutmp realm \
+ replicate soh sradutmp unix utf8 wimax
+
+LOCAL_MODULES := $(addprefix raddb/mods-enabled/,$(DEFAULT_MODULES))
+
+LOCAL_CERT_FILES := Makefile bootstrap README xpextensions \
+ ca.cnf server.cnf client.cnf
+
+RADDB_DIRS := sites-available sites-enabled mods-available mods-enabled \
+ filter policy.d certs
+
+# Installed directories
+INSTALL_RADDB_DIRS := $(R)$(raddbdir)/ $(addprefix $(R)$(raddbdir)/, \
+ $(RADDB_DIRS) $(shell find raddb/sql -type d -print))
+
+# Grab files from the various subdirectories
+INSTALL_FILES := $(wildcard raddb/sites-available/* raddb/mods-available/*) \
+ $(LOCAL_SITES) $(LOCAL_MODULES) \
+ $(addprefix raddb/,$(LOCAL_FILES)) \
+ $(addprefix raddb/certs/,$(LOCAL_CERT_FILES)) \
+ $(wildcard raddb/policy.d/* raddb/filter/*) \
+ $(shell find raddb/sql -type f -print)
+
+
+# Re-write local files to installed files, filtering out editor backups
+INSTALL_RADDB := $(patsubst raddb/%,$(R)$(raddbdir)/%,\
+ $(filter-out %~,$(INSTALL_FILES)))
+
+all: $(LOCAL_SITES) $(LOCAL_MODULES)
+
+clean: clean.raddb
+
+install: install.raddb
+
+# Local build rules
+raddb/sites-enabled mods-enabled:
+ @echo MKDIR $@
+ @mkdir -p $@
+
+# Set up the default modules for running in-source builds
+raddb/mods-enabled/%: raddb/mods-available/% | raddb/mods-enabled
+ @echo LN-S $@
+ @cd $(dir $@) && ln -sf ../mods-available/$(notdir $@)
+
+# Set up the default sites for running in-source builds
+raddb/sites-enabled/%: raddb/sites-available/% | raddb/sites-enabled
+ @echo LN-S $@
+ @cd $(dir $@) && ln -sf ../sites-available/$(notdir $@)
+
+# Installation rules for directories. Note permissions are 750!
+$(INSTALL_RADDB_DIRS):
+ @echo INSTALL $(patsubst $(R)$(raddbdir)%,raddb%,$@)
+ @$(INSTALL) -d -m 750 $@
+
+# The installed files have ORDER dependencies. This means that they
+# will be installed if the target doesn't exist. And they won't be
+# installed if the target already exists, even if it is out of date.
+#
+# This dependency lets us install the server on top of an existing
+# system, hopefully without breaking anything.
+
+# Installation rules for mods-enabled. Note ORDER dependencies
+$(R)$(raddbdir)/mods-enabled/%: | $(R)$(raddbdir)/mods-available/%
+ @cd $(dir $@) && ln -sf ../mods-available/$(notdir $@)
+
+# Installation rules for sites-enabled. Note ORDER dependencies
+$(R)$(raddbdir)/sites-enabled/%: | $(R)$(raddbdir)/sites-available/%
+ @cd $(dir $@) && ln -sf ../mods-available/$(notdir $@)
+
+# Installation rules for plain modules.
+$(R)$(raddbdir)/%: | raddb/%
+ @echo INSTALL $(patsubst $(R)$(raddbdir)/%,raddb/%,$@)
+ @$(INSTALL) -m 640 $(patsubst $(R)$(raddbdir)/%,raddb/%,$@) $@
+
+# Bootstrap is special
+$(R)$(raddbdir)/certs/bootstrap: | raddb/certs/bootstrap
+ @echo INSTALL $(patsubst $(R)$(raddbdir)/%,raddb/%,$@)
+ @$(INSTALL) -m 750 $(patsubst $(R)$(raddbdir)/%,raddb/%,$@) $@
+
+# List directories before the file targets.
+# It's not clear why GNU Make doesn't deal well with this.
+install.raddb: $(INSTALL_RADDB_DIRS) $(INSTALL_RADDB)
+
+clean.raddb:
+ @rm -f *~ $(addprefix raddb/sites-enabled/,$(DEFAULT_SITES)) \
+ $(addprefix raddb/mods-enabled/,$(DEFAULT_MODULES))
+
+#
+# A handy target to find out which triggers are where.
+# Should only be run by SNMP developers.
+#
+triggers:
+ @grep exec_trigger `find src -name "*.c" -print` | grep '"' | sed -e 's/.*,//' -e 's/ *"//' -e 's/");.*//'
SRC_CFLAGS := @perl_cflags@
TGT_LDLIBS := @perl_ldflags@
-install: install.raddbdir $(R)$(raddbdir)/example.pl
+install: $(R)$(raddbdir)/example.pl
-$(R)$(raddbdir)/example.pl: src/modules/rlm_perl/example.pl
+$(R)$(raddbdir)/example.pl: src/modules/rlm_perl/example.pl | $(R)$(raddbdir)/
@$(ECHO) INSTALL $(notdir $<)
@$(INSTALL) -m 755 $< $(R)$(raddbdir)/
TGT_LDLIBS := @python_ldflags@
SRC_CFLAGS := @python_cflags@
-install: install.raddbdir $(R)$(raddbdir)/example.py
+install: $(R)$(raddbdir)/example.py
-$(R)$(raddbdir)/example.py: src/modules/rlm_python/example.py
+$(R)$(raddbdir)/example.py: src/modules/rlm_python/example.py | $(R)$(raddbdir)/
@$(ECHO) INSTALL $(notdir $<)
@$(INSTALL) -m 755 $< $(R)$(raddbdir)/
SRC_CFLAGS := @ruby_cflags@
TGT_LDLIBS := @ruby_ldflags@
-install: install.raddbdir $(R)$(raddbdir)/example.rb
+install: $(R)$(raddbdir)/example.rb
-$(R)$(raddbdir)/example.rb: src/modules/rlm_ruby/example.rb
+$(R)$(raddbdir)/example.rb: src/modules/rlm_ruby/example.rb | $(R)$(raddbdir)/
@$(ECHO) INSTALL $(notdir $<)
@$(INSTALL) -m 755 $< $(R)$(raddbdir)/