diff --git a/.gitignore b/.gitignore index 2649c7e..ec2803b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,4 @@ priv *.o *~ _build -c_src/*.d +c_src/**/*.d diff --git a/c_src/sqlite3.c b/c_src/sqlite3/sqlite3.c similarity index 100% rename from c_src/sqlite3.c rename to c_src/sqlite3/sqlite3.c diff --git a/c_src/sqlite3.h b/c_src/sqlite3/sqlite3.h similarity index 100% rename from c_src/sqlite3.h rename to c_src/sqlite3/sqlite3.h diff --git a/rebar.config b/rebar.config deleted file mode 100644 index 33414ff..0000000 --- a/rebar.config +++ /dev/null @@ -1,24 +0,0 @@ -{require_min_otp_vsn, "R15"}. -{port_env, [ - %% Default darwin ldflags causes loading of system sqlite. Removed -bundle flag. - {"darwin", "DRV_LDFLAGS", - "-flat_namespace -undefined suppress $ERL_LDFLAGS"}, - - {"solaris", "CFLAGS", - "-std=c99"}, - - {"linux", "CFLAGS", - "-std=c11"}, - - {"CFLAGS", "$CFLAGS -DSQLITE_THREADSAFE=1 -DSQLITE_USE_URI -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS"} -]}. -{port_specs, [ - {"priv/esqlite3_nif.so", ["c_src/esqlite3_nif.c", "c_src/queue.c", "c_src/sqlite3.c"]} -]}. - -{plugins, [pc]}. - -{provider_hooks, - [{post, - [{compile, {pc, compile}}, - {clean, {pc, clean}}]}]}. diff --git a/rebar.config.script b/rebar.config.script new file mode 100644 index 0000000..9faea70 --- /dev/null +++ b/rebar.config.script @@ -0,0 +1,50 @@ + +NifSharedSources = ["c_src/esqlite3_nif.c", "c_src/queue.c"]. +NifStaticSources = NifSharedSources ++ ["c_src/sqlite3/sqlite3.c"]. +CFlagsDefault = "$CFLAGS -DSQLITE_THREADSAFE=1 -DSQLITE_USE_URI -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS". +DrvLdFlagsDefault = "-shared -lsqlite3". + +DrvLdFlags = + case os:getenv("ESQLITE_CFLAGS") of + NotDefined when NotDefined == false; NotDefined == [] -> DrvLdFlagsDefault; + DrvLdFlagsOverride -> DrvLdFlagsOverride + end. + +{NifSources, LdEnv, CFlagsExt} = + case os:getenv("ESQLITE_USE_SYSTEM") of + NotDefined when NotDefined == false; NotDefined == [] -> {NifStaticSources, [], []}; + _Defined -> {NifSharedSources, [{"DRV_LDFLAGS", DrvLdFlags}], " -Ic_src/sqlite3"} + end. + +CFlags = + case os:getenv("ESQLITE_CFLAGS") of + NotDefined when NotDefined == false; NotDefined == [] -> CFlagsDefault ++ CFlagsExt; + CFlagsOverride -> CFlagsOverride + end. + +[ + {require_min_otp_vsn, "R15"}, + {port_env, [ + %% Default darwin ldflags causes loading of system sqlite. Removed -bundle flag. + {"darwin", "DRV_LDFLAGS", + "-flat_namespace -undefined suppress $ERL_LDFLAGS"}, + + {"solaris", "CFLAGS", + "-std=c99"}, + + {"linux", "CFLAGS", + "-std=c11"}, + + {"CFLAGS", CFlags} + ] ++ LdEnv}, + {port_specs, [ + {"priv/esqlite3_nif.so", NifSources} + ]}, + + {plugins, [pc]}, + + {provider_hooks, + [{post, + [{compile, {pc, compile}}, + {clean, {pc, clean}}]}]} +].