CC = @CC@
SYSTEM = @SYSTEM@
+BUILDPATH = @BUILD_DIR@
SOCKETENGINE = @SOCKETENGINE@
CXXFLAGS += -pipe -fPIC -DPIC
LDLIBS = -pthread -lstdc++
MODPATH = "@MODULE_DIR@"
BINPATH = "@BINARY_DIR@"
LAUNCHDPATH = "/System/Library/LaunchDaemons"
-LIBPATH = "@LIBRARY_DIR@"
INSTMODE = 0755
@IFEQ $(CC) icc
CXXFLAGS += -DDARWIN -frtti
LDLIBS += -ldl
SHARED = -bundle -twolevel_namespace -undefined dynamic_lookup
- CORE_FLAGS = -dynamic -bind_at_load -L.
+ CORELDFLAGS = -dynamic -bind_at_load -L.
+@ELSIFEQ $(SYSTEM) interix
+ CXXFLAGS += -D_ALL_SOURCE -I/usr/local/include
@ENDIF
@IFDEF D
- CXXFLAGS += -g3
+ CXXFLAGS += -g3 -Werror
HEADER = debug-header
@ELSE
CXXFLAGS += -g1
@ENDIF
FOOTER = finishmessage
-CXXFLAGS += -I../include
+CXXFLAGS += -Iinclude
@GNU_ONLY MAKEFLAGS += --no-print-directory
+@GNU_ONLY SOURCEPATH = $(shell /bin/pwd)
+@BSD_ONLY SOURCEPATH != /bin/pwd
+
@IFDEF V
RUNCC = $(CC)
VERBOSE = -v
@ELSE
@GNU_ONLY MAKEFLAGS += --silent
@BSD_ONLY MAKE += -s
- RUNCC = ../make/run-cc.pl $(CC)
+ RUNCC = perl $(SOURCEPATH)/make/run-cc.pl $(CC)
@ENDIF
@DO_EXPORT RUNCC CXXFLAGS CC LDLIBS PICLDFLAGS VERBOSE SOCKETENGINE CORELDFLAGS
-@DO_EXPORT BASE CONPATH MODPATH BINPATH LIBPATH
+@DO_EXPORT BASE CONPATH MODPATH BINPATH SOURCEPATH BUILDPATH
# Default target
TARGET = all
all: $(FOOTER)
target: $(HEADER)
-@GNU_ONLY $(MAKEENV) $(MAKE) -C src -f ../make/gnu-real.mk $(TARGET)
-@BSD_ONLY $(MAKEENV) $(MAKE) -C src -f ../make/bsd-real.mk $(TARGET)
+ $(MAKEENV) perl make/calcdep.pl
+ $(MAKEENV) $(MAKE) -C $(BUILDPATH) -f real.mk $(TARGET)
debug:
@${MAKE} D=1 all
@echo 'Building single module:'
mod-footer: target
- @echo 'To install, copy src/$(TARGET) to $(MODPATH)'
+ @echo 'To install, copy $(BUILDPATH)/$(TARGET) to $(MODPATH)'
@echo 'Or, run "make install"'
std-header:
install: target@EXTRA_DIR@
@-install -d -m $(INSTMODE) $(BASE)
- @-install -d -m $(INSTMODE) $(LIBPATH)
+ @-install -d -m $(INSTMODE) $(BASE)/data
+ @-install -d -m $(INSTMODE) $(BASE)/logs
@-install -d -m $(INSTMODE) $(BINPATH)
@-install -d -m $(INSTMODE) $(CONPATH)
@-install -d -m $(INSTMODE) $(MODPATH)
- -install -m $(INSTMODE) src/commands/*.so $(LIBPATH)
- -install -m $(INSTMODE) src/modules/*.so $(MODPATH)
+ -install -m $(INSTMODE) $(BUILDPATH)/modules/*.so $(MODPATH)
+ -install -m $(INSTMODE) $(BUILDPATH)/bin/inspircd $(BINPATH)
-install -m $(INSTMODE) @STARTSCRIPT@ $(@DESTINATION@) 2>/dev/null
- -install -m $(INSTMODE) src/inspircd $(BINPATH)
@$(MAKEENV) make/install-extras.pl install
@echo ""
@echo "*************************************"
@echo "* REMEMBER TO EDIT YOUR CONFIG FILE *"
@echo "*************************************"
+@GNU_ONLY RCS_FILES = $(wildcard .git/index .svn/entries)
+@GNU_ONLY GNUmakefile: .Makefile.inc configure .config.cache $(RCS_FILES)
+@GNU_ONLY ./configure -update
+
clean:
@echo Cleaning...
- @rm -f src/inspircd src/modes/modeclasses.a
- @rm -f src/*.so src/modules/*.so src/commands/*.so src/modules/*/*.so
- @rm -f src/*.o src/*/*.o src/modules/*/*.o
- @rm -f src/.*.d src/*/.*.d src/modules/*/.*.d
+ @-rm -f src/inspircd src/modes/modeclasses.a include/inspircd_se_config.h
+ @-rm -f src/*.so src/modules/*.so src/commands/*.so
+ @-rm -f src/*.o src/*/*.o src/modules/*/*.o
+ @-rm -f src/.*.d src/*/.*.d src/modules/*/.*.d
+ @-rm -f $(BUILDPATH)/bin/inspircd $(BUILDPATH)/include $(BUILDPATH)/real.mk
+ @-rm -rf $(BUILDPATH)/obj $(BUILDPATH)/modules
+ @-rmdir $(BUILDPATH)/bin 2>/dev/null
+ @-rmdir $(BUILDPATH) 2>/dev/null
@echo Completed.
deinstall:
-rm $(BINPATH)/inspircd
- -rm $(LIBPATH)/*.so
-rm $(MODPATH)/*.so
@make/install-extras.pl deinstall
rm -f BSDmakefile
rm -f GNUmakefile
rm -f include/inspircd_config.h
- rm -f include/inspircd_se_config.h
+ rm -f include/inspircd_version.h
distclean: clean configureclean
@echo ' Currently installs to ${BASE}'
@echo ' debug Compile a debug build. Equivalent to "make D=1 all"'
@echo ''
- @echo ' M=m_foo Builds a single module'
- @echo ' T=target Builds a user-specified target'
- @echo ' Target can be a file path relative to src/, or one of:'
- @echo ' inspircd commands modules'
+ @echo ' M=m_foo Builds a single module (cmd_foo also works here)'
+ @echo ' T=target Builds a user-specified target, such as "inspircd" or "modules"'
+ @echo ' Other targets are specified by their path in the build directory'
@echo ' Multiple targets may be separated by a space'
@echo ''
@echo ' clean Cleans object files produced by the compile'