makefiles: Treat all directories the same way in configure.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2018-03-04 23:02:30 +01:00
parent 51b57133c7
commit 3aecaf1da7
4 changed files with 2240 additions and 2415 deletions

116
aclocal.m4 vendored
View file

@ -229,65 +229,10 @@ wine_fn_append_rule ()
AS_ECHO("$[1]") >>$wine_rules_file
}
wine_fn_all_rules ()
{
wine_fn_append_file SUBDIRS $ac_dir
}
wine_fn_disabled_rules ()
{
wine_fn_append_file SUBDIRS $ac_dir
wine_fn_append_file DISABLED_SUBDIRS $ac_dir
}
wine_fn_config_makefile ()
{
ac_dir=$[1]
ac_enable=$[2]
case $ac_dir in
dnl These are created as symlinks for wow64 builds
fonts|server) test -z "$with_wine64" || return ;;
esac
AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules],[wine_fn_all_rules])
}
wine_fn_config_lib ()
{
ac_name=$[1]
ac_dir=dlls/$ac_name
wine_fn_all_rules
}
wine_fn_config_dll ()
{
ac_name=$[1]
ac_dir=dlls/$ac_name
ac_enable=$[2]
AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules],[wine_fn_all_rules])
}
wine_fn_config_program ()
{
ac_name=$[1]
ac_dir=programs/$ac_name
ac_enable=$[2]
AS_VAR_IF([$ac_enable],[no],[wine_fn_disabled_rules],[wine_fn_all_rules])
}
wine_fn_config_test ()
{
ac_dir=$[1]
ac_name=$[2]
AS_VAR_IF([enable_tests],[no],[wine_fn_disabled_rules],[wine_fn_all_rules])
}
wine_fn_config_tool ()
{
ac_dir=$[1]
AS_VAR_IF([enable_tools],[no],[return])
wine_fn_all_rules
wine_fn_append_file SUBDIRS $[1]
AS_VAR_IF([$[2]],[no],[wine_fn_append_file DISABLED_SUBDIRS $[1]])
}
wine_fn_config_symlink ()
@ -299,12 +244,6 @@ wine_fn_config_symlink ()
for f in $ac_links; do wine_fn_append_file CONFIGURE_TARGETS $f; done
}])
dnl **** Define helper function to append a file to a makefile file list ****
dnl
dnl Usage: WINE_APPEND_FILE(var,file)
dnl
AC_DEFUN([WINE_APPEND_FILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])wine_fn_append_file $1 "$2"])
dnl **** Define helper function to append a rule to a makefile command list ****
dnl
dnl Usage: WINE_APPEND_RULE(rule)
@ -326,60 +265,15 @@ fi])[]dnl
dnl **** Create a makefile from config.status ****
dnl
dnl Usage: WINE_CONFIG_MAKEFILE(file,enable)
dnl Usage: WINE_CONFIG_MAKEFILE(file,enable,condition)
dnl
AC_DEFUN([WINE_CONFIG_MAKEFILE],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]m4_bpatsubst([$1],[.*/\([^/]*\)$],[\1])))dnl
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
wine_fn_config_makefile [$1] ac_enable[]dnl
m4_ifval([$3],[$3 || ])wine_fn_config_makefile [$1] ac_enable[]dnl
AS_VAR_POPDEF([ac_enable])])
dnl **** Create a dll makefile from config.status ****
dnl
dnl Usage: WINE_CONFIG_DLL(name,enable)
dnl
AC_DEFUN([WINE_CONFIG_DLL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
wine_fn_config_dll [$1] ac_enable[]dnl
AS_VAR_POPDEF([ac_enable])])
dnl **** Create a program makefile from config.status ****
dnl
dnl Usage: WINE_CONFIG_PROGRAM(name,enable)
dnl
AC_DEFUN([WINE_CONFIG_PROGRAM],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
AS_VAR_PUSHDEF([ac_enable],m4_default([$2],[enable_]$1))dnl
m4_append_uniq([_AC_USER_OPTS],ac_enable,[
])dnl
wine_fn_config_program [$1] ac_enable[]dnl
AS_VAR_POPDEF([ac_enable])])
dnl **** Create a test makefile from config.status ****
dnl
dnl Usage: WINE_CONFIG_TEST(dir)
dnl
AC_DEFUN([WINE_CONFIG_TEST],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
wine_fn_config_test [$1]])
dnl **** Create a static lib makefile from config.status ****
dnl
dnl Usage: WINE_CONFIG_LIB(name)
dnl
AC_DEFUN([WINE_CONFIG_LIB],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
wine_fn_config_lib [$1]])
dnl **** Create a tool makefile from config.status ****
dnl
dnl Usage: WINE_CONFIG_TOOL(name)
dnl
AC_DEFUN([WINE_CONFIG_TOOL],[AC_REQUIRE([WINE_CONFIG_HELPERS])dnl
m4_append_uniq([_AC_USER_OPTS],[enable_tools],[
])dnl
wine_fn_config_tool [$1]])
dnl **** Append a file to the .gitignore list ****
dnl
dnl Usage: WINE_IGNORE_FILE(file,enable)

2291
configure vendored

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -342,9 +342,8 @@ sub assign_sources_to_makefiles(@)
my $make = $makefiles{"$dir/Makefile"};
my $name = substr( $file, length($dir) + 1 );
my %flags = get_makedep_flags( $file );
next if $file =~ /^include\/wine\// && !%flags && !$exported_wine_headers{$name};
next if $file =~ /^include\/wine\// && !get_makedep_flags($file) && !$exported_wine_headers{$name};
if ($name =~ /\.m$/) { push @{${$make}{"=OBJC_SRCS"}}, $name; }
elsif ($name =~ /\.l$/) { push @{${$make}{"=LEX_SRCS"}}, $name; }
@ -376,7 +375,7 @@ sub assign_sources_to_makefiles(@)
}
elsif ($name =~ /\.idl$/)
{
die "no makedep flags specified in $file" unless %flags || $dir eq "include";
die "no makedep flags specified in $file" unless $dir eq "include" || get_makedep_flags($file);
push @{${$make}{"=IDL_SRCS"}}, $name;
}
elsif ($name =~ /\.man\.in$/)
@ -420,72 +419,57 @@ sub update_makefiles(@)
foreach my $file (sort @_)
{
next if $file eq "Makefile";
my %make = %{$makefiles{$file}};
(my $dir = $file) =~ s/^(.*)\/Makefile/$1/;
my $args = "";
my $is_win16 = $make{"MODULE"} && ($make{"MODULE"} =~ /16$/ || $modules16{$make{"MODULE"}});
if (defined($make{"TESTDLL"})) # test
{
die "TESTDLL should not be defined in $file" unless $file =~ /\/tests\/Makefile$/;
die "MODULE should not be defined in $file" if defined $make{"MODULE"};
die "STATICLIB should not be defined in $file" if defined $make{"STATICLIB"};
(my $dir = $file) =~ s/^(.*)\/Makefile/$1/;
push @lines, "WINE_CONFIG_TEST($dir)\n";
}
elsif (defined($make{"MODULE"}) && $make{"MODULE"} =~ /\.a$/) # import lib
{
die "MODULE should not be defined as static lib in $file" unless $file =~ /^dlls\//;
die "APPMODE should not be defined in $file" if defined $make{"APPMODE"};
die "STATICLIB should not be defined in $file" if defined $make{"STATICLIB"};
(my $name = $file) =~ s/^dlls\/(.*)\/Makefile/$1/;
push @lines, "WINE_CONFIG_LIB($name)\n";
}
elsif (defined($make{"MODULE"}) && defined($make{"APPMODE"})) # program
elsif (defined($make{"MODULE"})) # dll or program
{
die "APPMODE should not be defined in $file" unless $file =~ /^programs\//;
(my $name = $file) =~ s/^(dlls|programs)\/(.*)\/Makefile/$2/;
die "MODULE should not be defined in $file" unless $file =~ /^(dlls|programs)\//;
die "STATICLIB should not be defined in $file" if defined $make{"STATICLIB"};
(my $name = $file) =~ s/^programs\/(.*)\/Makefile/$1/;
if ($name =~ /\./)
die "Invalid MODULE in $file" if $name =~ /\./ && $make{"MODULE"} ne $name;
if ($file =~ /^programs\//)
{
die "Invalid MODULE in $file" unless $make{"MODULE"} eq $name;
die "APPMODE should be defined in $file" unless defined $make{"APPMODE"} ;
die "Invalid MODULE in $file" unless $name =~ /\./ || $make{"MODULE"} eq "$name.exe";
}
else
{
die "Invalid MODULE in $file" unless $make{"MODULE"} eq "$name.exe";
die "APPMODE should not be defined in $file" if defined $make{"APPMODE"} ;
die "Invalid MODULE in $file" unless $name =~ /\./ || $make{"MODULE"} eq "$name.dll";
}
$args .= ",enable_win16" if $is_win16;
push @lines, "WINE_CONFIG_PROGRAM($name$args)\n";
}
elsif (defined($make{"MODULE"})) # dll
{
die "APPMODE should be defined in $file" if $file =~ /^programs\//;
die "MODULE should not be defined in $file" unless $file =~ /^dlls\//;
die "STATICLIB should not be defined in $file" if defined $make{"STATICLIB"};
(my $name = $file) =~ s/^dlls\/(.*)\/Makefile/$1/;
if ($name =~ /\./)
if (defined $make{"IMPORTLIB"})
{
die "Invalid MODULE in $file" unless $make{"MODULE"} eq $name;
die "IMPORTLIB not allowed in programs\n" if $file =~ /^programs\//;
die "Invalid IMPORTLIB name in $file" if $make{"IMPORTLIB"} =~ /\./;
}
else
{
die "Invalid MODULE in $file" unless $make{"MODULE"} eq "$name.dll";
}
my $implib = $make{"IMPORTLIB"} || "";
die "Invalid IMPORTLIB name in $file" if $implib =~ /\./;
$args .= ",enable_win16" if $is_win16;
push @lines, "WINE_CONFIG_DLL($name$args)\n";
$args = ",enable_win16" if $make{"MODULE"} =~ /16$/ || $modules16{$make{"MODULE"}};
}
elsif ($file =~ /^tools.*\/Makefile$/)
{
die "APPMODE should not be defined in $file" if defined $make{"APPMODE"};
die "STATICLIB should not be defined in $file" if defined $make{"STATICLIB"};
(my $name = $file) =~ s/^(.*)\/Makefile/$1/;
push @lines, "WINE_CONFIG_TOOL($name)\n";
$args = ",,[test \"x\$enable_tools\" = xno]";
}
elsif ($file =~ /\/Makefile$/)
elsif (($dir eq "fonts") || ($dir eq "server"))
{
(my $name = $file) =~ s/^(.*)\/Makefile/$1/;
push @lines, "WINE_CONFIG_MAKEFILE($name)\n";
# these are created as symlinks for wow64 builds
$args = ",,[test -n \"\$with_wine64\"]";
}
push @lines, "WINE_CONFIG_MAKEFILE($dir$args)\n";
}
# update the source variables in all the makefiles
@ -493,7 +477,7 @@ sub update_makefiles(@)
foreach my $file (sort @_) { replace_makefile_variables( $file ); }
push @lines, "dnl End of auto-generated output commands\n";
replace_in_file( "configure.ac", '^WINE_CONFIG_DLL', '^dnl End of auto-generated output commands\n$', @lines);
replace_in_file( "configure.ac", '^WINE_CONFIG_MAKEFILE', '^dnl End of auto-generated output commands\n$', @lines);
}