From: MASM fan Date: Thu, 11 Dec 2014 01:17:34 +0000 (+0400) Subject: Add nomacro script from cpuminer sources tree. X-Git-Tag: nvc-v0.5.0^2~1 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=cb4670a5046e28fe8e786b82fec7debf523a7830 Add nomacro script from cpuminer sources tree. This script could be helpful in LLVM based environments. --- diff --git a/contrib/clang/nomacro.pl b/contrib/clang/nomacro.pl new file mode 100755 index 0000000..e91cda3 --- /dev/null +++ b/contrib/clang/nomacro.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl +# Copyright 2012 pooler@litecoinpool.org +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. See COPYING for more details. +# +# nomacro.pl - convert assembler macros to C preprocessor macros. + +use strict; + +foreach my $f (<*.S>) { + rename $f, "$f.orig"; + open FIN, "$f.orig"; + open FOUT, ">$f"; + my $inmacro = 0; + my %macros = (); + while () { + if (m/^\.macro\s+([_0-9A-Z]+)(?:\s*)(.*)$/i) { + print FOUT "#define $1($2) \\\n"; + $macros{$1} = 1; + $inmacro = 1; + next; + } + if (m/^\.endm/) { + print FOUT "\n"; + $inmacro = 0; + next; + } + for my $m (keys %macros) { + s/^([ \t]*)($m)(?:[ \t]+([^#\n]*))?([;\n])/\1\2(\3)\4/; + } + if ($inmacro) { + if (m/^\s*#if/) { + $_ = while (!m/^\s*#endif/); + next; + } + next if (m/^\s*$/); + s/\\//g; + s/$/; \\/; + } + print FOUT; + } + close FOUT; + close FIN; +}