Use 'deprecated' port compiler hook in rebar to generate a script
diff --git a/.gitignore b/.gitignore
index b43c9fe..fd5ac9e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,6 @@
## Distribution files
*.gz
*.zip
+
+## Temporary script for compiling the port
+build_port.sh
diff --git a/rebar.config b/rebar.config
index 68cf7bd..4bb4e7d 100644
--- a/rebar.config
+++ b/rebar.config
@@ -1,15 +1,17 @@
%% -*- mode: erlang;erlang-indent-level: 2;indent-tabs-mode: nil -*-
{so_specs,
[{"priv/bcrypt_nif.so",
- ["c_src/blowfish.c", "c_src/bcrypt.c", "c_src/bcrypt_nif.c"]},
- {"priv/bcrypt_port.so",
- ["c_src/bcrypt_port.c"]}]}.
+ ["c_src/blowfish.c", "c_src/bcrypt.c", "c_src/bcrypt_nif.c"]}]}.
{erl_opts, [debug_info]}.
+% This ugly hack is necessary because rebar's supported pre and post hooks
+% don't include the environment vars necessary for building port programs.
+{port_pre_script, {"echo -e \"#!/bin/sh\\n$CC $CFLAGS $ERL_CFLAGS "
+ "c_src/bcrypt_port.c c_src/bcrypt.o c_src/blowfish.o "
+ "$LDFLAGS $ERL_LDFLAGS -lpthread "
+ "-o priv/bcrypt\" > build_port.sh",
+ "build_port.sh"}}.
+{port_cleanup_script, "rm -f build_port.sh"}.
{pre_hooks, [{clean, "rm -f priv/bcrypt c_src/bcrypt_port.o"}]}.
-{post_hooks,
- [{compile,
- "gcc -g -O2 -Wall c_src/bcrypt_port.o c_src/bcrypt.o"
- " c_src/blowfish.o -lerl_interface -lei -lpthread"
- " -o priv/bcrypt"}]}.
+{post_hooks, [{compile, "sh build_port.sh"}]}.