소스 검색

Fix #2148 (#2173)

* Fix #2148

* Removed 32bit environment

* buld-error-check-on-32bit

* Use 32bit depedency from Windows
yhirose 7 달 전
부모
커밋
52163ed982
2개의 변경된 파일38개의 추가작업 그리고 9개의 파일을 삭제
  1. 23 5
      .github/workflows/test.yaml
  2. 15 4
      httplib.h

+ 23 - 5
.github/workflows/test.yaml

@@ -40,7 +40,7 @@ jobs:
           clang-format --version
           cd test && make style_check
 
-  ubuntu:
+  build-error-check-on-32bit:
     runs-on: ubuntu-latest
     if: >
       (github.event_name == 'push') ||
@@ -53,10 +53,28 @@ jobs:
         - arch_flags: -m32
           arch_suffix: :i386
           name: (32-bit)
-        - arch_flags:
-          arch_suffix:
-          name: (64-bit)
-    name: ubuntu ${{ matrix.config.name }}
+    steps:
+      - name: checkout
+        uses: actions/checkout@v4
+      - name: install libraries
+        run: |
+          sudo dpkg --add-architecture i386
+          sudo apt-get update
+          sudo apt-get install -y libc6-dev${{ matrix.config.arch_suffix }} libstdc++-13-dev${{ matrix.config.arch_suffix }} \
+            libssl-dev${{ matrix.config.arch_suffix }} libcurl4-openssl-dev${{ matrix.config.arch_suffix }} \
+            zlib1g-dev${{ matrix.config.arch_suffix }} libbrotli-dev${{ matrix.config.arch_suffix }} \
+            libzstd-dev${{ matrix.config.arch_suffix }}
+      - name: build and run tests (expect failure)
+        run: cd test && make test EXTRA_CXXFLAGS="${{ matrix.config.arch_flags }}"
+        continue-on-error: true
+
+  ubuntu:
+    runs-on: ubuntu-latest
+    if: >
+      (github.event_name == 'push') ||
+      (github.event_name == 'pull_request'  &&
+       github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name) ||
+      (github.event_name == 'workflow_dispatch' && github.event.inputs.test_linux == 'true')
     steps:
       - name: checkout
         uses: actions/checkout@v4

+ 15 - 4
httplib.h

@@ -10,6 +10,21 @@
 
 #define CPPHTTPLIB_VERSION "0.22.0"
 
+/*
+ * Platform compatibility check
+ */
+
+#if defined(_WIN32) && !defined(_WIN64)
+#error                                                                         \
+    "cpp-httplib doesn't support 32-bit Windows. Please use a 64-bit compiler."
+#elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ < 8
+#error                                                                         \
+    "cpp-httplib doesn't support 32-bit platforms. Please use a 64-bit compiler."
+#elif defined(__SIZEOF_SIZE_T__) && __SIZEOF_SIZE_T__ < 8
+#error                                                                         \
+    "cpp-httplib doesn't support platforms where size_t is less than 64 bits."
+#endif
+
 /*
  * Configuration
  */
@@ -177,11 +192,7 @@
 
 #pragma comment(lib, "ws2_32.lib")
 
-#ifdef _WIN64
 using ssize_t = __int64;
-#else
-using ssize_t = long;
-#endif
 #endif // _MSC_VER
 
 #ifndef S_ISREG