diff --git a/programs/winetest/make_cygwin_makefiles b/programs/winetest/make_cygwin_makefiles index 5bababe08a5..101ddc168a9 100755 --- a/programs/winetest/make_cygwin_makefiles +++ b/programs/winetest/make_cygwin_makefiles @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# Script to generate a Cygwin makefile for running unit tests. +# Script to generate a Cygwin/Mingw makefile for running unit tests. # # Copyright 2002 Geoffrey Hausheer # @@ -27,7 +27,14 @@ sub get_testname; sub create_archive($$\@); # set this variable to point to your windows headers -my ($windows_includes) ="/usr/include/w32api"; +my ($cygwin_windows_includes) ="/usr/include/w32api"; +my ($mingw_windows_includes) ="/mingw/include"; +my ($wine_windows_includes) ="./include"; +my ($windows_includes)=""; + +#set the default headers to use +my ($default_headers) =\$cygwin_windows_includes; + # set this variable to your compiler options my($cc_opts)= "-g -O2 -Wall -mpreferred-stack-boundary=2 -D_REENTRANT"; @@ -58,6 +65,22 @@ while ($#ARGV >= 0) $afile = shift @ARGV; $archive = "g"; } + if ($arg eq "-i") { + $windows_includes = shift @ARGV; + $default_headers = \$windows_includes; + } + if ($arg eq "-s") { + my($sys) = shift @ARGV; + if ($sys eq "cygwin") { + $default_headers = \$cygwin_windows_includes; + } elsif ($sys eq "mingw") { + $default_headers = \$mingw_windows_includes; + } elsif ($sys eq "wine") { + $default_headers = \$wine_windows_includes; + } else { + usage; + } + } } # check/detect topobjdir @@ -92,13 +115,30 @@ while() { close FIND_FH; #start writing the makefile in the root directory -open MAKE_FH,">Makefile.cyg"; -print MAKE_FH "CC = gcc\n"; -print MAKE_FH "WINDOWS_HEADERS = $windows_includes\n"; -print MAKE_FH "INCLUDE_DIRS = -I\$(WINDOWS_HEADERS) -I./include\n"; -print MAKE_FH "CC_OPTS = \$(INCLUDE_DIRS) $cc_opts -include \$(WINDOWS_HEADERS)/windows.h\n"; +open MAKE_FH,">Makefile.win"; +print MAKE_FH < $dir/testlist.c"); + system("./programs/winetest/make_ctests @filelist > $dir/testlist.c"); push @filelist,"$dir/testlist.c"; push(@gooddirs,$dir); print MAKE_FH "# $dir\n"; @@ -133,6 +173,7 @@ foreach $dir (@testdirs) { } die "No C files found\n" if (!scalar(@gooddirs)); # The prerequisites for the tests are that the .ok fiels get created +print MAKE_FH "\n# .ok result files\n"; print MAKE_FH "TEST_OK_FILES = \\\n"; foreach $file (@ok_list) { if($file ne $ok_list[$#ok_list]) { @@ -145,11 +186,24 @@ print MAKE_FH "\n"; print MAKE_FH "all: \$(TEST_OK_FILES)\n"; print MAKE_FH "\n"; +#define how to clean everything up +print MAKE_FH "clean:\n"; +print MAKE_FH " \$(RM) \$(TEST_OK_FILES)\n"; +print MAKE_FH "\n"; +print MAKE_FH "distclean:\n"; +print MAKE_FH " \$(RM) \$(TEST_OK_FILES)\n"; +print MAKE_FH " \$(RM) \$(TEST_O_FILES_wtmain)\n"; +foreach $dir (@gooddirs) { + my($rootdir)=fix_dir($dir); + print MAKE_FH " \$(RM) \$(TEST_EXE_${rootdir}) \$(TEST_O_FILES_${rootdir})\n"; +} +print MAKE_FH "\n"; + #define how to make the executables foreach $dir (@gooddirs) { my($rootdir)=fix_dir($dir); - print MAKE_FH "\$(TEST_EXE_${rootdir}): \$(TEST_O_FILES_${rootdir}) ./programs/winetest/wtmain.o\n"; - print MAKE_FH " \$(CC) \$(CC_OPTS) \$(TEST_O_FILES_${rootdir}) ./programs/winetest/wtmain.o -o \$@\n"; + print MAKE_FH "\$(TEST_EXE_${rootdir}): \$(TEST_O_FILES_${rootdir}) \$(TEST_O_FILES_wtmain)\n"; + print MAKE_FH " \$(CC) \$(CC_OPTS) \$(TEST_O_FILES_${rootdir}) \$(TEST_O_FILES_wtmain) -o \$@\n"; } # define how to make to .ok files @@ -157,7 +211,7 @@ foreach $file (@ok_list) { my($dir,$test) = ($file =~ /^(.*[\\\/]+tests)[\\\/]+(.*)\.ok$/); print MAKE_FH "$file: \$(TEST_EXE_". fix_dir($file) . ")\n"; - print MAKE_FH " \$< $test && touch \$@\n"; + print MAKE_FH " \$< $test && \$(TOUCH) \$@\n"; } # define how to make the .o files @@ -169,23 +223,6 @@ if($archive ne "") { } exit 0; - -sub usage -{ - print STDERR <