Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
abc
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
abc
Commits
c0db4d2a
Commit
c0db4d2a
authored
Oct 27, 2014
by
Alan Mishchenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changes to enable building external code.
parent
736c2245
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
381 additions
and
379 deletions
+381
-379
Makefile
+1
-1
abclib.dsp
+4
-0
src/base/main/main.c
+6
-378
src/base/main/mainReal.c
+369
-0
src/base/main/module.make
+1
-0
No files found.
Makefile
View file @
c0db4d2a
...
...
@@ -12,7 +12,7 @@ $(info $(MSG_PREFIX)Using LD=$(LD))
PROG
:=
abc
MODULES
:=
\
$
(
wildcard src/ext
)
src/misc/ext
\
$
(
wildcard src/ext
*
)
src/misc/ext
\
src/base/abc src/base/abci src/base/cmd src/base/io
\
src/base/main src/base/ver src/base/wlc src/base/test
\
src/bdd/cudd src/bdd/dsd src/bdd/epd src/bdd/mtr src/bdd/parse
\
...
...
abclib.dsp
View file @
c0db4d2a
...
...
@@ -691,6 +691,10 @@ SOURCE=.\src\base\main\mainLib.c
# End Source File
# Begin Source File
SOURCE=.\src\base\main\mainReal.c
# End Source File
# Begin Source File
SOURCE=.\src\base\main\mainUtils.c
# End Source File
# End Group
...
...
src/base/main/main.c
View file @
c0db4d2a
/*////////////////////////////////////////////////////////////////////////////
#include "base/main/mainInt.h"
ABC: System for Sequential Synthesis and Verification
int
Abc_RealMain
(
int
argc
,
char
*
argv
[]);
http://www.eecs.berkeley.edu/~alanmi/abc/
//static Abc_FrameInitializer_t abc2_initializer = { Abc2_Init, Abc2_End };
Copyright (c) The Regents of the University of California. All rights reserved.
Permission is hereby granted, without written agreement and without license or
royalty fees, to use, copy, modify, and distribute this software and its
documentation for any purpose, provided that the above copyright notice and
the following two paragraphs appear in all copies of this software.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
////////////////////////////////////////////////////////////////////////////*/
/**CFile****************************************************************
FileName [main.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [The main package.]
Synopsis [Here everything starts.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - June 20, 2005.]
Revision [$Id: main.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
***********************************************************************/
#ifdef ABC_PYTHON_EMBED
#include <Python.h>
#endif
/* ABC_PYTHON_EMBED */
#include "base/abc/abc.h"
#include "mainInt.h"
ABC_NAMESPACE_IMPL_START
// this line should be included in the library project
//#define ABC_LIB
//#define ABC_USE_BINARY 1
////////////////////////////////////////////////////////////////////////
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
static
int
TypeCheck
(
Abc_Frame_t
*
pAbc
,
const
char
*
s
);
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
#ifndef ABC_LIB
/**Function*************************************************************
Synopsis [The main() procedure.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int
Abc_RealMain
(
int
argc
,
char
*
argv
[]
)
int
main
(
int
argc
,
char
*
argv
[])
{
Abc_Frame_t
*
pAbc
;
char
sCommandUsr
[
ABC_MAX_STR
]
=
{
0
},
sCommandTmp
[
ABC_MAX_STR
],
sReadCmd
[
1000
],
sWriteCmd
[
1000
];
const
char
*
sOutFile
,
*
sInFile
;
char
*
sCommand
;
int
fStatus
=
0
;
int
c
,
fInitSource
,
fInitRead
,
fFinalWrite
;
enum
{
INTERACTIVE
,
// interactive mode
BATCH
,
// batch mode, run a command and quit
BATCH_THEN_INTERACTIVE
,
// run a command, then back to interactive mode
BATCH_QUIET
// as in batch mode, but don't echo the command
}
fBatch
;
// added to detect memory leaks
// watch for {,,msvcrtd.dll}*__p__crtBreakAlloc()
// (http://support.microsoft.com/kb/151585)
#if defined(_DEBUG) && defined(_MSC_VER)
_CrtSetDbgFlag
(
_CRTDBG_ALLOC_MEM_DF
|
_CRTDBG_LEAK_CHECK_DF
);
#endif
// get global frame (singleton pattern)
// will be initialized on first call
pAbc
=
Abc_FrameGetGlobalFrame
();
pAbc
->
sBinary
=
argv
[
0
];
#ifdef ABC_PYTHON_EMBED
{
PyObject
*
pModule
;
void
init_pyabc
(
void
);
Py_SetProgramName
(
argv
[
0
]);
Py_NoSiteFlag
=
1
;
Py_Initialize
();
init_pyabc
();
pModule
=
PyImport_ImportModule
(
"pyabc"
);
if
(
pModule
)
{
Py_DECREF
(
pModule
);
}
else
{
fprintf
(
pAbc
->
Err
,
"error: pyabc.py not found. PYTHONPATH may not be set properly.
\n
"
);
}
}
#endif
/* ABC_PYTHON_EMBED */
// default options
fBatch
=
INTERACTIVE
;
fInitSource
=
1
;
fInitRead
=
0
;
fFinalWrite
=
0
;
sInFile
=
sOutFile
=
NULL
;
sprintf
(
sReadCmd
,
"read"
);
sprintf
(
sWriteCmd
,
"write"
);
Extra_UtilGetoptReset
();
while
((
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"c:q:C:hf:F:o:st:T:xb"
))
!=
EOF
)
{
switch
(
c
)
{
case
'c'
:
strcpy
(
sCommandUsr
,
globalUtilOptarg
);
fBatch
=
BATCH
;
break
;
case
'q'
:
strcpy
(
sCommandUsr
,
globalUtilOptarg
);
fBatch
=
BATCH_QUIET
;
break
;
case
'C'
:
strcpy
(
sCommandUsr
,
globalUtilOptarg
);
fBatch
=
BATCH_THEN_INTERACTIVE
;
break
;
case
'f'
:
sprintf
(
sCommandUsr
,
"source %s"
,
globalUtilOptarg
);
fBatch
=
BATCH
;
break
;
case
'F'
:
sprintf
(
sCommandUsr
,
"source -x %s"
,
globalUtilOptarg
);
fBatch
=
BATCH
;
break
;
// Abc_FrameAddInitializer(&abc2_initializer);
case
'h'
:
goto
usage
;
break
;
case
'o'
:
sOutFile
=
globalUtilOptarg
;
fFinalWrite
=
1
;
break
;
case
's'
:
fInitSource
=
0
;
break
;
case
't'
:
if
(
TypeCheck
(
pAbc
,
globalUtilOptarg
)
)
{
if
(
!
strcmp
(
globalUtilOptarg
,
"none"
)
==
0
)
{
fInitRead
=
1
;
sprintf
(
sReadCmd
,
"read_%s"
,
globalUtilOptarg
);
}
}
else
{
goto
usage
;
}
fBatch
=
BATCH
;
break
;
case
'T'
:
if
(
TypeCheck
(
pAbc
,
globalUtilOptarg
)
)
{
if
(
!
strcmp
(
globalUtilOptarg
,
"none"
)
==
0
)
{
fFinalWrite
=
1
;
sprintf
(
sWriteCmd
,
"write_%s"
,
globalUtilOptarg
);
}
}
else
{
goto
usage
;
}
fBatch
=
BATCH
;
break
;
case
'x'
:
fFinalWrite
=
0
;
fInitRead
=
0
;
fBatch
=
BATCH
;
break
;
case
'b'
:
Abc_FrameSetBridgeMode
();
break
;
default:
goto
usage
;
}
}
if
(
Abc_FrameIsBridgeMode
()
)
{
extern
Gia_Man_t
*
Gia_ManFromBridge
(
FILE
*
pFile
,
Vec_Int_t
**
pvInit
);
pAbc
->
pGia
=
Gia_ManFromBridge
(
stdin
,
NULL
);
}
else
if
(
fBatch
!=
INTERACTIVE
&&
fBatch
!=
BATCH_QUIET
&&
sCommandUsr
[
0
]
)
Abc_Print
(
1
,
"ABC command line:
\"
%s
\"
.
\n\n
"
,
sCommandUsr
);
if
(
fBatch
!=
INTERACTIVE
)
{
pAbc
->
fBatchMode
=
1
;
if
(
argc
-
globalUtilOptind
==
0
)
{
sInFile
=
NULL
;
}
else
if
(
argc
-
globalUtilOptind
==
1
)
{
fInitRead
=
1
;
sInFile
=
argv
[
globalUtilOptind
];
}
else
{
Abc_UtilsPrintUsage
(
pAbc
,
argv
[
0
]
);
}
// source the resource file
if
(
fInitSource
)
{
Abc_UtilsSource
(
pAbc
);
}
fStatus
=
0
;
if
(
fInitRead
&&
sInFile
)
{
sprintf
(
sCommandTmp
,
"%s %s"
,
sReadCmd
,
sInFile
);
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommandTmp
);
}
if
(
fStatus
==
0
)
{
/* cmd line contains `source <file>' */
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommandUsr
);
if
(
(
fStatus
==
0
||
fStatus
==
-
1
)
&&
fFinalWrite
&&
sOutFile
)
{
sprintf
(
sCommandTmp
,
"%s %s"
,
sWriteCmd
,
sOutFile
);
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommandTmp
);
}
}
if
(
fBatch
==
BATCH_THEN_INTERACTIVE
){
fBatch
=
INTERACTIVE
;
pAbc
->
fBatchMode
=
0
;
}
}
if
(
fBatch
==
INTERACTIVE
)
{
// start interactive mode
// print the hello line
Abc_UtilsPrintHello
(
pAbc
);
// print history of the recent commands
Cmd_HistoryPrint
(
pAbc
,
10
);
// source the resource file
if
(
fInitSource
)
{
Abc_UtilsSource
(
pAbc
);
}
// execute commands given by the user
while
(
!
feof
(
stdin
)
)
{
// print command line prompt and
// get the command from the user
sCommand
=
Abc_UtilsGetUsersInput
(
pAbc
);
// execute the user's command
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommand
);
// stop if the user quitted or an error occurred
if
(
fStatus
==
-
1
||
fStatus
==
-
2
)
break
;
}
}
#ifdef ABC_PYTHON_EMBED
{
Py_Finalize
();
}
#endif
/* ABC_PYTHON_EMBED */
// if the memory should be freed, quit packages
// if ( fStatus < 0 )
{
Abc_Stop
();
}
return
0
;
usage:
Abc_UtilsPrintHello
(
pAbc
);
Abc_UtilsPrintUsage
(
pAbc
,
argv
[
0
]
);
return
1
;
}
#endif
/**Function********************************************************************
Synopsis [Returns 1 if s is a file type recognized, else returns 0.]
Description [Returns 1 if s is a file type recognized by ABC, else returns 0.
Recognized types are "blif", "bench", "pla", and "none".]
SideEffects []
******************************************************************************/
static
int
TypeCheck
(
Abc_Frame_t
*
pAbc
,
const
char
*
s
)
{
if
(
strcmp
(
s
,
"blif"
)
==
0
)
return
1
;
else
if
(
strcmp
(
s
,
"bench"
)
==
0
)
return
1
;
else
if
(
strcmp
(
s
,
"pla"
)
==
0
)
return
1
;
else
if
(
strcmp
(
s
,
"none"
)
==
0
)
return
1
;
else
{
fprintf
(
pAbc
->
Err
,
"unknown type %s
\n
"
,
s
);
return
0
;
}
}
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
ABC_NAMESPACE_IMPL_END
#if defined(ABC_USE_BINARY)
int
main_
(
int
argc
,
char
*
argv
[]
)
#else
int
main
(
int
argc
,
char
*
argv
[]
)
#endif
{
return
ABC_NAMESPACE_PREFIX
Abc_RealMain
(
argc
,
argv
);
return
Abc_RealMain
(
argc
,
argv
);
}
src/base/main/mainReal.c
0 → 100644
View file @
c0db4d2a
/*////////////////////////////////////////////////////////////////////////////
ABC: System for Sequential Synthesis and Verification
http://www.eecs.berkeley.edu/~alanmi/abc/
Copyright (c) The Regents of the University of California. All rights reserved.
Permission is hereby granted, without written agreement and without license or
royalty fees, to use, copy, modify, and distribute this software and its
documentation for any purpose, provided that the above copyright notice and
the following two paragraphs appear in all copies of this software.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
////////////////////////////////////////////////////////////////////////////*/
/**CFile****************************************************************
FileName [main.c]
SystemName [ABC: Logic synthesis and verification system.]
PackageName [The main package.]
Synopsis [Here everything starts.]
Author [Alan Mishchenko]
Affiliation [UC Berkeley]
Date [Ver. 1.0. Started - June 20, 2005.]
Revision [$Id: main.c,v 1.00 2005/06/20 00:00:00 alanmi Exp $]
***********************************************************************/
#ifdef ABC_PYTHON_EMBED
#include <Python.h>
#endif
/* ABC_PYTHON_EMBED */
#include "base/abc/abc.h"
#include "mainInt.h"
ABC_NAMESPACE_IMPL_START
////////////////////////////////////////////////////////////////////////
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
static
int
TypeCheck
(
Abc_Frame_t
*
pAbc
,
const
char
*
s
);
////////////////////////////////////////////////////////////////////////
/// FUNCTION DEFINITIONS ///
////////////////////////////////////////////////////////////////////////
/**Function*************************************************************
Synopsis [The main() procedure.]
Description []
SideEffects []
SeeAlso []
***********************************************************************/
int
Abc_RealMain
(
int
argc
,
char
*
argv
[]
)
{
Abc_Frame_t
*
pAbc
;
char
sCommandUsr
[
ABC_MAX_STR
]
=
{
0
},
sCommandTmp
[
ABC_MAX_STR
],
sReadCmd
[
1000
],
sWriteCmd
[
1000
];
const
char
*
sOutFile
,
*
sInFile
;
char
*
sCommand
;
int
fStatus
=
0
;
int
c
,
fInitSource
,
fInitRead
,
fFinalWrite
;
enum
{
INTERACTIVE
,
// interactive mode
BATCH
,
// batch mode, run a command and quit
BATCH_THEN_INTERACTIVE
,
// run a command, then back to interactive mode
BATCH_QUIET
// as in batch mode, but don't echo the command
}
fBatch
;
// added to detect memory leaks
// watch for {,,msvcrtd.dll}*__p__crtBreakAlloc()
// (http://support.microsoft.com/kb/151585)
#if defined(_DEBUG) && defined(_MSC_VER)
_CrtSetDbgFlag
(
_CRTDBG_ALLOC_MEM_DF
|
_CRTDBG_LEAK_CHECK_DF
);
#endif
// get global frame (singleton pattern)
// will be initialized on first call
pAbc
=
Abc_FrameGetGlobalFrame
();
pAbc
->
sBinary
=
argv
[
0
];
#ifdef ABC_PYTHON_EMBED
{
PyObject
*
pModule
;
void
init_pyabc
(
void
);
Py_SetProgramName
(
argv
[
0
]);
Py_NoSiteFlag
=
1
;
Py_Initialize
();
init_pyabc
();
pModule
=
PyImport_ImportModule
(
"pyabc"
);
if
(
pModule
)
{
Py_DECREF
(
pModule
);
}
else
{
fprintf
(
pAbc
->
Err
,
"error: pyabc.py not found. PYTHONPATH may not be set properly.
\n
"
);
}
}
#endif
/* ABC_PYTHON_EMBED */
// default options
fBatch
=
INTERACTIVE
;
fInitSource
=
1
;
fInitRead
=
0
;
fFinalWrite
=
0
;
sInFile
=
sOutFile
=
NULL
;
sprintf
(
sReadCmd
,
"read"
);
sprintf
(
sWriteCmd
,
"write"
);
Extra_UtilGetoptReset
();
while
((
c
=
Extra_UtilGetopt
(
argc
,
argv
,
"c:q:C:hf:F:o:st:T:xb"
))
!=
EOF
)
{
switch
(
c
)
{
case
'c'
:
strcpy
(
sCommandUsr
,
globalUtilOptarg
);
fBatch
=
BATCH
;
break
;
case
'q'
:
strcpy
(
sCommandUsr
,
globalUtilOptarg
);
fBatch
=
BATCH_QUIET
;
break
;
case
'C'
:
strcpy
(
sCommandUsr
,
globalUtilOptarg
);
fBatch
=
BATCH_THEN_INTERACTIVE
;
break
;
case
'f'
:
sprintf
(
sCommandUsr
,
"source %s"
,
globalUtilOptarg
);
fBatch
=
BATCH
;
break
;
case
'F'
:
sprintf
(
sCommandUsr
,
"source -x %s"
,
globalUtilOptarg
);
fBatch
=
BATCH
;
break
;
case
'h'
:
goto
usage
;
break
;
case
'o'
:
sOutFile
=
globalUtilOptarg
;
fFinalWrite
=
1
;
break
;
case
's'
:
fInitSource
=
0
;
break
;
case
't'
:
if
(
TypeCheck
(
pAbc
,
globalUtilOptarg
)
)
{
if
(
!
strcmp
(
globalUtilOptarg
,
"none"
)
==
0
)
{
fInitRead
=
1
;
sprintf
(
sReadCmd
,
"read_%s"
,
globalUtilOptarg
);
}
}
else
{
goto
usage
;
}
fBatch
=
BATCH
;
break
;
case
'T'
:
if
(
TypeCheck
(
pAbc
,
globalUtilOptarg
)
)
{
if
(
!
strcmp
(
globalUtilOptarg
,
"none"
)
==
0
)
{
fFinalWrite
=
1
;
sprintf
(
sWriteCmd
,
"write_%s"
,
globalUtilOptarg
);
}
}
else
{
goto
usage
;
}
fBatch
=
BATCH
;
break
;
case
'x'
:
fFinalWrite
=
0
;
fInitRead
=
0
;
fBatch
=
BATCH
;
break
;
case
'b'
:
Abc_FrameSetBridgeMode
();
break
;
default:
goto
usage
;
}
}
if
(
Abc_FrameIsBridgeMode
()
)
{
extern
Gia_Man_t
*
Gia_ManFromBridge
(
FILE
*
pFile
,
Vec_Int_t
**
pvInit
);
pAbc
->
pGia
=
Gia_ManFromBridge
(
stdin
,
NULL
);
}
else
if
(
fBatch
!=
INTERACTIVE
&&
fBatch
!=
BATCH_QUIET
&&
sCommandUsr
[
0
]
)
Abc_Print
(
1
,
"ABC command line:
\"
%s
\"
.
\n\n
"
,
sCommandUsr
);
if
(
fBatch
!=
INTERACTIVE
)
{
pAbc
->
fBatchMode
=
1
;
if
(
argc
-
globalUtilOptind
==
0
)
{
sInFile
=
NULL
;
}
else
if
(
argc
-
globalUtilOptind
==
1
)
{
fInitRead
=
1
;
sInFile
=
argv
[
globalUtilOptind
];
}
else
{
Abc_UtilsPrintUsage
(
pAbc
,
argv
[
0
]
);
}
// source the resource file
if
(
fInitSource
)
{
Abc_UtilsSource
(
pAbc
);
}
fStatus
=
0
;
if
(
fInitRead
&&
sInFile
)
{
sprintf
(
sCommandTmp
,
"%s %s"
,
sReadCmd
,
sInFile
);
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommandTmp
);
}
if
(
fStatus
==
0
)
{
/* cmd line contains `source <file>' */
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommandUsr
);
if
(
(
fStatus
==
0
||
fStatus
==
-
1
)
&&
fFinalWrite
&&
sOutFile
)
{
sprintf
(
sCommandTmp
,
"%s %s"
,
sWriteCmd
,
sOutFile
);
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommandTmp
);
}
}
if
(
fBatch
==
BATCH_THEN_INTERACTIVE
){
fBatch
=
INTERACTIVE
;
pAbc
->
fBatchMode
=
0
;
}
}
if
(
fBatch
==
INTERACTIVE
)
{
// start interactive mode
// print the hello line
Abc_UtilsPrintHello
(
pAbc
);
// print history of the recent commands
Cmd_HistoryPrint
(
pAbc
,
10
);
// source the resource file
if
(
fInitSource
)
{
Abc_UtilsSource
(
pAbc
);
}
// execute commands given by the user
while
(
!
feof
(
stdin
)
)
{
// print command line prompt and
// get the command from the user
sCommand
=
Abc_UtilsGetUsersInput
(
pAbc
);
// execute the user's command
fStatus
=
Cmd_CommandExecute
(
pAbc
,
sCommand
);
// stop if the user quitted or an error occurred
if
(
fStatus
==
-
1
||
fStatus
==
-
2
)
break
;
}
}
#ifdef ABC_PYTHON_EMBED
{
Py_Finalize
();
}
#endif
/* ABC_PYTHON_EMBED */
// if the memory should be freed, quit packages
// if ( fStatus < 0 )
{
Abc_Stop
();
}
return
0
;
usage:
Abc_UtilsPrintHello
(
pAbc
);
Abc_UtilsPrintUsage
(
pAbc
,
argv
[
0
]
);
return
1
;
}
/**Function********************************************************************
Synopsis [Returns 1 if s is a file type recognized, else returns 0.]
Description [Returns 1 if s is a file type recognized by ABC, else returns 0.
Recognized types are "blif", "bench", "pla", and "none".]
SideEffects []
******************************************************************************/
static
int
TypeCheck
(
Abc_Frame_t
*
pAbc
,
const
char
*
s
)
{
if
(
strcmp
(
s
,
"blif"
)
==
0
)
return
1
;
else
if
(
strcmp
(
s
,
"bench"
)
==
0
)
return
1
;
else
if
(
strcmp
(
s
,
"pla"
)
==
0
)
return
1
;
else
if
(
strcmp
(
s
,
"none"
)
==
0
)
return
1
;
else
{
fprintf
(
pAbc
->
Err
,
"unknown type %s
\n
"
,
s
);
return
0
;
}
}
////////////////////////////////////////////////////////////////////////
/// END OF FILE ///
////////////////////////////////////////////////////////////////////////
ABC_NAMESPACE_IMPL_END
src/base/main/module.make
View file @
c0db4d2a
...
...
@@ -2,5 +2,6 @@ SRC += src/base/main/main.c \
src/base/main/mainFrame.c
\
src/base/main/mainInit.c
\
src/base/main/mainLib.c
\
src/base/main/mainReal.c
\
src/base/main/libSupport.c
\
src/base/main/mainUtils.c
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment