| list(APPEND CPPFLAGS -DPERL_CORE -DI_TIME) |
| list(APPEND CFLAGS -std=gnu89) |
| # We want reproducible builds |
| list(APPEND CPPFLAGS -D__DATE__="XXX" -D__TIME__="XXX") |
| list(APPEND LDFLAGS -lm) |
| if(TARGET_OS STREQUAL "Darwin") |
| # Necessary for iOS |
| list(APPEND LDFLAGS -Xlinker -stack_size -Xlinker 0x8000000) |
| endif() |
| |
| include_directories(${BENCHMARK_DIR}/src) |
| |
| set(SourceNames |
| av.c |
| deb.c |
| doio.c |
| doop.c |
| dump.c |
| globals.c |
| gv.c |
| hv.c |
| locale.c |
| mg.c |
| numeric.c |
| op.c |
| pad.c |
| perl.c |
| perlapi.c |
| perlio.c |
| perlmain.c |
| perly.c |
| pp.c |
| pp_ctl.c |
| pp_hot.c |
| pp_pack.c |
| pp_sort.c |
| pp_sys.c |
| regcomp.c |
| regexec.c |
| run.c |
| scope.c |
| sv.c |
| taint.c |
| toke.c |
| universal.c |
| utf8.c |
| util.c |
| xsutils.c |
| Base64.c |
| Cwd.c |
| Dumper.c |
| HiRes.c |
| IO.c |
| Peek.c |
| attrs.c |
| poll.c |
| stdio.c |
| DynaLoader.c |
| MD5.c |
| Storable.c |
| Parser.c |
| specrand.c |
| Hostname.c |
| Opcode.c |
| ) |
| set(Source "") |
| foreach(FILENAME ${SourceNames}) |
| list(APPEND Source ${BENCHMARK_DIR}/src/${FILENAME}) |
| endforeach() |
| |
| macro(test_input run_type perlscript output) |
| llvm_test_run(RUN_TYPE ${run_type} |
| -I${CMAKE_CURRENT_BINARY_DIR}/data/all/input/lib ${perlscript} |
| > ${CMAKE_CURRENT_BINARY_DIR}/${output} |
| ${ARGN} |
| ) |
| llvm_test_verify(RUN_TYPE ${run_type} WORKDIR ${CMAKE_CURRENT_BINARY_DIR} |
| ${FPCMP} data/${run_type}/output/${output} ${output} |
| ) |
| endmacro() |
| |
| # (Parameters come from the respective XXX.in files) |
| test_input(train |
| diffmail.pl diffmail.2.550.15.24.23.100.out 2 550 15 24 23 100 |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/all/input |
| ) |
| test_input(train |
| perfect.pl perfect.b.3.out b 3 |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/train/input |
| ) |
| test_input(train |
| splitmail.pl splitmail.535.13.25.24.1091.out 535 13 25 24 1091 |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/all/input |
| ) |
| test_input(train |
| suns.pl suns.out |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/train/input |
| ) |
| llvm_test_verify(RUN_TYPE train WORKDIR ${CMAKE_CURRENT_BINARY_DIR} |
| ${FPCMP} data/train/output/validate data/train/input/validate |
| ) |
| #test_input(train scrabbl.pl scrabbl.in) # spec doesn't come with output files? |
| |
| test_input(ref |
| diffmail.pl diffmail.4.800.10.17.19.300.out 4 800 10 17 19 300 |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/all/input |
| ) |
| test_input(ref |
| splitmail.pl splitmail.1600.12.26.16.4500.out 1600 12 26 16 4500 |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/all/input |
| ) |
| test_input(ref |
| ${CMAKE_CURRENT_BINARY_DIR}/data/ref/input/checkspam.pl |
| checkspam.2500.5.25.11.150.1.1.1.1.out |
| 2500 5 25 11 150 1 1 1 1 |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/all/input |
| ) |
| |
| file(GLOB inputs ${BENCHMARK_DIR}/data/test/input/*.t) |
| foreach(input ${inputs}) |
| get_filename_component(basename ${input} NAME_WE) |
| test_input(test |
| ${basename}.t ${basename}.out |
| WORKDIR ${CMAKE_CURRENT_BINARY_DIR}/data/test/input |
| ) |
| endforeach() |
| |
| llvm_test_executable(400.perlbench ${Source}) |
| llvm_test_data_spec(400.perlbench MUST_COPY data) |