mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-27 08:49:16 +08:00
c68c4c804d
Fix Issue https://github.com/Unidata/netcdf-c/issues/1725. Replace PR https://github.com/Unidata/netcdf-c/pull/1726 Also replace PR https://github.com/Unidata/netcdf-c/pull/1694 The general problem is that under Visual Studio, we are seeing a number of undefined reference and other scoping errors. The reason is that the code is not properly using Visual Studio _declspec() declarations. The basic solution is to ensure that when compiling the code itself one needs to ensure that _declspec(dllexport) is used. There are several sets of macros to handle this, but they all rely on the flag DLL_EXPORT being define when the code is compiled, but not being defined when the code is used via a .h file. As a test, I modified XGetOpt.c to build properly. I also fixed the oc2 library to properly _declspec things like ocdebug. I also made some misc. changes to get all the tests to run if cygwin is installed (to get bash, sed, etc). Misc. Changes: * Put XGetOpt.c into libsrc and copy at build time to the other directories where it is needed.
81 lines
3.6 KiB
Bash
Executable File
81 lines
3.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
|
|
. ../test_common.sh
|
|
|
|
# This shell script tests the output from several previous tests.
|
|
set -e
|
|
|
|
echo ""
|
|
echo "*** Testing ncgen and ncdump test output for classic format."
|
|
|
|
echo "*** Testing that ncgen produces correct C code from c0.cdl."
|
|
${execdir}/ref_ctest
|
|
${NCGEN} -lc -o ctest0.nc $srcdir/../ncgen/c0.cdl > tst_output_ctest.c
|
|
diff -b tst_output_ctest.c $srcdir/ref_ctest.c
|
|
|
|
echo "*** creating ctest1.cdl from tst_output_ctest0.nc..."
|
|
${NCDUMP} -n c1 ${builddir}/ctest0.nc | sed 's/e+0/e+/g' > tst_output_ctest1.cdl
|
|
echo "*** creating tst_output_c0.nc from c0.cdl..."
|
|
${NCGEN} -b -o tst_output_c0.nc ${ncgenc0}
|
|
echo "*** creating tst_output_c1.cdl from tst_output_c0.nc..."
|
|
${NCDUMP} -n c1 ${builddir}/tst_output_c0.nc | sed 's/e+0/e+/g' > tst_output_c1.cdl
|
|
echo "*** comparing tst_output_c1.cdl with ref_ctest1_nc4c.cdl..."
|
|
diff -b tst_output_c1.cdl $srcdir/ref_ctest1_nc4c.cdl
|
|
echo "*** comparing ncdump of C program output (ctest1.cdl) with c1.cdl..."
|
|
diff -b tst_output_c1.cdl tst_output_ctest1.cdl
|
|
echo "*** test output for ncdump -k"
|
|
KIND=`${NCDUMP} -k tst_output_c0.nc |tr -d '\r'`
|
|
test "$KIND" = "classic";
|
|
${NCGEN} -k $KIND -b -o tst_output_c0tmp.nc ${ncgenc0}
|
|
cmp tst_output_c0tmp.nc tst_output_c0.nc
|
|
|
|
echo "*** test output for ncdump -x"
|
|
echo "*** creating tst_ncml.nc from tst_ncml.cdl"
|
|
${NCGEN} -b -o tst_ncml.nc $srcdir/tst_ncml.cdl
|
|
echo "*** creating c1.ncml from tst_ncml.nc"
|
|
${NCDUMP} -x tst_ncml.nc | sed 's/e-00/e-0/g' |tr -d '\000' > c1.ncml
|
|
echo "*** comparing ncdump -x of generated file with ref1.ncml ..."
|
|
diff -b c1.ncml $srcdir/ref1.ncml
|
|
|
|
echo "*** test output for ncdump -s"
|
|
echo "*** creating tst_mslp.nc from tst_mslp.cdl"
|
|
${NCGEN} -b -o tst_mslp.nc $srcdir/tst_mslp.cdl
|
|
echo "*** creating tst_format_att.cdl from tst_mslp.nc"
|
|
${NCDUMP} -s tst_mslp.nc > tst_format_att.cdl
|
|
echo "*** comparing ncdump -s of generated file with ref_tst_format_att.cdl ..."
|
|
diff -b tst_format_att.cdl $srcdir/ref_tst_format_att.cdl
|
|
|
|
echo "*** All ncgen and ncdump test output for classic format passed!"
|
|
|
|
echo "*** Testing that ncgen with c0.cdl for 64-bit offset format."
|
|
${execdir}/ref_ctest64
|
|
${NCGEN} -k2 -lc -o ctest0_64.nc $srcdir/../ncgen/c0.cdl > tst_output_ctest64.c
|
|
diff -b tst_output_ctest64.c $srcdir/ref_ctest64.c
|
|
|
|
echo "*** Testing ncgen and ncdump test output for 64-bit offset format."
|
|
echo "*** creating ctest1_64.cdl from test0_64.nc..."
|
|
${NCDUMP} -n c1 ctest0_64.nc | sed 's/e+0/e+/g' > tst_output_ctest1_64.cdl
|
|
echo "*** creating tst_output_c0_64.nc from c0.cdl..."
|
|
${NCGEN} -k nc6 -b -o tst_output_c0_64.nc ${ncgenc0}
|
|
echo "*** creating tst_output_c1_64.cdl from tst_output_c0_64.nc..."
|
|
${NCDUMP} -n c1 tst_output_c0_64.nc | sed 's/e+0/e+/g' > tst_output_c1_64.cdl
|
|
echo "*** comparing ncdump of C program output (ctest1_64.cdl) with tst_output_c1_64.cdl..."
|
|
diff -b tst_output_c1_64.cdl tst_output_ctest1_64.cdl
|
|
echo "*** test output for ncdump -k"
|
|
KIND=`${NCDUMP} -k tst_output_c0_64.nc | tr -d '\r'`
|
|
test "$KIND" = "64-bit offset";
|
|
${NCGEN} -k nc6 -b -o tst_output_c0_64_tmp.nc ${ncgenc0}
|
|
cmp tst_output_c0_64_tmp.nc tst_output_c0_64.nc
|
|
|
|
echo "*** test output for ncdump -s"
|
|
echo "*** creating tst_mslp_64.nc from tst_mslp.cdl"
|
|
${NCGEN} -k nc6 -b -o tst_mslp_64.nc ${srcdir}/tst_mslp.cdl
|
|
echo "*** creating tst_format_att_64.cdl from tst_mslp_64.nc"
|
|
${NCDUMP} -s tst_mslp_64.nc | sed 's/e+0/e+/g' > tst_format_att_64.cdl
|
|
echo "*** comparing ncdump -s of generated file with ref_tst_format_att_64.cdl ..."
|
|
diff -b tst_format_att_64.cdl $srcdir/ref_tst_format_att_64.cdl
|
|
|
|
echo "*** All ncgen and ncdump test output for 64-bit offset format passed!"
|
|
exit 0
|