Added more tweaking capabilities in dsound channel.
ISDN privacy parameters made similar to SIP. git-svn-id: http://yate.null.ro/svn/yate/trunk@666 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
0321a1f4f8
commit
1c16475e94
|
@ -40,13 +40,14 @@
|
|||
using namespace TelEngine;
|
||||
|
||||
// we should use the primary sound buffer else we will lose sound while we have no input focus
|
||||
#define USE_PRIMARY_BUFFER
|
||||
static bool s_primary = true;
|
||||
|
||||
// 20ms chunk, 100ms buffer
|
||||
#define CHUNK_SIZE 320
|
||||
#define MIN_SIZE (3*CHUNK_SIZE)
|
||||
#define BUF_SIZE (4*CHUNK_SIZE)
|
||||
#define MAX_SIZE (5*CHUNK_SIZE)
|
||||
static unsigned int s_chunk = CHUNK_SIZE;
|
||||
static unsigned int s_minsize = 2*CHUNK_SIZE;
|
||||
static unsigned int s_bufsize = 3*CHUNK_SIZE;
|
||||
static unsigned int s_maxsize = 4*CHUNK_SIZE;
|
||||
|
||||
class DSoundSource : public DataSource
|
||||
{
|
||||
|
@ -181,11 +182,7 @@ bool DSoundPlay::init()
|
|||
HWND wnd = GetForegroundWindow();
|
||||
if (!wnd)
|
||||
wnd = GetDesktopWindow();
|
||||
#ifdef USE_PRIMARY_BUFFER
|
||||
if (FAILED(hr = m_ds->SetCooperativeLevel(wnd,DSSCL_WRITEPRIMARY))) {
|
||||
#else
|
||||
if (FAILED(hr = m_ds->SetCooperativeLevel(wnd,DSSCL_EXCLUSIVE))) {
|
||||
#endif
|
||||
if (FAILED(hr = m_ds->SetCooperativeLevel(wnd,s_primary ? DSSCL_WRITEPRIMARY : DSSCL_EXCLUSIVE))) {
|
||||
Debug(DebugGoOn,"Could not set the DirectSound cooperative level, code 0x%X",hr);
|
||||
return false;
|
||||
}
|
||||
|
@ -200,23 +197,23 @@ bool DSoundPlay::init()
|
|||
DSBUFFERDESC bdesc;
|
||||
ZeroMemory(&bdesc, sizeof(bdesc));
|
||||
bdesc.dwSize = sizeof(bdesc);
|
||||
#ifdef USE_PRIMARY_BUFFER
|
||||
bdesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_STICKYFOCUS;
|
||||
#else
|
||||
bdesc.dwFlags = DSBCAPS_LOCSOFTWARE ;
|
||||
bdesc.dwBufferBytes = BUF_SIZE;
|
||||
bdesc.lpwfxFormat = &fmt;
|
||||
#endif
|
||||
if (s_primary)
|
||||
bdesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_STICKYFOCUS;
|
||||
else {
|
||||
bdesc.dwFlags = DSBCAPS_GLOBALFOCUS;
|
||||
// we have to set format when creating secondary buffers
|
||||
bdesc.dwBufferBytes = s_bufsize;
|
||||
bdesc.lpwfxFormat = &fmt;
|
||||
}
|
||||
if (FAILED(hr = m_ds->CreateSoundBuffer(&bdesc, &m_dsb, NULL)) || !m_dsb) {
|
||||
Debug(DebugGoOn,"Could not create the DirectSound buffer, code 0x%X",hr);
|
||||
return false;
|
||||
}
|
||||
#ifdef USE_PRIMARY_BUFFER
|
||||
if (FAILED(hr = m_dsb->SetFormat(&fmt))) {
|
||||
// format can be changed only for primary buffers
|
||||
if (s_primary && FAILED(hr = m_dsb->SetFormat(&fmt))) {
|
||||
Debug(DebugGoOn,"Could not set the DirectSound buffer format, code 0x%X",hr);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
if (FAILED(hr = m_dsb->GetFormat(&fmt,sizeof(fmt),0))) {
|
||||
Debug(DebugGoOn,"Could not get the DirectSound buffer format, code 0x%X",hr);
|
||||
return false;
|
||||
|
@ -259,19 +256,19 @@ void DSoundPlay::run()
|
|||
while (m_owner) {
|
||||
msleep(1,true);
|
||||
if (first) {
|
||||
if (m_buf.length() < MIN_SIZE)
|
||||
if (m_buf.length() < s_minsize)
|
||||
continue;
|
||||
first = false;
|
||||
m_dsb->GetCurrentPosition(NULL,&m_writePos);
|
||||
Debug(&__plugin,DebugAll,"DSoundPlay has %u in buffer and starts playing at %u",
|
||||
m_buf.length(),m_writePos);
|
||||
}
|
||||
while (m_dsb && (m_buf.length() >= CHUNK_SIZE)) {
|
||||
while (m_dsb && (m_buf.length() >= s_chunk)) {
|
||||
void* buf = 0;
|
||||
void* buf2 = 0;
|
||||
DWORD len = 0;
|
||||
DWORD len2 = 0;
|
||||
HRESULT hr = m_dsb->Lock(m_writePos,CHUNK_SIZE,&buf,&len,&buf2,&len2,0);
|
||||
HRESULT hr = m_dsb->Lock(m_writePos,s_chunk,&buf,&len,&buf2,&len2,0);
|
||||
if (FAILED(hr)) {
|
||||
m_writePos = 0;
|
||||
if ((hr == DSERR_BUFFERLOST) && SUCCEEDED(m_dsb->Restore())) {
|
||||
|
@ -292,10 +289,10 @@ void DSoundPlay::run()
|
|||
if (buf2)
|
||||
::memcpy(buf2,((const char*)m_buf.data())+len,len2);
|
||||
m_dsb->Unlock(buf,len,buf2,len2);
|
||||
m_writePos += CHUNK_SIZE;
|
||||
m_writePos += s_chunk;
|
||||
if (m_writePos >= m_buffSize)
|
||||
m_writePos -= m_buffSize;
|
||||
m_buf.cut(-CHUNK_SIZE);
|
||||
m_buf.cut(-(int)s_chunk);
|
||||
unlock();
|
||||
XDebug(&__plugin,DebugAll,"Locked %p,%d %p,%d",buf,len,buf2,len2);
|
||||
}
|
||||
|
@ -322,7 +319,7 @@ void DSoundPlay::put(const DataBlock& data)
|
|||
if (!m_dsb)
|
||||
return;
|
||||
lock();
|
||||
if (m_buf.length() + data.length() <= MAX_SIZE)
|
||||
if (m_buf.length() + data.length() <= s_maxsize)
|
||||
m_buf += data;
|
||||
#ifdef DDEBUG
|
||||
else
|
||||
|
@ -332,7 +329,7 @@ void DSoundPlay::put(const DataBlock& data)
|
|||
}
|
||||
|
||||
DSoundRec::DSoundRec(DSoundSource* owner, LPGUID device)
|
||||
: Thread("DirectSound Rec"),
|
||||
: Thread("DirectSound Rec",High),
|
||||
m_owner(owner), m_device(device), m_ds(0), m_dsb(0),
|
||||
m_buffSize(0), m_readPos(0)
|
||||
{
|
||||
|
@ -372,7 +369,7 @@ bool DSoundRec::init()
|
|||
ZeroMemory(&bdesc, sizeof(bdesc));
|
||||
bdesc.dwSize = sizeof(bdesc);
|
||||
bdesc.dwFlags = DSCBCAPS_WAVEMAPPED;
|
||||
bdesc.dwBufferBytes = BUF_SIZE;
|
||||
bdesc.dwBufferBytes = s_bufsize;
|
||||
bdesc.lpwfxFormat = &fmt;
|
||||
if (FAILED(hr = m_ds->CreateCaptureBuffer(&bdesc, &m_dsb, NULL)) || !m_dsb) {
|
||||
Debug(DebugGoOn,"Could not create the DirectSoundCapture buffer, code 0x%X",hr);
|
||||
|
@ -422,13 +419,13 @@ void DSoundRec::run()
|
|||
if (pos < m_readPos)
|
||||
pos += m_buffSize;
|
||||
pos -= m_readPos;
|
||||
if (pos < CHUNK_SIZE)
|
||||
if (pos < s_chunk)
|
||||
continue;
|
||||
void* buf = 0;
|
||||
void* buf2 = 0;
|
||||
DWORD len = 0;
|
||||
DWORD len2 = 0;
|
||||
if (FAILED(m_dsb->Lock(m_readPos,CHUNK_SIZE,&buf,&len,&buf2,&len2,0)))
|
||||
if (FAILED(m_dsb->Lock(m_readPos,s_chunk,&buf,&len,&buf2,&len2,0)))
|
||||
continue;
|
||||
DataBlock data(0,len+len2);
|
||||
::memcpy(data.data(),buf,len);
|
||||
|
@ -629,6 +626,19 @@ void SoundDriver::initialize()
|
|||
setup(0,true); // no need to install notifications
|
||||
Driver::initialize();
|
||||
if (!m_handler) {
|
||||
Configuration cfg(Engine::configFile("dsoundchan"));
|
||||
s_chunk = cfg.getIntValue("general","chunk",CHUNK_SIZE);
|
||||
// make sure the chunk is even sized
|
||||
s_chunk &= ~1;
|
||||
// and set some decent limits for it (5-100 ms)
|
||||
if (s_chunk < 80)
|
||||
s_chunk = 80;
|
||||
if (s_chunk > 1600)
|
||||
s_chunk = 1600;
|
||||
s_minsize = cfg.getIntValue("general","minsize",2*s_chunk);
|
||||
s_bufsize = cfg.getIntValue("general","bufsize",3*s_chunk);
|
||||
s_maxsize = cfg.getIntValue("general","maxsize",4*s_chunk);
|
||||
s_primary = cfg.getBoolValue("general","primary",true);
|
||||
m_handler = new AttachHandler;
|
||||
Engine::install(m_handler);
|
||||
}
|
||||
|
|
|
@ -24,6 +24,19 @@
|
|||
|
||||
#include <modules/libypri.h>
|
||||
|
||||
/* Individual bit groups in number presentation - Q931 octet 3a bits 7,6 */
|
||||
#define PRESENTATION_BIT_MASK 0x60
|
||||
#define PRESENTATION_ALLOWED 0x00
|
||||
#define PRESENTATION_RESTRICTED 0x20
|
||||
#define PRESENTATION_UNAVAILABLE 0x40
|
||||
|
||||
/* Individual bit groups in number screening - Q931 octet 3a bits 2,1 */
|
||||
#define SCREENING_BIT_MASK 0x03
|
||||
#define SCREENING_USER_NOT_SCREENED 0x00
|
||||
#define SCREENING_USER_PASSED 0x01
|
||||
#define SCREENING_USER_FAILED 0x02
|
||||
#define SCREENING_NETWORK_PROVIDED 0x03
|
||||
|
||||
extern "C" {
|
||||
extern int q931_setup(struct pri *pri, q931_call *c, struct pri_sr *req);
|
||||
};
|
||||
|
@ -116,7 +129,7 @@ static TokenDict dict_str2dplan[] = {
|
|||
{ 0, -1 }
|
||||
};
|
||||
|
||||
/* Presentation */
|
||||
/* Presentation and screening */
|
||||
static TokenDict dict_str2pres[] = {
|
||||
{ "allow_user_not_screened", PRES_ALLOWED_USER_NUMBER_NOT_SCREENED },
|
||||
{ "allow_user_passed", PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN },
|
||||
|
@ -130,6 +143,7 @@ static TokenDict dict_str2pres[] = {
|
|||
{ 0, -1 }
|
||||
};
|
||||
|
||||
|
||||
#ifdef PRI_NSF_NONE
|
||||
#define YATE_NSF_DEFAULT PRI_NSF_NONE
|
||||
#else
|
||||
|
@ -824,7 +838,15 @@ bool PriChan::call(Message &msg, const char *called)
|
|||
char *caller = (char *)msg.getValue("caller");
|
||||
int callerplan = msg.getIntValue("callerplan",dict_str2dplan,m_span->dplan());
|
||||
char *callername = (char *)msg.getValue("callername");
|
||||
int callerpres = msg.getIntValue("callerpres",dict_str2pres,m_span->pres());
|
||||
int callerpres = m_span->pres();
|
||||
String tmp = msg.getValue("screened");
|
||||
if (tmp.isBoolean())
|
||||
callerpres = (callerpres & ~SCREENING_BIT_MASK) |
|
||||
(tmp.toBoolean() ? SCREENING_USER_PASSED : SCREENING_USER_NOT_SCREENED);
|
||||
tmp = msg.getValue("privacy");
|
||||
if (tmp && tmp.toBoolean(true))
|
||||
callerpres = (callerpres & ~PRESENTATION_BIT_MASK) | PRESENTATION_RESTRICTED;
|
||||
callerpres = msg.getIntValue("presentation",dict_str2pres,callerpres);
|
||||
int calledplan = msg.getIntValue("calledplan",dict_str2dplan,m_span->dplan());
|
||||
Debug(this,DebugAll,"Caller='%s' name='%s' plan=%s pres=%s, Called plan=%s",
|
||||
caller,callername,lookup(callerplan,dict_str2dplan),
|
||||
|
@ -882,6 +904,8 @@ void PriChan::ring(pri_event_ring &ev)
|
|||
openData(lookup(ev.layer1,dict_str2law),0);
|
||||
|
||||
m = message("call.preroute");
|
||||
m->addParam("span",String(m_span->span()));
|
||||
m->addParam("channel",String(m_chan));
|
||||
if (m_span->overlapped() && !ev.complete && (::strlen(ev.callednum) < m_span->overlapped())) {
|
||||
::pri_need_more_info(m_span->pri(),m_call,m_chan,!isISDN());
|
||||
m->addParam("overlapped","yes");
|
||||
|
@ -890,6 +914,16 @@ void PriChan::ring(pri_event_ring &ev)
|
|||
m->addParam("caller",ev.callingnum);
|
||||
if (ev.callednum[0])
|
||||
m->addParam("called",ev.callednum);
|
||||
if ((ev.callingpres & PRESENTATION_BIT_MASK) == PRESENTATION_RESTRICTED)
|
||||
m->addParam("privacy","name");
|
||||
switch (ev.callingpres & SCREENING_BIT_MASK) {
|
||||
case SCREENING_USER_PASSED:
|
||||
m->addParam("screened","yes");
|
||||
break;
|
||||
case SCREENING_USER_NOT_SCREENED:
|
||||
m->addParam("screened","no");
|
||||
break;
|
||||
}
|
||||
const char* dataLaw = "slin";
|
||||
switch (ev.layer1) {
|
||||
case PRI_LAYER_1_ALAW:
|
||||
|
|
|
@ -191,6 +191,9 @@ Package=<4>
|
|||
Begin Project Dependency
|
||||
Project_Dep_Name _ilbccodec
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name _dbpbx
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
@ -312,6 +315,24 @@ Package=<4>
|
|||
|
||||
###############################################################################
|
||||
|
||||
Project: "_dbpbx"=.\_dbpbx.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name Libyate
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name libypbx
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "_dsoundchan"=.\_dsoundchan.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
@ -633,6 +654,21 @@ Package=<4>
|
|||
|
||||
###############################################################################
|
||||
|
||||
Project: "libypbx"=.\libypbx.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name Libyate
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "libypri"=.\libypri.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
|
|
|
@ -0,0 +1,113 @@
|
|||
# Microsoft Developer Studio Project File - Name="_dbpbx" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
|
||||
CFG=_dbpbx - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "_dbpbx.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "_dbpbx.mak" CFG="_dbpbx - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "_dbpbx - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "_dbpbx - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "_dbpbx - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "_dbpbx___Win32_Release"
|
||||
# PROP BASE Intermediate_Dir "_dbpbx___Win32_Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release\modules"
|
||||
# PROP Ignore_Export_Lib 1
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_dbpbx_EXPORTS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O2 /I "." /I ".." /I "..\contrib\ypbx" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBYPBX_STATIC" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||
# ADD LINK32 kernel32.lib Release/libypbx.lib /nologo /dll /machine:I386 /out:"Release/dbpbx.yate"
|
||||
|
||||
!ELSEIF "$(CFG)" == "_dbpbx - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "_dbpbx___Win32_Debug"
|
||||
# PROP BASE Intermediate_Dir "_dbpbx___Win32_Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug\modules"
|
||||
# PROP Ignore_Export_Lib 1
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_dbpbx_EXPORTS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /I ".." /I "..\contrib\ypbx" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBYPBX_STATIC" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib Debug/libypbx.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"Debug/dbpbx.yate" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "_dbpbx - Win32 Release"
|
||||
# Name "_dbpbx - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\modules\dbpbx.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\version.rc
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
|
@ -0,0 +1,102 @@
|
|||
# Microsoft Developer Studio Project File - Name="libypbx" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=libypbx - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "libypbx.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "libypbx.mak" CFG="libypbx - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "libypbx - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "libypbx - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "libypbx - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "libypbx___Win32_Release"
|
||||
# PROP BASE Intermediate_Dir "libypbx___Win32_Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release\ypbx"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O2 /I "." /I ".." /I "..\contrib\ypbx" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LIBYPBX_STATIC" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "libypbx - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "libypbx___Win32_Debug"
|
||||
# PROP BASE Intermediate_Dir "libypbx___Win32_Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug\ypbx"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /I ".." /I "..\contrib\ypbx" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LIBYPBX_STATIC" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "libypbx - Win32 Release"
|
||||
# Name "libypbx - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\contrib\ypbx\multiroute.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\contrib\ypbx\yatepbx.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
|
@ -41,7 +41,7 @@ RSC=rc.exe
|
|||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O2 /I "." /I ".." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /O2 /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LIBYPRI_STATIC" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
|
@ -65,7 +65,7 @@ LIB32=link.exe -lib
|
|||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /Zi /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LIBYPRI_STATIC" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
|
|
Loading…
Reference in New Issue