makefiles: Default to building test modules as PE.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0022af881e
commit
1459a0105d
|
@ -5,7 +5,6 @@
|
||||||
# distclean: also remove all files created by configure
|
# distclean: also remove all files created by configure
|
||||||
# test: run tests
|
# test: run tests
|
||||||
# testclean: clean test results to force running all tests again
|
# 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-lib: install libraries needed to run applications
|
||||||
# install-dev: install development environment
|
# install-dev: install development environment
|
||||||
# install: install everything
|
# install: install everything
|
||||||
|
|
|
@ -31,7 +31,7 @@ xmlns="urn:schemas-microsoft-com:GameDescription.v1">
|
||||||
<GameTasks>
|
<GameTasks>
|
||||||
<Play>
|
<Play>
|
||||||
<Primary>
|
<Primary>
|
||||||
<FileTask path="gameux_crosstest.exe" arguments="" />
|
<FileTask path="gameux_test.exe" arguments="" />
|
||||||
</Primary>
|
</Primary>
|
||||||
</Play>
|
</Play>
|
||||||
</GameTasks>
|
</GameTasks>
|
||||||
|
|
|
@ -378,7 +378,7 @@ static void test_pe_checksum(void)
|
||||||
ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new);
|
ret = pCheckSumMappedFile(modinfo.lpBaseOfDll, 0, &checksum_orig, &checksum_new);
|
||||||
ok(!ret || (ret == nt_header), "Expected CheckSumMappedFile to fail, got %p\n", ret);
|
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);
|
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;
|
checksum_orig = checksum_new = 0xdeadbeef;
|
||||||
ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 1, 0,
|
ret = pCheckSumMappedFile((char *)modinfo.lpBaseOfDll + 1, 0,
|
||||||
|
|
|
@ -60,12 +60,6 @@ static DWORD one_before_last_pid = 0;
|
||||||
#define FIRM 0x4649524D
|
#define FIRM 0x4649524D
|
||||||
#define RSMB 0x52534D42
|
#define RSMB 0x52534D42
|
||||||
|
|
||||||
#ifdef linux
|
|
||||||
static const int firmware_todo = 0;
|
|
||||||
#else
|
|
||||||
static const int firmware_todo = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static BOOL InitFunctionPtrs(void)
|
static BOOL InitFunctionPtrs(void)
|
||||||
{
|
{
|
||||||
/* All needed functions are NT based, so using GetModuleHandle is a good check */
|
/* 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;
|
sfti->Action = SystemFirmwareTable_Get;
|
||||||
|
|
||||||
status = pNtQuerySystemInformation(SystemFirmwareTableInformation, sfti, min_sfti_len, &len1);
|
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(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(len1 >= min_sfti_len, "Expected length >= %u, got %u\n", min_sfti_len, len1);
|
||||||
ok(sfti->TableBufferLength == len1 - min_sfti_len,
|
ok(sfti->TableBufferLength == len1 - min_sfti_len,
|
||||||
|
@ -883,7 +876,6 @@ todo_wine_if(firmware_todo)
|
||||||
ok(!!sfti, "Failed to allocate memory\n");
|
ok(!!sfti, "Failed to allocate memory\n");
|
||||||
|
|
||||||
status = pNtQuerySystemInformation(SystemFirmwareTableInformation, sfti, len1, &len2);
|
status = pNtQuerySystemInformation(SystemFirmwareTableInformation, sfti, len1, &len2);
|
||||||
todo_wine_if(firmware_todo)
|
|
||||||
ok(status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
|
ok(status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
|
||||||
ok(len2 == len1, "Expected length %u, got %u\n", len1, len2);
|
ok(len2 == len1, "Expected length %u, got %u\n", len1, len2);
|
||||||
ok(sfti->TableBufferLength == len1 - min_sfti_len,
|
ok(sfti->TableBufferLength == len1 - min_sfti_len,
|
||||||
|
|
|
@ -2829,7 +2829,7 @@ static void test_directory(void)
|
||||||
okShell(rc > 32, "returned %lu\n", rc);
|
okShell(rc > 32, "returned %lu\n", rc);
|
||||||
okChildInt("argcA", 4);
|
okChildInt("argcA", 4);
|
||||||
okChildString("argvA3", "Exec");
|
okChildString("argvA3", "Exec");
|
||||||
todo_wine okChildPath("longPath", path);
|
okChildPath("longPath", path);
|
||||||
SetCurrentDirectoryA(curdir);
|
SetCurrentDirectoryA(curdir);
|
||||||
|
|
||||||
rc=shell_execute_ex(SEE_MASK_NOZONECHECKS|SEE_MASK_FLAG_NO_UI,
|
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);
|
okShell(rc > 32, "returned %lu\n", rc);
|
||||||
okChildInt("argcA", 4);
|
okChildInt("argcA", 4);
|
||||||
okChildString("argvA3", "Exec");
|
okChildString("argvA3", "Exec");
|
||||||
todo_wine okChildPath("longPath", path);
|
okChildPath("longPath", path);
|
||||||
|
|
||||||
/* Specify it through an environment variable */
|
/* Specify it through an environment variable */
|
||||||
rc=shell_execute_ex(SEE_MASK_NOZONECHECKS|SEE_MASK_FLAG_NO_UI,
|
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);
|
okShell(rc > 32, "returned %lu\n", rc);
|
||||||
okChildInt("argcA", 4);
|
okChildInt("argcA", 4);
|
||||||
okChildString("argvA3", "Exec");
|
okChildString("argvA3", "Exec");
|
||||||
todo_wine okChildPath("longPath", path);
|
okChildPath("longPath", path);
|
||||||
|
|
||||||
/* Not a colon-separated directory list */
|
/* Not a colon-separated directory list */
|
||||||
sprintf(dirpath, "%s:%s", curdir, tmpdir);
|
sprintf(dirpath, "%s:%s", curdir, tmpdir);
|
||||||
|
|
|
@ -2922,7 +2922,6 @@ static void output_source_default( struct makefile *make, struct incl_file *sour
|
||||||
(source->file->flags & FLAG_C_IMPLIB) ||
|
(source->file->flags & FLAG_C_IMPLIB) ||
|
||||||
(make->module && make->staticlib)));
|
(make->module && make->staticlib)));
|
||||||
int need_obj = (!need_cross ||
|
int need_obj = (!need_cross ||
|
||||||
(make->testdll && !is_dll_src) ||
|
|
||||||
(source->file->flags & FLAG_C_IMPLIB) ||
|
(source->file->flags & FLAG_C_IMPLIB) ||
|
||||||
(make->module && make->staticlib));
|
(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",
|
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, "" ),
|
top_src_dir_path( make, "tools/runtest" ), top_obj_dir_path( make, "" ),
|
||||||
make->testdll, replace_extension( make->testdll, ".dll", "_test.exe" ),
|
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 )));
|
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 *stripped = replace_extension( make->testdll, ".dll", "_test-stripped.exe" );
|
||||||
char *testres = replace_extension( make->testdll, ".dll", "_test.res" );
|
char *testres = replace_extension( make->testdll, ".dll", "_test.res" );
|
||||||
struct strarray dep_libs = empty_strarray;
|
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;
|
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_addall( &all_libs, libs );
|
||||||
strarray_add( &make->all_targets, strmake( "%s%s", testmodule, dll_ext ));
|
strarray_add( &make->all_targets, strmake( "%s%s", testmodule, ext ));
|
||||||
strarray_add( &make->clean_files, strmake( "%s%s", stripped, dll_ext ));
|
strarray_add( &make->clean_files, strmake( "%s%s", stripped, ext ));
|
||||||
output( "%s%s:\n", obj_dir_path( make, testmodule ), dll_ext );
|
output( "%s%s:\n", obj_dir_path( make, testmodule ), ext );
|
||||||
output_winegcc_command( make, 0 );
|
output_winegcc_command( make, !!crosstarget );
|
||||||
output_filenames( make->appmode );
|
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_filenames( all_libs );
|
||||||
output_filename( "$(LDFLAGS)" );
|
output_filename( "$(LDFLAGS)" );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
output( "%s%s:\n", obj_dir_path( make, stripped ), dll_ext );
|
output( "%s%s:\n", obj_dir_path( make, stripped ), ext );
|
||||||
output_winegcc_command( make, 0 );
|
output_winegcc_command( make, !!crosstarget );
|
||||||
output_filename( "-s" );
|
output_filename( "-s" );
|
||||||
output_filename( strmake( "-Wb,-F,%s", testmodule ));
|
output_filename( strmake( "-Wb,-F,%s", testmodule ));
|
||||||
output_filenames( make->appmode );
|
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_filenames( all_libs );
|
||||||
output_filename( "$(LDFLAGS)" );
|
output_filename( "$(LDFLAGS)" );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
output( "%s%s %s%s:", obj_dir_path( make, testmodule ), dll_ext,
|
output( "%s%s %s%s:", obj_dir_path( make, testmodule ), ext, obj_dir_path( make, stripped ), ext );
|
||||||
obj_dir_path( make, stripped ), dll_ext );
|
output_filenames_obj_dir( make, crosstarget ? make->crossobj_files : make->object_files );
|
||||||
output_filenames_obj_dir( make, make->object_files );
|
|
||||||
output_filenames( dep_libs );
|
output_filenames( dep_libs );
|
||||||
output_filename( tools_path( make, "winebuild" ));
|
output_filename( tools_path( make, "winebuild" ));
|
||||||
output_filename( tools_path( make, "winegcc" ));
|
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" ))
|
if (!make->disabled && !strarray_exists( &disabled_dirs, "programs/winetest" ))
|
||||||
output( "all: %s/%s\n", top_obj_dir_path( make, "programs/winetest" ), testres );
|
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,
|
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",
|
output( "\techo \"%s TESTRES \\\"%s%s\\\"\" | %s -o $@\n",
|
||||||
testmodule, obj_dir_path( make, stripped ), dll_ext, tools_path( make, "wrc" ));
|
testmodule, obj_dir_path( make, stripped ), 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" ));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strendswith( make->base_dir, "/tests" ))
|
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 );
|
parent_disabled = strarray_exists( &disabled_dirs, dir );
|
||||||
}
|
}
|
||||||
output_filenames_obj_dir( make, make->ok_files );
|
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:" );
|
output( "check test:" );
|
||||||
if (!make->disabled && !parent_disabled) output_filenames_obj_dir( make, make->ok_files );
|
if (!make->disabled && !parent_disabled) output_filenames_obj_dir( make, make->ok_files );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
|
@ -3423,7 +3394,6 @@ static void output_subdirs( struct makefile *make )
|
||||||
struct strarray tools_deps = empty_strarray;
|
struct strarray tools_deps = empty_strarray;
|
||||||
struct strarray tooldeps_deps = empty_strarray;
|
struct strarray tooldeps_deps = empty_strarray;
|
||||||
struct strarray winetest_deps = empty_strarray;
|
struct strarray winetest_deps = empty_strarray;
|
||||||
struct strarray crosstest_deps = empty_strarray;
|
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
|
|
||||||
strarray_addall( &distclean_files, make->distclean_files );
|
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 );
|
output( "\t@cd %s && $(MAKE) test\n", subdir );
|
||||||
strarray_add( &winetest_deps, subdir );
|
strarray_add( &winetest_deps, subdir );
|
||||||
strarray_add( &builddeps_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
|
else
|
||||||
{
|
{
|
||||||
|
@ -3592,12 +3553,6 @@ static void output_subdirs( struct makefile *make )
|
||||||
strarray_add( &make->phony_targets, "check" );
|
strarray_add( &make->phony_targets, "check" );
|
||||||
strarray_add( &make->phony_targets, "test" );
|
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( "clean::\n");
|
||||||
output_rm_filenames( clean_files );
|
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, "distclean" );
|
||||||
strarray_add( &make->phony_targets, "testclean" );
|
strarray_add( &make->phony_targets, "testclean" );
|
||||||
strarray_addall( &make->phony_targets, all_deps );
|
strarray_addall( &make->phony_targets, all_deps );
|
||||||
strarray_addall( &make->phony_targets, crosstest_deps );
|
|
||||||
|
|
||||||
strarray_addall( &make->clean_files, symlinks );
|
strarray_addall( &make->clean_files, symlinks );
|
||||||
strarray_addall( &build_deps, tools_deps );
|
strarray_addall( &build_deps, tools_deps );
|
||||||
|
|
|
@ -94,20 +94,22 @@ if [ -z "$program" ]; then
|
||||||
case $working_path in
|
case $working_path in
|
||||||
*/dlls/*/tests)
|
*/dlls/*/tests)
|
||||||
parent_path=`dirname "$working_path"`
|
parent_path=`dirname "$working_path"`
|
||||||
program=`basename "$parent_path"`_test.exe.so
|
program=`basename "$parent_path"`_test.exe
|
||||||
;;
|
;;
|
||||||
*/dlls/*)
|
*/dlls/*)
|
||||||
program=tests/`basename "$working_path"`_test.exe.so
|
program=tests/`basename "$working_path"`_test.exe
|
||||||
;;
|
;;
|
||||||
*/programs/*/tests)
|
*/programs/*/tests)
|
||||||
parent_path=`dirname "$working_path"`
|
parent_path=`dirname "$working_path"`
|
||||||
program=`basename "$parent_path"`.exe_test.exe.so
|
program=`basename "$parent_path"`.exe_test.exe
|
||||||
;;
|
;;
|
||||||
*/programs/*)
|
*/programs/*)
|
||||||
program=tests/`basename "$working_path"`.exe_test.exe.so
|
program=tests/`basename "$working_path"`.exe_test.exe
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
test -f "$program" || program="$program".so
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$program" ]; then
|
if [ ! -f "$program" ]; then
|
||||||
echo "Can't find the test program, use the -p argument to specify one" 1>&2
|
echo "Can't find the test program, use the -p argument to specify one" 1>&2
|
||||||
usage
|
usage
|
||||||
|
|
Loading…
Reference in New Issue