IMMUNIO_DIR = File.expand_path('../../../lib/immunio', __FILE__) LUA_HOOKS_DIR = File.expand_path('../../../lua-hooks', __FILE__) LUAJIT_SRC_DIR = File.join(LUA_HOOKS_DIR, 'ext/luajit/src') LIBIMMUNIO_SO = File.join(IMMUNIO_DIR, 'libimmunio.so') LIBLUAHOOKS_A = File.join(LUA_HOOKS_DIR, "libluahooks.#{Gem::Platform.local.os}.a") LIBLUAJIT_A = File.join(LUAJIT_SRC_DIR, 'libluajit.a') task :default do sh "make XCFLAGS='-fPIC -DLUAJIT_ENABLE_GC64' -C #{LUAJIT_SRC_DIR} #{File.basename(LIBLUAJIT_A)}" os_type = %x{uname}.strip if os_type == 'Darwin' sh "cc -shared -o #{LIBIMMUNIO_SO} -Wl,-all_load #{LIBLUAJIT_A} #{LIBLUAHOOKS_A}" else sh "cc -shared -o #{LIBIMMUNIO_SO} -Wl,--whole-archive #{LIBLUAJIT_A} #{LIBLUAHOOKS_A} -Wl,--no-whole-archive" end end