diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5e5f4f..8ab3242 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,3 +35,27 @@ jobs: luarocks install lua-cjson2 luarocks install busted busted --verbose + + windows: + strategy: + fail-fast: false + matrix: + lua: [lua=5.1, lua=5.2, lua=5.3, lua=5.4, luajit=2.0, luajit=2.1] + runs-on: windows-2022 + steps: + # Checks-out the repository under $GITHUB_WORKSPACE. + - uses: actions/checkout@v3 + - name: Install Lua (${{ matrix.lua }}) + run: | + pip install hererocks + hererocks lua_install -r^ --${{ matrix.lua }} + - name: Build lua-simdjson + run: | + .\lua_install\bin\activate + luarocks make + - name: Run tests + run: | + .\lua_install\bin\activate + luarocks install MSVCRT="m" lua-cjson2 + luarocks install MSVCRT="m" busted + busted --verbose diff --git a/.gitignore b/.gitignore index d01e942..f51e955 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ test/ -*.so \ No newline at end of file +*.so +*.dll diff --git a/Makefile b/Makefile index ba606a1..a0d5662 100644 --- a/Makefile +++ b/Makefile @@ -3,13 +3,32 @@ INCLUDE = -I$(LUA_INCDIR) LIBS = -lpthread FLAGS = -std=c++11 -Wall $(LIBFLAG) $(CFLAGS) -all: simdjson.so +ifdef LUA_LIBDIR +FLAGS += $(LUA_LIBDIR)/$(LUALIB) +endif -simdjson.so: - $(CXX) $(SRC) $(FLAGS) $(INCLUDE) $(LIBS) -o $@ +ifeq ($(OS),Windows_NT) + LIBEXT = dll +else + UNAME := $(shell uname -s) + ifeq ($(findstring MINGW,$(UNAME)),MINGW) + LIBEXT = dll + else ifeq ($(findstring CYGWIN,$(UNAME)),CYGWIN) + LIBEXT = dll + else + LIBEXT = so + endif +endif + +TARGET = simdjson.$(LIBEXT) + +all: $(TARGET) + +$(TARGET): + $(CXX) $(SRC) $(FLAGS) $(INCLUDE) $(LIBS_PATH) $(LIBS) -o $@ clean: - rm *.so + rm *.$(LIBEXT) -install: simdjson.so - cp simdjson.so $(INST_LIBDIR) +install: $(TARGET) + cp $(TARGET) $(INST_LIBDIR) diff --git a/lua-simdjson-0.0.2-1.rockspec b/lua-simdjson-0.0.2-1.rockspec index 8b1ec5e..9ff5982 100644 --- a/lua-simdjson-0.0.2-1.rockspec +++ b/lua-simdjson-0.0.2-1.rockspec @@ -31,4 +31,12 @@ build = { INST_LUADIR="$(LUADIR)", INST_CONFDIR="$(CONFDIR)", }, + platforms = { + windows = { + build_variables = { + LUA_LIBDIR="$(LUA_LIBDIR)", + LUALIB="$(LUALIB)", + } + } + } }