diff --git a/CMakeLists.txt b/CMakeLists.txt index 31eaf99bb7..d2f8ac04f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1249,18 +1249,6 @@ IF(MSVC) OPTION(ENABLE_XGETOPT "Enable bundled XGetOpt instead of external getopt()." ON) IF(ENABLE_XGETOPT) SET(USE_X_GETOPT ON CACHE BOOL "") - # Copy XGetopt.c to everywhere it is needed. Avoids - # inconsistent code - FILE(COPY ${netCDF_SOURCE_DIR}/libsrc/XGetopt.c - DESTINATION ${netCDF_BINARY_DIR}/ncgen3/) - FILE(COPY ${netCDF_SOURCE_DIR}/libsrc/XGetopt.c - DESTINATION ${netCDF_BINARY_DIR}/ncgen/) - FILE(COPY ${netCDF_SOURCE_DIR}/libsrc/XGetopt.c - DESTINATION ${netCDF_BINARY_DIR}/ncdump/) - FILE(COPY ${netCDF_SOURCE_DIR}/libsrc/XGetopt.c - DESTINATION ${netCDF_BINARY_DIR}/nczarr_test/) - FILE(COPY ${netCDF_SOURCE_DIR}/libsrc/XGetopt.c - DESTINATION ${netCDF_BINARY_DIR}/ncdap_test/) ENDIF() ENDIF() diff --git a/libdispatch/Makefile.am b/libdispatch/Makefile.am index 00e00f364d..2db1916c15 100644 --- a/libdispatch/Makefile.am +++ b/libdispatch/Makefile.am @@ -56,7 +56,7 @@ if REGEDIT libdispatch_la_SOURCES += dreg.c endif -EXTRA_DIST=CMakeLists.txt ncsettings.hdr utf8proc_data.c +EXTRA_DIST = CMakeLists.txt ncsettings.hdr utf8proc_data.c XGetopt.c # Build ncsettings.c as follows: # 1. copy ncsettings.hdr to ncsettings.c diff --git a/libsrc/XGetopt.c b/libdispatch/XGetopt.c similarity index 100% rename from libsrc/XGetopt.c rename to libdispatch/XGetopt.c diff --git a/libsrc/Makefile.am b/libsrc/Makefile.am index e660fe9e25..08f074131d 100644 --- a/libsrc/Makefile.am +++ b/libsrc/Makefile.am @@ -45,7 +45,7 @@ noinst_LTLIBRARIES = libnetcdf3.la # with m4), but they are included in the distribution so that the user # does not have to have m4. MAINTAINERCLEANFILES = $(man_MANS) attr.c ncx.c putget.c -EXTRA_DIST = attr.m4 ncx.m4 putget.m4 $(man_MANS) CMakeLists.txt XGetopt.c +EXTRA_DIST = attr.m4 ncx.m4 putget.m4 $(man_MANS) CMakeLists.txt # This tells make how to turn .m4 files into .c files. .m4.c: diff --git a/ncdump/CMakeLists.txt b/ncdump/CMakeLists.txt index 00447e9bf6..c0869b0362 100644 --- a/ncdump/CMakeLists.txt +++ b/ncdump/CMakeLists.txt @@ -11,25 +11,19 @@ SET(RCMERGE OFF) -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 list.c) -SET(ocprint_FILES ocprint.c) -SET(ncvalidator_FILES ncvalidator.c) -SET(printfqn_FILES printfqn.c) -SET(ncpathcvt_FILES ncpathcvt.c) -SET(ncfilteravail_FILES ncfilteravail.c) -SET(nchdf5version_FILES nchdf5version.c) - IF(USE_X_GETOPT) - SET(ncdump_FILES ${ncdump_FILES} XGetopt.c) - SET(nccopy_FILES ${nccopy_FILES} XGetopt.c) - SET(ocprint_FILES ${ocprint_FILES} XGetopt.c) - SET(ncvalidator_FILES ${ncvalidator_FILES} XGetopt.c) - SET(printfqn_FILES ${printfqn_FILES} XGetopt.c) - SET(ncpathcvt_FILES ${ncpathcvt_FILES} XGetopt.c) - SET(ncfilteravail_FILES ${ncfilteravail_FILES} XGetopt.c) -ENDIF(USE_X_GETOPT) +SET(XGETOPTSRC "${CMAKE_CURRENT_SOURCE_DIR}/../libdispatch/XGetopt.c") +ENDIF() +SET(ncdump_FILES ncdump.c vardata.c dumplib.c indent.c nctime0.c utils.c nciter.c ${XGETOPTSRC}) +SET(nccopy_FILES nccopy.c nciter.c chunkspec.c utils.c dimmap.c list.c ${XGETOPTSRC}) +SET(ocprint_FILES ocprint.c ${XGETOPTSRC}) +SET(ncvalidator_FILES ncvalidator.c ${XGETOPTSRC}) +SET(printfqn_FILES printfqn.c ${XGETOPTSRC}) +SET(ncpathcvt_FILES ncpathcvt.c ${XGETOPTSRC}) +SET(ncfilteravail_FILES ncfilteravail.c ${XGETOPTSRC}) +SET(nchdf5version_FILES nchdf5version.c) + ADD_EXECUTABLE(ncdump ${ncdump_FILES}) ADD_EXECUTABLE(nccopy ${nccopy_FILES}) ADD_EXECUTABLE(ncvalidator ${ncvalidator_FILES}) @@ -181,21 +175,21 @@ endif() build_bin_test_no_prefix(tst_h_rdc0) build_bin_test_no_prefix(tst_unicode) build_bin_test_no_prefix(tst_vlen_data) - add_bin_test_no_prefix(tst_create_files) - add_bin_test_no_prefix(tst_opaque_data) - add_bin_test_no_prefix(tst_string_data) - add_bin_test_no_prefix(tst_comp2) - add_bin_test_no_prefix(tst_nans) - add_bin_test_no_prefix(tst_h_scalar) - add_bin_test_no_prefix(tst_compress) - add_bin_test_no_prefix(tst_chunking) - add_bin_test_no_prefix(tst_group_data) - add_bin_test_no_prefix(tst_enum_data) - add_bin_test_no_prefix(tst_enum_undef) - add_bin_test_no_prefix(tst_comp) + build_bin_test_no_prefix(tst_create_files) + build_bin_test_no_prefix(tst_opaque_data) + build_bin_test_no_prefix(tst_string_data) + build_bin_test_no_prefix(tst_comp2) + build_bin_test_no_prefix(tst_nans) + build_bin_test_no_prefix(tst_h_scalar) + build_bin_test_no_prefix(tst_compress) + build_bin_test_no_prefix(tst_chunking) + build_bin_test_no_prefix(tst_group_data) + build_bin_test_no_prefix(tst_enum_data) + build_bin_test_no_prefix(tst_enum_undef) + build_bin_test_no_prefix(tst_comp) # 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) + build_bin_test_no_prefix(tst_special_atts) ENDIF(USE_HDF5) # Base tests diff --git a/ncgen/CMakeLists.txt b/ncgen/CMakeLists.txt index 4155405132..4edc88b145 100644 --- a/ncgen/CMakeLists.txt +++ b/ncgen/CMakeLists.txt @@ -9,6 +9,10 @@ IF(BUILD_SHARED_LIBS AND WIN32) remove_definitions(-DDLL_NETCDF) ENDIF() +IF(USE_X_GETOPT) + SET(XGETOPTSRC "${CMAKE_CURRENT_SOURCE_DIR}/../libdispatch/XGetopt.c") +ENDIF() + SET(ncgen_FILES bindata.c bytebuffer.c cdata.c cvt.c data.c debug.c dump.c escapes.c f77data.c genbin.c genc.c genchar.c generate.c generr.c genf77.c @@ -16,15 +20,11 @@ genj.c genlib.c getfill.c jdata.c list.c main.c ncgeny.c semantics.c util.c bytebuffer.h data.h debug.h dump.h generate.h generr.h genlib.h includes.h list.h -ncgen.h ncgeny.h util.h) +ncgen.h ncgeny.h util.h ${XGETOPTSRC}) # Obsolete SET(OBSOLETE odom.c odom.h jdatastd.c jdatajni.c genjni.c cdfdata.c cmldata.c) -IF(USE_X_GETOPT) - SET(ncgen_FILES ${ncgen_FILES} XGetopt.c) -ENDIF() - # don't add the automatically determined parts of the RPATH # which point to directories outside the build tree to the install RPATH SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) diff --git a/ncgen3/CMakeLists.txt b/ncgen3/CMakeLists.txt index 355d289bb9..5f26419f07 100644 --- a/ncgen3/CMakeLists.txt +++ b/ncgen3/CMakeLists.txt @@ -3,13 +3,14 @@ # 2015, 2016, 2017, 2018 # University Corporation for Atmospheric Research/Unidata. -# See netcdf-c/COPYRIGHT file for more info. -SET(ncgen3_FILES main.c load.c escapes.c getfill.c init.c genlib.c ncgeny.c) IF(USE_X_GETOPT) - SET(ncgen3_FILES ${ncgen3_FILES} XGetopt.c) + SET(XGETOPTSRC "${CMAKE_CURRENT_SOURCE_DIR}/../libdispatch/XGetopt.c") ENDIF() +# See netcdf-c/COPYRIGHT file for more info. +SET(ncgen3_FILES main.c load.c escapes.c getfill.c init.c genlib.c ncgeny.c ${XGETOPTSRC}) + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nc ${CMAKE_CURRENT_SOURCE_DIR}/*.sh ${CMAKE_CURRENT_SOURCE_DIR}/*.cdl) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) diff --git a/nczarr_test/CMakeLists.txt b/nczarr_test/CMakeLists.txt index afa27ac3e5..d639a1dd12 100644 --- a/nczarr_test/CMakeLists.txt +++ b/nczarr_test/CMakeLists.txt @@ -40,17 +40,15 @@ ${CMAKE_CURRENT_SOURCE_DIR}/ref*.zmap) FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/ FILE_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE) +IF(USE_X_GETOPT) +SET(XGETOPTSRC "${CMAKE_CURRENT_SOURCE_DIR}/../libdispatch/XGetopt.c") +ENDIF() + IF(ENABLE_TESTS) - SET(COMMONSRC ut_util.c ut_test.c) - IF(USE_X_GETOPT) - SET(COMMONSRC ${COMMONSRC} XGetopt.c) - ENDIF() + SET(COMMONSRC ut_util.c ut_test.c ${XGETOPTSRC}) - SET(TSTCOMMONSRC tst_utils.c) - IF(USE_X_GETOPT) - SET(TSTCOMMONSRC ${TSTCOMMONSRC} XGetopt.c) - ENDIF() + SET(TSTCOMMONSRC tst_utils.c ${XGETOPTSRC}) # Base tests # The tests are set up as a combination of shell scripts and executables that @@ -91,9 +89,7 @@ IF(ENABLE_TESTS) endif() SET(ncdumpchunks_SOURCE ncdumpchunks.c) - IF(USE_X_GETOPT) - SET(ncdumpchunks_SOURCE ${ncdumpchunks_SOURCE} XGetopt.c) - ENDIF() + SET(ncdumpchunks_SOURCE ${ncdumpchunks_SOURCE} ${XGETOPTSRC}) BUILD_BIN_TEST(ncdumpchunks ${ncdumpchunks_SOURCE}) TARGET_INCLUDE_DIRECTORIES(ncdumpchunks PUBLIC ../libnczarr)