File: CMakeLists.txt

package info (click to toggle)
netcdf 1%3A4.4.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 96,828 kB
  • ctags: 15,369
  • sloc: ansic: 163,650; sh: 9,294; yacc: 2,457; makefile: 1,208; lex: 1,161; xml: 173; f90: 7; fortran: 6; awk: 2
file content (245 lines) | stat: -rw-r--r-- 7,899 bytes parent folder | download
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
IF(BUILD_SHARED_LIBS AND WIN32)
  remove_definitions(-DDLL_EXPORT)
  remove_definitions(-DDLL_NETCDF)
ENDIF()

ADD_CUSTOM_COMMAND(
  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ctest.c
  COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/ref_ctest.c"
  "${CMAKE_CURRENT_BINARY_DIR}/ctest.c"
  )
ADD_CUSTOM_COMMAND(
  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ctest64.c
  COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/ref_ctest64.c"
  "${CMAKE_CURRENT_BINARY_DIR}/ctest64.c"
  )

SET(ncdump_FILES ncdump.c vardata.c dumplib.c indent.c nctime0.c utils.c nciter.c)
SET(nccopy_FILES nccopy.c nciter.c chunkspec.c utils.c dimmap.c)

IF(USE_X_GETOPT)
  SET(ncdump_FILES ${ncdump_FILES} XGetopt.c)
  SET(nccopy_FILES ${nccopy_FILES} XGetopt.c)
ENDIF()

ADD_EXECUTABLE(ncdump ${ncdump_FILES})
ADD_EXECUTABLE(nccopy ${nccopy_FILES})

TARGET_LINK_LIBRARIES(ncdump netcdf ${ALL_TLL_LIBS})
TARGET_LINK_LIBRARIES(nccopy netcdf ${ALL_TLL_LIBS})

####
# We have to do a little tweaking
# to remove the Release/ and Debug/ directories
# in MSVC builds.  This is required to get
# test scripts to work.
####
IF(MSVC)
  SET_TARGET_PROPERTIES(ncdump PROPERTIES RUNTIME_OUTPUT_DIRECTORY
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(ncdump PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(ncdump PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
    ${CMAKE_CURRENT_BINARY_DIR})

  SET_TARGET_PROPERTIES(nccopy PROPERTIES RUNTIME_OUTPUT_DIRECTORY
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(nccopy PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(nccopy PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
    ${CMAKE_CURRENT_BINARY_DIR})
ENDIF()


IF(ENABLE_TESTS)
  ADD_EXECUTABLE(rewrite-scalar rewrite-scalar.c)
  ADD_EXECUTABLE(bom bom.c)
  ADD_EXECUTABLE(tst_dimsizes tst_dimsizes.c)
  TARGET_LINK_LIBRARIES(rewrite-scalar netcdf)
  TARGET_LINK_LIBRARIES(bom netcdf)
  TARGET_LINK_LIBRARIES(tst_dimsizes netcdf)

IF(USE_NETCDF4)
  ADD_EXECUTABLE(tst_fileinfo tst_fileinfo.c)
  TARGET_LINK_LIBRARIES(tst_fileinfo netcdf)
  IF(USE_HDF5 OR USE_NETCDF4)
    # Some version of cmake define HDF5_hdf5_LIBRARY instead of
    # HDF5_LIBRARY. Same with HDF5_HL_LIBRARIES
    IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARIES)
      SET(HDF5_C_LIBRARIES ${HDF5_hdf5_LIBRARY})
    ENDIF()
    IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARIES)
      SET(HDF5_HL_LIBRARIES ${HDF5_hdf5_hl_LIBRARY})
    ENDIF()
    # The order of the libraries is important here for static
    # builds:
    # Make sure that HDF5_C_LIBRARY appears *after*
    # HDF5_HL_LIBRARY.
    TARGET_LINK_LIBRARIES(tst_fileinfo ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES})
  ENDIF()
  add_sh_test(ncdump tst_fileinfo)
ENDIF()

IF(MSVC)
  SET_TARGET_PROPERTIES(rewrite-scalar PROPERTIES RUNTIME_OUTPUT_DIRECTORY
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(rewrite-scalar PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(rewrite-scalar PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
    ${CMAKE_CURRENT_BINARY_DIR})

  SET_TARGET_PROPERTIES(bom PROPERTIES RUNTIME_OUTPUT_DIRECTORY
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(bom PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(bom PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
    ${CMAKE_CURRENT_BINARY_DIR})

  SET_TARGET_PROPERTIES(tst_dimsizes PROPERTIES RUNTIME_OUTPUT_DIRECTORY
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(tst_dimsizes PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(tst_dimsizes PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
    ${CMAKE_CURRENT_BINARY_DIR})
  SET_TARGET_PROPERTIES(tst_fileinfo PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE
    ${CMAKE_CURRENT_BINARY_DIR})
ENDIF()

  # Base tests
  # The tests are set up as a combination of shell scripts and executables that
  # must be run in a particular order. It is painful but will use macros to help
  # keep it from being too bad.

  ## Start adding tests in the appropriate order
  add_sh_test(ncdump run_tests)
  add_sh_test(ncdump tst_64bit)
  add_bin_test(ncdump ctest)
  add_bin_test(ncdump ctest64)
  add_sh_test(ncdump tst_output)
  add_sh_test(ncdump tst_lengths)
  add_sh_test(ncdump tst_calendars)
  add_bin_test(ncdump tst_utf8)
  add_sh_test(ncdump run_utf8_tests)
  IF(USE_NETCDF4)
    add_sh_test(ncdump run_utf8_nc4_tests)
  ENDIF(USE_NETCDF4)

  add_sh_test(ncdump tst_nccopy3)
  add_sh_test(ncdump tst_charfill)

  add_sh_test(ncdump tst_formatx3)
  add_sh_test(ncdump tst_bom)
  add_sh_test(ncdump tst_dimsizes)

  # The following test script invokes
  # gcc directly.
  IF(CMAKE_COMPILER_IS_GNUCC OR APPLE)
    IF(ENABLE_LARGE_FILE_TESTS)
      add_sh_test(ncdump tst_iter)
    ENDIF(ENABLE_LARGE_FILE_TESTS)
  ENDIF(CMAKE_COMPILER_IS_GNUCC OR APPLE)

  IF(BUILD_DISKLESS)
    add_sh_test(ncdump tst_inmemory_nc3)
    IF(USE_NETCDF4)
      add_sh_test(ncdump tst_inmemory_nc4)
    ENDIF(USE_NETCDF4)
  ENDIF(BUILD_DISKLESS)

  IF(USE_NETCDF4)
    add_bin_test(ncdump tst_create_files)
    add_bin_test(ncdump tst_group_data)
    add_bin_test(ncdump tst_enum_data)
    add_bin_test(ncdump tst_opaque_data)
    add_bin_test(ncdump tst_string_data)
    add_bin_test(ncdump tst_vlen_data)
    add_bin_test(ncdump tst_comp)
    add_bin_test(ncdump tst_comp2)
    add_bin_test(ncdump tst_nans)
    add_bin_test(ncdump tst_h_scalar)
    add_bin_test(ncdump tst_bug324)
    add_sh_test(ncdump tst_formatx4)
    # Add this test by hand, as it is also called from a script.
    # Editing the script would break autotools compatibility.
    add_bin_test_no_prefix(tst_special_atts)
    add_bin_test_no_prefix(tst_compress)
    add_bin_test_no_prefix(tst_chunking)


    ###
    # This test fails on Visual Studio builds with bash.
    # It passes, but technically fails because the scientific
    # formatting omits a 0.
    ###
    IF(EXTRA_TESTS AND NOT MSVC)
      add_sh_test(ncdump run_back_comp_tests)
    ENDIF()

    # Known failure on MSVC; the number of 0's padding
    # is different, but the result is actually correct.
    #IF(NOT MSVC)
    add_sh_test(ncdump tst_netcdf4)
    add_bin_test(ncdump tst_h_rdc0)
    #ENDIF()

    add_bin_test(ncdump tst_unicode)

    add_bin_test(ncdump tst_fillbug)
    add_sh_test(ncdump_sh tst_fillbug)

    IF(NOT MSVC)
      add_sh_test(ncdump tst_netcdf4_4)
    ENDIF()



    IF(NOT MSVC)
      add_sh_test(ncdump tst_nccopy4)
    ENDIF()

    add_sh_test(ncdump tst_grp_spec)
    add_sh_test(ncdump tst_mud)
    add_sh_test(ncdump_shell tst_h_scalar)

  ENDIF()

  add_sh_test(ncdump tst_ncgen4_classic)
  IF(USE_NETCDF4)
    add_sh_test(ncdump tst_ncgen4)
  ENDIF()

  add_sh_test(ncdump tst_inttags)
  IF(USE_NETCDF4)
    add_sh_test(ncdump tst_inttags4)
  ENDIF()


ENDIF()

IF(MSVC)
  SET_TARGET_PROPERTIES(ncdump
    PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
    )
  SET_TARGET_PROPERTIES(nccopy
    PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT"
    )

ENDIF()


INSTALL(TARGETS ncdump RUNTIME DESTINATION bin COMPONENT utilities)
INSTALL(TARGETS nccopy RUNTIME DESTINATION bin COMPONENT utilities)
SET(MAN_FILES nccopy.1 ncdump.1)


FILE(GLOB COPY_FILES ${CMAKE_BINARY_DIR}/ncgen/*.nc ${CMAKE_BINARY_DIR}/nc_test4/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.ncml ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.1)
FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE)

ADD_SUBDIRECTORY(cdl)
ADD_SUBDIRECTORY(expected)

SET_DIRECTORY_PROPERTIES(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CLEANFILES}")

IF(NOT MSVC)
  INSTALL(FILES ${MAN_FILES} DESTINATION "share/man/man1" COMPONENT documentation)
ENDIF()