Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
authorPierre Veyre <pierre.veyre@cc.in2p3.fr>
Fri, 27 Sep 2013 15:33:43 +0000 (17:33 +0200)
committerPierre Veyre <pierre.veyre@cc.in2p3.fr>
Fri, 27 Sep 2013 15:33:43 +0000 (17:33 +0200)
28 files changed:
CMakeLists.txt
buildtools/Cmake/CompleteInFiles.cmake
buildtools/Cmake/DefinePackages.cmake
buildtools/Cmake/Flags.cmake
buildtools/Cmake/GenerateDocWin.cmake
buildtools/Cmake/MakeJava.cmake
buildtools/Cmake/MakeLibWin.cmake
buildtools/Cmake/PrintArgs.cmake
buildtools/Cmake/Scripts/tesh.pl
buildtools/Cmake/src/simgrid.nsi.in
doc/doxygen/platform.doc
include/smpi/mpif.h.in [moved from include/smpi/mpif.h with 98% similarity]
src/simgrid/sg_config.c
src/simix/smx_context_raw.c
teshsuite/smpi/mpich3-test/datatype/hindexed-zeros.c
teshsuite/smpi/mpich3-test/datatype/localpack.c
teshsuite/smpi/mpich3-test/datatype/lots-of-types.c
teshsuite/smpi/mpich3-test/datatype/slice-pack-external.c
teshsuite/smpi/mpich3-test/datatype/slice-pack.c
teshsuite/smpi/mpich3-test/datatype/struct-empty-el.c
teshsuite/smpi/mpich3-test/datatype/struct-pack.c
teshsuite/smpi/mpich3-test/datatype/transpose-pack.c
teshsuite/smpi/mpich3-test/datatype/triangular-pack.c
teshsuite/smpi/mpich3-test/datatype/unusual-noncontigs.c
teshsuite/smpi/mpich3-test/include/mpitestconf.h
teshsuite/smpi/mpich3-test/pt2pt/waitany-null.c
tools/simgrid.supp
tools/tesh/CMakeLists.txt

index a1b4f44..b68c503 100644 (file)
@@ -74,8 +74,7 @@ else()
   endif()
 endif()
 
-string(REGEX MATCH "gcc" GCC "${CMAKE_C_COMPILER}")
-if(GCC)
+if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
   exec_program("${CMAKE_C_COMPILER} --version" OUTPUT_VARIABLE "COMPILER_C_VERSION")
   exec_program("${CMAKE_CXX_COMPILER} --version" OUTPUT_VARIABLE "COMPILER_CXX_VERSION")
   string(REGEX MATCH "[0-9].[0-9].[0-9]" COMPILER_C_VERSION "${COMPILER_C_VERSION}")
@@ -191,10 +190,6 @@ endif()
 
 include_directories(${INCLUDES})
 
-### Determine the assembly flavor that we need today
-include(CMakeDetermineSystem)
-set(PROCESSOR_${CMAKE_SYSTEM_PROCESSOR} 1)
-
 ### Setup Options
 include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Option.cmake)
 
index 4727446..e8120d2 100644 (file)
@@ -7,16 +7,15 @@ set(CMAKE_MODULE_PATH
 # x86
 # i.86
 
+### Determine the assembly flavor that we need today
+include(CMakeDetermineSystem)
 IF(CMAKE_SYSTEM_PROCESSOR MATCHES ".86")
   IF(${ARCH_32_BITS})
+    message(STATUS "System processor: i686 (${CMAKE_SYSTEM_PROCESSOR}, 32 bits)")
     set(PROCESSOR_i686 1)
-    set(SIMGRID_SYSTEM_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
-    message(STATUS "System processor: ${CMAKE_SYSTEM_PROCESSOR}")
   ELSE()
-    message(STATUS "System processor: amd64")
-    set(SIMGRID_SYSTEM_PROCESSOR "amd64")
+    message(STATUS "System processor: x86_64 (${CMAKE_SYSTEM_PROCESSOR}, 64 bits)")
     set(PROCESSOR_x86_64 1)
-    set(PROCESSOR_i686 0)
   ENDIF()
   set(HAVE_RAWCTX 1)
 
@@ -57,6 +56,12 @@ ELSE() #PROCESSOR NOT FOUND
 
 ENDIF()
 
+if(ARCH_32_BITS)
+  set(MPI_ADDRESS_SIZE 4)
+else()
+  set(MPI_ADDRESS_SIZE 8)
+endif()
+
 message(STATUS "Cmake version ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}")
 
 include(CheckFunctionExists)
@@ -780,6 +785,7 @@ set(includedir "${CMAKE_INSTALL_PREFIX}/include")
 set(libdir ${exec_prefix}/lib)
 set(CMAKE_SMPI_COMMAND "export LD_LIBRARY_PATH=${CMAKE_INSTALL_PREFIX}/lib:${GTNETS_LIB_PATH}:${HAVE_NS3_LIB}:$LD_LIBRARY_PATH")
 
+configure_file(${CMAKE_HOME_DIRECTORY}/include/smpi/mpif.h.in ${CMAKE_BINARY_DIR}/include/smpi/mpif.h @ONLY)
 configure_file(${CMAKE_HOME_DIRECTORY}/include/smpi/smpif.h.in ${CMAKE_BINARY_DIR}/include/smpi/smpif.h @ONLY)
 configure_file(${CMAKE_HOME_DIRECTORY}/src/smpi/smpicc.in ${CMAKE_BINARY_DIR}/bin/smpicc @ONLY)
 configure_file(${CMAKE_HOME_DIRECTORY}/src/smpi/smpif2c.in ${CMAKE_BINARY_DIR}/bin/smpif2c @ONLY)
@@ -817,6 +823,7 @@ if(NOT WIN32)
 endif()
 
 set(generated_headers_to_install
+  ${CMAKE_CURRENT_BINARY_DIR}/include/smpi/mpif.h
   ${CMAKE_CURRENT_BINARY_DIR}/include/smpi/smpif.h
   ${CMAKE_CURRENT_BINARY_DIR}/include/simgrid_config.h
   )
index 940acdb..301ccb0 100644 (file)
@@ -534,7 +534,6 @@ set(headers_to_install
   include/simgrid/platf_generator.h
   include/simgrid/simix.h
   include/smpi/mpi.h
-  include/smpi/mpif.h
   include/smpi/smpi.h
   include/smpi/smpi_cocci.h
   include/smpi/smpi_main.h
@@ -580,6 +579,7 @@ set(headers_to_install
   )
 set(source_of_generated_headers
   include/simgrid_config.h.in
+  include/smpi/mpif.h.in
   include/smpi/smpif.h.in
   src/context_sysv_config.h.in)
 
index c573f81..68cae01 100644 (file)
@@ -4,6 +4,7 @@ set(optCFLAGS "")
 if(NOT __VISUALC__ AND NOT __BORLANDC__)
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}-g3")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-g3")
+  set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g")
 else()
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}/Zi")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}/Zi")
@@ -18,7 +19,7 @@ if(enable_compile_warnings)
     string(REPLACE "-Wclobbered " "" warnCFLAGS "${warnCFLAGS}")
   endif()
 
-  set(CMAKE_Fortran_FLAGS "-Wall") # FIXME: Q&D hack
+  set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wall") # FIXME: Q&D hack
 
   set(CMAKE_JAVA_COMPILE_FLAGS "-Xlint")
 endif()
index a7bc518..71b7f8d 100644 (file)
@@ -16,8 +16,8 @@ endif()
 if(NSIS_PATH)
   ADD_CUSTOM_TARGET(nsis
     COMMENT "Generating the SimGrid installor for Windows..."
-    DEPENDS simgrid simgrid graphicator tesh simgrid-colorizer simgrid_update_xml
+    DEPENDS simgrid simgrid graphicator simgrid-colorizer simgrid_update_xml
     COMMAND ${NSIS_PATH}/makensis.exe simgrid.nsi
     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/
     )
-endif()
\ No newline at end of file
+endif()
index 86d7dd3..e8f3de6 100644 (file)
@@ -36,7 +36,7 @@ if(WIN32)
   message(STATUS "pexports: ${PEXPORTS_PATH}")
   if(PEXPORTS_PATH)
     add_custom_command(TARGET SG_java POST_BUILD
-      COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/SG_java.dll > ${CMAKE_BINARY_DIR}/SG_java.def)
+      COMMAND ${PEXPORTS_PATH}/pexports.exe ${CMAKE_BINARY_DIR}/lib/SG_java.dll > ${CMAKE_BINARY_DIR}/lib/SG_java.def)
   endif(PEXPORTS_PATH)
 endif()
 
index 206ab5c..f596b1f 100644 (file)
@@ -1,6 +1,9 @@
 ### Make Libs
 #>gcc c:\simgrid-trunk\examples\msg\icomms\peer.c -static -Lc:\simgrid-trunk\lib -lsimgrid -Ic:\simgrid-trunk\include -lwsock32
 
+if(enable_java)
+  include(${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/MakeJava.cmake)
+endif()
 
 add_library(simgrid SHARED ${simgrid_sources})
 
index eb7d3c2..d15127a 100644 (file)
@@ -123,7 +123,6 @@ message("        Graphviz mode .......: ${HAVE_GRAPHVIZ}")
 message("        Mallocators .........: ${enable_mallocators}")
 message("")
 message("        Simgrid dependencies : ${SIMGRID_DEP}")
-message("        Smpi dependencies ...: ${SMPI_DEP}")
 message("")
 message("        INSTALL_PREFIX ......: ${CMAKE_INSTALL_PREFIX}")
 
index a5b53c4..cbdc724 100755 (executable)
@@ -13,9 +13,10 @@ tesh -- testing shell
 B<tesh> [I<options>] I<tesh_file>
 
 =cut
-my($bindir);
-my($srcdir);
+my($bindir)=".";
+my($srcdir)=".";
 my $path = $0;
+my $OS;
 $path =~ s|[^/]*$||;
 push @INC,$path;
 
@@ -24,14 +25,22 @@ use strict;
 use Term::ANSIColor;
 use IPC::Open3;
 
-my($OS)=`echo %OS%`;
-if($OS eq "%OS%"){
+if($^O eq "linux"){
        $OS = "UNIX";
 }
 else{
        $OS = "WIN";
 }
 
+
+sub trim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       $string =~ s/\s+$//;
+       return $string;
+}
+
 print "OS: ".$OS."\n";
 
 # make sure we received a tesh file
@@ -59,8 +68,14 @@ sub cd_cmd {
 }
 
 sub setenv_cmd {
-    if ($_[1] =~ /^(.*)=(.*)$/) {
-       my($var,$ctn)=($1,$2);
+    my($var,$ctn);
+    if ($_[0] =~ /^(.*)=(.*)$/) {
+        ($var,$ctn)=($1,$2);
+    }elsif ($_[1] =~ /^(.*)=(.*)$/) {
+        ($var,$ctn)=($1,$2);
+    } else { 
+           die "[Tesh/CRITICAL] Malformed argument to setenv: expected 'name=value' but got '$_[1]'\n";
+    }
        
        if($var =~ /bindir/){
                print "[Tesh/INFO] setenv $var=$ctn\n";
@@ -76,9 +91,6 @@ sub setenv_cmd {
                        print "[Tesh/INFO] setenv $var=$ctn\n";
                }
        }       
-       } else { 
-       die "[Tesh/CRITICAL] Malformed argument to setenv: expected 'name=value' but got '$_[1]'\n";
-    }
 }
 
 # Main option parsing sub
@@ -220,12 +232,25 @@ sub exec_cmd {
     my @got;
     while(defined(my $got=<OUT>)) {
        $got =~ s/\r//g;
-       #$got =~ s/^( )*//g;
+       $got =~ s/^( )*//g;
        chomp $got;
-       push @got, "$got";
+    $got=trim($got);
+       if( $got ne ""){
+        push @got, "$got";
+    }
     }  
     close OUT;
-    
+   
+    if ($sort){   
+      sub mysort{
+        $a cmp $b
+        }
+      use sort qw(defaults _quicksort); # force quicksort
+      @got = sort mysort @got;
+      #also resort the other one, as perl sort is not the same as the C one used to generate teshes
+      @{$cmd{'out'}}=sort mysort @{$cmd{'out'}};
+    }
+  
     # Cleanup the executing child, and kill the timeouter brother on need
     $cmd{'return'} = 0 unless defined($cmd{'return'});
     my $wantret = "returned code ".(defined($cmd{'return'})? $cmd{'return'} : 0);
@@ -304,7 +329,10 @@ LINE: while (defined(my $line=<TESH_FILE>)) {
     if ($cmd =~ /^#/) {        #comment
     } elsif ($cmd eq '> '){    #expected result line
        print "[TESH/debug] push expected result\n" if $opts{'debug'};
-       push @{$cmd{'out'}}, $arg;
+    $arg=trim($arg);
+       if($arg ne ""){
+        push @{$cmd{'out'}}, $arg;
+    }
 
     } elsif ($cmd eq '< ') {   # provided input
        print "[TESH/debug] push provided input\n" if $opts{'debug'};
@@ -346,6 +374,7 @@ LINE: while (defined(my $line=<TESH_FILE>)) {
        $cmd{'cmd'} = $arg;
     }  
     elsif($line =~ /^! output sort/){  #output sort
+    $sort=1;
        $cmd{'sort'} = 1;
     }
     elsif($line =~ /^! output ignore/){        #output ignore
index 2105d4d..c53efe4 100644 (file)
@@ -201,9 +201,9 @@ Section "SMPI Library" SMPISection
        setOutPath $INSTDIR\include\smpi\r
        file @CMAKE_HOME_DIRECTORY@\include\smpi\smpi.h\r
        file @CMAKE_HOME_DIRECTORY@\include\smpi\mpi.h\r
-       file @CMAKE_HOME_DIRECTORY@\include\smpi\mpif.h\r
        file @CMAKE_HOME_DIRECTORY@\include\smpi\smpi_cocci.h\r
        file @CMAKE_HOME_DIRECTORY@\include\smpi\smpi_main.h\r
+       file include\smpi\mpif.h\r
        file include\smpi\smpif.h\r
        \r
        CreateDirectory $INSTDIR\examples\smpi\r
index 93e2e25..1101198 100644 (file)
@@ -162,15 +162,16 @@ contain more than 1 core. Here are the attributes of a host :
     referring to it.
 \li <b>power (mandatory)</b>:the peak number FLOPS the CPU can manage.
     Expressed in flop/s.
-\li <b>core</b>: The number of core of this host. If set, the power
-    gives the power of one core. The specified computing power will be
+\li <b>core</b>: The number of core of this host (by default, 1). If
+    you specify the amount of cores, the 'power' parameter is the power 
+    of each core. 
+    For example, if you specify that your host has 6 cores, it will be
     available to up to 6 sequential tasks without sharing. If more
     tasks are placed on this host, the resource will be shared
-    accordingly. For example, if you schedule 12 tasks on the host,
-    each will get half of the computing power. Please note that
-    although sound, this model were never scientifically assessed.
+    accordingly. For example, if you schedule 12 tasks on that host,
+    each will get half of the specified computing power. Please note
+    that although sound, this model were never scientifically assessed.
     Please keep this fact in mind when using it.
-
 \li <b>availability</b>: specify if the percentage of power available.
 \li <b>availability_file</b>: Allow you to use a file as input. This
     file will contain availability traces for this computer. The
similarity index 98%
rename from include/smpi/mpif.h
rename to include/smpi/mpif.h.in
index 88922f3..c6a96a2 100644 (file)
       parameter(MPI_BXOR=11)
       
       INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND
-      PARAMETER (MPI_ADDRESS_KIND=8)
-      PARAMETER (MPI_OFFSET_KIND=8)
+      PARAMETER (MPI_ADDRESS_KIND=@MPI_ADDRESS_SIZE@)
+      PARAMETER (MPI_OFFSET_KIND=@MPI_ADDRESS_SIZE@)
       
       INTEGER MPI_MODE_NOPRECEDE
       PARAMETER (MPI_MODE_NOPRECEDE=8192)
index c56c649..77d8bef 100644 (file)
@@ -608,7 +608,7 @@ void sg_config_init(int *argc, char **argv)
 
     /* stack size of contexts in Ko */
     xbt_cfg_register(&_sg_cfg_set, "contexts/stack_size",
-                     "Stack size of contexts in Kib (ucontext or raw only)",
+                     "Stack size of contexts in Kib",
                      xbt_cfgelm_int, 1, 1, _sg_cfg_cb_context_stack_size, NULL);
     xbt_cfg_setdefault_int(_sg_cfg_set, "contexts/stack_size", 128);
 
index bd78c9c..2fdb6d9 100644 (file)
@@ -44,7 +44,7 @@ extern raw_stack_t raw_makecontext(char* malloced_stack, int stack_size,
                                    rawctx_entry_point_t entry_point, void* arg);
 extern void raw_swapcontext(raw_stack_t* old, raw_stack_t new);
 
-#ifdef PROCESSOR_x86_64
+#if PROCESSOR_x86_64
 __asm__ (
 #if defined(APPLE)
    ".text\n"
index 4d4c39a..db9d165 100644 (file)
@@ -11,7 +11,6 @@
 
 static int verbose = 0;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 int hindexed_zerotype_test(void);
 int hindexed_sparsetype_test(void);
index 5348d55..11e165a 100644 (file)
@@ -20,7 +20,6 @@ static int verbose = 0;
 
 #define BUF_SIZE 16384
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 
 int main(int argc, char *argv[])
index 9722167..418ff0b 100644 (file)
@@ -18,7 +18,6 @@
 */
 static int verbose = 1;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 int lots_of_types_test(void);
 
index 8f4c004..25038fc 100644 (file)
@@ -12,7 +12,6 @@
 static int verbose = 0;
 int a[100][100][100], e[9][9][9];
 
-int main(int argc, char *argv[]);
 
 /* helper functions */
 static int parse_args(int argc, char **argv);
index 8fcd3b5..ef8c3c9 100644 (file)
@@ -16,7 +16,6 @@
 static int verbose = 0;
 int a[100][100][100], e[9][9][9];
 
-int main(int argc, char *argv[]);
 
 /* helper functions */
 static int parse_args(int argc, char **argv);
index 3704293..d0c57bd 100644 (file)
@@ -11,7 +11,6 @@
 
 static int verbose = 0;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 int single_struct_test(void);
 
index d7b5719..cf16e6a 100644 (file)
@@ -11,7 +11,6 @@
 
 static int verbose = 0;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 int single_struct_test(void);
 int array_of_structs_test(void);
index 1cd2202..18e2c59 100644 (file)
@@ -15,7 +15,6 @@
 
 static int verbose = 0;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 
 int main(int argc, char *argv[])
index 0720524..dde6eda 100644 (file)
@@ -10,8 +10,6 @@
 #include "mpi.h"
 #include "mpitest.h"
 
-int main(int argc, char *argv[]);
-
 /* helper functions */
 int parse_args(int argc, char **argv);
 
index 5c608f8..d6fd63c 100644 (file)
@@ -18,7 +18,6 @@
 */
 static int verbose = 1;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 int struct_negdisp_test(void);
 int vector_negstride_test(void);
index eb39223..4eb4bb2 100644 (file)
@@ -57,8 +57,9 @@
 //#define HAVE_FORTRAN_BINDING 0
 
 /* Define to 1 if you have the `getrusage' function. */
+#ifndef WIN32
 #define HAVE_GETRUSAGE 1
-
+#endif
 /* Define if struct hostent contains h_addr_list */
 #define HAVE_H_ADDR_LIST 1
 
 #define HAVE_STRING_H 1
 
 /* Define to 1 if you have the <sys/resource.h> header file. */
+#ifndef WIN32
 #define HAVE_SYS_RESOURCE_H 1
-
+#endif
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #define HAVE_SYS_STAT_H 1
 
index 9ba1eef..98df8ef 100644 (file)
@@ -13,7 +13,6 @@
 
 static int verbose = 0;
 
-int main(int argc, char *argv[]);
 int parse_args(int argc, char **argv);
 
 int main(int argc, char *argv[])
index e904a36..6af8019 100644 (file)
 # | }
 # `----
 {
-   Memory leak in libcgraph (1/3)
+   Memory leak in libcgraph (1/2)
    Memcheck:Leak
    fun:malloc
+   ...
    obj:/usr/lib/libcgraph.so*
    fun:aaglex
    fun:aagparse
    fun:agconcat
 }
 {
-   Memory leak in libcgraph (2/3)
+   Memory leak in libcgraph (2/2)
    Memcheck:Leak
    fun:malloc
-   obj:/usr/lib/libcgraph.so*
-   fun:agalloc
-   obj:/usr/lib/libcgraph.so*
+   ...
    fun:agnode
    obj:/usr/lib/libcgraph.so*
    fun:aagparse
    fun:agconcat
 }
-{
-   Memory leak in libcgraph (3/3)
-   Memcheck:Leak
-   fun:malloc
-   fun:dtopen
-   fun:agdtopen
-   obj:/usr/lib/libcgraph.so*
-   fun:agstrdup
-   fun:aaglex
-   fun:aagparse
-   fun:agconcat
-}
index c099aa1..467c8e3 100644 (file)
@@ -1,16 +1,20 @@
 cmake_minimum_required(VERSION 2.6)
 
 if(WIN32)
-  #add_custom_target(tesh ALL
-  #  DEPENDS ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl
-  #  COMMENT "Install ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl"
-  #  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl ${CMAKE_BINARY_DIR}/bin/tesh
-  #  )
+#  add_custom_target(tesh ALL
+#    DEPENDS ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl
+#    COMMENT "Install ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl"
+#    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl ${CMAKE_BINARY_DIR}/bin/tesh
+#    )
     
     file(COPY        ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/tesh.pl 
          DESTINATION ${CMAKE_BINARY_DIR}/bin/
          FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
                           GROUP_EXECUTE GROUP_READ)
+    file(COPY        ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/Scripts/Diff.pm 
+         DESTINATION ${CMAKE_BINARY_DIR}
+         FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
+                          GROUP_EXECUTE GROUP_READ)
     file(RENAME ${CMAKE_BINARY_DIR}/bin/tesh.pl ${CMAKE_BINARY_DIR}/bin/tesh)                    
 else()
   set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin")