From: Daniel Dunbar Date: Thu, 24 Sep 2009 06:23:57 +0000 (+0000) Subject: Add count/not tools as executables. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=48f7ce88a6040c12d4c7d0a5bd208cf1e0bda9d1;p=oota-llvm.git Add count/not tools as executables. - Apparently, I'm willing to do incredibly stupid things in the name of portability. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82685 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 362a395e2ab..c9c5272fa02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -262,6 +262,8 @@ add_subdirectory(lib/MC) add_subdirectory(test) add_subdirectory(utils/FileCheck) +add_subdirectory(utils/count) +add_subdirectory(utils/not) set(LLVM_ENUM_ASM_PRINTERS "") set(LLVM_ENUM_ASM_PARSERS "") diff --git a/test/Scripts/count b/test/Scripts/count deleted file mode 100755 index 1c3d7e0953b..00000000000 --- a/test/Scripts/count +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# -# Program: count -# -# Synopsis: Count the number of lines of input on stdin and test that it -# matches the specified number. -# -# Syntax: count - -set -e -set -u -input_lines=`wc -l` -if [ "$input_lines" -ne "$1" ]; then - echo "count: expected $1 lines and got ${input_lines}." - exit 1 -fi -exit 0 diff --git a/test/Scripts/not b/test/Scripts/not deleted file mode 100755 index e3b1efe35c8..00000000000 --- a/test/Scripts/not +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# -# Program: not -# -# Synopsis: Inverse the output of the program specified on the command line -# -# Syntax: not command - -if "$@" -then exit 1 -else exit 0 -fi diff --git a/utils/Makefile b/utils/Makefile index 80204b075b0..000705ead23 100644 --- a/utils/Makefile +++ b/utils/Makefile @@ -8,7 +8,7 @@ ##===----------------------------------------------------------------------===## LEVEL = .. -PARALLEL_DIRS := TableGen fpcmp PerfectShuffle FileCheck FileUpdate unittest +PARALLEL_DIRS := TableGen fpcmp PerfectShuffle FileCheck FileUpdate count not unittest EXTRA_DIST := cgiplotNLT.pl check-each-file codegen-diff countloc.sh cvsupdate \ DSAclean.py DSAextract.py emacs findsym.pl GenLibDeps.pl \ diff --git a/utils/count/CMakeLists.txt b/utils/count/CMakeLists.txt new file mode 100644 index 00000000000..e124f61d240 --- /dev/null +++ b/utils/count/CMakeLists.txt @@ -0,0 +1,3 @@ +add_executable(count + count.c + ) diff --git a/utils/count/Makefile b/utils/count/Makefile new file mode 100644 index 00000000000..8de076a8803 --- /dev/null +++ b/utils/count/Makefile @@ -0,0 +1,20 @@ +##===- utils/count/Makefile --------------------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../.. +TOOLNAME = count +USEDLIBS = + +# This tool has no plugins, optimize startup time. +TOOL_NO_EXPORTS = 1 + +# Don't install this utility +NO_INSTALL = 1 + +include $(LEVEL)/Makefile.common diff --git a/utils/count/count.c b/utils/count/count.c new file mode 100644 index 00000000000..a37e1e0b254 --- /dev/null +++ b/utils/count/count.c @@ -0,0 +1,48 @@ +/*===- count.c - The 'count' testing tool ---------------------------------===*\ + * + * The LLVM Compiler Infrastructure + * + * This file is distributed under the University of Illinois Open Source + * License. See LICENSE.TXT for details. + * +\*===----------------------------------------------------------------------===*/ + +#include +#include + +int main(int argc, char **argv) { + unsigned Count, NumLines, NumRead; + char Buffer[4096], *End; + + if (argc != 2) { + fprintf(stderr, "usage: %s \n", argv[0]); + return 2; + } + + Count = strtol(argv[1], &End, 10); + if (*End != '\0' && End != argv[1]) { + fprintf(stderr, "%s: invalid count argument '%s'\n", argv[0], argv[1]); + return 2; + } + + NumLines = 0; + while ((NumRead = fread(Buffer, 1, sizeof(Buffer), stdin))) { + unsigned i; + + for (i = 0; i != NumRead; ++i) + if (Buffer[i] == '\n') + ++NumLines; + } + + if (!feof(stdin)) { + fprintf(stderr, "%s: error reading stdin\n", argv[0]); + return 3; + } + + if (Count != NumLines) { + fprintf(stderr, "Expected %d lines, got %d.\n", Count, NumLines); + return 1; + } + + return 0; +} diff --git a/utils/not/CMakeLists.txt b/utils/not/CMakeLists.txt new file mode 100644 index 00000000000..407c82eeead --- /dev/null +++ b/utils/not/CMakeLists.txt @@ -0,0 +1,11 @@ +add_executable(not + not.cpp + ) + +target_link_libraries(not LLVMSystem) +if( MINGW ) + target_link_libraries(not imagehlp psapi) +endif( MINGW ) +if( LLVM_ENABLE_THREADS AND HAVE_LIBPTHREAD ) + target_link_libraries(not pthread) +endif() diff --git a/utils/not/Makefile b/utils/not/Makefile new file mode 100644 index 00000000000..fef4802229d --- /dev/null +++ b/utils/not/Makefile @@ -0,0 +1,21 @@ +##===- utils/not/Makefile ----------------------------------*- Makefile -*-===## +# +# The LLVM Compiler Infrastructure +# +# This file is distributed under the University of Illinois Open Source +# License. See LICENSE.TXT for details. +# +##===----------------------------------------------------------------------===## + +LEVEL = ../.. +TOOLNAME = not +USEDLIBS = LLVMSupport.a LLVMSystem.a + +# This tool has no plugins, optimize startup time. +TOOL_NO_EXPORTS = 1 + +# Don't install this utility +NO_INSTALL = 1 + +include $(LEVEL)/Makefile.common + diff --git a/utils/not/not.cpp b/utils/not/not.cpp new file mode 100644 index 00000000000..dd89b8f11c0 --- /dev/null +++ b/utils/not/not.cpp @@ -0,0 +1,17 @@ +//===- not.cpp - The 'not' testing tool -----------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm/System/Path.h" +#include "llvm/System/Program.h" +using namespace llvm; + +int main(int argc, const char **argv) { + sys::Path Program = sys::Program::FindProgramByName(argv[1]); + return !sys::Program::ExecuteAndWait(Program, argv + 1); +}