
Module: ppl/ppl Branch: master Commit: 6903cbf2427c64a4d7810286f901a363d3717cb2 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=6903cbf2427c6...
Author: Roberto Bagnara bagnara@cs.unipr.it Date: Fri Mar 27 18:34:15 2009 +0100
The `ppl_lcdd' program can now be built and checked with cross-compilation.
---
demos/ppl_lcdd/Makefile.am | 9 +++++---- demos/ppl_lcdd/ppl_lcdd.1 | 5 ++++- demos/ppl_lcdd/ppl_lcdd.cc | 26 +++++++++++++++++++++++++- demos/ppl_lcdd/ppl_lcdd_extra_man_text | 4 ++++ 4 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/demos/ppl_lcdd/Makefile.am b/demos/ppl_lcdd/Makefile.am index 2a93f72..e038e0d 100644 --- a/demos/ppl_lcdd/Makefile.am +++ b/demos/ppl_lcdd/Makefile.am @@ -104,7 +104,7 @@ mit71-61.ine \ mit90-86.ine \ $(TOUGH_EXAMPLES_IF_ASSERTIONS_ENABLED)
-check-local: ppl_lcdd +check-local: ppl_lcdd$(EXEEXT) echo $(TOUGH_EXAMPLES) >tough_examples echo $(ECHO_N) "$(ECHO_C)" >obtained LANG=C; \ @@ -113,10 +113,11 @@ check-local: ppl_lcdd file=`basename $$path`; \ $(FGREP) $$file tough_examples >/dev/null 2>&1 && continue; \ echo $(ECHO_N) $$file " $(ECHO_C)" >>obtained; \ - echo ppl_lcdd $$path; \ - ./ppl_lcdd $$path | $(TEXT_MD5SUM) >>obtained; \ + echo ppl_lcdd$(EXEEXT) $$path; \ + ./ppl_lcdd$(EXEEXT) $$path | tr -d '\015' | $(TEXT_MD5SUM) \ + >>obtained; \ done - diff -u $(srcdir)/$(EXPECTED) obtained + diff obtained $(srcdir)/$(EXPECTED)
MOSTLYCLEANFILES = \ tough_examples \ diff --git a/demos/ppl_lcdd/ppl_lcdd.1 b/demos/ppl_lcdd/ppl_lcdd.1 index d73a78f..f460191 100644 --- a/demos/ppl_lcdd/ppl_lcdd.1 +++ b/demos/ppl_lcdd/ppl_lcdd.1 @@ -1,5 +1,5 @@ ." DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. -.TH PPL_LCDD "1" "November 2008" "ppl_lcdd 0.10.1" "User Commands" +.TH PPL_LCDD "1" "April 2009" "ppl_lcdd 0.10.1" "User Commands" .SH NAME ppl_lcdd - a PPL-based program for vertex/facet enumeration of convex polyhedra .SH SYNOPSIS @@ -41,6 +41,9 @@ checks if the result is equal to what is in PATH .SH AVAILABILITY The latest version of the Parma Polyhedra Library and all the documentation is available at \fBhttp://www.cs.unipr.it/ppl/%5CfR . +.SH NOTES +The option \fB-CSECS\fR (\fB--max-cpu\fR=\fISECS\fR) is not available +on some platforms. .SH AUTHOR See the file \fBCREDITS\fR in the source distribution or use the command \fBppl-config --credits\fR for a list of contributors. diff --git a/demos/ppl_lcdd/ppl_lcdd.cc b/demos/ppl_lcdd/ppl_lcdd.cc index 5439ddd..19d7889 100644 --- a/demos/ppl_lcdd/ppl_lcdd.cc +++ b/demos/ppl_lcdd/ppl_lcdd.cc @@ -124,6 +124,11 @@ typedef Polyhedron* POLYHEDRON_TYPE; # include <sys/resource.h> #endif
+#if defined(PPL_HAVE_SYS_RESOURCE_H) \ + && (defined(SA_ONESHOT) || defined(SA_RESETHAND)) +#define PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME +#endif + namespace {
#ifdef PPL_HAVE_GETOPT_H @@ -148,7 +153,9 @@ static const char* usage_string "and generates a V-representation (resp., an H-representation) of\n" "the same polyhedron.\n\n" "Options:\n" +#ifdef PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME " -CSECS, --max-cpu=SECS limits CPU usage to SECS seconds\n" +#endif " -RMB, --max-memory=MB limits memory usage to MB megabytes\n" " -h, --help prints this help text to stdout\n" " -oPATH, --output=PATH appends output to PATH\n" @@ -173,7 +180,12 @@ static const char* usage_string
const char* program_name = 0;
+#ifdef PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME + unsigned long max_seconds_of_cpu_time = 0; + +#endif + unsigned long max_bytes_of_virtual_memory = 0; bool print_timings = false; bool verbose = false; @@ -269,6 +281,8 @@ warning(const char* format, ...) { va_end(ap); }
+#ifdef PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME + extern "C" typedef void (*sig_handler_type)(int);
void @@ -284,7 +298,7 @@ set_alarm_on_cpu_time(const unsigned seconds, sig_handler_type handler) { #elif defined(SA_RESETHAND) s.sa_flags = SA_RESETHAND; #else - #error "Either SA_ONESHOT or SA_RESETHAND must be defined." +#error "Either SA_ONESHOT or SA_RESETHAND must be defined." #endif
if (sigaction(SIGXCPU, &s, 0) != 0) @@ -301,6 +315,8 @@ set_alarm_on_cpu_time(const unsigned seconds, sig_handler_type handler) { } }
+#endif // PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME + #if PPL_HAVE_DECL_RLIMIT_AS void limit_virtual_memory(const unsigned bytes) { @@ -367,6 +383,8 @@ process_options(int argc, char* argv[]) { exit(0); break;
+#ifdef PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME + case 'C': l = strtol(optarg, &endptr, 10); if (*endptr || l < 0) @@ -375,6 +393,8 @@ process_options(int argc, char* argv[]) { max_seconds_of_cpu_time = l; break;
+#endif + case 'R': l = strtol(optarg, &endptr, 10); if (*endptr || l < 0) @@ -1143,9 +1163,13 @@ main(int argc, char* argv[]) try { // Process command line options. process_options(argc, argv);
+#ifdef PPL_LCDD_SUPPORTS_LIMIT_ON_CPU_TIME + if (max_seconds_of_cpu_time > 0) set_alarm_on_cpu_time(max_seconds_of_cpu_time, timeout);
+#endif + if (max_bytes_of_virtual_memory > 0) limit_virtual_memory(max_bytes_of_virtual_memory);
diff --git a/demos/ppl_lcdd/ppl_lcdd_extra_man_text b/demos/ppl_lcdd/ppl_lcdd_extra_man_text index 0e71ed1..c3d6891 100644 --- a/demos/ppl_lcdd/ppl_lcdd_extra_man_text +++ b/demos/ppl_lcdd/ppl_lcdd_extra_man_text @@ -19,6 +19,10 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. The latest version of the Parma Polyhedra Library and all the documentation is available at \fBhttp://www.cs.unipr.it/ppl/%5CfR .
+[NOTES] +The option \fB-CSECS\fR (\fB--max-cpu\fR=\fISECS\fR) is not available +on some platforms. + [SEE ALSO] .BR ppl-config(1) .sp