summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1085/pgm/SConstruct.OpenSolaris
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/openpgm-svn-r1085/pgm/SConstruct.OpenSolaris')
-rw-r--r--3rdparty/openpgm-svn-r1085/pgm/SConstruct.OpenSolaris310
1 files changed, 310 insertions, 0 deletions
diff --git a/3rdparty/openpgm-svn-r1085/pgm/SConstruct.OpenSolaris b/3rdparty/openpgm-svn-r1085/pgm/SConstruct.OpenSolaris
new file mode 100644
index 0000000..c9833ed
--- /dev/null
+++ b/3rdparty/openpgm-svn-r1085/pgm/SConstruct.OpenSolaris
@@ -0,0 +1,310 @@
+# -*- mode: python -*-
+# OpenPGM build script
+
+import platform
+import os
+import time
+import sys
+
+EnsureSConsVersion( 1, 0 )
+SConsignFile('scons.signatures'+ '-OpenSolaris-' + platform.machine() + '-gcc');
+
+vars = Variables()
+vars.AddVariables (
+ EnumVariable ('BUILD', 'build environment', 'debug',
+ allowed_values=('release', 'debug', 'profile')),
+ EnumVariable ('BRANCH', 'branch prediction', 'none',
+ allowed_values=('none', 'profile', 'seed')),
+ EnumVariable ('WITH_GETTEXT', 'l10n support via libintl', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_GLIB', 'Build GLib dependent modules', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_HISTOGRAMS', 'Runtime statistical information', 'true',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_HTTP', 'HTTP administration', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_SNMP', 'SNMP administration', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_CHECK', 'Check test system', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_TEST', 'Network test system', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_CC', 'C++ examples', 'true',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_EXAMPLES', 'Examples', 'true',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_NCURSES', 'NCURSES examples', 'false',
+ allowed_values=('true', 'false')),
+ EnumVariable ('WITH_PROTOBUF', 'Google Protocol Buffer examples', 'false',
+ allowed_values=('true', 'false')),
+)
+
+#-----------------------------------------------------------------------------
+# Dependencies
+
+env = Environment();
+
+def CheckPKGConfig(context, version):
+ context.Message( 'Checking for pkg-config... ' )
+ ret = context.TryAction('pkg-config --atleast-pkgconfig-version=%s' % version)[0]
+ context.Result( ret )
+ return ret
+
+def CheckPKG(context, name):
+ context.Message( 'Checking for %s... ' % name )
+ ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
+ context.Result( ret )
+ return ret
+
+conf = Configure(env, custom_tests = { 'CheckPKGConfig' : CheckPKGConfig,
+ 'CheckPKG' : CheckPKG })
+
+if not conf.CheckPKGConfig('0.15.0'):
+ print 'pkg-config >= 0.15.0 not found.'
+# Exit(1)
+
+if not conf.CheckPKG('glib-2.0 >= 2.10'):
+ print 'glib-2.0 >= 2.10 not found.'
+# Exit(1)
+
+if not conf.CheckPKG('gthread-2.0'):
+ print 'gthread-2.0 not found.'
+# Exit(1)
+
+env = conf.Finish();
+
+#-----------------------------------------------------------------------------
+# Platform specifics
+
+env = Environment(
+ variables = vars,
+ ENV = os.environ,
+ CCFLAGS = [ '-pipe',
+ '-Wall',
+ '-Wextra',
+ '-Wfloat-equal',
+ '-Wshadow',
+# '-Wunsafe-loop-optimizations',
+ '-Wpointer-arith',
+ '-Wbad-function-cast',
+ '-Wcast-qual',
+ '-Wcast-align',
+ '-Wwrite-strings',
+ '-Waggregate-return',
+ '-Wstrict-prototypes',
+ '-Wold-style-definition',
+ '-Wmissing-prototypes',
+ '-Wmissing-declarations',
+ '-Wmissing-noreturn',
+ '-Wmissing-format-attribute',
+ '-Wredundant-decls',
+ '-Wnested-externs',
+ '-Winline',
+ '-pedantic',
+# C99
+ '-std=gnu99',
+ '-D_XOPEN_SOURCE=600',
+ '-D__EXTENSIONS__',
+ '-DBSD_COMP',
+ '-D_BSD_SOURCE',
+# re-entrant libc
+ '-D_REENTRANT',
+ '-DCONFIG_HAVE_GETPROTOBYNAME_R',
+# '-DCONFIG_HAVE_GETPROTOBYNAME_R2',
+# variadic macros
+ '-DCONFIG_HAVE_ISO_VARARGS',
+# '-DCONFIG_HAVE_GNUC_VARARGS',
+# stack memory api header
+ '-DCONFIG_HAVE_ALLOCA_H',
+# optimium checksum implementation
+# '-DCONFIG_8BIT_CHECKSUM',
+ '-DCONFIG_16BIT_CHECKSUM',
+# '-DCONFIG_32BIT_CHECKSUM',
+# '-DCONFIG_64BIT_CHECKSUM',
+# '-DCONFIG_VECTOR_CHECKSUM',
+# useful /proc system
+# '-DCONFIG_HAVE_PROC',
+# example: crash handling
+# '-DCONFIG_HAVE_BACKTRACE',
+# timing
+ '-DCONFIG_HAVE_PSELECT',
+# '-DCONFIG_HAVE_RTC',
+ '-DCONFIG_HAVE_TSC',
+# '-DCONFIG_HAVE_HPET',
+# event handling
+ '-DCONFIG_HAVE_POLL',
+# '-DCONFIG_HAVE_EPOLL',
+# interface enumeration
+# '-DCONFIG_HAVE_GETIFADDRS',
+# '-DCONFIG_HAVE_IFR_NETMASK',
+# win32 cmsg
+# '-DCONFIG_HAVE_WSACMSGHDR',
+# multicast
+ '-DCONFIG_HAVE_MCAST_JOIN',
+# '-DCONFIG_HAVE_IP_MREQN',
+# sprintf
+ '-DCONFIG_HAVE_SPRINTF_GROUPING',
+# '-DCONFIG_HAVE_VASPRINTF',
+# symbol linking scope
+ '-DCONFIG_HAVE_DSO_VISIBILITY',
+# socket binding
+ '-DCONFIG_BIND_INADDR_ANY',
+# IP header order as per IP(4) on FreeBSD
+# '-DCONFIG_HOST_ORDER_IP_LEN',
+# '-DCONFIG_HOST_ORDER_IP_OFF',
+# optimum galois field multiplication
+ '-DCONFIG_GALOIS_MUL_LUT',
+# Wine limited API support
+# '-DCONFIG_TARGET_WINE',
+# GNU getopt
+ '-DCONFIG_HAVE_GETOPT'
+ ],
+ LINKFLAGS = [ '-pipe'
+ ],
+ LIBS = [
+# histogram math
+ 'm',
+# clock_gettime()
+ 'rt',
+# Solaris sockets
+ 'resolv',
+ 'socket',
+ 'nsl'
+ ]
+)
+
+# Branch prediction
+if env['BRANCH'] == 'profile':
+ env.Append(CCFLAGS = '-fprofile-arcs')
+ env.Append(LINKFLAGS = '-fprofile-arcs')
+elif env['BRANCH'] == 'seed':
+ env.Append(CCFLAGS = '-fbranch-probabilities')
+
+# Define separate build environments
+release = env.Clone(BUILD = 'release')
+release.Append(CCFLAGS = ['-O2'], LINKFLAGS = [])
+
+debug = env.Clone(BUILD = 'debug')
+debug.Append(CCFLAGS = ['-DPGM_DEBUG', '-ggdb'], LINKFLAGS = ['-gdb'])
+
+profile = env.Clone(BUILD = 'profile')
+profile.Append(CCFLAGS = ['-O2','-pg'], LINKFLAGS = ['-pg'])
+
+thirtytwo = release.Clone(BUILD = 'thirtytwo')
+thirtytwo.Append(CCFLAGS = '-m32', LINKFLAGS = '-m32')
+
+# choose and environment to build
+if env['BUILD'] == 'release':
+ Export({'env':release})
+elif env['BUILD'] == 'profile':
+ Export({'env':profile})
+elif env['BUILD'] == 'thirtytwo':
+ Export({'env':thirtytwo})
+else:
+ Export({'env':debug})
+
+#-----------------------------------------------------------------------------
+# Re-analyse dependencies
+
+Import('env')
+
+# vanilla environment
+if env['WITH_GLIB'] == 'true':
+ env['GLIB_FLAGS'] = env.ParseFlags('!pkg-config --cflags --libs glib-2.0 gthread-2.0');
+else:
+ env['GLIB_FLAGS'] = '';
+
+# l10n
+if env['WITH_GETTEXT'] == 'true':
+ env.Append(CCFLAGS = '-DCONFIG_HAVE_GETTEXT');
+
+# instrumentation
+if env['WITH_HTTP'] == 'true' and env['WITH_HISTOGRAMS'] == 'true':
+ env.Append(CCFLAGS = '-DCONFIG_HISTOGRAMS');
+
+# managed environment for libpgmsnmp, libpgmhttp
+env['SNMP_FLAGS'] = {
+ 'CCFLAGS' : [],
+ 'LIBS' : [ 'netsnmpagent', 'netsnmpmibs', 'netsnmphelpers', 'netsnmp',
+ 'ssl', 'kstat', 'wrap', 'adm' ],
+ 'CPPPATH' : ['/opt/cws/include'],
+ 'LIBPATH' : ['/opt/csw/lib'],
+};
+
+def CheckSNMP(context):
+ context.Message('Checking Net-SNMP...');
+ lastLIBS = context.env['LIBS'];
+ lastCCFLAGS= context.env['CCFLAGS'];
+ context.env.MergeFlags(env['SNMP_FLAGS']);
+ result = context.TryLink("""
+int main(int argc, char**argv)
+{
+ init_agent("PGM");
+ return 0;
+}
+""", '.c');
+ context.env.Replace(LIBS = lastLIBS, CCFLAGS=lastCCFLAGS);
+ context.Result(not result);
+ return result;
+
+def CheckCheck(context):
+ context.Message('Checking Check unit test framework...');
+ result = context.TryAction('pkg-config --cflags --libs check')[0];
+ context.Result(result);
+ return result;
+
+tests = {
+ 'CheckCheck': CheckCheck
+}
+if env['WITH_SNMP'] == 'true':
+ tests['CheckSNMP'] = CheckSNMP;
+conf = Configure(env, custom_tests = tests);
+
+if env['WITH_SNMP'] == 'true' and not conf.CheckSNMP():
+ print 'Net-SNMP libraries not compatible.';
+ Exit(1);
+
+if env['WITH_CHECK'] == 'true' and conf.CheckCheck():
+ print 'Enabling Check unit tests.';
+ conf.env['CHECK'] = 'true';
+else:
+ print 'Disabling Check unit tests.';
+ conf.env['CHECK'] = 'false';
+
+env = conf.Finish();
+
+# add builder to create PIC static libraries for including in shared libraries
+action_list = [ Action("$ARCOM", "$ARCOMSTR") ];
+if env.Detect('ranlib'):
+ ranlib_action = Action("$RANLIBCOM", "$RANLIBCOMSTR");
+ action_list.append(ranlib_action);
+pic_lib = Builder( action = action_list,
+ emitter = '$LIBEMITTER',
+ prefix = '$LIBPREFIX',
+ suffix = '$LIBSUFFIX',
+ src_suffix = '$OBJSUFFIX',
+ src_builder = 'SharedObject')
+env.Append(BUILDERS = {'StaticSharedLibrary': pic_lib});
+
+
+#-----------------------------------------------------------------------------
+
+ref_node = 'ref/' + env['BUILD'] + '-OpenSolaris-' + platform.machine() + '-gcc/';
+BuildDir(ref_node, '.', duplicate=0)
+
+env.Append(CPPPATH = os.getcwd() + '/include');
+env.Append(LIBPATH = os.getcwd() + '/' + ref_node);
+
+if env['WITH_GLIB'] == 'true':
+ SConscript(ref_node + 'SConscript.libpgmex');
+SConscript(ref_node + 'SConscript.libpgm');
+if env['WITH_HTTP'] == 'true':
+ SConscript(ref_node + 'SConscript.libpgmhttp');
+if env['WITH_SNMP'] == 'true':
+ SConscript(ref_node + 'SConscript.libpgmsnmp');
+if env['WITH_TEST'] == 'true':
+ SConscript(ref_node + 'test/SConscript');
+if env['WITH_EXAMPLES'] == 'true':
+ SConscript(ref_node + 'examples/SConscript');
+
+# end of file