|
Packit Service |
7770af |
`libsass` is only a library and does not do much on its own. You need an implementation that you can use from the [command line] [6]. Or some [[bindings|Implementations]] to use it within your favorite programming language. You should be able to get [`sassc`] [6] running by following the instructions in this guide.
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Before starting, see [setup dev environment](setup-environment.md).
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Building on different Operating Systems
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
We try to keep the code as OS independent and standard compliant as possible. Reading files from the file-system has some OS depending code, but will ultimately fall back to a posix compatible implementation. We do use some `C++11` features, but are so far only committed to use `unordered_map`. This means you will need a pretty recent compiler on most systems (gcc 4.5 seems to be the minimum).
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
### Building on Linux (and other *nix flavors)
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Linux is the main target for `libsass` and we support two ways to build `libsass` here. The old plain makefiles should still work on most systems (including MinGW), while the autotools build is preferred if you want to create a [system library] (experimental).
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
- [Building with makefiles] [1]
|
|
Packit Service |
7770af |
- [Building with autotools] [2]
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
### Building on Windows (experimental)
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Windows build support was added very recently and should be considered experimental. Credits go to @darrenkopp and @am11 for their work on getting `libsass` and `sassc` to compile with visual studio!
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
- [Building with MinGW] [3]
|
|
Packit Service |
7770af |
- [Building with Visual Studio] [11]
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
### Building on Max OS X (untested)
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Works the same as on linux, but you can also install LibSass via `homebrew`.
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
- [Building on Mac OS X] [10]
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
### Building a system library (experimental)
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Since `libsass` is a library, it makes sense to install it as a shared library on your system. On linux this means creating a `.so` library via autotools. This should work pretty well already, but we are not yet committed to keep the ABI 100% stable. This should be the case once we increase the version number for the library to 1.0.0 or higher. On Windows you should be able get a `dll` by creating a shared build with MinGW. There is currently no target in the MSVC project files to do this.
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
- [Building shared system library] [4]
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Compiling with clang instead of gcc
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
To use clang you just need to set the appropriate environment variables:
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
```bash
|
|
Packit Service |
7770af |
export CC=/usr/bin/clang
|
|
Packit Service |
7770af |
export CXX=/usr/bin/clang++
|
|
Packit Service |
7770af |
```
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Running the spec test-suite
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
We constantly and automatically test `libsass` against the official [spec test-suite] [5]. To do this we need to have a test-runner (which is written in ruby) and a command-line tool ([`sassc`] [6]) to run the tests. Therefore we need to additionally compile `sassc`. To do this, the build files of all three projects need to work together. This may not have the same quality for all build flavors. You definitely need to have ruby (2.1?) installed (version 1.9 seems to cause problems at least on windows). You also need some gems installed:
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
```bash
|
|
Packit Service |
7770af |
ruby -v
|
|
Packit Service |
7770af |
gem install minitest
|
|
Packit Service |
7770af |
# should be optional
|
|
Packit Service |
7770af |
gem install minitap
|
|
Packit Service |
7770af |
```
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Including the LibSass version
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
There is a function in `libsass` to query the current version. This has to be defined at compile time. We use a C macro for this, which can be defined by calling `g++ -DLIBSASS_VERSION="\"x.y.z.\""`. The two quotes are necessary, since it needs to end up as a valid C string. Normally you do not need to do anything if you use the makefiles or autotools. They will try to fetch the version via git directly. If you only have the sources without the git repo, you can pass the version as an environment variable to `make` or `configure`:
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
```
|
|
Packit Service |
7770af |
export LIBSASS_VERSION="x.y.z."
|
|
Packit Service |
7770af |
```
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Continuous Integration
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
We use two CI services to automatically test all commits against the latest [spec test-suite] [5].
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
- [LibSass on Travis-CI (linux)][7]
|
|
Packit Service |
7770af |
[![Build Status](https://travis-ci.org/sass/libsass.png?branch=master)](https://travis-ci.org/sass/libsass)
|
|
Packit Service |
7770af |
- [LibSass on AppVeyor (windows)][8]
|
|
Packit Service |
7770af |
[![Build status](https://ci.appveyor.com/api/projects/status/github/sass/libsass?svg=true)](https://ci.appveyor.com/project/mgreter/libsass-513/branch/master)
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Why not using CMake?
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
There were some efforts to get `libsass` to compile with CMake, which should make it easier to create build files for linux and windows. Unfortunately this was not completed. But we are certainly open for PRs!
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
Miscellaneous
|
|
Packit Service |
7770af |
--
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
- [Ebuilds for Gentoo Linux](build-on-gentoo.md)
|
|
Packit Service |
7770af |
|
|
Packit Service |
7770af |
[1]: build-with-makefiles.md
|
|
Packit Service |
7770af |
[2]: build-with-autotools.md
|
|
Packit Service |
7770af |
[3]: build-with-mingw.md
|
|
Packit Service |
7770af |
[4]: build-shared-library.md
|
|
Packit Service |
7770af |
[5]: https://github.com/sass/sass-spec
|
|
Packit Service |
7770af |
[6]: https://github.com/sass/sassc
|
|
Packit Service |
7770af |
[7]: https://github.com/sass/libsass/blob/master/.travis.yml
|
|
Packit Service |
7770af |
[8]: https://github.com/sass/libsass/blob/master/appveyor.yml
|
|
Packit Service |
7770af |
[9]: implementations.md
|
|
Packit Service |
7770af |
[10]: build-on-darwin.md
|
|
Packit Service |
7770af |
[11]: build-with-visual-studio.md
|