UseSWIG cmake support for swig
This commit is contained in:
parent
f7171d9bf4
commit
1068813b59
|
|
@ -14,9 +14,9 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
cmake_minimum_required (VERSION 3.9)
|
cmake_minimum_required (VERSION 3.9...3.16)
|
||||||
|
|
||||||
project(STA VERSION 2.0.17)
|
project(STA VERSION 2.0.18)
|
||||||
|
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
|
@ -37,16 +37,6 @@ if(NOT CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE RELEASE)
|
set(CMAKE_BUILD_TYPE RELEASE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Compiler specific options.
|
|
||||||
# Note -Wno-deprecated-register is to suppress bison errors.
|
|
||||||
if (CMAKE_CXX_COMPILER_ID MATCHES AppleClang|Clang)
|
|
||||||
set(STA_COMPILE_OPTIONS -Wall -Wextra -pedantic -Wcast-qual -Wredundant-decls -Wformat-security -Wno-deprecated-register)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
||||||
set(STA_COMPILE_OPTIONS -Wall -Wextra -pedantic -Wcast-qual -Wredundant-decls -Wformat-security)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "System name: ${CMAKE_SYSTEM_NAME}")
|
message(STATUS "System name: ${CMAKE_SYSTEM_NAME}")
|
||||||
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
message(STATUS "Compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||||
|
|
@ -385,6 +375,20 @@ set(STA_HEADERS
|
||||||
verilog/VerilogWriter.hh
|
verilog/VerilogWriter.hh
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set(STA_INCLUDE_DIRS
|
||||||
|
app
|
||||||
|
dcalc
|
||||||
|
graph
|
||||||
|
liberty
|
||||||
|
network
|
||||||
|
parasitics
|
||||||
|
sdc
|
||||||
|
sdf
|
||||||
|
search
|
||||||
|
util
|
||||||
|
verilog
|
||||||
|
)
|
||||||
|
|
||||||
# Source files.
|
# Source files.
|
||||||
set(STA_TCL_FILES
|
set(STA_TCL_FILES
|
||||||
tcl/Util.tcl
|
tcl/Util.tcl
|
||||||
|
|
@ -406,17 +410,6 @@ set(STA_TCL_FILES
|
||||||
verilog/Verilog.tcl
|
verilog/Verilog.tcl
|
||||||
)
|
)
|
||||||
|
|
||||||
set(STA_SWIG_FILES
|
|
||||||
tcl/NetworkEdit.i
|
|
||||||
tcl/StaException.i
|
|
||||||
sdf/Sdf.i
|
|
||||||
dcalc/DelayCalc.i
|
|
||||||
parasitics/Parasitics.i
|
|
||||||
verilog/Verilog.i
|
|
||||||
tcl/StaTcl.i
|
|
||||||
app/StaApp.i
|
|
||||||
)
|
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
#
|
#
|
||||||
# Flex/bison scanner/parsers
|
# Flex/bison scanner/parsers
|
||||||
|
|
@ -428,8 +421,7 @@ find_package(BISON)
|
||||||
|
|
||||||
# LibertyExpr scan/parse.
|
# LibertyExpr scan/parse.
|
||||||
flex_target(LibertyExprLex liberty/LibertyExprLex.ll ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprLex.cc
|
flex_target(LibertyExprLex liberty/LibertyExprLex.ll ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprLex.cc
|
||||||
COMPILE_FLAGS --prefix=LibertyExprLex_
|
COMPILE_FLAGS --prefix=LibertyExprLex_)
|
||||||
)
|
|
||||||
bison_target(LibertyExprParser liberty/LibertyExprParse.yy ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprParse.cc
|
bison_target(LibertyExprParser liberty/LibertyExprParse.yy ${CMAKE_CURRENT_BINARY_DIR}/LibertyExprParse.cc
|
||||||
COMPILE_FLAGS --name-prefix=LibertyExprParse_
|
COMPILE_FLAGS --name-prefix=LibertyExprParse_
|
||||||
)
|
)
|
||||||
|
|
@ -474,21 +466,38 @@ add_flex_bison_dependency(SdfLex SdfParser)
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
set(SWIG_REQUIRED_VERSION "2.0")
|
# all hell breaks loose with cmake 3.16.2
|
||||||
|
#cmake_policy(SET CMP<0078> NEW)
|
||||||
|
#set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
|
||||||
find_package(SWIG REQUIRED)
|
find_package(SWIG REQUIRED)
|
||||||
if(${SWIG_VERSION} VERSION_LESS ${SWIG_REQUIRED_VERSION})
|
include(UseSWIG)
|
||||||
message(FATAL_ERROR "SWIG version ${SWIG_VERSION} must be at least ${SWIG_REQUIRED_VERSION}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(STA_WRAP ${CMAKE_CURRENT_BINARY_DIR}/StaApp_wrap.cc)
|
set(STA_SWIG_FILE
|
||||||
|
app/StaApp.i
|
||||||
add_custom_command(OUTPUT ${STA_WRAP}
|
|
||||||
COMMAND ${SWIG_EXECUTABLE} -tcl8 -c++ -namespace -prefix sta -I${STA_HOME}/tcl -I${STA_HOME}/sdf -I${STA_HOME}/dcalc -I${STA_HOME}/parasitics -I${STA_HOME}/verilog -o ${STA_WRAP} ${STA_HOME}/app/StaApp.i
|
|
||||||
COMMAND ${STA_HOME}/etc/SwigCleanup.tcl ${STA_WRAP}
|
|
||||||
WORKING_DIRECTORY ${STA_HOME}
|
|
||||||
DEPENDS ${STA_SWIG_FILES}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
set_source_files_properties(${STA_SWIG_FILE}
|
||||||
|
PROPERTIES CPLUSPLUS ON
|
||||||
|
)
|
||||||
|
set(CMAKE_SWIG_FLAGS -module sta -namespace -prefix sta
|
||||||
|
-I${STA_HOME}/tcl
|
||||||
|
-I${STA_HOME}/sdf
|
||||||
|
-I${STA_HOME}/dcalc
|
||||||
|
-I${STA_HOME}/parasitics
|
||||||
|
-I${STA_HOME}/verilog
|
||||||
|
)
|
||||||
|
|
||||||
|
swig_add_library(sta_swig
|
||||||
|
LANGUAGE tcl
|
||||||
|
TYPE STATIC
|
||||||
|
SOURCES ${STA_SWIG_FILE}
|
||||||
|
)
|
||||||
|
|
||||||
|
swig_link_libraries(sta_swig
|
||||||
|
PUBLIC
|
||||||
|
OpenSTA
|
||||||
|
)
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
|
|
||||||
set(STA_TCL_INIT ${CMAKE_CURRENT_BINARY_DIR}/StaTclInitVar.cc)
|
set(STA_TCL_INIT ${CMAKE_CURRENT_BINARY_DIR}/StaTclInitVar.cc)
|
||||||
|
|
@ -602,7 +611,6 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${STA_HOME}/app)
|
||||||
add_library(OpenSTA
|
add_library(OpenSTA
|
||||||
${STA_SOURCE}
|
${STA_SOURCE}
|
||||||
|
|
||||||
${STA_WRAP}
|
|
||||||
${STA_TCL_INIT}
|
${STA_TCL_INIT}
|
||||||
|
|
||||||
${FLEX_LibertyExprLex_OUTPUTS}
|
${FLEX_LibertyExprLex_OUTPUTS}
|
||||||
|
|
@ -641,10 +649,18 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${STA_HOME}/app)
|
||||||
# Note executable and lib name cannot be the same because
|
# Note executable and lib name cannot be the same because
|
||||||
# on osx something is case insensitive. Using STA for the
|
# on osx something is case insensitive. Using STA for the
|
||||||
# lib name results in "No rule to make target ../depend.
|
# lib name results in "No rule to make target ../depend.
|
||||||
add_executable(sta app/Main.cc ${STA_WRAP})
|
add_executable(sta app/Main)
|
||||||
|
|
||||||
|
target_compile_options(sta
|
||||||
|
PRIVATE
|
||||||
|
$<$<CXX_COMPILER_ID:GNU>:-Wall -Wextra -pedantic -Wcast-qual -Wredundant-decls -Wformat-security>
|
||||||
|
$<$<CXX_COMPILER_ID:AppleClang>:-Wall -Wextra -pedantic -Wcast-qual -Wredundant-decls -Wformat-security>
|
||||||
|
$<$<CXX_COMPILER_ID:Clang>:-Wall -Wextra -pedantic -Wcast-qual -Wredundant-decls -Wformat-security>
|
||||||
|
)
|
||||||
|
|
||||||
target_link_libraries(sta
|
target_link_libraries(sta
|
||||||
OpenSTA
|
OpenSTA
|
||||||
|
sta_swig
|
||||||
${TCL_LIBRARY}
|
${TCL_LIBRARY}
|
||||||
${CUDD_LIB}
|
${CUDD_LIB}
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
// Liberty function expression lexical analyzer
|
// Liberty function expression lexical analyzer
|
||||||
|
|
||||||
#include "Machine.hh"
|
#include "Machine.hh"
|
||||||
|
#include "FlexPragma.hh"
|
||||||
#include "Debug.hh"
|
#include "Debug.hh"
|
||||||
#include "StringUtil.hh"
|
#include "StringUtil.hh"
|
||||||
#include "LibertyExprPvt.hh"
|
#include "LibertyExprPvt.hh"
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "Machine.hh"
|
||||||
|
#include "FlexPragma.hh"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "Machine.hh"
|
#include "Machine.hh"
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "Machine.hh"
|
||||||
|
#include "FlexPragma.hh"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "Machine.hh"
|
#include "Machine.hh"
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "Machine.hh"
|
#include "Machine.hh"
|
||||||
|
#include "FlexPragma.hh"
|
||||||
#include "Sdf.hh"
|
#include "Sdf.hh"
|
||||||
#include "SdfParse.hh"
|
#include "SdfParse.hh"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#define DIAG_STR(s) #s
|
||||||
|
#define DIAG_JOINSTR(x,y) DIAG_STR(x ## y)
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define DIAG_DO_PRAGMA(x) __pragma (#x)
|
||||||
|
#define DIAG_PRAGMA(compiler,x) DIAG_DO_PRAGMA(warning(x))
|
||||||
|
#else
|
||||||
|
#define DIAG_DO_PRAGMA(x) _Pragma (#x)
|
||||||
|
#define DIAG_PRAGMA(compiler,x) DIAG_DO_PRAGMA(compiler diagnostic x)
|
||||||
|
#endif
|
||||||
|
#if defined(__clang__)
|
||||||
|
# define DISABLE_WARNING(gcc_unused,clang_option,msvc_unused) DIAG_PRAGMA(clang,push) DIAG_PRAGMA(clang,ignored DIAG_JOINSTR(-W,clang_option))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define DISABLE_WARNING(gcc_unused,clang_unused,msvc_errorcode) DIAG_PRAGMA(msvc,push) DIAG_DO_PRAGMA(warning(disable:##msvc_errorcode))
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
#if ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406
|
||||||
|
# define DISABLE_WARNING(gcc_option,clang_unused,msvc_unused) DIAG_PRAGMA(GCC,push) DIAG_PRAGMA(GCC,ignored DIAG_JOINSTR(-W,gcc_option))
|
||||||
|
#else
|
||||||
|
# define DISABLE_WARNING(gcc_option,clang_unused,msvc_unused) DIAG_PRAGMA(GCC,ignored DIAG_JOINSTR(-W,gcc_option))
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DISABLE_WARNING(deprecated-register,deprecated-register,00)
|
||||||
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "Machine.hh"
|
#include "Machine.hh"
|
||||||
|
#include "FlexPragma.hh"
|
||||||
#include "Debug.hh"
|
#include "Debug.hh"
|
||||||
#include "VerilogNamespace.hh"
|
#include "VerilogNamespace.hh"
|
||||||
#include "VerilogReaderPvt.hh"
|
#include "VerilogReaderPvt.hh"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue