diff --git a/public/sample_ext/AMBuildScript b/public/sample_ext/AMBuildScript
index a88acc26..192158c6 100644
--- a/public/sample_ext/AMBuildScript
+++ b/public/sample_ext/AMBuildScript
@@ -178,7 +178,7 @@ class ExtensionConfig(object):
'-fvisibility=hidden',
]
cxx.cxxflags += [
- '-std=c++11',
+ '-std=c++14',
'-fno-exceptions',
'-fno-threadsafe-statics',
'-Wno-non-virtual-dtor',
diff --git a/public/sample_ext_nosdk/AMBuildScript b/public/sample_ext_nosdk/AMBuildScript
new file mode 100644
index 00000000..1834d528
--- /dev/null
+++ b/public/sample_ext_nosdk/AMBuildScript
@@ -0,0 +1,286 @@
+# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
+import os, sys
+
+# Simple extensions do not need to modify this file.
+
+def ResolveEnvPath(env, folder):
+ if env in os.environ:
+ path = os.environ[env]
+ if os.path.isdir(path):
+ return path
+ return None
+
+ head = os.getcwd()
+ oldhead = None
+ while head != None and head != oldhead:
+ path = os.path.join(head, folder)
+ if os.path.isdir(path):
+ return path
+ oldhead = head
+ head, tail = os.path.split(head)
+
+ return None
+
+def Normalize(path):
+ return os.path.abspath(os.path.normpath(path))
+
+class ExtensionConfig(object):
+ def __init__(self):
+ self.binaries = []
+ self.extensions = []
+ self.generated_headers = None
+ self.mms_root = None
+ self.sm_root = None
+
+ @property
+ def tag(self):
+ if builder.options.debug == '1':
+ return 'Debug'
+ return 'Release'
+
+ def detectSDKs(self):
+ if builder.options.sm_path:
+ self.sm_root = builder.options.sm_path
+ else:
+ self.sm_root = ResolveEnvPath('SOURCEMOD18', 'sourcemod-1.8')
+ if not self.sm_root:
+ self.sm_root = ResolveEnvPath('SOURCEMOD', 'sourcemod')
+ if not self.sm_root:
+ self.sm_root = ResolveEnvPath('SOURCEMOD_DEV', 'sourcemod-central')
+
+ if not self.sm_root or not os.path.isdir(self.sm_root):
+ raise Exception('Could not find a source copy of SourceMod')
+ self.sm_root = Normalize(self.sm_root)
+
+ if builder.options.mms_path:
+ self.mms_root = builder.options.mms_path
+ else:
+ self.mms_root = ResolveEnvPath('MMSOURCE110', 'mmsource-1.10')
+ if not self.mms_root:
+ self.mms_root = ResolveEnvPath('MMSOURCE', 'metamod-source')
+ if not self.mms_root:
+ self.mms_root = ResolveEnvPath('MMSOURCE_DEV', 'mmsource-central')
+
+ if not self.mms_root or not os.path.isdir(self.mms_root):
+ raise Exception('Could not find a source copy of Metamod:Source')
+ self.mms_root = Normalize(self.mms_root)
+
+ def configure(self):
+ cxx = builder.DetectCompilers()
+
+ if cxx.like('gcc'):
+ self.configure_gcc(cxx)
+ elif cxx.vendor == 'msvc':
+ self.configure_msvc(cxx)
+
+ # Optimization
+ if builder.options.opt == '1':
+ cxx.defines += ['NDEBUG']
+
+ # Debugging
+ if builder.options.debug == '1':
+ cxx.defines += ['DEBUG', '_DEBUG']
+
+ # Platform-specifics
+ if builder.target_platform == 'linux':
+ self.configure_linux(cxx)
+ elif builder.target_platform == 'mac':
+ self.configure_mac(cxx)
+ elif builder.target_platform == 'windows':
+ self.configure_windows(cxx)
+
+ # Finish up.
+ cxx.includes += [
+ os.path.join(self.sm_root, 'public'),
+ ]
+
+ def configure_gcc(self, cxx):
+ cxx.defines += [
+ 'stricmp=strcasecmp',
+ '_stricmp=strcasecmp',
+ '_snprintf=snprintf',
+ '_vsnprintf=vsnprintf',
+ 'HAVE_STDINT_H',
+ 'GNUC',
+ ]
+ cxx.cflags += [
+ '-pipe',
+ '-fno-strict-aliasing',
+ '-Wall',
+ '-Werror',
+ '-Wno-unused',
+ '-Wno-switch',
+ '-Wno-array-bounds',
+ '-msse',
+ '-m32',
+ '-fvisibility=hidden',
+ ]
+ cxx.cxxflags += [
+ '-std=c++14',
+ '-fno-exceptions',
+ '-fno-threadsafe-statics',
+ '-Wno-non-virtual-dtor',
+ '-Wno-overloaded-virtual',
+ '-fvisibility-inlines-hidden',
+ ]
+ cxx.linkflags += ['-m32']
+
+ have_gcc = cxx.vendor == 'gcc'
+ have_clang = cxx.vendor == 'clang'
+ if cxx.version >= 'clang-3.6':
+ cxx.cxxflags += ['-Wno-inconsistent-missing-override']
+ if have_clang or (cxx.version >= 'gcc-4.6'):
+ cxx.cflags += ['-Wno-narrowing']
+ if have_clang or (cxx.version >= 'gcc-4.7'):
+ cxx.cxxflags += ['-Wno-delete-non-virtual-dtor']
+ if cxx.version >= 'gcc-4.8':
+ cxx.cflags += ['-Wno-unused-result']
+
+ if have_clang:
+ cxx.cxxflags += ['-Wno-implicit-exception-spec-mismatch']
+ if cxx.version >= 'apple-clang-5.1' or cxx.version >= 'clang-3.4':
+ cxx.cxxflags += ['-Wno-deprecated-register']
+ else:
+ cxx.cxxflags += ['-Wno-deprecated']
+ cxx.cflags += ['-Wno-sometimes-uninitialized']
+
+ if have_gcc:
+ cxx.cflags += ['-mfpmath=sse']
+
+ if builder.options.opt == '1':
+ cxx.cflags += ['-O3']
+
+ def configure_msvc(self, cxx):
+ if builder.options.debug == '1':
+ cxx.cflags += ['/MTd']
+ cxx.linkflags += ['/NODEFAULTLIB:libcmt']
+ else:
+ cxx.cflags += ['/MT']
+ cxx.defines += [
+ '_CRT_SECURE_NO_DEPRECATE',
+ '_CRT_SECURE_NO_WARNINGS',
+ '_CRT_NONSTDC_NO_DEPRECATE',
+ '_ITERATOR_DEBUG_LEVEL=0',
+ ]
+ cxx.cflags += [
+ '/W3',
+ ]
+ cxx.cxxflags += [
+ '/EHsc',
+ '/GR-',
+ '/TP',
+ ]
+ cxx.linkflags += [
+ '/MACHINE:X86',
+ 'kernel32.lib',
+ 'user32.lib',
+ 'gdi32.lib',
+ 'winspool.lib',
+ 'comdlg32.lib',
+ 'advapi32.lib',
+ 'shell32.lib',
+ 'ole32.lib',
+ 'oleaut32.lib',
+ 'uuid.lib',
+ 'odbc32.lib',
+ 'odbccp32.lib',
+ ]
+
+ if builder.options.opt == '1':
+ cxx.cflags += ['/Ox', '/Zo']
+ cxx.linkflags += ['/OPT:ICF', '/OPT:REF']
+
+ if builder.options.debug == '1':
+ cxx.cflags += ['/Od', '/RTC1']
+
+ # This needs to be after our optimization flags which could otherwise disable it.
+ # Don't omit the frame pointer.
+ cxx.cflags += ['/Oy-']
+
+ def configure_linux(self, cxx):
+ cxx.defines += ['_LINUX', 'POSIX']
+ cxx.linkflags += ['-Wl,--exclude-libs,ALL', '-lm']
+ if cxx.vendor == 'gcc':
+ cxx.linkflags += ['-static-libgcc']
+ elif cxx.vendor == 'clang':
+ cxx.linkflags += ['-lgcc_eh']
+
+ def configure_mac(self, cxx):
+ cxx.defines += ['OSX', '_OSX', 'POSIX']
+ cxx.cflags += ['-mmacosx-version-min=10.5']
+ cxx.linkflags += [
+ '-mmacosx-version-min=10.5',
+ '-arch', 'i386',
+ '-lstdc++',
+ '-stdlib=libstdc++',
+ ]
+ cxx.cxxflags += ['-stdlib=libstdc++']
+
+ def configure_windows(self, cxx):
+ cxx.defines += ['WIN32', '_WINDOWS']
+
+ def ConfigureForExtension(self, context, compiler):
+ compiler.cxxincludes += [
+ os.path.join(context.currentSourcePath),
+ os.path.join(context.currentSourcePath, 'sdk'),
+ os.path.join(self.sm_root, 'public'),
+ os.path.join(self.sm_root, 'public', 'extensions'),
+ os.path.join(self.sm_root, 'sourcepawn', 'include'),
+ os.path.join(self.sm_root, 'public', 'amtl', 'amtl'),
+ os.path.join(self.sm_root, 'public', 'amtl'),
+ ]
+ return compiler
+
+ def ConfigureForHL2(self, binary):
+ compiler = binary.compiler
+
+ mms_path = os.path.join(self.mms_root, 'core')
+
+ compiler.cxxincludes += [
+ os.path.join(mms_path),
+ os.path.join(mms_path, 'sourcehook'),
+ ]
+
+ compiler.defines += ['META_NO_HL2SDK']
+
+ if compiler.like('msvc'):
+ compiler.defines += ['COMPILER_MSVC', 'COMPILER_MSVC32']
+ else:
+ compiler.defines += ['COMPILER_GCC']
+
+ if builder.target_platform == 'linux':
+ compiler.linkflags += ['-lstdc++']
+ elif builder.target_platform == 'mac':
+ compiler.linkflags.append('-liconv')
+
+ return binary
+
+ def HL2Library(self, context, name):
+ binary = context.compiler.Library(name)
+ self.ConfigureForExtension(context, binary.compiler)
+ return self.ConfigureForHL2(binary)
+
+ def HL2Project(self, context, name):
+ project = context.compiler.LibraryProject(name)
+ self.ConfigureForExtension(context, project.compiler)
+ return project
+
+ def HL2Config(self, project, name):
+ binary = project.Configure(name, '{0}'.format(self.tag))
+ return self.ConfigureForHL2(binary)
+
+Extension = ExtensionConfig()
+Extension.detectSDKs()
+Extension.configure()
+
+# Add additional buildscripts here
+BuildScripts = [
+ 'AMBuilder',
+]
+
+if builder.backend == 'amb2':
+ BuildScripts += [
+ 'PackageScript',
+ ]
+
+builder.RunBuildScripts(BuildScripts, { 'Extension': Extension})
diff --git a/public/sample_ext_nosdk/AMBuilder b/public/sample_ext_nosdk/AMBuilder
new file mode 100644
index 00000000..e7112a01
--- /dev/null
+++ b/public/sample_ext_nosdk/AMBuilder
@@ -0,0 +1,28 @@
+# vim: set sts=2 ts=8 sw=2 tw=99 et ft=python:
+import os, sys
+
+projectName = 'sample'
+
+# smsdk_ext.cpp will be automatically added later
+sourceFiles = [
+ 'extension.cpp',
+]
+
+###############
+# Make sure to edit PackageScript, which copies your files to their appropriate locations
+# Simple extensions do not need to modify past this point.
+
+project = Extension.HL2Project(builder, projectName + '.ext')
+
+if os.path.isfile(os.path.join(builder.currentSourcePath, 'sdk', 'smsdk_ext.cpp')):
+ # Use the copy included in the project
+ project.sources += [os.path.join('sdk', 'smsdk_ext.cpp')]
+else:
+ # Use the copy included with SM 1.6 and newer
+ project.sources += [os.path.join(Extension.sm_root, 'public', 'smsdk_ext.cpp')]
+
+project.sources += sourceFiles
+
+binary = Extension.HL2Config(project, projectName + '.ext')
+
+Extension.extensions = builder.Add(project)
diff --git a/public/sample_ext_nosdk/PackageScript b/public/sample_ext_nosdk/PackageScript
new file mode 100644
index 00000000..36ce6e48
--- /dev/null
+++ b/public/sample_ext_nosdk/PackageScript
@@ -0,0 +1,52 @@
+# vim: set ts=8 sts=2 sw=2 tw=99 et ft=python:
+import os
+
+# This is where the files will be output to
+# package is the default
+builder.SetBuildFolder('package')
+
+# Add any folders you need to this list
+folder_list = [
+ 'addons/sourcemod/extensions',
+ #'addons/sourcemod/scripting/include',
+ #'addons/sourcemod/gamedata',
+ #'addons/sourcemod/configs',
+]
+
+# Create the distribution folder hierarchy.
+folder_map = {}
+for folder in folder_list:
+ norm_folder = os.path.normpath(folder)
+ folder_map[folder] = builder.AddFolder(norm_folder)
+
+# Do all straight-up file copies from the source tree.
+def CopyFiles(src, dest, files):
+ if not dest:
+ dest = src
+ dest_entry = folder_map[dest]
+ for source_file in files:
+ source_path = os.path.join(builder.sourcePath, src, source_file)
+ builder.AddCopy(source_path, dest_entry)
+
+# Include files
+#CopyFiles('include', 'addons/sourcemod/scripting/include',
+# [ 'sample.inc', ]
+#)
+
+# GameData files
+#CopyFiles('gamedata', 'addons/sourcemod/gamedata',
+# [ 'myfile.txt',
+# 'file2.txt'
+# ]
+#)
+
+# Config Files
+#CopyFiles('configs', 'addons/sourcemod/configs',
+# [ 'configfile.cfg',
+# 'otherconfig.cfg,
+# ]
+#)
+
+# Copy binaries.
+for cxx_task in Extension.extensions:
+ builder.AddCopy(cxx_task.binary, folder_map['addons/sourcemod/extensions'])
diff --git a/public/sample_ext_nosdk/configure.py b/public/sample_ext_nosdk/configure.py
new file mode 100644
index 00000000..3616aba2
--- /dev/null
+++ b/public/sample_ext_nosdk/configure.py
@@ -0,0 +1,18 @@
+# vim: set sts=2 ts=8 sw=2 tw=99 et:
+import sys
+from ambuild2 import run
+
+# Simple extensions do not need to modify this file.
+
+builder = run.PrepareBuild(sourcePath = sys.path[0])
+
+builder.options.add_option('--mms-path', type=str, dest='mms_path', default=None,
+ help='Path to Metamod:Source')
+builder.options.add_option('--sm-path', type=str, dest='sm_path', default=None,
+ help='Path to SourceMod')
+builder.options.add_option('--enable-debug', action='store_const', const='1', dest='debug',
+ help='Enable debugging symbols')
+builder.options.add_option('--enable-optimize', action='store_const', const='1', dest='opt',
+ help='Enable optimization')
+
+builder.Configure()
diff --git a/public/sample_ext_nosdk/extension.cpp b/public/sample_ext_nosdk/extension.cpp
new file mode 100644
index 00000000..be2bfb71
--- /dev/null
+++ b/public/sample_ext_nosdk/extension.cpp
@@ -0,0 +1,41 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+#include "extension.h"
+
+/**
+ * @file extension.cpp
+ * @brief Implement extension code here.
+ */
+
+Sample g_Sample; /**< Global singleton for extension's main interface */
+
+SMEXT_LINK(&g_Sample);
diff --git a/public/sample_ext_nosdk/extension.h b/public/sample_ext_nosdk/extension.h
new file mode 100644
index 00000000..d671df96
--- /dev/null
+++ b/public/sample_ext_nosdk/extension.h
@@ -0,0 +1,119 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
+
+/**
+ * @file extension.h
+ * @brief Sample extension code header.
+ */
+
+#include "smsdk_ext.h"
+
+
+/**
+ * @brief Sample implementation of the SDK Extension.
+ * Note: Uncomment one of the pre-defined virtual functions in order to use it.
+ */
+class Sample : public SDKExtension
+{
+public:
+ /**
+ * @brief This is called after the initial loading sequence has been processed.
+ *
+ * @param error Error message buffer.
+ * @param maxlen Size of error message buffer.
+ * @param late Whether or not the module was loaded after map load.
+ * @return True to succeed loading, false to fail.
+ */
+ //virtual bool SDK_OnLoad(char *error, size_t maxlen, bool late);
+
+ /**
+ * @brief This is called right before the extension is unloaded.
+ */
+ //virtual void SDK_OnUnload();
+
+ /**
+ * @brief This is called once all known extensions have been loaded.
+ * Note: It is is a good idea to add natives here, if any are provided.
+ */
+ //virtual void SDK_OnAllLoaded();
+
+ /**
+ * @brief Called when the pause state is changed.
+ */
+ //virtual void SDK_OnPauseChange(bool paused);
+
+ /**
+ * @brief this is called when Core wants to know if your extension is working.
+ *
+ * @param error Error message buffer.
+ * @param maxlen Size of error message buffer.
+ * @return True if working, false otherwise.
+ */
+ //virtual bool QueryRunning(char *error, size_t maxlen);
+public:
+#if defined SMEXT_CONF_METAMOD
+ /**
+ * @brief Called when Metamod is attached, before the extension version is called.
+ *
+ * @param error Error buffer.
+ * @param maxlen Maximum size of error buffer.
+ * @param late Whether or not Metamod considers this a late load.
+ * @return True to succeed, false to fail.
+ */
+ //virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlen, bool late);
+
+ /**
+ * @brief Called when Metamod is detaching, after the extension version is called.
+ * NOTE: By default this is blocked unless sent from SourceMod.
+ *
+ * @param error Error buffer.
+ * @param maxlen Maximum size of error buffer.
+ * @return True to succeed, false to fail.
+ */
+ //virtual bool SDK_OnMetamodUnload(char *error, size_t maxlen);
+
+ /**
+ * @brief Called when Metamod's pause state is changing.
+ * NOTE: By default this is blocked unless sent from SourceMod.
+ *
+ * @param paused Pause state being set.
+ * @param error Error buffer.
+ * @param maxlen Maximum size of error buffer.
+ * @return True to succeed, false to fail.
+ */
+ //virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlen);
+#endif
+};
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_
diff --git a/public/sample_ext_nosdk/smsdk_config.h b/public/sample_ext_nosdk/smsdk_config.h
new file mode 100644
index 00000000..e4b49d87
--- /dev/null
+++ b/public/sample_ext_nosdk/smsdk_config.h
@@ -0,0 +1,81 @@
+/**
+ * vim: set ts=4 :
+ * =============================================================================
+ * SourceMod Sample Extension
+ * Copyright (C) 2004-2008 AlliedModders LLC. All rights reserved.
+ * =============================================================================
+ *
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License, version 3.0, as published by the
+ * Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see .
+ *
+ * As a special exception, AlliedModders LLC gives you permission to link the
+ * code of this program (as well as its derivative works) to "Half-Life 2," the
+ * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
+ * by the Valve Corporation. You must obey the GNU General Public License in
+ * all respects for all other code used. Additionally, AlliedModders LLC grants
+ * this exception to all derivative works. AlliedModders LLC defines further
+ * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
+ * or .
+ *
+ * Version: $Id$
+ */
+
+#ifndef _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
+#define _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_
+
+/**
+ * @file smsdk_config.h
+ * @brief Contains macros for configuring basic extension information.
+ */
+
+/* Basic information exposed publicly */
+#define SMEXT_CONF_NAME "Sample Extension"
+#define SMEXT_CONF_DESCRIPTION "Sample extension to help developers"
+#define SMEXT_CONF_VERSION "0.0.0.0"
+#define SMEXT_CONF_AUTHOR "AlliedModders"
+#define SMEXT_CONF_URL "http://www.sourcemod.net/"
+#define SMEXT_CONF_LOGTAG "SAMPLE"
+#define SMEXT_CONF_LICENSE "GPL"
+#define SMEXT_CONF_DATESTRING __DATE__
+
+/**
+ * @brief Exposes plugin's main interface.
+ */
+#define SMEXT_LINK(name) SDKExtension *g_pExtensionIface = name;
+
+/**
+ * @brief Sets whether or not this plugin required Metamod.
+ * NOTE: Uncomment to enable, comment to disable.
+ */
+//#define SMEXT_CONF_METAMOD
+
+/** Enable interfaces you want to use here by uncommenting lines */
+//#define SMEXT_ENABLE_FORWARDSYS
+//#define SMEXT_ENABLE_HANDLESYS
+//#define SMEXT_ENABLE_PLAYERHELPERS
+//#define SMEXT_ENABLE_DBMANAGER
+//#define SMEXT_ENABLE_GAMECONF
+//#define SMEXT_ENABLE_MEMUTILS
+//#define SMEXT_ENABLE_GAMEHELPERS
+//#define SMEXT_ENABLE_TIMERSYS
+//#define SMEXT_ENABLE_THREADER
+//#define SMEXT_ENABLE_LIBSYS
+//#define SMEXT_ENABLE_MENUS
+//#define SMEXT_ENABLE_ADTFACTORY
+//#define SMEXT_ENABLE_PLUGINSYS
+//#define SMEXT_ENABLE_ADMINSYS
+//#define SMEXT_ENABLE_TEXTPARSERS
+//#define SMEXT_ENABLE_USERMSGS
+//#define SMEXT_ENABLE_TRANSLATOR
+//#define SMEXT_ENABLE_ROOTCONSOLEMENU
+
+#endif // _INCLUDE_SOURCEMOD_EXTENSION_CONFIG_H_