diff options
author | Lukas Larsson <lukas@erlang.org> | 2022-01-21 11:23:48 +0100 |
---|---|---|
committer | Lukas Larsson <lukas@erlang.org> | 2022-01-21 11:23:48 +0100 |
commit | ceca17908ca5d7c5d436530d1c5b45e8febc24cc (patch) | |
tree | bcb4512eb6498fc11c6bebad3aae9b81630a01bf /lib/erl_interface/src | |
parent | 0ef24bfcbd4950171e9279a697249961d438481a (diff) | |
parent | c189373eb8412ea3a4d95cb6dfbd18a5d67dc1c6 (diff) | |
download | erlang-ceca17908ca5d7c5d436530d1c5b45e8febc24cc.tar.gz |
Merge branch 'maint'
Diffstat (limited to 'lib/erl_interface/src')
-rw-r--r-- | lib/erl_interface/src/Makefile.in | 104 | ||||
-rw-r--r-- | lib/erl_interface/src/connect/ei_connect.c | 2 | ||||
-rw-r--r-- | lib/erl_interface/src/connect/ei_resolve.c | 28 | ||||
-rw-r--r-- | lib/erl_interface/src/misc/ei_locking.h | 2 | ||||
-rw-r--r-- | lib/erl_interface/src/prog/erl_call.c | 5 |
5 files changed, 70 insertions, 71 deletions
diff --git a/lib/erl_interface/src/Makefile.in b/lib/erl_interface/src/Makefile.in index 204408ee22..9f3fe1333f 100644 --- a/lib/erl_interface/src/Makefile.in +++ b/lib/erl_interface/src/Makefile.in @@ -106,7 +106,10 @@ endif WARNFLAGS += -DEI_NO_DEPR_WARN -CFLAGS = @LIB_CFLAGS@ $(WARNFLAGS) $(INCFLAGS) $(TYPE_FLAGS) +CFLAGS = @DED_CFLAGS@ $(WARNFLAGS) $(INCFLAGS) $(TYPE_FLAGS) +DED_LD = @DED_LD@ +DED_LDFLAGS = @DED_LDFLAGS@ +DED_LD_FLAG_RUNTIME_LIBRARY_PATH = @DED_LD_FLAG_RUNTIME_LIBRARY_PATH@ PROG_CFLAGS = @CFLAGS@ $(WARNFLAGS) $(INCFLAGS) $(TYPE_FLAGS) -Iglobal INSTALL = @INSTALL@ @@ -127,6 +130,7 @@ MT_OBJDIR = $(ERL_TOP)/lib/erl_interface/obj.mt$(TYPEMARKER)/$(TARGET) MD_OBJDIR = $(ERL_TOP)/lib/erl_interface/obj.md$(TYPEMARKER)/$(TARGET) MDD_OBJDIR = $(ERL_TOP)/lib/erl_interface/obj.mdd$(TYPEMARKER)/$(TARGET) OBJDIR = $(ERL_TOP)/lib/erl_interface/obj$(TYPEMARKER)/$(TARGET) +LIBDIR = $(ERL_TOP)/lib/erl_interface/lib/$(TARGET) BINDIR = $(ERL_TOP)/lib/erl_interface/bin/$(TARGET) # FIXME maybe use this opt and remove (int) cast to is*() functions @@ -149,14 +153,14 @@ ifeq ($(USING_VC),yes) LIBEXT=.lib LIBPRE= MTFLAG=-MT - else LIBEXT=.a LIBPRE=lib MTFLAG= - endif +DYNLIBEXT=.@DED_EXT@ + ########################################################################### # Specify targets names ########################################################################### @@ -166,11 +170,16 @@ ERL_CALL = $(BINDIR)/erl_call$(EXE) ifdef THR_DEFS ST_EILIB = $(OBJDIR)/$(LIBPRE)ei_st$(LIBEXT) MT_EILIB = $(OBJDIR)/$(LIBPRE)ei$(LIBEXT) +ST_EISHLIB = $(LIBDIR)/$(LIBPRE)ei_st$(DYNLIBEXT) +MT_EISHLIB = $(LIBDIR)/$(LIBPRE)ei$(DYNLIBEXT) else ST_EILIB = $(OBJDIR)/$(LIBPRE)ei$(LIBEXT) +ST_EISHLIB = $(LIBDIR)/$(LIBPRE)ei$(DYNLIBEXT) endif MD_EILIB = $(OBJDIR)/$(LIBPRE)ei_md$(LIBEXT) MDD_EILIB = $(OBJDIR)/$(LIBPRE)ei_mdd$(LIBEXT) +MD_EISHLIB = $(LIBDIR)/$(LIBPRE)ei_md$(DYNLIBEXT) +MDD_EISHLIB = $(LIBDIR)/$(LIBPRE)ei_mdd$(DYNLIBEXT) ########################################################################### # Specify targets to build @@ -183,17 +192,17 @@ ifeq ($(USING_VC),yes) # Windows targets -TARGETS = \ - $(OBJ_TARGETS) \ - $(EXE_TARGETS) \ - $(APP_TARGET) \ - $(APPUP_TARGET) - OBJ_TARGETS = \ $(MT_EILIB) \ $(MD_EILIB) \ $(MDD_EILIB) +SH_TARGETS = \ + $(MT_EISHLIB) \ + $(MD_EISHLIB) \ + $(MDD_EISHLIB) + + FAKE_TARGETS = \ $(OBJDIR)/erl_fake_prog_mt$(EXE) \ $(OBJDIR)/ei_fake_prog_mt$(EXE) \ @@ -210,36 +219,18 @@ FAKE_TARGETS = \ else -ifeq ($USING_MINGW,yes) -TARGETS = \ - $(OBJ_TARGETS) \ - $(EXE_TARGETS) \ - $(APP_TARGET) \ - $(APPUP_TARGET) - -OBJ_TARGETS = \ - $(MD_EILIB) - -FAKE_TARGETS = \ - $(OBJDIR)/erl_fake_prog_md$(EXE) \ - $(OBJDIR)/ei_fake_prog_md$(EXE) \ - $(OBJDIR)/erl_fake_prog_cxx_md$(EXE) \ - $(OBJDIR)/ei_fake_prog_cxx_md$(EXE) -else # Unix targets ifdef THR_DEFS -TARGETS = \ - $(OBJ_TARGETS) \ - $(EXE_TARGETS) \ - $(APP_TARGET) \ - $(APPUP_TARGET) - OBJ_TARGETS = \ $(ST_EILIB) \ $(MT_EILIB) +SH_TARGETS = \ + $(ST_EISHLIB) \ + $(MT_EISHLIB) + FAKE_TARGETS = \ $(ST_OBJDIR)/erl_fake_prog_st$(EXE) \ $(ST_OBJDIR)/ei_fake_prog_st$(EXE) \ @@ -252,15 +243,12 @@ FAKE_TARGETS = \ else -TARGETS = \ - $(OBJ_TARGETS) \ - $(EXE_TARGETS) \ - $(APP_TARGET) \ - $(APPUP_TARGET) - OBJ_TARGETS = \ $(ST_EILIB) +SH_TARGETS = \ + $(ST_EISHLIB) + FAKE_TARGETS = \ $(ST_OBJDIR)/erl_fake_prog_st$(EXE) \ $(ST_OBJDIR)/ei_fake_prog_st$(EXE) \ @@ -271,7 +259,13 @@ endif endif -endif +TARGETS = \ + $(OBJ_TARGETS) \ + $(SH_TARGETS) \ + $(EXE_TARGETS) \ + $(APP_TARGET) \ + $(APPUP_TARGET) + ########################################################################### # List all source files ########################################################################### @@ -415,10 +409,10 @@ docs: tests: clean: - rm -f $(ST_EIOBJECTS) $(ST_EILIB) - rm -f $(MT_EIOBJECTS) $(MT_EILIB) - rm -f $(MD_EIOBJECTS) $(MD_EILIB) - rm -f $(MDD_EIOBJECTS) $(MDD_EILIB) + rm -f $(ST_EIOBJECTS) $(ST_EILIB) $(ST_EISHLIB) + rm -f $(MT_EIOBJECTS) $(MT_EILIB) $(MT_EISHLIB) + rm -f $(MD_EIOBJECTS) $(MD_EILIB) $(MD_EISHLIB) + rm -f $(MDD_EIOBJECTS) $(MDD_EILIB) $(MDD_EISHLIB) rm -f $(ERL_CALL) rm -f $(FAKE_TARGETS) rm -f $(APP_TARGET) @@ -451,7 +445,7 @@ $(MDD_OBJDIR)/%.o: %.c # Create directories ########################################################################### -_create_dirs := $(shell mkdir -p $(EBINDIR) $(BINDIR) $(OBJDIR) $(ST_OBJDIR) $(MT_OBJDIR) $(MD_OBJDIR) $(MDD_OBJDIR)) +_create_dirs := $(shell mkdir -p $(EBINDIR) $(BINDIR) $(OBJDIR) $(ST_OBJDIR) $(MT_OBJDIR) $(MD_OBJDIR) $(MDD_OBJDIR) $(LIBDIR)) ########################################################################### # Special rules @@ -482,6 +476,8 @@ $(MDD_EILIB) : $(MDD_EIOBJECTS) $(V_AR) -out:$@ $(MDD_EIOBJECTS) $(V_RANLIB) $@ +WIN_SOCKET=-lsocket + else # Unix archive creation @@ -493,7 +489,6 @@ ifdef RANLIB $(V_RANLIB) $@ endif - $(MT_EILIB) : $(MT_EIOBJECTS) $(V_at)rm -f $@ $(V_AR) $(AR_FLAGS) $@ $(MT_EIOBJECTS) @@ -503,6 +498,23 @@ endif endif +$(ST_EISHLIB): $(ST_EIOBJECTS) + $(ld_verbose) $(DED_LD) $(DED_LDFLAGS) -o $@ \ + $(DED_LD_FLAG_RUNTIME_LIBRARY_PATH) $(ST_EIOBJECTS) \ + $(THR_LIBS) $(LIBS) $(WIN_SOCKET) +$(MT_EISHLIB): $(MT_EIOBJECTS) + $(ld_verbose) $(DED_LD) $(DED_LDFLAGS) -o $@ \ + $(DED_LD_FLAG_RUNTIME_LIBRARY_PATH) $(MT_EIOBJECTS) \ + $(THR_LIBS) $(LIBS) $(WIN_SOCKET) +$(MD_EISHLIB): $(MD_EIOBJECTS) + $(ld_verbose) $(DED_LD) -MD $(DED_LDFLAGS) -o $@ \ + $(DED_LD_FLAG_RUNTIME_LIBRARY_PATH) $(MD_EIOBJECTS) \ + $(THR_LIBS) $(LIBS) $(WIN_SOCKET) +$(MDD_EISHLIB): $(MDD_EIOBJECTS) + $(ld_verbose) $(DED_LD) -MDd $(DED_LDFLAGS) -o $@ \ + $(DED_LD_FLAG_RUNTIME_LIBRARY_PATH) $(MDD_EIOBJECTS) \ + $(THR_LIBS) $(LIBS) $(WIN_SOCKET) + ########################################################################### # erl_call FIXME how to avoid explicit -lsocket on winows??? ########################################################################### @@ -688,6 +700,10 @@ release: opt $(INSTALL_DATA) $(HEADERS) "$(RELEASE_PATH)/usr/include" $(INSTALL_DATA) $(OBJ_TARGETS) "$(RELSYSDIR)/lib" $(INSTALL_DATA) $(OBJ_TARGETS) "$(RELEASE_PATH)/usr/lib" +ifeq (@DYNAMIC_LIB@, yes) + $(INSTALL_PROGRAM) $(SH_TARGETS) "$(RELSYSDIR)/lib" + $(INSTALL_PROGRAM) $(SH_TARGETS) "$(RELEASE_PATH)/usr/lib" +endif $(INSTALL_PROGRAM) $(EXE_TARGETS) "$(RELSYSDIR)/bin" $(INSTALL_DATA) $(EXTRA) "$(RELSYSDIR)/src" $(INSTALL_DATA) connect/*.[ch] "$(RELSYSDIR)/src/connect" diff --git a/lib/erl_interface/src/connect/ei_connect.c b/lib/erl_interface/src/connect/ei_connect.c index 9917ed0978..eac23c40c7 100644 --- a/lib/erl_interface/src/connect/ei_connect.c +++ b/lib/erl_interface/src/connect/ei_connect.c @@ -660,7 +660,7 @@ int ei_make_pid(ei_cnode *ec, erlang_pid *pid) #undef EI_MAKE_REF_ATOMIC__ #ifdef _REENTRANT -# if ((SIZEOF_LONG == 8 || SIZEOF_LONGLONG == 8) \ +# if ((SIZEOF_LONG == 8 || SIZEOF_LONG_LONG == 8) \ && (ETHR_HAVE___atomic_compare_exchange_n & 8) \ && (ETHR_HAVE___atomic_load_n & 8)) # define EI_MAKE_REF_ATOMIC__ diff --git a/lib/erl_interface/src/connect/ei_resolve.c b/lib/erl_interface/src/connect/ei_resolve.c index 1d11c5043d..e28902da82 100644 --- a/lib/erl_interface/src/connect/ei_resolve.c +++ b/lib/erl_interface/src/connect/ei_resolve.c @@ -102,7 +102,7 @@ int ei_init_resolve(void) return 0; } -#if _REENTRANT +#ifdef _REENTRANT /* * Copy the contents of one struct hostent to another, i.e. don't just @@ -290,10 +290,6 @@ static struct hostent *my_gethostbyname_r(const char *name, return rval; } -#endif /* _REENTRANT */ - -#if EI_THREADS != false - static struct hostent *my_gethostbyaddr_r(const char *addr, int length, int type, @@ -358,7 +354,7 @@ static struct hostent *my_gethostbyaddr_r(const char *addr, return rval; } -#endif /* EI_THREADS != false */ +#endif /* _REENTRANT */ #endif /* !HAVE_GETHOSTBYNAME_R */ @@ -394,14 +390,12 @@ struct hostent *ei_gethostbyaddr_r(const char *addr, int buflen, int *h_errnop) { -#if (EI_THREADS == false) +#ifndef _REENTRANT /* threads disabled, no need to call reentrant function */ - return gethostbyaddr(addr, length, type); -#else -#ifndef HAVE_GETHOSTBYNAME_R + return gethostbyaddr(addr, length, type); +#elif !defined(HAVE_GETHOSTBYNAME_R) return my_gethostbyaddr_r(addr,length,type,hostp,buffer,buflen,h_errnop); -#else -#if (defined(__GLIBC__) || defined(__linux__) || (__FreeBSD_version >= 602000) || defined(__DragonFly__)) +#elif (defined(__GLIBC__) || defined(__linux__) || (__FreeBSD_version >= 602000) || defined(__DragonFly__)) struct hostent *result; gethostbyaddr_r(addr, length, type, hostp, buffer, buflen, &result, @@ -411,8 +405,6 @@ struct hostent *ei_gethostbyaddr_r(const char *addr, #else return gethostbyaddr_r(addr,length,type,hostp,buffer,buflen,h_errnop); #endif -#endif -#endif } struct hostent *ei_gethostbyname_r(const char *name, @@ -424,11 +416,9 @@ struct hostent *ei_gethostbyname_r(const char *name, #ifndef _REENTRANT /* threads disabled, no need to call reentrant function */ return gethostbyname(name); -#else -#ifndef HAVE_GETHOSTBYNAME_R +#elif !defined(HAVE_GETHOSTBYNAME_R) return my_gethostbyname_r(name,hostp,buffer,buflen,h_errnop); -#else -#if (defined(__GLIBC__) || defined(__linux__) || (__FreeBSD_version >= 602000) || defined(__DragonFly__) || defined(__ANDROID__)) +#elif (defined(__GLIBC__) || defined(__linux__) || (__FreeBSD_version >= 602000) || defined(__DragonFly__) || defined(__ANDROID__)) struct hostent *result; int err; @@ -440,8 +430,6 @@ struct hostent *ei_gethostbyname_r(const char *name, #else return gethostbyname_r(name,hostp,buffer,buflen,h_errnop); #endif -#endif -#endif } #endif /* win, unix */ diff --git a/lib/erl_interface/src/misc/ei_locking.h b/lib/erl_interface/src/misc/ei_locking.h index ac9ba41a47..7ee7715448 100644 --- a/lib/erl_interface/src/misc/ei_locking.h +++ b/lib/erl_interface/src/misc/ei_locking.h @@ -32,7 +32,7 @@ #ifdef HAVE_MIT_PTHREAD_H #include <pthread/mit/pthread.h> -#elif HAVE_PTHREAD_H +#elif defined(HAVE_PTHREAD_H) && HAVE_PTHREAD_H #include <pthread.h> #endif diff --git a/lib/erl_interface/src/prog/erl_call.c b/lib/erl_interface/src/prog/erl_call.c index 2b756a921d..6f965fd62c 100644 --- a/lib/erl_interface/src/prog/erl_call.c +++ b/lib/erl_interface/src/prog/erl_call.c @@ -1203,11 +1203,6 @@ void exit_free_flags_fields(int exit_status, struct call_flags* flags) { /* Constants and helper functions used by erl_start_sys */ -/* FIXME is this a case a vfork can be used? */ -#if !HAVE_WORKING_VFORK -# define vfork fork -#endif - #ifndef MAXPATHLEN #define MAXPATHLEN 1024 #endif |