Use gyp's rules functionality to compile .coffee/.cson files
Instead of finding and compiling all .coffee/.cson files in
script/copy-files-to-bundle, we now tell gyp how to do this for us. It
works like this:
1. Rakefile invokes the new script/generate-sources-gypi script to
generate sources.gypi. This file lists all the .coffee/.cson files in
the src, static, and vendor directories, as well as a new
compiled_sources_dir variable that specifies where the compiled
versions of the files should be placed.
2. atom.gyp includes sources.gypi.
3. atom.gyp has a new target, generated_sources, which contains all the
.coffee/.cson files, and uses two rules to tell gyp how to compile
them. The rules invoke the new script/compile-coffee and
script/compile-cson files once for each file.
4. gyp generates one Makefile for each rule to actually perform the
compilation.
5. script/copy-files-to-bundle now takes the compiled_sources_dir
variable as an argument, and copies files both from there and from
the repository into the Resources directory.
By putting the compilation into a different target, we can do it in
parallel with compiling/linking our binaries. And gyp automatically runs
make using -j$(sysctl -n hw.ncpu), so compilation of .coffee/.cson files
happens in parallel, too.
These changes reduce clean build time on my MacBook Pro from 55 seconds
to 46 seconds.
2013-03-04 20:32:06 +04:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# Because of the way xcodebuild invokes external scripts we need to load
|
|
|
|
# The Setup's environment ourselves. If this isn't done, things like the
|
|
|
|
# node shim won't be able to find the stuff they need.
|
|
|
|
|
2013-03-05 01:41:36 +04:00
|
|
|
node --version > /dev/null 2>&1 || {
|
|
|
|
if [ -e /opt/github/env.sh ]; then
|
|
|
|
source /opt/github/env.sh
|
2013-03-05 01:45:40 +04:00
|
|
|
else
|
|
|
|
# Try Constructicon's PATH.
|
|
|
|
export PATH="/usr/local/Cellar/node/0.8.21/bin:${PATH}"
|
2013-03-05 01:41:36 +04:00
|
|
|
fi
|
|
|
|
}
|
Use gyp's rules functionality to compile .coffee/.cson files
Instead of finding and compiling all .coffee/.cson files in
script/copy-files-to-bundle, we now tell gyp how to do this for us. It
works like this:
1. Rakefile invokes the new script/generate-sources-gypi script to
generate sources.gypi. This file lists all the .coffee/.cson files in
the src, static, and vendor directories, as well as a new
compiled_sources_dir variable that specifies where the compiled
versions of the files should be placed.
2. atom.gyp includes sources.gypi.
3. atom.gyp has a new target, generated_sources, which contains all the
.coffee/.cson files, and uses two rules to tell gyp how to compile
them. The rules invoke the new script/compile-coffee and
script/compile-cson files once for each file.
4. gyp generates one Makefile for each rule to actually perform the
compilation.
5. script/copy-files-to-bundle now takes the compiled_sources_dir
variable as an argument, and copies files both from there and from
the repository into the Resources directory.
By putting the compilation into a different target, we can do it in
parallel with compiling/linking our binaries. And gyp automatically runs
make using -j$(sysctl -n hw.ncpu), so compilation of .coffee/.cson files
happens in parallel, too.
These changes reduce clean build time on my MacBook Pro from 55 seconds
to 46 seconds.
2013-03-04 20:32:06 +04:00
|
|
|
|
|
|
|
INPUT_FILE="${1}"
|
2013-03-16 00:32:57 +04:00
|
|
|
OUTPUT_DIR=`dirname "$2"`
|
Use gyp's rules functionality to compile .coffee/.cson files
Instead of finding and compiling all .coffee/.cson files in
script/copy-files-to-bundle, we now tell gyp how to do this for us. It
works like this:
1. Rakefile invokes the new script/generate-sources-gypi script to
generate sources.gypi. This file lists all the .coffee/.cson files in
the src, static, and vendor directories, as well as a new
compiled_sources_dir variable that specifies where the compiled
versions of the files should be placed.
2. atom.gyp includes sources.gypi.
3. atom.gyp has a new target, generated_sources, which contains all the
.coffee/.cson files, and uses two rules to tell gyp how to compile
them. The rules invoke the new script/compile-coffee and
script/compile-cson files once for each file.
4. gyp generates one Makefile for each rule to actually perform the
compilation.
5. script/copy-files-to-bundle now takes the compiled_sources_dir
variable as an argument, and copies files both from there and from
the repository into the Resources directory.
By putting the compilation into a different target, we can do it in
parallel with compiling/linking our binaries. And gyp automatically runs
make using -j$(sysctl -n hw.ncpu), so compilation of .coffee/.cson files
happens in parallel, too.
These changes reduce clean build time on my MacBook Pro from 55 seconds
to 46 seconds.
2013-03-04 20:32:06 +04:00
|
|
|
|
2013-03-16 06:49:19 +04:00
|
|
|
node_modules/.bin/coffee -c -m -o "$OUTPUT_DIR" "$INPUT_FILE"
|