8 use Path::Tiny qw/ path cwd /;
9 use Getopt::Long qw/ GetOptions /;
15 my $cmd = $args->{cmd};
16 print "Running [@$cmd]\n";
19 die "Running [@$cmd] failed!";
24 my $IS_WIN = ( $^O eq "MSWin32" );
25 my $MAKE = $IS_WIN ? 'gmake' : 'make';
27 my $SEP = $IS_WIN ? "\\" : '/';
28 my $SUDO = $IS_WIN ? '' : 'sudo';
31 GetOptions( 'gen=s' => \$cmake_gen, )
32 or die 'Wrong options';
34 local $ENV{RUN_TESTS_VERBOSE} = 1;
35 if ( defined $cmake_gen )
37 $ENV{CMAKE_GEN} = $cmake_gen;
42 return shift(@_) =~ s%\\%\\\\%gr;
47 my $cmake_common_args = ""
48 . ( defined($cmake_gen) ? qq# -G "$cmake_gen" # : "" )
50 defined( $ENV{CMAKE_MAKE_PROGRAM} )
51 ? " -DCMAKE_MAKE_PROGRAM=$ENV{CMAKE_MAKE_PROGRAM} "
53 ) . ( $IS_WIN ? " -DCMAKE_BUILD_TYPE=Debug " : "" );
55 if ( !$ENV{SKIP_RINUTILS_INSTALL} )
59 cmd => [ qw#git clone https://github.com/shlomif/rinutils#, ]
65 qq#cd rinutils && mkdir B && cd B && cmake #
67 . " -DWITH_TEST_SUITE=OFF "
68 . ( $IS_WIN ? " -DCMAKE_INSTALL_PREFIX=C:/foo " : '' )
69 . qq# .. && $SUDO $MAKE install#
74 do_system( { cmd => [ "cmake", "--version" ] } );
75 my $CMAKE_PREFIX_PATH;
79 $CMAKE_PREFIX_PATH = join ";", ( map { ; $IS_WIN ? "c:$_" : $_ } ("/foo") );
81 ( $ENV{CMAKE_PREFIX_PATH} //= '' ) .= ";$CMAKE_PREFIX_PATH;";
83 # ( $ENV{PKG_CONFIG_PATH} //= '' ) .= ";C:\\foo\\lib\\pkgconfig;";
84 ( $ENV{PKG_CONFIG_PATH} //= '' ) .=
85 ";/foo/lib/pkgconfig/;/c/foo/lib/pkgconfig/";
86 $ENV{RINUTILS_INCLUDE_DIR} = "C:/foo/include";
92 $cwd->child('B')->remove_tree( { safe => 0, } );
94 my $W = "-DTARGET_ARCH=x86_64-w64-mingw32"; # -G Ninja ..
95 my $WIN32__DOUBLE_AMPERSAND__PROPER_HANDLING__NEEDED_PREFIX = "cd . &&";
96 print "PATH = <<$ENV{PATH}>>\n";
100 "$WIN32__DOUBLE_AMPERSAND__PROPER_HANDLING__NEEDED_PREFIX mkdir B && cd B && cmake"
102 defined($CMAKE_PREFIX_PATH)
103 ? ( " -DCMAKE_PREFIX_PATH=" . _transform($CMAKE_PREFIX_PATH) )
109 ? ( $cmake_common_args
110 . "$W -DCMAKE_INSTALL_PREFIX=c:/foo "
111 . " -DUSE_WIN32_REGEX_LIBS=TRUE "
112 . " ../fortune-mod && $MAKE && $MAKE install && $MAKE check"
114 : ( $cmake_common_args
115 . " ../fortune-mod && $MAKE && $MAKE check" )
122 my $gdb_cmds_fn = "cmds.gdb";
123 path($gdb_cmds_fn)->spew_utf8("r\nbt\nq\n");
124 my $gdb_prefix = "gdb --command=$gdb_cmds_fn";
129 "$WIN32__DOUBLE_AMPERSAND__PROPER_HANDLING__NEEDED_PREFIX $gdb_prefix c:/foo/games/fortune.exe"