Alexandre Julliard : ntdll: Move the Wine version functions to the Unix library.
Module: wine Branch: master Commit: 9b8afa0f83f2fc576723a0262ee17f32055b25d2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=9b8afa0f83f2fc576723a0262... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Sun May 17 11:09:30 2020 +0200 ntdll: Move the Wine version functions to the Unix library. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/Makefile.in | 8 ++++++++ dlls/ntdll/misc.c | 24 +++--------------------- dlls/ntdll/unix/loader.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ dlls/ntdll/unixlib.h | 5 +++++ tools/makedep.c | 5 ++++- 5 files changed, 68 insertions(+), 22 deletions(-) diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in index f1ecb395e3..ebf607e9d4 100644 --- a/dlls/ntdll/Makefile.in +++ b/dlls/ntdll/Makefile.in @@ -59,9 +59,17 @@ C_SRCS = \ RC_SRCS = version.rc +EXTRA_OBJS = unix/version.o + server_EXTRADEFS = \ -DBINDIR=\"${bindir}\" \ -DDLLDIR=\"${dlldir}\" \ -DBIN_TO_DLLDIR=\"`$(MAKEDEP) -R ${bindir} ${dlldir}`\" \ -DDLL_TO_BINDIR=\"`$(MAKEDEP) -R ${dlldir} ${bindir}`\" \ -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 diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index c29a1c26c2..fd9ba49113 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -23,13 +23,9 @@ #include <time.h> #include <math.h> -#ifdef HAVE_SYS_UTSNAME_H -#include <sys/utsname.h> -#endif #include "ntstatus.h" #define WIN32_NO_STATUS -#include "wine/library.h" #include "wine/debug.h" #include "ntdll_misc.h" #include "wmistr.h" @@ -57,7 +53,7 @@ LPCSTR debugstr_us( const UNICODE_STRING *us ) */ const char * CDECL NTDLL_wine_get_version(void) { - return wine_get_version(); + return unix_funcs->get_version(); } /********************************************************************* @@ -65,7 +61,7 @@ const char * CDECL NTDLL_wine_get_version(void) */ const char * CDECL NTDLL_wine_get_build_id(void) { - return wine_get_build_id(); + return unix_funcs->get_build_id(); } /********************************************************************* @@ -73,21 +69,7 @@ const char * CDECL NTDLL_wine_get_build_id(void) */ void CDECL NTDLL_wine_get_host_version( const char **sysname, const char **release ) { -#ifdef HAVE_SYS_UTSNAME_H - static struct utsname buf; - static BOOL init_done; - - if (!init_done) - { - uname( &buf ); - init_done = TRUE; - } - if (sysname) *sysname = buf.sysname; - if (release) *release = buf.release; -#else - if (sysname) *sysname = ""; - if (release) *release = ""; -#endif + return unix_funcs->get_host_version( sysname, release ); } /********************************************************************* diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index fdcca55beb..a8e7530c0c 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -31,6 +31,9 @@ #ifdef HAVE_SYS_MMAN_H # include <sys/mman.h> #endif +#ifdef HAVE_SYS_UTSNAME_H +#include <sys/utsname.h> +#endif #ifdef __APPLE__ # include <CoreFoundation/CoreFoundation.h> # define LoadResource MacLoadResource @@ -101,6 +104,48 @@ static void fixup_so_resources( IMAGE_RESOURCE_DIRECTORY *dir, BYTE *root, int d } +/********************************************************************* + * get_version + */ +const char * CDECL get_version(void) +{ + return PACKAGE_VERSION; +} + + +/********************************************************************* + * get_build_id + */ +const char * CDECL get_build_id(void) +{ + extern const char wine_build[]; + return wine_build; +} + + +/********************************************************************* + * get_host_version + */ +void CDECL get_host_version( const char **sysname, const char **release ) +{ +#ifdef HAVE_SYS_UTSNAME_H + static struct utsname buf; + static BOOL init_done; + + if (!init_done) + { + uname( &buf ); + init_done = TRUE; + } + if (sysname) *sysname = buf.sysname; + if (release) *release = buf.release; +#else + if (sysname) *sysname = ""; + if (release) *release = ""; +#endif +} + + /************************************************************************* * map_so_dll * @@ -379,6 +424,9 @@ static HMODULE load_ntdll(void) */ static struct unix_funcs unix_funcs = { + get_version, + get_build_id, + get_host_version, map_so_dll, mmap_add_reserved_area, mmap_remove_reserved_area, diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h index 753dea6acc..62ba2615ba 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -28,6 +28,11 @@ struct unix_funcs { + /* environment functions */ + const char * (CDECL *get_version)(void); + const char * (CDECL *get_build_id)(void); + void (CDECL *get_host_version)( const char **sysname, const char **release ); + /* virtual memory functions */ NTSTATUS (CDECL *map_so_dll)( const IMAGE_NT_HEADERS *nt_descr, HMODULE module ); void (CDECL *mmap_add_reserved_area)( void *addr, SIZE_T size ); diff --git a/tools/makedep.c b/tools/makedep.c index 193de2d4d8..cde07f669c 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -1969,7 +1969,10 @@ static void add_generated_sources( struct makefile *make ) { /* default to .c for unknown extra object files */ if (strendswith( objs.str[i], ".o" )) - add_generated_source( make, objs.str[i], replace_extension( objs.str[i], ".o", ".c" )); + { + file = add_generated_source( make, objs.str[i], replace_extension( objs.str[i], ".o", ".c" )); + if (make->module || make->staticlib) file->file->flags |= FLAG_C_UNIX; + } else if (strendswith( objs.str[i], ".res" )) add_generated_source( make, replace_extension( objs.str[i], ".res", ".rc" ), NULL ); else
participants (1)
-
Alexandre Julliard