diff --git a/build.sh b/build.sh index 8c00356..d07bdc6 100755 --- a/build.sh +++ b/build.sh @@ -75,4 +75,6 @@ fi [ "${PORTS_FS_MARK}" = "y" ] && ./phoenix-rtos-ports/fs_mark/build.sh +[ "${PORTS_COREMARK}" = "y" ] && ./phoenix-rtos-ports/coremark/build.sh + exit 0 diff --git a/coremark/01-core_portme.patch b/coremark/01-core_portme.patch new file mode 100644 index 0000000..b9e03c9 --- /dev/null +++ b/coremark/01-core_portme.patch @@ -0,0 +1,28 @@ +diff --git a/posix/core_portme.mak b/posix/core_portme.mak +index 2852069..3eaaabe 100755 +--- a/posix/core_portme.mak ++++ b/posix/core_portme.mak +@@ -24,8 +24,12 @@ OUTFLAG= -o + CC?= cc + # Flag: CFLAGS + # Use this flag to define compiler options. Note, you can add compiler options from the command line using XCFLAGS="other flags" +-PORT_CFLAGS = -O2 +-FLAGS_STR = "$(PORT_CFLAGS) $(XCFLAGS) $(XLFLAGS) $(LFLAGS_END)" ++PORT_CFLAGS = ++FLAGS_STR := $(filter-out -I%,$(PORT_CFLAGS) $(XCFLAGS) $(XLFLAGS) $(LFLAGS_END)) ++FLAGS_STR := $(filter-out --sysroot=%,$(FLAGS_STR)) ++FLAGS_STR := $(filter-out -B%,$(FLAGS_STR)) ++FLAGS_STR := $(filter-out -L%,$(FLAGS_STR)) ++FLAGS_STR := "$(filter-out -fmacro-prefix-map=%,$(FLAGS_STR))" + CFLAGS = $(PORT_CFLAGS) -I$(PORT_DIR) -Iposix -I. -DFLAGS_STR=\"$(FLAGS_STR)\" + # Flag: NO_LIBRT + # Define if the platform does not provide a librt +@@ -65,7 +69,7 @@ LOAD = echo Loading done + RUN = + + OEXT = .o +-EXE = .exe ++EXE = + + # Flag: SEPARATE_COMPILE + # Define if you need to separate compilation from link stage. diff --git a/coremark/build.sh b/coremark/build.sh new file mode 100755 index 0000000..bb5d388 --- /dev/null +++ b/coremark/build.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +set -e + +COREMARK_VER="1.0" +COREMARK=coremark-${COREMARK_VER} +COREMARK_COMMIT="d5fad6bd094899101a4e5fd53af7298160ced6ab" +PKG_URL="https://github.com/eembc/coremark/archive/${COREMARK_COMMIT}.tar.gz" +PKG_MIRROR_URL="https://files.phoesys.com/ports/${COREMARK}.tar.gz" + +b_log "Building coremark" +PREFIX_COREMARK="${PREFIX_PROJECT}/phoenix-rtos-ports/coremark" +PREFIX_COREMARK_BUILD="${PREFIX_BUILD}/coremark" +PREFIX_COREMARK_SRC="${PREFIX_COREMARK_BUILD}/${COREMARK}" +PREFIX_COREMARK_MARKERS="${PREFIX_COREMARK_BUILD}/markers" + +# +# Download and unpack +# +mkdir -p "$PREFIX_COREMARK_BUILD" +if ! [ -f "${PREFIX_COREMARK}/${COREMARK}.tar.gz" ]; then + if ! wget "$PKG_URL" -O "${PREFIX_COREMARK}/${COREMARK}.tar.gz" --no-check-certificate; then + wget "$PKG_MIRROR_URL" -P "${PREFIX_COREMARK}" --no-check-certificate + fi +fi + +if ! [ -d "${PREFIX_COREMARK_SRC}" ]; then + tar xzf "${PREFIX_COREMARK}/${COREMARK}.tar.gz" -C "${PREFIX_COREMARK_BUILD}" && mv "${PREFIX_COREMARK_BUILD}"/coremark-"${COREMARK_COMMIT}" "${PREFIX_COREMARK_BUILD}"/${COREMARK} +fi + +# +# Apply patches +# +mkdir -p "$PREFIX_COREMARK_MARKERS" + +for patchfile in "$PREFIX_COREMARK"/*.patch; do + if [ ! -f "$PREFIX_COREMARK_BUILD/markers/$(basename "$patchfile").applied" ]; then + echo "applying patch: $patchfile" + patch -d "$PREFIX_COREMARK_SRC" -p1 < "$patchfile" + touch "$PREFIX_COREMARK_MARKERS/$(basename "$patchfile").applied" + fi +done + +# +# Configure +# +mkdir -p "${PREFIX_COREMARK_BUILD}/${COREMARK}/phoenix" +cp -a "$PREFIX_COREMARK/core-portme.mak" "$PREFIX_COREMARK_BUILD/${COREMARK}/phoenix/core_portme.mak" + +cd "${PREFIX_COREMARK_BUILD}/${COREMARK}" + +if [ -z ${PORTS_COREMARK_THREADS+x} ]; then + PORTS_COREMARK_THREADS="1" +fi + +export XCFLAGS="${CFLAGS} -DUSE_PTHREAD -DMULTITHREAD=${PORTS_COREMARK_THREADS}" +export XLFLAGS="${LDFLAGS}" + +# Build coremark +PORT_DIR=phoenix make compile + +cp -a "$PREFIX_COREMARK_BUILD/${COREMARK}/coremark" "$PREFIX_PROG/coremark" +"${CROSS}strip" -s "${PREFIX_PROG}/coremark" -o "${PREFIX_PROG_STRIPPED}/coremark" +b_install "$PREFIX_PORTS_INSTALL/coremark" /bin diff --git a/coremark/core-portme.mak b/coremark/core-portme.mak new file mode 100644 index 0000000..91a94f9 --- /dev/null +++ b/coremark/core-portme.mak @@ -0,0 +1,3 @@ +NO_LIBRT = 1 + +include posix/core_portme.mak