Initial CMakeLists.txt

Signed-off-by: Alain Dargelas <alainmarcel@yahoo.com>
diff --git a/SVIncCompil/CMakeLists.txt b/SVIncCompil/CMakeLists.txt
new file mode 100644
index 0000000..349b2eb
--- /dev/null
+++ b/SVIncCompil/CMakeLists.txt
@@ -0,0 +1,138 @@
+# -*- mode:cmake -*-
+cmake_minimum_required (VERSION 2.8)
+# 2.8 needed because of ExternalProject
+
+# Detect build type, fallback to release and throw a warning if use didn't specify any
+if(NOT CMAKE_BUILD_TYPE)
+  message(WARNING "Build type not set, falling back to Release mode.
+ To specify build type use:
+ -DCMAKE_BUILD_TYPE=<mode> where <mode> is Debug or Release.")
+  set(CMAKE_BUILD_TYPE "Release" CACHE STRING
+       "Choose the type of build, options are: Debug Release."
+       FORCE)
+endif(NOT CMAKE_BUILD_TYPE)
+
+if(NOT WITH_TEST)
+  message(STATUS "Building without test. To enable test build use: -DWITH_TEST=True")
+  set(WITH_TEST False CACHE STRING
+    "Chose to build with or without test executable"
+    FORCE)
+endif(NOT WITH_TEST)
+
+option(WITH_LIBCXX "Building with clang++ and libc++(in Linux). To enable with: -DWITH_LIBCXX=On" On)
+
+project(SURELOG)
+
+#file(STRINGS "VERSION" SURELOG_VERSION)
+
+if (WITH_TEST)
+
+endif(WITH_TEST)
+
+set(CMAKE_CXX_STANDARD 11)
+
+cmake_minimum_required(VERSION 3.0)
+find_package(PythonLibs 3.3 REQUIRED)
+INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
+INCLUDE_DIRECTORIES("../antlr4/antlr4-4.7.2/runtime/Cpp/runtime/src/")
+INCLUDE_DIRECTORIES("../flatbuffers/include/")
+message(STATUS "PYTHON_LIBRARIES = ${PYTHON_LIBRARIES}")
+message(STATUS "PYTHON_EXECUTABLE = ${PYTHON_EXECUTABLE}")
+message(STATUS "PYTHON_INCLUDE_DIRS = ${PYTHON_INCLUDE_DIRS}")
+set(CMAKE_CXX_FLAGS                  "${CMAKE_CXX_FLAGS} ${MY_CXX_WARNING_FLAGS}")
+set(CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g ${MY_CXX_WARNING_FLAGS}")
+set(CMAKE_CXX_FLAGS_RELEASE        "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ${MY_CXX_WARNING_FLGAS}")
+
+# Compiler-specific C++11 activation.
+if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel")
+    execute_process(
+        COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
+    # Just g++-5.0 and greater contain <codecvt> header. (test in ubuntu)
+    if (NOT (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0))
+        message(FATAL_ERROR "${PROJECT_NAME} requires g++ 5.0 or greater.")
+    endif ()
+elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND APPLE)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
+    execute_process(
+        COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE CLANG_VERSION)
+    if (NOT (CLANG_VERSION VERSION_GREATER 4.2.1 OR CLANG_VERSION VERSION_EQUAL 4.2.1))
+        message(FATAL_ERROR "${PROJECT_NAME} requires clang 4.2.1 or greater.")
+    endif ()
+    # You can use libc++ to compile this project when g++ is NOT greater than or equal to 5.0.
+    if (WITH_LIBCXX)
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+    endif()
+elseif ( MSVC_VERSION GREATER 1800 OR MSVC_VERSION EQUAL 1800 )
+  # Visual Studio 2012+ supports c++11 features 
+else ()
+    message(FATAL_ERROR "Your C++ compiler does not support C++11.")
+endif ()
+
+#if (WITH_DEMO)
+# add_subdirectory(demo)
+#endif(WITH_DEMO)
+
+
+#set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/)
+#set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
+#set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
+#set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir})
+#set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
+#set(CMAKE_BUILD_DIRECTORY ${dir})
+#set(CMAKE_BINARY_DIR  ${dir})
+
+set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
+set(CMAKE_BUILD_DIRECTORY ${dir})
+
+include_directories(
+  ${PROJECT_SOURCE_DIR}/API
+  ${PROJECT_SOURCE_DIR}/Design
+  ${PROJECT_SOURCE_DIR}/Library
+  ${PROJECT_SOURCE_DIR}/parser
+  ${PROJECT_SOURCE_DIR}/SourceCompile
+  ${PROJECT_SOURCE_DIR}/DesignCompile
+  ${PROJECT_SOURCE_DIR}/Testbench
+  ${PROJECT_SOURCE_DIR}/CommandLine
+  ${PROJECT_SOURCE_DIR}/Common
+  ${PROJECT_SOURCE_DIR}/ErrorReporting
+  ${PROJECT_SOURCE_DIR}/Utils
+  ${PROJECT_SOURCE_DIR}/Cache
+  ${PROJECT_SOURCE_DIR}/Config
+  ${PROJECT_SOURCE_DIR}/Expression
+  ${PROJECT_SOURCE_DIR}/Package   
+)
+
+
+file(GLOB surelog_SRC
+  ${PROJECT_SOURCE_DIR}/*.cpp
+  ${PROJECT_SOURCE_DIR}/API/*.cpp
+  ${PROJECT_SOURCE_DIR}/Design/*.cpp
+  ${PROJECT_SOURCE_DIR}/Library/*.cpp
+  ${PROJECT_SOURCE_DIR}/parser/*.cpp
+  ${PROJECT_SOURCE_DIR}/SourceCompile/*.cpp
+  ${PROJECT_SOURCE_DIR}/DesignCompile/*.cpp
+  ${PROJECT_SOURCE_DIR}/Testbench/*.cpp
+  ${PROJECT_SOURCE_DIR}/CommandLine/*.cpp
+  ${PROJECT_SOURCE_DIR}/Common/*.cpp
+  ${PROJECT_SOURCE_DIR}/ErrorReporting/*.cpp
+  ${PROJECT_SOURCE_DIR}/Utils/*.cpp
+  ${PROJECT_SOURCE_DIR}/Cache/*.cpp
+  ${PROJECT_SOURCE_DIR}/Config/*.cpp
+  ${PROJECT_SOURCE_DIR}/Expression/*.cpp
+  ${PROJECT_SOURCE_DIR}/Package/*.cpp
+  )
+
+add_executable(surelog ${surelog_SRC})
+
+target_link_libraries(
+  surelog ${PYTHON_LIBRARIES}
+  )
+
+target_link_libraries(
+  surelog  ${ANTLR_LIB}
+)
+
+target_link_libraries(
+  surelog -L../../antlr4/antlr4-4.7.2/runtime/Cpp/dist/ libantlr4-runtime.a dl util m rt pthread 
+)
diff --git a/SVIncCompil/Testcases/SimpleClass1/SimpleClass1_diff.log b/SVIncCompil/Testcases/SimpleClass1/SimpleClass1_diff.log
index 4b32dcd..80405f7 100644
--- a/SVIncCompil/Testcases/SimpleClass1/SimpleClass1_diff.log
+++ b/SVIncCompil/Testcases/SimpleClass1/SimpleClass1_diff.log
@@ -788,5 +788,5 @@
 *   End SURELOG SVerilog Compiler/Linter   *
 ********************************************
 
-1.68user 0.08system 0:01.77elapsed 99%CPU (0avgtext+0avgdata 118140maxresident)k
-8inputs+7720outputs (0major+31799minor)pagefaults 0swaps
+2.09user 0.12system 0:02.48elapsed 88%CPU (0avgtext+0avgdata 117876maxresident)k
+600inputs+7720outputs (0major+31790minor)pagefaults 0swaps
diff --git a/SVIncCompil/Testcases/UnitTest/UnitTest.log b/SVIncCompil/Testcases/UnitTest/UnitTest.log
index eda6f94..6801371 100644
--- a/SVIncCompil/Testcases/UnitTest/UnitTest.log
+++ b/SVIncCompil/Testcases/UnitTest/UnitTest.log
@@ -42,5 +42,5 @@
 *   End SURELOG SVerilog Compiler/Linter   *
 ********************************************
 
-0.15user 0.01system 0:00.19elapsed 90%CPU (0avgtext+0avgdata 45760maxresident)k
-8inputs+8outputs (0major+10087minor)pagefaults 0swaps
+0.14user 0.04system 0:00.35elapsed 53%CPU (0avgtext+0avgdata 45708maxresident)k
+528inputs+8outputs (0major+10088minor)pagefaults 0swaps
diff --git a/SVIncCompil/Testcases/regression.log b/SVIncCompil/Testcases/regression.log
index 7dc0eb9..56d6c87 100644
--- a/SVIncCompil/Testcases/regression.log
+++ b/SVIncCompil/Testcases/regression.log
@@ -1,9 +1,8 @@
 Skipping large tests
-Run with -mt 0
 ************************
 START SURELOG REGRESSION
 
-Starts on 11/13/2019 20:26:21
+Starts on 11/13/2019 22:27:19
 COMMAND: /usr/bin/time  /home/alain/Surelog/SVIncCompil/Testcases/../dist/surelog/surelog
 Creating release for regression...
 Skipping ovm_pkg...
@@ -11,95 +10,29 @@
 Created  dist/surelog_release_tcmalloc.tar.gz
 PASS: surelog_release_tcmalloc
 THERE ARE 103 tests
-RUNNING   93 tests
+RUNNING   1 tests
 
-+----------------------------+----------+----------+----------+----------+----------+----------+--------------+--------------+
-| TESTNAME                   | STATUS   | FATALS   | ERRORS   | WARNINGS | NOTES    | SYNTAX   | ELAPSED TIME | MEM(Mb)      |
-+----------------------------+----------+----------+----------+----------+----------+----------+--------------+--------------+
-| Monitor                    | PASS     | 0        | 0        | 11       | 7        | 0        | 12s  (-1s)   | 263  (+1)    |
-| UnitDefParam               | PASS     | 0        | 0        | 17       | 8        | 0        | 0s           | 44           |
-| YosysSmall                 | PASS     | 0        | 1        | 6        | 9        | 0        | 2s   (+1s)   | 47   (+1)    |
-| UnitForLoop                | PASS     | 0        | 4        | 0        | 4        | 0        | 0s           | 44           |
-| SimpleUVM                  | PASS     | 0        | 0        | 11       | 7        | 0        | 3s   (+1s)   | 115          |
-| SimpleVMM                  | PASS     | 0        | 0        | 16       | 5        | 0        | 23s  (+1s)   | 286          |
-| YosysBigSimAes             | PASS     | 0        | 0        | 0        | 5        | 0        | 1s           | 53           |
-| UnitPackage                | PASS     | 0        | 0        | 6        | 9        | 0        | 1s           | 57           |
-| OldLibrary                 | PASS     | 0        | 0        | 4        | 8        | 0        | 0s           | 44           |
-| SimpleCmdLineTest          | PASS     | 0        | 0        | 1        | 1        | 0        | 0s           | 44           |
-| YosysBigSimSoft            | PASS     | 0        | 0        | 2        | 6        | 0        | 2s           | 89           |
-| RiscV                      | PASS     | 0        | 0        | 10       | 19       | 0        | 3s           | 102  (+1)    |
-| TimeUnit                   | PASS     | 0        | 8        | 10       | 7        | 0        | 0s           | 49           |
-| SimpleClass                | PASS     | 0        | 1        | 2        | 6        | 0        | 0s           | 44           |
-| UnitAmiqEth                | PASS     | 0        | 0        | 7        | 4        | 0        | 6s           | 141          |
-| PackageHierRef             | PASS     | 0        | 2        | 8        | 9        | 0        | 0s           | 44           |
-| AmiqEth                    | PASS     | 0        | 10       | 32       | 5        | 0        | 16s          | 400  (+1)    |
-| SimpleInterface            | PASS     | 0        | 3        | 13       | 20       | 0        | 2s           | 114          |
-| YosysOldI2c                | PASS     | 0        | 0        | 16       | 26       | 0        | 0s           | 34           |
-| UnitLibrary                | PASS     | 0        | 2        | 16       | 31       | 0        | 0s           | 44           |
-| Google                     | PASS     | 0        | 169      | 83       | 114      | 39       | 12s  (-2s)   | 657          |
-| YosysDsp                   | PASS     | 0        | 5        | 20       | 20       | 0        | 4s           | 107          |
-| SimpleConstraint           | PASS     | 0        | 0        | 2        | 4        | 0        | 1s           | 51           |
-| Icarus                     | PASS     | 0        | 10       | 264      | 160      | 4        | 16s  (-1s)   | 646          |
-| UnitForeach                | PASS     | 0        | 7        | 0        | 4        | 0        | 0s           | 45           |
-| Escape                     | PASS     | 0        | 5        | 10       | 8        | 0        | 0s           | 47           |
-| Scoreboard                 | PASS     | 0        | 0        | 11       | 7        | 0        | 3s           | 118          |
-| BuildOVMPkg                | PASS     | 0        | 0        | 16       | 5        | 0        | 47s  (+2s)   | 812          |
-| YosysOldSimpleSpi          | PASS     | 0        | 2        | 8        | 9        | 0        | 2s   (+1s)   | 62           |
-| YosysOldSsPcm              | PASS     | 0        | 1        | 2        | 6        | 0        | 1s           | 45           |
-| AVLMM                      | PASS     | 0        | 4        | 4        | 5        | 0        | 3s           | 91           |
-| UnitEnum                   | PASS     | 0        | 1        | 2        | 5        | 0        | 0s           | 44           |
-| TestMacros                 | PASS     | 0        | 3        | 0        | 11       | 2        | 0s           | 47           |
-| UnitQueue                  | PASS     | 0        | 4        | 0        | 4        | 0        | 0s           | 44           |
-| ApbSlave                   | PASS     | 0        | 0        | 1        | 7        | 0        | 3s   (+1s)   | 68           |
-| SimpleParserTest           | PASS     | 0        | 0        | 0        | 0        | 0        | 3s   (+1s)   | 76   (+1)    |
-| YosysOldOr                 | PASS     | 0        | 0        | 0        | 117      | 0        | 11s  (+1s)   | 471  (+1)    |
-| YosysCam                   | PASS     | 0        | 0        | 0        | 7        | 0        | 2s   (+1s)   | 59           |
-| ClassCons                  | PASS     | 0        | 1        | 2        | 6        | 0        | 0s           | 47           |
-| TestBasic                  | PASS     | 0        | 0        | 0        | 0        | 0        | 0s           | 44           |
-| AmiqSimpleTestSuite        | PASS     | 0        | 12       | 15       | 9        | 0        | 34s  (+3s)   | 519          |
-| SimpleOVM                  | PASS     | 0        | 0        | 16       | 4        | 0        | 0s           | 79   (+1)    |
-| TestFileSplit              | PASS     | 0        | 3        | 7        | 8        | 0        | 0s           | 44           |
-| YosysVerx                  | PASS     | 0        | 0        | 3        | 8        | 0        | 7s           | 230          |
-| YosysBigSimOpenMsp         | PASS     | 0        | 7        | 33       | 33       | 1        | 7s           | 212  (+1)    |
-| MiniAmiq                   | PASS     | 0        | 0        | 11       | 6        | 0        | 11s          | 244          |
-| SeqDriver                  | PASS     | 0        | 0        | 11       | 7        | 0        | 4s   (+1s)   | 121          |
-| UnitClass                  | PASS     | 0        | 8        | 1        | 6        | 0        | 0s           | 44           |
-| ClassFuncProto             | PASS     | 0        | 5        | 1        | 6        | 0        | 0s           | 44           |
-| SimpleIncludeAndMacros     | PASS     | 0        | 32       | 10       | 26       | 6        | 1s           | 48   (-1)    |
-| UnitSimpleIncludeAndMacros | PASS     | 0        | 30       | 18       | 12       | 6        | 1s           | 48           |
-| YosysBigSimAmber23         | PASS     | 0        | 3        | 17       | 22       | 1        | 6s           | 187          |
-| YosysOldAes                | PASS     | 0        | 6        | 10       | 10       | 0        | 3s   (+1s)   | 154          |
-| YosysOldUsb                | PASS     | 0        | 3        | 6        | 7        | 0        | 2s   (+1s)   | 63           |
-| YosysOldOpen               | PASS     | 0        | 0        | 20       | 31       | 0        | 6s           | 162          |
-| PragmaProtect              | PASS     | 0        | 1        | 1        | 6        | 0        | 0s           | 46           |
-| UVMNestedSeq               | PASS     | 0        | 3        | 12       | 7        | 0        | 5s           | 169          |
-| Custom_FIR_DMA             | PASS     | 0        | 7        | 54       | 102      | 0        | 8s           | 409          |
-| YosysSmallBoom             | PASS     | 0        | 0        | 291      | 296      | 0        | 41s  (+7s)   | 2626 (+1)    |
-| InterfaceModPort           | PASS     | 0        | 0        | 2        | 15       | 0        | 4s   (-1s)   | 49           |
-| GoogleMT                   | PASS     | 0        | 169      | 83       | 114      | 39       | 17s  (+3s)   | 657          |
-| UnitElabBlock              | PASS     | 0        | 0        | 3        | 14       | 0        | 0s           | 44           |
-| DiffSimpleIncludeAndMacros | PASS     | 0        | 62       | 30       | 38       | 0        | 2s   (+1s)   | 48           |
-| Yosys                      | PASS     | 0        | 10       | 457      | 0        | 10       | 13s  (+1s)   | 340          |
-| Verilator                  | PASS     | 0        | 631      | 416      | 4        | 48       | 140s (+8s)   | 1833         |
-| UnitTest                   | PASS     | 0        | 0        | 0        | 4        | 0        | 0s           | 44           |
-| Ibex                       | PASS     | 0        | 0        | 10       | 10       | 0        | 26s  (+1s)   | 476  (+1)    |
-| YosysBigSimLm32            | PASS     | 0        | 12       | 20       | 24       | 0        | 9s   (+1s)   | 259          |
-| YosysBigSimReed            | PASS     | 0        | 1        | 0        | 0        | 0        | 0s           | 16           |
-| YosysOldSpi                | PASS     | 0        | 109      | 6        | 7        | 3        | 2s           | 112          |
-| SVSwitch                   | PASS     | 0        | 0        | 2        | 52       | 0        | 4s           | 85           |
-| Zachjs                     | PASS     | 0        | 271      | 74       | 0        | 9        | 8s   (+1s)   | 192          |
-| CoresSweRV                 | PASS     | 0        | 0        | 110      | 21       | 0        | 35s  (+3s)   | 740          |
-| YosysOldSystem             | PASS     | 0        | 0        | 14       | 11       | 0        | 3s           | 230          |
-| OVMSwitch                  | PASS     | 0        | 1        | 17       | 124      | 0        | 13s  (+1s)   | 260          |
-| Driver                     | PASS     | 0        | 0        | 11       | 8        | 0        | 5s   (+1s)   | 130  (+1)    |
-| UtdSV                      | PASS     | 0        | 9        | 2797     | 488      | 3        | 22s  (+1s)   | 1028         |
-| YosysMarlann               | PASS     | 0        | 0        | 2        | 7        | 0        | 2s           | 64   (+1)    |
-| UVMSwitch                  | PASS     | 0        | 0        | 11       | 129      | 0        | 15s  (+1s)   | 285          |
-| GenerateUnnamed            | PASS     | 0        | 0        | 2        | 24       | 0        | 0s           | 45           |
-| SplitFile                  | PASS     | 0        | 13       | 17       | 27       | 0        | 0s           | 49           |
-| UnitElab                   | PASS     | 0        | 1        | 17       | 2465     | 0        | 1s           | 54           |
-| UnitElabExternNested       | PASS     | 0        | 0        | 8        | 22       | 0        | 0s           | 44           |
-| BeginKeywords              | PASS     | 0        | 0        | 1        | 6        | 0        | 0s           | 44           |
-| SimpleTask                 | PASS     | 0        | 0        | 2        | 20       | 0        | 1s           | 51           |
-| IbexGoogle                 | PASS     | 0        | 7        | 11       | 7        | 1        | 36s  (+2s)   | 482          |
-| BlackParrot                |
\ No newline at end of file
++--------------+----------+----------+----------+----------+----------+----------+--------------+--------------+
+| TESTNAME     | STATUS   | FATALS   | ERRORS   | WARNINGS | NOTES    | SYNTAX   | ELAPSED TIME | MEM(Mb)      |
++--------------+----------+----------+----------+----------+----------+----------+--------------+--------------+
+
+cd SimpleClass1
+/usr/bin/time  /home/alain/Surelog/SVIncCompil/Testcases/../dist/surelog/surelog  +incdir+.+../../../UVM/uvm-1.2/src/    ../../../UVM/uvm-1.2/src/uvm_pkg.sv    -writepp -parse  -d inst  -mt max   top.v
+
+| SimpleClass1 | PASS     | 0        | 8        | 15       | 8        | 0        | 2s   (+1s)   | 115          |
++--------------+----------+----------+----------+----------+----------+----------+--------------+--------------+
+
+ RESULT : PASS
+
++--------------+----------+----------+
+|              | CURRENT  | PREVIOUS |
++--------------+----------+----------+
+|TOTAL ELAPSED | 2s       | 1s       |
+|TOTAL USER    | 2s       | 1s       |
+|MAX MEM TEST  | 115Mb    | 115Mb    |
+|MAX TIME TEST | 2s       | 1s       |
++--------------+----------+----------+
+
+End on 11/13/2019 22:27:25
+END SURELOG REGRESSION
+************************
diff --git a/SVIncCompil/buildantlr.sh b/SVIncCompil/buildantlr.sh
index a67cfe0..3daeecb 100755
--- a/SVIncCompil/buildantlr.sh
+++ b/SVIncCompil/buildantlr.sh
@@ -23,7 +23,6 @@
 #cd ../antlr4
 #wget https://github.com/antlr/antlr4/archive/4.7.2.zip
 #unzip 4.7.2.zip
-#cp -R ../third_party/antlr4/runtime/*              antlr4-4.7.2/runtime
 #cd antlr4-4.7.2
 #export MAVEN_OPTS="-Xmx1G"   
 #mvn clean