 +# End:
 diff --git a/src/tool/test/regression.tcl b/src/tool/test/regression.tcl
 new file mode 120000
-index 00000000..58d7f3fa
+index 000000000..58d7f3fa9
 --- /dev/null
 +++ b/src/tool/test/regression.tcl
 @@ -0,0 +1 @@

+};
+
+}
diff --git a/src/tool/src/CMakeLists.txt b/src/tool/src/CMakeLists.txt
new file mode 100644
index 00000000..dccb8cf4
--- /dev/null
+++ b/src/tool/src/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Copyright (c) 2021, The Regents of the University of California
+# All rights reserved.
+# 
+# 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
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+set(TOOL_WRAP ${CMAKE_CURRENT_BINARY_DIR}/Tool_wrap.cc)
+set(TOOL_TCL_INIT ${CMAKE_CURRENT_BINARY_DIR}/ToolTclInitVar.cc)
+
+add_custom_command(OUTPUT ${TOOL_WRAP}
+  COMMAND ${SWIG_EXECUTABLE} -tcl8 -c++ -namespace -prefix tool -I${OPENROAD_HOME}/include -o ${TOOL_WRAP} ${TOOL_HOME}/src/Tool.i
+  COMMAND ${OPENSTA_HOME}/etc/SwigCleanup.tcl ${CMAKE_CURRENT_BINARY_DIR}/Tool_wrap.cc
+  WORKING_DIRECTORY ${TOOL_HOME}/src
+  DEPENDS ${TOOL_HOME}/src/Tool.i
+  )
+
+add_custom_command(OUTPUT ${TOOL_TCL_INIT}
+  COMMAND ${OPENSTA_HOME}/etc/TclEncode.tcl ${TOOL_TCL_INIT} tool_tcl_inits Tool.tcl
+  WORKING_DIRECTORY ${TOOL_HOME}/src
+  DEPENDS Tool.tcl ${OPENSTA_HOME}/etc/TclEncode.tcl
+  )
+
+add_library(tool
+  MakeTool.cc
+  Tool.cc
+  ${TOOL_WRAP}
+  ${TOOL_TCL_INIT}
+  )
+
+target_include_directories(tool
+  PUBLIC ${TOOL_HOME}/include
+  PRIVATE
+  ${OPENROAD_HOME}/include
+  ${ODB_HOME}/include
+  ${OPENSTA_HOME}/include
+  )
diff --git a/src/tool/src/MakeTool.cc b/src/tool/src/MakeTool.cc
new file mode 100644
index 00000000..637332c8
--- /dev/null
+++ b/src/tool/src/MakeTool.cc
@@ -0,0 +1,42 @@

+%} // inline
diff --git a/src/tool/src/Tool.tcl b/src/tool/src/Tool.tcl
new file mode 100644
index 000000000..16830d000
--- /dev/null
+++ b/src/tool/src/Tool.tcl
@@ -0,0 +1,48 @@
