diff options
Diffstat (limited to 'ACE/MPC/generate_export_header.pl')
-rwxr-xr-x | ACE/MPC/generate_export_header.pl | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/ACE/MPC/generate_export_header.pl b/ACE/MPC/generate_export_header.pl new file mode 100755 index 00000000000..ef37701a793 --- /dev/null +++ b/ACE/MPC/generate_export_header.pl @@ -0,0 +1,126 @@ +#! /usr/bin/perl +eval '(exit $?0)' && eval 'exec perl -w -S $0 ${1+"$@"}' + & eval 'exec perl -w -S $0 $argv:q' + if 0; + +# ****************************************************************** +# Author: Chad Elliott +# Date: 3/1/2006 +# $Id$ +# Description: Generate an export header file for use with various compilers +# ****************************************************************** + +# ****************************************************************** +# Pragma Section +# ****************************************************************** + +use strict; +use FileHandle; +use File::Basename; + +# ****************************************************************** +# Data Section +# ****************************************************************** + +my $version = '1.2'; + +# ****************************************************************** +# Subroutine Section +# ****************************************************************** + +sub generate_export_header { + my($name, $output) = @_; + my $fh = new FileHandle(); + my $status = 0; + + if (open($fh, ">$output")) { + $name = uc($name); + print $fh <<EOM +#ifndef ${name}_EXPORT_H +#define ${name}_EXPORT_H + +#if !defined(${name}_HAS_DLL) +# if defined(${name}_AS_STATIC_LIBS) +# define ${name}_HAS_DLL 0 +# else +# define ${name}_HAS_DLL 1 +# endif +#endif + +#if (${name}_HAS_DLL == 1) +# if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x550) +# if defined(${name}_BUILD_DLL) +# define ${name}_Export __symbolic +# else +# define ${name}_Export __global +# endif +# elif defined(WIN32) || defined(UNDER_CE) || defined(__CYGWIN__) +# if defined(${name}_BUILD_DLL) +# define ${name}_Export __declspec(dllexport) +# else +# define ${name}_Export __declspec(dllimport) +# endif +# elif (defined(__GNUC__) && (__GNUC__ >= 4)) +# if defined(${name}_BUILD_DLL) +# define ${name}_Export __attribute__((visibility("default"))) +# else +# define ${name}_Export +# endif +# else +# define ${name}_Export +# endif +#else +# define ${name}_Export +#endif + +#endif +EOM +; + close($fh); + print "Output written to $output\n"; + } + else { + print STDERR "ERROR: Unable to write to $output\n"; + ++$status; + } + + return $status; +} + +sub usageAndExit { + my $str = shift; + + print STDERR "$str\n" if (defined $str); + print STDERR "Generate Export Header v$version\n", + "Usage: ", basename($0), " <library name> [output file]\n"; + exit(0); +} + +# ****************************************************************** +# Main Section +# ****************************************************************** + +my $name = shift; +my $output = shift; + +if (!defined $name) { + usageAndExit(); +} +elsif (index($name, '-') == 0) { + usageAndExit(); +} + +if (!defined $output) { + $output = $name . '_' . ($name =~ /^[A-Z]/ ? 'E' : 'e') . + 'xport.h'; +} + +if ($name =~ s/^\d+//) { + print "WARNING: Removing beginning numbers from export name.\n"; +} +if ($name =~ s/-\s/_/g) { + print "WARNING: Converting dashes and ", + "whitespace to underscores in export name.\n"; +} + +exit(generate_export_header($name, $output)); |