makedep: Create target subdirectories at make depend time.

oldstable
Alexandre Julliard 2014-01-14 21:20:25 +01:00
parent 2da6fc368f
commit 16286e45c4
4 changed files with 25 additions and 64 deletions

View File

@ -37,7 +37,6 @@ ARFLAGS = @ARFLAGS@
RANLIB = @RANLIB@
STRIP = @STRIP@
LN_S = @LN_S@
MKDIR_P = @MKDIR_P@
TOOLSDIR = @TOOLSDIR@
LDFLAGS = @LDFLAGS@
DLLFLAGS = @DLLFLAGS@

50
configure vendored
View File

@ -719,7 +719,6 @@ FONTFORGE
PKG_CONFIG
MSGFMT
LDCONFIG
MKDIR_P
EGREP
GREP
LN_S
@ -5363,48 +5362,6 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
EGREP="$ac_cv_path_EGREP"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
if test -z "$MKDIR_P"; then
if ${ac_cv_path_mkdir+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_prog in mkdir gmkdir; do
for ac_exec_ext in '' $ac_executable_extensions; do
as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
'mkdir (GNU coreutils) '* | \
'mkdir (coreutils) '* | \
'mkdir (fileutils) '4.1*)
ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
break 3;;
esac
done
done
done
IFS=$as_save_IFS
fi
test -d ./--version && rmdir ./--version
if test "${ac_cv_path_mkdir+set}" = set; then
MKDIR_P="$ac_cv_path_mkdir -p"
else
# As a last resort, use the slow shell script. Don't cache a
# value for MKDIR_P within a source directory, because that will
# break other packages using the cache if that directory is
# removed, or if the value is a relative name.
MKDIR_P="$ac_install_sh -d"
fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
$as_echo "$MKDIR_P" >&6; }
# Extract the first word of "ldconfig", so it can be a program name with args.
set dummy ldconfig; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@ -18010,7 +17967,6 @@ gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
MKDIR_P='$MKDIR_P'
test -n "\$AWK" || AWK=awk
_ACEOF
@ -18599,11 +18555,6 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
# CONFIG_FILE
#
ac_MKDIR_P=$MKDIR_P
case $MKDIR_P in
[\\/$]* | ?:[\\/]* ) ;;
*/*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@ -18657,7 +18608,6 @@ s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \

View File

@ -264,7 +264,6 @@ AC_SUBST(ARFLAGS,rc)
AC_PROG_RANLIB
AC_PROG_LN_S
AC_PROG_EGREP
AC_PROG_MKDIR_P
AC_PATH_PROG(LDCONFIG, ldconfig, true, [/sbin /usr/sbin $PATH])
AC_CHECK_PROGS(MSGFMT, msgfmt, false)
WINE_PATH_PKG_CONFIG

View File

@ -1346,6 +1346,26 @@ static void add_generated_sources(void)
}
/*******************************************************************
* create_dir
*/
static void create_dir( const char *dir )
{
char *p, *path;
p = path = xstrdup( dir );
while ((p = strchr( p, '/' )))
{
*p = 0;
if (mkdir( path, 0755 ) == -1 && errno != EEXIST) fatal_perror( "mkdir %s", path );
*p++ = '/';
while (*p == '/') p++;
}
if (mkdir( path, 0755 ) == -1 && errno != EEXIST) fatal_perror( "mkdir %s", path );
free( path );
}
/*******************************************************************
* output_include
*/
@ -1381,6 +1401,7 @@ static struct strarray output_sources(void)
struct strarray c2man_files = empty_strarray;
struct strarray implib_objs = empty_strarray;
struct strarray includes = empty_strarray;
struct strarray subdirs = empty_strarray;
struct strarray phony_targets = empty_strarray;
struct strarray linguas = get_expanded_make_var_array( "LINGUAS" );
struct strarray all_targets = get_expanded_make_var_array( "PROGRAMS" );
@ -1409,7 +1430,6 @@ static struct strarray output_sources(void)
LIST_FOR_EACH_ENTRY( source, &sources, struct incl_file, entry )
{
struct strarray extradefs;
char *subdir = NULL;
char *obj = xstrdup( source->name );
char *ext = get_extension( obj );
@ -1418,8 +1438,9 @@ static struct strarray output_sources(void)
if (src_dir && strchr( obj, '/' ))
{
subdir = xstrdup( obj );
char *subdir = strmake( "%s/%s", base_dir, obj );
*strrchr( subdir, '/' ) = 0;
strarray_add_uniq( &subdirs, subdir );
}
extradefs = get_expanded_make_var_array( strmake( "%s_EXTRADEFS", obj ));
@ -1432,7 +1453,6 @@ static struct strarray output_sources(void)
if (find_include_file( header ))
{
output( "%s.tab.h: %s\n", obj, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t$(BISON) -p %s_ -o %s.tab.c -d %s\n",
obj, obj, source->filename );
output( "%s.tab.c: %s %s\n", obj, source->filename, header );
@ -1440,7 +1460,6 @@ static struct strarray output_sources(void)
}
else output( "%s.tab.c: %s\n", obj, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t$(BISON) -p %s_ -o $@ %s\n", obj, source->filename );
free( header );
continue; /* no dependencies */
@ -1448,7 +1467,6 @@ static struct strarray output_sources(void)
else if (!strcmp( ext, "x" )) /* template file */
{
output( "%s.h: %s%s %s\n", obj, tools_dir_path( "make_xftmpl" ), tools_ext, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t%s%s -H -o $@ %s\n", tools_dir_path( "make_xftmpl" ), tools_ext, source->filename );
strarray_add( &clean_files, strmake( "%s.h", obj ));
continue; /* no dependencies */
@ -1456,7 +1474,6 @@ static struct strarray output_sources(void)
else if (!strcmp( ext, "l" )) /* lex file */
{
output( "%s.yy.c: %s\n", obj, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t$(FLEX) -o$@ %s\n", source->filename );
continue; /* no dependencies */
}
@ -1464,7 +1481,6 @@ static struct strarray output_sources(void)
{
strarray_add( &res_files, strmake( "%s.res", obj ));
output( "%s.res: %s %s\n", obj, tools_path( "wrc" ), source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t%s -o $@ %s", tools_path( "wrc" ), source->filename );
if (is_win16) output_filename( "-m16" );
else output_filenames( targetflags );
@ -1489,7 +1505,6 @@ static struct strarray output_sources(void)
{
strarray_add( &res_files, strmake( "%s.res", obj ));
output( "%s.res: %s %s\n", obj, tools_path( "wmc" ), source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t%s -U -O res -o $@ %s", tools_path( "wmc" ), source->filename );
if (mo_files.count)
{
@ -1523,7 +1538,6 @@ static struct strarray output_sources(void)
if (source->flags & FLAG_IDL_PROXY) strarray_add( &dlldata_files, source->name );
output_filenames( targets );
output( ": %s\n", tools_path( "widl" ));
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t%s -o $@ %s", tools_path( "widl" ), source->filename );
output_filenames( targetflags );
output_filenames( includes );
@ -1559,7 +1573,6 @@ static struct strarray output_sources(void)
}
else strarray_add( &clean_files, xstrdup(obj) );
output( "%s: %s\n", obj, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t$(SED_CMD) %s >$@ || ($(RM) $@ && false)\n", source->filename );
output( "%s:", obj );
}
@ -1604,7 +1617,6 @@ static struct strarray output_sources(void)
if (source->flags & FLAG_C_IMPLIB) strarray_add( &implib_objs, strmake( "%s.o", obj ));
strarray_add( &object_files, strmake( "%s.o", obj ));
output( "%s.o: %s\n", obj, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t$(CC) -c -o $@ %s", source->filename );
output_filenames( includes );
output_filenames( define_args );
@ -1618,7 +1630,6 @@ static struct strarray output_sources(void)
{
strarray_add( &crossobj_files, strmake( "%s.cross.o", obj ));
output( "%s.cross.o: %s\n", obj, source->filename );
if (subdir) output( "\t$(MKDIR_P) -m 755 %s\n", subdir );
output( "\t$(CROSSCC) -c -o $@ %s", source->filename );
output_filenames( includes );
output_filenames( define_args );
@ -1974,6 +1985,8 @@ static struct strarray output_sources(void)
output( "\n" );
}
for (i = 0; i < subdirs.count; i++) create_dir( subdirs.str[i] );
return clean_files;
}