Detect FDB_API_VERSION from fdbcli --version
diff --git a/rebar.config b/rebar.config
index 148d1f2..559bcac 100644
--- a/rebar.config
+++ b/rebar.config
@@ -17,29 +17,7 @@
     {"priv/erlfdb_nif.so", ["c_src/*.c"]}
 ]}.
 
-{port_env, [
-    {
-        "(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
-        "CFLAGS",
-        "$CFLAGS -I/usr/local/include -Ic_src/ -g -Wall -Werror"
-    },
-    {
-        "win32",
-        "CFLAGS",
-        "$CFLAGS /I\"c:/Program Files/foundationdb/include\" /O2 /DNDEBUG"
-    },
-
-    {
-        "(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
-        "LDFLAGS",
-        "$LDFLAGS -L/usr/local/lib -lfdb_c"
-    },
-    {
-        "win32",
-        "LDFLAGS",
-        "$LDFLAGS /LIBPATH:\"c:/Program Files/foundationdb/lib/foundationdb\" fdb_c.lib"
-    }
-]}.
+% port_env compile / link flags dynamically generated in rebar.config.script
 
 {profiles, [
     {devcontainer, [
diff --git a/rebar.config.script b/rebar.config.script
new file mode 100644
index 0000000..7a8dbb6
--- /dev/null
+++ b/rebar.config.script
@@ -0,0 +1,34 @@
+% Hacky means to extract API version from fdbcli protocol version output
+% See https://github.com/apple/foundationdb/blob/master/flow/ProtocolVersion.h
+MaxAPIVersion =
+    begin
+        VsnInfo = os:cmd("fdbcli --version"),
+        {match, [ProtocolStr]} = re:run(VsnInfo, "protocol ([a-f0-9]*)", [{capture, [1], list}]),
+        ProtocolVsn = list_to_integer(ProtocolStr, 16),
+        APIVersionBytes = (ProtocolVsn band 16#0000000FFF00000) bsr 20,
+        integer_to_list(APIVersionBytes, 16)
+    end.
+
+[{port_env, [
+    {
+        "(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+        "CFLAGS",
+        "$CFLAGS -I/usr/local/include -Ic_src/ -g -Wall -Werror -DFDB_API_VERSION=" ++ MaxAPIVersion
+    },
+    {
+        "win32",
+        "CFLAGS",
+        "$CFLAGS /I\"c:/Program Files/foundationdb/include\" /O2 /DNDEBUG /DFDB_API_VERSION=" ++ MaxAPIVersion
+    },
+
+    {
+        "(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+        "LDFLAGS",
+        "$LDFLAGS -L/usr/local/lib -lfdb_c"
+    },
+    {
+        "win32",
+        "LDFLAGS",
+        "$LDFLAGS /LIBPATH:\"c:/Program Files/foundationdb/lib/foundationdb\" fdb_c.lib"
+    }
+]}] ++ CONFIG.