File: CMakeTests.cmake

package info (click to toggle)
libhdf4 4.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 29,892 kB
  • sloc: ansic: 128,688; sh: 14,969; fortran: 12,444; java: 5,864; xml: 1,305; makefile: 900; yacc: 678; pascal: 418; perl: 360; javascript: 203; lex: 163; csh: 41
file content (138 lines) | stat: -rw-r--r-- 5,935 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

##############################################################################
##############################################################################
###           T E S T I N G                                                ###
##############################################################################
##############################################################################

set (FORTRAN_SRC_DIR ${HDF4_HDF_TEST_SOURCE_DIR})

#-----------------------------------------------------------------------------
# Add test fortran stub library
#-----------------------------------------------------------------------------
if (NOT BUILD_SHARED_LIBS)
  add_library (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} STATIC ${HDF4_HDF_TESTSOURCE_DIR}/forsupf.c)
  target_include_directories (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET}
      PRIVATE "${HDF4_HDF_BINARY_DIR};${HDF4_BINARY_DIR}"
  )
  set_target_properties (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C)
  TARGET_C_PROPERTIES (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} STATIC)
  target_link_libraries (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} PUBLIC ${HDF4_SRC_LIB_TARGET})
  H4_SET_LIB_OPTIONS (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} ${HDF4_HDF_TEST_FCSTUB_LIB_NAME} STATIC 0)
else ()
  add_library (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} SHARED ${HDF4_HDF_TESTSOURCE_DIR}/forsupf.c)
  target_include_directories (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET}
      PRIVATE "${HDF4_HDF_BINARY_DIR};${HDF4_BINARY_DIR}"
  )
  set_target_properties (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} PROPERTIES LINKER_LANGUAGE C)
  TARGET_C_PROPERTIES (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} SHARED)
  target_link_libraries (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} PUBLIC ${HDF4_SRC_LIBSH_TARGET})
  H4_SET_LIB_OPTIONS (${HDF4_HDF_TEST_FCSTUB_LIB_TARGET} ${HDF4_HDF_TEST_FCSTUB_LIB_NAME} SHARED "F")
endif ()

#-- Adding test for fortest
add_executable (fortest ${HDF4_HDF_TESTSOURCE_DIR}/fortest.c)
target_include_directories (fortest PRIVATE "${HDF4_HDF_BINARY_DIR};${HDF4_BINARY_DIR}")
if (NOT BUILD_SHARED_LIBS)
  TARGET_C_PROPERTIES (fortest STATIC)
  target_link_libraries (fortest PRIVATE ${HDF4_SRC_LIB_TARGET} ${HDF4_MF_LIB_TARGET})
else ()
  TARGET_C_PROPERTIES (fortest SHARED)
  target_link_libraries (fortest PRIVATE ${HDF4_SRC_LIBSH_TARGET} ${HDF4_MF_LIBSH_TARGET})
endif ()
set_target_properties (fortest PROPERTIES
    LINKER_LANGUAGE C
    COMPILE_DEFINITIONS "CMAKE_INTDIR"
)

#-----------------------------------------------------------------------------
#-- Adding test for fortestF
set (FORTEST_FSRCS
    ${HDF4_HDF_TESTSOURCE_DIR}/fortestF.f
    ${HDF4_HDF_TESTSOURCE_DIR}/forsupff.f
    ${HDF4_HDF_TESTSOURCE_DIR}/manf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/mgrf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/slabwf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/t24f.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tanf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tanfilef.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tpf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tr8f.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tsdmmsf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tsdnmmsf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tsdnntf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tsdntf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tsdstrf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tstubsf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tvattrf.f
    ${HDF4_HDF_TESTSOURCE_DIR}/tvsetf.f
)

add_executable (fortestF ${FORTEST_FSRCS} )
target_include_directories (fortestF
    PRIVATE "${CMAKE_Fortran_MODULE_DIRECTORY};${HDF4_HDF_BINARY_DIR};${HDF4_HDFSOURCE_DIR};${HDF4_BINARY_DIR}"
)
target_compile_options(fortestF
    PRIVATE $<$<STREQUAL:"x${CMAKE_Fortran_SIMULATE_ID}","xMSVC">:${WIN_COMPILE_FLAGS}>
)
if(MSVC)
  set_property(TARGET fortestF PROPERTY LINK_FLAGS "/SUBSYSTEM:CONSOLE ${WIN_LINK_FLAGS}")
endif()
set_target_properties (fortestF PROPERTIES
    LINKER_LANGUAGE Fortran
    Fortran_MODULE_DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}
)
if (NOT BUILD_SHARED_LIBS)
  target_link_libraries (fortestF PRIVATE ${HDF4_SRC_FORTRAN_LIB_TARGET} ${HDF4_SRC_FCSTUB_LIB_TARGET} ${HDF4_HDF_TEST_FCSTUB_LIB_TARGET})
else ()
  target_link_libraries (fortestF PRIVATE ${HDF4_SRC_FORTRAN_LIBSH_TARGET} ${HDF4_SRC_FCSTUB_LIBSH_TARGET} ${HDF4_HDF_TEST_FCSTUB_LIB_TARGET})
endif ()

#-- Copy all the dat files from the test directory into the source directory
set (HDF4_REFERENCE_TEST_FILES
    8bit.dat
    bitio.dat
    gr_r24.dat
    greyjpeg.dat
    jpeg.dat
    litend.dat
    nbit.dat
    tmgr.dat
    tvattr.dat
)
foreach (h4_file ${HDF4_REFERENCE_TEST_FILES})
  HDFTEST_COPY_FILE("${HDF4_HDF_TESTSOURCE_DIR}/test_files/${h4_file}" "${PROJECT_BINARY_DIR}/test_files/${h4_file}" "hdf_fortran_files")
endforeach ()
add_custom_target(hdf_fortran_files ALL COMMENT "Copying files needed by hdf fortran tests" DEPENDS ${hdf_fortran_files_list})

##############################################################################
##############################################################################
###           T H E   T E S T S                                            ###
##############################################################################
##############################################################################

# Remove any output file left over from previous test run
add_test (
    NAME HDF_FORTRAN-clearall-objects
    COMMAND ${CMAKE_COMMAND} -E remove
        fortest.arg
        Fortran_err.dat
        GRcompressed.hdf
        GRchunked1.hdf
        GRchunked2.hdf
        manf.hdf
        slab1wf.hdf
        slab4wf.hdf
        slabwf.hdf
        tdf24f.hdf
        tdfanF.hdf
        tdfanflF.hdf
        tmgrf.hdf
)

add_test (NAME fortest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:fortest>)
set_tests_properties (fortest PROPERTIES DEPENDS HDF_FORTRAN-clearall-objects)

add_test (NAME fortestF COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:fortestF>)
set (passRegex "All Fortran Interface Tests Passed")
set_tests_properties (fortestF PROPERTIES DEPENDS fortest PASS_REGULAR_EXPRESSION "${passRegex}")