Merge pull request #7 from esl/update_ci

Update ci
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 285b205..5c23cf4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -9,28 +9,56 @@
 
 jobs:
   test:
-    name: OTP ${{matrix.otp}}
+    name: OTP ${{matrix.otp}} / rebar3 ${{matrix.rebar3}} / OS ${{matrix.os}}
     strategy:
       matrix:
-        otp: ['24.0', '23.3', '22.3', '21.3']
-    runs-on: 'ubuntu-20.04'
-    env:
-      OTPVER: ${{ matrix.otp }}
+        os: ['ubuntu-22.04']
+        otp: ['26.1', '25.3', '24.3']
+        rebar3: ['3.22.1']
+        include:
+          - otp: '26.1'
+            rebar3: '3.22.1'
+            os: 'windows-2022'
+    runs-on: ${{matrix.os}}
     steps:
-      - uses: actions/checkout@v2
-      - uses: ErlGang/setup-erlang@v1.0.0
+      - uses: actions/checkout@v3
+      - uses: erlef/setup-beam@v1
         with:
-          otp-version: ${{ matrix.otp }}
-      - run: make rebar3
-      - run: make deps
-      - run: make test
-      - run: make dialyzer
-        if: ${{ matrix.otp == '24.0' }}
-      - run: make codecov
-        if: ${{ matrix.otp == '24.0' }}
-      - run: make gcov
-        if: ${{ matrix.otp == '24.0' }}
-      - run: pip install --user codecov
-        if: ${{ matrix.otp == '24.0' }}
-      - run: /home/runner/.local/bin/codecov
-        if: ${{ matrix.otp == '24.0' }}
+          otp-version: ${{matrix.otp}}
+          rebar3-version: ${{matrix.rebar3}}
+
+      - name: Windows - Enable Developer Command Prompt
+        uses: ilammy/msvc-dev-cmd@v1.12.1
+        if: ${{ matrix.os == 'windows-2022' }}
+      - name: Windows - Install openssl
+        shell: pwsh
+        run: |
+          choco install openssl
+          echo "OPENSSL_INSTALL_DIR=""C:\Program Files\OpenSSL""" >> $env:GITHUB_ENV
+        if: ${{ matrix.os == 'windows-2022' }}
+
+      - name: Restore _build
+        uses: actions/cache@v3
+        with:
+          path: _build
+          key: _build-cache-for-os-${{matrix.os}}-otp-${{matrix.otp}}-rebar3-${{matrix.rebar3}}-hash-${{hashFiles('rebar.lock')}}
+      - name: Restore rebar3's cache
+        uses: actions/cache@v3
+        with:
+          path: ~/.cache/rebar3
+          key: rebar3-cache-for-os-${{matrix.os}}-otp-${{matrix.otp}}-rebar3-${{matrix.rebar3}}-hash-${{hashFiles('rebar.lock')}}
+      - run: rebar3 as test get-deps
+      - run: rebar3 as test compile
+      - run: rebar3 as test ct
+      - run: rebar3 dialyzer
+        if: ${{ matrix.otp == '26.1' && matrix.os == 'ubuntu-22.04' }}
+      - name: Run coverage
+        if: ${{ matrix.otp == '26.1' && matrix.os == 'ubuntu-22.04' }}
+        run: |
+          rebar3 as test codecov analyze
+          gcov -o c_src fast_pbkdf2
+      - name: Upload coverage
+        if: ${{ matrix.otp == '26.1' && matrix.os == 'ubuntu-22.04' }}
+        run: |
+          pip install --user codecov
+          /home/runner/.local/bin/codecov
diff --git a/.gitignore b/.gitignore
index 0154361..e0fa4c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,4 +27,4 @@
 erl_crash.dump
 *.ez
 *.tar
-
+codecov.json
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 43482d7..0000000
--- a/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-.PHONY: rel deps test
-
-REBARVER = 3.15.2
-
-all: deps compile
-
-compile: rebar3
-	./rebar3 compile
-
-deps: rebar3
-	./rebar3 get-deps
-
-clean: rebar3
-	./rebar3 clean
-
-test-deps: rebar3
-	./rebar3 get-deps
-
-test-compile: rebar3 test-deps
-	./rebar3 as test compile
-
-test: test-compile
-	./rebar3 as test ct
-
-codecov: _build/test/cover/ct.coverdata
-	./rebar3 as test codecov analyze
-
-gcov: test-compile
-	gcov -o c_src fast_pbkdf2
-
-rebar3:
-	wget https://github.com/erlang/rebar3/releases/download/${REBARVER}/rebar3 &&\
-	chmod u+x rebar3
-
-dialyzer: rebar3
-	./rebar3 dialyzer
diff --git a/rebar.config b/rebar.config
index f73d7a5..c13fb26 100644
--- a/rebar.config
+++ b/rebar.config
@@ -12,11 +12,13 @@
       {proper, "1.4.0"}
     ]},
     {plugins, [
-      {rebar3_codecov, "0.3.0"}]},
+      {rebar3_codecov, "0.6.0"}]},
       {port_env,
         [
-          {"CFLAGS", "$CFLAGS -std=c99 -O3 -g -Wall -Wextra -fPIC -I/opt/homebrew/include -I/usr/local/include --coverage"},
-          {"LDLIBS", "$LDLIBS -lcrypto -L/opt/homebrew/lib/ -L/usr/local/lib --coverage"}
+          {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+               "$CFLAGS -std=c99 -O0 -g -Wall -Wextra -fPIC --coverage"},
+          {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+               "$LDLIBS -lcrypto --coverage"}
         ]
       }
   ]}
@@ -27,10 +29,12 @@
 
 {port_env,
   [
-    {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", "CFLAGS", "$CFLAGS -std=c99 -O3 -g -Wall -Wextra -fPIC -I/opt/homebrew/include -I/usr/local/include "},
-    {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)", "LDLIBS", "$LDLIBS -lcrypto -L/opt/homebrew/lib/ -L/usr/local/lib"},
-    {"win32", "CFLAGS", "$CFLAGS /O2 /DNDEBUG /Wall"},
-    {"win32", "LDLIBS", "$LDLIBS libcrypto.lib"},
+    {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+         "CFLAGS", "$CFLAGS -std=c99 -O3 -g -Wall -Wextra -fPIC"},
+    {"(linux|solaris|freebsd|netbsd|openbsd|dragonfly|darwin|gnu)",
+         "LDLIBS", "$LDLIBS -lcrypto"},
+    {"win32", "CFLAGS", "$CFLAGS /I${OPENSSL_INSTALL_DIR}/include /O2 /DNDEBUG /Wall"},
+    {"win32", "LDLIBS", "$LDLIBS /LIBPATH:${OPENSSL_INSTALL_DIR}/lib libcrypto.lib"},
     {"DRV_LINK_TEMPLATE", "$DRV_LINK_TEMPLATE $LDLIBS"}
   ]
 }.