Commit graph

84 commits

Author SHA1 Message Date
José Valim
61c353dcfd Support environment vars with unicode characters
The results returned by os:getenv() may contain unicode characters.
That said, we need to explicitly allow unicode when splitting the
environment information, otherwise badarg will be raised causing all
rebar commands to fail until the environment variable is removed.
2012-11-22 01:30:49 +08:00
Dave Smith
7dad2b384b Be sure to filter empty sources (h/t to Tuncer and Joe Norton) 2012-11-12 20:18:00 -07:00
Dave Smith
9ac6c25f6d Restore support for so_name, port_envs and port_sources 2012-11-11 13:03:24 -07:00
Tuncer Ayaz
f0bf3503cb Update port_env for Mountain Lion (Noticed-by: Tony Rogvall) 2012-09-01 11:13:34 +02:00
Tuncer Ayaz
0b18b208e2 Only print absolute filename if not in base_dir 2012-08-05 19:56:27 +02:00
Tuncer Ayaz
636c02f0be Fix R13B03 build (Reported-by: Sergey Nartimov) 2012-07-28 19:51:57 +02:00
Joseph Wayne Norton
2d62896de0 Fix -D handling 2012-07-28 19:36:46 +02:00
Tuncer Ayaz
f6cfc74dc0 Fix indenting 2012-07-23 20:41:22 +02:00
Tuncer Ayaz
c648af3697 Finalize port_compiler deprecations 2012-07-23 20:41:22 +02:00
Tuncer Ayaz
252757c753 Do not use application:set_env 2012-07-23 13:17:11 +02:00
Tuncer Ayaz
e185e86bff Remove shared state 2012-07-13 15:21:56 +02:00
Dave Smith
ce39b1d8bd Merge pull request #157 from dch/dch-windows-msvc-support
add native Windows compiler support
2012-07-11 07:58:51 -07:00
Tuncer Ayaz
0f961d86c6 Fix #247 (Reported-by: Uvarov Michael) 2012-06-17 16:11:59 +02:00
Tuncer Ayaz
4e64e0c675 Manually format port_compiler errors with absolute path 2012-06-11 19:40:59 +02:00
Dave Cottlehuber
83509e9982 Windows: add native SDK support
- compatible with rebar 2.0.0
2012-06-08 15:47:39 +02:00
Tuncer Ayaz
635d1a9456 Fix file extension bug (Reported-by: Tony Rogvall) 2012-05-14 22:26:42 +02:00
Tuncer Ayaz
dc472bd958 Do not use inherited port options 2012-04-23 23:14:03 +02:00
Tuncer Ayaz
7c418ed2b4 Add support for target-specific port options
{port_specs, [{".*", "priv/foo.so", ["c_src/foo.c"], [{env, []}]}]}.
2012-04-16 23:17:24 +02:00
Tuncer Ayaz
9d5557b16f Deprecate port_envs in favor of port_env 2012-03-09 20:21:26 +01:00
Tuncer Ayaz
1a613d6123 Remove debug log 2012-02-12 18:43:40 +01:00
Tuncer Ayaz
b48cc0c7eb Fix regression in port_compiler needs_link check 2012-02-10 23:02:53 +01:00
Tuncer Ayaz
1c1a32b8ba Use lists:flatmap/2 2012-02-07 20:11:50 +01:00
Tuncer Ayaz
6898eff2c7 Rework port compiler support
* consolidate options
 * add support for building executables
2012-02-03 16:26:14 +01:00
Tuncer Ayaz
194f3caa3f Fix -D and -v handling with new getopt.erl 2012-01-29 17:48:55 +01:00
Tuncer Ayaz
4d2d3c3af3 Remove port_first_files support 2012-01-09 13:05:23 +01:00
Jesse Gumm
9f31ceae00 Fail if erl_interface not found
Previously if erl_interface could not be found {error, not_found} was
incorrectly used as a path. With this change we fail early with a
descriptive error message.
2011-12-08 20:12:16 +01:00
Tim Watson
0e3e94c253 Add support for first_files to port compiler
This patch adds support for first_files to the port_compiler, via the
new `port_first_files` rebar config element.
2011-11-30 19:39:23 +01:00
Tuncer Ayaz
d2cf35ad02 Remove obsolete comments (thanks Tim Watson) 2011-11-04 18:53:36 +01:00
Tuncer Ayaz
c373f29292 Fix comments and formatting 2011-10-26 23:16:36 +02:00
Dave Smith
17616d1078 Overhaul environment expansion for better performance
The introduction of setup_env as a global concept caused the rebar_port_compiler
implementation to start getting called a LOT. The expansion of environment variables
that happens in the port compiler was O(n^n), which means you could see upwards of
80k invocations of lists:foldl on a single app "./rebar clean". This commit reworks
the expansion to be O(n^2), and reduces the running time for the same operation by
60%+. On a large project like Riak, the end result is that a build went from 200
seconds to 73.
2011-10-26 23:16:36 +02:00
Tuncer Ayaz
28b9cebf0a Add -D support to rebar_port_compiler 2011-10-23 01:12:54 +02:00
Tuncer Ayaz
8fb385f312 Limit line length 2011-08-20 18:26:59 +02:00
Jan Klötzke
7ec9b48d50 Support command invocation on Windows without MSYS
If MSYS (with bash) is not installed on Windows then do the shell
variable substitution by ourselves. Otherwise just call bash to do the
job.
2011-08-20 18:20:26 +02:00
Tuncer Ayaz
1ef230262b Extend port compiler default env for Darwin 11 32-bit 2011-08-01 16:36:35 +02:00
Tuncer Ayaz
1e342faee8 Apply Tidier suggestions 2011-06-02 22:09:11 +02:00
Juhani Rankimies
8eb1fc8308 Make port compilation template configurable
- Port compiler no longer requires bash on windows.
- It's possible to use compilers whose command lines don't fit into
  the default template
2011-06-02 20:13:00 +02:00
Tuncer Ayaz
3a8b4d5e8f Cleanup deprecations now that R14B03 is released 2011-05-31 11:15:18 +02:00
Tuncer Ayaz
70137292e1 Extract code to get wordsize into helper function 2011-05-31 10:52:23 +02:00
Steve Vinoski
0bbb2985f0 Use external wordsize to get emulator build arch
Calling erlang:system_info(wordsize) yields the internal word size of
the Erlang emulator. But due to the halfword emulator, need to pass
{wordsize, external} instead to get the word size, or pointer size, as
seen by external code such as NIFs. The halfword emulator has 4 byte
internal words but 8 byte external words due to 64-bit compilation,
which means NIFs for the halfword emulator also have to be compiled
64-bit. But just passing wordsize is equivalent to passing {wordsize,
internal}, which does not indicate the pointer size for the halfword
emulator.

Older versions of Erlang do not support {wordsize, external}, though,
so continue to pass just wordsize for those versions.
2011-05-31 10:47:45 +02:00
Andrew Tunnell-Jones
aef6c70f59 Change arch-specific port_sources to take a list
Change the second parameter of a regex tagged port_source from being a
filename or wildcard to being a list of filenames or wildcards.

Previously: {"R14", "c_src/*.c"}
Now: {"R14", ["c_src/*.c"]}

Motivation for change is to avoid repeating regexes.
2011-05-28 15:31:51 +02:00
Tuncer Ayaz
1628879b21 Fix leftover whitespace errors 2011-05-23 16:32:22 +02:00
Tuncer Ayaz
892dc48a86 Fix indentation errors 2011-05-23 12:24:55 +02:00
Tuncer Ayaz
39f8b344bc Fix indentation errors 2011-05-21 16:46:55 +02:00
Anthony Molinaro
bc5aebcf5f Change logic to support more port env use cases
The logic changes from strict overrides to a hybrid for merging os_env
and defaults, whereby defaults are chosen if they are not set in the
os_env or if the defaults contains substitutions (at which point os
environment is substituted).

This still means that rebar.config works as it did before, where it
overrides or substitutes based on the use of $VAR, but that default
and os environment merging works such that the common cases of
providing CC or LDFLAGS in the users environment or command line work
as you might expect.  In that CC is overriden by the os environment
unless rebar.config overrides it, and LDFLAGS from the user environment
is appended or prepended based on defaults and rebar.config.

Addresses problems with https://github.com/basho/rebar/pull/71
Also keeps the fix for bug 255.
2011-05-13 10:23:08 -07:00
Tuncer Ayaz
096e56d61c Fix code readability in port_compiler 2011-05-12 00:14:25 +02:00
Tuncer Ayaz
f51e3df3b9 Add missing newline in port_compiler debug msg 2011-04-28 18:39:46 +02:00
Tuncer Ayaz
20dfd32c85 Add support for command-specific env for hooks 2011-04-21 21:38:16 +02:00
Tuncer Ayaz
055ac99d6f Deprecate fail_on_warning and refactor code 2011-04-07 21:56:53 +02:00
Tuncer Ayaz
4ceb9e07a3 Deprecate old hooks 2011-03-12 16:48:16 +01:00
Tuncer Ayaz
63de05d914 Clean up code 2011-02-06 17:41:04 +01:00