Skip to content

Commit

Permalink
ICU-22363 Add support for QNX 7.1
Browse files Browse the repository at this point in the history
Signed-off-by: James Choi <chachoi@blackberry.com>
  • Loading branch information
chachoi authored and richgillam committed Aug 11, 2023
1 parent ca3fd47 commit b70b2d0
Show file tree
Hide file tree
Showing 10 changed files with 177 additions and 0 deletions.
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -279,3 +279,15 @@ tools/unicode/c/genprops/genprops.[0-9]
tools/unicode/c/genuca/genuca
tools/unicode/c/genuca/genuca.8
tools/unicode/c/icudefs.txt

# QNX files
icu4c/build_qnx/linux-x86_64-o/*
icu4c/build_qnx/nto-aarch64-le/*
icu4c/build_qnx/nto-x86_64-o/*
!icu4c/build_qnx/linux-x86_64-o/GNUmakefile
!icu4c/build_qnx/nto-aarch64-le/GNUmakefile
!icu4c/build_qnx/nto-x86_64-o/GNUmakefile
!icu4c/build_qnx/**/Makefile
icu4c/build_qnx/linux-x86_64-o/Makefile
icu4c/build_qnx/nto-aarch64-le/Makefile
icu4c/build_qnx/nto-x86_64-o/Makefile
52 changes: 52 additions & 0 deletions icu4c/build_qnx/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
INSTALL_TARGETS =

ifeq ($(strip $(CPULIST)),)
INSTALL_TARGETS += install-aarch64 install-x86_64
else

ifeq ($(filter aarch64,$(CPULIST)), aarch64)
INSTALL_TARGETS += install-aarch64
endif

ifeq ($(filter x86_64,$(CPULIST)), x86_64)
INSTALL_TARGETS += install-x86_64
endif
endif

linux_CLEANFILES_LIST := $(filter-out linux-x86_64-o/GNUmakefile, $(wildcard linux-x86_64-o/*))
aarch64_CLEANFILES_LIST := $(filter-out nto-aarch64-le/GNUmakefile, $(wildcard nto-aarch64-le/*))
x86_64_CLEANFILES_LIST := $(filter-out nto-x86_64-o/GNUmakefile, $(wildcard nto-x86_64-o/*))

all: install

install: install-linux $(INSTALL_TARGETS)

hinstall:

clean: clean-linux clean-aarch64 clean-x86_64

clean-linux:
ifneq ($(strip $(linux_CLEANFILES_LIST)),)
rm -rf $(linux_CLEANFILES_LIST)
endif

clean-aarch64:
ifneq ($(strip $(aarch64_CLEANFILES_LIST)),)
rm -rf $(aarch64_CLEANFILES_LIST)
endif

clean-x86_64:
ifneq ($(strip $(x86_64_CLEANFILES_LIST)),)
rm -rf $(x86_64_CLEANFILES_LIST)
endif

install-linux:
$(MAKE) -C linux-x86_64-o -f GNUmakefile

install-aarch64: install-linux
$(MAKE) -C nto-aarch64-le -f GNUmakefile install

install-x86_64: install-linux
$(MAKE) -C nto-x86_64-o -f GNUmakefile install


79 changes: 79 additions & 0 deletions icu4c/build_qnx/build-hooks
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
function hook_preconfigure {
if [ "${TARGET_SYSNAME}" == "nto" ]; then
# set the current directory for use in configure_opts
CURDIR="${PWD}"
# prefix is the base path where files are installed in the target filesystem. It is also
# the base path for all architecture independent files
configure_opts="${configure_opts} --prefix=/usr"
# exec-prefix is the base path for architecture dependent files.
configure_opts="${configure_opts} --exec-prefix=/${cpudir}/usr"
configure_opts="${configure_opts} --with-cross-build=${CURDIR}/../linux-x86_64-o"
configure_opts="${configure_opts} --with-data-packaging=auto"
configure_opts="${configure_opts} --srcdir=../../source"

CFLAGS="$CFLAGS -fPIC"
CPPFLAGS="$CPPFLAGS -fPIC"
CXXFLAGS="$CXXFLAGS -std=gnu++11"
else
# prefix is the base path where architecture independent files are installed in the target filesystem
configure_opts="${configure_opts} --prefix=/"
configure_opts="${configure_opts} --srcdir=../../source"
fi
}

function hook_configure {
if [ -z "${ac_version}" ]; then
unset _guess
_pat='/[Gg]enerated.*[Aa]utoconf/s/.*\([1-9]\.[0-9][0-9]*\).*/\1/p'
[ "${_guess}" ] || _guess=$(../../source/configure --version | sed -n -e "${_pat}")
[ "${_guess}" ] || _guess=$(sed -n -e "1,10{
${_pat}
}" <../../source/configure)
AutoconfVersion ${_guess}
fi
../../source/configure \
${ac_host:+"--host=${ac_host}"} \
${ac_build:+"--build=${ac_build}"} \
${configure_opts} \
${ac_params:+${CC:+"CC=${CC}"}} \
${ac_params:+${CFLAGS:+"CFLAGS=-O2 ${CFLAGS}"}} \
${ac_params:+${CPPFLAGS:+"CPPFLAGS=${CPPFLAGS}"}} \
${ac_params:+${LDFLAGS:+"LDFLAGS=${LDFLAGS}"}} \
${ac_params:+${CXX:+"CXX=${CXX}"}} \
${ac_params:+${CXXFLAGS:+"CXXFLAGS=-O2 ${CXXFLAGS}"}} \
${ac_params:+${ac_autotools:+${ac_autotools}}} \
|| Error "configure failed";
}


function hook_premake {
if [ "${TARGET_SYSNAME}" == "nto" ]; then
DESTDIR=${DESTDIR:-${INSTALL_ROOT_nto}}
export DESTDIR
fi
}

function hook_postmake {
if [ "${TARGET_SYSNAME}" == "linux" ]; then
make -fMakefile config/icucross.mk
make -fMakefile config/icucross.inc
fi

if [ "${TARGET_SYSNAME}" == "nto" ]; then
if [ -e "data/out/tmp/icudt72l.dat" ]; then
cp -fv data/out/tmp/icudt72l.dat "${DESTDIR}/usr/share/icu/"
fi
cd test
JLEVEL=4 make all-recursive
cd -
mkdir -p ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/test/testdata
mkdir -p ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/data/out
cp test/cintltst/cintltst ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests
cp test/intltest/intltest ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests
cp test/iotest/iotest ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests
cp -r data/out/build ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/data/out
cp -r test/testdata/out ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/test/testdata
cp -r ../../source/test/testdata ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/test
cp -r ../../source/data ${INSTALL_ROOT_nto}/${cpudir}/usr/bin/icu_tests/
fi
}
6 changes: 6 additions & 0 deletions icu4c/build_qnx/linux-x86_64-o/GNUmakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ifndef QCONFIG
QCONFIG=qconfig.mk
endif
include $(QCONFIG)

include $(MKFILES_ROOT)/qmake-cfg.mk
6 changes: 6 additions & 0 deletions icu4c/build_qnx/nto-aarch64-le/GNUmakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ifndef QCONFIG
QCONFIG=qconfig.mk
endif
include $(QCONFIG)

include $(MKFILES_ROOT)/qmake-cfg.mk
6 changes: 6 additions & 0 deletions icu4c/build_qnx/nto-x86_64-o/GNUmakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ifndef QCONFIG
QCONFIG=qconfig.mk
endif
include $(QCONFIG)

include $(MKFILES_ROOT)/qmake-cfg.mk
4 changes: 4 additions & 0 deletions icu4c/source/configure
Original file line number Diff line number Diff line change
Expand Up @@ -5867,6 +5867,10 @@ else
AR="$ac_cv_prog_AR"
fi

if [ -n "$QNX_TARGET" ]; then
AR="x86_64-linux-gnu-ar"
RANLIB=""x86_64-linux-gnu-ranlib
fi

{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable renaming of symbols" >&5
$as_echo_n "checking whether to enable renaming of symbols... " >&6; }
Expand Down
4 changes: 4 additions & 0 deletions icu4c/source/test/cintltst/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@ BUILDDIR := $(BUILDDIR:TEST\\CINTLTST/../../=)

# we define ICU_UNICODE_VERSION so we can test it
CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/tools/toolutil
ifdef QNX_TARGET
DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
else
DEFS += -D'ICU_UNICODE_VERSION="$(UNICODE_VERSION)"' -D'ICU_VERSION="@VERSION@"' -D'ICUDATA_NAME="$(ICUDATA_PLATFORM_NAME)"' -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
endif
LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUTOOLUTIL) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)

OBJECTS = callcoll.o calltest.o capitst.o cbiapts.o cbkittst.o \
Expand Down
4 changes: 4 additions & 0 deletions icu4c/source/test/intltest/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@ BUILDDIR := $(BUILDDIR:TEST\\INTLTEST/../../=)

CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/toolutil -I$(top_srcdir)/tools/ctestfw
CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT= -DUCHAR_TYPE=char16_t
ifdef QNX_TARGET
DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
else
DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
endif
LIBS = $(LIBCTESTFW) $(LIBICUI18N) $(LIBICUUC) $(LIBICUTOOLUTIL) $(DEFAULT_LIBS) $(LIB_M) $(LIB_THREAD)

OBJECTS = aliastst.o allcoll.o apicoll.o astrotst.o callimts.o calregts.o caltest.o \
Expand Down
4 changes: 4 additions & 0 deletions icu4c/source/test/iotest/Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,11 @@ BUILDDIR := $(BUILDDIR:TEST\\IOTEST/../../=)

CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(top_srcdir)/tools/ctestfw -I$(top_srcdir)/io
CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT= -DUNISTR_FROM_STRING_EXPLICIT=
ifdef QNX_TARGET
DEFS += -D'U_TOPSRCDIR="/var/icu_tests"' -D'U_TOPBUILDDIR="/var/icu_tests/"'
else
DEFS += -D'U_TOPSRCDIR="$(top_srcdir)/"' -D'U_TOPBUILDDIR="$(BUILDDIR)"'
endif
LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUIO) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)

OBJECTS = iotest.o stream.o strtst.o filetst.o trnstst.o
Expand Down

0 comments on commit b70b2d0

Please sign in to comment.