Commit fb3eb14f by Marcin Cieslak

Build with the unbundled libsass

Use environment variables to control
how libsass is linked:

LIBSASS_EXT variable empty or unset

Build a bundled libsass source
(from src/libsass).
This is the default.

LIBSASS_EXT=auto

libsass is located using pkg-config
and linked dynamically

LIBSASS_EXT=yes
LIBSASS_CFLAGS=    compiler flags
LIBSASS_LDFLAGS=   linker flags
LIBSASS_LIBRARY=   library to link

Link libsass manually, by adding
compiler and linker flags.

For example this way libsass can
be linked in statically (on Unix):

LIBSASS_EXT=yes
LIBSASS_CFLAGS=-I/usr/local/include
LIBSASS_LIBRARY=/usr/local/lib/libsass.a

When using LIBSASS_EXT there is no need
to checkout the libsass source into src/libsass submodule
and the library from the package management
system can be used.

PR: #139
PR: #389
PR: #744
parent c97411ee
...@@ -4,56 +4,43 @@ ...@@ -4,56 +4,43 @@
'target_name': 'binding', 'target_name': 'binding',
'sources': [ 'sources': [
'src/binding.cpp', 'src/binding.cpp',
'src/sass_context_wrapper.cpp', 'src/sass_context_wrapper.cpp'
'src/libsass/ast.cpp',
'src/libsass/base64vlq.cpp',
'src/libsass/bind.cpp',
'src/libsass/cencode.c',
'src/libsass/constants.cpp',
'src/libsass/context.cpp',
'src/libsass/contextualize.cpp',
'src/libsass/copy_c_str.cpp',
'src/libsass/error_handling.cpp',
'src/libsass/eval.cpp',
'src/libsass/expand.cpp',
'src/libsass/extend.cpp',
'src/libsass/file.cpp',
'src/libsass/functions.cpp',
'src/libsass/inspect.cpp',
'src/libsass/json.cpp',
'src/libsass/node.cpp',
'src/libsass/output_compressed.cpp',
'src/libsass/output_nested.cpp',
'src/libsass/parser.cpp',
'src/libsass/prelexer.cpp',
'src/libsass/remove_placeholders.cpp',
'src/libsass/sass.cpp',
'src/libsass/sass2scss.cpp',
'src/libsass/sass_context.cpp',
'src/libsass/sass_functions.cpp',
'src/libsass/sass_util.cpp',
'src/libsass/sass_values.cpp',
'src/libsass/source_map.cpp',
'src/libsass/to_c.cpp',
'src/libsass/to_string.cpp',
'src/libsass/units.cpp',
'src/libsass/utf8_string.cpp',
'src/libsass/util.cpp'
], ],
'include_dirs': [ 'include_dirs': [
'<!(node -e "require(\'nan\')")' '<!(node -e "require(\'nan\')")',
],
'cflags!': [
'-fno-exceptions'
],
'cflags_cc!': [
'-fno-exceptions'
],
'cflags_cc': [
'-fexceptions',
'-frtti'
], ],
'conditions': [ 'conditions': [
['libsass_ext == ""', {
'dependencies': [
'libsass.gyp:libsass',
]
}],
['libsass_ext == "auto"', {
'cflags_cc': [
'<!(pkg-config --cflags libsass)',
],
'link_settings': {
'ldflags': [
'<!(pkg-config --libs-only-other --libs-only-L libsass)',
],
'libraries': [
'<!(pkg-config --libs-only-l libsass)',
],
}
}],
['libsass_ext == "yes"', {
'cflags_cc': [
'<(libsass_cflags)',
],
'link_settings': {
'ldflags': [
'<(libsass_ldflags)',
],
'libraries': [
'<(libsass_library)',
],
}
}],
['OS=="mac"', { ['OS=="mac"', {
'xcode_settings': { 'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS': [ 'OTHER_CPLUSPLUSFLAGS': [
...@@ -67,7 +54,7 @@ ...@@ -67,7 +54,7 @@
'GCC_ENABLE_CPP_RTTI': 'YES', 'GCC_ENABLE_CPP_RTTI': 'YES',
'MACOSX_DEPLOYMENT_TARGET': '10.7' 'MACOSX_DEPLOYMENT_TARGET': '10.7'
} }
}], }],
['OS=="win"', { ['OS=="win"', {
'msvs_settings': { 'msvs_settings': {
'VCCLCompilerTool': { 'VCCLCompilerTool': {
......
{
'targets': [
{
'target_name': 'libsass',
'type': 'static_library',
'sources': [
'src/libsass/ast.cpp',
'src/libsass/base64vlq.cpp',
'src/libsass/bind.cpp',
'src/libsass/cencode.c',
'src/libsass/constants.cpp',
'src/libsass/context.cpp',
'src/libsass/contextualize.cpp',
'src/libsass/copy_c_str.cpp',
'src/libsass/error_handling.cpp',
'src/libsass/eval.cpp',
'src/libsass/expand.cpp',
'src/libsass/extend.cpp',
'src/libsass/file.cpp',
'src/libsass/functions.cpp',
'src/libsass/inspect.cpp',
'src/libsass/json.cpp',
'src/libsass/node.cpp',
'src/libsass/output_compressed.cpp',
'src/libsass/output_nested.cpp',
'src/libsass/parser.cpp',
'src/libsass/prelexer.cpp',
'src/libsass/remove_placeholders.cpp',
'src/libsass/sass.cpp',
'src/libsass/sass2scss.cpp',
'src/libsass/sass_context.cpp',
'src/libsass/sass_functions.cpp',
'src/libsass/sass_util.cpp',
'src/libsass/sass_values.cpp',
'src/libsass/source_map.cpp',
'src/libsass/to_c.cpp',
'src/libsass/to_string.cpp',
'src/libsass/units.cpp',
'src/libsass/utf8_string.cpp',
'src/libsass/util.cpp'
],
'cflags!': [
'-fno-exceptions'
],
'cflags_cc!': [
'-fno-exceptions'
],
'cflags_cc': [
'-fexceptions',
'-frtti'
],
'direct_dependent_settings': {
'include_dirs': [ 'src/libsass' ],
},
'conditions': [
['OS=="mac"', {
'xcode_settings': {
'OTHER_CPLUSPLUSFLAGS': [
'-std=c++11',
'-stdlib=libc++'
],
'OTHER_LDFLAGS': [
'-stdlib=libc++'
],
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
'GCC_ENABLE_CPP_RTTI': 'YES',
'MACOSX_DEPLOYMENT_TARGET': '10.7'
}
}],
['OS=="win"', {
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': [
'/GR',
'/EHsc'
]
}
},
'msvs_disabled_warnings': [
# conversion from `double` to `size_t`, possible loss of data
4244,
# decorated name length exceeded
4503
]
}],
['OS!="win"', {
'cflags_cc+': [
'-std=c++0x'
]
}]
]
}
]
}
...@@ -53,7 +53,15 @@ function afterBuild(options) { ...@@ -53,7 +53,15 @@ function afterBuild(options) {
*/ */
function build(options) { function build(options) {
var arguments = [path.join('node_modules', 'pangyp', 'bin', 'node-gyp'), 'rebuild'].concat(options.args); var arguments = [
path.join('node_modules', 'pangyp', 'bin', 'node-gyp'),
'rebuild',
].concat(
[ 'libsass_ext', 'libsass_cflags',
'libsass_ldflags', 'libsass_library' ].map(function(subject) {
return ['--', subject, '=', process.env[subject.toUpperCase()] || ''].join('');
})
).concat(options.args);
console.log(['Building:', process.sass.runtime.execPath].concat(arguments).join(' ')); console.log(['Building:', process.sass.runtime.execPath].concat(arguments).join(' '));
......
#include <stdlib.h> #include <stdlib.h>
#include <nan.h> #include <nan.h>
#include <condition_variable> #include <condition_variable>
#include "libsass/sass_context.h" #include <sass_context.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment