Add "make bumpversion"
[yosys.git] / CodingReadme
index cbe1fb8bef428514c86f69341c3145ad7db3d935..8212436e569d3f2fd7533f35a3a50b269e971a14 100644 (file)
@@ -21,7 +21,7 @@ Here is a the C++ code for a "hello_world" Yosys command (hello.cc):
 
        struct HelloWorldPass : public Pass {
                HelloWorldPass() : Pass("hello_world") { }
-               virtual void execute(vector<string>, Design*) {
+               void execute(vector<string>, Design*) override {
                        log("Hello World!\n");
                }
        } HelloWorldPass;
@@ -373,6 +373,7 @@ Finally run all tests with "make config-{clang,gcc,gcc-4.8}":
        cd ~yosys
        make clean
        make test
+       make ystests
        make vloghtb
        make install
 
@@ -389,6 +390,7 @@ Finally run all tests with "make config-{clang,gcc,gcc-4.8}":
 Release:
 
        - set YOSYS_VER to x.y.z in Makefile
+       - remove "bumpversion" target from Makefile
        - update version string in CHANGELOG
        git commit -am "Yosys x.y.z"
 
@@ -411,3 +413,98 @@ Updating the website:
        git commit -am update
        make push
 
+
+
+Cross-Building for Windows with MXE
+===================================
+
+Check http://mxe.cc/#requirements and install all missing requirements.
+
+As root (or other user with write access to /usr/local/src):
+
+       cd /usr/local/src
+       git clone https://github.com/mxe/mxe.git
+       cd mxe
+
+       make -j$(nproc) MXE_PLUGIN_DIRS="plugins/tcl.tk" \
+                       MXE_TARGETS="i686-w64-mingw32.static" \
+                       gcc tcl readline
+
+Then as regular user in some directory where you build stuff:
+
+       git clone https://github.com/cliffordwolf/yosys.git yosys-win32
+       cd yosys-win32
+       make config-mxe
+       make -j$(nproc) mxebin
+
+
+
+How to add unit test
+====================
+
+Unit test brings some advantages, briefly, we can list some of them (reference
+[1](https://en.wikipedia.org/wiki/Unit_testing)):
+
+* Tests reduce bugs in new features;
+* Tests reduce bugs in existing features;
+* Tests are good documentation;
+* Tests reduce the cost of change;
+* Tests allow refactoring;
+
+With those advantages in mind, it was required to choose a framework which fits
+well with C/C++ code.  Hence, it was chosen (google test)
+[https://github.com/google/googletest], because it is largely used and it is
+relatively easy learn.
+
+Install and configure google test (manually)
+--------------------------------------------
+
+In this section, you will see a brief description of how to install google
+test. However, it is strongly recommended that you take a look to the official
+repository (https://github.com/google/googletest) and refers to that if you
+have any problem to install it. Follow the steps below:
+
+* Install: cmake and pthread
+* Clone google test project from: https://github.com/google/googletest and
+  enter in the project directory
+* Inside project directory, type:
+
+```
+cmake -DBUILD_SHARED_LIBS=ON .
+make
+```
+
+* After compilation, copy all "*.so" inside directory "googlemock" and
+  "googlemock/gtest" to "/usr/lib/"
+* Done! Now you can compile your tests.
+
+If you have any problem, go to the official repository to find help.
+
+Ps.: Some distros already have googletest packed. If your distro supports it,
+you can use it instead of compile.
+
+Create new unit test
+--------------------
+
+If you want to add new unit tests for Yosys, just follow the steps below:
+
+* Go to directory "yosys/test/unit/"
+* In this directory you can find something similar Yosys's directory structure.
+  To create your unit test file you have to follow this pattern:
+  fileNameToImplementUnitTest + Test.cc. E.g.: if you want to implement the
+  unit test for kernel/celledges.cc, you will need to create a file like this:
+  tests/unit/kernel/celledgesTest.cc;
+* Implement your unit test
+
+Run unit test
+-------------
+
+To compile and run all unit tests, just go to yosys root directory and type:
+```
+make unit-test
+```
+
+If you want to remove all unit test files, type:
+```
+make clean-unit-test
+```