Blame docs/build-on-windows.md

Packit bfcc33
We support builds via MingGW and via Visual Studio Community 2013.
Packit bfcc33
Both should be considered experimental (MinGW was better tested)!
Packit bfcc33
Packit bfcc33
## Building via MingGW (makefiles)
Packit bfcc33
Packit bfcc33
First grab the latest [MinGW for windows] [1] installer. Once it is installed, you can click on continue or open the Installation Manager via `bin\mingw-get.exe`.
Packit bfcc33
Packit bfcc33
You need to have the following components installed:
Packit bfcc33
![Visualization of components installed in the interface](https://cloud.githubusercontent.com/assets/282293/5525466/947bf396-89e6-11e4-841d-4aa916f14de1.png)
Packit bfcc33
Packit bfcc33
Next we need to install [git for windows] [2]. You probably want to check the option to add it to the global path, but you do not need to install the unix tools.
Packit bfcc33
Packit bfcc33
If you want to run the spec test-suite you also need [ruby] [3] and a few gems available. Grab the [latest installer] [3] and make sure to add it the global path. Then install the missing gems:
Packit bfcc33
Packit bfcc33
```bash
Packit bfcc33
gem install minitest
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Mount the mingw root directory
Packit bfcc33
Packit bfcc33
As mentioned in the [MinGW Getting Started](http://www.mingw.org/wiki/Getting_Started#toc5) guide, you should edit `C:\MinGW\msys\1.0\etc\fstab` to contain the following line:
Packit bfcc33
Packit bfcc33
```
Packit bfcc33
C:\MinGW   /mingw
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Starting a "MingGW" console
Packit bfcc33
Packit bfcc33
Create a batch file with this content:
Packit bfcc33
```bat
Packit bfcc33
@echo off
Packit bfcc33
set PATH=C:\MinGW\bin;%PATH%
Packit bfcc33
REM only needed if not already available
Packit bfcc33
set PATH=%PROGRAMFILES%\git\bin;%PATH%
Packit bfcc33
REM C:\MinGW\msys\1.0\msys.bat
Packit bfcc33
cmd
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
Execute it and make sure these commands can be called: `git`, `mingw32-make`, `rm` and `gcc`! Once this is all set, you should be ready to compile `libsass`!
Packit bfcc33
Packit bfcc33
### Get the sources
Packit bfcc33
Packit bfcc33
```bash
Packit bfcc33
# using git is preferred
Packit bfcc33
git clone https://github.com/sass/libsass.git
Packit bfcc33
# only needed for sassc and/or testsuite
Packit bfcc33
git clone https://github.com/sass/sassc.git libsass/sassc
Packit bfcc33
git clone https://github.com/sass/sass-spec.git libsass/sass-spec
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Decide for static or shared library
Packit bfcc33
Packit bfcc33
`libsass` can be built and linked as a `static` or as a `shared` library. The default is `static`. To change it you can set the `BUILD` environment variable:
Packit bfcc33
Packit bfcc33
```bat
Packit bfcc33
set BUILD="shared"
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Compile the library
Packit bfcc33
```bash
Packit bfcc33
mingw32-make -C libsass
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Results can be found in
Packit bfcc33
```bash
Packit bfcc33
$ ls libsass/lib
Packit bfcc33
libsass.a  libsass.dll  libsass.so
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Run the spec test-suite
Packit bfcc33
```bash
Packit bfcc33
mingw32-make -C libsass test_build
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
## Building via MingGW 64bit (makefiles)
Packit bfcc33
Building libass to dll on window 64bit.
Packit bfcc33
Packit bfcc33
+ downloads  [MinGW64 for windows7 64bit](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-win32/seh/x86_64-4.9.2-release-win32-seh-rt_v3-rev0.7z/download) , and unzip to "C:\mingw64".
Packit bfcc33
Packit bfcc33
+ Create a batch file with this content:
Packit bfcc33
Packit bfcc33
```bat
Packit bfcc33
@echo off
Packit bfcc33
set PATH=C:\mingw64\bin;%PATH%
Packit bfcc33
set CC=gcc
Packit bfcc33
REM only needed if not already available
Packit bfcc33
set PATH=%PROGRAMFILES%\Git\bin;%PATH%
Packit bfcc33
REM C:\MinGW\msys\1.0\msys.bat
Packit bfcc33
cmd
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
+ By default , mingw64 dll will depends on "​m​i​n​g​w​m​1​0​.​d​l​l​、​ ​l​i​b​g​c​c​_​s​_​d​w​2​-​1​.​d​l​l​" , we can modify Makefile to fix this:(add "-static")
Packit bfcc33
Packit bfcc33
``` bash
Packit bfcc33
lib/libsass.dll: $(COBJECTS) $(OBJECTS) $(RCOBJECTS)
Packit bfcc33
	$(MKDIR) lib
Packit bfcc33
	$(CXX) -shared $(LDFLAGS) -o $@ $(COBJECTS) $(OBJECTS) $(RCOBJECTS) $(LDLIBS) -s -static -Wl,--subsystem,windows,--out-implib,lib/libsass.a
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
+ Compile the library
Packit bfcc33
Packit bfcc33
```bash
Packit bfcc33
mingw32-make -C libsass
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
By the way , if you are using java jna , [JNAerator](http://jnaerator.googlecode.com/) is a good tool.
Packit bfcc33
Packit bfcc33
## Building via Visual Studio Community 2013
Packit bfcc33
Packit bfcc33
Open a Visual Studio 2013 command prompt:
Packit bfcc33
- `VS2013 x86 Native Tools Command Prompt`
Packit bfcc33
Packit bfcc33
Note: When I installed the community edition, I only got the 2012 command prompts. I copied them from the Startmenu to the Desktop and adjusted the paths from `Visual Studio 11.0` to `Visual Studio 12.0`. Since `libsass` uses some `C++11` features, you need at least a MSVC 2013 compiler (v120).
Packit bfcc33
Packit bfcc33
### Get the source
Packit bfcc33
```bash
Packit bfcc33
# using git is preferred
Packit bfcc33
git clone https://github.com/sass/libsass.git
Packit bfcc33
git clone https://github.com/sass/sassc.git libsass/sassc
Packit bfcc33
# only needed if you want to run the testsuite
Packit bfcc33
git clone https://github.com/sass/sass-spec.git libsass/sass-spec
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
### Compile sassc
Packit bfcc33
Packit bfcc33
Sometimes `msbuild` seems not available from the command prompt. Just search for it and add it to the global path. It seems to be included in the .net folders too.
Packit bfcc33
Packit bfcc33
```bat
Packit bfcc33
cd libsass
Packit bfcc33
REM set PATH=%PATH%;%PROGRAMFILES%\MSBuild\12.0\Bin
Packit bfcc33
msbuild /m:4 /p:Configuration=Release win\libsass.sln
Packit bfcc33
REM running the spec test-suite manually (needs ruby and minitest gem)
Packit bfcc33
ruby sass-spec\sass-spec.rb -V 3.4 -c win\bin\sassc.exe -s --impl libsass sass-spec/spec
Packit bfcc33
cd ..
Packit bfcc33
```
Packit bfcc33
Packit bfcc33
[1]: http://sourceforge.net/projects/mingw/files/latest/download?source=files
Packit bfcc33
[2]: https://msysgit.github.io/
Packit bfcc33
[3]: http://rubyinstaller.org/