From 97a2e5b12c17c17a2daa72b5e0dd38b39f9d59a5 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Wed, 23 Jan 2019 14:32:52 -0800 Subject: [PATCH] Updated so compiles for MIPS correctly --- makefile | 14 +++++++++++ microscript/ILibDuktape_Dgram.c | 6 ++++- microscript/ILibDuktape_ScriptContainer.c | 7 ++++-- microscript/duk_config.h | 2 +- microstack/ILibIPAddressMonitor.c | 29 ++++++++++++++--------- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/makefile b/makefile index 42ce878..09deb3f 100644 --- a/makefile +++ b/makefile @@ -20,6 +20,9 @@ # # To build for 32 bit on 64 bit linux # sudo apt-get install linux-libc-dev:i386 +# sudo apt-get install libc6-dev-i386 +# sudo apt-get install libjpeg8-dev:i386 +# # # To install ARM Cross Compiler for Raspberry PI # sudo apt-get install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev gcc-arm-linux-gnueabihf @@ -144,6 +147,9 @@ ARCHNAME = mips CC = $(PATH_MIPS)mipsel-linux-gcc STRIP = $(PATH_MIPS)mipsel-linux-strip CEXTRA = -D_FORTIFY_SOURCE=2 -D_NOILIBSTACKDEBUG -D_NOFSWATCHER -Wformat -Wformat-security -fno-strict-aliasing +CFLAGS += -DBADMATH +IPADDR_MONITOR_DISABLE = 1 +IFADDR_DISABLE = 1 KVM = 0 LMS = 0 endif @@ -286,6 +292,14 @@ ifeq ($(SSL_TRACE),1) CFLAGS += -DSSL_TRACE endif +ifeq ($(IPADDR_MONITOR_DISABLE),1) +CFLAGS += -DNO_IPADDR_MONITOR +endif + +ifeq ($(IFADDR_DISABLE),1) +CFLAGS += -DNO_IFADDR +endif + GCCTEST := $(shell $(CC) meshcore/dummy.c -o /dev/null -no-pie > /dev/null 2>&1 ; echo $$? ) ifeq ($(GCCTEST),0) LDFLAGS += -no-pie diff --git a/microscript/ILibDuktape_Dgram.c b/microscript/ILibDuktape_Dgram.c index ebf1781..4fe1230 100644 --- a/microscript/ILibDuktape_Dgram.c +++ b/microscript/ILibDuktape_Dgram.c @@ -27,7 +27,9 @@ limitations under the License. #include #else #include -#include +#ifndef NO_IFADDR + #include +#endif #endif #include "ILibDuktape_Dgram.h" @@ -123,6 +125,7 @@ void ILibDuktape_Dgram_Socket_OnSendOK(ILibAsyncUDPSocket_SocketModule socketMod int ILibDuktape_DGram_getIPv6ScopeID(struct in6_addr *addr) { int retVal = 0; +#ifndef NO_IFADDR struct ifaddrs *addrlist; struct ifaddrs *current; if (getifaddrs(&addrlist) == 0) @@ -142,6 +145,7 @@ int ILibDuktape_DGram_getIPv6ScopeID(struct in6_addr *addr) } freeifaddrs(addrlist); } +#endif return(retVal); } #endif diff --git a/microscript/ILibDuktape_ScriptContainer.c b/microscript/ILibDuktape_ScriptContainer.c index 4de5104..ec4aeae 100644 --- a/microscript/ILibDuktape_ScriptContainer.c +++ b/microscript/ILibDuktape_ScriptContainer.c @@ -23,7 +23,9 @@ limitations under the License. #else #include #include -#include +#ifndef NO_IFADDR + #include +#endif #ifndef __APPLE__ #include #else @@ -1225,6 +1227,7 @@ duk_ret_t ILibDuktape_ScriptContainer_OS_networkInterfaces(duk_context *ctx) padapters = padapters->Next; } #else +#ifndef NO_IFADDR struct ifaddrs *addrlist; struct ifaddrs *current; if (getifaddrs(&addrlist) == 0) @@ -1356,7 +1359,7 @@ duk_ret_t ILibDuktape_ScriptContainer_OS_networkInterfaces(duk_context *ctx) } duk_pop(ctx); #endif - +#endif return(1); } #endif diff --git a/microscript/duk_config.h b/microscript/duk_config.h index 2295be5..f691735 100644 --- a/microscript/duk_config.h +++ b/microscript/duk_config.h @@ -2373,7 +2373,7 @@ typedef struct duk_hthread duk_context; * that too. Android doesn't have log2; disable all of these for Android. */ #if (defined(DUK_F_C99) || defined(DUK_F_CPP11) || (defined(_MSC_VER) && (_MSC_VER >= 1800))) && \ - !defined(DUK_F_ANDROID) && !defined(DUK_F_MINT) + !defined(DUK_F_ANDROID) && !defined(DUK_F_MINT) && !defined(BADMATH) #if !defined(DUK_CBRT) #define DUK_CBRT cbrt #endif diff --git a/microstack/ILibIPAddressMonitor.c b/microstack/ILibIPAddressMonitor.c index 160d08d..b61ccab 100644 --- a/microstack/ILibIPAddressMonitor.c +++ b/microstack/ILibIPAddressMonitor.c @@ -28,7 +28,7 @@ limitations under the License. #include "ILibParsers.h" -#if defined(_POSIX) && !defined(__APPLE__) +#if defined(_POSIX) && !defined(__APPLE__) && !defined(NO_IPADDR_MONITOR) #include #include #include @@ -42,20 +42,21 @@ typedef struct _ILibIPAddressMonitor ILibChain_Link chainLink; ILibIPAddressMonitor_Handler onUpdate; void *user; -#ifdef WIN32 - SOCKET mSocket; - DWORD bytesReturned; - OVERLAPPED *reserved; -#elif defined (_POSIX) && !defined(__APPLE__) - int mSocket; - struct sockaddr_nl addr; +#ifndef NO_IPADDR_MONITOR + #ifdef WIN32 + SOCKET mSocket; + DWORD bytesReturned; + OVERLAPPED *reserved; + #elif defined (_POSIX) && !defined(__APPLE__) + int mSocket; + struct sockaddr_nl addr; + #endif #endif - }_ILibIPAddressMonitor; int ILibMemory_IPAddressMonitor_CONTAINER_SIZE = sizeof(_ILibIPAddressMonitor); void ILibIPAddressMonitor_MicrostackThreadDispatch(void *chain, void *user); -#ifdef WIN32 +#if defined(WIN32) && !defined(NO_IPADDR_MONITOR) void CALLBACK ILibIPAddressMonitor_dispatch( IN DWORD dwError, IN DWORD cbTransferred, @@ -84,6 +85,7 @@ void ILibIPAddressMonitor_MicrostackThreadDispatch(void *chain, void *user) } #endif +#ifndef NO_IPADDR_MONITOR void ILibIPAddressMonitor_Destroy(void *object) { #ifndef __APPLE__ @@ -132,10 +134,12 @@ void ILibIPAddressMonitor_PostSelect(void* object, int slct, fd_set *readset, fd } } #endif - +#endif ILibIPAddressMonitor ILibIPAddressMonitor_Create(void *chain, ILibIPAddressMonitor_Handler handler, void *user) { _ILibIPAddressMonitor *obj = (_ILibIPAddressMonitor*)ILibChain_Link_Allocate(ILibMemory_IPAddressMonitor_CONTAINER_SIZE, 0); +#ifndef NO_IPADDR_MONITOR + obj->onUpdate = handler; obj->user = user; #ifdef WIN32 @@ -165,5 +169,8 @@ ILibIPAddressMonitor ILibIPAddressMonitor_Create(void *chain, ILibIPAddressMonit obj->chainLink.DestroyHandler = ILibIPAddressMonitor_Destroy; ILibAddToChain(chain, obj); + +#endif + return((ILibIPAddressMonitor)obj); }