summaryrefslogtreecommitdiff
path: root/ACE
diff options
context:
space:
mode:
Diffstat (limited to 'ACE')
-rw-r--r--ACE/ace/OS_NS_Thread.cpp2
-rw-r--r--ACE/ace/config-vxworks.h12
-rw-r--r--ACE/ace/config-vxworks21.03.h71
-rw-r--r--ACE/ace/config-vxworks22.03.h53
-rw-r--r--ACE/include/makeinclude/platform_vxworks7.0.GNU18
-rw-r--r--ACE/include/makeinclude/rules.local.GNU6
6 files changed, 108 insertions, 54 deletions
diff --git a/ACE/ace/OS_NS_Thread.cpp b/ACE/ace/OS_NS_Thread.cpp
index 885550619a8..6c866aeea8f 100644
--- a/ACE/ace/OS_NS_Thread.cpp
+++ b/ACE/ace/OS_NS_Thread.cpp
@@ -5141,7 +5141,7 @@ vx_execae (FUNCPTR entry, char* arg, int prio, int opt, size_t stacksz, ...)
if (ret == ACE_VX_TASK_ID_ERROR)
return 255;
- while( ret > 0 && ::taskIdVerify (ret) != ERROR )
+ while( ::taskIdVerify (ret) != ERROR )
::taskDelay (3 * ::sysClkRateGet ());
// ::taskSpawn () returns TASK_ID_ERROR on failure: return _vx_call_rc instead if
diff --git a/ACE/ace/config-vxworks.h b/ACE/ace/config-vxworks.h
index e9b35930a27..2239184cc6f 100644
--- a/ACE/ace/config-vxworks.h
+++ b/ACE/ace/config-vxworks.h
@@ -6,6 +6,10 @@
#define ACE_CONFIG_VXWORKS_H
#include /**/ "ace/pre.h"
+#if !defined(ACE_VXWORKS_RELEASE)
+# define ACE_VXWORKS_RELEASE ACE_VXWORKS
+#endif
+
// If ACE_VXWORKS is not defined try to figure out the VxWorks version
#if !defined (ACE_VXWORKS)
# include "vxWorks.h"
@@ -53,7 +57,13 @@
#elif (ACE_VXWORKS == 0x690)
# include "ace/config-vxworks6.9.h"
#elif (ACE_VXWORKS == 0x700)
-# include "ace/config-vxworks7.0.h"
+# if (ACE_VXWORKS_RELEASE == 0x2103)
+# include "ace/config-vxworks21.03.h"
+# elif (ACE_VXWORKS_RELEASE >= 0x2203)
+# include "ace/config-vxworks22.03.h"
+# else
+# include "ace/config-vxworks7.0.h"
+# endif
#else
# error Unknown or unsupported VxWorks version
#endif
diff --git a/ACE/ace/config-vxworks21.03.h b/ACE/ace/config-vxworks21.03.h
new file mode 100644
index 00000000000..5d5f8489bea
--- /dev/null
+++ b/ACE/ace/config-vxworks21.03.h
@@ -0,0 +1,71 @@
+/* -*- C++ -*- */
+// The following configuration file is designed to work for VxWorks
+// 21.03 platforms using one of these compilers:
+// 1) The llvm compiler that is shipped with VxWorks 21.03
+
+#ifndef ACE_CONFIG_VXWORKS_21_03_H
+#define ACE_CONFIG_VXWORKS_21_03_H
+#include /**/ "ace/pre.h"
+
+#include "ace/config-vxworks7.0.h"
+
+#if defined (__RTP__)
+# include "semLibCommon.h"
+# define ACE_LACKS_IF_NAMEINDEX
+# define ACE_LACKS_FGETWC
+#else
+# undef ACE_MKDIR_LACKS_MODE
+# define ACE_LACKS_GETPID
+#endif
+
+#undef ACE_SIZEOF_WCHAR
+#define ACE_SIZEOF_WCHAR 4
+
+#define ACE_HAS_SOCKLEN_T
+
+#undef ACE_LACKS_GETSERVBYNAME
+#undef ACE_LACKS_GETPROTOBYNAME
+#undef ACE_LACKS_GETPROTOBYNUMBER
+#undef ACE_LACKS_GETIPNODEBYADDR
+#undef ACE_LACKS_LSTAT
+#undef ACE_LACKS_MKFIFO
+#undef ACE_LACKS_MKSTEMP
+#undef ACE_LACKS_READLINK
+#undef ACE_LACKS_REALPATH
+#undef ACE_LACKS_PIPE
+#undef ACE_LACKS_UMASK
+#undef ACE_LACKS_TEMPNAM
+#undef ACE_HAS_SIGTIMEDWAIT
+#undef ACE_HAS_SIGSUSPEND
+#undef ACE_HAS_GETIFADDRS
+
+#undef ACE_LACKS_SETEGID
+#undef ACE_LACKS_SETUID
+#undef ACE_LACKS_SETEUID
+#undef ACE_LACKS_GETEUID
+#undef ACE_LACKS_GETUID
+#undef ACE_LACKS_GETEGID
+#undef ACE_LACKS_GETGID
+#undef ACE_LACKS_SETGID
+
+#undef ACE_LACKS_SYS_UIO_H
+#undef ACE_LACKS_TERMIOS_H
+#undef ACE_LACKS_FCNTL
+#undef ACE_HAS_CHARPTR_SOCKOPT
+
+#undef ACE_LACKS_INTPTR_T
+#undef ACE_LACKS_INTTYPES_H
+#undef ACE_LACKS_STDINT_H
+#undef ACE_LACKS_SYS_TIME_H
+#undef ACE_LACKS_SYS_SELECT_H
+#undef ACE_HAS_SIZET_PTR_ASCTIME_R_AND_CTIME_R
+#undef ACE_LACKS_SEARCH_H
+
+#undef ACE_LACKS_TZSET
+#undef ACE_LACKS_ISWCTYPE
+#undef ACE_LACKS_ISBLANK
+
+#undef ACE_LACKS_RAND_R
+
+#include /**/ "ace/post.h"
+#endif /* ACE_CONFIG_VXWORKS_21_03_H */
diff --git a/ACE/ace/config-vxworks22.03.h b/ACE/ace/config-vxworks22.03.h
index 3e4ca4c77f5..3b1bfed81b6 100644
--- a/ACE/ace/config-vxworks22.03.h
+++ b/ACE/ace/config-vxworks22.03.h
@@ -7,58 +7,7 @@
#define ACE_CONFIG_VXWORKS_22_03_H
#include /**/ "ace/pre.h"
-#include "ace/config-vxworks.h"
-
-#if !defined (__RTP__)
-# undef ACE_MKDIR_LACKS_MODE
-# define ACE_LACKS_GETPID
-#endif
-
-#define ACE_HAS_SOCKLEN_T
-
-#undef ACE_LACKS_GETSERVBYNAME
-#undef ACE_LACKS_GETPROTOBYNAME
-#undef ACE_LACKS_GETPROTOBYNUMBER
-#undef ACE_LACKS_GETIPNODEBYADDR
-#undef ACE_LACKS_LSTAT
-#undef ACE_LACKS_MKFIFO
-#undef ACE_LACKS_MKSTEMP
-#undef ACE_LACKS_READLINK
-#undef ACE_LACKS_REALPATH
-#undef ACE_LACKS_PIPE
-#undef ACE_LACKS_UMASK
-#undef ACE_LACKS_TEMPNAM
-#undef ACE_HAS_SIGTIMEDWAIT
-#undef ACE_HAS_SIGSUSPEND
-#undef ACE_HAS_GETIFADDRS
-
-#undef ACE_LACKS_SETEGID
-#undef ACE_LACKS_SETUID
-#undef ACE_LACKS_SETEUID
-#undef ACE_LACKS_GETEUID
-#undef ACE_LACKS_GETUID
-#undef ACE_LACKS_GETEGID
-#undef ACE_LACKS_GETGID
-#undef ACE_LACKS_SETGID
-
-#undef ACE_LACKS_SYS_UIO_H
-#undef ACE_LACKS_TERMIOS_H
-#undef ACE_LACKS_FCNTL
-#undef ACE_HAS_CHARPTR_SOCKOPT
-
-#undef ACE_LACKS_INTPTR_T
-#undef ACE_LACKS_INTTYPES_H
-#undef ACE_LACKS_STDINT_H
-#undef ACE_LACKS_SYS_TIME_H
-#undef ACE_LACKS_SYS_SELECT_H
-#undef ACE_HAS_SIZET_PTR_ASCTIME_R_AND_CTIME_R
-#undef ACE_LACKS_SEARCH_H
-
-#undef ACE_LACKS_TZSET
-#undef ACE_LACKS_ISWCTYPE
-#undef ACE_LACKS_ISBLANK
-
-#undef ACE_LACKS_RAND_R
+#include "ace/config-vxworks21.03.h"
#include /**/ "ace/post.h"
#endif /* ACE_CONFIG_VXWORKS_22_03_H */
diff --git a/ACE/include/makeinclude/platform_vxworks7.0.GNU b/ACE/include/makeinclude/platform_vxworks7.0.GNU
index 4ca47346ccf..8f8e99348d9 100644
--- a/ACE/include/makeinclude/platform_vxworks7.0.GNU
+++ b/ACE/include/makeinclude/platform_vxworks7.0.GNU
@@ -72,6 +72,10 @@ endif
VXWORKS_VERSION_FLAG ?= -DACE_VXWORKS=0x700
CPPFLAGS += $(VXWORKS_VERSION_FLAG)
+ifneq ($(WIND_RELEASE_ID), )
+ CPPFLAGS += -DACE_VXWORKS_RELEASE=0x$(subst .,,$(WIND_RELEASE_ID))
+endif
+
ifeq ($(pthread),1)
CPPFLAGS += -DACE_HAS_PTHREADS
endif
@@ -98,6 +102,20 @@ endif
ace_vx_mk_dir = $(if $(findstring 1,$(rtp)),$(WIND_USR_MK),$(WIND_KRNL_MK))
include $(ace_vx_mk_dir)/defs.library.mk
+ifneq ($(rtp),0)
+ ## If we are building rtp and using the llvm (clang) compiler, we need to
+ ## use the linker directly to create shared libraries and executables.
+ ifeq ($(TOOL),llvm)
+ LLD = $(__WRS_TOOL_PATH)/ld$(TOOLENV)
+ define LINK.cc.override
+$(LLD) $(LDFLAGS) $(LD_EMULATION) --allow-shlib-undefined -EL $(VSB_DIR)/usr/lib/common/crt0.o -o $@ $(filter %.o,$^) --start-group --as-needed $(LDLIBS) -lc -lc_internal -lllvm -lcplusplus -lllvmcplus -lnet -ldl --end-group
+ endef
+ define SOLINK.cc.override
+$(LLD) $(LDFLAGS) $(LD_EMULATION) -shared --exclude-libs libc_internal.a -u __init -u __fini -soname="$@" -o $@ $(filter %.o,$^) -lc -lc_internal -lcplusplus -lnet
+ endef
+ endif
+endif
+
dkm_libstdcpp ?= $(if $(findstring y,$(_WRS_CONFIG_PRI_diab)),1,0)
ifeq ($(dkm_libstdcpp),1)
DKM_LIBS += -L$(VSB_DIR)/krnl/gnu_standard --start-group -lstl -lgnucplus --end-group
diff --git a/ACE/include/makeinclude/rules.local.GNU b/ACE/include/makeinclude/rules.local.GNU
index e562b5acc99..11283525473 100644
--- a/ACE/include/makeinclude/rules.local.GNU
+++ b/ACE/include/makeinclude/rules.local.GNU
@@ -293,11 +293,17 @@ $(INSMAN)/manl/% \
$(INSMAN)/mann/% :
@$(MKDIR) $(@D)
ifeq ($(vxworks_ntbuild),1)
+ ifeq ($(SOVERSION),)
+ @if not "$(ARCH_SOURCE_DIR)/$(@F)" == "$@" \
+ echo $(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $@ && \
+ $(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $@
+ else
@if not exist $@ $(RM) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) && \
$(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $(@:%.$(SOEXT)$(SOVERSION)=%.$(SOEXT)) && \
$(RM) $@ && \
echo $(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $@ && \
$(LN_S) $(ARCH_SOURCE_DIR)/$(@F) $@
+ endif #SOVERSION
else #not vxworks_ntbuild
ifeq ($(firstword $(LN_S)),cp)
ifneq ($(SOVERSION),)