makefiles: Default to building test modules as PE.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2019-04-09 09:48:23 +02:00
parent 0022af881e
commit 1459a0105d
7 changed files with 28 additions and 81 deletions

View File

@ -5,7 +5,6 @@
# distclean: also remove all files created by configure
# test: run tests
# testclean: clean test results to force running all tests again
# crosstest: build tests as native windows applications (requires MinGW)
# install-lib: install libraries needed to run applications
# install-dev: install development environment
# install: install everything

View File

@ -31,7 +31,7 @@ xmlns="urn:schemas-microsoft-com:GameDescription.v1">
<GameTasks>
<Play>
<Primary>
<FileTask path="gameux_crosstest.exe" arguments="" />
<FileTask path="gameux_test.exe" arguments="" />
</Primary>
</Play>
</GameTasks>

View File

@ -378,7 +378,7 @@ static void test_pe_checksum(void)
ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new);
ok(!ret || (ret == nt_header), "Expected CheckSumMappedFile to fail, got %p\n", ret);
ok((checksum_orig == 0xdeadbeef) || (checksum_orig == checksum_correct), "Expected %x, got %x\n", checksum_correct, checksum_orig);
todo_wine ok((checksum_new == 0xdeadbeef) || (checksum_new != 0 && checksum_new != 0xdeadbeef), "Got unexpected value %x\n", checksum_new);
ok((checksum_new == 0xdeadbeef) || (checksum_new != 0 && checksum_new != 0xdeadbeef), "Got unexpected value %x\n", checksum_new);
checksum_orig = checksum_new = 0xdeadbeef;
ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 1, 0,

View File

@ -60,12 +60,6 @@ static DWORD one_before_last_pid = 0;
#define FIRM 0x4649524D
#define RSMB 0x52534D42
#ifdef linux
static const int firmware_todo = 0;
#else
static const int firmware_todo = 1;
#endif
static BOOL InitFunctionPtrs(void)
{
/* All needed functions are NT based, so using GetModuleHandle is a good check */
@ -873,7 +867,6 @@ static void test_query_firmware(void)
sfti->Action = SystemFirmwareTable_Get;
status = pNtQuerySystemInformation(SystemFirmwareTableInformation, sfti, min_sfti_len, &len1);
todo_wine_if(firmware_todo)
ok(status == STATUS_BUFFER_TOO_SMALL, "Expected STATUS_BUFFER_TOO_SMALL, got %08x\n", status);
ok(len1 >= min_sfti_len, "Expected length >= %u, got %u\n", min_sfti_len, len1);
ok(sfti->TableBufferLength == len1 - min_sfti_len,
@ -883,7 +876,6 @@ todo_wine_if(firmware_todo)
ok(!!sfti, "Failed to allocate memory\n");
status = pNtQuerySystemInformation(SystemFirmwareTableInformation, sfti, len1, &len2);
todo_wine_if(firmware_todo)
ok(status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
ok(len2 == len1, "Expected length %u, got %u\n", len1, len2);
ok(sfti->TableBufferLength == len1 - min_sfti_len,

View File

@ -2829,7 +2829,7 @@ static void test_directory(void)
okShell(rc > 32, "returned %lu\n", rc);
okChildInt("argcA", 4);
okChildString("argvA3", "Exec");
todo_wine okChildPath("longPath", path);
okChildPath("longPath", path);
SetCurrentDirectoryA(curdir);
rc=shell_execute_ex(SEE_MASK_NOZONECHECKS|SEE_MASK_FLAG_NO_UI,
@ -2842,7 +2842,7 @@ static void test_directory(void)
okShell(rc > 32, "returned %lu\n", rc);
okChildInt("argcA", 4);
okChildString("argvA3", "Exec");
todo_wine okChildPath("longPath", path);
okChildPath("longPath", path);
/* Specify it through an environment variable */
rc=shell_execute_ex(SEE_MASK_NOZONECHECKS|SEE_MASK_FLAG_NO_UI,
@ -2854,7 +2854,7 @@ static void test_directory(void)
okShell(rc > 32, "returned %lu\n", rc);
okChildInt("argcA", 4);
okChildString("argvA3", "Exec");
todo_wine okChildPath("longPath", path);
okChildPath("longPath", path);
/* Not a colon-separated directory list */
sprintf(dirpath, "%s:%s", curdir, tmpdir);

View File

@ -2922,7 +2922,6 @@ static void output_source_default( struct makefile *make, struct incl_file *sour
(source->file->flags & FLAG_C_IMPLIB) ||
(make->module && make->staticlib)));
int need_obj = (!need_cross ||
(make->testdll && !is_dll_src) ||
(source->file->flags & FLAG_C_IMPLIB) ||
(make->module && make->staticlib));
@ -2973,7 +2972,7 @@ static void output_source_default( struct makefile *make, struct incl_file *sour
output( "\t%s $(RUNTESTFLAGS) -T %s -M %s -p %s%s %s && touch $@\n",
top_src_dir_path( make, "tools/runtest" ), top_obj_dir_path( make, "" ),
make->testdll, replace_extension( make->testdll, ".dll", "_test.exe" ),
dll_ext, obj );
crosstarget ? "" : dll_ext, obj );
}
}
if (need_obj) output_filename( strmake( "%s.o", obj_dir_path( make, obj )));
@ -3249,32 +3248,32 @@ static void output_test_module( struct makefile *make )
char *stripped = replace_extension( make->testdll, ".dll", "_test-stripped.exe" );
char *testres = replace_extension( make->testdll, ".dll", "_test.res" );
struct strarray dep_libs = empty_strarray;
struct strarray all_libs = add_import_libs( make, &dep_libs, make->imports, 0 );
struct strarray all_libs = add_import_libs( make, &dep_libs, make->imports, !!crosstarget );
int parent_disabled = 0;
const char *ext = crosstarget ? "" : dll_ext;
add_import_libs( make, &dep_libs, get_default_imports( make ), 0 ); /* dependencies only */
add_import_libs( make, &dep_libs, get_default_imports( make ), !!crosstarget ); /* dependencies only */
strarray_addall( &all_libs, libs );
strarray_add( &make->all_targets, strmake( "%s%s", testmodule, dll_ext ));
strarray_add( &make->clean_files, strmake( "%s%s", stripped, dll_ext ));
output( "%s%s:\n", obj_dir_path( make, testmodule ), dll_ext );
output_winegcc_command( make, 0 );
strarray_add( &make->all_targets, strmake( "%s%s", testmodule, ext ));
strarray_add( &make->clean_files, strmake( "%s%s", stripped, ext ));
output( "%s%s:\n", obj_dir_path( make, testmodule ), ext );
output_winegcc_command( make, !!crosstarget );
output_filenames( make->appmode );
output_filenames_obj_dir( make, make->object_files );
output_filenames_obj_dir( make, crosstarget ? make->crossobj_files : make->object_files );
output_filenames( all_libs );
output_filename( "$(LDFLAGS)" );
output( "\n" );
output( "%s%s:\n", obj_dir_path( make, stripped ), dll_ext );
output_winegcc_command( make, 0 );
output( "%s%s:\n", obj_dir_path( make, stripped ), ext );
output_winegcc_command( make, !!crosstarget );
output_filename( "-s" );
output_filename( strmake( "-Wb,-F,%s", testmodule ));
output_filenames( make->appmode );
output_filenames_obj_dir( make, make->object_files );
output_filenames_obj_dir( make, crosstarget ? make->crossobj_files : make->object_files );
output_filenames( all_libs );
output_filename( "$(LDFLAGS)" );
output( "\n" );
output( "%s%s %s%s:", obj_dir_path( make, testmodule ), dll_ext,
obj_dir_path( make, stripped ), dll_ext );
output_filenames_obj_dir( make, make->object_files );
output( "%s%s %s%s:", obj_dir_path( make, testmodule ), ext, obj_dir_path( make, stripped ), ext );
output_filenames_obj_dir( make, crosstarget ? make->crossobj_files : make->object_files );
output_filenames( dep_libs );
output_filename( tools_path( make, "winebuild" ));
output_filename( tools_path( make, "winegcc" ));
@ -3283,37 +3282,9 @@ static void output_test_module( struct makefile *make )
if (!make->disabled && !strarray_exists( &disabled_dirs, "programs/winetest" ))
output( "all: %s/%s\n", top_obj_dir_path( make, "programs/winetest" ), testres );
output( "%s/%s: %s%s\n", top_obj_dir_path( make, "programs/winetest" ), testres,
obj_dir_path( make, stripped ), dll_ext );
obj_dir_path( make, stripped ), ext );
output( "\techo \"%s TESTRES \\\"%s%s\\\"\" | %s -o $@\n",
testmodule, obj_dir_path( make, stripped ), dll_ext, tools_path( make, "wrc" ));
if (crosstarget)
{
char *crosstest = replace_extension( make->testdll, ".dll", "_crosstest.exe" );
dep_libs = empty_strarray;
all_libs = add_import_libs( make, &dep_libs, make->imports, 1 );
add_import_libs( make, &dep_libs, get_default_imports( make ), 1 ); /* dependencies only */
strarray_addall( &all_libs, libs );
strarray_add( &make->clean_files, crosstest );
output( "%s:", obj_dir_path( make, crosstest ));
output_filenames_obj_dir( make, make->crossobj_files );
output_filenames( dep_libs );
output_filename( tools_path( make, "winebuild" ));
output_filename( tools_path( make, "winegcc" ));
output( "\n" );
output_winegcc_command( make, 1 );
output_filenames_obj_dir( make, make->crossobj_files );
output_filenames( all_libs );
output_filename( "$(LDFLAGS)" );
output( "\n" );
if (!make->disabled)
{
output( "%s: %s\n", obj_dir_path( make, "crosstest" ), obj_dir_path( make, crosstest ));
strarray_add( &make->phony_targets, obj_dir_path( make, "crosstest" ));
if (make->obj_dir) output( "crosstest: %s\n", obj_dir_path( make, "crosstest" ));
}
}
testmodule, obj_dir_path( make, stripped ), ext, tools_path( make, "wrc" ));
if (strendswith( make->base_dir, "/tests" ))
{
@ -3322,7 +3293,7 @@ static void output_test_module( struct makefile *make )
parent_disabled = strarray_exists( &disabled_dirs, dir );
}
output_filenames_obj_dir( make, make->ok_files );
output( ": %s%s ../%s%s\n", testmodule, dll_ext, make->testdll, dll_ext );
output( ": %s%s ../%s%s\n", testmodule, ext, make->testdll, dll_ext );
output( "check test:" );
if (!make->disabled && !parent_disabled) output_filenames_obj_dir( make, make->ok_files );
output( "\n" );
@ -3423,7 +3394,6 @@ static void output_subdirs( struct makefile *make )
struct strarray tools_deps = empty_strarray;
struct strarray tooldeps_deps = empty_strarray;
struct strarray winetest_deps = empty_strarray;
struct strarray crosstest_deps = empty_strarray;
unsigned int i, j;
strarray_addall( &distclean_files, make->distclean_files );
@ -3511,15 +3481,6 @@ static void output_subdirs( struct makefile *make )
output( "\t@cd %s && $(MAKE) test\n", subdir );
strarray_add( &winetest_deps, subdir );
strarray_add( &builddeps_deps, subdir );
if (crosstarget)
{
char *target = base_dir_path( submake, "crosstest" );
output( "crosstest: %s\n", target );
output( "%s: dummy\n", target );
output( "\t@cd %s && $(MAKE) crosstest\n", subdir );
strarray_add( &crosstest_deps, target );
strarray_add( &builddeps_deps, target );
}
}
else
{
@ -3592,12 +3553,6 @@ static void output_subdirs( struct makefile *make )
strarray_add( &make->phony_targets, "check" );
strarray_add( &make->phony_targets, "test" );
}
output( "crosstest:" );
output_filenames( crosstest_deps );
output( "\n" );
if (!crosstest_deps.count)
output( "\t@echo \"crosstest is not supported (mingw not installed?)\" && false\n" );
strarray_add( &make->phony_targets, "crosstest" );
output( "clean::\n");
output_rm_filenames( clean_files );
@ -3617,7 +3572,6 @@ static void output_subdirs( struct makefile *make )
strarray_add( &make->phony_targets, "distclean" );
strarray_add( &make->phony_targets, "testclean" );
strarray_addall( &make->phony_targets, all_deps );
strarray_addall( &make->phony_targets, crosstest_deps );
strarray_addall( &make->clean_files, symlinks );
strarray_addall( &build_deps, tools_deps );

View File

@ -94,20 +94,22 @@ if [ -z "$program" ]; then
case $working_path in
*/dlls/*/tests)
parent_path=`dirname "$working_path"`
program=`basename "$parent_path"`_test.exe.so
program=`basename "$parent_path"`_test.exe
;;
*/dlls/*)
program=tests/`basename "$working_path"`_test.exe.so
program=tests/`basename "$working_path"`_test.exe
;;
*/programs/*/tests)
parent_path=`dirname "$working_path"`
program=`basename "$parent_path"`.exe_test.exe.so
program=`basename "$parent_path"`.exe_test.exe
;;
*/programs/*)
program=tests/`basename "$working_path"`.exe_test.exe.so
program=tests/`basename "$working_path"`.exe_test.exe
;;
esac
test -f "$program" || program="$program".so
fi
if [ ! -f "$program" ]; then
echo "Can't find the test program, use the -p argument to specify one" 1>&2
usage