makefiles: Generate a single non-recursive makefile at the top level.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
8a5e603000
commit
1dd3051cca
20
Makefile.in
20
Makefile.in
|
@ -115,16 +115,20 @@ install-manpages:: manpages
|
||||||
|
|
||||||
.PHONY: install-manpages
|
.PHONY: install-manpages
|
||||||
|
|
||||||
# Dependencies between directories
|
# Rules for generated source files
|
||||||
|
|
||||||
# dependencies needed to build any dll or program
|
dlls/ntdll/unix/version.c: dummy
|
||||||
__tooldeps__: libs/wpp
|
@version=`(GIT_DIR=$(srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-$(PACKAGE_VERSION)") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || ($(RM) $@ && exit 1)
|
||||||
__builddeps__: __tooldeps__ libs/wine include po
|
|
||||||
.PHONY: depend dummy install install-lib install-dev
|
|
||||||
|
|
||||||
dummy:
|
programs/winetest/build.rc: dummy
|
||||||
server: include
|
@build="STRINGTABLE { 1 \"`GIT_DIR=$(srcdir)/.git git rev-parse HEAD 2>/dev/null`\" }" && (echo $$build | cmp -s - $@) || echo $$build >$@ || (rm -f $@ && exit 1)
|
||||||
libs/port libs/wine libs/wpp: include/config.h
|
|
||||||
|
programs/winetest/build.nfo:
|
||||||
|
-$(CC) -v 2>$@
|
||||||
|
|
||||||
|
dlls/wineandroid.drv/wine-debug.apk: dlls/wineandroid.drv/build.gradle $(srcdir)/dlls/wineandroid.drv/AndroidManifest.xml $(srcdir)/dlls/wineandroid.drv/WineActivity.java $(srcdir)/dlls/wineandroid.drv/wine.svg
|
||||||
|
cd dlls/wineandroid.drv && gradle -q -Psrcdir=$(srcdir) assembleDebug
|
||||||
|
mv dlls/wineandroid.drv/build/outputs/apk/wine-debug.apk $@
|
||||||
|
|
||||||
# Misc rules
|
# Misc rules
|
||||||
|
|
||||||
|
|
|
@ -8725,10 +8725,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
SYSTEMCONFIGURATION_LIBS="-framework SystemConfiguration"
|
SYSTEMCONFIGURATION_LIBS="-framework SystemConfiguration"
|
||||||
|
|
||||||
|
|
||||||
WINELOADER_LDFLAGS="-Wl,-pie,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
|
WINELOADER_LDFLAGS="-Wl,-pie,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,loader/wine_info.plist"
|
||||||
|
|
||||||
wine_can_build_preloader=yes
|
wine_can_build_preloader=yes
|
||||||
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7d400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
|
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7d400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,loader/wine_info.plist"
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-no_new_main -e _main" >&5
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -Wl,-no_new_main -e _main" >&5
|
||||||
$as_echo_n "checking whether the compiler supports -Wl,-no_new_main -e _main... " >&6; }
|
$as_echo_n "checking whether the compiler supports -Wl,-no_new_main -e _main... " >&6; }
|
||||||
if ${ac_cv_cflags__Wl__no_new_main__e__main+:} false; then :
|
if ${ac_cv_cflags__Wl__no_new_main__e__main+:} false; then :
|
||||||
|
@ -20127,8 +20127,10 @@ wine_fn_append_rule "
|
||||||
all: Makefile
|
all: Makefile
|
||||||
Makefile: $srcdir/Makefile.in config.status \$(MAKEDEP)
|
Makefile: $srcdir/Makefile.in config.status \$(MAKEDEP)
|
||||||
@./config.status Make.tmp Makefile
|
@./config.status Make.tmp Makefile
|
||||||
depend: \$(MAKEDEP) dummy
|
depend: \$(MAKEDEP)
|
||||||
\$(MAKEDEP)"
|
\$(MAKEDEP)
|
||||||
|
dummy:
|
||||||
|
.PHONY: depend dummy"
|
||||||
|
|
||||||
ac_config_links="$ac_config_links wine:tools/winewrapper"
|
ac_config_links="$ac_config_links wine:tools/winewrapper"
|
||||||
wine_fn_config_symlink wine
|
wine_fn_config_symlink wine
|
||||||
|
@ -21431,9 +21433,7 @@ if test "x$enable_tools" != xno
|
||||||
then
|
then
|
||||||
wine_fn_append_rule "tools/makedep$ac_exeext: $srcdir/tools/makedep.c include/config.h config.status
|
wine_fn_append_rule "tools/makedep$ac_exeext: $srcdir/tools/makedep.c include/config.h config.status
|
||||||
@./config.status tools/makedep
|
@./config.status tools/makedep
|
||||||
Makefile: tools/makedep$ac_exeext
|
Makefile: tools/makedep$ac_exeext"
|
||||||
fonts: tools/sfnt2fon
|
|
||||||
include: tools tools/widl"
|
|
||||||
else
|
else
|
||||||
wine_fn_append_rule "\$(MAKEDEP):
|
wine_fn_append_rule "\$(MAKEDEP):
|
||||||
@echo \"You need to run make in $TOOLSDIR first\" && false"
|
@echo \"You need to run make in $TOOLSDIR first\" && false"
|
||||||
|
|
14
configure.ac
14
configure.ac
|
@ -756,10 +756,10 @@ case $host_os in
|
||||||
AC_SUBST(APPKIT_LIBS,"-framework AppKit")
|
AC_SUBST(APPKIT_LIBS,"-framework AppKit")
|
||||||
AC_SUBST(SYSTEMCONFIGURATION_LIBS,"-framework SystemConfiguration")
|
AC_SUBST(SYSTEMCONFIGURATION_LIBS,"-framework SystemConfiguration")
|
||||||
|
|
||||||
WINELOADER_LDFLAGS="-Wl,-pie,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
|
WINELOADER_LDFLAGS="-Wl,-pie,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,loader/wine_info.plist"
|
||||||
|
|
||||||
wine_can_build_preloader=yes
|
wine_can_build_preloader=yes
|
||||||
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7d400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,wine_info.plist"
|
WINEPRELOADER_LDFLAGS="-nostartfiles -nodefaultlibs -e _start -ldylib1.o -Wl,-image_base,0x7d400000,-pagezero_size,0x1000,-sectcreate,__TEXT,__info_plist,loader/wine_info.plist"
|
||||||
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main],
|
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main],
|
||||||
[WINEPRELOADER_LDFLAGS="-Wl,-no_new_main $WINEPRELOADER_LDFLAGS"
|
[WINEPRELOADER_LDFLAGS="-Wl,-no_new_main $WINEPRELOADER_LDFLAGS"
|
||||||
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main -nostartfiles -nodefaultlibs],,
|
WINE_TRY_CFLAGS([-Wl,-no_new_main -e _main -nostartfiles -nodefaultlibs],,
|
||||||
|
@ -2805,8 +2805,10 @@ WINE_APPEND_RULE([
|
||||||
all: Makefile
|
all: Makefile
|
||||||
Makefile: $srcdir/Makefile.in config.status \$(MAKEDEP)
|
Makefile: $srcdir/Makefile.in config.status \$(MAKEDEP)
|
||||||
@./config.status Make.tmp Makefile
|
@./config.status Make.tmp Makefile
|
||||||
depend: \$(MAKEDEP) dummy
|
depend: \$(MAKEDEP)
|
||||||
\$(MAKEDEP)])
|
\$(MAKEDEP)
|
||||||
|
dummy:
|
||||||
|
.PHONY: depend dummy])
|
||||||
|
|
||||||
WINE_CONFIG_SYMLINK(wine,tools/winewrapper)
|
WINE_CONFIG_SYMLINK(wine,tools/winewrapper)
|
||||||
WINE_CONFIG_SYMLINK(wine64,tools/winewrapper,["x$enable_win64" != xno -o -n "$with_wine64"])
|
WINE_CONFIG_SYMLINK(wine64,tools/winewrapper,["x$enable_win64" != xno -o -n "$with_wine64"])
|
||||||
|
@ -4119,9 +4121,7 @@ then
|
||||||
WINE_APPEND_RULE(
|
WINE_APPEND_RULE(
|
||||||
[tools/makedep$ac_exeext: $srcdir/tools/makedep.c include/config.h config.status
|
[tools/makedep$ac_exeext: $srcdir/tools/makedep.c include/config.h config.status
|
||||||
@./config.status tools/makedep
|
@./config.status tools/makedep
|
||||||
Makefile: tools/makedep$ac_exeext
|
Makefile: tools/makedep$ac_exeext])
|
||||||
fonts: tools/sfnt2fon
|
|
||||||
include: tools tools/widl])
|
|
||||||
else
|
else
|
||||||
WINE_APPEND_RULE(
|
WINE_APPEND_RULE(
|
||||||
[\$(MAKEDEP):
|
[\$(MAKEDEP):
|
||||||
|
|
|
@ -79,9 +79,3 @@ unix_loader_EXTRADEFS = \
|
||||||
-DBINDIR=\"${bindir}\" \
|
-DBINDIR=\"${bindir}\" \
|
||||||
-DDLL_TO_BINDIR=\"`${MAKEDEP} -R ${dlldir} ${bindir}`\" \
|
-DDLL_TO_BINDIR=\"`${MAKEDEP} -R ${dlldir} ${bindir}`\" \
|
||||||
-DBIN_TO_DATADIR=\"`${MAKEDEP} -R ${bindir} ${datadir}/wine`\"
|
-DBIN_TO_DATADIR=\"`${MAKEDEP} -R ${bindir} ${datadir}/wine`\"
|
||||||
|
|
||||||
unix/version.c: dummy
|
|
||||||
version=`(GIT_DIR=$(top_srcdir)/.git git describe HEAD 2>/dev/null || echo "wine-$(PACKAGE_VERSION)") | sed -n -e '$$s/\(.*\)/const char wine_build[] = "\1";/p'` && (echo $$version | cmp -s - $@) || echo $$version >$@ || (rm -f $@ && exit 1)
|
|
||||||
|
|
||||||
dummy:
|
|
||||||
.PHONY: dummy
|
|
||||||
|
|
|
@ -16,7 +16,3 @@ SVG_SRCS = \
|
||||||
wine.svg
|
wine.svg
|
||||||
|
|
||||||
EXTRA_TARGETS = wine-debug.apk
|
EXTRA_TARGETS = wine-debug.apk
|
||||||
|
|
||||||
wine-debug.apk: build.gradle $(srcdir)/AndroidManifest.xml $(srcdir)/WineActivity.java $(srcdir)/wine.svg
|
|
||||||
gradle -q -Psrcdir=$(srcdir) assembleDebug
|
|
||||||
mv build/outputs/apk/wine-debug.apk $@
|
|
||||||
|
|
|
@ -32,6 +32,12 @@ buildscript
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def get_srcdir()
|
||||||
|
{
|
||||||
|
if (srcdir.equals(".")) { return "."; }
|
||||||
|
return (srcdir.charAt(0) == "/" ? srcdir : "../../" + srcdir) + "/dlls/wineandroid.drv";
|
||||||
|
}
|
||||||
|
|
||||||
def add_icon_task( dir, scale )
|
def add_icon_task( dir, scale )
|
||||||
{
|
{
|
||||||
return tasks.create( "createIcon-" + dir, Exec ) {
|
return tasks.create( "createIcon-" + dir, Exec ) {
|
||||||
|
@ -39,7 +45,7 @@ def add_icon_task( dir, scale )
|
||||||
outputs.dir( outdir )
|
outputs.dir( outdir )
|
||||||
doFirst { outdir.mkdirs() }
|
doFirst { outdir.mkdirs() }
|
||||||
def png = new File( outdir, "wine.png" )
|
def png = new File( outdir, "wine.png" )
|
||||||
def svg = new File( srcdir, "wine.svg" )
|
def svg = new File( get_srcdir(), "wine.svg" )
|
||||||
inputs.file( svg )
|
inputs.file( svg )
|
||||||
outputs.file( png )
|
outputs.file( png )
|
||||||
commandLine "rsvg-convert", "-z", scale, "-o", png, svg
|
commandLine "rsvg-convert", "-z", scale, "-o", png, svg
|
||||||
|
@ -97,10 +103,10 @@ android
|
||||||
sourceSets
|
sourceSets
|
||||||
{
|
{
|
||||||
main.assets.srcDirs = [ "assets" ]
|
main.assets.srcDirs = [ "assets" ]
|
||||||
main.java.srcDirs = [ srcdir ]
|
main.java.srcDirs = [ get_srcdir() ]
|
||||||
main.jniLibs.srcDirs = [ "lib" ]
|
main.jniLibs.srcDirs = [ "lib" ]
|
||||||
main.java.excludes = [ "build" ]
|
main.java.excludes = [ "build" ]
|
||||||
main.res.srcDirs = [ "res" ]
|
main.res.srcDirs = [ "res" ]
|
||||||
main.manifest.srcFile srcdir + "/AndroidManifest.xml"
|
main.manifest.srcFile get_srcdir() + "/AndroidManifest.xml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,12 +20,3 @@ EXTRA_OBJS = build.res
|
||||||
EXTRA_TARGETS = build.nfo
|
EXTRA_TARGETS = build.nfo
|
||||||
|
|
||||||
INSTALL_LIB = none
|
INSTALL_LIB = none
|
||||||
|
|
||||||
build.rc: dummy
|
|
||||||
build="STRINGTABLE { 1 \"`GIT_DIR=$(top_srcdir)/.git git rev-parse HEAD 2>/dev/null`\" }" && (echo $$build | cmp -s - $@) || echo $$build >$@ || (rm -f $@ && exit 1)
|
|
||||||
|
|
||||||
build.nfo:
|
|
||||||
-$(CC) -v 2>$@
|
|
||||||
|
|
||||||
dummy:
|
|
||||||
.PHONY: dummy
|
|
||||||
|
|
392
tools/makedep.c
392
tools/makedep.c
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Generate include file dependencies
|
* Generate include file dependencies
|
||||||
*
|
*
|
||||||
* Copyright 1996, 2013 Alexandre Julliard
|
* Copyright 1996, 2013, 2020 Alexandre Julliard
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
@ -793,6 +793,17 @@ static char *tools_path( const struct makefile *make, const char *name )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************
|
||||||
|
* strarray_addall_path
|
||||||
|
*/
|
||||||
|
static void strarray_addall_path( struct strarray *array, const char *dir, struct strarray added )
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
for (i = 0; i < added.count; i++) strarray_add( array, concat_paths( dir, added.str[i] ));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
* get_line
|
* get_line
|
||||||
*/
|
*/
|
||||||
|
@ -1347,10 +1358,10 @@ static struct file *load_file( const char *name )
|
||||||
static struct file *open_include_path_file( const struct makefile *make, const char *dir,
|
static struct file *open_include_path_file( const struct makefile *make, const char *dir,
|
||||||
const char *name, char **filename )
|
const char *name, char **filename )
|
||||||
{
|
{
|
||||||
char *src_path = base_dir_path( make, concat_paths( dir, name ));
|
char *src_path = concat_paths( dir, name );
|
||||||
struct file *ret = load_file( src_path );
|
struct file *ret = load_file( src_path );
|
||||||
|
|
||||||
if (ret) *filename = src_dir_path( make, concat_paths( dir, name ));
|
if (ret) *filename = src_path;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1842,7 +1853,7 @@ static struct makefile *parse_makefile( const char *path )
|
||||||
struct makefile *make = xmalloc( sizeof(*make) );
|
struct makefile *make = xmalloc( sizeof(*make) );
|
||||||
|
|
||||||
memset( make, 0, sizeof(*make) );
|
memset( make, 0, sizeof(*make) );
|
||||||
make->base_dir = path;
|
make->obj_dir = make->base_dir = path;
|
||||||
|
|
||||||
file = open_input_makefile( make );
|
file = open_input_makefile( make );
|
||||||
while ((buffer = get_line( file )))
|
while ((buffer = get_line( file )))
|
||||||
|
@ -2683,21 +2694,8 @@ static struct strarray output_importlib_symlinks( const struct makefile *make )
|
||||||
static void output_po_files( const struct makefile *make )
|
static void output_po_files( const struct makefile *make )
|
||||||
{
|
{
|
||||||
const char *po_dir = src_dir_path( make, "po" );
|
const char *po_dir = src_dir_path( make, "po" );
|
||||||
struct strarray pot_files = empty_strarray;
|
unsigned int i;
|
||||||
unsigned int i, j;
|
|
||||||
|
|
||||||
for (i = 0; i < make->subdirs.count; i++)
|
|
||||||
{
|
|
||||||
struct makefile *submake = make->submakes[i];
|
|
||||||
|
|
||||||
for (j = 0; j < submake->pot_files.count; j++)
|
|
||||||
{
|
|
||||||
char *pot_path = base_dir_path( submake, submake->pot_files.str[j] );
|
|
||||||
output( "%s: dummy\n", pot_path );
|
|
||||||
output( "\t@cd %s && $(MAKE) %s\n", base_dir_path( submake, "" ), submake->pot_files.str[j] );
|
|
||||||
strarray_add( &pot_files, pot_path );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (linguas.count)
|
if (linguas.count)
|
||||||
{
|
{
|
||||||
for (i = 0; i < linguas.count; i++)
|
for (i = 0; i < linguas.count; i++)
|
||||||
|
@ -2710,13 +2708,11 @@ static void output_po_files( const struct makefile *make )
|
||||||
output_filename( strmake( "%s/%s.po", po_dir, linguas.str[i] ));
|
output_filename( strmake( "%s/%s.po", po_dir, linguas.str[i] ));
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
}
|
}
|
||||||
output_filenames( pot_files );
|
|
||||||
output( ": tools/wrc tools/wmc include\n" );
|
|
||||||
output( "%s/wine.pot:", po_dir );
|
output( "%s/wine.pot:", po_dir );
|
||||||
output_filenames( pot_files );
|
output_filenames( make->pot_files );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
output( "\tmsgcat -o $@" );
|
output( "\tmsgcat -o $@" );
|
||||||
output_filenames( pot_files );
|
output_filenames( make->pot_files );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3282,7 +3278,6 @@ static void output_man_pages( struct makefile *make )
|
||||||
strarray_add( &make->phony_targets, "sgmlpages" );
|
strarray_add( &make->phony_targets, "sgmlpages" );
|
||||||
strarray_add( &make->phony_targets, "xmlpages" );
|
strarray_add( &make->phony_targets, "xmlpages" );
|
||||||
}
|
}
|
||||||
else output( "manpages htmlpages sgmlpages xmlpages::\n" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3465,6 +3460,8 @@ static void output_module( struct makefile *make )
|
||||||
output_filenames_obj_dir( make, cross_files );
|
output_filenames_obj_dir( make, cross_files );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
}
|
}
|
||||||
|
if (needs_implib_symlink( make ))
|
||||||
|
strarray_addall( &top_makefile->clean_files, output_importlib_symlinks( make ));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spec_file)
|
if (spec_file)
|
||||||
|
@ -3596,15 +3593,15 @@ static void output_test_module( struct makefile *make )
|
||||||
output_filename( tools_path( make, "winegcc" ));
|
output_filename( tools_path( make, "winegcc" ));
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
|
|
||||||
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,
|
output( "%s/%s: %s%s\n", top_obj_dir_path( make, "programs/winetest" ), testres,
|
||||||
obj_dir_path( make, stripped ), ext );
|
obj_dir_path( make, stripped ), ext );
|
||||||
output( "\techo \"%s TESTRES \\\"%s%s\\\"\" | %s -u -o $@\n",
|
output( "\techo \"%s TESTRES \\\"%s%s\\\"\" | %s -u -o $@\n",
|
||||||
testmodule, obj_dir_path( make, stripped ), ext, tools_path( make, "wrc" ));
|
testmodule, obj_dir_path( make, stripped ), ext, tools_path( make, "wrc" ));
|
||||||
|
|
||||||
output_filenames_obj_dir( make, make->ok_files );
|
output_filenames_obj_dir( make, make->ok_files );
|
||||||
output( ": %s%s ../%s%s\n", obj_dir_path( make, testmodule ), ext, make->testdll, parent_ext );
|
output( ": %s%s", obj_dir_path( make, testmodule ), ext );
|
||||||
|
if (parent) output( " %s%s", obj_dir_path( parent, make->testdll ), parent_ext );
|
||||||
|
output( "\n" );
|
||||||
output( "%s %s:", obj_dir_path( make, "check" ), obj_dir_path( make, "test" ));
|
output( "%s %s:", obj_dir_path( make, "check" ), obj_dir_path( make, "test" ));
|
||||||
if (!make->disabled && parent && !parent->disabled) output_filenames_obj_dir( make, make->ok_files );
|
if (!make->disabled && parent && !parent->disabled) output_filenames_obj_dir( make, make->ok_files );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
|
@ -3671,205 +3668,85 @@ static void output_programs( struct makefile *make )
|
||||||
*/
|
*/
|
||||||
static void output_subdirs( struct makefile *make )
|
static void output_subdirs( struct makefile *make )
|
||||||
{
|
{
|
||||||
struct strarray symlinks = empty_strarray;
|
struct strarray all_targets = empty_strarray;
|
||||||
struct strarray all_deps = empty_strarray;
|
|
||||||
struct strarray build_deps = empty_strarray;
|
|
||||||
struct strarray builddeps_deps = empty_strarray;
|
|
||||||
struct strarray makefile_deps = empty_strarray;
|
struct strarray makefile_deps = empty_strarray;
|
||||||
struct strarray clean_files = empty_strarray;
|
struct strarray clean_files = empty_strarray;
|
||||||
struct strarray testclean_files = empty_strarray;
|
struct strarray testclean_files = empty_strarray;
|
||||||
struct strarray distclean_files = empty_strarray;
|
struct strarray distclean_files = empty_strarray;
|
||||||
struct strarray tools_deps = empty_strarray;
|
struct strarray dependencies = empty_strarray;
|
||||||
|
struct strarray install_lib_deps = empty_strarray;
|
||||||
|
struct strarray install_dev_deps = empty_strarray;
|
||||||
struct strarray tooldeps_deps = empty_strarray;
|
struct strarray tooldeps_deps = empty_strarray;
|
||||||
struct strarray winetest_deps = empty_strarray;
|
struct strarray buildtest_deps = empty_strarray;
|
||||||
unsigned int i, j;
|
unsigned int i;
|
||||||
|
|
||||||
|
strarray_addall( &clean_files, make->clean_files );
|
||||||
strarray_addall( &distclean_files, make->distclean_files );
|
strarray_addall( &distclean_files, make->distclean_files );
|
||||||
|
strarray_addall( &all_targets, make->all_targets );
|
||||||
for (i = 0; i < make->subdirs.count; i++)
|
for (i = 0; i < make->subdirs.count; i++)
|
||||||
{
|
{
|
||||||
const struct makefile *submake = make->submakes[i];
|
const struct makefile *submake = make->submakes[i];
|
||||||
char *subdir = base_dir_path( submake, "" );
|
|
||||||
|
|
||||||
strarray_add( &makefile_deps, top_src_dir_path( make, base_dir_path( submake,
|
strarray_add( &makefile_deps, top_src_dir_path( make, base_dir_path( submake,
|
||||||
strmake ( "%s.in", output_makefile_name ))));
|
strmake ( "%s.in", output_makefile_name ))));
|
||||||
for (j = 0; j < submake->clean_files.count; j++)
|
strarray_addall_uniq( &make->phony_targets, submake->phony_targets );
|
||||||
strarray_add( &clean_files, base_dir_path( submake, submake->clean_files.str[j] ));
|
strarray_addall_uniq( &make->uninstall_files, submake->uninstall_files );
|
||||||
for (j = 0; j < submake->distclean_files.count; j++)
|
strarray_addall_uniq( &dependencies, submake->dependencies );
|
||||||
strarray_add( &distclean_files, base_dir_path( submake, submake->distclean_files.str[j] ));
|
strarray_addall_path( &clean_files, submake->obj_dir, submake->clean_files );
|
||||||
for (j = 0; j < submake->ok_files.count; j++)
|
strarray_addall_path( &distclean_files, submake->obj_dir, submake->distclean_files );
|
||||||
strarray_add( &testclean_files, base_dir_path( submake, submake->ok_files.str[j] ));
|
strarray_addall_path( &testclean_files, submake->obj_dir, submake->ok_files );
|
||||||
|
strarray_addall_path( &make->pot_files, submake->obj_dir, submake->pot_files );
|
||||||
/* import libs are still created for disabled dirs, except for win16 ones */
|
|
||||||
if (submake->module && submake->importlib && !(submake->disabled && submake->is_win16))
|
|
||||||
{
|
|
||||||
char *importlib_path = base_dir_path( submake, strmake( "lib%s", submake->importlib ));
|
|
||||||
if (submake->implib_objs.count)
|
|
||||||
{
|
|
||||||
output( "%s.a: dummy\n", importlib_path );
|
|
||||||
output( "\t@cd %s && $(MAKE) lib%s.a\n", subdir, submake->importlib );
|
|
||||||
strarray_add( &tools_deps, strmake( "%s.a", importlib_path ));
|
|
||||||
if (needs_cross_lib( submake ))
|
|
||||||
{
|
|
||||||
output( "%s.cross.a: dummy\n", importlib_path );
|
|
||||||
output( "\t@cd %s && $(MAKE) lib%s.cross.a\n", subdir, submake->importlib );
|
|
||||||
strarray_add( &tools_deps, strmake( "%s.cross.a", importlib_path ));
|
|
||||||
}
|
|
||||||
if (needs_delay_lib( submake ))
|
|
||||||
{
|
|
||||||
output( "%s.delay.a: dummy\n", importlib_path );
|
|
||||||
output( "\t@cd %s && $(MAKE) lib%s.delay.a\n", subdir, submake->importlib );
|
|
||||||
strarray_add( &tools_deps, strmake( "%s.delay.a", importlib_path ));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *spec_file = top_src_dir_path( make, base_dir_path( submake,
|
|
||||||
replace_extension( submake->module, ".dll", ".spec" )));
|
|
||||||
if (*dll_ext)
|
|
||||||
{
|
|
||||||
output( "%s.def: %s", importlib_path, spec_file );
|
|
||||||
strarray_add( &build_deps, strmake( "%s.def", importlib_path ));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (needs_delay_lib( submake ))
|
|
||||||
{
|
|
||||||
output( "%s.delay.a ", importlib_path );
|
|
||||||
strarray_add( &build_deps, strmake( "%s.delay.a", importlib_path ));
|
|
||||||
}
|
|
||||||
output( "%s.a: %s", importlib_path, spec_file );
|
|
||||||
strarray_add( &build_deps, strmake( "%s.a", importlib_path ));
|
|
||||||
}
|
|
||||||
output_filename( tools_path( make, "winebuild" ));
|
|
||||||
output( "\n" );
|
|
||||||
output( "\t%s -w -o $@", tools_path( make, "winebuild" ));
|
|
||||||
output_filename( *dll_ext ? "--def" : "--implib" );
|
|
||||||
output_filenames( target_flags );
|
|
||||||
if (submake->is_win16) output_filename( "-m16" );
|
|
||||||
output_filename( "--export" );
|
|
||||||
output_filename( spec_file );
|
|
||||||
output( "\n" );
|
|
||||||
if (crosstarget && (needs_cross_lib( submake ) || needs_delay_lib( submake )))
|
|
||||||
{
|
|
||||||
if (needs_cross_lib( submake ))
|
|
||||||
{
|
|
||||||
output_filename( strmake( "%s.cross.a", importlib_path ));
|
|
||||||
strarray_add( &build_deps, strmake( "%s.cross.a", importlib_path ));
|
|
||||||
}
|
|
||||||
if (needs_delay_lib( submake ))
|
|
||||||
{
|
|
||||||
output_filename( strmake( "%s.delay.a", importlib_path ));
|
|
||||||
strarray_add( &build_deps, strmake( "%s.delay.a", importlib_path ));
|
|
||||||
}
|
|
||||||
output( ": %s", spec_file );
|
|
||||||
output_filename( tools_path( make, "winebuild" ));
|
|
||||||
output( "\n" );
|
|
||||||
output( "\t%s -b %s -w -o $@", tools_path( make, "winebuild" ), crosstarget );
|
|
||||||
if (submake->is_win16) output_filename( "-m16" );
|
|
||||||
output_filename( "--implib" );
|
|
||||||
output_filename( "--export" );
|
|
||||||
output_filename( spec_file );
|
|
||||||
output( "\n" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (needs_implib_symlink( submake ))
|
|
||||||
strarray_addall( &symlinks, output_importlib_symlinks( submake ));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (submake->disabled) continue;
|
if (submake->disabled) continue;
|
||||||
strarray_add( &all_deps, subdir );
|
|
||||||
|
|
||||||
if (submake->module)
|
|
||||||
{
|
|
||||||
if (!submake->staticlib)
|
|
||||||
{
|
|
||||||
strarray_add( &builddeps_deps, subdir );
|
|
||||||
if (!submake->is_exe)
|
|
||||||
{
|
|
||||||
output( "manpages htmlpages sgmlpages xmlpages::\n" );
|
|
||||||
output( "\t@cd %s && $(MAKE) $@\n", subdir );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else strarray_add( &tools_deps, subdir );
|
|
||||||
}
|
|
||||||
else if (submake->testdll)
|
|
||||||
{
|
|
||||||
output( "%s/test: dummy\n", subdir );
|
|
||||||
output( "\t@cd %s && $(MAKE) test\n", subdir );
|
|
||||||
strarray_add( &winetest_deps, subdir );
|
|
||||||
strarray_add( &builddeps_deps, subdir );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!strcmp( submake->base_dir, "tools" ) || !strncmp( submake->base_dir, "tools/", 6 ))
|
|
||||||
{
|
|
||||||
strarray_add( &tooldeps_deps, submake->base_dir );
|
|
||||||
for (j = 0; j < submake->programs.count; j++)
|
|
||||||
output( "%s/%s%s: %s\n", submake->base_dir,
|
|
||||||
submake->programs.str[j], tools_ext, submake->base_dir );
|
|
||||||
}
|
|
||||||
if (submake->programs.count || submake->sharedlib)
|
|
||||||
{
|
|
||||||
struct strarray libs = get_expanded_make_var_array( submake, "EXTRALIBS" );
|
|
||||||
for (j = 0; j < submake->programs.count; j++)
|
|
||||||
strarray_addall( &libs, get_expanded_file_local_var( submake,
|
|
||||||
submake->programs.str[j], "LDFLAGS" ));
|
|
||||||
output( "%s: libs/port", submake->base_dir );
|
|
||||||
for (j = 0; j < libs.count; j++)
|
|
||||||
{
|
|
||||||
if (!strcmp( libs.str[j], "-lwpp" )) output_filename( "libs/wpp" );
|
|
||||||
if (!strcmp( libs.str[j], "-lwine" )) output_filename( "libs/wine" );
|
|
||||||
}
|
|
||||||
output( "\n" );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
strarray_addall_path( &all_targets, submake->obj_dir, submake->all_targets );
|
||||||
|
if (!strcmp( submake->obj_dir, "tools" ) || !strncmp( submake->obj_dir, "tools/", 6 ))
|
||||||
|
strarray_add( &tooldeps_deps, obj_dir_path( submake, "all" ));
|
||||||
|
if (submake->testdll)
|
||||||
|
strarray_add( &buildtest_deps, obj_dir_path( submake, "all" ));
|
||||||
if (submake->install_rules[INSTALL_LIB].count)
|
if (submake->install_rules[INSTALL_LIB].count)
|
||||||
{
|
strarray_add( &install_lib_deps, obj_dir_path( submake, "install-lib" ));
|
||||||
output( "install install-lib:: %s\n", submake->base_dir );
|
|
||||||
output_install_commands( make, submake, submake->install_rules[INSTALL_LIB] );
|
|
||||||
}
|
|
||||||
if (submake->install_rules[INSTALL_DEV].count)
|
if (submake->install_rules[INSTALL_DEV].count)
|
||||||
{
|
strarray_add( &install_dev_deps, obj_dir_path( submake, "install-dev" ));
|
||||||
output( "install install-dev:: %s\n", submake->base_dir );
|
|
||||||
output_install_commands( make, submake, submake->install_rules[INSTALL_DEV] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
strarray_addall( &dependencies, makefile_deps );
|
||||||
output( "all:" );
|
output( "all:" );
|
||||||
output_filenames( all_deps );
|
output_filenames( all_targets );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
output_filenames( all_deps );
|
|
||||||
output( ": dummy\n" );
|
|
||||||
output( "\t@cd $@ && $(MAKE)\n" );
|
|
||||||
output( "Makefile:" );
|
output( "Makefile:" );
|
||||||
output_filenames( makefile_deps );
|
output_filenames( makefile_deps );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
output_filenames( makefile_deps );
|
output_filenames( dependencies );
|
||||||
output( ":\n" );
|
output( ":\n" );
|
||||||
if (tooldeps_deps.count)
|
if (install_lib_deps.count)
|
||||||
{
|
{
|
||||||
output( "__tooldeps__:" );
|
output( "install install-lib::" );
|
||||||
output_filenames( tooldeps_deps );
|
output_filenames( install_lib_deps );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
strarray_add( &make->phony_targets, "__tooldeps__" );
|
strarray_add_uniq( &make->phony_targets, "install" );
|
||||||
|
strarray_add_uniq( &make->phony_targets, "install-lib" );
|
||||||
}
|
}
|
||||||
if (winetest_deps.count)
|
if (install_dev_deps.count)
|
||||||
{
|
{
|
||||||
output( "buildtests programs/winetest:" );
|
output( "install install-dev::" );
|
||||||
output_filenames( winetest_deps );
|
output_filenames( install_dev_deps );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
|
strarray_add_uniq( &make->phony_targets, "install" );
|
||||||
|
strarray_add_uniq( &make->phony_targets, "install-dev" );
|
||||||
|
}
|
||||||
|
output_uninstall_rules( make );
|
||||||
|
if (buildtest_deps.count)
|
||||||
|
{
|
||||||
|
output( "buildtests:" );
|
||||||
|
output_filenames( buildtest_deps );
|
||||||
|
output( "\n" );
|
||||||
|
strarray_add_uniq( &make->phony_targets, "buildtests" );
|
||||||
|
}
|
||||||
output( "check test:" );
|
output( "check test:" );
|
||||||
for (i = 0; i < winetest_deps.count; i++)
|
output_filenames( testclean_files );
|
||||||
{
|
|
||||||
char *target = strmake( "%s/test", winetest_deps.str[i] );
|
|
||||||
output_filename( target );
|
|
||||||
strarray_add( &make->phony_targets, target );
|
|
||||||
}
|
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
strarray_add( &make->phony_targets, "buildtests" );
|
strarray_add_uniq( &make->phony_targets, "check" );
|
||||||
strarray_add( &make->phony_targets, "check" );
|
strarray_add_uniq( &make->phony_targets, "test" );
|
||||||
strarray_add( &make->phony_targets, "test" );
|
|
||||||
}
|
|
||||||
|
|
||||||
output( "clean::\n");
|
output( "clean::\n");
|
||||||
output_rm_filenames( clean_files );
|
output_rm_filenames( clean_files );
|
||||||
|
@ -3877,30 +3754,25 @@ static void output_subdirs( struct makefile *make )
|
||||||
output_rm_filenames( testclean_files );
|
output_rm_filenames( testclean_files );
|
||||||
output( "distclean::\n");
|
output( "distclean::\n");
|
||||||
output_rm_filenames( distclean_files );
|
output_rm_filenames( distclean_files );
|
||||||
output_filenames( tools_deps );
|
strarray_add_uniq( &make->phony_targets, "distclean" );
|
||||||
output( ":" );
|
strarray_add_uniq( &make->phony_targets, "testclean" );
|
||||||
output_filename( tools_dir_path( make, "widl" ));
|
|
||||||
output_filename( tools_dir_path( make, "winebuild" ));
|
|
||||||
output_filename( tools_dir_path( make, "winegcc" ));
|
|
||||||
output_filename( obj_dir_path( make, "include" ));
|
|
||||||
output( "\n" );
|
|
||||||
output_filenames( builddeps_deps );
|
|
||||||
output( ": __builddeps__\n" );
|
|
||||||
strarray_add( &make->phony_targets, "distclean" );
|
|
||||||
strarray_add( &make->phony_targets, "testclean" );
|
|
||||||
strarray_addall( &make->phony_targets, all_deps );
|
|
||||||
|
|
||||||
strarray_addall( &make->clean_files, symlinks );
|
if (tooldeps_deps.count)
|
||||||
strarray_addall( &build_deps, tools_deps );
|
|
||||||
strarray_addall( &build_deps, symlinks );
|
|
||||||
if (build_deps.count)
|
|
||||||
{
|
{
|
||||||
output( "__builddeps__:" );
|
output( "__tooldeps__:" );
|
||||||
output_filenames( build_deps );
|
output_filenames( tooldeps_deps );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
strarray_add( &make->phony_targets, "__builddeps__" );
|
strarray_add_uniq( &make->phony_targets, "__tooldeps__" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if (get_expanded_make_variable( make, "GETTEXTPO_LIBS" )) output_po_files( make );
|
if (get_expanded_make_variable( make, "GETTEXTPO_LIBS" )) output_po_files( make );
|
||||||
|
|
||||||
|
if (make->phony_targets.count)
|
||||||
|
{
|
||||||
|
output( ".PHONY:" );
|
||||||
|
output_filenames( make->phony_targets );
|
||||||
|
output( "\n" );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -3909,6 +3781,7 @@ static void output_subdirs( struct makefile *make )
|
||||||
*/
|
*/
|
||||||
static void output_sources( struct makefile *make )
|
static void output_sources( struct makefile *make )
|
||||||
{
|
{
|
||||||
|
struct strarray all_targets = empty_strarray;
|
||||||
struct incl_file *source;
|
struct incl_file *source;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
|
|
||||||
|
@ -3975,29 +3848,6 @@ static void output_sources( struct makefile *make )
|
||||||
else if (!strcmp( make->base_dir, "po" ))
|
else if (!strcmp( make->base_dir, "po" ))
|
||||||
strarray_add( &make->distclean_files, "LINGUAS" );
|
strarray_add( &make->distclean_files, "LINGUAS" );
|
||||||
|
|
||||||
if (make->subdirs.count) output_subdirs( make );
|
|
||||||
|
|
||||||
if (!make->disabled)
|
|
||||||
{
|
|
||||||
if (make->all_targets.count)
|
|
||||||
{
|
|
||||||
output( "%s:", obj_dir_path( make, "all" ));
|
|
||||||
output_filenames_obj_dir( make, make->all_targets );
|
|
||||||
output_filenames_obj_dir( make, make->font_files );
|
|
||||||
output( "\n" );
|
|
||||||
strarray_add_uniq( &make->phony_targets, obj_dir_path( make, "all" ));
|
|
||||||
}
|
|
||||||
output_install_rules( make, INSTALL_LIB, "install-lib" );
|
|
||||||
output_install_rules( make, INSTALL_DEV, "install-dev" );
|
|
||||||
output_uninstall_rules( make );
|
|
||||||
}
|
|
||||||
|
|
||||||
if (make->dependencies.count)
|
|
||||||
{
|
|
||||||
output_filenames( make->dependencies );
|
|
||||||
output( ":\n" );
|
|
||||||
}
|
|
||||||
|
|
||||||
strarray_addall( &make->clean_files, make->object_files );
|
strarray_addall( &make->clean_files, make->object_files );
|
||||||
strarray_addall( &make->clean_files, make->crossobj_files );
|
strarray_addall( &make->clean_files, make->crossobj_files );
|
||||||
strarray_addall( &make->clean_files, make->unixobj_files );
|
strarray_addall( &make->clean_files, make->unixobj_files );
|
||||||
|
@ -4006,20 +3856,31 @@ static void output_sources( struct makefile *make )
|
||||||
strarray_addall( &make->clean_files, make->debug_files );
|
strarray_addall( &make->clean_files, make->debug_files );
|
||||||
strarray_addall( &make->clean_files, make->all_targets );
|
strarray_addall( &make->clean_files, make->all_targets );
|
||||||
|
|
||||||
|
if (make->subdirs.count)
|
||||||
|
{
|
||||||
|
output_subdirs( make );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
strarray_addall( &all_targets, make->all_targets );
|
||||||
|
strarray_addall( &all_targets, make->font_files );
|
||||||
|
if (all_targets.count)
|
||||||
|
{
|
||||||
|
output( "%s:", obj_dir_path( make, "all" ));
|
||||||
|
output_filenames_obj_dir( make, all_targets );
|
||||||
|
output( "\n" );
|
||||||
|
strarray_add_uniq( &make->phony_targets, obj_dir_path( make, "all" ));
|
||||||
|
}
|
||||||
|
output_install_rules( make, INSTALL_LIB, "install-lib" );
|
||||||
|
output_install_rules( make, INSTALL_DEV, "install-dev" );
|
||||||
|
|
||||||
if (make->clean_files.count)
|
if (make->clean_files.count)
|
||||||
{
|
{
|
||||||
output( "%s::\n", obj_dir_path( make, "clean" ));
|
output( "%s::\n", obj_dir_path( make, "clean" ));
|
||||||
output( "\trm -f" );
|
output( "\trm -f" );
|
||||||
output_filenames_obj_dir( make, make->clean_files );
|
output_filenames_obj_dir( make, make->clean_files );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
strarray_add_uniq( &make->phony_targets, obj_dir_path( make, "clean" ));
|
strarray_add( &make->phony_targets, obj_dir_path( make, "clean" ));
|
||||||
}
|
|
||||||
|
|
||||||
if (make->phony_targets.count)
|
|
||||||
{
|
|
||||||
output( ".PHONY:" );
|
|
||||||
output_filenames( make->phony_targets );
|
|
||||||
output( "\n" );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4189,22 +4050,34 @@ static void output_gitignore( const char *dest, struct strarray files )
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
* output_top_variables
|
* output_stub_makefile
|
||||||
*/
|
*/
|
||||||
static void output_top_variables( const struct makefile *make )
|
static void output_stub_makefile( struct makefile *make )
|
||||||
{
|
{
|
||||||
unsigned int i;
|
struct strarray targets = empty_strarray;
|
||||||
struct strarray *vars = &top_makefile->vars;
|
const char *make_var = strarray_get_value( &top_makefile->vars, "MAKE" );
|
||||||
|
|
||||||
if (!make->base_dir) return; /* don't output variables in the top makefile */
|
if (make_var) output( "MAKE = %s\n\n", make_var );
|
||||||
|
output( "all:\n" );
|
||||||
|
|
||||||
output( "# Automatically generated by make depend; DO NOT EDIT!!\n\n" );
|
if (make->all_targets.count) strarray_add( &targets, "all" );
|
||||||
output( "all:\n\n" );
|
if (make->install_rules[INSTALL_LIB].count || make->install_rules[INSTALL_DEV].count)
|
||||||
for (i = 0; i < vars->count; i += 2)
|
strarray_add( &targets, "install" );
|
||||||
|
if (make->install_rules[INSTALL_LIB].count) strarray_add( &targets, "install-lib" );
|
||||||
|
if (make->install_rules[INSTALL_DEV].count) strarray_add( &targets, "install-dev" );
|
||||||
|
if (make->clean_files.count) strarray_add( &targets, "clean" );
|
||||||
|
if (make->ok_files.count)
|
||||||
{
|
{
|
||||||
if (!strcmp( vars->str[i], "SUBDIRS" )) continue; /* not inherited */
|
strarray_add( &targets, "check" );
|
||||||
output( "%s = %s\n", vars->str[i], get_make_variable( make, vars->str[i] ));
|
strarray_add( &targets, "test" );
|
||||||
|
strarray_add( &targets, "testclean" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
output_filenames( targets );
|
||||||
|
output( ":\n" );
|
||||||
|
output( "\t@cd %s && $(MAKE) %s/$@\n", get_relative_path( make->obj_dir, "" ), make->obj_dir );
|
||||||
|
output( ".PHONY:" );
|
||||||
|
output_filenames( targets );
|
||||||
output( "\n" );
|
output( "\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4217,13 +4090,12 @@ static void output_dependencies( struct makefile *make )
|
||||||
struct strarray ignore_files = empty_strarray;
|
struct strarray ignore_files = empty_strarray;
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
FILE *src_file;
|
FILE *src_file;
|
||||||
int found = 0;
|
int i, found = 0;
|
||||||
|
|
||||||
if (make->base_dir) create_dir( make->base_dir );
|
if (make->base_dir) create_dir( make->base_dir );
|
||||||
|
|
||||||
output_file_name = base_dir_path( make, output_makefile_name );
|
output_file_name = base_dir_path( make, output_makefile_name );
|
||||||
output_file = create_temp_file( output_file_name );
|
output_file = create_temp_file( output_file_name );
|
||||||
output_top_variables( make );
|
|
||||||
|
|
||||||
/* copy the contents of the source makefile */
|
/* copy the contents of the source makefile */
|
||||||
src_file = open_input_makefile( make );
|
src_file = open_input_makefile( make );
|
||||||
|
@ -4236,7 +4108,13 @@ static void output_dependencies( struct makefile *make )
|
||||||
input_file_name = NULL;
|
input_file_name = NULL;
|
||||||
|
|
||||||
if (!found) output( "\n%s (everything below this line is auto-generated; DO NOT EDIT!!)\n", separator );
|
if (!found) output( "\n%s (everything below this line is auto-generated; DO NOT EDIT!!)\n", separator );
|
||||||
|
|
||||||
|
if (!make->base_dir)
|
||||||
|
{
|
||||||
|
for (i = 0; i < make->subdirs.count; i++) output_sources( make->submakes[i] );
|
||||||
output_sources( make );
|
output_sources( make );
|
||||||
|
}
|
||||||
|
else output_stub_makefile( make );
|
||||||
|
|
||||||
fclose( output_file );
|
fclose( output_file );
|
||||||
output_file = NULL;
|
output_file = NULL;
|
||||||
|
@ -4283,8 +4161,6 @@ static void load_sources( struct makefile *make )
|
||||||
struct strarray value;
|
struct strarray value;
|
||||||
struct incl_file *file;
|
struct incl_file *file;
|
||||||
|
|
||||||
if (make->base_dir) make->top_obj_dir = get_relative_path( make->base_dir, "" );
|
|
||||||
|
|
||||||
if (root_src_dir)
|
if (root_src_dir)
|
||||||
{
|
{
|
||||||
make->top_src_dir = concat_paths( make->top_obj_dir, root_src_dir );
|
make->top_src_dir = concat_paths( make->top_obj_dir, root_src_dir );
|
||||||
|
@ -4551,9 +4427,9 @@ int main( int argc, char *argv[] )
|
||||||
for (i = 0; i < top_makefile->subdirs.count; i++)
|
for (i = 0; i < top_makefile->subdirs.count; i++)
|
||||||
load_sources( top_makefile->submakes[i] );
|
load_sources( top_makefile->submakes[i] );
|
||||||
|
|
||||||
|
output_dependencies( top_makefile );
|
||||||
for (i = 0; i < top_makefile->subdirs.count; i++)
|
for (i = 0; i < top_makefile->subdirs.count; i++)
|
||||||
output_dependencies( top_makefile->submakes[i] );
|
output_dependencies( top_makefile->submakes[i] );
|
||||||
|
|
||||||
output_dependencies( top_makefile );
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue