Create vcxsrc in mxe build "make dist"
authorClifford Wolf <clifford@clifford.at>
Sat, 18 Oct 2014 13:17:33 +0000 (15:17 +0200)
committerClifford Wolf <clifford@clifford.at>
Sat, 18 Oct 2014 13:17:33 +0000 (15:17 +0200)
.gitignore
CodingReadme
Makefile
misc/create_vcxsrc.sh [new file with mode: 0644]

index 557240f0f3fc4816ded1f6ac7ead8884cf042934..5d470732fcd8d5be85fc8536a517c0a4a5c9c644 100644 (file)
@@ -22,3 +22,5 @@
 /yosys-filterlib.html
 /kernel/version_*.cc
 /share
+/yosys-win32-mxebin-*
+/yosys-win32-vcxsrc-*
index 8bcbe612531de3fa930225b4813756dc59f2f0b1..0e3ff6949b8f5ef33a42d04ed4c91bee4e0e4cd6 100644 (file)
@@ -67,32 +67,27 @@ of "foobar.size()". (GetSize() is defined by kernel/yosys.h)
 Use range-based for loops whenever applicable.
 
 
-Building in Visual Studio
-=========================
 
-1. Create an empty Visual C++ Win32 Console App project
-   (recommended name: YosysVS)
-
-2. Close VS and launch "Git Bash" in the project directory
+Creating the Visual Studio Template Project
+===========================================
 
-3. Prepare sources
-
-       git clone https://github.com/cliffordwolf/yosys.git yosys
-       cd yosys
+1. Create an empty Visual C++ Win32 Console App project
 
-       curl -O http://www.clifford.at/yosys/nogit/yosys-win32-<version>.zip
-       unzip yosys-win32-<version>.zip
-       unzip yosys-win32-<version>/genfiles.zip
+       Microsoft Visual Studio Express 2013 for Windows Desktop
+       Open New Project Wizard (File -> New Project..)
 
-4. Add files to VS project
+       Project Name: YosysVS
+       Solution Name: YosysVS
+       [X] Create directory for solution
+       [ ] Add to source control
 
-       notepad vcxproj_files.txt
-       notepad ../YosysVS/YosysVS.vcxproj
+       [X] Console applications
+       [X] Empty Projcect
+       [ ] SDL checks
 
-       (replace the empty <ItemGroup> in YosysVS.vcxproj
-       with the XML text from vcxproj_files.txt)
+2. Open YosysVS Project Properties
 
-5. Open project in VS and go to the project properties:
+       Select Configuration: All Configurations
 
        C/C++ -> General -> Additional Include Directories
                Add: ..\yosys
@@ -100,7 +95,18 @@ Building in Visual Studio
        C/C++ -> Preprocessor -> Preprocessor Definitions
                Add: _YOSYS_;_CRT_SECURE_NO_WARNINGS
 
-6. Build YosysVS
+3. Resulting file system tree:
+
+       YosysVS/
+       YosysVS/YosysVS
+       YosysVS/YosysVS/YosysVS.vcxproj
+       YosysVS/YosysVS/YosysVS.vcxproj.filters
+       YosysVS/YosysVS.sdf
+       YosysVS/YosysVS.sln
+       YosysVS/YosysVS.v12.suo
+
+4. Zip YosysVS as YosysVS-Tpl-v1.zip
+
 
 
 Checklist for adding internal cell types
index c2d1ac0b264f033a06af2ba60360239398a6f062..1819e6c3d7f9b01d06e370111c14e02a8e781b20 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -315,23 +315,21 @@ qtcreator:
 
 ifeq ($(CONFIG),mxe)
 dist: $(TARGETS) $(EXTRA_TARGETS)
-       rm -rf yosys-win32-$(YOSYS_VER)
-       rm -rf yosys-win32-$(YOSYS_VER).zip
-       mkdir -p yosys-win32-$(YOSYS_VER)
-       cp -r yosys.exe share/ yosys-win32-$(YOSYS_VER)/
+       rm -rf yosys-win32-{mxebin,vcxsrc}-$(YOSYS_VER){,.zip}
+       mkdir -p yosys-win32-mxebin-$(YOSYS_VER)
+       cp -r yosys.exe share/ yosys-win32-mxebin-$(YOSYS_VER)/
 ifeq ($(ENABLE_ABC),1)
-       cp -r yosys-abc.exe abc/lib/x86/pthreadVC2.dll yosys-win32-$(YOSYS_VER)/
+       cp -r yosys-abc.exe abc/lib/x86/pthreadVC2.dll yosys-win32-mxebin-$(YOSYS_VER)/
 endif
-       echo -en 'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-$(YOSYS_VER)/readme.txt
-       echo -en 'Documentation at http://www.clifford.at/yosys/.\r\n' >> yosys-win32-$(YOSYS_VER)/readme.txt
+       echo -en 'This is Yosys $(YOSYS_VER) for Win32.\r\n' > yosys-win32-mxebin-$(YOSYS_VER)/readme.txt
+       echo -en 'Documentation at http://www.clifford.at/yosys/.\r\n' >> yosys-win32-mxebin-$(YOSYS_VER)/readme.txt
        sed -e 's,^[^ ]*:,,; s, ,\n,g; s, *\\,,; s,/[^/]*/\.\./,/,g; s,'"$$PWD/"',,' \
                        $(addsuffix .d,$(basename $(OBJS))) | sort -u | grep '^[^/]' | grep -v kernel/version_ > srcfiles.txt
-       { echo '<ItemGroup>'; egrep '\.(h|hh|hpp|inc)$$' srcfiles.txt | sed 's,.*,<ClInclude Include="../yosys/&" />,'; \
-               egrep -v '\.(h|hh|hpp|inc)$$' srcfiles.txt | sed 's,.*,<ClCompile Include="../yosys/&" />,'; echo '</ItemGroup>'; } > vcxproj_files.txt
-       sed -i 's/$$/\r/' srcfiles.txt vcxproj_files.txt
-       zip yosys-win32-$(YOSYS_VER)/genfiles.zip $(GENFILES) srcfiles.txt vcxproj_files.txt
-       zip -r yosys-win32-$(YOSYS_VER).zip yosys-win32-$(YOSYS_VER)/
-       rm -f srcfiles.txt vcxproj_files.txt
+       bash misc/create_vcxsrc.sh yosys-win32-vcxsrc-$(YOSYS_VER)
+       zip yosys-win32-vcxsrc-$(YOSYS_VER)/genfiles.zip $(GENFILES)
+       zip -r yosys-win32-mxebin-$(YOSYS_VER).zip yosys-win32-mxebin-$(YOSYS_VER)/
+       zip -r yosys-win32-vcxsrc-$(YOSYS_VER).zip yosys-win32-vcxsrc-$(YOSYS_VER)/
+       rm -f srcfiles.txt
 endif
 
 config-clean: clean
diff --git a/misc/create_vcxsrc.sh b/misc/create_vcxsrc.sh
new file mode 100644 (file)
index 0000000..eb22393
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+set -ex
+vcxsrc="$1"
+
+rm -rf YosysVS-Tpl-v1.zip YosysVS
+wget http://www.clifford.at/yosys/nogit/YosysVS-Tpl-v1.zip
+
+unzip YosysVS-Tpl-v1.zip
+rm -f YosysVS-Tpl-v1.zip
+mv YosysVS "$vcxsrc"
+
+{
+       n=$(grep -B999 '<ItemGroup>' "$vcxsrc"/YosysVS/YosysVS.vcxproj | wc -l)
+       head -n$n "$vcxsrc"/YosysVS/YosysVS.vcxproj
+       egrep '\.(h|hh|hpp|inc)$' srcfiles.txt | sed 's,.*,<ClInclude Include="../yosys/&" />,'
+       egrep -v '\.(h|hh|hpp|inc)$' srcfiles.txt | sed 's,.*,<ClCompile Include="../yosys/&" />,'
+       tail -n +$((n+1)) "$vcxsrc"/YosysVS/YosysVS.vcxproj
+} > "$vcxsrc"/YosysVS/YosysVS.vcxproj.new
+
+mv "$vcxsrc"/YosysVS/YosysVS.vcxproj.new "$vcxsrc"/YosysVS/YosysVS.vcxproj
+
+mkdir -p "$vcxsrc"/yosys
+tar -cf - -T srcfiles.txt | tar -xf - -C "$vcxsrc"/yosys
+
+cat > "$vcxsrc"/readme-git.txt << EOT
+Using a git working copy for the yosys source code:
+
+Open "Git Bash" in this directory and run:
+
+       mv yosys yosys.bak
+       git clone https://github.com/cliffordwolf/yosys.git yosys
+       cd yosys
+       git checkout -B master $(git rev-parse HEAD | cut -c1-10)
+       unzip ../genfiles.zip
+EOT
+
+sed -i 's/$/\r/; s/\r\r*/\r/g;' "$vcxsrc"/YosysVS/YosysVS.vcxproj "$vcxsrc"/readme-git.txt
+