- Update build system to support IOKit and CoreFoundation frameworks
on Darwin. - Add support for the -framework "name" linker option. - NtQueryVolumeInformationFile set device info on Darwin.
This commit is contained in:
parent
4e64906797
commit
2300ce663a
|
@ -311,7 +311,7 @@ ac_includes_default="\
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif"
|
#endif"
|
||||||
|
|
||||||
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WIN16_FILES WIN16_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPPBIN ac_ct_CPPBIN TOOLSDIR CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LEX LEXLIB LEX_OUTPUT_ROOT XLEX BISON AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES LN_S LN EGREP LDCONFIG INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LINT LINTFLAGS DB2HTML DB2PDF DB2PS DB2TXT FONTFORGE LIBPTHREAD XLIB XFILES OPENGLFILES GLU32FILES OPENGL_LIBS GLUT_LIBS GLUT32FILES NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ICULIBS ft_devel ft_devel2 FREETYPELIBS FREETYPEINCL FONTSSUBDIRS ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS CAPI4LINUXLIBS EXTRACFLAGS DLLEXT DLLFLAGS DLLIBS LDSHARED LDDLLFLAGS LIBEXT IMPLIBEXT DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP LDEXECFLAGS LDLIBWINEFLAGS CROSSTEST CROSSCC CROSSWINDRES LDPATH CRTLIBS WINE_BINARIES MAIN_BINARY LDD ALLOCA LIBOBJS LTLIBOBJS'
|
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WIN16_FILES WIN16_INSTALL build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CXX CXXFLAGS ac_ct_CXX CPPBIN ac_ct_CPPBIN TOOLSDIR CPP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS LEX LEXLIB LEX_OUTPUT_ROOT XLEX BISON AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES LN_S LN EGREP LDCONFIG INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LINT LINTFLAGS DB2HTML DB2PDF DB2PS DB2TXT FONTFORGE LIBPTHREAD XLIB XFILES OPENGLFILES GLU32FILES OPENGL_LIBS GLUT_LIBS GLUT32FILES NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ICULIBS ft_devel ft_devel2 FREETYPELIBS FREETYPEINCL FONTSSUBDIRS ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS CAPI4LINUXLIBS EXTRACFLAGS DLLEXT DLLFLAGS DLLIBS LDSHARED LDDLLFLAGS LIBEXT IMPLIBEXT DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP LDEXECFLAGS LDLIBWINEFLAGS COREFOUNDATIONLIB IOKITLIB CROSSTEST CROSSCC CROSSWINDRES LDPATH CRTLIBS WINE_BINARIES MAIN_BINARY LDD ALLOCA LIBOBJS LTLIBOBJS'
|
||||||
ac_subst_files='MAKE_RULES MAKE_DLL_RULES MAKE_TEST_RULES MAKE_LIB_RULES MAKE_PROG_RULES'
|
ac_subst_files='MAKE_RULES MAKE_DLL_RULES MAKE_TEST_RULES MAKE_LIB_RULES MAKE_PROG_RULES'
|
||||||
|
|
||||||
# Initialize some variables set by options.
|
# Initialize some variables set by options.
|
||||||
|
@ -14046,6 +14046,11 @@ echo "${ECHO_T}$ac_cv_c_dll_macho" >&6
|
||||||
|
|
||||||
LDLIBWINEFLAGS="-seg1addr 0x140000"
|
LDLIBWINEFLAGS="-seg1addr 0x140000"
|
||||||
|
|
||||||
|
COREFOUNDATIONLIB="-framework CoreFoundation"
|
||||||
|
|
||||||
|
IOKITLIB="-framework IOKit"
|
||||||
|
|
||||||
|
IOKITLIB = "$IOKITLIB $COREFOUNDATIONLIB"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -20924,6 +20929,8 @@ s,@DLLWRAP@,$DLLWRAP,;t t
|
||||||
s,@ac_ct_DLLWRAP@,$ac_ct_DLLWRAP,;t t
|
s,@ac_ct_DLLWRAP@,$ac_ct_DLLWRAP,;t t
|
||||||
s,@LDEXECFLAGS@,$LDEXECFLAGS,;t t
|
s,@LDEXECFLAGS@,$LDEXECFLAGS,;t t
|
||||||
s,@LDLIBWINEFLAGS@,$LDLIBWINEFLAGS,;t t
|
s,@LDLIBWINEFLAGS@,$LDLIBWINEFLAGS,;t t
|
||||||
|
s,@COREFOUNDATIONLIB@,$COREFOUNDATIONLIB,;t t
|
||||||
|
s,@IOKITLIB@,$IOKITLIB,;t t
|
||||||
s,@CROSSTEST@,$CROSSTEST,;t t
|
s,@CROSSTEST@,$CROSSTEST,;t t
|
||||||
s,@CROSSCC@,$CROSSCC,;t t
|
s,@CROSSCC@,$CROSSCC,;t t
|
||||||
s,@CROSSWINDRES@,$CROSSWINDRES,;t t
|
s,@CROSSWINDRES@,$CROSSWINDRES,;t t
|
||||||
|
|
|
@ -944,6 +944,11 @@ case $host_os in
|
||||||
AC_SUBST(LDEXECFLAGS,"-seg1addr 0x120000")
|
AC_SUBST(LDEXECFLAGS,"-seg1addr 0x120000")
|
||||||
dnl Relocate libwine.dyld too
|
dnl Relocate libwine.dyld too
|
||||||
AC_SUBST(LDLIBWINEFLAGS,"-seg1addr 0x140000")
|
AC_SUBST(LDLIBWINEFLAGS,"-seg1addr 0x140000")
|
||||||
|
dnl declare needed frameworks
|
||||||
|
AC_SUBST(COREFOUNDATIONLIB,"-framework CoreFoundation")
|
||||||
|
AC_SUBST(IOKITLIB,"-framework IOKit")
|
||||||
|
dnl using IOKit imply we use CoreFoundation too
|
||||||
|
IOKITLIB = "$IOKITLIB $COREFOUNDATIONLIB"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -5,7 +5,7 @@ SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = kernel32.dll
|
MODULE = kernel32.dll
|
||||||
IMPORTS = ntdll
|
IMPORTS = ntdll
|
||||||
EXTRALIBS = $(LIBUNICODE)
|
EXTRALIBS = $(LIBUNICODE) @COREFOUNDATIONLIB@
|
||||||
|
|
||||||
SPEC_SRCS16 = \
|
SPEC_SRCS16 = \
|
||||||
comm.drv.spec \
|
comm.drv.spec \
|
||||||
|
|
|
@ -4,7 +4,7 @@ TOPOBJDIR = ../..
|
||||||
SRCDIR = @srcdir@
|
SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = ntdll.dll
|
MODULE = ntdll.dll
|
||||||
EXTRALIBS = $(LIBUNICODE)
|
EXTRALIBS = $(LIBUNICODE) @IOKITLIB@
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
cdrom.c \
|
cdrom.c \
|
||||||
|
|
|
@ -1349,6 +1349,68 @@ NTSTATUS WINAPI NtQueryVolumeInformationFile( HANDLE handle, PIO_STATUS_BLOCK io
|
||||||
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#elif defined (__APPLE__)
|
||||||
|
#include <IOKit/IOKitLib.h>
|
||||||
|
#include <CoreFoundation/CFNumber.h> /* for kCFBooleanTrue, kCFBooleanFalse */
|
||||||
|
#include <paths.h>
|
||||||
|
struct statfs stfs;
|
||||||
|
|
||||||
|
info->DeviceType = FILE_DEVICE_DISK_FILE_SYSTEM;
|
||||||
|
|
||||||
|
if (fstatfs( fd, &stfs ) < 0) break;
|
||||||
|
|
||||||
|
/* stfs.f_type is reserved (always set to 0) so use IOKit */
|
||||||
|
kern_return_t kernResult = KERN_FAILURE;
|
||||||
|
mach_port_t masterPort;
|
||||||
|
|
||||||
|
char bsdName[6]; /* disk#\0 */
|
||||||
|
|
||||||
|
strncpy(bsdName, stfs.f_mntfromname+strlen(_PATH_DEV) , 5);
|
||||||
|
bsdName[5] = 0;
|
||||||
|
|
||||||
|
kernResult = IOMasterPort(MACH_PORT_NULL, &masterPort);
|
||||||
|
|
||||||
|
if (kernResult == KERN_SUCCESS)
|
||||||
|
{
|
||||||
|
CFMutableDictionaryRef matching = IOBSDNameMatching(masterPort, 0, bsdName);
|
||||||
|
|
||||||
|
if (matching)
|
||||||
|
{
|
||||||
|
CFMutableDictionaryRef properties;
|
||||||
|
io_service_t devService = IOServiceGetMatchingService(masterPort, matching);
|
||||||
|
|
||||||
|
if (IORegistryEntryCreateCFProperties(devService,
|
||||||
|
&properties,
|
||||||
|
kCFAllocatorDefault, 0) != KERN_SUCCESS)
|
||||||
|
break;
|
||||||
|
if ( CFEqual(
|
||||||
|
CFDictionaryGetValue(properties, CFSTR("Removable")),
|
||||||
|
kCFBooleanTrue)
|
||||||
|
) info->Characteristics |= FILE_REMOVABLE_MEDIA;
|
||||||
|
|
||||||
|
if ( CFEqual(
|
||||||
|
CFDictionaryGetValue(properties, CFSTR("Writable")),
|
||||||
|
kCFBooleanFalse)
|
||||||
|
) info->Characteristics |= FILE_READ_ONLY_DEVICE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
NB : mounted disk image (.img/.dmg) don't provide specific type
|
||||||
|
*/
|
||||||
|
CFStringRef type;
|
||||||
|
if ( (type = CFDictionaryGetValue(properties, CFSTR("Type"))) )
|
||||||
|
{
|
||||||
|
if ( CFStringCompare(type, CFSTR("CD-ROM"), 0) == kCFCompareEqualTo
|
||||||
|
|| CFStringCompare(type, CFSTR("DVD-ROM"), 0) == kCFCompareEqualTo
|
||||||
|
)
|
||||||
|
{
|
||||||
|
info->DeviceType = FILE_DEVICE_CD_ROM_FILE_SYSTEM;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties)
|
||||||
|
CFRelease(properties);
|
||||||
|
}
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static int warned;
|
static int warned;
|
||||||
if (!warned++) FIXME( "device info not properly supported on this platform\n" );
|
if (!warned++) FIXME( "device info not properly supported on this platform\n" );
|
||||||
|
|
|
@ -607,13 +607,15 @@ static void forward(int argc, char **argv, struct options* opts)
|
||||||
* object-file-name -llibrary -nostartfiles -nodefaultlibs
|
* object-file-name -llibrary -nostartfiles -nodefaultlibs
|
||||||
* -nostdlib -s -static -static-libgcc -shared -shared-libgcc
|
* -nostdlib -s -static -static-libgcc -shared -shared-libgcc
|
||||||
* -symbolic -Wl,option -Xlinker option -u symbol
|
* -symbolic -Wl,option -Xlinker option -u symbol
|
||||||
|
* -framework name
|
||||||
*/
|
*/
|
||||||
static int is_linker_arg(const char* arg)
|
static int is_linker_arg(const char* arg)
|
||||||
{
|
{
|
||||||
static const char* link_switches[] =
|
static const char* link_switches[] =
|
||||||
{
|
{
|
||||||
"-nostartfiles", "-nodefaultlibs", "-nostdlib", "-s",
|
"-nostartfiles", "-nodefaultlibs", "-nostdlib", "-s",
|
||||||
"-static", "-static-libgcc", "-shared", "-shared-libgcc", "-symbolic"
|
"-static", "-static-libgcc", "-shared", "-shared-libgcc", "-symbolic",
|
||||||
|
"-framework"
|
||||||
};
|
};
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
|
@ -734,6 +736,10 @@ int main(int argc, char **argv)
|
||||||
else next_is_arg = 1;
|
else next_is_arg = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'f':
|
||||||
|
if (strcmp("-framework", argv[i]) == 0)
|
||||||
|
next_is_arg = 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (next_is_arg) option_arg = argv[i+1];
|
if (next_is_arg) option_arg = argv[i+1];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue