diff --git a/.gitignore b/.gitignore
index ff8993b..ef57ec0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@ files.lst
*.o
*.so
pcompress
+libpcompress*
Makefile
test.log
test/datafiles
diff --git a/Makefile.in b/Makefile.in
index 0a92d9b..4e24006 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -215,8 +215,8 @@ DEBUG_CPPFLAGS = $(COMMON_CPPFLAGS)
DEBUG_FPTR_FLAG =
RELEASE_LINK = g++ -pthread @LIBBSCGEN_OPT@ @EXTRA_OPT_FLAGS@ -fopenmp -fPIC
-RELEASE_COMPILE = gcc -c @EXTRA_OPT_FLAGS@ -fPIC
-RELEASE_COMPILE_cpp = g++ -c @EXTRA_OPT_FLAGS@ -fPIC
+RELEASE_COMPILE = gcc -c @EXTRA_OPT_FLAGS@ -fPIC -fvisibility=hidden
+RELEASE_COMPILE_cpp = g++ -c @EXTRA_OPT_FLAGS@ -fPIC -fvisibility=hidden
RELEASE_VEC_FLAGS = $(COMMON_VEC_FLAGS)
RELEASE_LOOP_OPTFLAGS = $(COMMON_LOOP_OPTFLAGS)
RELEASE_CPPFLAGS = $(COMMON_CPPFLAGS) -DNDEBUG
diff --git a/pcompress.c b/pcompress.c
index f0e661c..d7afe6b 100644
--- a/pcompress.c
+++ b/pcompress.c
@@ -78,7 +78,7 @@ static void * writer_thread(void *dat);
static int init_algo(pc_ctx_t *pctx, const char *algo, int bail);
extern uint32_t lzma_crc32(const uint8_t *buf, uint64_t size, uint32_t crc);
-void
+void DLL_EXPORT
usage(pc_ctx_t *pctx)
{
fprintf(stderr,
@@ -686,7 +686,7 @@ cont:
*/
#define UNCOMP_BAIL err = 1; goto uncomp_done
-int
+int DLL_EXPORT
start_decompress(pc_ctx_t *pctx, const char *filename, const char *to_filename)
{
char algorithm[ALGO_SZ];
@@ -1689,7 +1689,7 @@ do_cancel:
*/
#define COMP_BAIL err = 1; goto comp_done
-int
+int DLL_EXPORT
start_compress(pc_ctx_t *pctx, const char *filename, uint64_t chunksize, int level)
{
struct wdata w;
@@ -2516,7 +2516,7 @@ init_algo(pc_ctx_t *pctx, const char *algo, int bail)
/*
* Pcompress context handling functions.
*/
-pc_ctx_t *
+pc_ctx_t DLL_EXPORT *
create_pc_context(void)
{
pc_ctx_t *ctx = (pc_ctx_t *)malloc(sizeof (pc_ctx_t));
@@ -2537,7 +2537,7 @@ create_pc_context(void)
return (ctx);
}
-void
+void DLL_EXPORT
destroy_pc_context(pc_ctx_t *pctx)
{
if (pctx->do_compress)
@@ -2549,7 +2549,7 @@ destroy_pc_context(pc_ctx_t *pctx)
slab_cleanup(pctx->hide_mem_stats);
}
-int
+int DLL_EXPORT
init_pc_context_argstr(pc_ctx_t *pctx, char *args)
{
int ac;
@@ -2568,7 +2568,7 @@ init_pc_context_argstr(pc_ctx_t *pctx, char *args)
return (0);
}
-int
+int DLL_EXPORT
init_pc_context(pc_ctx_t *pctx, int argc, char *argv[])
{
int opt, num_rem, err, my_optind;
@@ -2859,7 +2859,7 @@ init_pc_context(pc_ctx_t *pctx, int argc, char *argv[])
return (0);
}
-int
+int DLL_EXPORT
start_pcompress(pc_ctx_t *pctx)
{
int err;
@@ -2877,7 +2877,7 @@ start_pcompress(pc_ctx_t *pctx)
/*
* Setter functions for various parameters in the context.
*/
-void
+void DLL_EXPORT
pc_set_userpw(pc_ctx_t *pctx, unsigned char *pwdata, int pwlen)
{
pctx->user_pw = pwdata;
diff --git a/ppmd_compress.c b/ppmd_compress.c
index 8d0e74f..e2cd618 100644
--- a/ppmd_compress.c
+++ b/ppmd_compress.c
@@ -34,7 +34,7 @@
/*
* PPMd model order to working set memory size mappings.
*/
-unsigned int ppmd8_mem_sz[] = {
+static unsigned int ppmd8_mem_sz[] = {
(16 << 20),
(16 << 20),
(32 << 20),
diff --git a/utils/cpuid.c b/utils/cpuid.c
index 3fe06c7..6a927b3 100644
--- a/utils/cpuid.c
+++ b/utils/cpuid.c
@@ -62,7 +62,7 @@
#define XOP_FLAG 0x800
#define AES_FLAG 0x2000000
-void
+static void
exec_cpuid(uint32_t *regs)
{
#ifdef __GNUC__
diff --git a/utils/cpuid.h b/utils/cpuid.h
index 643839e..26edbdf 100644
--- a/utils/cpuid.h
+++ b/utils/cpuid.h
@@ -14,10 +14,10 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this program.
- * If not, see .
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program.
+ * If not, see .
*
* moinakg@belenix.org, http://moinakg.wordpress.com/
*/
@@ -93,7 +93,6 @@ struct cpu_raw_data_t {
char vendor_str[VENDOR_STR_MAX];
};
-void exec_cpuid(uint32_t *regs);
void cpuid_get_raw_data(struct cpu_raw_data_t* data);
void cpuid_basic_identify(processor_info_t *pc);
diff --git a/utils/utils.h b/utils/utils.h
index 96f257b..3786940 100644
--- a/utils/utils.h
+++ b/utils/utils.h
@@ -134,6 +134,14 @@ typedef int32_t bsize_t;
# endif
#endif
+#ifdef __GNUC__
+#define DLL_EXPORT __attribute__ ((visibility ("default")))
+#define DLL_LOCAL __attribute__ ((visibility ("hidden")))
+#else
+#define DLL_EXPORT
+#define DLL_LOCAL
+#endif
+
#define ISP2(x) ((x != 0) && ((x & (~x + 1)) == x))
#ifdef DEBUG_STATS