summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--project/extras.mk2
-rw-r--r--project/headers.mk1
-rw-r--r--src/internal/tpax_dprintf_impl.c4
-rw-r--r--src/internal/tpax_errinfo_impl.c3
-rw-r--r--src/internal/tpax_tmpfile_impl.c4
-rw-r--r--src/internal/tpax_visibility_impl.h26
-rw-r--r--src/skin/tpax_skin_default.c3
7 files changed, 39 insertions, 4 deletions
diff --git a/project/extras.mk b/project/extras.mk
index f07c781..f8c9852 100644
--- a/project/extras.mk
+++ b/project/extras.mk
@@ -2,5 +2,7 @@ CFLAGS_SHARED_ATTR += -DTPAX_PRE_ALPHA -DTPAX_EXPORT
CFLAGS_STATIC_ATTR += -DTPAX_PRE_ALPHA -DTPAX_STATIC
CFLAGS_APP_ATTR += -DTPAX_APP
+CFLAGS_CONFIG += $(CFLAGS_ATTR_VISIBILITY_HIDDEN)
+
src/driver/tpax_driver_ctx.o: version.tag
src/driver/tpax_driver_ctx.lo: version.tag
diff --git a/project/headers.mk b/project/headers.mk
index b33a797..e495f1b 100644
--- a/project/headers.mk
+++ b/project/headers.mk
@@ -11,5 +11,6 @@ INTERNAL_HEADERS = \
$(SOURCE_DIR)/src/internal/tpax_getdents_impl.h \
$(SOURCE_DIR)/src/internal/tpax_readlink_impl.h \
$(SOURCE_DIR)/src/internal/tpax_tmpfile_impl.h \
+ $(SOURCE_DIR)/src/internal/tpax_visibility_impl.h \
ALL_HEADERS = $(API_HEADERS) $(INTERNAL_HEADERS)
diff --git a/src/internal/tpax_dprintf_impl.c b/src/internal/tpax_dprintf_impl.c
index b8d2b0b..bb2a1d2 100644
--- a/src/internal/tpax_dprintf_impl.c
+++ b/src/internal/tpax_dprintf_impl.c
@@ -10,7 +10,9 @@
#include <unistd.h>
#include <errno.h>
-int tpax_dprintf(int fd, const char * fmt, ...)
+#include "tpax_visibility_impl.h"
+
+tpax_hidden int tpax_dprintf(int fd, const char * fmt, ...)
{
int ret;
int cnt;
diff --git a/src/internal/tpax_errinfo_impl.c b/src/internal/tpax_errinfo_impl.c
index 5fd2247..0e68f51 100644
--- a/src/internal/tpax_errinfo_impl.c
+++ b/src/internal/tpax_errinfo_impl.c
@@ -7,8 +7,9 @@
#include <tpax/tpax.h>
#include "tpax_driver_impl.h"
#include "tpax_errinfo_impl.h"
+#include "tpax_visibility_impl.h"
-int tpax_record_error(
+tpax_hidden int tpax_record_error(
const struct tpax_driver_ctx * dctx,
int esyscode,
int elibcode,
diff --git a/src/internal/tpax_tmpfile_impl.c b/src/internal/tpax_tmpfile_impl.c
index 9dd9d40..dbc7765 100644
--- a/src/internal/tpax_tmpfile_impl.c
+++ b/src/internal/tpax_tmpfile_impl.c
@@ -14,6 +14,8 @@
#include <stdio.h>
#include <inttypes.h>
+#include "tpax_visibility_impl.h"
+
#define PPRIX64 "%"PRIx64
/* mkostemp might be guarded by non-standard macros */
@@ -55,7 +57,7 @@ static int tpax_mkostemp(char * tmplate)
return fd;
}
-int tpax_tmpfile(void)
+tpax_hidden int tpax_tmpfile(void)
{
int fd;
void * addr;
diff --git a/src/internal/tpax_visibility_impl.h b/src/internal/tpax_visibility_impl.h
new file mode 100644
index 0000000..6812494
--- /dev/null
+++ b/src/internal/tpax_visibility_impl.h
@@ -0,0 +1,26 @@
+#ifndef TPAX_VISIBILITY_IMPL_H
+#define TPAX_VISIBILITY_IMPL_H
+
+/**********************************************************************/
+/* PE targets: __dllexport suffices for the purpose of exporting only */
+/* the desired subset of global symbols; this makes the visibility */
+/* attribute not only redundant, but also tricky if not properly */
+/* supported by the toolchain. */
+/* */
+/* When targeting Midipix, __PE__, __dllexport and __dllimport are */
+/* always defined by the toolchain. Otherwise, the absnece of these */
+/* macros has been detected by sofort's ccenv.sh during ./configure, */
+/* and they have accordingly been added to CFLAGS_OS. */
+/**********************************************************************/
+
+#ifdef __PE__
+#define tpax_hidden
+#else
+#ifdef _ATTR_VISIBILITY_HIDDEN
+#define tpax_hidden _ATTR_VISIBILITY_HIDDEN
+#else
+#define tpax_hidden
+#endif
+#endif
+
+#endif
diff --git a/src/skin/tpax_skin_default.c b/src/skin/tpax_skin_default.c
index 4de94b4..68491df 100644
--- a/src/skin/tpax_skin_default.c
+++ b/src/skin/tpax_skin_default.c
@@ -1,7 +1,8 @@
#include "tpax_driver_impl.h"
+#include "tpax_visibility_impl.h"
#include "argv/argv.h"
-const struct argv_option tpax_default_options[] = {
+const tpax_hidden struct argv_option tpax_default_options[] = {
{"version", 0,TAG_VERSION,ARGV_OPTARG_NONE,0,0,0,
"show version information"},