Skip to content

Commit fbd386f

Browse files
Back to buildable state
Signed-off-by: Dusan Malusev <[email protected]>
1 parent dc1fd18 commit fbd386f

File tree

16 files changed

+396
-330
lines changed

16 files changed

+396
-330
lines changed

.github/workflows/ci.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ jobs:
5050
runs-on: ${{ matrix.os }}
5151
steps:
5252
- name: Checkout
53-
uses: actions/checkout@v2
53+
uses: actions/checkout@v4
54+
with:
55+
fetch-depth: 0
5456

5557
- name: Install libclang
5658
run: sudo apt-get install -y llvm-dev libclang-dev clang

.github/workflows/license.yml

-30
This file was deleted.

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ The framework that allows us to write PHP extensions using pure and safe Rust wh
1919

2020
### Necessary
2121

22-
- **rust** 1.74 or later
22+
- **rust** 1.75 or later
2323
- **libclang** 14.0 or later
2424
- **php** 8.1 or later
2525

@@ -35,13 +35,13 @@ The framework that allows us to write PHP extensions using pure and safe Rust wh
3535
- [x] 8.3
3636
- **mode**
3737
- [x] nts
38-
- [ ] ~~zts~~
38+
- [ ] zts
3939
- **sapi**
4040
- [x] cli
4141
- [x] fpm
4242
- **debug**
4343
- [x] disable
44-
- [ ] ~~enable~~
44+
- [ ] enable
4545

4646
## Examples
4747

phper-sys/build.rs

+13-14
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use std::{env, ffi::OsStr, fmt::Debug, path::PathBuf, process::Command};
1414
fn main() {
1515
println!("cargo:rerun-if-env-changed=PHP_CONFIG");
1616
let current_dir = std::env::current_dir().unwrap();
17+
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
1718

1819
let c_files = std::fs::read_dir(current_dir.join("c"))
1920
.unwrap()
@@ -24,17 +25,14 @@ fn main() {
2425
c_files
2526
.iter()
2627
.for_each(|file| println!("cargo:rerun-if-changed={}", file));
28+
println!("cargo:rustc-link-search={}", out_path.to_str().unwrap());
29+
println!("cargo:rustc-link-lib=static=phpwrapper");
2730

28-
let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
2931
let php_config = env::var("PHP_CONFIG").unwrap_or_else(|_| "php-config".to_string());
3032

3133
let includes = execute_command(&[php_config.as_str(), "--includes"]);
3234
let includes = includes.split(' ').collect::<Vec<_>>();
3335

34-
// Generate libphpwrapper.a.
35-
36-
println!("cargo:warning={:?}", includes);
37-
println!("cargo:warning={:?}", c_files);
3836
let mut builder = cc::Build::new();
3937

4038
includes.iter().for_each(|include| {
@@ -43,18 +41,19 @@ fn main() {
4341

4442
builder
4543
.cpp(false)
46-
.debug(false)
44+
// .debug(false)
4745
.files(&c_files)
48-
.extra_warnings(true)
46+
// .extra_warnings(true)
4947
.include("include")
50-
.flag("-falign-functions")
51-
.flag("-flto=auto")
52-
.flag("-std=c2x") // Replace with -std=c23 after CLANG 18
53-
.flag("-pedantic")
54-
.force_frame_pointer(false)
55-
.opt_level(3)
48+
// .flag("-falign-functions")
49+
// .flag("-flto=auto")
50+
// .flag("-std=c2x") // Replace with -std=c23 after CLANG 18
51+
// .flag("-pedantic")
52+
// .flag("-Wno-ignored-qualifiers")
53+
// .force_frame_pointer(false)
54+
// .opt_level(3)
5655
.warnings(true)
57-
.use_plt(false)
56+
// .use_plt(false)
5857
.static_flag(true)
5958
.pic(true)
6059
.compile("phpwrapper");

phper-sys/c/php_alloc.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#include <phper.h>
22

3-
ZEND_FASTCALL void *phper_emalloc(size_t size) {
3+
void *phper_emalloc(size_t size) {
44
return emalloc(size);
55
}
66

7-
ZEND_FASTCALL void phper_efree(void *ptr) {
7+
void phper_efree(void *ptr) {
88
efree(ptr);
99
}

phper-sys/c/php_array.c

+25-35
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,83 @@
11
#include <phper.h>
22

3-
ZEND_FASTCALL zval *phper_zend_hash_str_update(HashTable *ht, const char *key,
4-
size_t len, zval *pData) {
3+
zval *phper_zend_hash_str_update(HashTable *ht, const char *key, size_t len,
4+
zval *pData) {
55
return zend_hash_str_update(ht, key, len, pData);
66
}
77

8-
ZEND_FASTCALL zval *phper_zend_hash_index_update(HashTable *ht, zend_ulong h,
9-
zval *pData) {
8+
zval *phper_zend_hash_index_update(HashTable *ht, zend_ulong h, zval *pData) {
109
return zend_hash_index_update(ht, h, pData);
1110
}
1211

13-
ZEND_FASTCALL zval *phper_zend_hash_next_index_insert(HashTable *ht,
14-
zval *pData) {
12+
zval *phper_zend_hash_next_index_insert(HashTable *ht, zval *pData) {
1513
return zend_hash_next_index_insert(ht, pData);
1614
}
1715

18-
ZEND_FASTCALL void phper_array_init(zval *arg) {
16+
void phper_array_init(zval *arg) {
1917
array_init(arg);
2018
}
2119

22-
ZEND_FASTCALL void *phper_zend_hash_str_find_ptr(const HashTable *ht,
23-
const char *str, size_t len) {
20+
void *phper_zend_hash_str_find_ptr(const HashTable *ht, const char *str,
21+
size_t len) {
2422
return zend_hash_str_find_ptr(ht, str, len);
2523
}
2624

27-
ZEND_FASTCALL bool phper_zend_hash_str_exists(const HashTable *ht,
28-
const char *str, size_t len) {
25+
bool phper_zend_hash_str_exists(const HashTable *ht, const char *str,
26+
size_t len) {
2927
return zend_hash_str_exists(ht, str, len) != 0;
3028
}
3129

32-
ZEND_FASTCALL bool phper_zend_hash_index_exists(const HashTable *ht,
33-
zend_ulong h) {
30+
bool phper_zend_hash_index_exists(const HashTable *ht, zend_ulong h) {
3431
return zend_hash_index_exists(ht, h) != 0;
3532
}
3633

37-
ZEND_FASTCALL zend_array *phper_zend_new_array(uint32_t size) {
34+
zend_array *phper_zend_new_array(uint32_t size) {
3835
return zend_new_array(size);
3936
}
4037

41-
ZEND_FASTCALL zend_array *phper_zend_array_dup(zend_array *source) {
38+
zend_array *phper_zend_array_dup(zend_array *source) {
4239
return zend_array_dup(source);
4340
}
4441

45-
ZEND_FASTCALL zval *phper_zend_hash_index_find(const HashTable *ht,
46-
zend_ulong h) {
42+
zval *phper_zend_hash_index_find(const HashTable *ht, zend_ulong h) {
4743
return zend_hash_index_find(ht, h);
4844
}
4945

50-
ZEND_FASTCALL bool phper_zend_hash_index_del(HashTable *ht, zend_ulong h) {
46+
bool phper_zend_hash_index_del(HashTable *ht, zend_ulong h) {
5147
return zend_hash_index_del(ht, h) == SUCCESS;
5248
}
5349

54-
ZEND_FASTCALL zval *phper_zend_symtable_str_update(HashTable *ht,
55-
const char *str, size_t len,
56-
zval *pData) {
50+
zval *phper_zend_symtable_str_update(HashTable *ht, const char *str, size_t len,
51+
zval *pData) {
5752
return zend_symtable_str_update(ht, str, len, pData);
5853
}
5954

60-
ZEND_FASTCALL bool phper_zend_symtable_str_del(HashTable *ht, const char *str,
61-
size_t len) {
55+
bool phper_zend_symtable_str_del(HashTable *ht, const char *str, size_t len) {
6256
return zend_symtable_str_del(ht, str, len) == SUCCESS;
6357
}
6458

65-
ZEND_FASTCALL zval *phper_zend_symtable_str_find(HashTable *ht, const char *str,
66-
size_t len) {
59+
zval *phper_zend_symtable_str_find(HashTable *ht, const char *str, size_t len) {
6760
return zend_symtable_str_find(ht, str, len);
6861
}
6962

70-
ZEND_FASTCALL bool phper_zend_symtable_str_exists(HashTable *ht,
71-
const char *str, size_t len) {
63+
bool phper_zend_symtable_str_exists(HashTable *ht, const char *str,
64+
size_t len) {
7265
return zend_symtable_str_exists(ht, str, len) != 0;
7366
}
7467

75-
ZEND_FASTCALL zval *phper_zend_str_update(HashTable *ht, const char *str,
76-
size_t len, zval *pData) {
68+
zval *phper_zend_str_update(HashTable *ht, const char *str, size_t len,
69+
zval *pData) {
7770
return zend_hash_str_update(ht, str, len, pData);
7871
}
7972

80-
ZEND_FASTCALL bool phper_zend_str_del(HashTable *ht, const char *str,
81-
size_t len) {
73+
bool phper_zend_str_del(HashTable *ht, const char *str, size_t len) {
8274
return zend_hash_str_del(ht, str, len) == SUCCESS;
8375
}
8476

85-
ZEND_FASTCALL zval *phper_zend_str_find(HashTable *ht, const char *str,
86-
size_t len) {
77+
zval *phper_zend_str_find(HashTable *ht, const char *str, size_t len) {
8778
return zend_hash_str_find(ht, str, len);
8879
}
8980

90-
ZEND_FASTCALL bool phper_zend_str_exists(HashTable *ht, const char *str,
91-
size_t len) {
81+
bool phper_zend_str_exists(HashTable *ht, const char *str, size_t len) {
9282
return zend_hash_str_exists(ht, str, len) != 0;
9383
}

phper-sys/c/php_smart_string.c

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,97 +1,97 @@
11
#include <phper.h>
22
#include <zend_smart_str.h>
33

4-
ZEND_FASTCALL void phper_smart_str_alloc(smart_str *str, size_t len,
4+
void phper_smart_str_alloc(smart_str *str, size_t len,
55
bool persistent) {
66
smart_str_alloc(str, len, persistent);
77
}
88

9-
ZEND_FASTCALL void phper_smart_str_extend_ex(smart_str *dest, size_t len,
9+
void phper_smart_str_extend_ex(smart_str *dest, size_t len,
1010
bool persistent) {
1111
smart_str_extend_ex(dest, len, persistent);
1212
}
1313

14-
ZEND_FASTCALL void phper_smart_str_erealloc(smart_str *str, size_t len) {
14+
void phper_smart_str_erealloc(smart_str *str, size_t len) {
1515
smart_str_erealloc(str, len);
1616
}
1717

18-
ZEND_FASTCALL void phper_smart_str_realloc(smart_str *str, size_t len) {
18+
void phper_smart_str_realloc(smart_str *str, size_t len) {
1919
smart_str_realloc(str, len);
2020
}
2121

22-
ZEND_FASTCALL void phper_smart_str_free_ex(smart_str *str, bool persistent) {
22+
void phper_smart_str_free_ex(smart_str *str, bool persistent) {
2323
smart_str_free_ex(str, persistent);
2424
}
2525

26-
ZEND_FASTCALL void phper_smart_str_append_escaped(smart_str *str, const char *s,
26+
void phper_smart_str_append_escaped(smart_str *str, const char *s,
2727
size_t l) {
2828
smart_str_append_escaped(str, s, l);
2929
}
3030

31-
ZEND_FASTCALL void phper_smart_str_append_double(smart_str *str, double num,
31+
void phper_smart_str_append_double(smart_str *str, double num,
3232
int precision,
3333
bool zero_fraction) {
3434
smart_str_append_double(str, num, precision, zero_fraction);
3535
}
3636

37-
ZEND_FASTCALL void phper_smart_str_append_escaped_truncated(
37+
void phper_smart_str_append_escaped_truncated(
3838
smart_str *str, const zend_string *value, size_t length) {
3939
smart_str_append_escaped_truncated(str, value, length);
4040
}
4141

42-
ZEND_FASTCALL void phper_smart_str_append_scalar(smart_str *str,
42+
void phper_smart_str_append_scalar(smart_str *str,
4343
const zval *value,
4444
size_t truncate) {
4545
smart_str_append_scalar(str, value, truncate);
4646
}
4747

48-
ZEND_FASTCALL void phper_smart_str_0(smart_str *str) {
48+
void phper_smart_str_0(smart_str *str) {
4949
smart_str_0(str);
5050
}
5151

52-
ZEND_FASTCALL size_t phper_smart_str_get_len(const smart_str *str) {
52+
size_t phper_smart_str_get_len(const smart_str *str) {
5353
return smart_str_get_len((smart_str *)str);
5454
}
5555

56-
ZEND_FASTCALL zend_string *phper_smart_str_extract(smart_str *str) {
56+
zend_string *phper_smart_str_extract(smart_str *str) {
5757
return smart_str_extract(str);
5858
}
5959

60-
ZEND_FASTCALL void phper_smart_str_appendc_ex(smart_str *dest, char ch,
60+
void phper_smart_str_appendc_ex(smart_str *dest, char ch,
6161
bool persistent) {
6262
smart_str_appendc_ex(dest, ch, persistent);
6363
}
6464

65-
ZEND_FASTCALL void phper_smart_str_appendl_ex(smart_str *dest, const char *str,
65+
void phper_smart_str_appendl_ex(smart_str *dest, const char *str,
6666
size_t len, bool persistent) {
6767
smart_str_appendl_ex(dest, str, len, persistent);
6868
}
6969

70-
ZEND_FASTCALL void phper_smart_str_append_ex(smart_str *dest,
70+
void phper_smart_str_append_ex(smart_str *dest,
7171
const zend_string *src,
7272
bool persistent) {
7373
smart_str_append_ex(dest, src, persistent);
7474
}
7575

76-
ZEND_FASTCALL void phper_smart_str_append_smart_str_ex(smart_str *dest,
76+
void phper_smart_str_append_smart_str_ex(smart_str *dest,
7777
const smart_str *src,
7878
bool persistent) {
7979
smart_str_append_smart_str_ex(dest, src, persistent);
8080
}
8181

82-
ZEND_FASTCALL void phper_smart_str_append_long_ex(smart_str *dest,
82+
void phper_smart_str_append_long_ex(smart_str *dest,
8383
zend_long num,
8484
bool persistent) {
8585
smart_str_append_long_ex(dest, num, persistent);
8686
}
8787

88-
ZEND_FASTCALL void phper_smart_str_append_unsigned_ex(smart_str *dest,
88+
void phper_smart_str_append_unsigned_ex(smart_str *dest,
8989
zend_ulong num,
9090
bool persistent) {
9191
smart_str_append_unsigned_ex(dest, num, persistent);
9292
}
9393

94-
ZEND_FASTCALL void phper_smart_str_setl(smart_str *dest, const char *src,
94+
void phper_smart_str_setl(smart_str *dest, const char *src,
9595
size_t len) {
9696
smart_str_setl(dest, src, len);
9797
}

0 commit comments

Comments
 (0)