Fix Windows build and a bunch of scary warnings

This commit is contained in:
pancake 2017-11-06 03:23:21 +01:00
parent 980b8136aa
commit 702afebc66
15 changed files with 191 additions and 180 deletions

View File

@ -16,7 +16,6 @@ include ${STATIC_BIN_PLUGINS}
include ${STATIC_BIN_XTR_PLUGINS}
include $(SHLR)/java/deps.mk
include $(SHLR)/ar/deps.mk
include $(SHLR)/lz4/deps.mk
STATIC_OBJS=$(addprefix $(LTOP)/bin/p/, $(STATIC_OBJ))
OBJS=bin.o dbginfo.o bin_write.o demangle.o dwarf.o filter.o

View File

@ -42,8 +42,7 @@ struct minidump_memory_info *r_bin_mdmp_get_mem_info(struct r_bin_mdmp_obj *obj,
return NULL;
}
ut32 r_bin_mdmp_get_srwx(struct r_bin_mdmp_obj *obj, ut64 vaddr)
{
ut32 r_bin_mdmp_get_srwx(struct r_bin_mdmp_obj *obj, ut64 vaddr) {
struct minidump_memory_info *mem_info;
if (!(mem_info = r_bin_mdmp_get_mem_info(obj, vaddr))) {
@ -691,24 +690,29 @@ static bool r_bin_mdmp_patch_pe_headers(RBuffer *pe_buf) {
static int check_pe32_bytes(const ut8 *buf, ut64 length) {
unsigned int idx;
if (!buf) return false;
if (length <= 0x3d)
if (!buf || length <= 0x3d) {
return false;
}
idx = (buf[0x3c] | (buf[0x3d]<<8));
if (length > idx+0x18+2)
if (!memcmp (buf, "MZ", 2) && !memcmp (buf+idx, "PE", 2) && !memcmp (buf+idx+0x18, "\x0b\x01", 2))
if (length > idx + 0x18 + 2) {
if (!memcmp (buf, "MZ", 2) && !memcmp (buf+idx, "PE", 2) && !memcmp (buf+idx+0x18, "\x0b\x01", 2)) {
return true;
}
}
return false;
}
static int check_pe64_bytes(const ut8 *buf, ut64 length) {
int idx, ret = false;
if (!buf || length <= 0x3d)
if (!buf || length <= 0x3d) {
return false;
}
idx = buf[0x3c] | (buf[0x3d]<<8);
if (length >= idx+0x20)
if (!memcmp (buf, "MZ", 2) && !memcmp (buf+idx, "PE", 2) && !memcmp (buf+idx+0x18, "\x0b\x02", 2))
if (length >= idx + 0x20) {
if (!memcmp (buf, "MZ", 2) && !memcmp (buf+idx, "PE", 2) && !memcmp (buf+idx+0x18, "\x0b\x02", 2)) {
ret = true;
}
}
return ret;
}
@ -727,7 +731,7 @@ static bool r_bin_mdmp_init_pe_bins(struct r_bin_mdmp_obj *obj) {
if (!(paddr = r_bin_mdmp_get_paddr (obj, module->base_of_image))) {
continue;
}
ut32 left = 0;
int left = 0;
const ut8 *b = r_buf_get_at (obj->b, paddr, &left);
buf = r_buf_new_with_bytes (b, R_MIN (left, module->size_of_image));
dup = false;
@ -738,7 +742,9 @@ static bool r_bin_mdmp_init_pe_bins(struct r_bin_mdmp_obj *obj) {
continue;
}
}
if (dup) continue;
if (dup) {
continue;
}
if (!(pe32_bin = R_NEW0 (struct Pe32_r_bin_mdmp_pe_bin))) {
continue;
}
@ -755,7 +761,9 @@ static bool r_bin_mdmp_init_pe_bins(struct r_bin_mdmp_obj *obj) {
continue;
}
}
if (dup) continue;
if (dup) {
continue;
}
if (!(pe64_bin = R_NEW0 (struct Pe64_r_bin_mdmp_pe_bin))) {
continue;
}
@ -768,7 +776,6 @@ static bool r_bin_mdmp_init_pe_bins(struct r_bin_mdmp_obj *obj) {
}
r_buf_free (buf);
}
return true;
}
@ -795,9 +802,10 @@ static int r_bin_mdmp_init(struct r_bin_mdmp_obj *obj) {
struct r_bin_mdmp_obj *r_bin_mdmp_new_buf(struct r_buf_t *buf) {
bool fail = false;
struct r_bin_mdmp_obj *obj;
obj = R_NEW0 (struct r_bin_mdmp_obj);
struct r_bin_mdmp_obj *obj = R_NEW0 (struct r_bin_mdmp_obj);
if (!obj) {
return NULL;
}
obj->kv = sdb_new0 ();
obj->b = r_buf_new ();
obj->size = (ut32)buf->length;

View File

@ -8,40 +8,40 @@
#include "mdmp_windefs.h"
#define MEM_COMMIT 0x01000
#define MEM_FREE 0x10000
#define MEM_RESERVE 0x02000
#define MDMP_MEM_COMMIT 0x01000
#define MDMP_MEM_FREE 0x10000
#define MDMP_MEM_RESERVE 0x02000
#define MEM_IMAGE 0x1000000
#define MEM_MAPPED 0x0040000
#define MEM_PRIVATE 0x0020000
#define MDMP_MEM_IMAGE 0x1000000
#define MDMP_MEM_MAPPED 0x0040000
#define MDMP_MEM_PRIVATE 0x0020000
#define PROCESSOR_ARCHITECTURE_INTEL 0x0000
#define PROCESSOR_ARCHITECTURE_ARM 0x0005
#define PROCESSOR_ARCHITECTURE_IA64 0x0006
#define PROCESSOR_ARCHITECTURE_AMD64 0x0009
#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
#define MDMP_PROCESSOR_ARCHITECTURE_INTEL 0x0000
#define MDMP_PROCESSOR_ARCHITECTURE_ARM 0x0005
#define MDMP_PROCESSOR_ARCHITECTURE_IA64 0x0006
#define MDMP_PROCESSOR_ARCHITECTURE_AMD64 0x0009
#define MDMP_PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
#define VER_NT_WORKSTATION 0x0000001
#define VER_NT_DOMAIN_CONTROLLER 0x0000002
#define VER_NT_SERVER 0x0000003
#define MDMP_VER_NT_WORKSTATION 0x0000001
#define MDMP_VER_NT_DOMAIN_CONTROLLER 0x0000002
#define MDMP_VER_NT_SERVER 0x0000003
#define VER_PLATFORM_WIN32s 0x0000
#define VER_PLATFORM_WIN32_WINDOWS 0x0001
#define VER_PLATFORM_WIN32_NT 0x0002
#define MDMP_VER_PLATFORM_WIN32s 0x0000
#define MDMP_VER_PLATFORM_WIN32_WINDOWS 0x0001
#define MDMP_VER_PLATFORM_WIN32_NT 0x0002
#define VER_SUITE_SMALLBUSINESS 0x00000001
#define VER_SUITE_ENTERPRISE 0x00000002
#define VER_SUITE_BACKOFFICE 0x00000004
#define VER_SUITE_TERMINAL 0x00000010
#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
#define VER_SUITE_EMBEDDEDNT 0x00000040
#define VER_SUITE_DATACENTER 0x00000080
#define VER_SUITE_SINGLEUSERTS 0x00000100
#define VER_SUITE_PERSONAL 0x00000200
#define VER_SUITE_BLADE 0x00000400
#define VER_SUITE_STORAGE_SERVER 0x00002000
#define VER_SUITE_COMPUTE_SERVER 0x00004000
#define MDMP_VER_SUITE_SMALLBUSINESS 0x00000001
#define MDMP_VER_SUITE_ENTERPRISE 0x00000002
#define MDMP_VER_SUITE_BACKOFFICE 0x00000004
#define MDMP_VER_SUITE_TERMINAL 0x00000010
#define MDMP_VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
#define MDMP_VER_SUITE_EMBEDDEDNT 0x00000040
#define MDMP_VER_SUITE_DATACENTER 0x00000080
#define MDMP_VER_SUITE_SINGLEUSERTS 0x00000100
#define MDMP_VER_SUITE_PERSONAL 0x00000200
#define MDMP_VER_SUITE_BLADE 0x00000400
#define MDMP_VER_SUITE_STORAGE_SERVER 0x00002000
#define MDMP_VER_SUITE_COMPUTE_SERVER 0x00004000
#define MDMP_MAGIC "\x4D\x44\x4D\x50\x93\xA7"

View File

@ -4,6 +4,7 @@
#include <r_util.h>
#include <r_lib.h>
#include <r_bin.h>
#include "pe_specs.h"
#ifndef _INCLUDE_R_BIN_PE_H_

View File

@ -1,4 +1,4 @@
/* radare - LGPL - Copyright 2008 nibble<.ds@gmail.com> */
/* radare - LGPL - Copyright 2008 nibble */
#undef PE_
#undef ILT_MASK1
@ -160,100 +160,100 @@ typedef struct {
//language
#define LANG_NEUTRAL 0x00
#define LANG_INVARIANT 0x7f
#define LANG_AFRIKAANS 0x36
#define LANG_ALBANIAN 0x1c
#define LANG_ARABIC 0x01
#define LANG_ARMENIAN 0x2b
#define LANG_ASSAMESE 0x4d
#define LANG_AZERI 0x2c
#define LANG_BASQUE 0x2d
#define LANG_BELARUSIAN 0x23
#define LANG_BENGALI 0x45
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CHINESE 0x04
#define LANG_CROATIAN 0x1a
#define LANG_CZECH 0x05
#define LANG_DANISH 0x06
#define LANG_DIVEHI 0x65
#define LANG_DUTCH 0x13
#define LANG_ENGLISH 0x09
#define LANG_ESTONIAN 0x25
#define LANG_FAEROESE 0x38
#define LANG_FARSI 0x29
#define LANG_FINNISH 0x0b
#define LANG_FRENCH 0x0c
#define LANG_GALICIAN 0x56
#define LANG_GEORGIAN 0x37
#define LANG_GERMAN 0x07
#define LANG_GREEK 0x08
#define LANG_GUJARATI 0x47
#define LANG_HEBREW 0x0d
#define LANG_HINDI 0x39
#define LANG_HUNGARIAN 0x0e
#define LANG_ICELANDIC 0x0f
#define LANG_INDONESIAN 0x21
#define LANG_ITALIAN 0x10
#define LANG_JAPANESE 0x11
#define LANG_KANNADA 0x4b
#define LANG_KASHMIRI 0x60
#define LANG_KAZAK 0x3f
#define LANG_KONKANI 0x57
#define LANG_KOREAN 0x12
#define LANG_KYRGYZ 0x40
#define LANG_LATVIAN 0x26
#define LANG_LITHUANIAN 0x27
#define LANG_MACEDONIAN 0x2f
#define LANG_MALAY 0x3e
#define LANG_MALAYALAM 0x4c
#define LANG_MANIPURI 0x58
#define LANG_MARATHI 0x4e
#define LANG_MONGOLIAN 0x50
#define LANG_NEPALI 0x61
#define LANG_NORWEGIAN 0x14
#define LANG_ORIYA 0x48
#define LANG_POLISH 0x15
#define LANG_PORTUGUESE 0x16
#define LANG_PUNJABI 0x46
#define LANG_ROMANIAN 0x18
#define LANG_RUSSIAN 0x19
#define LANG_SANSKRIT 0x4f
#define LANG_SERBIAN 0x1a
#define LANG_SINDHI 0x59
#define LANG_SLOVAK 0x1b
#define LANG_SLOVENIAN 0x24
#define LANG_SPANISH 0x0a
#define LANG_SWAHILI 0x41
#define LANG_SWEDISH 0x1d
#define LANG_SYRIAC 0x5a
#define LANG_TAMIL 0x49
#define LANG_TATAR 0x44
#define LANG_TELUGU 0x4a
#define LANG_THAI 0x1e
#define LANG_TURKISH 0x1f
#define LANG_UKRAINIAN 0x22
#define LANG_URDU 0x20
#define LANG_UZBEK 0x43
#define LANG_VIETNAMESE 0x2a
#define LANG_GAELIC 0x3c
#define LANG_MALTESE 0x3a
#define LANG_MAORI 0x28
#define LANG_RHAETO_ROMANCE 0x17
#define LANG_SAAMI 0x3b
#define LANG_SORBIAN 0x2e
#define LANG_SUTU 0x30
#define LANG_TSONGA 0x31
#define LANG_TSWANA 0x32
#define LANG_VENDA 0x33
#define LANG_XHOSA 0x34
#define LANG_ZULU 0x35
#define LANG_ESPERANTO 0x8f
#define LANG_WALON 0x90
#define LANG_CORNISH 0x91
#define LANG_WELSH 0x92
#define LANG_BRETON 0x93
#define PE_LANG_NEUTRAL 0x00
#define PE_LANG_INVARIANT 0x7f
#define PE_LANG_AFRIKAANS 0x36
#define PE_LANG_ALBANIAN 0x1c
#define PE_LANG_ARABIC 0x01
#define PE_LANG_ARMENIAN 0x2b
#define PE_LANG_ASSAMESE 0x4d
#define PE_LANG_AZERI 0x2c
#define PE_LANG_BASQUE 0x2d
#define PE_LANG_BELARUSIAN 0x23
#define PE_LANG_BENGALI 0x45
#define PE_LANG_BULGARIAN 0x02
#define PE_LANG_CATALAN 0x03
#define PE_LANG_CHINESE 0x04
#define PE_LANG_CROATIAN 0x1a
#define PE_LANG_CZECH 0x05
#define PE_LANG_DANISH 0x06
#define PE_LANG_DIVEHI 0x65
#define PE_LANG_DUTCH 0x13
#define PE_LANG_ENGLISH 0x09
#define PE_LANG_ESTONIAN 0x25
#define PE_LANG_FAEROESE 0x38
#define PE_LANG_FARSI 0x29
#define PE_LANG_FINNISH 0x0b
#define PE_LANG_FRENCH 0x0c
#define PE_LANG_GALICIAN 0x56
#define PE_LANG_GEORGIAN 0x37
#define PE_LANG_GERMAN 0x07
#define PE_LANG_GREEK 0x08
#define PE_LANG_GUJARATI 0x47
#define PE_LANG_HEBREW 0x0d
#define PE_LANG_HINDI 0x39
#define PE_LANG_HUNGARIAN 0x0e
#define PE_LANG_ICELANDIC 0x0f
#define PE_LANG_INDONESIAN 0x21
#define PE_LANG_ITALIAN 0x10
#define PE_LANG_JAPANESE 0x11
#define PE_LANG_KANNADA 0x4b
#define PE_LANG_KASHMIRI 0x60
#define PE_LANG_KAZAK 0x3f
#define PE_LANG_KONKANI 0x57
#define PE_LANG_KOREAN 0x12
#define PE_LANG_KYRGYZ 0x40
#define PE_LANG_LATVIAN 0x26
#define PE_LANG_LITHUANIAN 0x27
#define PE_LANG_MACEDONIAN 0x2f
#define PE_LANG_MALAY 0x3e
#define PE_LANG_MALAYALAM 0x4c
#define PE_LANG_MANIPURI 0x58
#define PE_LANG_MARATHI 0x4e
#define PE_LANG_MONGOLIAN 0x50
#define PE_LANG_NEPALI 0x61
#define PE_LANG_NORWEGIAN 0x14
#define PE_LANG_ORIYA 0x48
#define PE_LANG_POLISH 0x15
#define PE_LANG_PORTUGUESE 0x16
#define PE_LANG_PUNJABI 0x46
#define PE_LANG_ROMANIAN 0x18
#define PE_LANG_RUSSIAN 0x19
#define PE_LANG_SANSKRIT 0x4f
#define PE_LANG_SERBIAN 0x1a
#define PE_LANG_SINDHI 0x59
#define PE_LANG_SLOVAK 0x1b
#define PE_LANG_SLOVENIAN 0x24
#define PE_LANG_SPANISH 0x0a
#define PE_LANG_SWAHILI 0x41
#define PE_LANG_SWEDISH 0x1d
#define PE_LANG_SYRIAC 0x5a
#define PE_LANG_TAMIL 0x49
#define PE_LANG_TATAR 0x44
#define PE_LANG_TELUGU 0x4a
#define PE_LANG_THAI 0x1e
#define PE_LANG_TURKISH 0x1f
#define PE_LANG_UKRAINIAN 0x22
#define PE_LANG_URDU 0x20
#define PE_LANG_UZBEK 0x43
#define PE_LANG_VIETNAMESE 0x2a
#define PE_LANG_GAELIC 0x3c
#define PE_LANG_MALTESE 0x3a
#define PE_LANG_MAORI 0x28
#define PE_LANG_RHAETO_ROMANCE 0x17
#define PE_LANG_SAAMI 0x3b
#define PE_LANG_SORBIAN 0x2e
#define PE_LANG_SUTU 0x30
#define PE_LANG_TSONGA 0x31
#define PE_LANG_TSWANA 0x32
#define PE_LANG_VENDA 0x33
#define PE_LANG_XHOSA 0x34
#define PE_LANG_ZULU 0x35
#define PE_LANG_ESPERANTO 0x8f
#define PE_LANG_WALON 0x90
#define PE_LANG_CORNISH 0x91
#define PE_LANG_WELSH 0x92
#define PE_LANG_BRETON 0x93
typedef struct {
ut32 VirtualAddress;

View File

@ -1,4 +1,4 @@
/* radare2 - LGPL - Copyright 2016 - Davis, Alex Kornitzer */
/* radare2 - LGPL - Copyright 2016-2017 - Davis, Alex Kornitzer */
#include <r_types.h>
#include <r_util.h>
@ -18,21 +18,16 @@ static void r_bbin_mem_free(void *data) {
free (mem);
}
static ut64 baddr(RBinFile *bf) {
return 0LL;
}
static Sdb *get_sdb(RBinFile *bf) {
struct r_bin_mdmp_obj *obj;
if (!(bf)) return NULL;
obj = (struct r_bin_mdmp_obj *)bf->o->bin_obj;
if (obj && (obj->kv)) return obj->kv;
return NULL;
if (!bf || !bf->o) {
return NULL;
}
struct r_bin_mdmp_obj *obj = (struct r_bin_mdmp_obj *)bf->o->bin_obj;
return (obj && obj->kv) ? obj->kv: NULL;
}
static int destroy(RBinFile *bf) {
@ -91,24 +86,23 @@ static RBinInfo *info(RBinFile *bf) {
sdb_set (bf->sdb, "mdmp.flags", sdb_fmt (0, "0x%08x", obj->hdr->flags), 0);
sdb_num_set (bf->sdb, "mdmp.streams", obj->hdr->number_of_streams, 0);
if (obj->streams.system_info)
{
if (obj->streams.system_info) {
switch (obj->streams.system_info->processor_architecture) {
case PROCESSOR_ARCHITECTURE_INTEL:
case MDMP_PROCESSOR_ARCHITECTURE_INTEL:
ret->machine = strdup ("i386");
ret->arch = strdup ("x86");
ret->bits = 32;
break;
case PROCESSOR_ARCHITECTURE_ARM:
case MDMP_PROCESSOR_ARCHITECTURE_ARM:
ret->machine = strdup ("ARM");
ret->big_endian = false;
break;
case PROCESSOR_ARCHITECTURE_IA64:
case MDMP_PROCESSOR_ARCHITECTURE_IA64:
ret->machine = strdup ("IA64");
ret->arch = strdup ("IA64");
ret->bits = 64;
break;
case PROCESSOR_ARCHITECTURE_AMD64:
case MDMP_PROCESSOR_ARCHITECTURE_AMD64:
ret->machine = strdup ("AMD64");
ret->arch = strdup ("x86");
ret->bits = 64;
@ -118,19 +112,19 @@ static RBinInfo *info(RBinFile *bf) {
}
switch (obj->streams.system_info->product_type) {
case VER_NT_WORKSTATION:
case MDMP_VER_NT_WORKSTATION:
ret->os = r_str_newf ("Windows NT Workstation %d.%d.%d",
obj->streams.system_info->major_version,
obj->streams.system_info->minor_version,
obj->streams.system_info->build_number);
break;
case VER_NT_DOMAIN_CONTROLLER:
case MDMP_VER_NT_DOMAIN_CONTROLLER:
ret->os = r_str_newf ("Windows NT Server Domain Controller %d.%d.%d",
obj->streams.system_info->major_version,
obj->streams.system_info->minor_version,
obj->streams.system_info->build_number);
break;
case VER_NT_SERVER:
case MDMP_VER_NT_SERVER:
ret->os = r_str_newf ("Windows NT Server %d.%d.%d",
obj->streams.system_info->major_version,
obj->streams.system_info->minor_version,
@ -154,6 +148,9 @@ static RList* libs(RBinFile *bf) {
RList *ret = NULL;
RListIter *it;
if (!bf || !bf->o || !bf->o->bin_obj) {
return NULL;
}
if (!(ret = r_list_newf (free))) {
return NULL;
}
@ -182,7 +179,6 @@ static RList* libs(RBinFile *bf) {
}
free (libs);
}
return ret;
}

View File

@ -6,7 +6,8 @@
#include <r_bin.h>
#include <r_io.h>
#include <r_cons.h>
#include "../../../shlr/lz4/lz4.h"
// #include "../../../shlr/lz4/lz4.h"
#include "../../../shlr/lz4/lz4.c"
#define NSO_OFF(x) r_offsetof (NSOHeader, x)

View File

@ -62,9 +62,8 @@ static RList * extractall(RBin *bin) {
return result;
}
static inline void fill_metadata_info_from_hdr(RBinXtrMetadata *meta,
struct MACH0_ (mach_header) *hdr) {
meta->arch = MACH0_(get_cputype_from_hdr) (hdr);
static inline void fill_metadata_info_from_hdr(RBinXtrMetadata *meta, struct MACH0_ (mach_header) *hdr) {
meta->arch = strdup (MACH0_(get_cputype_from_hdr) (hdr));
meta->bits = MACH0_(get_bits_from_hdr) (hdr);
meta->machine = MACH0_(get_cpusubtype_from_hdr) (hdr);
meta->type = MACH0_(get_filetype_from_hdr) (hdr);

View File

@ -1,4 +1,5 @@
OBJ_NSO=bin_nso.o
#include $(SHLR)/lz4/deps.mk
STATIC_OBJ+=${OBJ_NSO}
TARGET_NSO=bin_nso.${EXT_SO}

View File

@ -259,7 +259,7 @@ static int rap__listener(RIODesc *fd) {
static char *rap__system(RIO *io, RIODesc *fd, const char *command) {
int ret, reslen = 0, cmdlen = 0;
RSocket *s = RIORAP_FD (fd);
unsigned int i, j = 0;
unsigned int i;
char *ptr, *res, *str;
ut8 buf[RMT_MAX];
@ -340,9 +340,8 @@ static char *rap__system(RIO *io, RIODesc *fd, const char *command) {
ptr[i] = 0;
if (io->cb_printf) {
io->cb_printf ("%s", ptr);
j = i;
} else {
j = write (1, ptr, i);
(void)write (1, ptr, i);
}
free (ptr);
}
@ -352,7 +351,6 @@ static char *rap__system(RIO *io, RIODesc *fd, const char *command) {
ret -= r_socket_read (s, (ut8*)buf, RMT_MAX);
}
#endif
//int delta = i - j;
return NULL;
}

View File

@ -38,7 +38,8 @@ SHLR?=$(shell pwd)
AR?=ar
RANLIB?=ranlib
MODS=sdb zip udis86 java tcc
MODS+=gdb qnx ar lz4
MODS+=gdb qnx ar
# lz4
ifneq ($(CC),cccl)
ifeq (1,$(WITH_GPL))
MODS+=grub

View File

@ -8293,7 +8293,7 @@ R_API char *r_bin_java_resolve_b64_encode(RBinJavaObj *BIN_OBJ, ut16 idx) {
out = malloc (34);
memset (out, 0, 34);
if (str) {
snprintf (str, 34, "0x%llx", r_bin_java_raw_to_long (item->info.cp_long.bytes.raw, 0));
snprintf (str, 34, "0x%"PFMT64x, r_bin_java_raw_to_long (item->info.cp_long.bytes.raw, 0));
r_base64_encode (out, (const ut8 *) str, strlen (str));
free (str);
str = out;

View File

@ -1,3 +1,4 @@
include ../../libr/config.mk
# ################################################################
# LZ4 library - Makefile
# Copyright (C) Yann Collet 2011-2016
@ -77,18 +78,21 @@ default: lib-release
lib-release: DEBUGFLAGS :=
lib-release: lib
lib: liblz4.a liblz4
EXT_AR?=a
lib: liblz4.$(EXT_AR)
# liblz4
all: lib
all32: CFLAGS+=-m32
all32: all
liblz4.a: $(SRCFILES)
liblz4.$(EXT_AR): $(SRCFILES)
ifeq ($(BUILD_STATIC),yes) # can be disabled on command line
@echo compiling static library
@$(CC) $(CPPFLAGS) $(CFLAGS) -c $^
@$(AR) rcs $@ *.o
$(CC) $(CPPFLAGS) $(CFLAGS) -c $^
$(AR) rcs $@ *.o
endif
$(LIBLZ4): $(SRCFILES)
@ -107,7 +111,7 @@ liblz4: $(LIBLZ4)
clean:
@$(RM) core *.o liblz4.pc dll/liblz4.dll dll/liblz4.lib
@$(RM) *.a *.$(SHARED_EXT) *.$(SHARED_EXT_MAJOR) *.$(SHARED_EXT_VER)
@$(RM) *.$(EXT_AR) *.$(SHARED_EXT) *.$(SHARED_EXT_MAJOR) *.$(SHARED_EXT_VER)
@echo Cleaning library completed
@ -156,7 +160,7 @@ install: lib liblz4.pc
@$(INSTALL_DATA) liblz4.pc $(DESTDIR)$(PKGCONFIGDIR)/
@echo Installing libraries
ifeq ($(BUILD_STATIC),yes)
@$(INSTALL_DATA) liblz4.a $(DESTDIR)$(LIBDIR)/liblz4.a
@$(INSTALL_DATA) liblz4.$(EXT_AR) $(DESTDIR)$(LIBDIR)/liblz4.$(EXT_AR)
@$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(INCLUDEDIR)/lz4frame_static.h
endif
@$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)
@ -173,7 +177,7 @@ uninstall:
@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT)
@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR)
@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_VER)
@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.a
@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(EXT_AR)
@$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4.h
@$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4hc.h
@$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4frame.h

View File

@ -26,9 +26,10 @@
#define SDB_IPI static
#endif
#if MINGW || __MINGW32__ || __MINGW64__
#define __MINGW__ 1
#else
#define __MINGW__ 0
#endif
#if __WIN32__ || __MINGW__ || __WINDOWS__ || _MSC_VER

View File

@ -47,7 +47,9 @@
# endif
# endif
#endif
#ifndef ZIP_EXTERN
#define ZIP_EXTERN extern
#endif
#ifdef __cplusplus
extern "C" {