Skip to content

Commit 0853bdd

Browse files
refactor(driver): add __declspec(dllexport) to interface object
So driver no longer need export all symbols. Signed-off-by: Coelacanthus <uwu@coelacanthus.name>
1 parent 96f0608 commit 0853bdd

13 files changed

Lines changed: 17 additions & 15 deletions

File tree

driver/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,6 @@ if (LPAC_WITH_HTTP_WINHTTP)
159159
endif ()
160160

161161
foreach(driver ${LPAC_DRIVERS})
162-
# Only useful on Windows, and will lead to invalid arguments on ld.gold.
163-
if(WIN32)
164-
target_link_options(${driver} PRIVATE "LINKER:--export-all-symbols")
165-
endif()
166162
install(TARGETS ${driver} LIBRARY DESTINATION ${DRIVER_INSTALL_PATH})
167163
endforeach()
168164

driver/apdu/at_unix.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ static int libapduinterface_main(const struct euicc_apdu_interface *ifstruct, in
236236

237237
static void libapduinterface_fini(struct euicc_apdu_interface *ifstruct) { free(buffer); }
238238

239-
const struct euicc_driver driver_if = {
239+
DRIVER_INTERFACE = {
240240
.type = DRIVER_APDU,
241241
.name = "at",
242242
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/at_win32.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ static void libapduinterface_fini(struct euicc_apdu_interface *ifstruct) {
367367
}
368368
}
369369

370-
const struct euicc_driver driver_if = {
370+
DRIVER_INTERFACE = {
371371
.type = DRIVER_APDU,
372372
.name = "at",
373373
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/gbinder_hidl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ static int libapduinterface_init(struct euicc_apdu_interface *ifstruct) {
290290
return 0;
291291
}
292292

293-
const struct euicc_driver driver_if = {
293+
DRIVER_INTERFACE = {
294294
.type = DRIVER_APDU,
295295
.name = "gbinder_hidl",
296296
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/mbim.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ static int libapduinterface_init(struct euicc_apdu_interface *ifstruct) {
305305

306306
static void libapduinterface_fini(struct euicc_apdu_interface *ifstruct) { g_free(ifstruct->userdata); }
307307

308-
const struct euicc_driver driver_if = {
308+
DRIVER_INTERFACE = {
309309
.type = DRIVER_APDU,
310310
.name = "mbim",
311311
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/pcsc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ static void libapduinterface_fini(const struct euicc_apdu_interface *ifstruct) {
403403
free(userdata);
404404
}
405405

406-
const struct euicc_driver driver_if = {
406+
DRIVER_INTERFACE = {
407407
.type = DRIVER_APDU,
408408
.name = "pcsc",
409409
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/qmi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ static void libapduinterface_fini(struct euicc_apdu_interface *ifstruct) {
248248
free(qmi_priv);
249249
}
250250

251-
const struct euicc_driver driver_if = {
251+
DRIVER_INTERFACE = {
252252
.type = DRIVER_APDU,
253253
.name = "qmi",
254254
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/qmi_qrtr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static void libapduinterface_fini(struct euicc_apdu_interface *ifstruct) {
112112
free(qmi_priv);
113113
}
114114

115-
const struct euicc_driver driver_if = {
115+
DRIVER_INTERFACE = {
116116
.type = DRIVER_APDU,
117117
.name = "qmi_qrtr",
118118
.init = (int (*)(void *))libapduinterface_init,

driver/apdu/stdio.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ static int libapduinterface_init(struct euicc_apdu_interface *ifstruct) {
229229
return 0;
230230
}
231231

232-
const struct euicc_driver driver_if = {
232+
DRIVER_INTERFACE = {
233233
.type = DRIVER_APDU,
234234
.name = "stdio",
235235
.init = (int (*)(void *))libapduinterface_init,

driver/driver.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,9 @@ struct euicc_driver {
1616
int (*main)(void *interface, int argc, char **argv);
1717
void (*fini)(void *interface);
1818
};
19+
20+
#if defined(_WIN32)
21+
# define DRIVER_INTERFACE __declspec(dllexport) const struct euicc_driver driver_if
22+
#else
23+
# define DRIVER_INTERFACE const struct euicc_driver driver_if
24+
#endif

0 commit comments

Comments
 (0)