summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-09-27 21:20:56 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-09-27 21:20:56 +0000
commitf572827157397e493e5499f115b15d0de992480a (patch)
tree8fb49c5ed90d01458a138d0ce582493c94e56219 /src
parent9d87b0f9235458169b513904ce4e220da4e29d73 (diff)
Removed old mod_version system for detecting module versions and replaced with the Module::GetVersion() function
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2521 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/Makefile5
-rw-r--r--src/core/Makefile23
-rw-r--r--src/mod_version.c42
-rw-r--r--src/module.cpp23
-rw-r--r--src/modulemanager.cpp27
-rw-r--r--src/modules/Makefile23
-rw-r--r--src/modules/Makefile.sub18
-rw-r--r--src/protocol/Makefile21
-rw-r--r--src/protocol/Makefile.sub15
9 files changed, 92 insertions, 105 deletions
diff --git a/src/Makefile b/src/Makefile
index a76a13112..a54d194c4 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -29,7 +29,7 @@ all: services
distclean: spotless
distclean_modules: clean_modules spotless
-services: $(OBJS) mod_version
+services: $(OBJS)
$(MAKEBIN) $(CC) $(CFLAGS) $(OBJS) $(ANOPELIBS) $(MLIBS) -o $@ $(LDFLAGS)
$(OBJS): Makefile
@@ -77,9 +77,6 @@ users.o: users.c $(INCLUDES)
vsnprintf.o: vsnprintf.c $(INCLUDES)
wildcard.o: wildcard.cpp $(INCLUDES)
-mod_version: mod_version.c $(INCLUDES)
- $(MAKEBIN) $(CC) $(CDEFS) $(CFLAGS) $(MODULEFLAGS) -I../include/ -c mod_version.c
-
modules: DUMMY
@modules/configure modules
@${MAKE} -C modules ${MAKEARGS} all
diff --git a/src/core/Makefile b/src/core/Makefile
index 7065c03aa..985cf3011 100644
--- a/src/core/Makefile
+++ b/src/core/Makefile
@@ -8,29 +8,24 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
'PROFILE=${PROFILE}' 'SHARED=${SHARED}' \
'MODULEFLAGS=${MODULEFLAGS}' 'MAKEBIN=${MAKEBIN}'
-OBJECTS= $(SRCS:.c=.o)
-OBJECTS+= $(SRCS:.cpp=.o)
-SO_FILES=$(OBJECTS:.o=.s)
+OBJECTS= $(SRCS:.c=.so)
+OBJECTS+= $(SRCS:.cpp=.so)
CDEFS= -rdynamic -Wall
all: modules subs
-modules: $(OBJECTS) $(SO_FILES)
+modules: $(OBJECTS)
install:
$(CP) ./*.so $(INSTDIR)/data/modules
distclean: spotless
-.c.o:
- $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -c $<
+%.so: %.c
+ $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.c
-.cpp.o:
- $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -c $<
-
-.o.s:
- $(MAKEBIN) $(CC) ${SHARED} ../mod_version.o $< -o $*.so ${PROFILE}
- @$(TOUCH) $*.s
+%.so: %.cpp
+ $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.cpp
subs:
@for i in $(SUBS); do \
@@ -43,8 +38,8 @@ subs_clean:
(cd $$i; $(MAKE) clean); done
clean: subs_clean
- rm -f *.o *.s *.so *.c~ core
+ rm -f *.so~ core
spotless: subs_clean
- rm -f *.o *.s *.so *.c~ core *.so Makefile.inc
+ rm -f *.so~ core *.so Makefile.inc
diff --git a/src/mod_version.c b/src/mod_version.c
deleted file mode 100644
index 98c27d259..000000000
--- a/src/mod_version.c
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "version.h"
-
-#ifdef _WIN32
-# ifdef MODULE_COMPILE
-# define E extern __declspec(dllexport)
-# else
-# define E extern __declspec(dllimport)
-# endif
-#else
-# define E extern
-#endif
-
-extern "C"
-{
- E int getAnopeBuildVersion();
- E int getAnopeMajorVersion();
- E int getAnopeMinorVersion();
- E int getAnopePatchVersion();
-
- int getAnopeBuildVersion()
- {
-#if 0
- return VERSION_BUILD;
-#endif
- return 0; // XXX
- }
-
- int getAnopeMajorVersion()
- {
- return VERSION_MAJOR;
- }
-
- int getAnopeMinorVersion()
- {
- return VERSION_MINOR;
- }
-
- int getAnopePatchVersion()
- {
- return VERSION_PATCH;
- }
-}
diff --git a/src/module.cpp b/src/module.cpp
index 463a083c7..888087d85 100644
--- a/src/module.cpp
+++ b/src/module.cpp
@@ -166,3 +166,26 @@ void Module::SetAuthor(const std::string &nauthor)
{
this->author = nauthor;
}
+
+Version::Version(unsigned vMajor, unsigned vMinor, unsigned vBuild) : Major(vMajor), Minor(vMinor), Build(vBuild)
+{
+}
+
+Version::~Version()
+{
+}
+
+const unsigned Version::GetMajor()
+{
+ return Major;
+}
+
+const unsigned Version::GetMinor()
+{
+ return Minor;
+}
+
+const unsigned Version::GetBuild()
+{
+ return Build;
+} \ No newline at end of file
diff --git a/src/modulemanager.cpp b/src/modulemanager.cpp
index 887820ead..efbb6db83 100644
--- a/src/modulemanager.cpp
+++ b/src/modulemanager.cpp
@@ -216,6 +216,33 @@ int ModuleManager::LoadModule(const std::string &modname, User * u)
m->filename = pbuf;
m->handle = handle;
+ Version v = m->GetVersion();
+ if (v.GetMajor() < VERSION_MAJOR || (v.GetMajor() == VERSION_MAJOR && v.GetMinor() < VERSION_MINOR))
+ {
+ alog("Module %s is compiled against an older version of Anope %d.%d, this is %d.%d", modname.c_str(), v.GetMajor(), v.GetMinor(), VERSION_MAJOR, VERSION_MINOR);
+ DeleteModule(m);
+ return MOD_STOP;
+ }
+ else if (v.GetMajor() > VERSION_MAJOR || (v.GetMajor() == VERSION_MAJOR && v.GetMinor() > VERSION_MINOR))
+ {
+ alog("Module %s is compiled against a newer version of Anope %d.%d, this is %d.%d", modname.c_str(), v.GetMajor(), v.GetMinor(), VERSION_MAJOR, VERSION_MINOR);
+ DeleteModule(m);
+ return MOD_STOP;
+ }
+ else if (v.GetBuild() < VERSION_BUILD)
+ {
+ alog("Module %s is compiled against an older revision of Anope %d, this is %d", modname.c_str(), v.GetBuild(), VERSION_BUILD);
+ }
+ else if (v.GetBuild() > VERSION_BUILD)
+ {
+ alog("Module %s is compiled against a newer revision of Anope %d, this is %d", modname.c_str(), v.GetBuild(), VERSION_BUILD);
+ }
+ else if (v.GetBuild() == VERSION_BUILD)
+ {
+ alog("Module %s compiled against current version of Anope %d", modname.c_str(), v.GetBuild());
+ }
+
+
if (m->type == PROTOCOL && IsOneOfModuleTypeLoaded(PROTOCOL))
{
DeleteModule(m);
diff --git a/src/modules/Makefile b/src/modules/Makefile
index 531e01736..c6653b5f3 100644
--- a/src/modules/Makefile
+++ b/src/modules/Makefile
@@ -8,14 +8,13 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
'PROFILE=${PROFILE}' 'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}'\
'MAKEBIN=${MAKEBIN}'
-OBJECTS= $(SRCS:.c=.o)
-OBJECTS+= $(SRCS:.cpp=.o)
-SO_FILES=$(OBJECTS:.o=.s)
+OBJECTS= $(SRCS:.c=.so)
+OBJECTS+= $(SRCS:.cpp=.so)
CDEFS= -rdynamic -Wall
all: modules subs
-modules: $(OBJECTS) $(SO_FILES)
+modules: $(OBJECTS)
install:
$(CP) ./*.so $(INSTDIR)/data/modules
@@ -25,15 +24,11 @@ install:
distclean: spotless
-.c.o:
- $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -c $<
+%.so: %.c
+ $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.c
-.cpp.o:
- $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -c $<
-
-.o.s:
- $(MAKEBIN) $(CC) ${SHARED} ../mod_version.o $< -o $*.so ${PROFILE}
- @$(TOUCH) $*.s
+%.so: %.cpp
+ $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.cpp
subs:
@for i in $(SUBS); do \
@@ -46,8 +41,8 @@ subs_clean:
(cd $$i; $(MAKE) $(MAKEARGS) clean); done
clean: subs_clean
- rm -f *.o *.s *.so *.c~ core
+ rm -f *.so~ core
spotless:
- rm -f *.o *.s *.so *.c~ core *.so Makefile.inc
+ rm -f *.so~ core *.so Makefile.inc
diff --git a/src/modules/Makefile.sub b/src/modules/Makefile.sub
index d9011d602..65c83fb89 100644
--- a/src/modules/Makefile.sub
+++ b/src/modules/Makefile.sub
@@ -5,24 +5,24 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
'RUNGROUP=${RUNGROUP}' \
'PROFILE=${PROFILE}' 'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}'
-OBJECTS= $(SRCS:.c=.o)
-SO_FILES=$(OBJECTS:.o=.s)
+OBJECTS= $(SRCS:.c=.so)
+OBJECTS+=$(SRCS:.cpp=.so)
CDEFS= -rdynamic -Wall
all: module
-module: $(OBJECTS) so
+module: $(OBJECTS)
distclean: spotless
-.c.o:
- $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -c $<
+%.so: %.c
+ $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -o $*.so $*.cpp
-so:
- $(CC) ${SHARED} ../../mod_version.o $(OBJECTS) -o ../$(TARGET).so ${PROFILE}
+%.so: %.cpp
+ $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -o $*.so $*.cpp
clean:
- rm -f *.o *.so *.c~ core
+ rm -f *.so~ core
spotless:
- rm -f *~ *.o *.so *.c~ core
+ rm -f *~ *.so~ core
diff --git a/src/protocol/Makefile b/src/protocol/Makefile
index 9cef64955..a58fd8e64 100644
--- a/src/protocol/Makefile
+++ b/src/protocol/Makefile
@@ -8,9 +8,8 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
'PROFILE=${PROFILE}' 'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}'\
'MAKEBIN=${MAKEBIN}'
-OBJECTS= $(SRCS:.c=.o)
-OBJECTS+= $(SRCS:.cpp=.o)
-SO_FILES=$(OBJECTS:.o=.s)
+OBJECTS= $(SRCS:.c=.so)
+OBJECTS+= $(SRCS:.cpp=.so)
CDEFS= -rdynamic -Wall
all: modules subs
@@ -22,15 +21,11 @@ install:
distclean: clean spotless
-.c.o:
- $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -c $<
+%.so: %.c
+ $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.c
-.cpp.o:
- $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -c $<
-
-.o.s:
- $(MAKEBIN) $(CC) ${SHARED} ../mod_version.o $< -o $*.so ${PROFILE}
- @$(TOUCH) $*.s
+%.so: %.cpp
+ $(MAKEBIN) $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../${INCLUDEDIR} -o $*.so $*.cpp
subs:
@for i in $(SUBS); do \
@@ -43,9 +38,9 @@ subs_clean:
(cd $$i; $(MAKE) clean); done
clean: subs_clean
- rm -f *.o *.s *.so *.c~ core
+ rm -f *.so~ core
spotless: subs_clean
- rm -f *.o *.s *.so *.c~ core *.so Makefile.inc
+ rm -f *.so~ core *.so Makefile.inc
diff --git a/src/protocol/Makefile.sub b/src/protocol/Makefile.sub
index 12502d87e..60b95920d 100644
--- a/src/protocol/Makefile.sub
+++ b/src/protocol/Makefile.sub
@@ -5,8 +5,8 @@ MAKEARGS = 'CFLAGS=${CFLAGS}' 'CC=${CC}' 'ANOPELIBS=${ANOPELIBS}' \
'RUNGROUP=${RUNGROUP}' \
'PROFILE=${PROFILE}' 'SHARED=${SHARED}' 'MODULEFLAGS=${MODULEFLAGS}'
-OBJECTS= $(SRCS:.c=.o)
-SO_FILES=$(OBJECTS:.o=.s)
+OBJECTS= $(SRCS:.c=.so)
+OBJECTS+=$(SRCS:.cpp=.so)
CDEFS= -rdynamic -Wall
all: module
@@ -15,14 +15,11 @@ module: $(OBJECTS) so
distclean: spotless
-.c.o:
- $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -c $<
+%.so: %.c
+ $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -o $*.so $*.c
-.cpp.o:
- $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -c $<
-
-so:
- $(CC) ${SHARED} $(OBJECTS) -o ../$(TARGET).so ${PROFILE}
+%.so: %.cpp
+ $(CC) ${CFLAGS} ${CDEFS} ${MODULEFLAGS} -I../ -I../../${INCLUDEDIR} -o $*.so $*.cpp
clean:
rm -f *.o *.so *.c~ core