mirror of
https://github.com/reactos/reactos.git
synced 2024-08-29 22:58:34 +00:00
Finished media change support, except for prper volume dismount.
Added dependency checks. svn path=/trunk/; revision=6600
This commit is contained in:
parent
bbb4ce681e
commit
2a681979b8
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
* ReactOS kernel
|
* ReactOS kernel
|
||||||
* Copyright (C) 2002 ReactOS Team
|
* Copyright (C) 2002, 2003 ReactOS Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -16,14 +16,14 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: cdfs.c,v 1.9 2003/09/20 20:31:57 weiden Exp $
|
/* $Id: cdfs.c,v 1.10 2003/11/10 11:32:08 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
* FILE: services/fs/cdfs/cdfs.c
|
* FILE: drivers/fs/cdfs/cdfs.c
|
||||||
* PURPOSE: CDROM (ISO 9660) filesystem driver
|
* PURPOSE: CDROM (ISO 9660) filesystem driver
|
||||||
* PROGRAMMER: Art Yerkes
|
* PROGRAMMER: Art Yerkes
|
||||||
* UPDATE HISTORY:
|
* Eric Kohl
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
@ -58,7 +58,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
UNICODE_STRING DeviceName = UNICODE_STRING_INITIALIZER(L"\\Cdfs");
|
UNICODE_STRING DeviceName = UNICODE_STRING_INITIALIZER(L"\\Cdfs");
|
||||||
|
|
||||||
DPRINT("CDFS 0.0.2\n");
|
DPRINT("CDFS 0.0.3\n");
|
||||||
|
|
||||||
Status = IoCreateDevice(DriverObject,
|
Status = IoCreateDevice(DriverObject,
|
||||||
sizeof(CDFS_GLOBAL_DATA),
|
sizeof(CDFS_GLOBAL_DATA),
|
||||||
|
|
|
@ -141,13 +141,14 @@ typedef struct _CDINFO
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
ERESOURCE VcbResource;
|
||||||
ERESOURCE DirResource;
|
ERESOURCE DirResource;
|
||||||
// ERESOURCE FatResource;
|
|
||||||
|
|
||||||
KSPIN_LOCK FcbListLock;
|
KSPIN_LOCK FcbListLock;
|
||||||
LIST_ENTRY FcbListHead;
|
LIST_ENTRY FcbListHead;
|
||||||
|
|
||||||
PVPB Vpb;
|
PVPB Vpb;
|
||||||
|
PDEVICE_OBJECT VolumeDevice;
|
||||||
PDEVICE_OBJECT StorageDevice;
|
PDEVICE_OBJECT StorageDevice;
|
||||||
PFILE_OBJECT StreamFileObject;
|
PFILE_OBJECT StreamFileObject;
|
||||||
|
|
||||||
|
@ -174,7 +175,6 @@ typedef struct _FCB
|
||||||
WCHAR ShortName[13];
|
WCHAR ShortName[13];
|
||||||
USHORT ShortNameLength;
|
USHORT ShortNameLength;
|
||||||
|
|
||||||
// ERESOURCE PagingIoResource;
|
|
||||||
ERESOURCE MainResource;
|
ERESOURCE MainResource;
|
||||||
|
|
||||||
LIST_ENTRY FcbListEntry;
|
LIST_ENTRY FcbListEntry;
|
||||||
|
@ -346,10 +346,6 @@ CdfsSetInformation(PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
/* fsctl.c */
|
/* fsctl.c */
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
CdfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PCDINFO CdInfo);
|
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
CdfsFileSystemControl(PDEVICE_OBJECT DeviceObject,
|
CdfsFileSystemControl(PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp);
|
PIRP Irp);
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: create.c,v 1.9 2003/11/09 11:20:28 ekohl Exp $
|
/* $Id: create.c,v 1.10 2003/11/10 11:32:08 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -35,8 +35,6 @@
|
||||||
|
|
||||||
#include "cdfs.h"
|
#include "cdfs.h"
|
||||||
|
|
||||||
//#define MEDIA_CHANGE_SUPPORT
|
|
||||||
|
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
|
@ -91,10 +89,6 @@ CdfsOpenFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
PFCB Fcb;
|
PFCB Fcb;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PWSTR AbsFileName = NULL;
|
PWSTR AbsFileName = NULL;
|
||||||
#ifdef MEDIA_CHANGE_SUPPORT
|
|
||||||
ULONG MediaChangeCount = 0;
|
|
||||||
ULONG BufferSize;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DPRINT("CdfsOpenFile(%08lx, %08lx, %S)\n", DeviceExt, FileObject, FileName);
|
DPRINT("CdfsOpenFile(%08lx, %08lx, %S)\n", DeviceExt, FileObject, FileName);
|
||||||
|
|
||||||
|
@ -108,54 +102,44 @@ CdfsOpenFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
FileName = AbsFileName;
|
FileName = AbsFileName;
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
return(Status);
|
return Status;
|
||||||
}
|
}
|
||||||
return(STATUS_UNSUCCESSFUL);
|
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MEDIA_CHANGE_SUPPORT
|
|
||||||
BufferSize = sizeof(ULONG);
|
|
||||||
Status = CdfsDeviceIoControl (DeviceExt->StorageDevice,
|
Status = CdfsDeviceIoControl (DeviceExt->StorageDevice,
|
||||||
IOCTL_CDROM_CHECK_VERIFY,
|
IOCTL_CDROM_CHECK_VERIFY,
|
||||||
NULL,
|
NULL,
|
||||||
0,
|
0,
|
||||||
(PVOID)&MediaChangeCount,
|
NULL,
|
||||||
&BufferSize,
|
0,
|
||||||
TRUE);
|
TRUE);
|
||||||
DPRINT ("Status %lx\n", Status);
|
DPRINT ("Status %lx\n", Status);
|
||||||
if (Status == STATUS_VERIFY_REQUIRED)
|
if (Status == STATUS_VERIFY_REQUIRED)
|
||||||
{
|
{
|
||||||
CDINFO CdInfo;
|
PDEVICE_OBJECT DeviceToVerify;
|
||||||
DPRINT1 ("Media change detected!\n");
|
|
||||||
|
|
||||||
Status = CdfsGetVolumeData (DeviceExt->StorageDevice,
|
DPRINT1 ("Media change detected!\n");
|
||||||
&CdInfo);
|
DPRINT1 ("Device %p\n", DeviceExt->VolumeDevice);
|
||||||
|
|
||||||
|
DeviceToVerify = IoGetDeviceToVerify (PsGetCurrentThread ());
|
||||||
|
IoSetDeviceToVerify (PsGetCurrentThread (),
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
Status = IoVerifyVolume (DeviceToVerify,
|
||||||
|
FALSE);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1 ("CdfsGetVolumeData() failed (Status %lx)\n", Status);
|
DPRINT1 ("Status %lx\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Comparing the serial numbers is not enough */
|
|
||||||
if (DeviceExt->CdInfo.SerialNumber == CdInfo.SerialNumber)
|
|
||||||
{
|
|
||||||
DPRINT1 ("Same CD\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DPRINT1 ("Different CD\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (!NT_SUCCESS(Status))
|
else if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
DPRINT1 ("Status %lx\n", Status);
|
DPRINT1 ("Status %lx\n", Status);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
DPRINT ("MediaChangeCount %lu\n", MediaChangeCount);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//FIXME: Get cannonical path name (remove .'s, ..'s and extra separators)
|
//FIXME: Get cannonical path name (remove .'s, ..'s and extra separators)
|
||||||
|
|
||||||
|
@ -201,8 +185,6 @@ CdfsOpenFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
CdfsCreateFile(PDEVICE_OBJECT DeviceObject,
|
CdfsCreateFile(PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp)
|
PIRP Irp)
|
||||||
|
@ -247,14 +229,14 @@ CdfsCreateFile(PDEVICE_OBJECT DeviceObject,
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
Fcb = FileObject->FsContext;
|
Fcb = FileObject->FsContext;
|
||||||
/*
|
|
||||||
* Check the file has the requested attributes
|
/* Check whether the file has the requested attributes */
|
||||||
*/
|
|
||||||
if (RequestedOptions & FILE_NON_DIRECTORY_FILE && CdfsFCBIsDirectory(Fcb))
|
if (RequestedOptions & FILE_NON_DIRECTORY_FILE && CdfsFCBIsDirectory(Fcb))
|
||||||
{
|
{
|
||||||
CdfsCloseFile (DeviceExt, FileObject);
|
CdfsCloseFile (DeviceExt, FileObject);
|
||||||
return STATUS_FILE_IS_A_DIRECTORY;
|
return STATUS_FILE_IS_A_DIRECTORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RequestedOptions & FILE_DIRECTORY_FILE && !CdfsFCBIsDirectory(Fcb))
|
if (RequestedOptions & FILE_DIRECTORY_FILE && !CdfsFCBIsDirectory(Fcb))
|
||||||
{
|
{
|
||||||
CdfsCloseFile (DeviceExt, FileObject);
|
CdfsCloseFile (DeviceExt, FileObject);
|
||||||
|
@ -269,7 +251,7 @@ CdfsCreateFile(PDEVICE_OBJECT DeviceObject,
|
||||||
Irp->IoStatus.Information = (NT_SUCCESS(Status)) ? FILE_OPENED : 0;
|
Irp->IoStatus.Information = (NT_SUCCESS(Status)) ? FILE_OPENED : 0;
|
||||||
Irp->IoStatus.Status = Status;
|
Irp->IoStatus.Status = Status;
|
||||||
|
|
||||||
return(Status);
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -302,7 +284,7 @@ ByeBye:
|
||||||
IoCompleteRequest(Irp,
|
IoCompleteRequest(Irp,
|
||||||
NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT);
|
NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT);
|
||||||
|
|
||||||
return(Status);
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
/* $Id: fsctl.c,v 1.15 2003/11/09 11:20:28 ekohl Exp $
|
/* $Id: fsctl.c,v 1.16 2003/11/10 11:32:08 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -179,7 +179,7 @@ CdfsGetSVDData(PUCHAR Buffer,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
static NTSTATUS
|
||||||
CdfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
|
CdfsGetVolumeData(PDEVICE_OBJECT DeviceObject,
|
||||||
PCDINFO CdInfo)
|
PCDINFO CdInfo)
|
||||||
{
|
{
|
||||||
|
@ -353,6 +353,7 @@ CdfsMountVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
NewDeviceObject->Vpb = DeviceToMount->Vpb;
|
NewDeviceObject->Vpb = DeviceToMount->Vpb;
|
||||||
|
|
||||||
|
DeviceExt->VolumeDevice = NewDeviceObject;
|
||||||
DeviceExt->StorageDevice = DeviceToMount;
|
DeviceExt->StorageDevice = DeviceToMount;
|
||||||
DeviceExt->StorageDevice->Vpb->DeviceObject = NewDeviceObject;
|
DeviceExt->StorageDevice->Vpb->DeviceObject = NewDeviceObject;
|
||||||
DeviceExt->StorageDevice->Vpb->RealDevice = DeviceExt->StorageDevice;
|
DeviceExt->StorageDevice->Vpb->RealDevice = DeviceExt->StorageDevice;
|
||||||
|
@ -407,8 +408,8 @@ CdfsMountVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
goto ByeBye;
|
goto ByeBye;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExInitializeResourceLite(&DeviceExt->VcbResource);
|
||||||
ExInitializeResourceLite(&DeviceExt->DirResource);
|
ExInitializeResourceLite(&DeviceExt->DirResource);
|
||||||
// ExInitializeResourceLite(&DeviceExt->FatResource);
|
|
||||||
|
|
||||||
KeInitializeSpinLock(&DeviceExt->FcbListLock);
|
KeInitializeSpinLock(&DeviceExt->FcbListLock);
|
||||||
InitializeListHead(&DeviceExt->FcbListHead);
|
InitializeListHead(&DeviceExt->FcbListHead);
|
||||||
|
@ -439,12 +440,13 @@ static NTSTATUS
|
||||||
CdfsVerifyVolume(PDEVICE_OBJECT DeviceObject,
|
CdfsVerifyVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp)
|
PIRP Irp)
|
||||||
{
|
{
|
||||||
|
PDEVICE_EXTENSION DeviceExt;
|
||||||
PDEVICE_OBJECT DeviceToVerify;
|
PDEVICE_OBJECT DeviceToVerify;
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
CDINFO CdInfo;
|
CDINFO CdInfo;
|
||||||
|
|
||||||
DPRINT1("CdfsVerifyVolume() called\n");
|
DPRINT1 ("CdfsVerifyVolume() called\n");
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
if (DeviceObject != CdfsGlobalData->DeviceObject)
|
if (DeviceObject != CdfsGlobalData->DeviceObject)
|
||||||
|
@ -454,25 +456,50 @@ CdfsVerifyVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Stack = IoGetCurrentIrpStackLocation(Irp);
|
DeviceExt = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
Stack = IoGetCurrentIrpStackLocation (Irp);
|
||||||
DeviceToVerify = Stack->Parameters.VerifyVolume.DeviceObject;
|
DeviceToVerify = Stack->Parameters.VerifyVolume.DeviceObject;
|
||||||
|
|
||||||
DPRINT("Device object %p Device to verify %p\n", DeviceObject, DeviceToVerify);
|
ExAcquireResourceExclusiveLite (&DeviceExt->VcbResource,
|
||||||
|
TRUE);
|
||||||
|
|
||||||
CdInfo.SerialNumber = ~DeviceToVerify->Vpb->SerialNumber;
|
if (!(DeviceToVerify->Flags & DO_VERIFY_VOLUME))
|
||||||
|
|
||||||
Status = CdfsGetVolumeData(DeviceToVerify, &CdInfo);
|
|
||||||
|
|
||||||
if (NT_SUCCESS(Status))
|
|
||||||
{
|
{
|
||||||
DPRINT("Current serial number %08lx Vpb serial number %08lx\n",
|
DPRINT1 ("Volume has been verified!\n");
|
||||||
CdInfo.SerialNumber, DeviceToVerify->Vpb->SerialNumber);
|
ExReleaseResourceLite (&DeviceExt->VcbResource);
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
DPRINT1 ("Device object %p Device to verify %p\n", DeviceObject, DeviceToVerify);
|
||||||
|
|
||||||
|
Status = CdfsGetVolumeData (DeviceToVerify,
|
||||||
|
&CdInfo);
|
||||||
|
if (NT_SUCCESS(Status) &&
|
||||||
|
CdInfo.SerialNumber == DeviceToVerify->Vpb->SerialNumber &&
|
||||||
|
CdInfo.VolumeLabelLength == DeviceToVerify->Vpb->VolumeLabelLength &&
|
||||||
|
!wcsncmp (CdInfo.VolumeLabel, DeviceToVerify->Vpb->VolumeLabel, CdInfo.VolumeLabelLength))
|
||||||
|
{
|
||||||
|
DPRINT1 ("Same volume!\n");
|
||||||
|
|
||||||
|
/* FIXME: Flush and purge metadata */
|
||||||
|
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DPRINT1 ("Different volume!\n");
|
||||||
|
|
||||||
|
/* FIXME: force volume dismount */
|
||||||
|
|
||||||
if (CdInfo.SerialNumber != DeviceToVerify->Vpb->SerialNumber)
|
|
||||||
Status = STATUS_WRONG_VOLUME;
|
Status = STATUS_WRONG_VOLUME;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(Status);
|
DeviceToVerify->Flags &= ~DO_VERIFY_VOLUME;
|
||||||
|
|
||||||
|
ExReleaseResourceLite (&DeviceExt->VcbResource);
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -490,7 +517,7 @@ CdfsFileSystemControl(PDEVICE_OBJECT DeviceObject,
|
||||||
switch (Stack->MinorFunction)
|
switch (Stack->MinorFunction)
|
||||||
{
|
{
|
||||||
case IRP_MN_USER_FS_REQUEST:
|
case IRP_MN_USER_FS_REQUEST:
|
||||||
DPRINT("CDFS: IRP_MN_USER_FS_REQUEST\n");
|
DPRINT1("CDFS: IRP_MN_USER_FS_REQUEST\n");
|
||||||
Status = STATUS_INVALID_DEVICE_REQUEST;
|
Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -505,7 +532,7 @@ CdfsFileSystemControl(PDEVICE_OBJECT DeviceObject,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
DPRINT("CDFS FSC: MinorFunction %d\n", Stack->MinorFunction);
|
DPRINT1("CDFS FSC: MinorFunction %d\n", Stack->MinorFunction);
|
||||||
Status = STATUS_INVALID_DEVICE_REQUEST;
|
Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $Id: makefile,v 1.5 2003/04/05 09:37:42 chorns Exp $
|
# $Id: makefile,v 1.6 2003/11/10 11:32:08 ekohl Exp $
|
||||||
|
|
||||||
PATH_TO_TOP = ../../..
|
PATH_TO_TOP = ../../..
|
||||||
|
|
||||||
|
@ -11,8 +11,12 @@ TARGET_NAME = cdfs
|
||||||
TARGET_OBJECTS = $(TARGET_NAME).o close.o common.o create.o dirctl.o \
|
TARGET_OBJECTS = $(TARGET_NAME).o close.o common.o create.o dirctl.o \
|
||||||
fcb.o finfo.o fsctl.o misc.o rw.o volinfo.o cleanup.o
|
fcb.o finfo.o fsctl.o misc.o rw.o volinfo.o cleanup.o
|
||||||
|
|
||||||
|
DEP_OBJECTS = $(TARGET_OBJECTS)
|
||||||
|
|
||||||
include $(PATH_TO_TOP)/rules.mak
|
include $(PATH_TO_TOP)/rules.mak
|
||||||
|
|
||||||
include $(TOOLS_PATH)/helper.mk
|
include $(TOOLS_PATH)/helper.mk
|
||||||
|
|
||||||
|
include $(TOOLS_PATH)/depend.mk
|
||||||
|
|
||||||
# EOF
|
# EOF
|
||||||
|
|
Loading…
Reference in a new issue