Turn modified fdlibm into Jerry's own libm

* Rename modified fdlibm to jerry-libm
  * Move third-party/fdlibm to jerry-libm
  * Rename original fdlibm.h to jerry-libm-internal.h
    * And remove it from the public headers.
  * Rename jerry-libm's public header to math.h
    * This also makes jerry-core sources include `<math.h>`. Therefore,
      should anyone want to use a different libm implementation with
      jerry, it becomes possible. (The same way as we provide a minimal
      libc with standard headers, but should it be insufficient or
      conflicting for someone, it can be replaced.)
  * Drop `s_` prefix from jerry-libm sources
    * The original fdlibm implementation had various prefixes (e.g., `k_`
      for sources of kernel routines, and `w_` for wrapper routines), but
      after the specialization of fdlibm to jerry, only `s_` remained.
      Since it does not encode anything anymore, it can be dropped.
  * Stylistic edits to jerry-libm's CMakeLists
    * Align project name with other CMakeLists in the code base
  * Move Jerry-LibM under Apache License
    * Using the same approach as was used by linux-wireless when ath5k
      driver license needed clarification. Solution was proposed by SFLC.
      External mail for future reference: http://lwn.net/Articles/247806/

* Tests & checks
  * Remove FD from the name of libm unit test-related files
  * Make vera++ and cppcheck check jerry-libm

* Targets
  * Speculative update of targets to use jerry-libm

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
This commit is contained in:
Akos Kiss
2016-04-06 18:02:44 +02:00
parent 45c89fef28
commit 3ba286f3e1
48 changed files with 686 additions and 426 deletions
+3 -2
View File
@@ -25,9 +25,10 @@ fi
JERRY_CORE_DIRS=`find jerry-core -type d`
JERRY_LIBC_DIRS=`find jerry-libc -type d`
JERRY_LIBM_DIRS=`find jerry-libm -type d`
INCLUDE_DIRS=()
for DIR in $JERRY_CORE_DIRS $JERRY_LIBC_DIRS
for DIR in $JERRY_CORE_DIRS $JERRY_LIBC_DIRS $JERRY_LIBM_DIRS
do
INCLUDE_DIRS=("${INCLUDE_DIRS[@]}" "-I$DIR")
done
@@ -38,4 +39,4 @@ cppcheck -j$CPPCHECK_JOBS --force \
--error-exitcode=1 \
--exitcode-suppressions=tools/cppcheck/suppressions-list \
"${INCLUDE_DIRS[@]}" \
jerry-core jerry-libc *.c *h tests/unit
jerry-core jerry-libc jerry-libm *.c *h tests/unit
+2 -1
View File
@@ -17,9 +17,10 @@
JERRY_CORE_FILES=`find ./jerry-core -name "*.c" -or -name "*.h"`
JERRY_LIBC_FILES=`find ./jerry-libc -name "*.c" -or -name "*.h"`
JERRY_LIBM_FILES=`find ./jerry-libm -name "*.c" -or -name "*.h"`
JERRY_MAIN_FILES=`find . -maxdepth 1 -name "*.c" -or -name "*.h"`
UNIT_TEST_FILES=`find ./tests/unit -name "*.c" -or -name "*.h"`
vera++ -r tools/vera++ -p jerry \
-e --no-duplicate \
$JERRY_CORE_FILES $JERRY_LIBC_FILES $JERRY_MAIN_FILES $UNIT_TEST_FILES
$JERRY_CORE_FILES $JERRY_LIBC_FILES $JERRY_LIBM_FILES $JERRY_MAIN_FILES $UNIT_TEST_FILES
+4 -1
View File
@@ -1,7 +1,10 @@
operatorEqVarError
noConstructor
duplicateExpression
wrongmathcall:tests/unit/test-fdlibm.inc.h
wrongmathcall:tests/unit/test-libm.inc.h
variableScope:jerry-libm/*.c
invalidPointerCast:jerry-libm/*.c
unreadVariable:jerry-libm/*.c
// FIXME: false positive in cppcheck 1.61 (will disappear once distro ships with 1.69)
variableScope:jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c
@@ -16,5 +16,5 @@
# limitations under the License.
make -C tools/unit-tests build
tools/unit-tests/gen-test-fdlibm >tests/unit/test-fdlibm.inc.h
tools/unit-tests/gen-test-libm >tests/unit/test-libm.inc.h
make -C tools/unit-tests clean
+2 -2
View File
@@ -16,7 +16,7 @@
CC=gcc
LDFLAGS=-lm
GENS=gen-test-fdlibm
GENS=gen-test-libm
.PHONY: build
build: $(GENS)
@@ -25,5 +25,5 @@ build: $(GENS)
clean:
rm -f $(GENS)
gen-test-fdlibm: gen-test-fdlibm.c
gen-test-libm: gen-test-libm.c
$(CC) $< -o $@ $(LDFLAGS)
@@ -15,13 +15,13 @@
*/
/*
* Unit test generator for fdlibm.
* Unit test generator for jerry-libm.
* To be compiled separately from the rest of jerry and to be linked to a trusted libm.
* Its output should be redirected to test-fdlibm.inc.h.
* Its output should be redirected to test-libm.inc.h.
*
* Example:
* gcc gen-test-fdlibm.c -o gen-test-fdlibm -lm
* ./gen-test-fdlibm >test-fdlibm.inc.h
* gcc gen-test-libm.c -o gen-test-libm -lm
* ./gen-test-libm >test-libm.inc.h
*/
#include <math.h>
@@ -34,7 +34,7 @@ int
main (int argc, char **args)
{
printf ("/*\n"
" * Generated by tools/gen-test-fdlibm.sh\n"
" * Generated by tools/gen-test-libm.sh\n"
" * DO NOT EDIT!!!\n"
" */\n");
@@ -211,7 +211,7 @@ main (int argc, char **args)
GEN_DBL_TEST (ceil (-7.37e+19));
/* copysign tests */
/* SKIPPED: not declared in fdlibm-math.h
/* SKIPPED: not publicly declared in jerry-libm
GEN_DBL_TEST (copysign (0.0, 0.0));
GEN_DBL_TEST (copysign (0.0, -0.0));
GEN_DBL_TEST (copysign (-0.0, 0.0));
@@ -314,7 +314,7 @@ main (int argc, char **args)
GEN_DBL_TEST (fabs (-7.37e+19));
/* finite tests */
/* SKIPPED: not declared in fdlibm-math.h
/* SKIPPED: not publicly declared in jerry-libm
GEN_INT_TEST (finite (0.0));
GEN_INT_TEST (finite (-0.0));
GEN_INT_TEST (finite (1.0));
@@ -553,7 +553,7 @@ main (int argc, char **args)
GEN_DBL_TEST (pow (0.7, 1.2));
/* scalbn tests */
/* SKIPPED: not declared in fdlibm-math.h
/* SKIPPED: not publicly declared in jerry-libm
GEN_DBL_TEST (scalbn (0.0, 0));
GEN_DBL_TEST (scalbn (-0.0, 0));
GEN_DBL_TEST (scalbn (0.0, 1));