diff options
762 files changed, 15038 insertions, 11881 deletions
diff --git a/Help/command/add_custom_command.rst b/Help/command/add_custom_command.rst index 8726b70..d421364 100644 --- a/Help/command/add_custom_command.rst +++ b/Help/command/add_custom_command.rst @@ -76,9 +76,12 @@ The options are: The optional ``ARGS`` argument is for backward compatibility and will be ignored. - If ``COMMAND`` specifies an executable target (created by the + If ``COMMAND`` specifies an executable target name (created by the :command:`add_executable` command) it will automatically be replaced - by the location of the executable created at build time. + by the location of the executable created at build time. If set, the + :prop_tgt:`CROSSCOMPILING_EMULATOR` executable target property will + also be prepended to the command to allow the executable to run on + the host. (Use the ``TARGET_FILE`` :manual:`generator expression <cmake-generator-expressions(7)>` to reference an executable later in the command line.) diff --git a/Help/command/add_custom_target.rst b/Help/command/add_custom_target.rst index 82d69db..6980d61 100644 --- a/Help/command/add_custom_target.rst +++ b/Help/command/add_custom_target.rst @@ -58,9 +58,12 @@ The options are: :command:`file(GENERATE)` command to create it, and then specify a ``COMMAND`` to launch it.) - If ``COMMAND`` specifies an executable target (created by the + If ``COMMAND`` specifies an executable target name (created by the :command:`add_executable` command) it will automatically be replaced - by the location of the executable created at build time. + by the location of the executable created at build time. If set, the + :prop_tgt:`CROSSCOMPILING_EMULATOR` executable target property will + also be prepended to the command to allow the executable to run on + the host. Additionally a target-level dependency will be added so that the executable target will be built before this custom target. diff --git a/Help/generator/Visual Studio 7 .NET 2003.rst b/Help/generator/Visual Studio 7 .NET 2003.rst index 2034140..1c086a0 100644 --- a/Help/generator/Visual Studio 7 .NET 2003.rst +++ b/Help/generator/Visual Studio 7 .NET 2003.rst @@ -1,4 +1,10 @@ Visual Studio 7 .NET 2003 ------------------------- -Generates Visual Studio .NET 2003 project files. +Deprecated. Generates Visual Studio .NET 2003 project files. + +.. note:: + This generator is deprecated and will be removed + in a future version of CMake. It will still be + possible to build with VS 7.1 tools using the + :generator:`NMake Makefiles` generator. diff --git a/Help/manual/cmake-compile-features.7.rst b/Help/manual/cmake-compile-features.7.rst index caf5bac..7289e61 100644 --- a/Help/manual/cmake-compile-features.7.rst +++ b/Help/manual/cmake-compile-features.7.rst @@ -309,3 +309,4 @@ versions specified for each: * ``GNU``: GNU compiler versions 4.4 through 5.0. * ``MSVC``: Microsoft Visual Studio versions 2010 through 2015. * ``SunPro``: Oracle SolarisStudio version 12.4. +* ``Intel``: Intel compiler versions 12.1 through 16.0 on UNIX platforms. diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index ae5354f..43f4637 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -51,75 +51,117 @@ The :variable:`CMAKE_MINIMUM_REQUIRED_VERSION` variable may also be used to determine whether to report an error on use of deprecated macros or functions. -All Policies -============ +Policies Introduced by CMake 3.4 +================================ + +.. toctree:: + :maxdepth: 1 + + CMP0065: Do not add flags to export symbols from executables without the ENABLE_EXPORTS target property. </policy/CMP0065> + CMP0064: Support new TEST if() operator. </policy/CMP0064> + +Policies Introduced by CMake 3.3 +================================ + +.. toctree:: + :maxdepth: 1 + + CMP0063: Honor visibility properties for all target types. </policy/CMP0063> + CMP0062: Disallow install() of export() result. </policy/CMP0062> + CMP0061: CTest does not by default tell make to ignore errors (-i). </policy/CMP0061> + CMP0060: Link libraries by full path even in implicit directories. </policy/CMP0060> + CMP0059: Do not treat DEFINITIONS as a built-in directory property. </policy/CMP0059> + CMP0058: Ninja requires custom command byproducts to be explicit. </policy/CMP0058> + CMP0057: Support new IN_LIST if() operator. </policy/CMP0057> + +Policies Introduced by CMake 3.2 +================================ + +.. toctree:: + :maxdepth: 1 + + CMP0056: Honor link flags in try_compile() source-file signature. </policy/CMP0056> + CMP0055: Strict checking for break() command. </policy/CMP0055> + +Policies Introduced by CMake 3.1 +================================ + +.. toctree:: + :maxdepth: 1 + + CMP0054: Only interpret if() arguments as variables or keywords when unquoted. </policy/CMP0054> + CMP0053: Simplify variable reference and escape sequence evaluation. </policy/CMP0053> + CMP0052: Reject source and build dirs in installed INTERFACE_INCLUDE_DIRECTORIES. </policy/CMP0052> + CMP0051: List TARGET_OBJECTS in SOURCES target property. </policy/CMP0051> + +Policies Introduced by CMake 3.0 +================================ + +.. toctree:: + :maxdepth: 1 + + CMP0050: Disallow add_custom_command SOURCE signatures. </policy/CMP0050> + CMP0049: Do not expand variables in target source entries. </policy/CMP0049> + CMP0048: project() command manages VERSION variables. </policy/CMP0048> + CMP0047: Use QCC compiler id for the qcc drivers on QNX. </policy/CMP0047> + CMP0046: Error on non-existent dependency in add_dependencies. </policy/CMP0046> + CMP0045: Error on non-existent target in get_target_property. </policy/CMP0045> + CMP0044: Case sensitive Lang_COMPILER_ID generator expressions. </policy/CMP0044> + CMP0043: Ignore COMPILE_DEFINITIONS_Config properties. </policy/CMP0043> + CMP0042: MACOSX_RPATH is enabled by default. </policy/CMP0042> + CMP0041: Error on relative include with generator expression. </policy/CMP0041> + CMP0040: The target in the TARGET signature of add_custom_command() must exist. </policy/CMP0040> + CMP0039: Utility targets may not have link dependencies. </policy/CMP0039> + CMP0038: Targets may not link directly to themselves. </policy/CMP0038> + CMP0037: Target names should not be reserved and should match a validity pattern. </policy/CMP0037> + CMP0036: The build_name command should not be called. </policy/CMP0036> + CMP0035: The variable_requires command should not be called. </policy/CMP0035> + CMP0034: The utility_source command should not be called. </policy/CMP0034> + CMP0033: The export_library_dependencies command should not be called. </policy/CMP0033> + CMP0032: The output_required_files command should not be called. </policy/CMP0032> + CMP0031: The load_command command should not be called. </policy/CMP0031> + CMP0030: The use_mangled_mesa command should not be called. </policy/CMP0030> + CMP0029: The subdir_depends command should not be called. </policy/CMP0029> + CMP0028: Double colon in target name means ALIAS or IMPORTED target. </policy/CMP0028> + CMP0027: Conditionally linked imported targets with missing include directories. </policy/CMP0027> + CMP0026: Disallow use of the LOCATION target property. </policy/CMP0026> + CMP0025: Compiler id for Apple Clang is now AppleClang. </policy/CMP0025> + CMP0024: Disallow include export result. </policy/CMP0024> + +Policies Introduced by CMake 2.8 +================================ + +.. toctree:: + :maxdepth: 1 + + CMP0023: Plain and keyword target_link_libraries signatures cannot be mixed. </policy/CMP0023> + CMP0022: INTERFACE_LINK_LIBRARIES defines the link interface. </policy/CMP0022> + CMP0021: Fatal error on relative paths in INCLUDE_DIRECTORIES target property. </policy/CMP0021> + CMP0020: Automatically link Qt executables to qtmain target on Windows. </policy/CMP0020> + CMP0019: Do not re-expand variables in include and link information. </policy/CMP0019> + CMP0018: Ignore CMAKE_SHARED_LIBRARY_Lang_FLAGS variable. </policy/CMP0018> + CMP0017: Prefer files from the CMake module directory when including from there. </policy/CMP0017> + CMP0016: target_link_libraries() reports error if its only argument is not a target. </policy/CMP0016> + CMP0015: link_directories() treats paths relative to the source dir. </policy/CMP0015> + CMP0014: Input directories must have CMakeLists.txt. </policy/CMP0014> + CMP0013: Duplicate binary directories are not allowed. </policy/CMP0013> + CMP0012: if() recognizes numbers and boolean constants. </policy/CMP0012> + +Policies Introduced by CMake 2.6 +================================ .. toctree:: :maxdepth: 1 - /policy/CMP0000 - /policy/CMP0001 - /policy/CMP0002 - /policy/CMP0003 - /policy/CMP0004 - /policy/CMP0005 - /policy/CMP0006 - /policy/CMP0007 - /policy/CMP0008 - /policy/CMP0009 - /policy/CMP0010 - /policy/CMP0011 - /policy/CMP0012 - /policy/CMP0013 - /policy/CMP0014 - /policy/CMP0015 - /policy/CMP0016 - /policy/CMP0017 - /policy/CMP0018 - /policy/CMP0019 - /policy/CMP0020 - /policy/CMP0021 - /policy/CMP0022 - /policy/CMP0023 - /policy/CMP0024 - /policy/CMP0025 - /policy/CMP0026 - /policy/CMP0027 - /policy/CMP0028 - /policy/CMP0029 - /policy/CMP0030 - /policy/CMP0031 - /policy/CMP0032 - /policy/CMP0033 - /policy/CMP0034 - /policy/CMP0035 - /policy/CMP0036 - /policy/CMP0037 - /policy/CMP0038 - /policy/CMP0039 - /policy/CMP0040 - /policy/CMP0041 - /policy/CMP0042 - /policy/CMP0043 - /policy/CMP0044 - /policy/CMP0045 - /policy/CMP0046 - /policy/CMP0047 - /policy/CMP0048 - /policy/CMP0049 - /policy/CMP0050 - /policy/CMP0051 - /policy/CMP0052 - /policy/CMP0053 - /policy/CMP0054 - /policy/CMP0055 - /policy/CMP0056 - /policy/CMP0057 - /policy/CMP0058 - /policy/CMP0059 - /policy/CMP0060 - /policy/CMP0061 - /policy/CMP0062 - /policy/CMP0063 - /policy/CMP0064 - /policy/CMP0065 + CMP0011: Included scripts do automatic cmake_policy PUSH and POP. </policy/CMP0011> + CMP0010: Bad variable reference syntax is an error. </policy/CMP0010> + CMP0009: FILE GLOB_RECURSE calls should not follow symlinks by default. </policy/CMP0009> + CMP0008: Libraries linked by full-path must have a valid library file name. </policy/CMP0008> + CMP0007: list command no longer ignores empty elements. </policy/CMP0007> + CMP0006: Installing MACOSX_BUNDLE targets requires a BUNDLE DESTINATION. </policy/CMP0006> + CMP0005: Preprocessor definition values are now escaped automatically. </policy/CMP0005> + CMP0004: Libraries linked may not have leading or trailing whitespace. </policy/CMP0004> + CMP0003: Libraries linked via full path no longer produce linker search paths. </policy/CMP0003> + CMP0002: Logical target names must be globally unique. </policy/CMP0002> + CMP0001: CMAKE_BACKWARDS_COMPATIBILITY should no longer be used. </policy/CMP0001> + CMP0000: A minimum required CMake version must be specified. </policy/CMP0000> diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index 73d1142..3403dcd 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -197,6 +197,7 @@ Properties on Targets /prop_tgt/JOB_POOL_COMPILE /prop_tgt/JOB_POOL_LINK /prop_tgt/LABELS + /prop_tgt/LANG_CLANG_TIDY /prop_tgt/LANG_COMPILER_LAUNCHER /prop_tgt/LANG_INCLUDE_WHAT_YOU_USE /prop_tgt/LANG_VISIBILITY_PRESET diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 5fd5c5c..181fbbc 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -116,6 +116,10 @@ Variables that Change Behavior /variable/CMAKE_DEBUG_TARGET_PROPERTIES /variable/CMAKE_DEPENDS_IN_PROJECT_ONLY /variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName + /variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES + /variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT + /variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS + /variable/CMAKE_ECLIPSE_VERSION /variable/CMAKE_ERROR_DEPRECATED /variable/CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION /variable/CMAKE_EXPORT_COMPILE_COMMANDS @@ -175,6 +179,7 @@ Variables that Describe the System /variable/CMAKE_CL_64 /variable/CMAKE_COMPILER_2005 /variable/CMAKE_HOST_APPLE + /variable/CMAKE_HOST_SOLARIS /variable/CMAKE_HOST_SYSTEM_NAME /variable/CMAKE_HOST_SYSTEM_PROCESSOR /variable/CMAKE_HOST_SYSTEM @@ -259,6 +264,7 @@ Variables that Control the Build /variable/CMAKE_INSTALL_RPATH /variable/CMAKE_INSTALL_RPATH_USE_LINK_PATH /variable/CMAKE_IOS_INSTALL_COMBINED + /variable/CMAKE_LANG_CLANG_TIDY /variable/CMAKE_LANG_COMPILER_LAUNCHER /variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE /variable/CMAKE_LANG_VISIBILITY_PRESET @@ -407,6 +413,7 @@ Variables for CTest /variable/CTEST_DROP_SITE_USER /variable/CTEST_EXTRA_COVERAGE_GLOB /variable/CTEST_GIT_COMMAND + /variable/CTEST_GIT_INIT_SUBMODULES /variable/CTEST_GIT_UPDATE_CUSTOM /variable/CTEST_GIT_UPDATE_OPTIONS /variable/CTEST_HG_COMMAND diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst index 5295a48c..3ae2baf 100644 --- a/Help/manual/cmake.1.rst +++ b/Help/manual/cmake.1.rst @@ -169,7 +169,7 @@ Available commands are: ``compare_files <file1> <file2>`` Check if ``<file1>`` is same as ``<file2>``. If files are the same, - then returns 0, if not itreturns 1. + then returns 0, if not it returns 1. ``copy <file>... <destination>`` Copy files to ``<destination>`` (either file or directory). @@ -204,7 +204,10 @@ Available commands are: silently ignored. ``md5sum <file>...`` - Compute md5sum of files. + Create MD5 checksum of files in ``md5sum`` compatible format:: + + 351abe79cd3800b38cdfb25d45015a15 file1.txt + 052f86c15bbde68af55c7f7b340ab639 file2.txt ``remove [-f] <file>...`` Remove the file(s), use ``-f`` to force it. If a file does diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index 2fdf7f3..1179f56 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -589,6 +589,12 @@ Configuration settings to specify the version control tool include: * `CTest Script`_ variable: :variable:`CTEST_GIT_COMMAND` * :module:`CTest` module variable: ``GITCOMMAND`` +``GITInitSubmodules`` + If set, CTest will update the repository's submodules before updating. + + * `CTest Script`_ variable: :variable:`CTEST_GIT_INIT_SUBMODULES` + * :module:`CTest` module variable: ``CTEST_GIT_INIT_SUBMODULES`` + ``GITUpdateCustom`` Specify a custom command line (as a semicolon-separated list) to run in the source tree (Git work tree) to update it instead of running diff --git a/Help/policy/CMP0059.rst b/Help/policy/CMP0059.rst index 5da479a..bce982e 100644 --- a/Help/policy/CMP0059.rst +++ b/Help/policy/CMP0059.rst @@ -1,7 +1,7 @@ CMP0059 ------- -Don't treat ``DEFINITIONS`` as a built-in directory property. +Do not treat ``DEFINITIONS`` as a built-in directory property. CMake 3.3 and above no longer make a list of definitions available through the :prop_dir:`DEFINITIONS` directory property. The diff --git a/Help/prop_dir/LISTFILE_STACK.rst b/Help/prop_dir/LISTFILE_STACK.rst index f729c1e..22ec4b6 100644 --- a/Help/prop_dir/LISTFILE_STACK.rst +++ b/Help/prop_dir/LISTFILE_STACK.rst @@ -5,5 +5,6 @@ The current stack of listfiles being processed. This property is mainly useful when trying to debug errors in your CMake scripts. It returns a list of what list files are currently -being processed, in order. So if one listfile does an INCLUDE command -then that is effectively pushing the included listfile onto the stack. +being processed, in order. So if one listfile does an +:command:`include` command then that is effectively pushing the +included listfile onto the stack. diff --git a/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst b/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst index 185246c..e52f8eb 100644 --- a/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst +++ b/Help/prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS.rst @@ -1,9 +1,10 @@ FIND_LIBRARY_USE_LIB64_PATHS ---------------------------- -Whether FIND_LIBRARY should automatically search lib64 directories. +Whether :command:`find_library` should automatically search lib64 +directories. FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the -FIND_LIBRARY command should automatically search the lib64 variant of -directories called lib in the search path when building 64-bit -binaries. +:command:`find_library` command should automatically search the lib64 +variant of directories called lib in the search path when building +64-bit binaries. diff --git a/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst b/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst index 9a3edd8..beb94ac 100644 --- a/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst +++ b/Help/prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING.rst @@ -1,9 +1,10 @@ FIND_LIBRARY_USE_OPENBSD_VERSIONING ----------------------------------- -Whether FIND_LIBRARY should find OpenBSD-style shared libraries. +Whether :command:`find_library` should find OpenBSD-style shared +libraries. -This property is a boolean specifying whether the FIND_LIBRARY command -should find shared libraries with OpenBSD-style versioned extension: -".so.<major>.<minor>". The property is set to true on OpenBSD and -false on other platforms. +This property is a boolean specifying whether the +:command:`find_library` command should find shared libraries with +OpenBSD-style versioned extension: ".so.<major>.<minor>". The +property is set to true on OpenBSD and false on other platforms. diff --git a/Help/prop_gbl/IN_TRY_COMPILE.rst b/Help/prop_gbl/IN_TRY_COMPILE.rst index 3a2ef5b..fd2d2e1 100644 --- a/Help/prop_gbl/IN_TRY_COMPILE.rst +++ b/Help/prop_gbl/IN_TRY_COMPILE.rst @@ -3,4 +3,5 @@ IN_TRY_COMPILE Read-only property that is true during a try-compile configuration. -True when building a project inside a TRY_COMPILE or TRY_RUN command. +True when building a project inside a :command:`try_compile` or +:command:`try_run` command. diff --git a/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst b/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst index e85b823..bf8c9a3 100644 --- a/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst +++ b/Help/prop_gbl/PREDEFINED_TARGETS_FOLDER.rst @@ -5,5 +5,5 @@ Name of FOLDER for targets that are added automatically by CMake. If not set, CMake uses "CMakePredefinedTargets" as a default value for this property. Targets such as INSTALL, PACKAGE and RUN_TESTS will be -organized into this FOLDER. See also the documentation for the FOLDER -target property. +organized into this FOLDER. See also the documentation for the +:prop_tgt:`FOLDER` target property. diff --git a/Help/prop_gbl/RULE_MESSAGES.rst b/Help/prop_gbl/RULE_MESSAGES.rst index 38d83a3..87a5ca6 100644 --- a/Help/prop_gbl/RULE_MESSAGES.rst +++ b/Help/prop_gbl/RULE_MESSAGES.rst @@ -8,6 +8,6 @@ progress message describing what each build rule does. If the property is not set the default is ON. Set the property to OFF to disable granular messages and report only as each target completes. This is intended to allow scripted builds to avoid the build time cost -of detailed reports. If a CMAKE_RULE_MESSAGES cache entry exists its -value initializes the value of this property. Non-Makefile generators -currently ignore this property. +of detailed reports. If a ``CMAKE_RULE_MESSAGES`` cache entry exists +its value initializes the value of this property. Non-Makefile +generators currently ignore this property. diff --git a/Help/prop_gbl/USE_FOLDERS.rst b/Help/prop_gbl/USE_FOLDERS.rst index fdbca9f..a1b4ccb 100644 --- a/Help/prop_gbl/USE_FOLDERS.rst +++ b/Help/prop_gbl/USE_FOLDERS.rst @@ -1,9 +1,10 @@ USE_FOLDERS ----------- -Use the FOLDER target property to organize targets into folders. +Use the :prop_tgt:`FOLDER` target property to organize targets into +folders. If not set, CMake treats this property as OFF by default. CMake generators that are capable of organizing into a hierarchy of folders -use the values of the FOLDER target property to name those folders. -See also the documentation for the FOLDER target property. +use the values of the :prop_tgt:`FOLDER` target property to name those +folders. See also the documentation for the FOLDER target property. diff --git a/Help/prop_sf/COMPILE_FLAGS.rst b/Help/prop_sf/COMPILE_FLAGS.rst index daba502..086a063 100644 --- a/Help/prop_sf/COMPILE_FLAGS.rst +++ b/Help/prop_sf/COMPILE_FLAGS.rst @@ -4,5 +4,5 @@ COMPILE_FLAGS Additional flags to be added when compiling this source file. These flags will be added to the list of compile flags when this -source file builds. Use COMPILE_DEFINITIONS to pass additional -preprocessor definitions. +source file builds. Use :prop_sf:`COMPILE_DEFINITIONS` to pass +additional preprocessor definitions. diff --git a/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst b/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst index 6819143..add54b2 100644 --- a/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst +++ b/Help/prop_test/ATTACHED_FILES_ON_FAIL.rst @@ -3,5 +3,5 @@ ATTACHED_FILES_ON_FAIL Attach a list of files to a dashboard submission if the test fails. -Same as ATTACHED_FILES, but these files will only be included if the -test does not pass. +Same as :prop_test:`ATTACHED_FILES`, but these files will only be +included if the test does not pass. diff --git a/Help/prop_tgt/AUTOMOC.rst b/Help/prop_tgt/AUTOMOC.rst index 045ebb2..8143ba9 100644 --- a/Help/prop_tgt/AUTOMOC.rst +++ b/Help/prop_tgt/AUTOMOC.rst @@ -6,22 +6,35 @@ Should the target be processed with automoc (for Qt projects). AUTOMOC is a boolean specifying whether CMake will handle the Qt ``moc`` preprocessor automatically, i.e. without having to use the :module:`QT4_WRAP_CPP() <FindQt4>` or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are -supported. When this property is set ``ON``, CMake will scan the -source files at build time and invoke moc accordingly. If an ``#include`` -statement like ``#include "moc_foo.cpp"`` is found, the ``Q_OBJECT`` class -declaration is expected in the header, and ``moc`` is run on the header -file. If an ``#include`` statement like ``#include "foo.moc"`` is found, then -a ``Q_OBJECT`` is expected in the current source file and ``moc`` is run on -the file itself. Additionally, header files with the same base name (like -``foo.h``) or ``_p`` appended to the base name (like ``foo_p.h``) are parsed -for ``Q_OBJECT`` macros, and if found, ``moc`` is also executed on those files. -``AUTOMOC`` checks multiple header alternative extensions, such as -``hpp``, ``hxx`` etc when searching for headers. -The resulting moc files, which are not included as shown above in any -of the source files are included in a generated -``<targetname>_automoc.cpp`` file, which is compiled as part of the -target. This property is initialized by the value of the -:variable:`CMAKE_AUTOMOC` variable if it is set when a target is created. +supported. + +When this property is set ``ON``, CMake will scan the +source files at build time and invoke moc accordingly. + +* If an ``#include`` statement like ``#include "moc_foo.cpp"`` is found, + the ``Q_OBJECT`` class declaration is expected in the header, and + ``moc`` is run on the header file. A ``moc_foo.cpp`` file will be + generated from the source's header into the + :variable:`CMAKE_CURRENT_BINARY_DIR` directory. This allows the + compiler to find the included ``moc_foo.cpp`` file regardless of the + location the original source. However, if multiple source files + in different directories do this then their generated moc files would + collide. In this case a diagnostic will be issued. + +* If an ``#include`` statement like ``#include "foo.moc"`` is found, + then a ``Q_OBJECT`` is expected in the current source file and ``moc`` + is run on the file itself. Additionally, header files with the same + base name (like ``foo.h``) or ``_p`` appended to the base name (like + ``foo_p.h``) are parsed for ``Q_OBJECT`` macros, and if found, ``moc`` + is also executed on those files. ``AUTOMOC`` checks multiple header + alternative extensions, such as ``hpp``, ``hxx`` etc when searching + for headers. The resulting moc files, which are not included as shown + above in any of the source files are included in a generated + ``<targetname>_automoc.cpp`` file, which is compiled as part of the + target. + +This property is initialized by the value of the :variable:`CMAKE_AUTOMOC` +variable if it is set when a target is created. Additional command line options for moc can be set via the :prop_tgt:`AUTOMOC_MOC_OPTIONS` property. diff --git a/Help/prop_tgt/COMPILE_FLAGS.rst b/Help/prop_tgt/COMPILE_FLAGS.rst index 6ee6c51..1a5389e 100644 --- a/Help/prop_tgt/COMPILE_FLAGS.rst +++ b/Help/prop_tgt/COMPILE_FLAGS.rst @@ -3,9 +3,9 @@ COMPILE_FLAGS Additional flags to use when compiling this target's sources. -The COMPILE_FLAGS property sets additional compiler flags used to -build sources within the target. Use COMPILE_DEFINITIONS to pass -additional preprocessor definitions. +The ``COMPILE_FLAGS`` property sets additional compiler flags used to +build sources within the target. Use :prop_tgt:`COMPILE_DEFINITIONS` +to pass additional preprocessor definitions. -This property is deprecated. Use the COMPILE_OPTIONS property or the -target_compile_options command instead. +This property is deprecated. Use the :prop_tgt:`COMPILE_OPTIONS` +property or the command:`target_compile_options` command instead. diff --git a/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst b/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst index 3ef8e03..d30a2f2 100644 --- a/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst +++ b/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst @@ -1,6 +1,7 @@ CROSSCOMPILING_EMULATOR ----------------------- -Use the given emulator to run executables created when crosscompiling. This -command will be added as a prefix to :command:`add_test` test commands for -built target system executables. +Use the given emulator to run executables created when crosscompiling. +This command will be added as a prefix to :command:`add_test`, +:command:`add_custom_command`, and :command:`add_custom_target` commands +for built target system executables. diff --git a/Help/prop_tgt/LANG_CLANG_TIDY.rst b/Help/prop_tgt/LANG_CLANG_TIDY.rst new file mode 100644 index 0000000..2887e23 --- /dev/null +++ b/Help/prop_tgt/LANG_CLANG_TIDY.rst @@ -0,0 +1,13 @@ +<LANG>_CLANG_TIDY +----------------- + +This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``. + +Specify a :ref:`;-list <CMake Language Lists>` containing a command +line for the ``clang-tidy`` tool. The :ref:`Makefile Generators` +and the :generator:`Ninja` generator will run this tool along with the +compiler and report a warning if the tool reports any problems. + +This property is initialized by the value of +the :variable:`CMAKE_<LANG>_CLANG_TIDY` variable if it is set +when a target is created. diff --git a/Help/release/dev/ExternalProject-git-clone-shallow.rst b/Help/release/dev/ExternalProject-git-clone-shallow.rst new file mode 100644 index 0000000..f06fe34 --- /dev/null +++ b/Help/release/dev/ExternalProject-git-clone-shallow.rst @@ -0,0 +1,5 @@ +ExternalProject-git-clone-shallow +--------------------------------- + +* The :module:`ExternalProject` module leared the ``GIT_SHALLOW 1`` + option to perform a shallow clone of a Git repository. diff --git a/Help/release/dev/ExternalProject-git-recursive-init.rst b/Help/release/dev/ExternalProject-git-recursive-init.rst new file mode 100644 index 0000000..1ebcced --- /dev/null +++ b/Help/release/dev/ExternalProject-git-recursive-init.rst @@ -0,0 +1,7 @@ +ExternalProject-git-recursive-init +---------------------------------- + +* The :module:`ExternalProject` module learned to initialize Git submodules + recursively and also to initialize new submodules on updates. Use the + ``GIT_SUBMODULES`` option to restrict which submodules are initalized and + updated. diff --git a/Help/release/dev/automoc-diagnostics.rst b/Help/release/dev/automoc-diagnostics.rst new file mode 100644 index 0000000..d89f2e1 --- /dev/null +++ b/Help/release/dev/automoc-diagnostics.rst @@ -0,0 +1,6 @@ +automoc-diagnostics +------------------- + +* :prop_tgt:`AUTOMOC` now diagnoses name collisions when multiple source + files in different directories use ``#include <moc_foo.cpp>`` with the + same name (because the generated ``moc_foo.cpp`` files would collide). diff --git a/Help/release/dev/clang-tidy.rst b/Help/release/dev/clang-tidy.rst new file mode 100644 index 0000000..030a7c9 --- /dev/null +++ b/Help/release/dev/clang-tidy.rst @@ -0,0 +1,7 @@ +clang-tidy +---------- + +* A :prop_tgt:`<LANG>_CLANG_TIDY` target property and supporting + :variable:`CMAKE_<LANG>_CLANG_TIDY` variable were introduced to tell the + :ref:`Makefile Generators` and the :generator:`Ninja` generator to run + ``clang-tidy`` along with the compiler for ``C`` and ``CXX`` languages. diff --git a/Help/release/dev/cmake-host-solaris.rst b/Help/release/dev/cmake-host-solaris.rst new file mode 100644 index 0000000..da7ab89 --- /dev/null +++ b/Help/release/dev/cmake-host-solaris.rst @@ -0,0 +1,5 @@ +cmake-host-solaris +------------------ + +* A new :variable:`CMAKE_HOST_SOLARIS` variable was introduced to + indicate when CMake is running on an Oracle Solaris host. diff --git a/Help/release/dev/ctest-run-submodule-sync.rst b/Help/release/dev/ctest-run-submodule-sync.rst new file mode 100644 index 0000000..c41cc2f --- /dev/null +++ b/Help/release/dev/ctest-run-submodule-sync.rst @@ -0,0 +1,9 @@ +ctest-run-submodule-sync +------------------------ + +* The :command:`ctest_update` command now looks at the + :variable:`CTEST_GIT_INIT_SUBMODULES` variable to determine whether + submodules should be updated or not before updating. +* The :command:`ctest_update` command will now synchronize submodules on an + update. Updates which add submodules or change a submodule's URL will now be + pulled properly. diff --git a/Help/release/dev/custom-command-CROSSCOMPILING_EMULATOR.rst b/Help/release/dev/custom-command-CROSSCOMPILING_EMULATOR.rst new file mode 100644 index 0000000..390463e --- /dev/null +++ b/Help/release/dev/custom-command-CROSSCOMPILING_EMULATOR.rst @@ -0,0 +1,6 @@ +custom-command-CROSSCOMPILING_EMULATOR +-------------------------------------- + +* The :command:`add_custom_command` and :command:`add_custom_target` commands + learned how to use the :prop_tgt:`CROSSCOMPILING_EMULATOR` executable + target property. diff --git a/Help/release/dev/ep-tls-verify-git.rst b/Help/release/dev/ep-tls-verify-git.rst new file mode 100644 index 0000000..3c727de --- /dev/null +++ b/Help/release/dev/ep-tls-verify-git.rst @@ -0,0 +1,5 @@ +ep-tls-verify-git +----------------- + +* The :module:`ExternalProject` module now uses ``TLS_VERIFY`` when fetching + from git repositories. diff --git a/Help/release/dev/fix-bison-flex-command-escaping.rst b/Help/release/dev/fix-bison-flex-command-escaping.rst new file mode 100644 index 0000000..dc2e87b --- /dev/null +++ b/Help/release/dev/fix-bison-flex-command-escaping.rst @@ -0,0 +1,12 @@ +fix-bison-flex-command-escaping +------------------------------- + +* The :module:`FindBISON` module ``BISON_TARGET`` macro now supports + special characters by passing the ``VERBATIM`` option to internal + :command:`add_custom_command` calls. This may break clients that + added escaping manually to work around the bug. + +* The :module:`FindFLEX` module ``FLEX_TARGET`` macro now supports + special characters by passing the ``VERBATIM`` option to internal + :command:`add_custom_command` calls. This may break clients that + added escaping manually to work around the bug. diff --git a/Help/release/dev/intel-compiler-features.rst b/Help/release/dev/intel-compiler-features.rst new file mode 100644 index 0000000..f154dc9 --- /dev/null +++ b/Help/release/dev/intel-compiler-features.rst @@ -0,0 +1,6 @@ +intel-compiler-features +----------------------- + +* The :manual:`Compile Features <cmake-compile-features(7)>` functionality + is now aware of features supported by Intel C++ compilers versions 12.1 + through 16.0 on UNIX platforms. diff --git a/Help/release/dev/try_compile-config-flags.rst b/Help/release/dev/try_compile-config-flags.rst new file mode 100644 index 0000000..7e5e461 --- /dev/null +++ b/Help/release/dev/try_compile-config-flags.rst @@ -0,0 +1,7 @@ +try_compile-config-flags +------------------------ + +* The :command:`try_compile` command source file signature now honors + configuration-specific flags (e.g. :variable:`CMAKE_<LANG>_FLAGS_DEBUG`) + in the generated test project. Previously only the default such flags + for the current toolchain were used. diff --git a/Help/release/dev/vs71-deprecate.rst b/Help/release/dev/vs71-deprecate.rst new file mode 100644 index 0000000..1946304 --- /dev/null +++ b/Help/release/dev/vs71-deprecate.rst @@ -0,0 +1,5 @@ +vs71-deprecate +-------------- + +* The :generator:`Visual Studio 7 .NET 2003` generator is now + deprecated and will be removed in a future version of CMake. diff --git a/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst b/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst new file mode 100644 index 0000000..331aae8 --- /dev/null +++ b/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst @@ -0,0 +1,10 @@ +CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES +--------------------------------------- + +This cache variable is used by the Eclipse project generator. See +:manual:`cmake-generators(7)`. + +The Eclipse project generator generates so-called linked resources +e.g. to the subproject root dirs in the source tree or to the source files +of targets. +This can be disabled by setting this variable to FALSE. diff --git a/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst b/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst new file mode 100644 index 0000000..7b4367d --- /dev/null +++ b/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst @@ -0,0 +1,11 @@ +CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT +------------------------------------- + +This cache variable is used by the Eclipse project generator. See +:manual:`cmake-generators(7)`. + +If this variable is set to TRUE, the Eclipse project generator will generate +an Eclipse project in :variable:`CMAKE_SOURCE_DIR` . This project can then +be used in Eclipse e.g. for the version control functionality. +:variable:`CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT` defaults to FALSE; so +nothing is written into the source directory. diff --git a/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst b/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst new file mode 100644 index 0000000..6e8a408 --- /dev/null +++ b/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst @@ -0,0 +1,9 @@ +CMAKE_ECLIPSE_MAKE_ARGUMENTS +---------------------------- + +This cache variable is used by the Eclipse project generator. See +:manual:`cmake-generators(7)`. + +This variable holds arguments which are used when Eclipse invokes the make +tool. By default it is initialized to hold flags to enable parallel builds +(using -j typically). diff --git a/Help/variable/CMAKE_ECLIPSE_VERSION.rst b/Help/variable/CMAKE_ECLIPSE_VERSION.rst new file mode 100644 index 0000000..8cc7882 --- /dev/null +++ b/Help/variable/CMAKE_ECLIPSE_VERSION.rst @@ -0,0 +1,10 @@ +CMAKE_ECLIPSE_VERSION +--------------------- + +This cache variable is used by the Eclipse project generator. See +:manual:`cmake-generators(7)`. + +When using the Eclipse project generator, CMake tries to find the Eclipse +executable and detect the version of it. Depending on the version it finds, +some features are enabled or disabled. If CMake doesn't find +Eclipse, it assumes the oldest supported version, Eclipse Callisto (3.2). diff --git a/Help/variable/CMAKE_HOST_SOLARIS.rst b/Help/variable/CMAKE_HOST_SOLARIS.rst new file mode 100644 index 0000000..82b5d69 --- /dev/null +++ b/Help/variable/CMAKE_HOST_SOLARIS.rst @@ -0,0 +1,6 @@ +CMAKE_HOST_SOLARIS +------------------ + +``True`` for Oracle Solaris operating systems. + +Set to ``true`` when the host system is Oracle Solaris. diff --git a/Help/variable/CMAKE_LANG_CLANG_TIDY.rst b/Help/variable/CMAKE_LANG_CLANG_TIDY.rst new file mode 100644 index 0000000..492c12c --- /dev/null +++ b/Help/variable/CMAKE_LANG_CLANG_TIDY.rst @@ -0,0 +1,6 @@ +CMAKE_<LANG>_CLANG_TIDY +----------------------- + +Default value for :prop_tgt:`<LANG>_CLANG_TIDY` target property. +This variable is used to initialize the property on each target as it is +created. This is done only when ``<LANG>`` is ``C`` or ``CXX``. diff --git a/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst b/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst new file mode 100644 index 0000000..fd27003 --- /dev/null +++ b/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst @@ -0,0 +1,5 @@ +CTEST_GIT_INIT_SUBMODULES +------------------------- + +Specify the CTest ``GITInitSubmodules`` setting +in a :manual:`ctest(1)` dashboard client script. diff --git a/Modules/BundleUtilities.cmake b/Modules/BundleUtilities.cmake index 4b52afa..cfb6450 100644 --- a/Modules/BundleUtilities.cmake +++ b/Modules/BundleUtilities.cmake @@ -52,6 +52,9 @@ # Then clear all the keys and call verify_app on the final bundle to # ensure that it is truly standalone. # +# As an optional parameter (IGNORE_ITEM) a list of file names can be passed, +# which are then ignored (e.g. IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") +# # :: # # COPY_AND_FIXUP_BUNDLE(<src> <dst> <libs> <dirs>) @@ -67,6 +70,9 @@ # analysis tools on it. Calls "message(FATAL_ERROR" if the application # is not verified. # +# As an optional parameter (IGNORE_ITEM) a list of file names can be passed, +# which are then ignored (e.g. IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") +# # :: # # GET_BUNDLE_MAIN_EXECUTABLE(<bundle> <result_var>) @@ -140,6 +146,9 @@ # all of them and copy prerequisite libs into the bundle and then do # appropriate install_name_tool fixups. # +# As an optional parameter (IGNORE_ITEM) a list of file names can be passed, +# which are then ignored (e.g. IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") +# # :: # # COPY_RESOLVED_ITEM_INTO_BUNDLE(<resolved_item> <resolved_embedded_item>) @@ -196,6 +205,9 @@ # bundle are contained within the bundle or are "system" libraries, # presumed to exist everywhere. # +# As an optional parameter (IGNORE_ITEM) a list of file names can be passed, +# which are then ignored (e.g. IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") +# # :: # # VERIFY_BUNDLE_SYMLINKS(<bundle> <result_var> <info_var>) @@ -525,6 +537,11 @@ endfunction() function(get_bundle_keys app libs dirs keys_var) set(${keys_var} PARENT_SCOPE) + set(options) + set(oneValueArgs) + set(multiValueArgs IGNORE_ITEM) + cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + get_bundle_and_executable("${app}" bundle executable valid) if(valid) # Always use the exepath of the main bundle executable for @executable_path @@ -554,10 +571,24 @@ function(get_bundle_keys app libs dirs keys_var) set_bundle_key_values(${keys_var} "${lib}" "${lib}" "${exepath}" "${dirs}" 0 "${main_rpaths}") set(prereqs "") - get_prerequisites("${lib}" prereqs 1 1 "${exepath}" "${dirs}" "${main_rpaths}") - foreach(pr ${prereqs}) - set_bundle_key_values(${keys_var} "${lib}" "${pr}" "${exepath}" "${dirs}" 1 "${main_rpaths}") - endforeach() + set(ignoreFile FALSE) + get_filename_component(prereq_filename ${lib} NAME) + if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" ) + foreach(item ${CFG_IGNORE_ITEM}) + if("${item}" STREQUAL "${prereq_filename}") + set(ignoreFile TRUE) + endif() + endforeach() + endif() + + if(NOT ignoreFile) + get_prerequisites("${lib}" prereqs 1 1 "${exepath}" "${dirs}" "${main_rpaths}") + foreach(pr ${prereqs}) + set_bundle_key_values(${keys_var} "${lib}" "${pr}" "${exepath}" "${dirs}" 1 "${main_rpaths}") + endforeach() + else() + message(STATUS "Ignoring file: ${prereq_filename}") + endif() endforeach() # For each executable found in the bundle, accumulate keys as we go. @@ -583,10 +614,24 @@ function(get_bundle_keys app libs dirs keys_var) # Add each prerequisite to the keys: # set(prereqs "") - get_prerequisites("${exe}" prereqs 1 1 "${exepath}" "${dirs}" "${exe_rpaths}") - foreach(pr ${prereqs}) - set_bundle_key_values(${keys_var} "${exe}" "${pr}" "${exepath}" "${dirs}" 1 "${exe_rpaths}") - endforeach() + set(ignoreFile FALSE) + get_filename_component(prereq_filename ${exe} NAME) + if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" ) + foreach(item ${CFG_IGNORE_ITEM}) + if("${item}" STREQUAL "${prereq_filename}") + set(ignoreFile TRUE) + endif() + endforeach() + endif() + + if(NOT ignoreFile) + get_prerequisites("${exe}" prereqs 1 1 "${exepath}" "${dirs}" "${exe_rpaths}") + foreach(pr ${prereqs}) + set_bundle_key_values(${keys_var} "${exe}" "${pr}" "${exepath}" "${dirs}" 1 "${exe_rpaths}") + endforeach() + else() + message(STATUS "Ignoring file: ${prereq_filename}") + endif() endforeach() # Propagate values to caller's scope: @@ -798,12 +843,19 @@ function(fixup_bundle app libs dirs) message(STATUS " libs='${libs}'") message(STATUS " dirs='${dirs}'") + set(options) + set(oneValueArgs) + set(multiValueArgs IGNORE_ITEM) + cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + + message(STATUS " ignoreItems='${CFG_IGNORE_ITEM}'") + get_bundle_and_executable("${app}" bundle executable valid) if(valid) get_filename_component(exepath "${executable}" PATH) message(STATUS "fixup_bundle: preparing...") - get_bundle_keys("${app}" "${libs}" "${dirs}" keys) + get_bundle_keys("${app}" "${libs}" "${dirs}" keys IGNORE_ITEM "${CFG_IGNORE_ITEM}") message(STATUS "fixup_bundle: copying...") list(LENGTH keys n) @@ -857,7 +909,7 @@ function(fixup_bundle app libs dirs) clear_bundle_keys(keys) message(STATUS "fixup_bundle: verifying...") - verify_app("${app}") + verify_app("${app}" IGNORE_ITEM "${CFG_IGNORE_ITEM}") else() message(SEND_ERROR "error: fixup_bundle: not a valid bundle") endif() @@ -877,6 +929,11 @@ function(verify_bundle_prerequisites bundle result_var info_var) set(info "") set(count 0) + set(options) + set(oneValueArgs) + set(multiValueArgs IGNORE_ITEM) + cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + get_bundle_main_executable("${bundle}" main_bundle_exe) get_bundle_all_executables("${bundle}" file_list) @@ -887,37 +944,53 @@ function(verify_bundle_prerequisites bundle result_var info_var) message(STATUS "executable file ${count}: ${f}") set(prereqs "") - get_prerequisites("${f}" prereqs 1 1 "${exepath}" "") + set(ignoreFile FALSE) + get_filename_component(prereq_filename ${f} NAME) + + if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" ) + foreach(item ${CFG_IGNORE_ITEM}) + if("${item}" STREQUAL "${prereq_filename}") + set(ignoreFile TRUE) + endif() + endforeach() + endif() - # On the Mac, - # "embedded" and "system" prerequisites are fine... anything else means - # the bundle's prerequisites are not verified (i.e., the bundle is not - # really "standalone") - # - # On Windows (and others? Linux/Unix/...?) - # "local" and "system" prereqs are fine... - # - set(external_prereqs "") + if(NOT ignoreFile) + get_prerequisites("${f}" prereqs 1 1 "${exepath}" "") - foreach(p ${prereqs}) - set(p_type "") - gp_file_type("${f}" "${p}" p_type) + # On the Mac, + # "embedded" and "system" prerequisites are fine... anything else means + # the bundle's prerequisites are not verified (i.e., the bundle is not + # really "standalone") + # + # On Windows (and others? Linux/Unix/...?) + # "local" and "system" prereqs are fine... + # - if(APPLE) - if(NOT "${p_type}" STREQUAL "embedded" AND NOT "${p_type}" STREQUAL "system") - set(external_prereqs ${external_prereqs} "${p}") - endif() - else() - if(NOT "${p_type}" STREQUAL "local" AND NOT "${p_type}" STREQUAL "system") - set(external_prereqs ${external_prereqs} "${p}") + set(external_prereqs "") + + foreach(p ${prereqs}) + set(p_type "") + gp_file_type("${f}" "${p}" p_type) + + if(APPLE) + if(NOT "${p_type}" STREQUAL "embedded" AND NOT "${p_type}" STREQUAL "system") + set(external_prereqs ${external_prereqs} "${p}") + endif() + else() + if(NOT "${p_type}" STREQUAL "local" AND NOT "${p_type}" STREQUAL "system") + set(external_prereqs ${external_prereqs} "${p}") + endif() endif() - endif() - endforeach() + endforeach() - if(external_prereqs) - # Found non-system/somehow-unacceptable prerequisites: - set(result 0) - set(info ${info} "external prerequisites found:\nf='${f}'\nexternal_prereqs='${external_prereqs}'\n") + if(external_prereqs) + # Found non-system/somehow-unacceptable prerequisites: + set(result 0) + set(info ${info} "external prerequisites found:\nf='${f}'\nexternal_prereqs='${external_prereqs}'\n") + endif() + else() + message(STATUS "Ignoring file: ${prereq_filename}") endif() endforeach() @@ -947,6 +1020,11 @@ function(verify_app app) set(verified 0) set(info "") + set(options) + set(oneValueArgs) + set(multiValueArgs IGNORE_ITEM) + cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + get_bundle_and_executable("${app}" bundle executable valid) message(STATUS "===========================================================================") @@ -957,7 +1035,7 @@ function(verify_app app) # Verify that the bundle does not have any "external" prerequisites: # - verify_bundle_prerequisites("${bundle}" verified info) + verify_bundle_prerequisites("${bundle}" verified info IGNORE_ITEM "${CFG_IGNORE_ITEM}") message(STATUS "verified='${verified}'") message(STATUS "info='${info}'") message(STATUS "") diff --git a/Modules/CMakeCCompilerABI.c b/Modules/CMakeCCompilerABI.c index e6a07f4..d36219e 100644 --- a/Modules/CMakeCCompilerABI.c +++ b/Modules/CMakeCCompilerABI.c @@ -6,11 +6,9 @@ # define const #endif -/*--------------------------------------------------------------------------*/ #include "CMakeCompilerABI.h" -/*--------------------------------------------------------------------------*/ #ifdef __CLASSIC_C__ int main(argc, argv) int argc; char *argv[]; diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in index c107dfd..95184c9 100644 --- a/Modules/CMakeCCompilerId.c.in +++ b/Modules/CMakeCCompilerId.c.in @@ -34,7 +34,11 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; @CMAKE_C_COMPILER_ID_ERROR_FOR_TEST@ #if !defined(__STDC__) -# define C_DIALECT +# if defined(_MSC_VER) && !defined(__clang__) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif #elif __STDC_VERSION__ >= 201000L # define C_DIALECT "11" #elif __STDC_VERSION__ >= 199901L diff --git a/Modules/CMakeCXXCompilerABI.cpp b/Modules/CMakeCXXCompilerABI.cpp index c9b0440..c7ce194 100644 --- a/Modules/CMakeCXXCompilerABI.cpp +++ b/Modules/CMakeCXXCompilerABI.cpp @@ -2,11 +2,9 @@ # error "A C compiler has been selected for C++." #endif -/*--------------------------------------------------------------------------*/ #include "CMakeCompilerABI.h" -/*--------------------------------------------------------------------------*/ int main(int argc, char* argv[]) { diff --git a/Modules/CMakeCompilerABI.h b/Modules/CMakeCompilerABI.h index 26ae4db..95bd791 100644 --- a/Modules/CMakeCompilerABI.h +++ b/Modules/CMakeCompilerABI.h @@ -1,4 +1,3 @@ -/*--------------------------------------------------------------------------*/ /* Size of a pointer-to-data in bytes. */ #define SIZEOF_DPTR (sizeof(void*)) @@ -6,9 +5,10 @@ const char info_sizeof_dptr[] = { 'I', 'N', 'F', 'O', ':', 's', 'i', 'z', 'e', 'o', 'f', '_', 'd', 'p', 't', 'r', '[', ('0' + ((SIZEOF_DPTR / 10)%10)), ('0' + (SIZEOF_DPTR % 10)), - ']','\0'}; + ']','\0' + /* clang-format needs this comment to break after the opening brace */ +}; -/*--------------------------------------------------------------------------*/ /* Application Binary Interface. */ #if defined(__sgi) && defined(_ABIO32) diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index b1a2cf2..465989d 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -664,8 +664,8 @@ function(CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX lang) ERROR_VARIABLE err RESULT_VARIABLE res ) - if(res EQUAL 0 AND "${out}" MATCHES "\n([^:]*:[^:]*:[ \t]*)") - set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_1}" PARENT_SCOPE) + if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n]*:[^:\n]*:[ \t]*)") + set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_2}" PARENT_SCOPE) else() set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "" PARENT_SCOPE) endif() diff --git a/Modules/CMakeDetermineFortranCompiler.cmake b/Modules/CMakeDetermineFortranCompiler.cmake index ccafb07..4f2a70c 100644 --- a/Modules/CMakeDetermineFortranCompiler.cmake +++ b/Modules/CMakeDetermineFortranCompiler.cmake @@ -185,11 +185,10 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN) # Fall back to old is-GNU test. if(NOT CMAKE_Fortran_COMPILER_ID) - exec_program(${CMAKE_Fortran_COMPILER} - ARGS ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "\"${CMAKE_ROOT}/Modules/CMakeTestGNU.c\"" - OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RETURN_VALUE CMAKE_COMPILER_RETURN) + execute_process(COMMAND ${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "${CMAKE_ROOT}/Modules/CMakeTestGNU.c" + OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RESULT_VARIABLE CMAKE_COMPILER_RETURN) if(NOT CMAKE_COMPILER_RETURN) - if("${CMAKE_COMPILER_OUTPUT}" MATCHES "THIS_IS_GNU") + if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_GNU") set(CMAKE_Fortran_COMPILER_ID "GNU") file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Determining if the Fortran compiler is GNU succeeded with " @@ -200,16 +199,31 @@ if(NOT CMAKE_Fortran_COMPILER_ID_RUN) "the following output:\n${CMAKE_COMPILER_OUTPUT}\n\n") endif() if(NOT CMAKE_Fortran_PLATFORM_ID) - if("${CMAKE_COMPILER_OUTPUT}" MATCHES "THIS_IS_MINGW") + if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_MINGW") set(CMAKE_Fortran_PLATFORM_ID "MinGW") endif() - if("${CMAKE_COMPILER_OUTPUT}" MATCHES "THIS_IS_CYGWIN") + if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_CYGWIN") set(CMAKE_Fortran_PLATFORM_ID "Cygwin") endif() endif() endif() endif() + # Fall back for GNU MINGW, which is not always detected correctly + # (__MINGW32__ is defined for the C language, but perhaps not for Fortran!) + if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU" AND NOT CMAKE_Fortran_PLATFORM_ID) + execute_process(COMMAND ${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID_FLAGS_LIST} -E "${CMAKE_ROOT}/Modules/CMakeTestGNU.c" + OUTPUT_VARIABLE CMAKE_COMPILER_OUTPUT RESULT_VARIABLE CMAKE_COMPILER_RETURN) + if(NOT CMAKE_COMPILER_RETURN) + if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_MINGW") + set(CMAKE_Fortran_PLATFORM_ID "MinGW") + endif() + if(CMAKE_COMPILER_OUTPUT MATCHES "THIS_IS_CYGWIN") + set(CMAKE_Fortran_PLATFORM_ID "Cygwin") + endif() + endif() + endif() + # Set old compiler and platform id variables. if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU") set(CMAKE_COMPILER_IS_GNUG77 1) diff --git a/Modules/CMakeTestWatcomVersion.c b/Modules/CMakeTestWatcomVersion.c deleted file mode 100644 index 0343fb1..0000000 --- a/Modules/CMakeTestWatcomVersion.c +++ /dev/null @@ -1 +0,0 @@ -VERSION=__WATCOMC__ diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake index f31e432..a04d340 100644 --- a/Modules/CTestCoverageCollectGCOV.cmake +++ b/Modules/CTestCoverageCollectGCOV.cmake @@ -2,14 +2,19 @@ # CTestCoverageCollectGCOV # ------------------------ # -# This module provides the function ``ctest_coverage_collect_gcov``. -# The function will run gcov on the .gcda files in a binary tree and then -# package all of the .gcov files into a tar file with a data.json that -# contains the source and build directories for CDash to use in parsing -# the coverage data. In addtion the Labels.json files for targets that -# have coverage information are also put in the tar file for CDash to -# asign the correct labels. This file can be sent to a CDash server for -# display with the +# This module provides the ``ctest_coverage_collect_gcov`` function. +# +# This function runs gcov on all .gcda files found in the binary tree +# and packages the resulting .gcov files into a tar file. +# This tarball also contains the following: +# +# * *data.json* defines the source and build directories for use by CDash. +# * *Labels.json* indicates any :prop_sf:`LABELS` that have been set on the +# source files. +# * The *uncovered* directory holds any uncovered files found by +# :variable:`CTEST_EXTRA_COVERAGE_GLOB`. +# +# After generating this tar file, it can be sent to CDash for display with the # :command:`ctest_submit(CDASH_UPLOAD)` command. # # .. command:: cdash_coverage_collect_gcov @@ -99,11 +104,11 @@ function(ctest_coverage_collect_gcov) set(gcda_files) set(label_files) if (GCOV_GLOB) - file(GLOB_RECURSE gfiles RELATIVE ${binary_dir} "*.gcda") + file(GLOB_RECURSE gfiles RELATIVE ${binary_dir} "${binary_dir}/*.gcda") list(LENGTH gfiles len) # if we have gcda files then also grab the labels file for that target if(${len} GREATER 0) - file(GLOB_RECURSE lfiles RELATIVE ${binary_dir} "Labels.json") + file(GLOB_RECURSE lfiles RELATIVE ${binary_dir} "${binary_dir}/Labels.json") list(APPEND gcda_files ${gfiles}) list(APPEND label_files ${lfiles}) endif() @@ -172,6 +177,21 @@ function(ctest_coverage_collect_gcov) set(unfiltered_gcov_files) file(GLOB_RECURSE unfiltered_gcov_files RELATIVE ${binary_dir} "${coverage_dir}/*.gcov") + # if CTEST_EXTRA_COVERAGE_GLOB was specified we search for files + # that might be uncovered + if (DEFINED CTEST_EXTRA_COVERAGE_GLOB) + set(uncovered_files) + foreach(search_entry IN LISTS CTEST_EXTRA_COVERAGE_GLOB) + if(NOT GCOV_QUIET) + message("Add coverage glob: ${search_entry}") + endif() + file(GLOB_RECURSE matching_files "${source_dir}/${search_entry}") + if (matching_files) + list(APPEND uncovered_files "${matching_files}") + endif() + endforeach() + endif() + set(gcov_files) foreach(gcov_file ${unfiltered_gcov_files}) file(STRINGS ${binary_dir}/${gcov_file} first_line LIMIT_COUNT 1 ENCODING UTF-8) @@ -195,20 +215,62 @@ function(ctest_coverage_collect_gcov) endif() endforeach() + get_filename_component(resolved_source_file "${source_file}" ABSOLUTE) + foreach(uncovered_file IN LISTS uncovered_files) + get_filename_component(resolved_uncovered_file "${uncovered_file}" ABSOLUTE) + if (resolved_uncovered_file STREQUAL resolved_source_file) + list(REMOVE_ITEM uncovered_files "${uncovered_file}") + endif() + endforeach() + if(NOT is_excluded) list(APPEND gcov_files ${gcov_file}) endif() endforeach() + foreach (uncovered_file ${uncovered_files}) + # Check if this uncovered file should be excluded. + set(is_excluded false) + foreach(exclude_entry IN LISTS CTEST_CUSTOM_COVERAGE_EXCLUDE) + if(uncovered_file MATCHES "${exclude_entry}") + set(is_excluded true) + if(NOT GCOV_QUIET) + message("Excluding coverage for: ${uncovered_file} which matches ${exclude_entry}") + endif() + break() + endif() + endforeach() + if(is_excluded) + continue() + endif() + + # Copy from source to binary dir, preserving any intermediate subdirectories. + get_filename_component(filename "${uncovered_file}" NAME) + get_filename_component(relative_path "${uncovered_file}" DIRECTORY) + string(REPLACE "${source_dir}" "" relative_path "${relative_path}") + if (relative_path) + # Strip leading slash. + string(SUBSTRING "${relative_path}" 1 -1 relative_path) + endif() + file(COPY ${uncovered_file} DESTINATION ${binary_dir}/uncovered/${relative_path}) + if(relative_path) + list(APPEND uncovered_files_for_tar uncovered/${relative_path}/${filename}) + else() + list(APPEND uncovered_files_for_tar uncovered/${filename}) + endif() + endforeach() + # tar up the coverage info with the same date so that the md5 # sum will be the same for the tar file independent of file time # stamps string(REPLACE ";" "\n" gcov_files "${gcov_files}") string(REPLACE ";" "\n" label_files "${label_files}") + string(REPLACE ";" "\n" uncovered_files_for_tar "${uncovered_files_for_tar}") file(WRITE "${coverage_dir}/coverage_file_list.txt" "${gcov_files} ${coverage_dir}/data.json ${label_files} +${uncovered_files_for_tar} ") if (GCOV_QUIET) @@ -225,10 +287,14 @@ ${label_files} WORKING_DIRECTORY ${binary_dir}) if (GCOV_DELETE) - string(REPLACE "\n" ";" gcov_files "${gcov_files}") - foreach(gcov_file ${gcov_files}) + foreach(gcov_file ${unfiltered_gcov_files}) file(REMOVE ${binary_dir}/${gcov_file}) endforeach() + file(REMOVE ${coverage_dir}/coverage_file_list.txt) + file(REMOVE ${coverage_dir}/data.json) + if (EXISTS ${binary_dir}/uncovered) + file(REMOVE ${binary_dir}/uncovered) + endif() endif() endfunction() diff --git a/Modules/CheckForPthreads.c b/Modules/CheckForPthreads.c index 344c81b..9629a66 100644 --- a/Modules/CheckForPthreads.c +++ b/Modules/CheckForPthreads.c @@ -1,5 +1,5 @@ -#include <stdio.h> #include <pthread.h> +#include <stdio.h> #include <unistd.h> void* runner(void*); diff --git a/Modules/Compiler/Intel-C-FeatureTests.cmake b/Modules/Compiler/Intel-C-FeatureTests.cmake new file mode 100644 index 0000000..34175c8 --- /dev/null +++ b/Modules/Compiler/Intel-C-FeatureTests.cmake @@ -0,0 +1,23 @@ +# References: +# - https://software.intel.com/en-us/articles/iso-iec-standards-language-conformance-for-intel-c-compiler +# - https://software.intel.com/en-us/articles/c99-support-in-intel-c-compiler +# - https://software.intel.com/en-us/articles/c11-support-in-intel-c-compiler + +# FIXME: Intel C feature detection works only when simulating the GNU compiler. +if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC") + return() +endif() + +set(DETECT_C99 "defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L") + +#static assert is only around in version 1500 update 2 and above +set(_cmake_feature_test_c_static_assert "(__INTEL_COMPILER > 1500 || (__INTEL_COMPILER == 1500 && __INTEL_COMPILER_UPDATE > 1) ) && ${DETECT_C99}") + +set(_cmake_oldestSupported "__INTEL_COMPILER >= 1110") +set(Intel_C99 "${_cmake_oldestSupported} && ${DETECT_C99}") +set(_cmake_feature_test_c_restrict "${Intel_C99}") +set(_cmake_feature_test_c_variadic_macros "${Intel_C99}") +set(_cmake_feature_test_c_function_prototypes "${_cmake_oldestSupported}") +unset(Intel_C99) + +unset(DETECT_C99) diff --git a/Modules/Compiler/Intel-C.cmake b/Modules/Compiler/Intel-C.cmake index 77363eb..eb9602a 100644 --- a/Modules/Compiler/Intel-C.cmake +++ b/Modules/Compiler/Intel-C.cmake @@ -8,5 +8,61 @@ set(CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -DNDEBUG") set(CMAKE_DEPFILE_FLAGS_C "-MD -MT <OBJECT> -MF <DEPFILE>") +if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC") + set(_std -Qstd) +else() + set(_std -std) +endif() + +if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0) + set(CMAKE_C11_STANDARD_COMPILE_OPTION "${_std}=c11") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "${_std}=c11") +endif() + +if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1) + set(CMAKE_C90_STANDARD_COMPILE_OPTION "${_std}=c89") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "${_std}=c89") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "${_std}=c99") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "${_std}=c99") +endif() + +if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1) + if (NOT CMAKE_C_COMPILER_FORCED) + if (NOT CMAKE_C_STANDARD_COMPUTED_DEFAULT) + message(FATAL_ERROR "CMAKE_C_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_C_COMPILER_ID} (${CMAKE_C_COMPILER}) version ${CMAKE_C_COMPILER_VERSION}") + endif() + set(CMAKE_C_STANDARD_DEFAULT ${CMAKE_C_STANDARD_COMPUTED_DEFAULT}) + elseif(NOT DEFINED CMAKE_C_STANDARD_DEFAULT) + # Compiler id was forced so just guess the default standard level. + if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0) + set(CMAKE_C_STANDARD_DEFAULT 11) + else() + set(CMAKE_C_STANDARD_DEFAULT 90) + endif() + endif() +endif() + +unset(_std) + +macro(cmake_record_c_compile_features) + macro(_get_intel_c_features std_version list) + record_compiler_features(C "${std_version}" ${list}) + endmacro() + + set(_result 0) + if (NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" AND + NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1) + if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0) + _get_intel_c_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES) + endif() + if (_result EQUAL 0) + _get_intel_c_features(${CMAKE_C99_STANDARD_COMPILE_OPTION} CMAKE_C99_COMPILE_FEATURES) + endif() + if (_result EQUAL 0) + _get_intel_c_features(${CMAKE_C90_STANDARD_COMPILE_OPTION} CMAKE_C90_COMPILE_FEATURES) + endif() + endif() +endmacro() + set(CMAKE_C_CREATE_PREPROCESSED_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") set(CMAKE_C_CREATE_ASSEMBLY_SOURCE "<CMAKE_C_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>") diff --git a/Modules/Compiler/Intel-CXX-FeatureTests.cmake b/Modules/Compiler/Intel-CXX-FeatureTests.cmake new file mode 100644 index 0000000..e111c07 --- /dev/null +++ b/Modules/Compiler/Intel-CXX-FeatureTests.cmake @@ -0,0 +1,96 @@ +# References: +# - https://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler +# - https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler + +# FIXME: Intel C++ feature detection works only when simulating the GNU compiler. +# When simulating MSVC, Intel always sets __cplusplus to 199711L. +if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") + return() +endif() + +# these are not implemented in any version at time of writing +#set(_cmake_feature_test_cxx_variable_templates "${Intel15_CXX14}") +#set(_cmake_feature_test_cxx_relaxed_constexpr "${Intel15_CXX14}") + +set(_cmake_oldestSupported "__INTEL_COMPILER >= 1210") +set(DETECT_CXX11 "((__cplusplus >= 201103L) || defined(__INTEL_CXX11_MODE__) || defined(__GXX_EXPERIMENTAL_CXX0X__))") +#ICC version 15 update 1 has a bug where __cplusplus is defined as 1 no matter +#if you are compiling as 98/11/14. So to properly detect C++14 with this version +#we look for the existence of __GXX_EXPERIMENTAL_CXX0X__ but not __INTEL_CXX11_MODE__ +set(DETECT_BUGGY_ICC15 "((__INTEL_COMPILER == 1500) && (__INTEL_COMPILER_UPDATE == 1))") +set(DETECT_CXX14 "((__cplusplus >= 201300L) || ((__cplusplus == 201103L) && !defined(__INTEL_CXX11_MODE__)) || ((${DETECT_BUGGY_ICC15}) && defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(__INTEL_CXX11_MODE__) ) )") + +set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}") +set(_cmake_feature_test_cxx_aggregate_default_initializers "${Intel16_CXX14}") +set(_cmake_feature_test_cxx_contextual_conversions "${Intel16_CXX14}") +set(_cmake_feature_test_cxx_generic_lambdas "${Intel16_CXX14}") +set(_cmake_feature_test_cxx_digit_separators "${Intel16_CXX14}") +# This test is supposed to work in Intel 14 but the compiler has a bug +# in versions 14 and 15:: +# https://software.intel.com/en-us/forums/intel-c-compiler/topic/600514 +# It also appears to fail with an internal compiler error on Intel 16. +#set(_cmake_feature_test_cxx_generalized_initializers "${Intel16_CXX14}") + +set(Intel15_CXX14 "__INTEL_COMPILER >= 1500 && ${DETECT_CXX14}") +set(_cmake_feature_test_cxx_decltype_auto "${Intel15_CXX14}") +set(_cmake_feature_test_cxx_lambda_init_captures "${Intel15_CXX14}") +set(_cmake_feature_test_cxx_attribute_deprecated "${Intel15_CXX14}") +set(_cmake_feature_test_cxx_return_type_deduction "${Intel15_CXX14}") + +set(Intel15_CXX11 "__INTEL_COMPILER >= 1500 && ${DETECT_CXX11}") +set(_cmake_feature_test_cxx_alignas "${Intel15_CXX11}") +set(_cmake_feature_test_cxx_alignof "${Intel15_CXX11}") +set(_cmake_feature_test_cxx_inheriting_constructors "${Intel15_CXX11}") +set(_cmake_feature_test_cxx_user_literals "${Intel15_CXX11}") +set(_cmake_feature_test_cxx_thread_local "${Intel15_CXX11}") + +set(Intel14_CXX11 "${DETECT_CXX11} && (__INTEL_COMPILER > 1400 || (__INTEL_COMPILER == 1400 && __INTEL_COMPILER_UPDATE >= 2))") +# Documented as 12.0+ but in testing it only works on 14.0.2+ +set(_cmake_feature_test_cxx_decltype_incomplete_return_types "${Intel14_CXX11}") + +set(Intel14_CXX11 "__INTEL_COMPILER >= 1400 && ${DETECT_CXX11}") +set(_cmake_feature_test_cxx_delegating_constructors "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_constexpr "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_sizeof_member "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_strong_enums "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_reference_qualified_functions "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_raw_string_literals "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_unicode_literals "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_inline_namespaces "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_unrestricted_unions "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_nonstatic_member_init "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_enum_forward_declarations "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_override "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_final "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_noexcept "${Intel14_CXX11}") +set(_cmake_feature_test_cxx_defaulted_move_initializers "${Intel14_CXX11}") + +set(Intel13_CXX11 "__INTEL_COMPILER >= 1300 && ${DETECT_CXX11}") +set(_cmake_feature_test_cxx_explicit_conversions "${Intel13_CXX11}") +set(_cmake_feature_test_cxx_range_for "${Intel13_CXX11}") +# Cannot find Intel documentation for N2640: cxx_uniform_initialization +set(_cmake_feature_test_cxx_uniform_initialization "${Intel13_CXX11}") + +set(Intel121_CXX11 "${_cmake_oldestSupported} && ${DETECT_CXX11}") +set(_cmake_feature_test_cxx_variadic_templates "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_alias_templates "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_nullptr "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_trailing_return_types "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_attributes "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_default_function_template_args "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_extended_friend_declarations "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_rvalue_references "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_decltype "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_defaulted_functions "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_deleted_functions "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_local_type_template_args "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_lambdas "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_binary_literals "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_static_assert "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_right_angle_brackets "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_auto_type "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_extern_templates "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_variadic_macros "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_long_long_type "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_func_identifier "${Intel121_CXX11}") +set(_cmake_feature_test_cxx_template_template_parameters "${Intel121_CXX11}") diff --git a/Modules/Compiler/Intel-CXX.cmake b/Modules/Compiler/Intel-CXX.cmake index 02c636c..369e041 100644 --- a/Modules/Compiler/Intel-CXX.cmake +++ b/Modules/Compiler/Intel-CXX.cmake @@ -8,5 +8,69 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g -DNDEBUG") set(CMAKE_DEPFILE_FLAGS_CXX "-MD -MT <OBJECT> -MF <DEPFILE>") +if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") + set(_std -Qstd) +else() + set(_std -std) +endif() + +if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.2) + set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "${_std}=c++14") + # todo: there is no gnu++14 value supported; figure out what to do + set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "${_std}=c++14") +elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.0) + set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "${_std}=c++1y") + # todo: there is no gnu++14 value supported; figure out what to do + set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "${_std}=c++1y") +endif() + +if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0) + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "${_std}=c++11") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "${_std}=gnu++11") +elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1) + set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "${_std}=c++0x") + set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "${_std}=gnu++0x") +endif() + +if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1) + set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "${_std}=c++98") + set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "${_std}=gnu++98") +endif() + +if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1) + if (NOT CMAKE_CXX_COMPILER_FORCED) + if (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT) + message(FATAL_ERROR "CMAKE_CXX_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_CXX_COMPILER_ID} (${CMAKE_CXX_COMPILER}) version ${CMAKE_CXX_COMPILER_VERSION}") + else() + set(CMAKE_CXX_STANDARD_DEFAULT ${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT}) + endif() + elseif (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT) + # Compiler id was forced so just guess the default standard level. + set(CMAKE_CXX_STANDARD_DEFAULT 98) + endif() +endif() + +unset(_std) + +macro(cmake_record_cxx_compile_features) + macro(_get_intel_features std_version list) + record_compiler_features(CXX "${std_version}" ${list}) + endmacro() + + set(_result 0) + if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC" AND + NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1) + if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0) + _get_intel_features(${CMAKE_CXX14_STANDARD_COMPILE_OPTION} CMAKE_CXX14_COMPILE_FEATURES) + endif() + if (_result EQUAL 0) + _get_intel_features(${CMAKE_CXX11_STANDARD_COMPILE_OPTION} CMAKE_CXX11_COMPILE_FEATURES) + endif() + if (_result EQUAL 0) + _get_intel_features(${CMAKE_CXX98_STANDARD_COMPILE_OPTION} CMAKE_CXX98_COMPILE_FEATURES) + endif() + endif() +endmacro() + set(CMAKE_CXX_CREATE_PREPROCESSED_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E <SOURCE> > <PREPROCESSED_SOURCE>") set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S <SOURCE> -o <ASSEMBLY_SOURCE>") diff --git a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake index ad1d14b..79d5962 100644 --- a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake +++ b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake @@ -9,6 +9,10 @@ set(_cmake_oldestSupported "_MSC_VER >= 1600") +# VS 2015 Update 2 introduces support for variable templates. +# https://www.visualstudio.com/en-us/news/vs2015-update2-vs.aspx +set(_cmake_feature_test_cxx_variable_templates "_MSC_FULL_VER >= 190023918") + set(MSVC_2015 "_MSC_VER >= 1900") set(_cmake_feature_test_cxx_alignas "${MSVC_2015}") set(_cmake_feature_test_cxx_alignof "${MSVC_2015}") @@ -95,7 +99,6 @@ set(_cmake_feature_test_cxx_variadic_macros "${MSVC_2010}") # set(_cmake_feature_test_cxx_relaxed_constexpr ) # 'NSDMIs for aggregates' # set(_cmake_feature_test_cxx_aggregate_default_initializers ) -# set(_cmake_feature_test_cxx_variable_templates ) # In theory decltype incomplete return types was added in 2012 # but without support for decltype_auto and return type deduction this diff --git a/Modules/DartConfiguration.tcl.in b/Modules/DartConfiguration.tcl.in index 2da8354..0ff2eed 100644 --- a/Modules/DartConfiguration.tcl.in +++ b/Modules/DartConfiguration.tcl.in @@ -52,6 +52,7 @@ SVNUpdateOptions: @SVN_UPDATE_OPTIONS@ # Git options GITCommand: @GITCOMMAND@ +GITInitSubmodules: @CTEST_GIT_INIT_SUBMODULES@ GITUpdateOptions: @GIT_UPDATE_OPTIONS@ GITUpdateCustom: @CTEST_GIT_UPDATE_CUSTOM@ diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 1185a81..7dad6e5 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -61,6 +61,10 @@ Create custom targets to build projects in external trees The optional name of the remote, default to ``origin`` ``GIT_SUBMODULES <module>...`` Git submodules that shall be updated, all if empty + ``GIT_SHALLOW 1`` + Tell Git to clone with ``--depth 1``. Use when ``GIT_TAG`` is not + specified or when it names a branch in order to download only the + tip of the branch without the rest of its history. ``HG_REPOSITORY <url>`` URL of mercurial repo ``HG_TAG <tag>`` @@ -499,7 +503,12 @@ define_property(DIRECTORY PROPERTY "EP_UPDATE_DISCONNECTED" INHERITED "ExternalProject module." ) -function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name git_submodules src_name work_dir gitclone_infofile gitclone_stampfile) +function(_ep_write_gitclone_script script_filename source_dir git_EXECUTABLE git_repository git_tag git_remote_name git_submodules git_shallow src_name work_dir gitclone_infofile gitclone_stampfile tls_verify) + if(NOT GIT_VERSION_STRING VERSION_LESS 1.7.10) + set(git_clone_shallow_options "--depth 1 --no-single-branch") + else() + set(git_clone_shallow_options "--depth 1") + endif() file(WRITE ${script_filename} "if(\"${git_tag}\" STREQUAL \"\") message(FATAL_ERROR \"Tag for git checkout should not be empty.\") @@ -524,12 +533,28 @@ if(error_code) message(FATAL_ERROR \"Failed to remove directory: '${source_dir}'\") endif() +set(git_options) + +# disable cert checking if explicitly told not to do it +set(tls_verify \"${tls_verify}\") +if(NOT \"x${tls_verify}\" STREQUAL \"x\" AND NOT tls_verify) + list(APPEND git_options + -c http.sslVerify=false) +endif() + +set(git_clone_options) + +set(git_shallow \"${git_shallow}\") +if(git_shallow) + list(APPEND git_clone_options ${git_clone_shallow_options}) +endif() + # try the clone 3 times incase there is an odd git clone issue set(error_code 1) set(number_of_tries 0) while(error_code AND number_of_tries LESS 3) execute_process( - COMMAND \"${git_EXECUTABLE}\" clone --origin \"${git_remote_name}\" \"${git_repository}\" \"${src_name}\" + COMMAND \"${git_EXECUTABLE}\" \${git_options} clone \${git_clone_options} --origin \"${git_remote_name}\" \"${git_repository}\" \"${src_name}\" WORKING_DIRECTORY \"${work_dir}\" RESULT_VARIABLE error_code ) @@ -544,7 +569,7 @@ if(error_code) endif() execute_process( - COMMAND \"${git_EXECUTABLE}\" checkout ${git_tag} + COMMAND \"${git_EXECUTABLE}\" \${git_options} checkout ${git_tag} WORKING_DIRECTORY \"${work_dir}/${src_name}\" RESULT_VARIABLE error_code ) @@ -553,7 +578,7 @@ if(error_code) endif() execute_process( - COMMAND \"${git_EXECUTABLE}\" submodule init ${git_submodules} + COMMAND \"${git_EXECUTABLE}\" \${git_options} submodule init ${git_submodules} WORKING_DIRECTORY \"${work_dir}/${src_name}\" RESULT_VARIABLE error_code ) @@ -562,7 +587,7 @@ if(error_code) endif() execute_process( - COMMAND \"${git_EXECUTABLE}\" submodule update --recursive ${git_submodules} + COMMAND \"${git_EXECUTABLE}\" \${git_options} submodule update --recursive --init ${git_submodules} WORKING_DIRECTORY \"${work_dir}/${src_name}\" RESULT_VARIABLE error_code ) @@ -808,7 +833,7 @@ if(error_code OR is_remote_ref OR NOT (\"\${tag_sha}\" STREQUAL \"\${head_sha}\" endif() execute_process( - COMMAND \"${git_EXECUTABLE}\" submodule update --recursive ${git_submodules} + COMMAND \"${git_EXECUTABLE}\" submodule update --recursive --init ${git_submodules} WORKING_DIRECTORY \"${work_dir}/${src_name}\" RESULT_VARIABLE error_code ) @@ -850,12 +875,15 @@ function(_ep_write_downloadfile_script script_filename remote local timeout no_p set(hash_check "") endif() + set(tls_verify_code "") + set(tls_cainfo_code "") + # check for curl globals in the project if(DEFINED CMAKE_TLS_VERIFY) - set(tls_verify "set(CMAKE_TLS_VERIFY ${CMAKE_TLS_VERIFY})") + set(tls_verify_code "set(CMAKE_TLS_VERIFY ${CMAKE_TLS_VERIFY})") endif() if(DEFINED CMAKE_TLS_CAINFO) - set(tls_cainfo "set(CMAKE_TLS_CAINFO \"${CMAKE_TLS_CAINFO}\")") + set(tls_cainfo_code "set(CMAKE_TLS_CAINFO \"${CMAKE_TLS_CAINFO}\")") endif() # now check for curl locals so that the local values @@ -864,12 +892,12 @@ function(_ep_write_downloadfile_script script_filename remote local timeout no_p # check for tls_verify argument string(LENGTH "${tls_verify}" tls_verify_len) if(tls_verify_len GREATER 0) - set(tls_verify "set(CMAKE_TLS_VERIFY ${tls_verify})") + set(tls_verify_code "set(CMAKE_TLS_VERIFY ${tls_verify})") endif() # check for tls_cainfo argument string(LENGTH "${tls_cainfo}" tls_cainfo_len) if(tls_cainfo_len GREATER 0) - set(tls_cainfo "set(CMAKE_TLS_CAINFO \"${tls_cainfo}\")") + set(tls_cainfo_code "set(CMAKE_TLS_CAINFO \"${tls_cainfo}\")") endif() file(WRITE ${script_filename} @@ -878,8 +906,8 @@ function(_ep_write_downloadfile_script script_filename remote local timeout no_p dst='${local}' timeout='${timeout_msg}'\") -${tls_verify} -${tls_cainfo} +${tls_verify_code} +${tls_cainfo_code} file(DOWNLOAD \"${remote}\" @@ -1777,6 +1805,12 @@ function(_ep_add_download_command name) set(git_remote_name "origin") endif() + get_property(tls_verify TARGET ${name} PROPERTY _EP_TLS_VERIFY) + if("x${tls_verify}" STREQUAL "x" AND DEFINED CMAKE_TLS_VERIFY) + set(tls_verify "${CMAKE_TLS_VERIFY}") + endif() + get_property(git_shallow TARGET ${name} PROPERTY _EP_GIT_SHALLOW) + # For the download step, and the git clone operation, only the repository # should be recorded in a configured RepositoryInfo file. If the repo # changes, the clone script should be run again. But if only the tag @@ -1800,8 +1834,8 @@ function(_ep_add_download_command name) # The script will delete the source directory and then call git clone. # _ep_write_gitclone_script(${tmp_dir}/${name}-gitclone.cmake ${source_dir} - ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} "${git_submodules}" ${src_name} ${work_dir} - ${stamp_dir}/${name}-gitinfo.txt ${stamp_dir}/${name}-gitclone-lastrun.txt + ${GIT_EXECUTABLE} ${git_repository} ${git_tag} ${git_remote_name} "${git_submodules}" "${git_shallow}" ${src_name} ${work_dir} + ${stamp_dir}/${name}-gitinfo.txt ${stamp_dir}/${name}-gitclone-lastrun.txt "${tls_verify}" ) set(comment "Performing download step (git clone) for '${name}'") set(cmd ${CMAKE_COMMAND} -P ${tmp_dir}/${name}-gitclone.cmake) diff --git a/Modules/FindBISON.cmake b/Modules/FindBISON.cmake index 7d81276..69293f5 100644 --- a/Modules/FindBISON.cmake +++ b/Modules/FindBISON.cmake @@ -125,10 +125,10 @@ if(BISON_EXECUTABLE) get_filename_component(BISON_TARGET_output_path "${BisonOutput}" PATH) get_filename_component(BISON_TARGET_output_name "${BisonOutput}" NAME_WE) add_custom_command(OUTPUT ${filename} - COMMAND ${CMAKE_COMMAND} - ARGS -E copy + COMMAND ${CMAKE_COMMAND} -E copy "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output" "${filename}" + VERBATIM DEPENDS "${BISON_TARGET_output_path}/${BISON_TARGET_output_name}.output" COMMENT "[BISON][${Name}] Copying bison verbose table to ${filename}" @@ -201,8 +201,8 @@ if(BISON_EXECUTABLE) add_custom_command(OUTPUT ${BISON_TARGET_outputs} ${BISON_TARGET_extraoutputs} - COMMAND ${BISON_EXECUTABLE} - ARGS ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${BisonInput} + COMMAND ${BISON_EXECUTABLE} ${BISON_TARGET_cmdopt} -o ${BisonOutput} ${BisonInput} + VERBATIM DEPENDS ${BisonInput} COMMENT "[BISON][${Name}] Building parser with bison ${BISON_VERSION}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index 546ada1..728494c 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -59,12 +59,7 @@ set(CMAKE_REQUIRED_QUIET ${BLAS_FIND_QUIETLY}) set(_blas_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) # Check the language being used -get_property( _LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES ) -if( _LANGUAGES_ MATCHES Fortran ) - set( _CHECK_FORTRAN TRUE ) -elseif( (_LANGUAGES_ MATCHES C) OR (_LANGUAGES_ MATCHES CXX) ) - set( _CHECK_FORTRAN FALSE ) -else() +if( NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED) ) if(BLAS_FIND_REQUIRED) message(FATAL_ERROR "FindBLAS requires Fortran, C, or C++ to be enabled.") else() @@ -132,7 +127,7 @@ if(_libraries_work) # Test this combination of libraries. set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_thread}) # message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}") - if (_CHECK_FORTRAN) + if (CMAKE_Fortran_COMPILER_LOADED) check_fortran_function_exists("${_name}" ${_prefix}${_combined_name}_WORKS) else() check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS) @@ -483,7 +478,7 @@ if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") if (NOT WIN32) set(LM "-lm") endif () - if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) + if (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED) if(BLAS_FIND_QUIETLY OR NOT BLAS_FIND_REQUIRED) find_package(Threads) else() diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake index 9e6083db..3d573b8 100644 --- a/Modules/FindBoost.cmake +++ b/Modules/FindBoost.cmake @@ -982,7 +982,7 @@ if(NOT Boost_INCLUDE_DIR) endif() if( Boost_NO_SYSTEM_PATHS) - list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH) + list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH) else() list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS C:/boost/include @@ -1251,7 +1251,7 @@ foreach(c DEBUG RELEASE) ${Boost_INCLUDE_DIR}/stage/lib ) if( Boost_NO_SYSTEM_PATHS ) - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH) + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH) else() list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} PATHS C:/boost/lib @@ -1573,7 +1573,7 @@ endif() # Add imported targets # ------------------------------------------------------------------------ -if(Boost_FOUND AND _Boost_IMPORTED_TARGETS) +if(Boost_FOUND) # For header-only libraries if(NOT TARGET Boost::boost) add_library(Boost::boost INTERFACE IMPORTED) @@ -1584,7 +1584,7 @@ if(Boost_FOUND AND _Boost_IMPORTED_TARGETS) endif() foreach(COMPONENT ${Boost_FIND_COMPONENTS}) - if(NOT TARGET Boost::${COMPONENT}) + if(_Boost_IMPORTED_TARGETS AND NOT TARGET Boost::${COMPONENT}) string(TOUPPER ${COMPONENT} UPPERCOMPONENT) if(Boost_${UPPERCOMPONENT}_FOUND) if(Boost_USE_STATIC_LIBS) diff --git a/Modules/FindFLEX.cmake b/Modules/FindFLEX.cmake index ca66493..b50c74a 100644 --- a/Modules/FindFLEX.cmake +++ b/Modules/FindFLEX.cmake @@ -185,8 +185,8 @@ if(FLEX_EXECUTABLE) endif() add_custom_command(OUTPUT ${FLEX_TARGET_outputs} - COMMAND ${FLEX_EXECUTABLE} - ARGS ${FLEX_EXECUTABLE_opts} -o${Output} ${Input} + COMMAND ${FLEX_EXECUTABLE} ${FLEX_EXECUTABLE_opts} -o${Output} ${Input} + VERBATIM DEPENDS ${Input} COMMENT "[FLEX][${Name}] Building scanner with flex ${FLEX_VERSION}" WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/Modules/FindGSL.cmake b/Modules/FindGSL.cmake index ef125c0..9318a7d 100644 --- a/Modules/FindGSL.cmake +++ b/Modules/FindGSL.cmake @@ -45,7 +45,7 @@ # of GSL installation discovered. These variables may optionally be set to # help this module find the correct files:: # -# GSL_CLBAS_LIBRARY - Location of the GSL CBLAS library. +# GSL_CBLAS_LIBRARY - Location of the GSL CBLAS library. # GSL_CBLAS_LIBRARY_DEBUG - Location of the debug GSL CBLAS library (if any). # GSL_CONFIG_EXECUTABLE - Location of the ``gsl-config`` script (if any). # GSL_LIBRARY - Location of the GSL library. diff --git a/Modules/FindGit.cmake b/Modules/FindGit.cmake index d18f965..95188ce 100644 --- a/Modules/FindGit.cmake +++ b/Modules/FindGit.cmake @@ -45,8 +45,10 @@ if(WIN32) if(NOT CMAKE_GENERATOR MATCHES "MSYS") set(git_names git.cmd git eg.cmd eg) # GitHub search path for Windows - set(github_path "$ENV{LOCALAPPDATA}/Github/PortableGit*/bin") - file(GLOB github_path "${github_path}") + file(GLOB github_path + "$ENV{LOCALAPPDATA}/Github/PortableGit*/cmd" + "$ENV{LOCALAPPDATA}/Github/PortableGit*/bin" + ) # SourceTree search path for Windows set(_git_sourcetree_path "$ENV{LOCALAPPDATA}/Atlassian/SourceTree/git_local/bin") endif() diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake index a129671..17a2aeb 100644 --- a/Modules/FindHDF5.cmake +++ b/Modules/FindHDF5.cmake @@ -484,10 +484,10 @@ if( NOT HDF5_FOUND ) # See https://cmake.org/Bug/view.php?id=1643. We search # first for the full static library name, but fall back to a # generic search on the name if the static search fails. - set( THIS_LIBRARY_SEARCH_DEBUG lib${LIB}d.a ${LIB}d ) + set( THIS_LIBRARY_SEARCH_DEBUG lib${LIB}d.a lib${LIB}_debug.a ${LIB}d ${LIB}_debug ) set( THIS_LIBRARY_SEARCH_RELEASE lib${LIB}.a ${LIB} ) else() - set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ) + set( THIS_LIBRARY_SEARCH_DEBUG ${LIB}d ${LIB}_debug ) set( THIS_LIBRARY_SEARCH_RELEASE ${LIB} ) endif() find_library( HDF5_${LIB}_LIBRARY_DEBUG diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index 2708de0..a6bf89f 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -48,11 +48,20 @@ set(_lapack_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) -get_property(_LANGUAGES_ GLOBAL PROPERTY ENABLED_LANGUAGES) -if (NOT _LANGUAGES_ MATCHES Fortran) -include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake) -else () +# Check the language being used +if( NOT (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED OR CMAKE_Fortran_COMPILER_LOADED) ) + if(LAPACK_FIND_REQUIRED) + message(FATAL_ERROR "FindLAPACK requires Fortran, C, or C++ to be enabled.") + else() + message(STATUS "Looking for LAPACK... - NOT found (Unsupported languages)") + return() + endif() +endif() + +if (CMAKE_Fortran_COMPILER_LOADED) include(${CMAKE_CURRENT_LIST_DIR}/CheckFortranFunctionExists.cmake) +else () +include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake) endif () include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake) @@ -125,7 +134,7 @@ if(_libraries_work) set(CMAKE_REQUIRED_LIBRARIES ${_flags} ${${LIBRARIES}} ${_blas} ${_threads}) endif() # message("DEBUG: CMAKE_REQUIRED_LIBRARIES = ${CMAKE_REQUIRED_LIBRARIES}") - if (NOT _LANGUAGES_ MATCHES Fortran) + if (NOT CMAKE_Fortran_COMPILER_LOADED) check_function_exists("${_name}_" ${_prefix}${_combined_name}_WORKS) else () check_fortran_function_exists(${_name} ${_prefix}${_combined_name}_WORKS) @@ -250,7 +259,7 @@ if (BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") if (NOT WIN32) set(LM "-lm") endif () - if (_LANGUAGES_ MATCHES C OR _LANGUAGES_ MATCHES CXX) + if (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED) if(LAPACK_FIND_QUIETLY OR NOT LAPACK_FIND_REQUIRED) find_PACKAGE(Threads) else() diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 48adf3c..fbc6795 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -11,7 +11,8 @@ # of them have somewhat different include paths, libraries to link # against, etc., and this module tries to smooth out those differences. # -# === Variables === +# Variables +# ^^^^^^^^^ # # This module will set the following variables per language in your # project, where <lang> is one of C, CXX, or Fortran: @@ -37,11 +38,12 @@ # before the executable to run. # MPIEXEC_POSTFLAGS Flags to pass to MPIEXEC after other flags # -# === Usage === +# Usage +# ^^^^^ # # To use this module, simply call FindMPI from a CMakeLists.txt file, or -# run find_package(MPI), then run CMake. If you are happy with the -# auto- detected configuration for your language, then you're done. If +# run ``find_package(MPI)``, then run CMake. If you are happy with the +# auto-detected configuration for your language, then you're done. If # not, you have two options: # # :: @@ -55,24 +57,25 @@ # listed above, but these two are required. This will circumvent # autodetection entirely. # -# When configuration is successful, MPI_<lang>_COMPILER will be set to -# the compiler wrapper for <lang>, if it was found. MPI_<lang>_FOUND +# When configuration is successful, ``MPI_<lang>_COMPILER`` will be set to +# the compiler wrapper for <lang>, if it was found. ``MPI_<lang>_FOUND`` # and other variables above will be set if any MPI implementation was # found for <lang>, regardless of whether a compiler was found. # -# When using MPIEXEC to execute MPI applications, you should typically -# use all of the MPIEXEC flags as follows: +# When using ``MPIEXEC`` to execute MPI applications, you should typically +# use all of the ``MPIEXEC`` flags as follows: # # :: # # ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} PROCS # ${MPIEXEC_PREFLAGS} EXECUTABLE ${MPIEXEC_POSTFLAGS} ARGS # -# where PROCS is the number of processors on which to execute the -# program, EXECUTABLE is the MPI program, and ARGS are the arguments to +# where ``PROCS`` is the number of processors on which to execute the +# program, ``EXECUTABLE`` is the MPI program, and ``ARGS`` are the arguments to # pass to the MPI program. # -# === Backward Compatibility === +# Backward Compatibility +# ^^^^^^^^^^^^^^^^^^^^^^ # # For backward compatibility with older versions of FindMPI, these # variables are set, but deprecated: @@ -83,7 +86,7 @@ # MPI_COMPILE_FLAGS MPI_INCLUDE_PATH MPI_EXTRA_LIBRARY # MPI_LINK_FLAGS MPI_LIBRARIES # -# In new projects, please use the MPI_<lang>_XXX equivalents. +# In new projects, please use the ``MPI_<lang>_XXX`` equivalents. #============================================================================= # Copyright 2001-2011 Kitware, Inc. @@ -354,10 +357,10 @@ function (interrogate_mpi_compiler lang try_libs) endif() # Extract linker paths from the link command line - string(REGEX MATCHALL "(^| |-Wl,)-L([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}") + string(REGEX MATCHALL "(^| |-Wl,)(-L|/LIBPATH:)([^\" ]+|\"[^\"]+\")" MPI_ALL_LINK_PATHS "${MPI_LINK_CMDLINE}") set(MPI_LINK_PATH) foreach(LPATH ${MPI_ALL_LINK_PATHS}) - string(REGEX REPLACE "^(| |-Wl,)-L" "" LPATH ${LPATH}) + string(REGEX REPLACE "^(| |-Wl,)(-L|/LIBPATH:)" "" LPATH ${LPATH}) string(REPLACE "//" "/" LPATH ${LPATH}) list(APPEND MPI_LINK_PATH ${LPATH}) endforeach() @@ -382,6 +385,13 @@ function (interrogate_mpi_compiler lang try_libs) # Extract the set of libraries to link against from the link command # line string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") + if(WIN32) + # The intel wrappers on windows link against static versions of the MPI libraries. + # The static libraries are simply listed on the command line without -l. + # For instance: " icl ... impi.lib " + string(REGEX MATCHALL "(^| )([^\" ]+)\\.lib" tmp "${MPI_LINK_CMDLINE}") + list(APPEND MPI_LIBNAMES ${tmp}) + endif() # add the compiler implicit directories because some compilers # such as the intel compiler have libraries that show up @@ -396,6 +406,10 @@ function (interrogate_mpi_compiler lang try_libs) # to link against in an MPI program foreach(LIB ${MPI_LIBNAMES}) string(REGEX REPLACE "^ ?-l" "" LIB ${LIB}) + if(WIN32) + string(REGEX REPLACE "\\.lib$" "" LIB ${LIB}) + endif() + string(STRIP ${LIB} LIB) # MPI_LIB is cached by find_library, but we don't want that. Clear it first. set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) find_library(MPI_LIB NAMES ${LIB} HINTS ${MPI_LINK_PATH}) diff --git a/Modules/FindOpenSSL.cmake b/Modules/FindOpenSSL.cmake index 8b4b988..8dbaf11 100644 --- a/Modules/FindOpenSSL.cmake +++ b/Modules/FindOpenSSL.cmake @@ -151,6 +151,7 @@ if(WIN32 AND NOT CYGWIN) NAMES libeay32${_OPENSSL_MSVC_RT_MODE}d libeay32d + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES ${_OPENSSL_PATH_SUFFIXES} @@ -160,6 +161,7 @@ if(WIN32 AND NOT CYGWIN) NAMES libeay32${_OPENSSL_MSVC_RT_MODE} libeay32 + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES ${_OPENSSL_PATH_SUFFIXES} @@ -169,6 +171,7 @@ if(WIN32 AND NOT CYGWIN) NAMES ssleay32${_OPENSSL_MSVC_RT_MODE}d ssleay32d + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES ${_OPENSSL_PATH_SUFFIXES} @@ -179,6 +182,7 @@ if(WIN32 AND NOT CYGWIN) ssleay32${_OPENSSL_MSVC_RT_MODE} ssleay32 ssl + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES ${_OPENSSL_PATH_SUFFIXES} @@ -205,6 +209,7 @@ if(WIN32 AND NOT CYGWIN) find_library(LIB_EAY NAMES ${LIB_EAY_NAMES} + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES "lib" @@ -214,6 +219,7 @@ if(WIN32 AND NOT CYGWIN) find_library(SSL_EAY NAMES ${SSL_EAY_NAMES} + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} PATH_SUFFIXES "lib" @@ -231,6 +237,7 @@ if(WIN32 AND NOT CYGWIN) find_library(LIB_EAY NAMES libeay32 + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} HINTS ${_OPENSSL_LIBDIR} @@ -241,6 +248,7 @@ if(WIN32 AND NOT CYGWIN) find_library(SSL_EAY NAMES ssleay32 + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} HINTS ${_OPENSSL_LIBDIR} @@ -260,6 +268,7 @@ else() ssl ssleay32 ssleay32MD + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} HINTS ${_OPENSSL_LIBDIR} @@ -270,6 +279,7 @@ else() find_library(OPENSSL_CRYPTO_LIBRARY NAMES crypto + NAMES_PER_DIR ${_OPENSSL_ROOT_HINTS_AND_PATHS} HINTS ${_OPENSSL_LIBDIR} diff --git a/Modules/GetPrerequisites.cmake b/Modules/GetPrerequisites.cmake index 9ea1281..dd294f4 100644 --- a/Modules/GetPrerequisites.cmake +++ b/Modules/GetPrerequisites.cmake @@ -663,10 +663,21 @@ function(get_prerequisites target prerequisites_var exclude_system recurse exepa endif() set(gp_cmd_paths ${gp_cmd_paths} + "$ENV{VS140COMNTOOLS}/../../VC/bin" + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin" + "$ENV{VS120COMNTOOLS}/../../VC/bin" + "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin" + "$ENV{VS110COMNTOOLS}/../../VC/bin" + "C:/Program Files (x86)/Microsoft Visual Studio 11.0/VC/bin" + "$ENV{VS100COMNTOOLS}/../../VC/bin" + "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" + "$ENV{VS90COMNTOOLS}/../../VC/bin" "C:/Program Files/Microsoft Visual Studio 9.0/VC/bin" "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/bin" + "$ENV{VS80COMNTOOLS}/../../VC/bin" "C:/Program Files/Microsoft Visual Studio 8/VC/BIN" "C:/Program Files (x86)/Microsoft Visual Studio 8/VC/BIN" + "$ENV{VS71COMNTOOLS}/../../VC7/bin" "C:/Program Files/Microsoft Visual Studio .NET 2003/VC7/BIN" "C:/Program Files (x86)/Microsoft Visual Studio .NET 2003/VC7/BIN" "/usr/local/bin" diff --git a/Modules/Platform/Windows-Intel-Fortran.cmake b/Modules/Platform/Windows-Intel-Fortran.cmake index 0f9a10a..1b93db8 100644 --- a/Modules/Platform/Windows-Intel-Fortran.cmake +++ b/Modules/Platform/Windows-Intel-Fortran.cmake @@ -6,6 +6,6 @@ set(CMAKE_Fortran_STANDARD_LIBRARIES_INIT "user32.lib") __windows_compiler_intel(Fortran) set (CMAKE_Fortran_FLAGS_INIT "/W1 /nologo /fpp /libs:dll /threads") set (CMAKE_Fortran_FLAGS_DEBUG_INIT "/Od /debug:full /dbglibs") -set (CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "/O1 /D NDEBUG") -set (CMAKE_Fortran_FLAGS_RELEASE_INIT "/O2 /D NDEBUG") -set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "/O2 /debug:full /D NDEBUG") +set (CMAKE_Fortran_FLAGS_MINSIZEREL_INIT "/O1 /DNDEBUG") +set (CMAKE_Fortran_FLAGS_RELEASE_INIT "/O2 /DNDEBUG") +set (CMAKE_Fortran_FLAGS_RELWITHDEBINFO_INIT "/O2 /debug:full /DNDEBUG") diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake index deaa88e..1920a7c 100644 --- a/Modules/Platform/Windows-MSVC.cmake +++ b/Modules/Platform/Windows-MSVC.cmake @@ -303,15 +303,15 @@ macro(__windows_compiler_msvc lang) # that include MS's own headers. CMake itself is affected project too. set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} -fms-extensions -fms-compatibility -D_WINDOWS -Wall${_FLAGS_${lang}}") set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-D_DEBUG /MDd -gline-tables-only -fno-inline -O0 ${_RTC1}") - set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD -O2 -D NDEBUG") - set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD -gline-tables-only -O2 -fno-inline -D NDEBUG") - set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD -Os -D NDEBUG") + set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD -O2 -DNDEBUG") + set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD -gline-tables-only -O2 -fno-inline -DNDEBUG") + set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD -Os -DNDEBUG") else() set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS /W3${_FLAGS_${lang}}") set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od ${_RTC1}") - set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG") - set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG") - set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG") + set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /DNDEBUG") + set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /DNDEBUG") + set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /DNDEBUG") endif() set(CMAKE_${lang}_LINKER_SUPPORTS_PDB ON) set(CMAKE_NINJA_DEPTYPE_${lang} msvc) diff --git a/Modules/UseJava.cmake b/Modules/UseJava.cmake index 3850890..b59fe34 100644 --- a/Modules/UseJava.cmake +++ b/Modules/UseJava.cmake @@ -389,7 +389,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/CMakeParseArguments.cmake) function (__java_copy_file src dest comment) add_custom_command( OUTPUT ${dest} - COMMAND cmake -E copy_if_different + COMMAND ${CMAKE_COMMAND} -E copy_if_different ARGS ${src} ${dest} DEPENDS ${src} diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake index a3b73bb..2669a84 100644 --- a/Modules/WriteCompilerDetectionHeader.cmake +++ b/Modules/WriteCompilerDetectionHeader.cmake @@ -36,7 +36,7 @@ # PREFIX ClimbingStats # OUTPUT_FILES_VAR support_files # OUTPUT_DIR compilers -# COMPILERS GNU Clang MSVC +# COMPILERS GNU Clang MSVC Intel # FEATURES cxx_variadic_templates # ) # install(FILES @@ -100,7 +100,7 @@ # write_compiler_detection_header( # FILE climbingstats_compiler_detection.h # PREFIX ClimbingStats -# COMPILERS GNU Clang AppleClang MSVC +# COMPILERS GNU Clang AppleClang MSVC Intel # FEATURES cxx_variadic_templates # ) # @@ -323,6 +323,7 @@ function(write_compiler_detection_header AppleClang MSVC SunPro + Intel ) set(_hex_compilers ADSP Borland Embarcadero SunPro) diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index 12f9ce4..a877d10 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 5) -set(CMake_VERSION_PATCH 20160404) +set(CMake_VERSION_PATCH 20160510) #set(CMake_VERSION_RC 1) diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.cxx b/Source/CPack/IFW/cmCPackIFWGenerator.cxx index 50ac971..cf8587c 100644 --- a/Source/CPack/IFW/cmCPackIFWGenerator.cxx +++ b/Source/CPack/IFW/cmCPackIFWGenerator.cxx @@ -12,57 +12,51 @@ #include "cmCPackIFWGenerator.h" -#include "cmCPackIFWPackage.h" #include "cmCPackIFWInstaller.h" +#include "cmCPackIFWPackage.h" -#include <CPack/cmCPackLog.h> #include <CPack/cmCPackComponentGroup.h> +#include <CPack/cmCPackLog.h> -#include <cmsys/SystemTools.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/Directory.hxx> +#include <cmsys/Glob.hxx> #include <cmsys/RegularExpression.hxx> +#include <cmsys/SystemTools.hxx> +#include <cmGeneratedFileStream.h> #include <cmGlobalGenerator.h> -#include <cmSystemTools.h> #include <cmMakefile.h> -#include <cmGeneratedFileStream.h> -#include <cmXMLWriter.h> -#include <cmVersionConfig.h> +#include <cmSystemTools.h> #include <cmTimestamp.h> +#include <cmVersionConfig.h> +#include <cmXMLWriter.h> -//---------------------------------------------------------------------------- cmCPackIFWGenerator::cmCPackIFWGenerator() { } -//---------------------------------------------------------------------------- cmCPackIFWGenerator::~cmCPackIFWGenerator() { } -//---------------------------------------------------------------------------- bool cmCPackIFWGenerator::IsVersionLess(const char *version) { return cmSystemTools::VersionCompare(cmSystemTools::OP_LESS, FrameworkVersion.data(), version); } -//---------------------------------------------------------------------------- bool cmCPackIFWGenerator::IsVersionGreater(const char *version) { return cmSystemTools::VersionCompare(cmSystemTools::OP_GREATER, FrameworkVersion.data(), version); } -//---------------------------------------------------------------------------- bool cmCPackIFWGenerator::IsVersionEqual(const char *version) { return cmSystemTools::VersionCompare(cmSystemTools::OP_EQUAL, FrameworkVersion.data(), version); } -//---------------------------------------------------------------------------- int cmCPackIFWGenerator::PackageFiles() { cmCPackLogger(cmCPackLog::LOG_OUTPUT, "- Configuration" << std::endl); @@ -223,7 +217,6 @@ int cmCPackIFWGenerator::PackageFiles() return 1; } -//---------------------------------------------------------------------------- const char *cmCPackIFWGenerator::GetPackagingInstallPrefix() { const char *defPrefix = cmCPackGenerator::GetPackagingInstallPrefix(); @@ -240,13 +233,11 @@ const char *cmCPackIFWGenerator::GetPackagingInstallPrefix() return this->GetOption("CPACK_IFW_PACKAGING_INSTALL_PREFIX"); } -//---------------------------------------------------------------------------- const char *cmCPackIFWGenerator::GetOutputExtension() { return ExecutableSuffix.c_str(); } -//---------------------------------------------------------------------------- int cmCPackIFWGenerator::InitializeInternal() { // Search Qt Installer Framework tools @@ -367,7 +358,6 @@ int cmCPackIFWGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------------- std::string cmCPackIFWGenerator::GetComponentInstallDirNameSuffix( const std::string& componentName) @@ -384,7 +374,6 @@ cmCPackIFWGenerator::GetComponentInstallDirNameSuffix( + suffix; } -//---------------------------------------------------------------------------- cmCPackComponent* cmCPackIFWGenerator::GetComponent(const std::string &projectName, const std::string &componentName) @@ -433,7 +422,6 @@ cmCPackIFWGenerator::GetComponent(const std::string &projectName, return component; } -//---------------------------------------------------------------------------- cmCPackComponentGroup* cmCPackIFWGenerator::GetComponentGroup(const std::string &projectName, const std::string &groupName) @@ -471,32 +459,27 @@ cmCPackIFWGenerator::GetComponentGroup(const std::string &projectName, return group; } -//---------------------------------------------------------------------------- enum cmCPackGenerator::CPackSetDestdirSupport cmCPackIFWGenerator::SupportsSetDestdir() const { return cmCPackGenerator::SETDESTDIR_SHOULD_NOT_BE_USED; } -//---------------------------------------------------------------------------- bool cmCPackIFWGenerator::SupportsAbsoluteDestination() const { return false; } -//---------------------------------------------------------------------------- bool cmCPackIFWGenerator::SupportsComponentInstallation() const { return true; } -//---------------------------------------------------------------------------- bool cmCPackIFWGenerator::IsOnePackage() const { return componentPackageMethod == ONE_PACKAGE; } -//---------------------------------------------------------------------------- std::string cmCPackIFWGenerator::GetRootPackageName() { // Default value @@ -525,7 +508,6 @@ std::string cmCPackIFWGenerator::GetRootPackageName() return name; } -//---------------------------------------------------------------------------- std::string cmCPackIFWGenerator::GetGroupPackageName(cmCPackComponentGroup *group) const { @@ -556,7 +538,6 @@ cmCPackIFWGenerator::GetGroupPackageName(cmCPackComponentGroup *group) const return name; } -//---------------------------------------------------------------------------- std::string cmCPackIFWGenerator::GetComponentPackageName( cmCPackComponent *component) const { @@ -592,7 +573,6 @@ std::string cmCPackIFWGenerator::GetComponentPackageName( return name; } -//---------------------------------------------------------------------------- cmCPackIFWPackage* cmCPackIFWGenerator::GetGroupPackage( cmCPackComponentGroup *group) const { @@ -601,7 +581,6 @@ cmCPackIFWPackage* cmCPackIFWGenerator::GetGroupPackage( return pit != GroupPackages.end() ? pit->second : 0; } -//---------------------------------------------------------------------------- cmCPackIFWPackage* cmCPackIFWGenerator::GetComponentPackage( cmCPackComponent *component) const { @@ -610,7 +589,6 @@ cmCPackIFWPackage* cmCPackIFWGenerator::GetComponentPackage( return pit != ComponentPackages.end() ? pit->second : 0; } -//---------------------------------------------------------------------------- void cmCPackIFWGenerator::WriteGeneratedByToStrim(cmXMLWriter &xout) { std::stringstream comment; diff --git a/Source/CPack/IFW/cmCPackIFWGenerator.h b/Source/CPack/IFW/cmCPackIFWGenerator.h index 5770451..d02f9d2 100644 --- a/Source/CPack/IFW/cmCPackIFWGenerator.h +++ b/Source/CPack/IFW/cmCPackIFWGenerator.h @@ -15,8 +15,8 @@ #include <CPack/cmCPackGenerator.h> -#include "cmCPackIFWPackage.h" #include "cmCPackIFWInstaller.h" +#include "cmCPackIFWPackage.h" class cmXMLWriter; @@ -61,7 +61,8 @@ public: */ bool IsVersionEqual(const char *version); -protected: // cmCPackGenerator reimplementation +protected: + // cmCPackGenerator reimplementation /** * @brief Initialize generator @@ -110,7 +111,8 @@ protected: // cmCPackGenerator reimplementation virtual bool SupportsAbsoluteDestination() const; virtual bool SupportsComponentInstallation() const; -protected: // Methods +protected: + // Methods bool IsOnePackage() const; @@ -124,7 +126,8 @@ protected: // Methods void WriteGeneratedByToStrim(cmXMLWriter& xout); -protected: // Data +protected: + // Data friend class cmCPackIFWPackage; friend class cmCPackIFWInstaller; diff --git a/Source/CPack/IFW/cmCPackIFWInstaller.cxx b/Source/CPack/IFW/cmCPackIFWInstaller.cxx index 224d606..dfb336c 100644 --- a/Source/CPack/IFW/cmCPackIFWInstaller.cxx +++ b/Source/CPack/IFW/cmCPackIFWInstaller.cxx @@ -32,44 +32,37 @@ } \ } while ( 0 ) -//---------------------------------------------------------------------------- cmCPackIFWInstaller::cmCPackIFWInstaller() : Generator(0) { } -//---------------------------------------------------------------------------- const char *cmCPackIFWInstaller::GetOption(const std::string &op) const { return Generator ? Generator->GetOption(op) : 0; } -//---------------------------------------------------------------------------- bool cmCPackIFWInstaller::IsOn(const std::string &op) const { return Generator ? Generator->IsOn(op) : false; } -//---------------------------------------------------------------------------- bool cmCPackIFWInstaller::IsVersionLess(const char *version) { return Generator ? Generator->IsVersionLess(version) : false; } -//---------------------------------------------------------------------------- bool cmCPackIFWInstaller::IsVersionGreater(const char *version) { return Generator ? Generator->IsVersionGreater(version) : false; } -//---------------------------------------------------------------------------- bool cmCPackIFWInstaller::IsVersionEqual(const char *version) { return Generator ? Generator->IsVersionEqual(version) : false; } -//---------------------------------------------------------------------------- void cmCPackIFWInstaller::ConfigureFromOptions() { // Name; @@ -324,7 +317,6 @@ void cmCPackIFWInstaller::ConfigureFromOptions() } } -//---------------------------------------------------------------------------- void cmCPackIFWInstaller::GenerateInstallerFile() { // Lazy directory initialization @@ -486,7 +478,6 @@ void cmCPackIFWInstaller::GenerateInstallerFile() xout.EndDocument(); } -//---------------------------------------------------------------------------- void cmCPackIFWInstaller::GeneratePackageFiles() { if (Packages.empty() || Generator->IsOnePackage()) diff --git a/Source/CPack/IFW/cmCPackIFWInstaller.h b/Source/CPack/IFW/cmCPackIFWInstaller.h index 04050c0..9cb7d5b 100644 --- a/Source/CPack/IFW/cmCPackIFWInstaller.h +++ b/Source/CPack/IFW/cmCPackIFWInstaller.h @@ -24,7 +24,8 @@ class cmXMLWriter; */ class cmCPackIFWInstaller { -public: // Types +public: + // Types typedef std::map<std::string, cmCPackIFWPackage*> PackagesMap; @@ -37,14 +38,16 @@ public: // Types std::string DisplayName; }; -public: // Constructor +public: + // Constructor /** * Construct installer */ cmCPackIFWInstaller(); -public: // Configuration +public: + // Configuration /// Name of the product being installed std::string Name; @@ -94,7 +97,8 @@ public: // Configuration /// Filename for a custom installer control script std::string ControlScript; -public: // Internal implementation +public: + // Internal implementation const char* GetOption(const std::string& op) const; bool IsOn(const std::string& op) const; diff --git a/Source/CPack/IFW/cmCPackIFWPackage.cxx b/Source/CPack/IFW/cmCPackIFWPackage.cxx index b71c7e3..a22c0b9 100644 --- a/Source/CPack/IFW/cmCPackIFWPackage.cxx +++ b/Source/CPack/IFW/cmCPackIFWPackage.cxx @@ -45,7 +45,6 @@ cmCPackIFWPackage::DependenceStruct::DependenceStruct() { } -//---------------------------------------------------------------------------- cmCPackIFWPackage::DependenceStruct::DependenceStruct( const std::string &dependence) { @@ -79,7 +78,6 @@ cmCPackIFWPackage::DependenceStruct::DependenceStruct( Name = pos == std::string::npos ? dependence : dependence.substr(0, pos); } -//---------------------------------------------------------------------------- std::string cmCPackIFWPackage::DependenceStruct::NameWithCompare() const { if (Compare.Type == CompareNone) return Name; @@ -119,38 +117,32 @@ cmCPackIFWPackage::cmCPackIFWPackage() : { } -//---------------------------------------------------------------------------- const char *cmCPackIFWPackage::GetOption(const std::string &op) const { const char *option = Generator ? Generator->GetOption(op) : 0; return option && *option ? option : 0; } -//---------------------------------------------------------------------------- bool cmCPackIFWPackage::IsOn(const std::string &op) const { return Generator ? Generator->IsOn(op) : false; } -//---------------------------------------------------------------------------- bool cmCPackIFWPackage::IsVersionLess(const char *version) { return Generator ? Generator->IsVersionLess(version) : false; } -//---------------------------------------------------------------------------- bool cmCPackIFWPackage::IsVersionGreater(const char *version) { return Generator ? Generator->IsVersionGreater(version) : false; } -//---------------------------------------------------------------------------- bool cmCPackIFWPackage::IsVersionEqual(const char *version) { return Generator ? Generator->IsVersionEqual(version) : false; } -//---------------------------------------------------------------------------- std::string cmCPackIFWPackage::GetComponentName(cmCPackComponent *component) { if (!component) return ""; @@ -161,7 +153,6 @@ std::string cmCPackIFWPackage::GetComponentName(cmCPackComponent *component) return option ? option : component->Name; } -//---------------------------------------------------------------------------- void cmCPackIFWPackage::DefaultConfiguration() { DisplayName = ""; @@ -176,7 +167,6 @@ void cmCPackIFWPackage::DefaultConfiguration() ForcedInstallation = ""; } -//---------------------------------------------------------------------------- // Defaul configuration (all in one package) int cmCPackIFWPackage::ConfigureFromOptions() { @@ -222,7 +212,6 @@ int cmCPackIFWPackage::ConfigureFromOptions() return 1; } -//---------------------------------------------------------------------------- int cmCPackIFWPackage::ConfigureFromComponent(cmCPackComponent *component) { if(!component) return 0; @@ -329,7 +318,6 @@ int cmCPackIFWPackage::ConfigureFromComponent(cmCPackComponent *component) return 1; } -//---------------------------------------------------------------------------- int cmCPackIFWPackage::ConfigureFromGroup(cmCPackComponentGroup *group) { @@ -389,7 +377,6 @@ cmCPackIFWPackage::ConfigureFromGroup(cmCPackComponentGroup *group) return 1; } -//---------------------------------------------------------------------------- int cmCPackIFWPackage::ConfigureFromGroup(const std::string &groupName) { // Group configuration @@ -431,7 +418,6 @@ int cmCPackIFWPackage::ConfigureFromGroup(const std::string &groupName) return ConfigureFromGroup(&group); } -//---------------------------------------------------------------------------- void cmCPackIFWPackage::GeneratePackageFile() { // Lazy directory initialization diff --git a/Source/CPack/IFW/cmCPackIFWPackage.h b/Source/CPack/IFW/cmCPackIFWPackage.h index e647c16..4f3f40b 100644 --- a/Source/CPack/IFW/cmCPackIFWPackage.h +++ b/Source/CPack/IFW/cmCPackIFWPackage.h @@ -26,7 +26,9 @@ class cmXMLWriter; */ class cmCPackIFWPackage { -public: // Types +public: + // Types + enum CompareTypes { CompareNone = 0x0, @@ -61,14 +63,16 @@ public: // Types } }; -public: // [Con|De]structor +public: + // [Con|De]structor /** * Construct package */ cmCPackIFWPackage(); -public: // Configuration +public: + // Configuration /// Human-readable name of the component std::string DisplayName; @@ -103,7 +107,8 @@ public: // Configuration /// Determines that the package must always be installed std::string ForcedInstallation; -public: // Internal implementation +public: + // Internal implementation const char* GetOption(const std::string& op) const; bool IsOn(const std::string& op) const; diff --git a/Source/CPack/OSXScriptLauncher.cxx b/Source/CPack/OSXScriptLauncher.cxx index c271517..b3ddeee 100644 --- a/Source/CPack/OSXScriptLauncher.cxx +++ b/Source/CPack/OSXScriptLauncher.cxx @@ -9,9 +9,9 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include <cmsys/SystemTools.hxx> -#include <cmsys/Process.h> #include <cmsys/FStream.hxx> +#include <cmsys/Process.h> +#include <cmsys/SystemTools.hxx> #include <iostream> diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.cxx b/Source/CPack/WiX/cmCPackWIXGenerator.cxx index ece327a..a98c684 100644 --- a/Source/CPack/WiX/cmCPackWIXGenerator.cxx +++ b/Source/CPack/WiX/cmCPackWIXGenerator.cxx @@ -12,23 +12,23 @@ #include "cmCPackWIXGenerator.h" -#include <cmSystemTools.h> -#include <cmGeneratedFileStream.h> +#include <CPack/cmCPackComponentGroup.h> +#include <CPack/cmCPackLog.h> #include <cmCryptoHash.h> +#include <cmGeneratedFileStream.h> #include <cmInstalledFile.h> -#include <CPack/cmCPackLog.h> -#include <CPack/cmCPackComponentGroup.h> +#include <cmSystemTools.h> -#include "cmWIXSourceWriter.h" #include "cmWIXDirectoriesSourceWriter.h" #include "cmWIXFeaturesSourceWriter.h" #include "cmWIXFilesSourceWriter.h" #include "cmWIXRichTextFormatWriter.h" +#include "cmWIXSourceWriter.h" -#include <cmsys/SystemTools.hxx> #include <cmsys/Directory.hxx> #include <cmsys/Encoding.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/SystemTools.hxx> #include <rpc.h> // for GUID generation diff --git a/Source/CPack/WiX/cmCPackWIXGenerator.h b/Source/CPack/WiX/cmCPackWIXGenerator.h index 3f66b2c..871527b 100644 --- a/Source/CPack/WiX/cmCPackWIXGenerator.h +++ b/Source/CPack/WiX/cmCPackWIXGenerator.h @@ -13,13 +13,13 @@ #ifndef cmCPackWIXGenerator_h #define cmCPackWIXGenerator_h +#include <CPack/cmCPackGenerator.h> + #include "cmWIXPatch.h" #include "cmWIXShortcut.h" -#include <CPack/cmCPackGenerator.h> - -#include <string> #include <map> +#include <string> class cmWIXSourceWriter; class cmWIXDirectoriesSourceWriter; diff --git a/Source/CPack/WiX/cmWIXAccessControlList.cxx b/Source/CPack/WiX/cmWIXAccessControlList.cxx index fc0d3d3..16a71e0 100644 --- a/Source/CPack/WiX/cmWIXAccessControlList.cxx +++ b/Source/CPack/WiX/cmWIXAccessControlList.cxx @@ -96,6 +96,7 @@ bool cmWIXAccessControlList::IsBooleanAttribute(std::string const& name) { static const char* validAttributes[] = { + /* clang-format needs this comment to break after the opening brace */ "Append", "ChangePermission", "CreateChild", diff --git a/Source/CPack/WiX/cmWIXAccessControlList.h b/Source/CPack/WiX/cmWIXAccessControlList.h index 20902f7..7293995 100644 --- a/Source/CPack/WiX/cmWIXAccessControlList.h +++ b/Source/CPack/WiX/cmWIXAccessControlList.h @@ -13,11 +13,11 @@ #ifndef cmWIXAccessControlList_h #define cmWIXAccessControlList_h -#include <cmInstalledFile.h> -#include <CPack/cmCPackLog.h> - #include "cmWIXSourceWriter.h" +#include <CPack/cmCPackLog.h> +#include <cmInstalledFile.h> + class cmWIXAccessControlList { public: diff --git a/Source/CPack/WiX/cmWIXFeaturesSourceWriter.h b/Source/CPack/WiX/cmWIXFeaturesSourceWriter.h index 7670417..ff12e6c 100644 --- a/Source/CPack/WiX/cmWIXFeaturesSourceWriter.h +++ b/Source/CPack/WiX/cmWIXFeaturesSourceWriter.h @@ -14,6 +14,7 @@ #define cmWIXFeaturesSourceWriter_h #include "cmWIXSourceWriter.h" + #include <CPack/cmCPackGenerator.h> /** \class cmWIXFeaturesSourceWriter diff --git a/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx b/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx index d4698a7..2833d53 100644 --- a/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx +++ b/Source/CPack/WiX/cmWIXFilesSourceWriter.cxx @@ -11,11 +11,13 @@ ============================================================================*/ #include "cmWIXFilesSourceWriter.h" + #include "cmWIXAccessControlList.h" #include <cmInstalledFile.h> #include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> cmWIXFilesSourceWriter::cmWIXFilesSourceWriter(cmCPackLog* logger, diff --git a/Source/CPack/WiX/cmWIXFilesSourceWriter.h b/Source/CPack/WiX/cmWIXFilesSourceWriter.h index c48bc15..734f901 100644 --- a/Source/CPack/WiX/cmWIXFilesSourceWriter.h +++ b/Source/CPack/WiX/cmWIXFilesSourceWriter.h @@ -14,8 +14,9 @@ #define cmWIXFilesSourceWriter_h #include "cmWIXSourceWriter.h" -#include "cmWIXShortcut.h" + #include "cmWIXPatch.h" +#include "cmWIXShortcut.h" #include <CPack/cmCPackGenerator.h> diff --git a/Source/CPack/WiX/cmWIXPatch.h b/Source/CPack/WiX/cmWIXPatch.h index 2f31a01..5b0eb3b 100644 --- a/Source/CPack/WiX/cmWIXPatch.h +++ b/Source/CPack/WiX/cmWIXPatch.h @@ -13,8 +13,8 @@ #ifndef cmWIXPatch_h #define cmWIXPatch_h -#include "cmWIXSourceWriter.h" #include "cmWIXPatchParser.h" +#include "cmWIXSourceWriter.h" #include <string> diff --git a/Source/CPack/WiX/cmWIXPatchParser.h b/Source/CPack/WiX/cmWIXPatchParser.h index acaeae3..8ce4026 100644 --- a/Source/CPack/WiX/cmWIXPatchParser.h +++ b/Source/CPack/WiX/cmWIXPatchParser.h @@ -13,12 +13,12 @@ #ifndef cmCPackWIXPatchParser_h #define cmCPackWIXPatchParser_h -#include <cmXMLParser.h> - #include <CPack/cmCPackLog.h> -#include <map> +#include <cmXMLParser.h> + #include <list> +#include <map> struct cmWIXPatchNode { diff --git a/Source/CPack/WiX/cmWIXRichTextFormatWriter.h b/Source/CPack/WiX/cmWIXRichTextFormatWriter.h index f6327fb..acf1fa6 100644 --- a/Source/CPack/WiX/cmWIXRichTextFormatWriter.h +++ b/Source/CPack/WiX/cmWIXRichTextFormatWriter.h @@ -13,6 +13,8 @@ #ifndef cmWIXRichTextFormatWriter_h #define cmWIXRichTextFormatWriter_h +#include "cmStandardIncludes.h" + #include <cmsys/FStream.hxx> /** \class cmWIXRichtTextFormatWriter diff --git a/Source/CPack/WiX/cmWIXShortcut.h b/Source/CPack/WiX/cmWIXShortcut.h index 5945e43..598aa0d 100644 --- a/Source/CPack/WiX/cmWIXShortcut.h +++ b/Source/CPack/WiX/cmWIXShortcut.h @@ -13,13 +13,13 @@ #ifndef cmWIXShortcut_h #define cmWIXShortcut_h -#include <string> +#include <cmInstalledFile.h> + #include <map> #include <set> +#include <string> #include <vector> -#include <cmInstalledFile.h> - class cmWIXFilesSourceWriter; struct cmWIXShortcut diff --git a/Source/CPack/WiX/cmWIXSourceWriter.cxx b/Source/CPack/WiX/cmWIXSourceWriter.cxx index 63acb27..2e5194c 100644 --- a/Source/CPack/WiX/cmWIXSourceWriter.cxx +++ b/Source/CPack/WiX/cmWIXSourceWriter.cxx @@ -10,8 +10,6 @@ See the License for more information. ============================================================================*/ -#include "cmStandardIncludes.h" - #include "cmWIXSourceWriter.h" #include <CPack/cmCPackGenerator.h> diff --git a/Source/CPack/WiX/cmWIXSourceWriter.h b/Source/CPack/WiX/cmWIXSourceWriter.h index 9e303f0..2bf9674 100644 --- a/Source/CPack/WiX/cmWIXSourceWriter.h +++ b/Source/CPack/WiX/cmWIXSourceWriter.h @@ -13,11 +13,12 @@ #ifndef cmWIXSourceWriter_h #define cmWIXSourceWriter_h -#include <vector> -#include <string> +#include <CPack/cmCPackLog.h> + #include <cmsys/FStream.hxx> -#include <CPack/cmCPackLog.h> +#include <string> +#include <vector> /** \class cmWIXSourceWriter * \brief Helper class to generate XML WiX source files diff --git a/Source/CPack/cmCPack7zGenerator.cxx b/Source/CPack/cmCPack7zGenerator.cxx index 2809e56..06bf7e7 100644 --- a/Source/CPack/cmCPack7zGenerator.cxx +++ b/Source/CPack/cmCPack7zGenerator.cxx @@ -12,14 +12,12 @@ #include "cmCPack7zGenerator.h" -//---------------------------------------------------------------------- cmCPack7zGenerator::cmCPack7zGenerator() :cmCPackArchiveGenerator(cmArchiveWrite::CompressNone, "7zip") { } -//---------------------------------------------------------------------- cmCPack7zGenerator::~cmCPack7zGenerator() { } diff --git a/Source/CPack/cmCPackArchiveGenerator.cxx b/Source/CPack/cmCPackArchiveGenerator.cxx index db985db..05ea1d8 100644 --- a/Source/CPack/cmCPackArchiveGenerator.cxx +++ b/Source/CPack/cmCPackArchiveGenerator.cxx @@ -12,19 +12,18 @@ #include "cmCPackArchiveGenerator.h" -#include "cmake.h" +#include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" -#include "cmCPackLog.h" +#include "cmSystemTools.h" +#include "cmake.h" #include <errno.h> -#include <cmsys/SystemTools.hxx> -#include <cmsys/Directory.hxx> #include <cm_libarchive.h> +#include <cmsys/Directory.hxx> +#include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------- cmCPackArchiveGenerator::cmCPackArchiveGenerator(cmArchiveWrite::Compress t, std::string const& format) { @@ -32,18 +31,15 @@ cmCPackArchiveGenerator::cmCPackArchiveGenerator(cmArchiveWrite::Compress t, this->ArchiveFormat = format; } -//---------------------------------------------------------------------- cmCPackArchiveGenerator::~cmCPackArchiveGenerator() { } -//---------------------------------------------------------------------- int cmCPackArchiveGenerator::InitializeInternal() { this->SetOptionIfNotSet("CPACK_INCLUDE_TOPLEVEL_DIRECTORY", "1"); return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- int cmCPackArchiveGenerator::addOneComponentToArchive(cmArchiveWrite& archive, cmCPackComponent* component) { @@ -118,7 +114,6 @@ if (!archive) \ return 0; \ } -//---------------------------------------------------------------------- int cmCPackArchiveGenerator::PackageComponents(bool ignoreGroup) { packageFileNames.clear(); @@ -220,7 +215,6 @@ int cmCPackArchiveGenerator::PackageComponents(bool ignoreGroup) return 1; } -//---------------------------------------------------------------------- int cmCPackArchiveGenerator::PackageComponentsAllInOne() { // reset the package file names @@ -248,7 +242,6 @@ int cmCPackArchiveGenerator::PackageComponentsAllInOne() return 1; } -//---------------------------------------------------------------------- int cmCPackArchiveGenerator::PackageFiles() { cmCPackLogger(cmCPackLog::LOG_DEBUG, "Toplevel: " @@ -300,7 +293,6 @@ int cmCPackArchiveGenerator::PackageFiles() return 1; } -//---------------------------------------------------------------------- int cmCPackArchiveGenerator::GenerateHeader(std::ostream*) { return 1; diff --git a/Source/CPack/cmCPackArchiveGenerator.h b/Source/CPack/cmCPackArchiveGenerator.h index 16e7632..8b07339 100644 --- a/Source/CPack/cmCPackArchiveGenerator.h +++ b/Source/CPack/cmCPackArchiveGenerator.h @@ -13,9 +13,10 @@ #ifndef cmCPackArchiveGenerator_h #define cmCPackArchiveGenerator_h -#include "cmArchiveWrite.h" #include "cmCPackGenerator.h" +#include "cmArchiveWrite.h" + /** \class cmCPackArchiveGenerator * \brief A generator base for libarchive generation. diff --git a/Source/CPack/cmCPackBundleGenerator.cxx b/Source/CPack/cmCPackBundleGenerator.cxx index b2d7019..6cc48aa 100644 --- a/Source/CPack/cmCPackBundleGenerator.cxx +++ b/Source/CPack/cmCPackBundleGenerator.cxx @@ -11,22 +11,20 @@ ============================================================================*/ #include "cmCPackBundleGenerator.h" + #include "cmCPackLog.h" #include "cmSystemTools.h" #include <cmsys/RegularExpression.hxx> -//---------------------------------------------------------------------- cmCPackBundleGenerator::cmCPackBundleGenerator() { } -//---------------------------------------------------------------------- cmCPackBundleGenerator::~cmCPackBundleGenerator() { } -//---------------------------------------------------------------------- int cmCPackBundleGenerator::InitializeInternal() { const char* name = this->GetOption("CPACK_BUNDLE_NAME"); @@ -57,7 +55,6 @@ int cmCPackBundleGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- const char* cmCPackBundleGenerator::GetPackagingInstallPrefix() { this->InstallPrefix = "/"; @@ -67,7 +64,6 @@ const char* cmCPackBundleGenerator::GetPackagingInstallPrefix() return this->InstallPrefix.c_str(); } -//---------------------------------------------------------------------- int cmCPackBundleGenerator::ConstructBundle() { @@ -183,7 +179,6 @@ int cmCPackBundleGenerator::ConstructBundle() return 1; } -//---------------------------------------------------------------------- int cmCPackBundleGenerator::PackageFiles() { if(!this->ConstructBundle()) diff --git a/Source/CPack/cmCPackComponentGroup.cxx b/Source/CPack/cmCPackComponentGroup.cxx index fd20e9b..88c59f3 100644 --- a/Source/CPack/cmCPackComponentGroup.cxx +++ b/Source/CPack/cmCPackComponentGroup.cxx @@ -11,11 +11,12 @@ ============================================================================*/ #include "cmCPackComponentGroup.h" + #include "cmSystemTools.h" -#include <vector> + #include <string> +#include <vector> -//---------------------------------------------------------------------- unsigned long cmCPackComponent::GetInstalledSize( const std::string& installDir) const { @@ -36,7 +37,6 @@ unsigned long cmCPackComponent::GetInstalledSize( return this->TotalSize; } -//---------------------------------------------------------------------- unsigned long cmCPackComponent::GetInstalledSizeInKbytes(const std::string& installDir) const { diff --git a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx index 1f905c0..a3176e9 100644 --- a/Source/CPack/cmCPackCygwinBinaryGenerator.cxx +++ b/Source/CPack/cmCPackCygwinBinaryGenerator.cxx @@ -12,26 +12,23 @@ #include "cmCPackCygwinBinaryGenerator.h" -#include "cmake.h" +#include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" -#include "cmCPackLog.h" +#include "cmSystemTools.h" +#include "cmake.h" #include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------- cmCPackCygwinBinaryGenerator::cmCPackCygwinBinaryGenerator() { } -//---------------------------------------------------------------------- cmCPackCygwinBinaryGenerator::~cmCPackCygwinBinaryGenerator() { } -//---------------------------------------------------------------------- int cmCPackCygwinBinaryGenerator::InitializeInternal() { this->SetOptionIfNotSet("CPACK_PACKAGING_INSTALL_PREFIX", "/usr"); @@ -39,7 +36,6 @@ int cmCPackCygwinBinaryGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- int cmCPackCygwinBinaryGenerator::PackageFiles() { std::string packageName = this->GetOption("CPACK_PACKAGE_NAME"); diff --git a/Source/CPack/cmCPackCygwinSourceGenerator.cxx b/Source/CPack/cmCPackCygwinSourceGenerator.cxx index f5cb53c..132ebcf 100644 --- a/Source/CPack/cmCPackCygwinSourceGenerator.cxx +++ b/Source/CPack/cmCPackCygwinSourceGenerator.cxx @@ -12,12 +12,12 @@ #include "cmCPackCygwinSourceGenerator.h" -#include "cmake.h" +#include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" -#include "cmCPackLog.h" +#include "cmSystemTools.h" +#include "cmake.h" #include <cmsys/SystemTools.hxx> @@ -25,28 +25,24 @@ // system tools because it is not implemented robustly enough to move // files across directories. #ifdef _WIN32 -# include <windows.h> # include <sys/stat.h> +# include <windows.h> #endif -//---------------------------------------------------------------------- cmCPackCygwinSourceGenerator::cmCPackCygwinSourceGenerator() { } -//---------------------------------------------------------------------- cmCPackCygwinSourceGenerator::~cmCPackCygwinSourceGenerator() { } -//---------------------------------------------------------------------- int cmCPackCygwinSourceGenerator::InitializeInternal() { this->SetOptionIfNotSet("CPACK_INCLUDE_TOPLEVEL_DIRECTORY", "0"); return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- int cmCPackCygwinSourceGenerator::PackageFiles() { // Create a tar file of the sources diff --git a/Source/CPack/cmCPackDebGenerator.cxx b/Source/CPack/cmCPackDebGenerator.cxx index 13c8d8f..0911713 100644 --- a/Source/CPack/cmCPackDebGenerator.cxx +++ b/Source/CPack/cmCPackDebGenerator.cxx @@ -9,16 +9,17 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ + #include "cmCPackDebGenerator.h" -#include "cmSystemTools.h" -#include "cmMakefile.h" -#include "cmGeneratedFileStream.h" -#include "cmCPackLog.h" #include "cmArchiveWrite.h" +#include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" -#include <cmsys/SystemTools.hxx> #include <cmsys/Glob.hxx> +#include <cmsys/SystemTools.hxx> #include <limits.h> // USHRT_MAX #include <sys/stat.h> @@ -31,17 +32,14 @@ // Therefore we provide our own implementation of a BSD-ar: static int ar_append(const char*archive,const std::vector<std::string>& files); -//---------------------------------------------------------------------- cmCPackDebGenerator::cmCPackDebGenerator() { } -//---------------------------------------------------------------------- cmCPackDebGenerator::~cmCPackDebGenerator() { } -//---------------------------------------------------------------------- int cmCPackDebGenerator::InitializeInternal() { this->SetOptionIfNotSet("CPACK_PACKAGING_INSTALL_PREFIX", "/usr"); @@ -52,7 +50,6 @@ int cmCPackDebGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- int cmCPackDebGenerator::PackageOnePack(std::string initialTopLevel, std::string packageName) { @@ -114,7 +111,6 @@ int cmCPackDebGenerator::PackageOnePack(std::string initialTopLevel, return retval; } -//---------------------------------------------------------------------- int cmCPackDebGenerator::PackageComponents(bool ignoreGroup) { int retval = 1; @@ -169,7 +165,6 @@ int cmCPackDebGenerator::PackageComponents(bool ignoreGroup) return retval; } -//---------------------------------------------------------------------- int cmCPackDebGenerator::PackageComponentsAllInOne() { int retval = 1; @@ -242,7 +237,6 @@ int cmCPackDebGenerator::PackageComponentsAllInOne() return retval; } -//---------------------------------------------------------------------- int cmCPackDebGenerator::PackageFiles() { int retval = -1; @@ -760,11 +754,12 @@ std::string cmCPackDebGenerator::GetComponentInstallDirNameSuffix( */ #include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> #include <stdio.h> -#include <string.h> #include <stdlib.h> +#include <string.h> #define ARMAG "!<arch>\n" /* ar "magic number" */ #define SARMAG 8 /* strlen(ARMAG); */ diff --git a/Source/CPack/cmCPackDebGenerator.h b/Source/CPack/cmCPackDebGenerator.h index d678cfa..3d945dd 100644 --- a/Source/CPack/cmCPackDebGenerator.h +++ b/Source/CPack/cmCPackDebGenerator.h @@ -13,7 +13,6 @@ #ifndef cmCPackDebGenerator_h #define cmCPackDebGenerator_h - #include "cmCPackGenerator.h" /** \class cmCPackDebGenerator diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx index d6de77d..ea90c67 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.cxx +++ b/Source/CPack/cmCPackDragNDropGenerator.cxx @@ -11,12 +11,13 @@ ============================================================================*/ #include "cmCPackDragNDropGenerator.h" + #include "cmCPackLog.h" -#include "cmSystemTools.h" #include "cmGeneratedFileStream.h" +#include "cmSystemTools.h" -#include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/RegularExpression.hxx> #include <iomanip> @@ -60,7 +61,6 @@ static const char* SLASTREnglish = "};\n" "\n"; -//---------------------------------------------------------------------- cmCPackDragNDropGenerator::cmCPackDragNDropGenerator() : singleLicense(false) { @@ -68,12 +68,10 @@ cmCPackDragNDropGenerator::cmCPackDragNDropGenerator() this->componentPackageMethod = ONE_PACKAGE; } -//---------------------------------------------------------------------- cmCPackDragNDropGenerator::~cmCPackDragNDropGenerator() { } -//---------------------------------------------------------------------- int cmCPackDragNDropGenerator::InitializeInternal() { // Starting with Xcode 4.3, look in "/Applications/Xcode.app" first: @@ -182,13 +180,11 @@ int cmCPackDragNDropGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- const char* cmCPackDragNDropGenerator::GetOutputExtension() { return ".dmg"; } -//---------------------------------------------------------------------- int cmCPackDragNDropGenerator::PackageFiles() { // gather which directories to make dmg files for @@ -244,7 +240,6 @@ int cmCPackDragNDropGenerator::PackageFiles() return 1; } -//---------------------------------------------------------------------- bool cmCPackDragNDropGenerator::CopyFile(std::ostringstream& source, std::ostringstream& target) { @@ -265,7 +260,6 @@ bool cmCPackDragNDropGenerator::CopyFile(std::ostringstream& source, return true; } -//---------------------------------------------------------------------- bool cmCPackDragNDropGenerator::CreateEmptyFile(std::ostringstream& target, size_t size) { @@ -287,7 +281,6 @@ bool cmCPackDragNDropGenerator::CreateEmptyFile(std::ostringstream& target, return true; } -//---------------------------------------------------------------------- bool cmCPackDragNDropGenerator::RunCommand(std::ostringstream& command, std::string* output) { @@ -314,7 +307,6 @@ bool cmCPackDragNDropGenerator::RunCommand(std::ostringstream& command, return true; } -//---------------------------------------------------------------------- int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, const std::string& output_file) { diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 3eca280..04ee21a 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -12,18 +12,18 @@ #include "cmCPackGenerator.h" -#include "cmMakefile.h" +#include "cmCPackComponentGroup.h" #include "cmCPackLog.h" -#include "cmake.h" -#include "cmGlobalGenerator.h" #include "cmGeneratedFileStream.h" -#include "cmCPackComponentGroup.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" #include "cmXMLSafe.h" +#include "cmake.h" -#include <cmsys/SystemTools.hxx> -#include <cmsys/Glob.hxx> -#include <cmsys/FStream.hxx> #include <algorithm> +#include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <cmsys/SystemTools.hxx> #include <list> #if defined(__HAIKU__) @@ -31,7 +31,6 @@ #include <StorageDefs.h> #endif -//---------------------------------------------------------------------- cmCPackGenerator::cmCPackGenerator() { this->GeneratorVerbose = cmSystemTools::OUTPUT_NONE; @@ -40,20 +39,17 @@ cmCPackGenerator::cmCPackGenerator() this->componentPackageMethod = ONE_PACKAGE_PER_GROUP; } -//---------------------------------------------------------------------- cmCPackGenerator::~cmCPackGenerator() { this->MakefileMap = 0; } -//---------------------------------------------------------------------- void cmCPackGeneratorProgress(const char *msg, float prog, void* ptr) { cmCPackGenerator* self = static_cast<cmCPackGenerator*>(ptr); self->DisplayVerboseOutput(msg, prog); } -//---------------------------------------------------------------------- void cmCPackGenerator::DisplayVerboseOutput(const char* msg, float progress) { @@ -61,7 +57,6 @@ void cmCPackGenerator::DisplayVerboseOutput(const char* msg, cmCPackLogger(cmCPackLog::LOG_VERBOSE, "" << msg << std::endl); } -//---------------------------------------------------------------------- int cmCPackGenerator::PrepareNames() { cmCPackLogger(cmCPackLog::LOG_DEBUG, @@ -185,7 +180,6 @@ int cmCPackGenerator::PrepareNames() return 1; } -//---------------------------------------------------------------------- int cmCPackGenerator::InstallProject() { cmCPackLogger(cmCPackLog::LOG_OUTPUT, "Install projects" << std::endl); @@ -267,7 +261,6 @@ int cmCPackGenerator::InstallProject() return res; } -//---------------------------------------------------------------------- int cmCPackGenerator::InstallProjectViaInstallCommands( bool setDestDir, const std::string& tempInstallDirectory) { @@ -311,7 +304,6 @@ int cmCPackGenerator::InstallProjectViaInstallCommands( return 1; } -//---------------------------------------------------------------------- int cmCPackGenerator::InstallProjectViaInstalledDirectories( bool setDestDir, const std::string& tempInstallDirectory) { @@ -473,7 +465,6 @@ int cmCPackGenerator::InstallProjectViaInstalledDirectories( return 1; } -//---------------------------------------------------------------------- int cmCPackGenerator::InstallProjectViaInstallScript( bool setDestDir, const std::string& tempInstallDirectory) { @@ -540,7 +531,6 @@ int cmCPackGenerator::InstallProjectViaInstallScript( return 1; } -//---------------------------------------------------------------------- int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( bool setDestDir, const std::string& baseTempInstallDirectory) { @@ -983,7 +973,6 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects( return 1; } -//---------------------------------------------------------------------- bool cmCPackGenerator::ReadListFile(const char* moduleName) { bool retval; @@ -994,7 +983,6 @@ bool cmCPackGenerator::ReadListFile(const char* moduleName) return retval; } -//---------------------------------------------------------------------- void cmCPackGenerator::SetOptionIfNotSet(const std::string& op, const char* value) { @@ -1006,7 +994,6 @@ void cmCPackGenerator::SetOptionIfNotSet(const std::string& op, this->SetOption(op, value); } -//---------------------------------------------------------------------- void cmCPackGenerator::SetOption(const std::string& op, const char* value) { if ( !value ) @@ -1019,7 +1006,6 @@ void cmCPackGenerator::SetOption(const std::string& op, const char* value) this->MakefileMap->AddDefinition(op, value); } -//---------------------------------------------------------------------- int cmCPackGenerator::DoPackage() { cmCPackLogger(cmCPackLog::LOG_OUTPUT, @@ -1160,7 +1146,6 @@ int cmCPackGenerator::DoPackage() return 1; } -//---------------------------------------------------------------------- int cmCPackGenerator::Initialize(const std::string& name, cmMakefile* mf) { this->MakefileMap = mf; @@ -1188,25 +1173,21 @@ int cmCPackGenerator::Initialize(const std::string& name, cmMakefile* mf) return result; } -//---------------------------------------------------------------------- int cmCPackGenerator::InitializeInternal() { return 1; } -//---------------------------------------------------------------------- bool cmCPackGenerator::IsSet(const std::string& name) const { return this->MakefileMap->IsSet(name); } -//---------------------------------------------------------------------- bool cmCPackGenerator::IsOn(const std::string& name) const { return cmSystemTools::IsOn(GetOption(name)); } -//---------------------------------------------------------------------- const char* cmCPackGenerator::GetOption(const std::string& op) const { const char* ret = this->MakefileMap->GetDefinition(op); @@ -1220,19 +1201,16 @@ const char* cmCPackGenerator::GetOption(const std::string& op) const return ret; } -//---------------------------------------------------------------------- std::vector<std::string> cmCPackGenerator::GetOptions() const { return this->MakefileMap->GetDefinitions(); } -//---------------------------------------------------------------------- int cmCPackGenerator::PackageFiles() { return 0; } -//---------------------------------------------------------------------- const char* cmCPackGenerator::GetInstallPath() { if ( !this->InstallPath.empty() ) @@ -1275,7 +1253,6 @@ const char* cmCPackGenerator::GetInstallPath() return this->InstallPath.c_str(); } -//---------------------------------------------------------------------- const char* cmCPackGenerator::GetPackagingInstallPrefix() { cmCPackLogger(cmCPackLog::LOG_DEBUG, "GetPackagingInstallPrefix: '" @@ -1284,7 +1261,6 @@ const char* cmCPackGenerator::GetPackagingInstallPrefix() return this->GetOption("CPACK_PACKAGING_INSTALL_PREFIX"); } -//---------------------------------------------------------------------- std::string cmCPackGenerator::FindTemplate(const char* name) { cmCPackLogger(cmCPackLog::LOG_DEBUG, "Look for template: " @@ -1295,7 +1271,6 @@ std::string cmCPackGenerator::FindTemplate(const char* name) return ffile; } -//---------------------------------------------------------------------- bool cmCPackGenerator::ConfigureString(const std::string& inString, std::string& outString) { @@ -1304,7 +1279,6 @@ bool cmCPackGenerator::ConfigureString(const std::string& inString, return true; } -//---------------------------------------------------------------------- bool cmCPackGenerator::ConfigureFile(const char* inName, const char* outName, bool copyOnly /* = false */) { @@ -1312,7 +1286,6 @@ bool cmCPackGenerator::ConfigureFile(const char* inName, copyOnly, true, false) == 1; } -//---------------------------------------------------------------------- int cmCPackGenerator::CleanTemporaryDirectory() { std::string tempInstallDirectoryWithPostfix @@ -1335,7 +1308,6 @@ int cmCPackGenerator::CleanTemporaryDirectory() return 1; } -//---------------------------------------------------------------------- cmInstalledFile const* cmCPackGenerator::GetInstalledFile( std::string const& name) const { @@ -1343,7 +1315,6 @@ cmInstalledFile const* cmCPackGenerator::GetInstalledFile( return cm->GetInstalledFile(name); } -//---------------------------------------------------------------------- int cmCPackGenerator::PrepareGroupingKind() { // find a component package method specified by the user @@ -1440,12 +1411,10 @@ int cmCPackGenerator::PrepareGroupingKind() return 1; } -//---------------------------------------------------------------------- std::string cmCPackGenerator::GetComponentInstallDirNameSuffix( const std::string& componentName) { return componentName; } -//---------------------------------------------------------------------- std::string cmCPackGenerator::GetComponentPackageFileName( const std::string& initialPackageFileName, const std::string& groupOrComponentName, @@ -1486,26 +1455,22 @@ std::string cmCPackGenerator::GetComponentPackageFileName( return initialPackageFileName + suffix; } -//---------------------------------------------------------------------- enum cmCPackGenerator::CPackSetDestdirSupport cmCPackGenerator::SupportsSetDestdir() const { return cmCPackGenerator::SETDESTDIR_SUPPORTED; } -//---------------------------------------------------------------------- bool cmCPackGenerator::SupportsAbsoluteDestination() const { return true; } -//---------------------------------------------------------------------- bool cmCPackGenerator::SupportsComponentInstallation() const { return false; } -//---------------------------------------------------------------------- bool cmCPackGenerator::WantsComponentInstallation() const { return (!IsOn("CPACK_MONOLITHIC_INSTALL") @@ -1514,7 +1479,6 @@ bool cmCPackGenerator::WantsComponentInstallation() const && (!this->ComponentGroups.empty() || !this->Components.empty())); } -//---------------------------------------------------------------------- cmCPackInstallationType* cmCPackGenerator::GetInstallationType(const std::string& projectName, const std::string& name) @@ -1546,7 +1510,6 @@ cmCPackGenerator::GetInstallationType(const std::string& projectName, return installType; } -//---------------------------------------------------------------------- cmCPackComponent* cmCPackGenerator::GetComponent(const std::string& projectName, const std::string& name) @@ -1642,7 +1605,6 @@ cmCPackGenerator::GetComponent(const std::string& projectName, return component; } -//---------------------------------------------------------------------- cmCPackComponentGroup* cmCPackGenerator::GetComponentGroup(const std::string& projectName, const std::string& name) diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h index 907bb1e..3a53d05 100644 --- a/Source/CPack/cmCPackGenerator.h +++ b/Source/CPack/cmCPackGenerator.h @@ -14,6 +14,7 @@ #define cmCPackGenerator_h #include "cmObject.h" + #include "cmSystemTools.h" #include <map> #include <vector> diff --git a/Source/CPack/cmCPackGeneratorFactory.cxx b/Source/CPack/cmCPackGeneratorFactory.cxx index 4626142..5a63dbc 100644 --- a/Source/CPack/cmCPackGeneratorFactory.cxx +++ b/Source/CPack/cmCPackGeneratorFactory.cxx @@ -12,22 +12,22 @@ #include "cmCPackGeneratorFactory.h" +#include "IFW/cmCPackIFWGenerator.h" +#include "cmCPack7zGenerator.h" #include "cmCPackGenerator.h" +#include "cmCPackNSISGenerator.h" +#include "cmCPackSTGZGenerator.h" #include "cmCPackTGZGenerator.h" #include "cmCPackTXZGenerator.h" #include "cmCPackTarBZip2Generator.h" #include "cmCPackTarCompressGenerator.h" #include "cmCPackZIPGenerator.h" -#include "cmCPack7zGenerator.h" -#include "cmCPackSTGZGenerator.h" -#include "cmCPackNSISGenerator.h" -#include "IFW/cmCPackIFWGenerator.h" #ifdef __APPLE__ -# include "cmCPackDragNDropGenerator.h" -# include "cmCPackBundleGenerator.h" -# include "cmCPackPackageMakerGenerator.h" -# include "cmCPackOSXX11Generator.h" +# include "cmCPackBundleGenerator.h" +# include "cmCPackDragNDropGenerator.h" +# include "cmCPackOSXX11Generator.h" +# include "cmCPackPackageMakerGenerator.h" #endif #ifdef __CYGWIN__ @@ -45,11 +45,10 @@ # include "WiX/cmCPackWIXGenerator.h" #endif -#include "cmCPackLog.h" #include "cmAlgorithms.h" +#include "cmCPackLog.h" -//---------------------------------------------------------------------- cmCPackGeneratorFactory::cmCPackGeneratorFactory() { if (cmCPackTGZGenerator::CanGenerate()) @@ -156,13 +155,11 @@ cmCPackGeneratorFactory::cmCPackGeneratorFactory() #endif } -//---------------------------------------------------------------------- cmCPackGeneratorFactory::~cmCPackGeneratorFactory() { cmDeleteAll(this->Generators); } -//---------------------------------------------------------------------- cmCPackGenerator* cmCPackGeneratorFactory::NewGenerator( const std::string& name) { @@ -176,7 +173,6 @@ cmCPackGenerator* cmCPackGeneratorFactory::NewGenerator( return gen; } -//---------------------------------------------------------------------- cmCPackGenerator* cmCPackGeneratorFactory::NewGeneratorInternal( const std::string& name) { @@ -189,7 +185,6 @@ cmCPackGenerator* cmCPackGeneratorFactory::NewGeneratorInternal( return (it->second)(); } -//---------------------------------------------------------------------- void cmCPackGeneratorFactory::RegisterGenerator(const std::string& name, const char* generatorDescription, CreateGeneratorCall* createGenerator) diff --git a/Source/CPack/cmCPackLog.cxx b/Source/CPack/cmCPackLog.cxx index 7633ac2..61d97c8 100644 --- a/Source/CPack/cmCPackLog.cxx +++ b/Source/CPack/cmCPackLog.cxx @@ -15,7 +15,6 @@ #include "cmGeneratedFileStream.h" #include "cmSystemTools.h" -//---------------------------------------------------------------------- cmCPackLog::cmCPackLog() { this->Verbose = false; @@ -33,13 +32,11 @@ cmCPackLog::cmCPackLog() this->LogOutputCleanup = false; } -//---------------------------------------------------------------------- cmCPackLog::~cmCPackLog() { this->SetLogOutputStream(0); } -//---------------------------------------------------------------------- void cmCPackLog::SetLogOutputStream(std::ostream* os) { if ( this->LogOutputCleanup && this->LogOutput ) @@ -50,7 +47,6 @@ void cmCPackLog::SetLogOutputStream(std::ostream* os) this->LogOutput = os; } -//---------------------------------------------------------------------- bool cmCPackLog::SetLogOutputFile(const char* fname) { cmGeneratedFileStream *cg = 0; @@ -72,7 +68,6 @@ bool cmCPackLog::SetLogOutputFile(const char* fname) return true; } -//---------------------------------------------------------------------- void cmCPackLog::Log(int tag, const char* file, int line, const char* msg, size_t length) { diff --git a/Source/CPack/cmCPackNSISGenerator.cxx b/Source/CPack/cmCPackNSISGenerator.cxx index 5ba639f..9d6a457 100644 --- a/Source/CPack/cmCPackNSISGenerator.cxx +++ b/Source/CPack/cmCPackNSISGenerator.cxx @@ -12,17 +12,17 @@ #include "cmCPackNSISGenerator.h" +#include "cmCPackComponentGroup.h" +#include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" -#include "cmCPackLog.h" -#include "cmCPackComponentGroup.h" +#include "cmSystemTools.h" -#include <cmsys/SystemTools.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/Directory.hxx> +#include <cmsys/Glob.hxx> #include <cmsys/RegularExpression.hxx> +#include <cmsys/SystemTools.hxx> /* NSIS uses different command line syntax on Windows and others */ #ifdef _WIN32 @@ -31,18 +31,15 @@ # define NSIS_OPT "-" #endif -//---------------------------------------------------------------------- cmCPackNSISGenerator::cmCPackNSISGenerator(bool nsis64) { Nsis64 = nsis64; } -//---------------------------------------------------------------------- cmCPackNSISGenerator::~cmCPackNSISGenerator() { } -//---------------------------------------------------------------------- int cmCPackNSISGenerator::PackageFiles() { // TODO: Fix nsis to force out file name @@ -361,7 +358,6 @@ int cmCPackNSISGenerator::PackageFiles() return 1; } -//---------------------------------------------------------------------- int cmCPackNSISGenerator::InitializeInternal() { if ( cmSystemTools::IsOn(this->GetOption( @@ -585,7 +581,6 @@ int cmCPackNSISGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- void cmCPackNSISGenerator::CreateMenuLinks( std::ostringstream& str, std::ostringstream& deleteStr) { @@ -663,7 +658,6 @@ void cmCPackNSISGenerator::CreateMenuLinks( std::ostringstream& str, } } -//---------------------------------------------------------------------- bool cmCPackNSISGenerator::GetListOfSubdirectories(const char* topdir, std::vector<std::string>& dirs) { @@ -692,26 +686,22 @@ bool cmCPackNSISGenerator::GetListOfSubdirectories(const char* topdir, return true; } -//---------------------------------------------------------------------- enum cmCPackGenerator::CPackSetDestdirSupport cmCPackNSISGenerator::SupportsSetDestdir() const { return cmCPackGenerator::SETDESTDIR_SHOULD_NOT_BE_USED; } -//---------------------------------------------------------------------- bool cmCPackNSISGenerator::SupportsAbsoluteDestination() const { return false; } -//---------------------------------------------------------------------- bool cmCPackNSISGenerator::SupportsComponentInstallation() const { return true; } -//---------------------------------------------------------------------- std::string cmCPackNSISGenerator:: CreateComponentDescription(cmCPackComponent *component, @@ -881,6 +871,7 @@ CreateComponentDescription(cmCPackComponent *component, totalSizeInKbytes = 1; } std::ostringstream out; + /* clang-format off */ out << " AddSize " << totalSizeInKbytes << "\n" << " Push \"" << component->ArchiveFile << "\"\n" << " Call DownloadFile\n" @@ -890,6 +881,7 @@ CreateComponentDescription(cmCPackComponent *component, " StrCmp $2 \"success\" +2 0\n" " MessageBox MB_OK \"Failed to unzip $2\"\n" " Delete $INSTDIR\\$0\n"; + /* clang-format on */ componentCode += out.str(); } else @@ -944,7 +936,6 @@ CreateComponentDescription(cmCPackComponent *component, return componentCode; } -//---------------------------------------------------------------------- std::string cmCPackNSISGenerator::CreateSelectionDependenciesDescription (cmCPackComponent *component, std::set<cmCPackComponent *>& visited) @@ -976,7 +967,6 @@ std::string cmCPackNSISGenerator::CreateSelectionDependenciesDescription } -//---------------------------------------------------------------------- std::string cmCPackNSISGenerator::CreateDeselectionDependenciesDescription (cmCPackComponent *component, std::set<cmCPackComponent *>& visited) @@ -1009,7 +999,6 @@ std::string cmCPackNSISGenerator::CreateDeselectionDependenciesDescription return out.str(); } -//---------------------------------------------------------------------- std::string cmCPackNSISGenerator:: CreateComponentGroupDescription(cmCPackComponentGroup *group, diff --git a/Source/CPack/cmCPackNSISGenerator.h b/Source/CPack/cmCPackNSISGenerator.h index c7b2ce1..ab8ece4 100644 --- a/Source/CPack/cmCPackNSISGenerator.h +++ b/Source/CPack/cmCPackNSISGenerator.h @@ -13,8 +13,8 @@ #ifndef cmCPackNSISGenerator_h #define cmCPackNSISGenerator_h - #include "cmCPackGenerator.h" + #include <set> /** \class cmCPackNSISGenerator diff --git a/Source/CPack/cmCPackOSXX11Generator.cxx b/Source/CPack/cmCPackOSXX11Generator.cxx index 8940f54..42b8c62 100644 --- a/Source/CPack/cmCPackOSXX11Generator.cxx +++ b/Source/CPack/cmCPackOSXX11Generator.cxx @@ -9,30 +9,28 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ + #include "cmCPackOSXX11Generator.h" -#include "cmake.h" +#include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" -#include "cmCPackLog.h" +#include "cmSystemTools.h" +#include "cmake.h" -#include <cmsys/SystemTools.hxx> #include <cmsys/Glob.hxx> +#include <cmsys/SystemTools.hxx> #include <sys/stat.h> -//---------------------------------------------------------------------- cmCPackOSXX11Generator::cmCPackOSXX11Generator() { } -//---------------------------------------------------------------------- cmCPackOSXX11Generator::~cmCPackOSXX11Generator() { } -//---------------------------------------------------------------------- int cmCPackOSXX11Generator::PackageFiles() { // TODO: Use toplevel ? @@ -205,7 +203,6 @@ int cmCPackOSXX11Generator::PackageFiles() return 1; } -//---------------------------------------------------------------------- int cmCPackOSXX11Generator::InitializeInternal() { cmCPackLogger(cmCPackLog::LOG_DEBUG, @@ -224,7 +221,6 @@ int cmCPackOSXX11Generator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- /* bool cmCPackOSXX11Generator::CopyCreateResourceFile(const std::string& name) { @@ -269,7 +265,6 @@ bool cmCPackOSXX11Generator::CopyCreateResourceFile(const std::string& name) } */ -//---------------------------------------------------------------------- bool cmCPackOSXX11Generator::CopyResourcePlistFile(const std::string& name, const std::string& dir, const char* outputFileName /* = 0 */, bool copyOnly /* = false */) @@ -300,7 +295,6 @@ bool cmCPackOSXX11Generator::CopyResourcePlistFile(const std::string& name, return true; } -//---------------------------------------------------------------------- const char* cmCPackOSXX11Generator::GetPackagingInstallPrefix() { this->InstallPrefix = "/"; diff --git a/Source/CPack/cmCPackPackageMakerGenerator.cxx b/Source/CPack/cmCPackPackageMakerGenerator.cxx index 8fdc036..71a5b12 100644 --- a/Source/CPack/cmCPackPackageMakerGenerator.cxx +++ b/Source/CPack/cmCPackPackageMakerGenerator.cxx @@ -11,17 +11,17 @@ ============================================================================*/ #include "cmCPackPackageMakerGenerator.h" -#include "cmake.h" -#include "cmGlobalGenerator.h" -#include "cmSystemTools.h" -#include "cmMakefile.h" -#include "cmGeneratedFileStream.h" #include "cmCPackComponentGroup.h" #include "cmCPackLog.h" +#include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" +#include "cmake.h" -#include <cmsys/SystemTools.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <cmsys/SystemTools.hxx> #include <assert.h> @@ -32,25 +32,21 @@ unsigned int getVersion(unsigned int major, unsigned int minor) return ((major & 0xFF) << 16 | minor); } -//---------------------------------------------------------------------- cmCPackPackageMakerGenerator::cmCPackPackageMakerGenerator() { this->PackageMakerVersion = 0.0; this->PackageCompatibilityVersion = getVersion(10, 4); } -//---------------------------------------------------------------------- cmCPackPackageMakerGenerator::~cmCPackPackageMakerGenerator() { } -//---------------------------------------------------------------------- bool cmCPackPackageMakerGenerator::SupportsComponentInstallation() const { return this->PackageCompatibilityVersion >= getVersion(10, 4); } -//---------------------------------------------------------------------- int cmCPackPackageMakerGenerator::CopyInstallScript(const std::string& resdir, const std::string& script, const std::string& name) @@ -67,7 +63,6 @@ int cmCPackPackageMakerGenerator::CopyInstallScript(const std::string& resdir, return 1; } -//---------------------------------------------------------------------- int cmCPackPackageMakerGenerator::PackageFiles() { // TODO: Use toplevel @@ -403,7 +398,6 @@ int cmCPackPackageMakerGenerator::PackageFiles() return 1; } -//---------------------------------------------------------------------- int cmCPackPackageMakerGenerator::InitializeInternal() { cmCPackLogger(cmCPackLog::LOG_DEBUG, @@ -567,7 +561,6 @@ int cmCPackPackageMakerGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- bool cmCPackPackageMakerGenerator::CopyCreateResourceFile( const std::string& name, const std::string& dirName) @@ -646,7 +639,6 @@ bool cmCPackPackageMakerGenerator::CopyResourcePlistFile( return true; } -//---------------------------------------------------------------------- bool cmCPackPackageMakerGenerator::RunPackageMaker(const char *command, const char *packageFile) { @@ -695,7 +687,6 @@ bool cmCPackPackageMakerGenerator::RunPackageMaker(const char *command, return true; } -//---------------------------------------------------------------------- std::string cmCPackPackageMakerGenerator::GetPackageName(const cmCPackComponent& component) { @@ -714,7 +705,6 @@ cmCPackPackageMakerGenerator::GetPackageName(const cmCPackComponent& component) } } -//---------------------------------------------------------------------- bool cmCPackPackageMakerGenerator:: GenerateComponentPackage(const char *packageFile, @@ -797,7 +787,6 @@ GenerateComponentPackage(const char *packageFile, return RunPackageMaker(pkgCmd.str().c_str(), packageFile); } -//---------------------------------------------------------------------- void cmCPackPackageMakerGenerator:: WriteDistributionFile(const char* metapackageFile) @@ -875,7 +864,6 @@ WriteDistributionFile(const char* metapackageFile) distributionFile.c_str()); } -//---------------------------------------------------------------------- void cmCPackPackageMakerGenerator:: CreateChoiceOutline(const cmCPackComponentGroup& group, @@ -899,7 +887,6 @@ CreateChoiceOutline(const cmCPackComponentGroup& group, out << "</line>" << std::endl; } -//---------------------------------------------------------------------- void cmCPackPackageMakerGenerator::CreateChoice(const cmCPackComponentGroup& group, std::ostringstream& out) @@ -917,7 +904,6 @@ cmCPackPackageMakerGenerator::CreateChoice(const cmCPackComponentGroup& group, out << "></choice>" << std::endl; } -//---------------------------------------------------------------------- void cmCPackPackageMakerGenerator::CreateChoice(const cmCPackComponent& component, std::ostringstream& out) @@ -1001,7 +987,6 @@ cmCPackPackageMakerGenerator::CreateChoice(const cmCPackComponent& component, out << "</pkg-ref>" << std::endl; } -//---------------------------------------------------------------------- void cmCPackPackageMakerGenerator:: AddDependencyAttributes(const cmCPackComponent& component, @@ -1025,7 +1010,6 @@ AddDependencyAttributes(const cmCPackComponent& component, } } -//---------------------------------------------------------------------- void cmCPackPackageMakerGenerator:: AddReverseDependencyAttributes(const cmCPackComponent& component, @@ -1048,7 +1032,6 @@ AddReverseDependencyAttributes(const cmCPackComponent& component, } } -//---------------------------------------------------------------------- std::string cmCPackPackageMakerGenerator::EscapeForXML(std::string str) { cmSystemTools::ReplaceString(str, "&", "&"); diff --git a/Source/CPack/cmCPackPackageMakerGenerator.h b/Source/CPack/cmCPackPackageMakerGenerator.h index 7d349c6..4e8ff03 100644 --- a/Source/CPack/cmCPackPackageMakerGenerator.h +++ b/Source/CPack/cmCPackPackageMakerGenerator.h @@ -13,7 +13,6 @@ #ifndef cmCPackPackageMakerGenerator_h #define cmCPackPackageMakerGenerator_h - #include "cmCPackGenerator.h" class cmCPackComponent; diff --git a/Source/CPack/cmCPackRPMGenerator.cxx b/Source/CPack/cmCPackRPMGenerator.cxx index 71ab3a0..6349e05 100644 --- a/Source/CPack/cmCPackRPMGenerator.cxx +++ b/Source/CPack/cmCPackRPMGenerator.cxx @@ -10,20 +10,18 @@ See the License for more information. ============================================================================*/ #include "cmCPackRPMGenerator.h" + #include "cmCPackLog.h" #include "cmSystemTools.h" -//---------------------------------------------------------------------- cmCPackRPMGenerator::cmCPackRPMGenerator() { } -//---------------------------------------------------------------------- cmCPackRPMGenerator::~cmCPackRPMGenerator() { } -//---------------------------------------------------------------------- int cmCPackRPMGenerator::InitializeInternal() { this->SetOptionIfNotSet("CPACK_PACKAGING_INSTALL_PREFIX", "/usr"); @@ -49,7 +47,6 @@ int cmCPackRPMGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- int cmCPackRPMGenerator::PackageOnePack(std::string initialToplevel, std::string packageName) { @@ -93,7 +90,6 @@ int cmCPackRPMGenerator::PackageOnePack(std::string initialToplevel, return retval; } -//---------------------------------------------------------------------- int cmCPackRPMGenerator::PackageComponents(bool ignoreGroup) { int retval = 1; @@ -146,7 +142,6 @@ int cmCPackRPMGenerator::PackageComponents(bool ignoreGroup) return retval; } -//---------------------------------------------------------------------- int cmCPackRPMGenerator::PackageComponentsAllInOne() { int retval = 1; @@ -200,7 +195,6 @@ int cmCPackRPMGenerator::PackageComponentsAllInOne() return retval; } -//---------------------------------------------------------------------- int cmCPackRPMGenerator::PackageFiles() { int retval = 1; diff --git a/Source/CPack/cmCPackRPMGenerator.h b/Source/CPack/cmCPackRPMGenerator.h index a7722bc..a4a1ba8 100644 --- a/Source/CPack/cmCPackRPMGenerator.h +++ b/Source/CPack/cmCPackRPMGenerator.h @@ -13,7 +13,6 @@ #ifndef cmCPackRPMGenerator_h #define cmCPackRPMGenerator_h - #include "cmCPackGenerator.h" /** \class cmCPackRPMGenerator diff --git a/Source/CPack/cmCPackSTGZGenerator.cxx b/Source/CPack/cmCPackSTGZGenerator.cxx index 68b893f..41e67c7 100644 --- a/Source/CPack/cmCPackSTGZGenerator.cxx +++ b/Source/CPack/cmCPackSTGZGenerator.cxx @@ -12,27 +12,26 @@ #include "cmCPackSTGZGenerator.h" -#include "cmake.h" +#include "cmCPackLog.h" #include "cmGlobalGenerator.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmCPackLog.h" +#include "cmSystemTools.h" +#include "cmake.h" #include <cmsys/FStream.hxx> + #include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> -//---------------------------------------------------------------------- cmCPackSTGZGenerator::cmCPackSTGZGenerator() { } -//---------------------------------------------------------------------- cmCPackSTGZGenerator::~cmCPackSTGZGenerator() { } -//---------------------------------------------------------------------- int cmCPackSTGZGenerator::InitializeInternal() { this->SetOptionIfNotSet("CPACK_INCLUDE_TOPLEVEL_DIRECTORY", "0"); @@ -50,7 +49,6 @@ int cmCPackSTGZGenerator::InitializeInternal() return this->Superclass::InitializeInternal(); } -//---------------------------------------------------------------------- int cmCPackSTGZGenerator::PackageFiles() { bool retval = true; @@ -79,7 +77,6 @@ int cmCPackSTGZGenerator::PackageFiles() return retval; } -//---------------------------------------------------------------------- int cmCPackSTGZGenerator::GenerateHeader(std::ostream* os) { cmCPackLogger(cmCPackLog::LOG_DEBUG, "Writing header" << std::endl); diff --git a/Source/CPack/cmCPackSTGZGenerator.h b/Source/CPack/cmCPackSTGZGenerator.h index ccceec8..08152b5 100644 --- a/Source/CPack/cmCPackSTGZGenerator.h +++ b/Source/CPack/cmCPackSTGZGenerator.h @@ -13,7 +13,6 @@ #ifndef cmCPackSTGZGenerator_h #define cmCPackSTGZGenerator_h - #include "cmCPackTGZGenerator.h" /** \class cmCPackSTGZGenerator diff --git a/Source/CPack/cmCPackTGZGenerator.cxx b/Source/CPack/cmCPackTGZGenerator.cxx index 3fa2b64..90eb1a3 100644 --- a/Source/CPack/cmCPackTGZGenerator.cxx +++ b/Source/CPack/cmCPackTGZGenerator.cxx @@ -12,14 +12,12 @@ #include "cmCPackTGZGenerator.h" -//---------------------------------------------------------------------- cmCPackTGZGenerator::cmCPackTGZGenerator() :cmCPackArchiveGenerator(cmArchiveWrite::CompressGZip, "paxr") { } -//---------------------------------------------------------------------- cmCPackTGZGenerator::~cmCPackTGZGenerator() { } diff --git a/Source/CPack/cmCPackTXZGenerator.cxx b/Source/CPack/cmCPackTXZGenerator.cxx index 6d4ede1..454e062 100644 --- a/Source/CPack/cmCPackTXZGenerator.cxx +++ b/Source/CPack/cmCPackTXZGenerator.cxx @@ -12,14 +12,12 @@ #include "cmCPackTXZGenerator.h" -//---------------------------------------------------------------------- cmCPackTXZGenerator::cmCPackTXZGenerator() :cmCPackArchiveGenerator(cmArchiveWrite::CompressXZ, "paxr") { } -//---------------------------------------------------------------------- cmCPackTXZGenerator::~cmCPackTXZGenerator() { } diff --git a/Source/CPack/cmCPackTarBZip2Generator.cxx b/Source/CPack/cmCPackTarBZip2Generator.cxx index 9ff588b..b05b399 100644 --- a/Source/CPack/cmCPackTarBZip2Generator.cxx +++ b/Source/CPack/cmCPackTarBZip2Generator.cxx @@ -11,14 +11,13 @@ ============================================================================*/ #include "cmCPackTarBZip2Generator.h" -//---------------------------------------------------------------------- + cmCPackTarBZip2Generator::cmCPackTarBZip2Generator() :cmCPackArchiveGenerator(cmArchiveWrite::CompressBZip2, "paxr") { } -//---------------------------------------------------------------------- cmCPackTarBZip2Generator::~cmCPackTarBZip2Generator() { } diff --git a/Source/CPack/cmCPackTarCompressGenerator.cxx b/Source/CPack/cmCPackTarCompressGenerator.cxx index 1c8311b..ddfe248 100644 --- a/Source/CPack/cmCPackTarCompressGenerator.cxx +++ b/Source/CPack/cmCPackTarCompressGenerator.cxx @@ -12,14 +12,12 @@ #include "cmCPackTarCompressGenerator.h" -//---------------------------------------------------------------------- cmCPackTarCompressGenerator::cmCPackTarCompressGenerator() :cmCPackArchiveGenerator(cmArchiveWrite::CompressCompress, "paxr") { } -//---------------------------------------------------------------------- cmCPackTarCompressGenerator::~cmCPackTarCompressGenerator() { } diff --git a/Source/CPack/cmCPackZIPGenerator.cxx b/Source/CPack/cmCPackZIPGenerator.cxx index 7ef7729..d316ab6 100644 --- a/Source/CPack/cmCPackZIPGenerator.cxx +++ b/Source/CPack/cmCPackZIPGenerator.cxx @@ -12,14 +12,12 @@ #include "cmCPackZIPGenerator.h" -//---------------------------------------------------------------------- cmCPackZIPGenerator::cmCPackZIPGenerator() :cmCPackArchiveGenerator(cmArchiveWrite::CompressNone, "zip") { } -//---------------------------------------------------------------------- cmCPackZIPGenerator::~cmCPackZIPGenerator() { } diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index c08897f..6b2323c 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -12,21 +12,20 @@ #include "cmSystemTools.h" // Need these for documentation support. -#include "cmake.h" -#include "cmDocumentation.h" -#include "cmCPackGeneratorFactory.h" #include "cmCPackGenerator.h" -#include "cmake.h" +#include "cmCPackGeneratorFactory.h" +#include "cmDocumentation.h" #include "cmGlobalGenerator.h" #include "cmMakefile.h" +#include "cmake.h" +#include "cmake.h" #include "cmCPackLog.h" #include <cmsys/CommandLineArguments.hxx> -#include <cmsys/SystemTools.hxx> #include <cmsys/Encoding.hxx> +#include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------------- static const char * cmDocumentationName[][2] = { {0, @@ -34,7 +33,6 @@ static const char * cmDocumentationName[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsage[][2] = { {0, @@ -42,7 +40,6 @@ static const char * cmDocumentationUsage[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationOptions[][2] = { {"-G <generator>", "Use the specified generator to generate package."}, @@ -58,13 +55,11 @@ static const char * cmDocumentationOptions[][2] = {0,0} }; -//---------------------------------------------------------------------------- int cpackUnknownArgument(const char*, void*) { return 1; } -//---------------------------------------------------------------------------- struct cpackDefinitions { typedef std::map<std::string, std::string> MapType; @@ -72,7 +67,6 @@ struct cpackDefinitions cmCPackLog *Log; }; -//---------------------------------------------------------------------------- int cpackDefinitionArgument(const char* argument, const char* cValue, void* call_data) { @@ -95,7 +89,6 @@ int cpackDefinitionArgument(const char* argument, const char* cValue, } -//---------------------------------------------------------------------------- // this is CPack. int main (int argc, char const* const* argv) { diff --git a/Source/CTest/cmCTestBZR.cxx b/Source/CTest/cmCTestBZR.cxx index eb18b70..6dd17b0 100644 --- a/Source/CTest/cmCTestBZR.cxx +++ b/Source/CTest/cmCTestBZR.cxx @@ -19,7 +19,6 @@ #include <cm_expat.h> -//---------------------------------------------------------------------------- extern "C" int cmBZRXMLParserUnknownEncodingHandler(void*, const XML_Char *name, @@ -75,7 +74,6 @@ int cmBZRXMLParserUnknownEncodingHandler(void*, return 0; } -//---------------------------------------------------------------------------- cmCTestBZR::cmCTestBZR(cmCTest* ct, std::ostream& log): cmCTestGlobalVC(ct, log) { @@ -86,12 +84,10 @@ cmCTestBZR::cmCTestBZR(cmCTest* ct, std::ostream& log): cmSystemTools::PutEnv("BZR_PROGRESS_BAR=none"); } -//---------------------------------------------------------------------------- cmCTestBZR::~cmCTestBZR() { } -//---------------------------------------------------------------------------- class cmCTestBZR::InfoParser: public cmCTestVC::LineParser { public: @@ -122,7 +118,6 @@ private: } }; -//---------------------------------------------------------------------------- class cmCTestBZR::RevnoParser: public cmCTestVC::LineParser { public: @@ -145,7 +140,6 @@ private: } }; -//---------------------------------------------------------------------------- std::string cmCTestBZR::LoadInfo() { // Run "bzr info" to get the repository info from the work tree. @@ -174,7 +168,6 @@ void cmCTestBZR::NoteOldRevision() this->PriorRev.Rev = this->OldRevision; } -//---------------------------------------------------------------------------- void cmCTestBZR::NoteNewRevision() { this->NewRevision = this->LoadInfo(); @@ -184,7 +177,6 @@ void cmCTestBZR::NoteNewRevision() this->Log << "URL = " << this->URL << "\n"; } -//---------------------------------------------------------------------------- class cmCTestBZR::LogParser: public cmCTestVC::OutputLogger, private cmXMLParser { @@ -314,7 +306,6 @@ private: } }; -//---------------------------------------------------------------------------- class cmCTestBZR::UpdateParser: public cmCTestVC::LineParser { public: @@ -399,7 +390,6 @@ private: } }; -//---------------------------------------------------------------------------- bool cmCTestBZR::UpdateImpl() { // Get user-specified update options. @@ -433,7 +423,6 @@ bool cmCTestBZR::UpdateImpl() return this->RunUpdateCommand(&bzr_update[0], &out, &err); } -//---------------------------------------------------------------------------- void cmCTestBZR::LoadRevisions() { cmCTestLog(this->CTest, HANDLER_OUTPUT, @@ -465,7 +454,6 @@ void cmCTestBZR::LoadRevisions() cmCTestLog(this->CTest, HANDLER_OUTPUT, std::endl); } -//---------------------------------------------------------------------------- class cmCTestBZR::StatusParser: public cmCTestVC::LineParser { public: @@ -510,7 +498,6 @@ private: } }; -//---------------------------------------------------------------------------- void cmCTestBZR::LoadModifications() { // Run "bzr status" which reports local modifications. diff --git a/Source/CTest/cmCTestBatchTestHandler.cxx b/Source/CTest/cmCTestBatchTestHandler.cxx index d62c260..6127551 100644 --- a/Source/CTest/cmCTestBatchTestHandler.cxx +++ b/Source/CTest/cmCTestBatchTestHandler.cxx @@ -11,9 +11,10 @@ ============================================================================*/ #include "cmCTestBatchTestHandler.h" + +#include "cmCTest.h" #include "cmProcess.h" #include "cmStandardIncludes.h" -#include "cmCTest.h" #include "cmSystemTools.h" #include <stdlib.h> @@ -21,14 +22,12 @@ cmCTestBatchTestHandler::~cmCTestBatchTestHandler() { } -//--------------------------------------------------------- void cmCTestBatchTestHandler::RunTests() { this->WriteBatchScript(); this->SubmitBatchScript(); } -//--------------------------------------------------------- void cmCTestBatchTestHandler::WriteBatchScript() { this->Script = this->CTest->GetBinaryDir() @@ -47,7 +46,6 @@ void cmCTestBatchTestHandler::WriteBatchScript() fout.close(); } -//--------------------------------------------------------- void cmCTestBatchTestHandler::WriteSrunArgs(int test, cmsys::ofstream& fout) { cmCTestTestHandler::cmCTestTestProperties* properties = @@ -78,7 +76,6 @@ void cmCTestBatchTestHandler::WriteSrunArgs(int test, cmsys::ofstream& fout) } } -//--------------------------------------------------------- void cmCTestBatchTestHandler::WriteTestCommand(int test, cmsys::ofstream& fout) { std::vector<std::string> args = this->Properties[test]->Args; @@ -120,7 +117,6 @@ void cmCTestBatchTestHandler::WriteTestCommand(int test, cmsys::ofstream& fout) //this->TestResult.FullCommandLine = this->TestCommand; } -//--------------------------------------------------------- void cmCTestBatchTestHandler::SubmitBatchScript() { cmProcess sbatch; diff --git a/Source/CTest/cmCTestBatchTestHandler.h b/Source/CTest/cmCTestBatchTestHandler.h index e0c6e48..b0fc8d5 100644 --- a/Source/CTest/cmCTestBatchTestHandler.h +++ b/Source/CTest/cmCTestBatchTestHandler.h @@ -14,9 +14,10 @@ #define cmCTestBatchTestHandler_h #include <cmStandardIncludes.h> -#include <cmCTestTestHandler.h> + #include <cmCTestMultiProcessHandler.h> #include <cmCTestRunTest.h> +#include <cmCTestTestHandler.h> #include <cmsys/FStream.hxx> /** \class cmCTestBatchTestHandler diff --git a/Source/CTest/cmCTestBuildAndTestHandler.cxx b/Source/CTest/cmCTestBuildAndTestHandler.cxx index 20d303d..6ea9a89 100644 --- a/Source/CTest/cmCTestBuildAndTestHandler.cxx +++ b/Source/CTest/cmCTestBuildAndTestHandler.cxx @@ -12,14 +12,13 @@ #include "cmCTestBuildAndTestHandler.h" -#include "cmSystemTools.h" #include "cmCTest.h" -#include "cmake.h" +#include "cmCTestTestHandler.h" #include "cmGlobalGenerator.h" +#include "cmSystemTools.h" +#include "cmake.h" #include <cmsys/Process.h> -#include "cmCTestTestHandler.h" -//---------------------------------------------------------------------- cmCTestBuildAndTestHandler::cmCTestBuildAndTestHandler() { this->BuildTwoConfig = false; @@ -28,19 +27,16 @@ cmCTestBuildAndTestHandler::cmCTestBuildAndTestHandler() this->Timeout = 0; } -//---------------------------------------------------------------------- void cmCTestBuildAndTestHandler::Initialize() { this->BuildTargets.clear(); this->Superclass::Initialize(); } -//---------------------------------------------------------------------- const char* cmCTestBuildAndTestHandler::GetOutput() { return this->Output.c_str(); } -//---------------------------------------------------------------------- int cmCTestBuildAndTestHandler::ProcessHandler() { this->Output = ""; @@ -51,7 +47,6 @@ int cmCTestBuildAndTestHandler::ProcessHandler() return retv; } -//---------------------------------------------------------------------- int cmCTestBuildAndTestHandler::RunCMake(std::string* outstring, std::ostringstream &out, std::string &cmakeOutString, std::string &cwd, cmake *cm) @@ -144,7 +139,6 @@ int cmCTestBuildAndTestHandler::RunCMake(std::string* outstring, return 0; } -//---------------------------------------------------------------------- void CMakeMessageCallback(const char* m, const char*, bool&, void* s) { std::string* out = (std::string*)s; @@ -159,14 +153,12 @@ void CMakeProgressCallback(const char*msg, float , void * s) *out += "\n"; } -//---------------------------------------------------------------------- void CMakeOutputCallback(const char* m, size_t len, void* s) { std::string* out = (std::string*)s; out->append(m, len); } -//---------------------------------------------------------------------- class cmCTestBuildAndTestCaptureRAII { cmake& CM; @@ -187,7 +179,6 @@ public: } }; -//---------------------------------------------------------------------- int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) { // if the generator and make program are not specified then it is an error @@ -436,7 +427,6 @@ int cmCTestBuildAndTestHandler::RunCMakeAndTest(std::string* outstring) return retval; } -//---------------------------------------------------------------------- int cmCTestBuildAndTestHandler::ProcessCommandLineArguments( const std::string& currentArg, size_t& idx, const std::vector<std::string>& allArgs) diff --git a/Source/CTest/cmCTestBuildCommand.cxx b/Source/CTest/cmCTestBuildCommand.cxx index 27e22c4..ca3960f 100644 --- a/Source/CTest/cmCTestBuildCommand.cxx +++ b/Source/CTest/cmCTestBuildCommand.cxx @@ -12,13 +12,12 @@ #include "cmCTestBuildCommand.h" #include "cmCTest.h" -#include "cmCTestGenericHandler.h" #include "cmCTestBuildHandler.h" -#include "cmake.h" +#include "cmCTestGenericHandler.h" #include "cmGlobalGenerator.h" +#include "cmake.h" -//---------------------------------------------------------------------------- cmCTestBuildCommand::cmCTestBuildCommand() { this->GlobalGenerator = 0; @@ -32,7 +31,6 @@ cmCTestBuildCommand::cmCTestBuildCommand() this->Last = ctb_LAST; } -//---------------------------------------------------------------------------- cmCTestBuildCommand::~cmCTestBuildCommand() { if ( this->GlobalGenerator ) @@ -42,7 +40,6 @@ cmCTestBuildCommand::~cmCTestBuildCommand() } } -//---------------------------------------------------------------------------- cmCTestGenericHandler* cmCTestBuildCommand::InitializeHandler() { cmCTestGenericHandler* handler @@ -151,6 +148,7 @@ cmCTestGenericHandler* cmCTestBuildCommand::InitializeHandler() else { std::ostringstream ostr; + /* clang-format off */ ostr << "has no project to build. If this is a " "\"built with CMake\" project, verify that CTEST_CMAKE_GENERATOR " "and CTEST_PROJECT_NAME are set." @@ -162,6 +160,7 @@ cmCTestGenericHandler* cmCTestBuildCommand::InitializeHandler() "\n" "Alternatively, set CTEST_BUILD_COMMAND to build the project " "with a custom command line."; + /* clang-format on */ this->SetError(ostr.str()); return 0; } diff --git a/Source/CTest/cmCTestBuildHandler.cxx b/Source/CTest/cmCTestBuildHandler.cxx index 0d74f48..9647968 100644 --- a/Source/CTest/cmCTestBuildHandler.cxx +++ b/Source/CTest/cmCTestBuildHandler.cxx @@ -12,29 +12,29 @@ #include "cmCTestBuildHandler.h" +#include "cmAlgorithms.h" #include "cmCTest.h" -#include "cmake.h" -#include "cmMakefile.h" -#include "cmGlobalGenerator.h" +#include "cmFileTimeComparison.h" #include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" #include "cmXMLWriter.h" -#include "cmFileTimeComparison.h" -#include "cmAlgorithms.h" +#include "cmake.h" //#include <cmsys/RegularExpression.hxx> -#include <cmsys/Process.h> #include <cmsys/Directory.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Process.h> // used for sleep #ifdef _WIN32 #include "windows.h" #endif +#include <float.h> +#include <math.h> #include <stdlib.h> #include <time.h> -#include <math.h> -#include <float.h> static const char* cmCTestErrorMatches[] = { @@ -174,7 +174,6 @@ cmCTestWarningErrorFileLine[] = { { 0, 0, 0 } }; -//---------------------------------------------------------------------- cmCTestBuildHandler::cmCTestBuildHandler() { this->MaxPreContext = 10; @@ -188,7 +187,6 @@ cmCTestBuildHandler::cmCTestBuildHandler() this->UseCTestLaunch = false; } -//---------------------------------------------------------------------- void cmCTestBuildHandler::Initialize() { this->Superclass::Initialize(); @@ -234,7 +232,6 @@ void cmCTestBuildHandler::Initialize() this->UseCTestLaunch = false; } -//---------------------------------------------------------------------- void cmCTestBuildHandler::PopulateCustomVectors(cmMakefile *mf) { this->CTest->PopulateCustomVector(mf, "CTEST_CUSTOM_ERROR_MATCH", @@ -281,7 +278,6 @@ void cmCTestBuildHandler::PopulateCustomVectors(cmMakefile *mf) } } -//---------------------------------------------------------------------- std::string cmCTestBuildHandler::GetMakeCommand() { std::string makeCommand @@ -307,7 +303,6 @@ std::string cmCTestBuildHandler::GetMakeCommand() return makeCommand; } -//---------------------------------------------------------------------- //clearly it would be nice if this were broken up into a few smaller //functions and commented... int cmCTestBuildHandler::ProcessHandler() @@ -551,7 +546,6 @@ int cmCTestBuildHandler::ProcessHandler() return retVal; } -//---------------------------------------------------------------------------- void cmCTestBuildHandler::GenerateXMLHeader(cmXMLWriter& xml) { this->CTest->StartXML(xml, this->AppendXML); @@ -562,7 +556,6 @@ void cmCTestBuildHandler::GenerateXMLHeader(cmXMLWriter& xml) xml.Element("BuildCommand", this->GetMakeCommand()); } -//---------------------------------------------------------------------------- class cmCTestBuildHandler::FragmentCompare { public: @@ -587,7 +580,6 @@ private: cmFileTimeComparison* FTC; }; -//---------------------------------------------------------------------------- void cmCTestBuildHandler::GenerateXMLLaunched(cmXMLWriter& xml) { if(this->CTestLaunchDir.empty()) @@ -633,7 +625,6 @@ void cmCTestBuildHandler::GenerateXMLLaunched(cmXMLWriter& xml) } } -//---------------------------------------------------------------------------- void cmCTestBuildHandler::GenerateXMLLogScraped(cmXMLWriter& xml) { std::vector<cmCTestBuildErrorWarning>& ew = this->ErrorsAndWarnings; @@ -730,7 +721,6 @@ void cmCTestBuildHandler::GenerateXMLLogScraped(cmXMLWriter& xml) } } -//---------------------------------------------------------------------------- void cmCTestBuildHandler::GenerateXMLFooter(cmXMLWriter& xml, double elapsed_build_time) { @@ -746,7 +736,6 @@ void cmCTestBuildHandler::GenerateXMLFooter(cmXMLWriter& xml, this->CTest->EndXML(xml); } -//---------------------------------------------------------------------------- bool cmCTestBuildHandler::IsLaunchedErrorFile(const char* fname) { // error-{hash}.xml @@ -754,7 +743,6 @@ bool cmCTestBuildHandler::IsLaunchedErrorFile(const char* fname) strcmp(fname+strlen(fname)-4, ".xml") == 0); } -//---------------------------------------------------------------------------- bool cmCTestBuildHandler::IsLaunchedWarningFile(const char* fname) { // warning-{hash}.xml @@ -767,7 +755,6 @@ bool cmCTestBuildHandler::IsLaunchedWarningFile(const char* fname) //###################################################################### //###################################################################### -//---------------------------------------------------------------------------- class cmCTestBuildHandler::LaunchHelper { public: @@ -782,7 +769,6 @@ private: std::vector<std::string> const& matchers); }; -//---------------------------------------------------------------------------- cmCTestBuildHandler::LaunchHelper::LaunchHelper(cmCTestBuildHandler* handler): Handler(handler), CTest(handler->CTest) { @@ -823,7 +809,6 @@ cmCTestBuildHandler::LaunchHelper::LaunchHelper(cmCTestBuildHandler* handler): } } -//---------------------------------------------------------------------------- cmCTestBuildHandler::LaunchHelper::~LaunchHelper() { if(this->Handler->UseCTestLaunch) @@ -832,7 +817,6 @@ cmCTestBuildHandler::LaunchHelper::~LaunchHelper() } } -//---------------------------------------------------------------------------- void cmCTestBuildHandler::LaunchHelper::WriteLauncherConfig() { this->WriteScrapeMatchers("Warning", @@ -848,7 +832,6 @@ void cmCTestBuildHandler::LaunchHelper::WriteLauncherConfig() fout << "set(CTEST_SOURCE_DIRECTORY \"" << srcdir << "\")\n"; } -//---------------------------------------------------------------------------- void cmCTestBuildHandler::LaunchHelper ::WriteScrapeMatchers(const char* purpose, @@ -870,7 +853,6 @@ cmCTestBuildHandler::LaunchHelper } } -//---------------------------------------------------------------------- int cmCTestBuildHandler::RunMakeCommand(const char* command, int* retVal, const char* dir, int timeout, std::ostream& ofs) { @@ -1039,7 +1021,6 @@ int cmCTestBuildHandler::RunMakeCommand(const char* command, //###################################################################### //###################################################################### -//---------------------------------------------------------------------- void cmCTestBuildHandler::ProcessBuffer(const char* data, int length, size_t& tick, size_t tick_len, std::ostream& ofs, t_BuildProcessingQueueType* queue) @@ -1197,7 +1178,6 @@ void cmCTestBuildHandler::ProcessBuffer(const char* data, int length, ofs << cmCTestLogWrite(data, length); } -//---------------------------------------------------------------------- int cmCTestBuildHandler::ProcessSingleLine(const char* data) { if(this->UseCTestLaunch) diff --git a/Source/CTest/cmCTestBuildHandler.h b/Source/CTest/cmCTestBuildHandler.h index 2e9b92a..9231170 100644 --- a/Source/CTest/cmCTestBuildHandler.h +++ b/Source/CTest/cmCTestBuildHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestBuildHandler_h #define cmCTestBuildHandler_h - #include "cmCTestGenericHandler.h" + #include "cmListFileCache.h" #include <cmsys/RegularExpression.hxx> diff --git a/Source/CTest/cmCTestCVS.cxx b/Source/CTest/cmCTestCVS.cxx index 0fb3fec..7ab87c2 100644 --- a/Source/CTest/cmCTestCVS.cxx +++ b/Source/CTest/cmCTestCVS.cxx @@ -15,20 +15,17 @@ #include "cmSystemTools.h" #include "cmXMLWriter.h" -#include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/RegularExpression.hxx> -//---------------------------------------------------------------------------- cmCTestCVS::cmCTestCVS(cmCTest* ct, std::ostream& log): cmCTestVC(ct, log) { } -//---------------------------------------------------------------------------- cmCTestCVS::~cmCTestCVS() { } -//---------------------------------------------------------------------------- class cmCTestCVS::UpdateParser: public cmCTestVC::LineParser { public: @@ -86,7 +83,6 @@ private: } }; -//---------------------------------------------------------------------------- bool cmCTestCVS::UpdateImpl() { // Get user-specified update options. @@ -124,7 +120,6 @@ bool cmCTestCVS::UpdateImpl() return this->RunUpdateCommand(&cvs_update[0], &out, &err); } -//---------------------------------------------------------------------------- class cmCTestCVS::LogParser: public cmCTestVC::LineParser { public: @@ -203,9 +198,11 @@ private: if(!this->Rev.Rev.empty()) { // Record this revision. + /* clang-format off */ this->CVS->Log << "Found revision " << this->Rev.Rev << "\n" << " author = " << this->Rev.Author << "\n" << " date = " << this->Rev.Date << "\n"; + /* clang-format on */ this->Revisions.push_back(this->Rev); // We only need two revisions. @@ -218,7 +215,6 @@ private: } }; -//---------------------------------------------------------------------------- std::string cmCTestCVS::ComputeBranchFlag(std::string const& dir) { // Compute the tag file location for this directory. @@ -248,7 +244,6 @@ std::string cmCTestCVS::ComputeBranchFlag(std::string const& dir) } } -//---------------------------------------------------------------------------- void cmCTestCVS::LoadRevisions(std::string const& file, const char* branchFlag, std::vector<Revision>& revisions) @@ -265,7 +260,6 @@ void cmCTestCVS::LoadRevisions(std::string const& file, this->RunChild(cvs_log, &out, &err); } -//---------------------------------------------------------------------------- void cmCTestCVS::WriteXMLDirectory(cmXMLWriter& xml, std::string const& path, Directory const& dir) @@ -301,7 +295,6 @@ void cmCTestCVS::WriteXMLDirectory(cmXMLWriter& xml, xml.EndElement(); // Directory } -//---------------------------------------------------------------------------- bool cmCTestCVS::WriteXMLUpdates(cmXMLWriter& xml) { cmCTestLog(this->CTest, HANDLER_OUTPUT, diff --git a/Source/CTest/cmCTestConfigureCommand.cxx b/Source/CTest/cmCTestConfigureCommand.cxx index ba4dab2..8f15c6d 100644 --- a/Source/CTest/cmCTestConfigureCommand.cxx +++ b/Source/CTest/cmCTestConfigureCommand.cxx @@ -11,9 +11,9 @@ ============================================================================*/ #include "cmCTestConfigureCommand.h" -#include "cmGlobalGenerator.h" #include "cmCTest.h" #include "cmCTestGenericHandler.h" +#include "cmGlobalGenerator.h" cmCTestConfigureCommand::cmCTestConfigureCommand() { diff --git a/Source/CTest/cmCTestConfigureHandler.cxx b/Source/CTest/cmCTestConfigureHandler.cxx index 2e8aeb9..ea4cf72 100644 --- a/Source/CTest/cmCTestConfigureHandler.cxx +++ b/Source/CTest/cmCTestConfigureHandler.cxx @@ -14,23 +14,20 @@ #include "cmCTest.h" #include "cmGeneratedFileStream.h" -#include "cmake.h" #include "cmXMLWriter.h" +#include "cmake.h" #include <cmsys/Process.h> -//---------------------------------------------------------------------- cmCTestConfigureHandler::cmCTestConfigureHandler() { } -//---------------------------------------------------------------------- void cmCTestConfigureHandler::Initialize() { this->Superclass::Initialize(); } -//---------------------------------------------------------------------- //clearly it would be nice if this were broken up into a few smaller //functions and commented... int cmCTestConfigureHandler::ProcessHandler() diff --git a/Source/CTest/cmCTestConfigureHandler.h b/Source/CTest/cmCTestConfigureHandler.h index d880bd7..4c1a96b 100644 --- a/Source/CTest/cmCTestConfigureHandler.h +++ b/Source/CTest/cmCTestConfigureHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestConfigureHandler_h #define cmCTestConfigureHandler_h - #include "cmCTestGenericHandler.h" + #include "cmListFileCache.h" /** \class cmCTestConfigureHandler diff --git a/Source/CTest/cmCTestCoverageCommand.cxx b/Source/CTest/cmCTestCoverageCommand.cxx index f1f935b..bf6a321 100644 --- a/Source/CTest/cmCTestCoverageCommand.cxx +++ b/Source/CTest/cmCTestCoverageCommand.cxx @@ -14,13 +14,11 @@ #include "cmCTest.h" #include "cmCTestCoverageHandler.h" -//---------------------------------------------------------------------------- cmCTestCoverageCommand::cmCTestCoverageCommand() { this->LabelsMentioned = false; } -//---------------------------------------------------------------------------- cmCTestGenericHandler* cmCTestCoverageCommand::InitializeHandler() { this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, @@ -45,7 +43,6 @@ cmCTestGenericHandler* cmCTestCoverageCommand::InitializeHandler() return handler; } -//---------------------------------------------------------------------------- bool cmCTestCoverageCommand::CheckArgumentKeyword(std::string const& arg) { // Look for arguments specific to this command. @@ -60,7 +57,6 @@ bool cmCTestCoverageCommand::CheckArgumentKeyword(std::string const& arg) return this->Superclass::CheckArgumentKeyword(arg); } -//---------------------------------------------------------------------------- bool cmCTestCoverageCommand::CheckArgumentValue(std::string const& arg) { // Handle states specific to this command. diff --git a/Source/CTest/cmCTestCoverageHandler.cxx b/Source/CTest/cmCTestCoverageHandler.cxx index fd62696..ed15834 100644 --- a/Source/CTest/cmCTestCoverageHandler.cxx +++ b/Source/CTest/cmCTestCoverageHandler.cxx @@ -10,28 +10,29 @@ See the License for more information. ============================================================================*/ #include "cmCTestCoverageHandler.h" -#include "cmParsePHPCoverage.h" + +#include "cmCTest.h" +#include "cmGeneratedFileStream.h" +#include "cmMakefile.h" +#include "cmParseBlanketJSCoverage.h" +#include "cmParseCacheCoverage.h" #include "cmParseCoberturaCoverage.h" +#include "cmParseDelphiCoverage.h" #include "cmParseGTMCoverage.h" -#include "cmParseCacheCoverage.h" #include "cmParseJacocoCoverage.h" -#include "cmParseDelphiCoverage.h" -#include "cmParseBlanketJSCoverage.h" -#include "cmCTest.h" -#include "cmake.h" -#include "cmMakefile.h" +#include "cmParsePHPCoverage.h" #include "cmSystemTools.h" -#include "cmGeneratedFileStream.h" #include "cmXMLWriter.h" +#include "cmake.h" +#include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> #include <cmsys/Process.h> #include <cmsys/RegularExpression.hxx> -#include <cmsys/Glob.hxx> -#include <cmsys/FStream.hxx> -#include <stdlib.h> -#include <math.h> #include <float.h> +#include <math.h> +#include <stdlib.h> #define SAFEDIV(x,y) (((y)!=0)?((x)/(y)):(0)) @@ -131,14 +132,11 @@ private: }; -//---------------------------------------------------------------------- -//---------------------------------------------------------------------- cmCTestCoverageHandler::cmCTestCoverageHandler() { } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::Initialize() { this->Superclass::Initialize(); @@ -150,7 +148,6 @@ void cmCTestCoverageHandler::Initialize() this->LabelFilter.clear(); } -//---------------------------------------------------------------------------- void cmCTestCoverageHandler::CleanCoverageLogFiles(std::ostream& log) { std::string logGlob = this->CTest->GetCTestConfiguration("BuildDirectory"); @@ -168,7 +165,6 @@ void cmCTestCoverageHandler::CleanCoverageLogFiles(std::ostream& log) } } -//---------------------------------------------------------------------- bool cmCTestCoverageHandler::StartCoverageLogFile( cmGeneratedFileStream& covLogFile, int logFileCount) { @@ -186,7 +182,6 @@ bool cmCTestCoverageHandler::StartCoverageLogFile( return true; } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::EndCoverageLogFile(cmGeneratedFileStream& ostr, int logFileCount) { @@ -197,7 +192,6 @@ void cmCTestCoverageHandler::EndCoverageLogFile(cmGeneratedFileStream& ostr, ostr.Close(); } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::StartCoverageLogXML(cmXMLWriter& xml) { this->CTest->StartXML(xml, this->AppendXML); @@ -207,7 +201,6 @@ void cmCTestCoverageHandler::StartCoverageLogXML(cmXMLWriter& xml) static_cast<unsigned int>(cmSystemTools::GetTime())); } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::EndCoverageLogXML(cmXMLWriter& xml) { xml.Element("EndDateTime", this->CTest->CurrentTime()); @@ -216,7 +209,6 @@ void cmCTestCoverageHandler::EndCoverageLogXML(cmXMLWriter& xml) this->CTest->EndXML(xml); } -//---------------------------------------------------------------------- bool cmCTestCoverageHandler::ShouldIDoCoverage(const char* file, const char* srcDir, const char* binDir) @@ -321,7 +313,6 @@ bool cmCTestCoverageHandler::ShouldIDoCoverage(const char* file, return true; } -//---------------------------------------------------------------------- //clearly it would be nice if this were broken up into a few smaller //functions and commented... int cmCTestCoverageHandler::ProcessHandler() @@ -746,7 +737,6 @@ int cmCTestCoverageHandler::ProcessHandler() return 0; } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::PopulateCustomVectors(cmMakefile *mf) { cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, @@ -771,7 +761,6 @@ void cmCTestCoverageHandler::PopulateCustomVectors(cmMakefile *mf) } } -//---------------------------------------------------------------------- // Fix for issue #4971 where the case of the drive letter component of // the filenames might be different when analyzing gcov output. // @@ -783,7 +772,6 @@ void cmCTestCoverageHandler::PopulateCustomVectors(cmMakefile *mf) #define fnc(s) s #endif -//---------------------------------------------------------------------- bool IsFileInDir(const std::string &infile, const std::string &indir) { std::string file = cmSystemTools::CollapseFullPath(infile); @@ -801,7 +789,6 @@ bool IsFileInDir(const std::string &infile, const std::string &indir) return false; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandlePHPCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -814,7 +801,6 @@ int cmCTestCoverageHandler::HandlePHPCoverage( return static_cast<int>(cont->TotalCoverage.size()); } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleCoberturaCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -854,7 +840,6 @@ int cmCTestCoverageHandler::HandleCoberturaCoverage( return static_cast<int>(cont->TotalCoverage.size()); } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleMumpsCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -922,7 +907,6 @@ struct cmCTestCoverageHandlerLocale std::string lc_all; }; -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleJacocoCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -970,7 +954,6 @@ int cmCTestCoverageHandler::HandleJacocoCoverage( return static_cast<int>(cont->TotalCoverage.size()); } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleDelphiCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -1004,7 +987,6 @@ int cmCTestCoverageHandler::HandleDelphiCoverage( return static_cast<int>(cont->TotalCoverage.size()); } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleBlanketJSCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -1050,7 +1032,6 @@ int cmCTestCoverageHandler::HandleBlanketJSCoverage( } return static_cast<int>(cont->TotalCoverage.size()); } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleGCovCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -1492,7 +1473,6 @@ int cmCTestCoverageHandler::HandleGCovCoverage( return file_count; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleLCovCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -1764,7 +1744,6 @@ int cmCTestCoverageHandler::HandleLCovCoverage( return file_count; } -//---------------------------------------------------------------------------- void cmCTestCoverageHandler::FindGCovFiles(std::vector<std::string>& files) { cmsys::Glob gl; @@ -1795,7 +1774,6 @@ void cmCTestCoverageHandler::FindGCovFiles(std::vector<std::string>& files) } } -//---------------------------------------------------------------------------- bool cmCTestCoverageHandler::FindLCovFiles(std::vector<std::string>& files) { cmsys::Glob gl; @@ -1839,7 +1817,6 @@ bool cmCTestCoverageHandler::FindLCovFiles(std::vector<std::string>& files) return true; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleTracePyCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -1973,7 +1950,6 @@ int cmCTestCoverageHandler::HandleTracePyCoverage( return file_count; } -//---------------------------------------------------------------------- std::string cmCTestCoverageHandler::FindFile( cmCTestCoverageHandlerContainer* cont, std::string fileName) @@ -2013,7 +1989,6 @@ namespace 0}; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::RunBullseyeCoverageBranch( cmCTestCoverageHandlerContainer* cont, std::set<std::string>& coveredFileNames, @@ -2162,7 +2137,6 @@ int cmCTestCoverageHandler::RunBullseyeCoverageBranch( return 1; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::RunBullseyeCommand( cmCTestCoverageHandlerContainer* cont, const char* cmd, @@ -2212,7 +2186,6 @@ int cmCTestCoverageHandler::RunBullseyeCommand( return 1; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::RunBullseyeSourceSummary( cmCTestCoverageHandlerContainer* cont) { @@ -2389,7 +2362,6 @@ int cmCTestCoverageHandler::RunBullseyeSourceSummary( coveredFilesFullPath); } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::HandleBullseyeCoverage( cmCTestCoverageHandlerContainer* cont) { @@ -2486,7 +2458,6 @@ bool cmCTestCoverageHandler::ParseBullsEyeCovsrcLine( return true; } -//---------------------------------------------------------------------- int cmCTestCoverageHandler::GetLabelId(std::string const& label) { LabelIdMapType::iterator i = this->LabelIdMap.find(label); @@ -2500,7 +2471,6 @@ int cmCTestCoverageHandler::GetLabelId(std::string const& label) return i->second; } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::LoadLabels() { std::string fileList = this->CTest->GetBinaryDir(); @@ -2516,7 +2486,6 @@ void cmCTestCoverageHandler::LoadLabels() } } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::LoadLabels(const char* dir) { LabelSet& dirLabels = this->TargetDirs[dir]; @@ -2571,7 +2540,6 @@ void cmCTestCoverageHandler::LoadLabels(const char* dir) } } -//---------------------------------------------------------------------- void cmCTestCoverageHandler::WriteXMLLabels(cmXMLWriter& xml, std::string const& source) { @@ -2588,7 +2556,6 @@ void cmCTestCoverageHandler::WriteXMLLabels(cmXMLWriter& xml, } } -//---------------------------------------------------------------------------- void cmCTestCoverageHandler::SetLabelFilter(std::set<std::string> const& labels) { @@ -2600,7 +2567,6 @@ cmCTestCoverageHandler::SetLabelFilter(std::set<std::string> const& labels) } } -//---------------------------------------------------------------------- bool cmCTestCoverageHandler::IntersectsFilter(LabelSet const& labels) { // If there is no label filter then nothing is filtered out. @@ -2617,7 +2583,6 @@ bool cmCTestCoverageHandler::IntersectsFilter(LabelSet const& labels) return !ids.empty(); } -//---------------------------------------------------------------------- bool cmCTestCoverageHandler::IsFilteredOut(std::string const& source) { // If there is no label filter then nothing is filtered out. @@ -2637,7 +2602,6 @@ bool cmCTestCoverageHandler::IsFilteredOut(std::string const& source) return true; } -//---------------------------------------------------------------------- std::set<std::string> cmCTestCoverageHandler::FindUncoveredFiles( cmCTestCoverageHandlerContainer* cont) { diff --git a/Source/CTest/cmCTestCoverageHandler.h b/Source/CTest/cmCTestCoverageHandler.h index 7102d1e..c91a2d7 100644 --- a/Source/CTest/cmCTestCoverageHandler.h +++ b/Source/CTest/cmCTestCoverageHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestCoverageHandler_h #define cmCTestCoverageHandler_h - #include "cmCTestGenericHandler.h" + #include "cmListFileCache.h" #include <cmsys/RegularExpression.hxx> diff --git a/Source/CTest/cmCTestCurl.cxx b/Source/CTest/cmCTestCurl.cxx index fb6cc00..0367d7d 100644 --- a/Source/CTest/cmCTestCurl.cxx +++ b/Source/CTest/cmCTestCurl.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmCTestCurl.h" -#include "cmSystemTools.h" #include "cmCTest.h" +#include "cmSystemTools.h" cmCTestCurl::cmCTestCurl(cmCTest* ctest) { diff --git a/Source/CTest/cmCTestGIT.cxx b/Source/CTest/cmCTestGIT.cxx index bbb3b9d..6d70be9 100644 --- a/Source/CTest/cmCTestGIT.cxx +++ b/Source/CTest/cmCTestGIT.cxx @@ -11,19 +11,18 @@ ============================================================================*/ #include "cmCTestGIT.h" +#include "cmAlgorithms.h" #include "cmCTest.h" #include "cmSystemTools.h" -#include "cmAlgorithms.h" -#include <cmsys/RegularExpression.hxx> -#include <cmsys/Process.h> #include <cmsys/FStream.hxx> +#include <cmsys/Process.h> +#include <cmsys/RegularExpression.hxx> +#include <ctype.h> #include <sys/types.h> #include <time.h> -#include <ctype.h> -//---------------------------------------------------------------------------- static unsigned int cmCTestGITVersion(unsigned int epic, unsigned int major, unsigned int minor, unsigned int fix) { @@ -31,7 +30,6 @@ static unsigned int cmCTestGITVersion(unsigned int epic, unsigned int major, return fix + minor*1000 + major*100000 + epic*10000000; } -//---------------------------------------------------------------------------- cmCTestGIT::cmCTestGIT(cmCTest* ct, std::ostream& log): cmCTestGlobalVC(ct, log) { @@ -39,12 +37,10 @@ cmCTestGIT::cmCTestGIT(cmCTest* ct, std::ostream& log): this->CurrentGitVersion = 0; } -//---------------------------------------------------------------------------- cmCTestGIT::~cmCTestGIT() { } -//---------------------------------------------------------------------------- class cmCTestGIT::OneLineParser: public cmCTestVC::LineParser { public: @@ -63,7 +59,6 @@ private: } }; -//---------------------------------------------------------------------------- std::string cmCTestGIT::GetWorkingRevision() { // Run plumbing "git rev-list" to get work tree revision. @@ -76,7 +71,6 @@ std::string cmCTestGIT::GetWorkingRevision() return rev; } -//---------------------------------------------------------------------------- void cmCTestGIT::NoteOldRevision() { this->OldRevision = this->GetWorkingRevision(); @@ -85,7 +79,6 @@ void cmCTestGIT::NoteOldRevision() this->PriorRev.Rev = this->OldRevision; } -//---------------------------------------------------------------------------- void cmCTestGIT::NoteNewRevision() { this->NewRevision = this->GetWorkingRevision(); @@ -93,7 +86,6 @@ void cmCTestGIT::NoteNewRevision() << this->NewRevision << "\n"); } -//---------------------------------------------------------------------------- std::string cmCTestGIT::FindGitDir() { std::string git_dir; @@ -141,7 +133,6 @@ std::string cmCTestGIT::FindGitDir() return git_dir; } -//---------------------------------------------------------------------------- std::string cmCTestGIT::FindTopDir() { std::string top_dir = this->SourceDirectory; @@ -162,7 +153,6 @@ std::string cmCTestGIT::FindTopDir() return top_dir; } -//---------------------------------------------------------------------------- bool cmCTestGIT::UpdateByFetchAndReset() { const char* git = this->CommandLineTool.c_str(); @@ -233,7 +223,6 @@ bool cmCTestGIT::UpdateByFetchAndReset() return this->RunChild(&git_reset[0], &reset_out, &reset_err); } -//---------------------------------------------------------------------------- bool cmCTestGIT::UpdateByCustom(std::string const& custom) { std::vector<std::string> git_custom_command; @@ -251,7 +240,6 @@ bool cmCTestGIT::UpdateByCustom(std::string const& custom) return this->RunUpdateCommand(&git_custom[0], &custom_out, &custom_err); } -//---------------------------------------------------------------------------- bool cmCTestGIT::UpdateInternal() { std::string custom = this->CTest->GetCTestConfiguration("GITUpdateCustom"); @@ -262,7 +250,6 @@ bool cmCTestGIT::UpdateInternal() return this->UpdateByFetchAndReset(); } -//---------------------------------------------------------------------------- bool cmCTestGIT::UpdateImpl() { if(!this->UpdateInternal()) @@ -273,26 +260,64 @@ bool cmCTestGIT::UpdateImpl() std::string top_dir = this->FindTopDir(); const char* git = this->CommandLineTool.c_str(); const char* recursive = "--recursive"; + const char* sync_recursive = "--recursive"; - // Git < 1.6.5.0 did not support --recursive + // Git < 1.6.5 did not support submodule --recursive if(this->GetGitVersion() < cmCTestGITVersion(1,6,5,0)) { recursive = 0; - // No need to require >= 1.6.5.0 if there are no submodules. + // No need to require >= 1.6.5 if there are no submodules. if(cmSystemTools::FileExists((top_dir + "/.gitmodules").c_str())) { - this->Log << "Git < 1.6.5.0 cannot update submodules recursively\n"; + this->Log << "Git < 1.6.5 cannot update submodules recursively\n"; + } + } + + // Git < 1.8.1 did not support sync --recursive + if(this->GetGitVersion() < cmCTestGITVersion(1,8,1,0)) + { + sync_recursive = 0; + // No need to require >= 1.8.1 if there are no submodules. + if(cmSystemTools::FileExists((top_dir + "/.gitmodules").c_str())) + { + this->Log << "Git < 1.8.1 cannot synchronize submodules recursively\n"; } } - char const* git_submodule[] = {git, "submodule", "update", recursive, 0}; OutputLogger submodule_out(this->Log, "submodule-out> "); OutputLogger submodule_err(this->Log, "submodule-err> "); + + bool ret; + + std::string init_submodules = + this->CTest->GetCTestConfiguration("GITInitSubmodules"); + if (cmSystemTools::IsOn(init_submodules.c_str())) + { + char const* git_submodule_init[] = {git, "submodule", "init", 0}; + ret = this->RunChild(git_submodule_init, &submodule_out, &submodule_err, + top_dir.c_str()); + + if (!ret) + { + return false; + } + } + + char const* git_submodule_sync[] = {git, "submodule", "sync", + sync_recursive, 0}; + ret = this->RunChild(git_submodule_sync, &submodule_out, &submodule_err, + top_dir.c_str()); + + if (!ret) + { + return false; + } + + char const* git_submodule[] = {git, "submodule", "update", recursive, 0}; return this->RunChild(git_submodule, &submodule_out, &submodule_err, top_dir.c_str()); } -//---------------------------------------------------------------------------- unsigned int cmCTestGIT::GetGitVersion() { if(!this->CurrentGitVersion) @@ -313,7 +338,6 @@ unsigned int cmCTestGIT::GetGitVersion() return this->CurrentGitVersion; } -//---------------------------------------------------------------------------- /* Diff format: :src-mode dst-mode src-sha1 dst-sha1 status\0 @@ -431,7 +455,6 @@ protected: } }; -//---------------------------------------------------------------------------- /* Commit format: commit ...\n @@ -598,7 +621,6 @@ private: char const cmCTestGIT::CommitParser::SectionSep[SectionCount] = {'\n', '\n', '\0'}; -//---------------------------------------------------------------------------- void cmCTestGIT::LoadRevisions() { // Use 'git rev-list ... | git diff-tree ...' to get revisions. @@ -627,7 +649,6 @@ void cmCTestGIT::LoadRevisions() cmsysProcess_Delete(cp); } -//---------------------------------------------------------------------------- void cmCTestGIT::LoadModifications() { const char* git = this->CommandLineTool.c_str(); diff --git a/Source/CTest/cmCTestGIT.h b/Source/CTest/cmCTestGIT.h index f4fae8f..3d45da8 100644 --- a/Source/CTest/cmCTestGIT.h +++ b/Source/CTest/cmCTestGIT.h @@ -44,7 +44,9 @@ private: void LoadRevisions(); void LoadModifications(); -public: // needed by older Sun compilers + // "public" needed by older Sun compilers +public: + // Parsing helper classes. class OneLineParser; class DiffParser; diff --git a/Source/CTest/cmCTestGenericHandler.cxx b/Source/CTest/cmCTestGenericHandler.cxx index ad79ba2..2e9dd1f 100644 --- a/Source/CTest/cmCTestGenericHandler.cxx +++ b/Source/CTest/cmCTestGenericHandler.cxx @@ -11,11 +11,11 @@ ============================================================================*/ #include "cmCTestGenericHandler.h" + #include "cmSystemTools.h" #include "cmCTest.h" -//---------------------------------------------------------------------- cmCTestGenericHandler::cmCTestGenericHandler() { this->HandlerVerbose = cmSystemTools::OUTPUT_NONE; @@ -26,12 +26,10 @@ cmCTestGenericHandler::cmCTestGenericHandler() this->TestLoad = 0; } -//---------------------------------------------------------------------- cmCTestGenericHandler::~cmCTestGenericHandler() { } -//---------------------------------------------------------------------- void cmCTestGenericHandler::SetOption(const std::string& op, const char* value) { if ( !value ) @@ -48,7 +46,6 @@ void cmCTestGenericHandler::SetOption(const std::string& op, const char* value) this->Options[op] = value; } -//---------------------------------------------------------------------- void cmCTestGenericHandler::SetPersistentOption(const std::string& op, const char* value) { @@ -67,7 +64,6 @@ void cmCTestGenericHandler::SetPersistentOption(const std::string& op, this->PersistentOptions[op] = value; } -//---------------------------------------------------------------------- void cmCTestGenericHandler::Initialize() { this->AppendXML = false; @@ -82,7 +78,6 @@ void cmCTestGenericHandler::Initialize() } } -//---------------------------------------------------------------------- const char* cmCTestGenericHandler::GetOption(const std::string& op) { cmCTestGenericHandler::t_StringToString::iterator remit @@ -94,7 +89,6 @@ const char* cmCTestGenericHandler::GetOption(const std::string& op) return remit->second.c_str(); } -//---------------------------------------------------------------------- bool cmCTestGenericHandler::StartResultingXML(cmCTest::Part part, const char* name, cmGeneratedFileStream& xofs) @@ -135,7 +129,6 @@ bool cmCTestGenericHandler::StartResultingXML(cmCTest::Part part, return true; } -//---------------------------------------------------------------------- bool cmCTestGenericHandler::StartLogFile(const char* name, cmGeneratedFileStream& xofs) { diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h index 4b7ae79..7a7e034 100644 --- a/Source/CTest/cmCTestGenericHandler.h +++ b/Source/CTest/cmCTestGenericHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestGenericHandler_h #define cmCTestGenericHandler_h - #include "cmObject.h" + #include "cmCTest.h" #include "cmSystemTools.h" //OutputOption diff --git a/Source/CTest/cmCTestGlobalVC.cxx b/Source/CTest/cmCTestGlobalVC.cxx index c091ec4..7c565fb 100644 --- a/Source/CTest/cmCTestGlobalVC.cxx +++ b/Source/CTest/cmCTestGlobalVC.cxx @@ -17,25 +17,21 @@ #include <cmsys/RegularExpression.hxx> -//---------------------------------------------------------------------------- cmCTestGlobalVC::cmCTestGlobalVC(cmCTest* ct, std::ostream& log): cmCTestVC(ct, log) { this->PriorRev = this->Unknown; } -//---------------------------------------------------------------------------- cmCTestGlobalVC::~cmCTestGlobalVC() { } -//---------------------------------------------------------------------------- const char* cmCTestGlobalVC::LocalPath(std::string const& path) { return path.c_str(); } -//---------------------------------------------------------------------------- void cmCTestGlobalVC::DoRevision(Revision const& revision, std::vector<Change> const& changes) { @@ -54,9 +50,11 @@ void cmCTestGlobalVC::DoRevision(Revision const& revision, // Report this revision. Revision const& rev = this->Revisions.back(); + /* clang-format off */ this->Log << "Found revision " << rev.Rev << "\n" << " author = " << rev.Author << "\n" << " date = " << rev.Date << "\n"; + /* clang-format on */ // Update information about revisions of the changed files. for(std::vector<Change>::const_iterator ci = changes.begin(); @@ -74,7 +72,6 @@ void cmCTestGlobalVC::DoRevision(Revision const& revision, } } -//---------------------------------------------------------------------------- void cmCTestGlobalVC::DoModification(PathStatus status, std::string const& path) { @@ -90,7 +87,6 @@ void cmCTestGlobalVC::DoModification(PathStatus status, } } -//---------------------------------------------------------------------------- void cmCTestGlobalVC::WriteXMLDirectory(cmXMLWriter& xml, std::string const& path, Directory const& dir) @@ -106,7 +102,6 @@ void cmCTestGlobalVC::WriteXMLDirectory(cmXMLWriter& xml, xml.EndElement(); // Directory } -//---------------------------------------------------------------------------- void cmCTestGlobalVC::WriteXMLGlobal(cmXMLWriter& xml) { if(!this->NewRevision.empty()) @@ -119,7 +114,6 @@ void cmCTestGlobalVC::WriteXMLGlobal(cmXMLWriter& xml) } } -//---------------------------------------------------------------------------- bool cmCTestGlobalVC::WriteXMLUpdates(cmXMLWriter& xml) { cmCTestLog(this->CTest, HANDLER_OUTPUT, diff --git a/Source/CTest/cmCTestHG.cxx b/Source/CTest/cmCTestHG.cxx index 0f79d68..4dcd805 100644 --- a/Source/CTest/cmCTestHG.cxx +++ b/Source/CTest/cmCTestHG.cxx @@ -17,19 +17,16 @@ #include <cmsys/RegularExpression.hxx> -//---------------------------------------------------------------------------- cmCTestHG::cmCTestHG(cmCTest* ct, std::ostream& log): cmCTestGlobalVC(ct, log) { this->PriorRev = this->Unknown; } -//---------------------------------------------------------------------------- cmCTestHG::~cmCTestHG() { } -//---------------------------------------------------------------------------- class cmCTestHG::IdentifyParser: public cmCTestVC::LineParser { public: @@ -54,7 +51,6 @@ private: } }; -//---------------------------------------------------------------------------- class cmCTestHG::StatusParser: public cmCTestVC::LineParser { public: @@ -94,7 +90,6 @@ private: } }; -//---------------------------------------------------------------------------- std::string cmCTestHG::GetWorkingRevision() { // Run plumbing "hg identify" to get work tree revision. @@ -107,7 +102,6 @@ std::string cmCTestHG::GetWorkingRevision() return rev; } -//---------------------------------------------------------------------------- void cmCTestHG::NoteOldRevision() { this->OldRevision = this->GetWorkingRevision(); @@ -116,7 +110,6 @@ void cmCTestHG::NoteOldRevision() this->PriorRev.Rev = this->OldRevision; } -//---------------------------------------------------------------------------- void cmCTestHG::NoteNewRevision() { this->NewRevision = this->GetWorkingRevision(); @@ -124,7 +117,6 @@ void cmCTestHG::NoteNewRevision() << this->NewRevision << "\n"); } -//---------------------------------------------------------------------------- bool cmCTestHG::UpdateImpl() { // Use "hg pull" followed by "hg update" to update the working tree. @@ -164,7 +156,6 @@ bool cmCTestHG::UpdateImpl() return this->RunUpdateCommand(&hg_update[0], &out, &err); } -//---------------------------------------------------------------------------- class cmCTestHG::LogParser: public cmCTestVC::OutputLogger, private cmXMLParser { @@ -293,7 +284,6 @@ private: } }; -//---------------------------------------------------------------------------- void cmCTestHG::LoadRevisions() { // Use 'hg log' to get revisions in a xml format. @@ -326,7 +316,6 @@ void cmCTestHG::LoadRevisions() out.Process("</log>\n"); } -//---------------------------------------------------------------------------- void cmCTestHG::LoadModifications() { // Use 'hg status' to get modified files. diff --git a/Source/CTest/cmCTestHandlerCommand.cxx b/Source/CTest/cmCTestHandlerCommand.cxx index 3579aee..4b24a199 100644 --- a/Source/CTest/cmCTestHandlerCommand.cxx +++ b/Source/CTest/cmCTestHandlerCommand.cxx @@ -158,7 +158,6 @@ bool cmCTestHandlerCommand return true; } -//---------------------------------------------------------------------------- bool cmCTestHandlerCommand::CheckArgumentKeyword(std::string const& arg) { // Look for non-value arguments common to all commands. @@ -188,7 +187,6 @@ bool cmCTestHandlerCommand::CheckArgumentKeyword(std::string const& arg) return false; } -//---------------------------------------------------------------------------- bool cmCTestHandlerCommand::CheckArgumentValue(std::string const& arg) { if(this->ArgumentDoing == ArgumentDoingKeyword) diff --git a/Source/CTest/cmCTestLaunch.cxx b/Source/CTest/cmCTestLaunch.cxx index 749a5be..7da81ec 100644 --- a/Source/CTest/cmCTestLaunch.cxx +++ b/Source/CTest/cmCTestLaunch.cxx @@ -16,18 +16,17 @@ #include "cmXMLWriter.h" #include "cmake.h" +#include <cmsys/FStream.hxx> #include <cmsys/MD5.h> #include <cmsys/Process.h> #include <cmsys/RegularExpression.hxx> -#include <cmsys/FStream.hxx> #ifdef _WIN32 -#include <io.h> // for _setmode #include <fcntl.h> // for _O_BINARY +#include <io.h> // for _setmode #include <stdio.h> // for std{out,err} and fileno #endif -//---------------------------------------------------------------------------- cmCTestLaunch::cmCTestLaunch(int argc, const char* const* argv) { this->Passthru = true; @@ -48,7 +47,6 @@ cmCTestLaunch::cmCTestLaunch(int argc, const char* const* argv) this->Process = cmsysProcess_New(); } -//---------------------------------------------------------------------------- cmCTestLaunch::~cmCTestLaunch() { cmsysProcess_Delete(this->Process); @@ -59,7 +57,6 @@ cmCTestLaunch::~cmCTestLaunch() } } -//---------------------------------------------------------------------------- bool cmCTestLaunch::ParseArguments(int argc, const char* const* argv) { // Launcher options occur first and are separated from the real @@ -171,7 +168,6 @@ bool cmCTestLaunch::ParseArguments(int argc, const char* const* argv) } } -//---------------------------------------------------------------------------- void cmCTestLaunch::HandleRealArg(const char* arg) { #ifdef _WIN32 @@ -190,7 +186,6 @@ void cmCTestLaunch::HandleRealArg(const char* arg) this->RealArgs.push_back(arg); } -//---------------------------------------------------------------------------- void cmCTestLaunch::ComputeFileNames() { // We just passthru the behavior of the real command unless the @@ -234,7 +229,6 @@ void cmCTestLaunch::ComputeFileNames() this->LogErr += "-err.txt"; } -//---------------------------------------------------------------------------- void cmCTestLaunch::RunChild() { // Ignore noopt make rules @@ -302,7 +296,6 @@ void cmCTestLaunch::RunChild() this->ExitCode = cmsysProcess_GetExitValue(cp); } -//---------------------------------------------------------------------------- int cmCTestLaunch::Run() { if(!this->Process) @@ -324,7 +317,6 @@ int cmCTestLaunch::Run() return this->ExitCode; } -//---------------------------------------------------------------------------- void cmCTestLaunch::LoadLabels() { if(this->OptionBuildDir.empty() || this->OptionTargetName.empty()) @@ -379,7 +371,6 @@ void cmCTestLaunch::LoadLabels() } } -//---------------------------------------------------------------------------- bool cmCTestLaunch::SourceMatches(std::string const& lhs, std::string const& rhs) { @@ -390,13 +381,11 @@ bool cmCTestLaunch::SourceMatches(std::string const& lhs, return lhs == rhs; } -//---------------------------------------------------------------------------- bool cmCTestLaunch::IsError() const { return this->ExitCode != 0; } -//---------------------------------------------------------------------------- void cmCTestLaunch::WriteXML() { // Name the xml file. @@ -417,7 +406,6 @@ void cmCTestLaunch::WriteXML() xml.EndElement(); // Failure } -//---------------------------------------------------------------------------- void cmCTestLaunch::WriteXMLAction(cmXMLWriter& xml) { xml.Comment("Meta-information about the build action"); @@ -493,7 +481,6 @@ void cmCTestLaunch::WriteXMLAction(cmXMLWriter& xml) xml.EndElement(); // Action } -//---------------------------------------------------------------------------- void cmCTestLaunch::WriteXMLCommand(cmXMLWriter& xml) { xml.Comment("Details of command"); @@ -510,7 +497,6 @@ void cmCTestLaunch::WriteXMLCommand(cmXMLWriter& xml) xml.EndElement(); // Command } -//---------------------------------------------------------------------------- void cmCTestLaunch::WriteXMLResult(cmXMLWriter& xml) { xml.Comment("Result of command"); @@ -556,7 +542,6 @@ void cmCTestLaunch::WriteXMLResult(cmXMLWriter& xml) xml.EndElement(); // Result } -//---------------------------------------------------------------------------- void cmCTestLaunch::WriteXMLLabels(cmXMLWriter& xml) { this->LoadLabels(); @@ -573,7 +558,6 @@ void cmCTestLaunch::WriteXMLLabels(cmXMLWriter& xml) } } -//---------------------------------------------------------------------------- void cmCTestLaunch::DumpFileToXML(cmXMLWriter& xml, std::string const& fname) { @@ -595,7 +579,6 @@ void cmCTestLaunch::DumpFileToXML(cmXMLWriter& xml, } } -//---------------------------------------------------------------------------- bool cmCTestLaunch::CheckResults() { // Skip XML in passthru mode. @@ -619,7 +602,6 @@ bool cmCTestLaunch::CheckResults() return true; } -//---------------------------------------------------------------------------- void cmCTestLaunch::LoadScrapeRules() { if(this->ScrapeRulesLoaded) @@ -640,7 +622,6 @@ void cmCTestLaunch::LoadScrapeRules() this->LoadScrapeRules("WarningSuppress", this->RegexWarningSuppress); } -//---------------------------------------------------------------------------- void cmCTestLaunch ::LoadScrapeRules(const char* purpose, @@ -662,7 +643,6 @@ cmCTestLaunch } } -//---------------------------------------------------------------------------- bool cmCTestLaunch::ScrapeLog(std::string const& fname) { this->LoadScrapeRules(); @@ -687,7 +667,6 @@ bool cmCTestLaunch::ScrapeLog(std::string const& fname) return false; } -//---------------------------------------------------------------------------- bool cmCTestLaunch::Match(std::string const& line, std::vector<cmsys::RegularExpression>& regexps) { @@ -702,7 +681,6 @@ bool cmCTestLaunch::Match(std::string const& line, return false; } -//---------------------------------------------------------------------------- bool cmCTestLaunch::MatchesFilterPrefix(std::string const& line) const { if(!this->OptionFilterPrefix.empty() && cmSystemTools::StringStartsWith( @@ -713,7 +691,6 @@ bool cmCTestLaunch::MatchesFilterPrefix(std::string const& line) const return false; } -//---------------------------------------------------------------------------- int cmCTestLaunch::Main(int argc, const char* const argv[]) { if(argc == 2) @@ -726,7 +703,6 @@ int cmCTestLaunch::Main(int argc, const char* const argv[]) return self.Run(); } -//---------------------------------------------------------------------------- #include "cmGlobalGenerator.h" #include "cmMakefile.h" #include "cmake.h" diff --git a/Source/CTest/cmCTestLaunch.h b/Source/CTest/cmCTestLaunch.h index b13e484..1a908a3 100644 --- a/Source/CTest/cmCTestLaunch.h +++ b/Source/CTest/cmCTestLaunch.h @@ -13,6 +13,7 @@ #define cmCTestLaunch_h #include "cmStandardIncludes.h" + #include <cmsys/RegularExpression.hxx> class cmXMLWriter; diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx b/Source/CTest/cmCTestMemCheckHandler.cxx index acf527a..dd2a5b8 100644 --- a/Source/CTest/cmCTestMemCheckHandler.cxx +++ b/Source/CTest/cmCTestMemCheckHandler.cxx @@ -11,21 +11,22 @@ ============================================================================*/ #include "cmCTestMemCheckHandler.h" -#include "cmXMLParser.h" + #include "cmCTest.h" -#include "cmake.h" #include "cmGeneratedFileStream.h" -#include <cmsys/Process.h> -#include <cmsys/RegularExpression.hxx> -#include <cmsys/Base64.h> -#include <cmsys/Glob.hxx> -#include <cmsys/FStream.hxx> #include "cmMakefile.h" +#include "cmXMLParser.h" #include "cmXMLWriter.h" +#include "cmake.h" +#include <cmsys/Base64.h> +#include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <cmsys/Process.h> +#include <cmsys/RegularExpression.hxx> -#include <stdlib.h> -#include <math.h> #include <float.h> +#include <math.h> +#include <stdlib.h> struct CatToErrorType { @@ -140,7 +141,6 @@ public: -//---------------------------------------------------------------------- cmCTestMemCheckHandler::cmCTestMemCheckHandler() { this->MemCheck = true; @@ -149,7 +149,6 @@ cmCTestMemCheckHandler::cmCTestMemCheckHandler() this->LogWithPID = false; } -//---------------------------------------------------------------------- void cmCTestMemCheckHandler::Initialize() { this->Superclass::Initialize(); @@ -163,7 +162,6 @@ void cmCTestMemCheckHandler::Initialize() this->MemoryTesterOutputFile = ""; } -//---------------------------------------------------------------------- int cmCTestMemCheckHandler::PreProcessHandler() { if ( !this->InitializeMemoryChecking() ) @@ -180,7 +178,6 @@ int cmCTestMemCheckHandler::PreProcessHandler() return 1; } -//---------------------------------------------------------------------- int cmCTestMemCheckHandler::PostProcessHandler() { if ( !this->ExecuteCommands(this->CustomPostMemCheck) ) @@ -192,7 +189,6 @@ int cmCTestMemCheckHandler::PostProcessHandler() return 1; } -//---------------------------------------------------------------------- void cmCTestMemCheckHandler::GenerateTestCommand( std::vector<std::string>& args, int test) { @@ -255,7 +251,6 @@ void cmCTestMemCheckHandler::GenerateTestCommand( "Memory check command: " << memcheckcommand << std::endl, this->Quiet); } -//---------------------------------------------------------------------- void cmCTestMemCheckHandler::InitializeResultsVectors() { // fill these members @@ -299,7 +294,6 @@ void cmCTestMemCheckHandler::InitializeResultsVectors() "UMR", 0 }; -//---------------------------------------------------------------------- static const char* cmCTestMemCheckResultLongStrings[] = { "Threading Problem", "ABW", @@ -334,7 +328,6 @@ void cmCTestMemCheckHandler::InitializeResultsVectors() } } -//---------------------------------------------------------------------- void cmCTestMemCheckHandler::PopulateCustomVectors(cmMakefile *mf) { this->cmCTestTestHandler::PopulateCustomVectors(mf); @@ -351,7 +344,6 @@ void cmCTestMemCheckHandler::PopulateCustomVectors(cmMakefile *mf) this->Quiet); } -//---------------------------------------------------------------------- void cmCTestMemCheckHandler::GenerateDartOutput(cmXMLWriter& xml) { if ( !this->CTest->GetProduceXML() ) @@ -482,7 +474,6 @@ void cmCTestMemCheckHandler::GenerateDartOutput(cmXMLWriter& xml) this->CTest->EndXML(xml); } -//---------------------------------------------------------------------- bool cmCTestMemCheckHandler::InitializeMemoryChecking() { this->MemoryTesterEnvironmentVariable = ""; @@ -746,7 +737,6 @@ bool cmCTestMemCheckHandler::InitializeMemoryChecking() return true; } -//---------------------------------------------------------------------- bool cmCTestMemCheckHandler:: ProcessMemCheckOutput(const std::string& str, std::string& log, std::vector<int>& results) @@ -800,7 +790,6 @@ std::vector<int>::size_type cmCTestMemCheckHandler::FindOrAddWarning( this->ResultStringsLong.push_back(warning); return this->ResultStrings.size()-1; } -//---------------------------------------------------------------------- bool cmCTestMemCheckHandler::ProcessMemCheckSanitizerOutput( const std::string& str, std::string& log, std::vector<int>& result) @@ -865,7 +854,6 @@ bool cmCTestMemCheckHandler::ProcessMemCheckSanitizerOutput( } return true; } -//---------------------------------------------------------------------- bool cmCTestMemCheckHandler::ProcessMemCheckPurifyOutput( const std::string& str, std::string& log, std::vector<int>& results) @@ -919,7 +907,6 @@ bool cmCTestMemCheckHandler::ProcessMemCheckPurifyOutput( return true; } -//---------------------------------------------------------------------- bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( const std::string& str, std::string& log, std::vector<int>& results) @@ -1094,7 +1081,6 @@ bool cmCTestMemCheckHandler::ProcessMemCheckValgrindOutput( -//---------------------------------------------------------------------- bool cmCTestMemCheckHandler::ProcessMemCheckBoundsCheckerOutput( const std::string& str, std::string& log, std::vector<int>& results) diff --git a/Source/CTest/cmCTestMemCheckHandler.h b/Source/CTest/cmCTestMemCheckHandler.h index f1ac794..6232924 100644 --- a/Source/CTest/cmCTestMemCheckHandler.h +++ b/Source/CTest/cmCTestMemCheckHandler.h @@ -13,12 +13,11 @@ #ifndef cmCTestMemCheckHandler_h #define cmCTestMemCheckHandler_h - #include "cmCTestTestHandler.h" -#include "cmStandardIncludes.h" + #include "cmListFileCache.h" -#include <vector> #include <string> +#include <vector> class cmMakefile; class cmXMLWriter; diff --git a/Source/CTest/cmCTestMultiProcessHandler.cxx b/Source/CTest/cmCTestMultiProcessHandler.cxx index 7c7f5df..d92ac77 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.cxx +++ b/Source/CTest/cmCTestMultiProcessHandler.cxx @@ -10,18 +10,19 @@ See the License for more information. ============================================================================*/ #include "cmCTestMultiProcessHandler.h" -#include "cmProcess.h" -#include "cmStandardIncludes.h" + #include "cmCTest.h" #include "cmCTestScriptHandler.h" +#include "cmProcess.h" +#include "cmStandardIncludes.h" #include "cmSystemTools.h" -#include <stdlib.h> -#include <stack> -#include <list> -#include <float.h> -#include <math.h> #include <cmsys/FStream.hxx> #include <cmsys/SystemInformation.hxx> +#include <float.h> +#include <list> +#include <math.h> +#include <stack> +#include <stdlib.h> class TestComparator { @@ -93,7 +94,6 @@ void cmCTestMultiProcessHandler::SetTestLoad(unsigned long load) this->TestLoad = load; } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::RunTests() { this->CheckResume(); @@ -120,7 +120,6 @@ void cmCTestMultiProcessHandler::RunTests() this->UpdateCostData(); } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::StartTestProcess(int test) { cmCTestOptionalLog(this->CTest, HANDLER_VERBOSE_OUTPUT, @@ -176,7 +175,6 @@ void cmCTestMultiProcessHandler::StartTestProcess(int test) cmSystemTools::ChangeDirectory(current_dir); } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::LockResources(int index) { this->LockedResources.insert( @@ -189,7 +187,6 @@ void cmCTestMultiProcessHandler::LockResources(int index) } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::UnlockResources(int index) { for(std::set<std::string>::iterator i = @@ -204,7 +201,6 @@ void cmCTestMultiProcessHandler::UnlockResources(int index) } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::EraseTest(int test) { this->Tests.erase(test); @@ -212,7 +208,6 @@ void cmCTestMultiProcessHandler::EraseTest(int test) std::find(this->SortedTests.begin(), this->SortedTests.end(), test)); } -//--------------------------------------------------------- inline size_t cmCTestMultiProcessHandler::GetProcessorsUsed(int test) { size_t processors = @@ -231,7 +226,6 @@ std::string cmCTestMultiProcessHandler::GetName(int test) return this->Properties[test]->Name; } -//--------------------------------------------------------- bool cmCTestMultiProcessHandler::StartTest(int test) { //Check for locked resources @@ -256,7 +250,6 @@ bool cmCTestMultiProcessHandler::StartTest(int test) return false; } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::StartNextTests() { size_t numToStart = 0; @@ -381,11 +374,13 @@ void cmCTestMultiProcessHandler::StartNextTests() } else { + /* clang-format off */ cmCTestLog(this->CTest, HANDLER_OUTPUT, "System Load: " << systemLoad << ", " "Max Allowed Load: " << this->TestLoad << ", " "Smallest test " << testWithMinProcessors << " requires " << minProcessorsRequired); + /* clang-format on */ } cmCTestLog(this->CTest, HANDLER_OUTPUT, "*****" << std::endl); @@ -404,7 +399,6 @@ void cmCTestMultiProcessHandler::StartNextTests() } } -//--------------------------------------------------------- bool cmCTestMultiProcessHandler::CheckOutput() { // no more output we are done @@ -460,7 +454,6 @@ bool cmCTestMultiProcessHandler::CheckOutput() return true; } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::UpdateCostData() { std::string fname = this->CTest->GetCostDataFile(); @@ -524,7 +517,6 @@ void cmCTestMultiProcessHandler::UpdateCostData() cmSystemTools::RenameFile(tmpout.c_str(), fname.c_str()); } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::ReadCostData() { std::string fname = this->CTest->GetCostDataFile(); @@ -576,7 +568,6 @@ void cmCTestMultiProcessHandler::ReadCostData() } } -//--------------------------------------------------------- int cmCTestMultiProcessHandler::SearchByName(std::string name) { int index = -1; @@ -592,7 +583,6 @@ int cmCTestMultiProcessHandler::SearchByName(std::string name) return index; } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::CreateTestCostList() { if(this->ParallelLevel > 1) @@ -605,7 +595,6 @@ void cmCTestMultiProcessHandler::CreateTestCostList() } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::CreateParallelTestCostList() { TestSet alreadySortedTests; @@ -685,7 +674,6 @@ void cmCTestMultiProcessHandler::CreateParallelTestCostList() } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::GetAllTestDependencies( int test, TestList& dependencies) { @@ -698,7 +686,6 @@ void cmCTestMultiProcessHandler::GetAllTestDependencies( } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::CreateSerialTestCostList() { TestList presortedList; @@ -744,7 +731,6 @@ void cmCTestMultiProcessHandler::CreateSerialTestCostList() } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::WriteCheckpoint(int index) { std::string fname = this->CTest->GetBinaryDir() @@ -755,7 +741,6 @@ void cmCTestMultiProcessHandler::WriteCheckpoint(int index) fout.close(); } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::MarkFinished() { std::string fname = this->CTest->GetBinaryDir() @@ -763,7 +748,6 @@ void cmCTestMultiProcessHandler::MarkFinished() cmSystemTools::RemoveFile(fname); } -//--------------------------------------------------------- //For ShowOnly mode void cmCTestMultiProcessHandler::PrintTestList() { @@ -855,7 +839,6 @@ void cmCTestMultiProcessHandler::PrintLabels() } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::CheckResume() { std::string fname = this->CTest->GetBinaryDir() @@ -886,7 +869,6 @@ void cmCTestMultiProcessHandler::CheckResume() } } -//--------------------------------------------------------- void cmCTestMultiProcessHandler::RemoveTest(int index) { this->EraseTest(index); @@ -896,7 +878,6 @@ void cmCTestMultiProcessHandler::RemoveTest(int index) this->Completed++; } -//--------------------------------------------------------- int cmCTestMultiProcessHandler::FindMaxIndex() { int max = 0; diff --git a/Source/CTest/cmCTestMultiProcessHandler.h b/Source/CTest/cmCTestMultiProcessHandler.h index ed3e155..64e56e6 100644 --- a/Source/CTest/cmCTestMultiProcessHandler.h +++ b/Source/CTest/cmCTestMultiProcessHandler.h @@ -12,8 +12,8 @@ #ifndef cmCTestMultiProcessHandler_h #define cmCTestMultiProcessHandler_h -#include <cmStandardIncludes.h> #include <cmCTestTestHandler.h> + #include <cmCTestRunTest.h> /** \class cmCTestMultiProcessHandler diff --git a/Source/CTest/cmCTestP4.cxx b/Source/CTest/cmCTestP4.cxx index 5e0c54a..e05b77a 100644 --- a/Source/CTest/cmCTestP4.cxx +++ b/Source/CTest/cmCTestP4.cxx @@ -14,26 +14,23 @@ #include "cmCTest.h" #include "cmSystemTools.h" -#include <cmsys/RegularExpression.hxx> #include <cmsys/Process.h> +#include <cmsys/RegularExpression.hxx> +#include <ctype.h> #include <sys/types.h> #include <time.h> -#include <ctype.h> -//---------------------------------------------------------------------------- cmCTestP4::cmCTestP4(cmCTest* ct, std::ostream& log): cmCTestGlobalVC(ct, log) { this->PriorRev = this->Unknown; } -//---------------------------------------------------------------------------- cmCTestP4::~cmCTestP4() { } -//---------------------------------------------------------------------------- class cmCTestP4::IdentifyParser: public cmCTestVC::LineParser { public: @@ -58,7 +55,6 @@ private: } }; -//---------------------------------------------------------------------------- class cmCTestP4::ChangesParser: public cmCTestVC::LineParser { public: @@ -81,7 +77,6 @@ private: } }; -//---------------------------------------------------------------------------- class cmCTestP4::UserParser: public cmCTestVC::LineParser { public: @@ -112,7 +107,6 @@ private: } }; -//---------------------------------------------------------------------------- /* Diff format: ==== //depot/file#rev - /absolute/path/to/file ==== (diff data) @@ -157,7 +151,6 @@ private: } }; -//---------------------------------------------------------------------------- cmCTestP4::User cmCTestP4::GetUserData(const std::string& username) { std::map<std::string, cmCTestP4::User>::const_iterator it = @@ -188,7 +181,6 @@ cmCTestP4::User cmCTestP4::GetUserData(const std::string& username) return it->second; } -//---------------------------------------------------------------------------- /* Commit format: Change 1111111 by user@client on 2013/09/26 11:50:36 @@ -319,7 +311,6 @@ private: } }; -//---------------------------------------------------------------------------- void cmCTestP4::SetP4Options(std::vector<char const*> &CommandOptions) { if(P4Options.empty()) @@ -358,7 +349,6 @@ void cmCTestP4::SetP4Options(std::vector<char const*> &CommandOptions) } } -//---------------------------------------------------------------------------- std::string cmCTestP4::GetWorkingRevision() { std::vector<char const*> p4_identify; @@ -395,7 +385,6 @@ std::string cmCTestP4::GetWorkingRevision() } } -//---------------------------------------------------------------------------- void cmCTestP4::NoteOldRevision() { this->OldRevision = this->GetWorkingRevision(); @@ -405,7 +394,6 @@ void cmCTestP4::NoteOldRevision() this->PriorRev.Rev = this->OldRevision; } -//---------------------------------------------------------------------------- void cmCTestP4::NoteNewRevision() { this->NewRevision = this->GetWorkingRevision(); @@ -414,7 +402,6 @@ void cmCTestP4::NoteNewRevision() << this->NewRevision << "\n"); } -//---------------------------------------------------------------------------- void cmCTestP4::LoadRevisions() { std::vector<char const*> p4_changes; @@ -465,7 +452,6 @@ void cmCTestP4::LoadRevisions() } } -//---------------------------------------------------------------------------- void cmCTestP4::LoadModifications() { std::vector<char const*> p4_diff; @@ -484,7 +470,6 @@ void cmCTestP4::LoadModifications() this->RunChild(&p4_diff[0], &out, &err); } -//---------------------------------------------------------------------------- bool cmCTestP4::UpdateCustom(const std::string& custom) { std::vector<std::string> p4_custom_command; @@ -504,7 +489,6 @@ bool cmCTestP4::UpdateCustom(const std::string& custom) return this->RunUpdateCommand(&p4_custom[0], &custom_out, &custom_err); } -//---------------------------------------------------------------------------- bool cmCTestP4::UpdateImpl() { std::string custom = this->CTest->GetCTestConfiguration("P4UpdateCustom"); diff --git a/Source/CTest/cmCTestP4.h b/Source/CTest/cmCTestP4.h index 7a53475..d666bd8 100644 --- a/Source/CTest/cmCTestP4.h +++ b/Source/CTest/cmCTestP4.h @@ -13,8 +13,9 @@ #define cmCTestP4_h #include "cmCTestGlobalVC.h" -#include <vector> + #include <map> +#include <vector> /** \class cmCTestP4 * \brief Interaction with the Perforce command-line tool diff --git a/Source/CTest/cmCTestReadCustomFilesCommand.cxx b/Source/CTest/cmCTestReadCustomFilesCommand.cxx index 3b9d552..5db01f9 100644 --- a/Source/CTest/cmCTestReadCustomFilesCommand.cxx +++ b/Source/CTest/cmCTestReadCustomFilesCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmCTestReadCustomFilesCommand.h" + #include "cmCTest.h" bool cmCTestReadCustomFilesCommand diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx index f329e77..1fa008d 100644 --- a/Source/CTest/cmCTestRunTest.cxx +++ b/Source/CTest/cmCTestRunTest.cxx @@ -11,8 +11,9 @@ ============================================================================*/ #include "cmCTestRunTest.h" -#include "cmCTestMemCheckHandler.h" + #include "cmCTest.h" +#include "cmCTestMemCheckHandler.h" #include "cmSystemTools.h" #include "cm_curl.h" @@ -42,7 +43,6 @@ cmCTestRunTest::~cmCTestRunTest() { } -//---------------------------------------------------------------------------- bool cmCTestRunTest::CheckOutput() { // Read lines for up to 0.1 seconds of total time. @@ -97,7 +97,6 @@ bool cmCTestRunTest::CheckOutput() return true; } -//--------------------------------------------------------- // Streamed compression of test output. The compressed data // is appended to this->CompressedOutput void cmCTestRunTest::CompressOutput() @@ -160,7 +159,6 @@ void cmCTestRunTest::CompressOutput() delete [] out; } -//--------------------------------------------------------- bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started) { if ((!this->TestHandler->MemCheck && @@ -427,7 +425,6 @@ bool cmCTestRunTest::NeedsToRerun() } return false; } -//---------------------------------------------------------------------- void cmCTestRunTest::ComputeWeightedCost() { double prev = static_cast<double>(this->TestProperties->PreviousRuns); @@ -442,7 +439,6 @@ void cmCTestRunTest::ComputeWeightedCost() } } -//---------------------------------------------------------------------- void cmCTestRunTest::MemCheckPostProcess() { if(!this->TestHandler->MemCheck) @@ -459,7 +455,6 @@ void cmCTestRunTest::MemCheckPostProcess() handler->PostProcessTest(this->TestResult, this->Index); } -//---------------------------------------------------------------------- // Starts the execution of a test. Returns once it has started bool cmCTestRunTest::StartTest(size_t total) { @@ -555,7 +550,6 @@ bool cmCTestRunTest::StartTest(size_t total) &this->TestProperties->Environment); } -//---------------------------------------------------------------------- void cmCTestRunTest::ComputeArguments() { this->Arguments.clear(); // reset becaue this might be a rerun @@ -622,7 +616,6 @@ void cmCTestRunTest::ComputeArguments() } } -//---------------------------------------------------------------------- void cmCTestRunTest::DartProcessing() { if (!this->ProcessOutput.empty() && @@ -642,7 +635,6 @@ void cmCTestRunTest::DartProcessing() } } -//---------------------------------------------------------------------- double cmCTestRunTest::ResolveTimeout() { double timeout = this->TestProperties->Timeout; @@ -707,7 +699,6 @@ double cmCTestRunTest::ResolveTimeout() (timeout < stop_timeout ? timeout : stop_timeout); } -//---------------------------------------------------------------------- bool cmCTestRunTest::ForkProcess(double testTimeOut, bool explicitTimeout, std::vector<std::string>* environment) { diff --git a/Source/CTest/cmCTestRunTest.h b/Source/CTest/cmCTestRunTest.h index 3b5c831..5f3467a 100644 --- a/Source/CTest/cmCTestRunTest.h +++ b/Source/CTest/cmCTestRunTest.h @@ -12,8 +12,8 @@ #ifndef cmCTestRunTest_h #define cmCTestRunTest_h -#include <cmStandardIncludes.h> #include <cmCTestTestHandler.h> + #include <cmProcess.h> /** \class cmRunTest diff --git a/Source/CTest/cmCTestSVN.cxx b/Source/CTest/cmCTestSVN.cxx index f7bd1f9..507ec29 100644 --- a/Source/CTest/cmCTestSVN.cxx +++ b/Source/CTest/cmCTestSVN.cxx @@ -23,19 +23,16 @@ struct cmCTestSVN::Revision: public cmCTestVC::Revision cmCTestSVN::SVNInfo* SVNInfo; }; -//---------------------------------------------------------------------------- cmCTestSVN::cmCTestSVN(cmCTest* ct, std::ostream& log): cmCTestGlobalVC(ct, log) { this->PriorRev = this->Unknown; } -//---------------------------------------------------------------------------- cmCTestSVN::~cmCTestSVN() { } -//---------------------------------------------------------------------------- void cmCTestSVN::CleanupImpl() { std::vector<const char*> svn_cleanup; @@ -45,7 +42,6 @@ void cmCTestSVN::CleanupImpl() this->RunSVNCommand(svn_cleanup, &out, &err); } -//---------------------------------------------------------------------------- class cmCTestSVN::InfoParser: public cmCTestVC::LineParser { public: @@ -84,7 +80,6 @@ private: } }; -//---------------------------------------------------------------------------- static bool cmCTestSVNPathStarts(std::string const& p1, std::string const& p2) { // Does path p1 start with path p2? @@ -102,7 +97,6 @@ static bool cmCTestSVNPathStarts(std::string const& p1, std::string const& p2) } } -//---------------------------------------------------------------------------- std::string cmCTestSVN::LoadInfo(SVNInfo& svninfo) { // Run "svn info" to get the repository info from the work tree. @@ -116,7 +110,6 @@ std::string cmCTestSVN::LoadInfo(SVNInfo& svninfo) return rev; } -//---------------------------------------------------------------------------- void cmCTestSVN::NoteOldRevision() { // Info for root repository @@ -145,7 +138,6 @@ void cmCTestSVN::NoteOldRevision() this->PriorRev.Rev = this->OldRevision; } -//---------------------------------------------------------------------------- void cmCTestSVN::NoteNewRevision() { // Get info for the external repositories @@ -186,7 +178,6 @@ void cmCTestSVN::NoteNewRevision() this->NewRevision = this->RootInfo->NewRevision; } -//---------------------------------------------------------------------------- void cmCTestSVN::GuessBase(SVNInfo& svninfo, std::vector<Change> const& changes) { @@ -220,7 +211,6 @@ void cmCTestSVN::GuessBase(SVNInfo& svninfo, this->Log << "Guessed Base = " << svninfo.Base << "\n"; } -//---------------------------------------------------------------------------- class cmCTestSVN::UpdateParser: public cmCTestVC::LineParser { public: @@ -268,7 +258,6 @@ private: } }; -//---------------------------------------------------------------------------- bool cmCTestSVN::UpdateImpl() { // Get user-specified update options. @@ -298,7 +287,6 @@ bool cmCTestSVN::UpdateImpl() return this->RunSVNCommand(svn_update, &out, &err); } -//---------------------------------------------------------------------------- bool cmCTestSVN::RunSVNCommand(std::vector<char const*> const& parameters, OutputParser* out, OutputParser* err) { @@ -334,7 +322,6 @@ bool cmCTestSVN::RunSVNCommand(std::vector<char const*> const& parameters, } } -//---------------------------------------------------------------------------- class cmCTestSVN::LogParser: public cmCTestVC::OutputLogger, private cmXMLParser { @@ -423,7 +410,6 @@ private: } }; -//---------------------------------------------------------------------------- void cmCTestSVN::LoadRevisions() { // Get revisions for all the external repositories @@ -436,7 +422,6 @@ void cmCTestSVN::LoadRevisions() } } -//---------------------------------------------------------------------------- void cmCTestSVN::LoadRevisions(SVNInfo &svninfo) { // We are interested in every revision included in the update. @@ -462,7 +447,6 @@ void cmCTestSVN::LoadRevisions(SVNInfo &svninfo) this->RunSVNCommand(svn_log, &out, &err); } -//---------------------------------------------------------------------------- void cmCTestSVN::DoRevisionSVN(Revision const& revision, std::vector<Change> const& changes) { @@ -482,7 +466,6 @@ void cmCTestSVN::DoRevisionSVN(Revision const& revision, this->cmCTestGlobalVC::DoRevision(revision, changes); } -//---------------------------------------------------------------------------- class cmCTestSVN::StatusParser: public cmCTestVC::LineParser { public: @@ -523,7 +506,6 @@ private: } }; -//---------------------------------------------------------------------------- void cmCTestSVN::LoadModifications() { // Run "svn status" which reports local modifications. @@ -534,7 +516,6 @@ void cmCTestSVN::LoadModifications() this->RunSVNCommand(svn_status, &out, &err); } -//---------------------------------------------------------------------------- void cmCTestSVN::WriteXMLGlobal(cmXMLWriter& xml) { this->cmCTestGlobalVC::WriteXMLGlobal(xml); @@ -542,7 +523,6 @@ void cmCTestSVN::WriteXMLGlobal(cmXMLWriter& xml) xml.Element("SVNPath", this->RootInfo->Base); } -//---------------------------------------------------------------------------- class cmCTestSVN::ExternalParser: public cmCTestVC::LineParser { public: @@ -581,7 +561,6 @@ private: } }; -//---------------------------------------------------------------------------- void cmCTestSVN::LoadExternals() { // Run "svn status" to get the list of external repositories @@ -592,7 +571,6 @@ void cmCTestSVN::LoadExternals() this->RunSVNCommand(svn_status, &out, &err); } -//---------------------------------------------------------------------------- std::string cmCTestSVN::SVNInfo::BuildLocalPath(std::string const& path) const { std::string local_path; diff --git a/Source/CTest/cmCTestScriptHandler.cxx b/Source/CTest/cmCTestScriptHandler.cxx index ee15271..bde7a6d 100644 --- a/Source/CTest/cmCTestScriptHandler.cxx +++ b/Source/CTest/cmCTestScriptHandler.cxx @@ -13,25 +13,25 @@ #include "cmCTestScriptHandler.h" #include "cmCTest.h" -#include "cmake.h" #include "cmFunctionBlocker.h" -#include "cmMakefile.h" -#include "cmGlobalGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" +#include "cmake.h" //#include <cmsys/RegularExpression.hxx> -#include <cmsys/Process.h> #include <cmsys/Directory.hxx> +#include <cmsys/Process.h> // used for sleep #ifdef _WIN32 #include "windows.h" #endif +#include <float.h> +#include <math.h> #include <stdlib.h> #include <time.h> -#include <math.h> -#include <float.h> // needed for sleep #if !defined(_WIN32) @@ -78,7 +78,6 @@ IsFunctionBlocked(const cmListFileFunction& , cmMakefile &, return false; } -//---------------------------------------------------------------------- cmCTestScriptHandler::cmCTestScriptHandler() { this->Backup = false; @@ -95,7 +94,6 @@ cmCTestScriptHandler::cmCTestScriptHandler() this->ContinuousDuration = -1; } -//---------------------------------------------------------------------- void cmCTestScriptHandler::Initialize() { this->Superclass::Initialize(); @@ -132,7 +130,6 @@ void cmCTestScriptHandler::Initialize() delete this->CMake; } -//---------------------------------------------------------------------- cmCTestScriptHandler::~cmCTestScriptHandler() { delete this->Makefile; @@ -141,7 +138,6 @@ cmCTestScriptHandler::~cmCTestScriptHandler() } -//---------------------------------------------------------------------- // just adds an argument to the vector void cmCTestScriptHandler::AddConfigurationScript(const char *script, bool pscope) @@ -151,7 +147,6 @@ void cmCTestScriptHandler::AddConfigurationScript(const char *script, } -//---------------------------------------------------------------------- // the generic entry point for handling scripts, this routine will run all // the scripts provides a -S arguments int cmCTestScriptHandler::ProcessHandler() @@ -184,7 +179,6 @@ void cmCTestScriptHandler::UpdateElapsedTime() } } -//---------------------------------------------------------------------- void cmCTestScriptHandler::AddCTestCommand(cmCTestCommand* command) { cmCTestCommand* newCom = command; @@ -348,7 +342,6 @@ void cmCTestScriptHandler::CreateCMake() this->AddCTestCommand(new cmCTestUploadCommand); } -//---------------------------------------------------------------------- // this sets up some variables for the script to use, creates the required // cmake instance and generators, and then reads in the script int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) @@ -443,7 +436,6 @@ int cmCTestScriptHandler::ReadInScript(const std::string& total_script_arg) } -//---------------------------------------------------------------------- // extract variabels from the script to set ivars int cmCTestScriptHandler::ExtractVariables() { @@ -560,7 +552,6 @@ int cmCTestScriptHandler::ExtractVariables() return 0; } -//---------------------------------------------------------------------- void cmCTestScriptHandler::SleepInSeconds(unsigned int secondsToWait) { #if defined(_WIN32) @@ -570,7 +561,6 @@ void cmCTestScriptHandler::SleepInSeconds(unsigned int secondsToWait) #endif } -//---------------------------------------------------------------------- // run a specific script int cmCTestScriptHandler::RunConfigurationScript (const std::string& total_script_arg, bool pscope) @@ -610,7 +600,6 @@ int cmCTestScriptHandler::RunConfigurationScript return result; } -//---------------------------------------------------------------------- int cmCTestScriptHandler::RunCurrentScript() { int result; @@ -673,7 +662,6 @@ int cmCTestScriptHandler::RunCurrentScript() return result; } -//---------------------------------------------------------------------- int cmCTestScriptHandler::CheckOutSourceDir() { std::string command; @@ -702,7 +690,6 @@ int cmCTestScriptHandler::CheckOutSourceDir() return 0; } -//---------------------------------------------------------------------- int cmCTestScriptHandler::BackupDirectories() { int retVal; @@ -743,7 +730,6 @@ int cmCTestScriptHandler::BackupDirectories() } -//---------------------------------------------------------------------- int cmCTestScriptHandler::PerformExtraUpdates() { std::string command; @@ -786,7 +772,6 @@ int cmCTestScriptHandler::PerformExtraUpdates() } -//---------------------------------------------------------------------- // run a single dashboard entry int cmCTestScriptHandler::RunConfigurationDashboard() { @@ -977,7 +962,6 @@ int cmCTestScriptHandler::RunConfigurationDashboard() return 0; } -//------------------------------------------------------------------------- bool cmCTestScriptHandler::WriteInitialCache(const char* directory, const char* text) { @@ -1002,7 +986,6 @@ bool cmCTestScriptHandler::WriteInitialCache(const char* directory, return true; } -//------------------------------------------------------------------------- void cmCTestScriptHandler::RestoreBackupDirectories() { // if we backed up the dirs and the build failed, then restore @@ -1074,7 +1057,6 @@ bool cmCTestScriptHandler::EmptyBinaryDirectory(const char *sname) return false; } -//------------------------------------------------------------------------- bool cmCTestScriptHandler::TryToRemoveBinaryDirectoryOnce( const std::string& directoryPath) { @@ -1114,7 +1096,6 @@ bool cmCTestScriptHandler::TryToRemoveBinaryDirectoryOnce( return cmSystemTools::RemoveADirectory(directoryPath); } -//------------------------------------------------------------------------- double cmCTestScriptHandler::GetRemainingTimeAllowed() { if (!this->Makefile) diff --git a/Source/CTest/cmCTestScriptHandler.h b/Source/CTest/cmCTestScriptHandler.h index c9d0b6a..2b66f70 100644 --- a/Source/CTest/cmCTestScriptHandler.h +++ b/Source/CTest/cmCTestScriptHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestScriptHandler_h #define cmCTestScriptHandler_h - #include "cmCTestGenericHandler.h" + #include "cmListFileCache.h" class cmMakefile; diff --git a/Source/CTest/cmCTestStartCommand.cxx b/Source/CTest/cmCTestStartCommand.cxx index 36576c5..fef5637 100644 --- a/Source/CTest/cmCTestStartCommand.cxx +++ b/Source/CTest/cmCTestStartCommand.cxx @@ -12,9 +12,9 @@ #include "cmCTestStartCommand.h" #include "cmCTest.h" -#include "cmGlobalGenerator.h" #include "cmCTestVC.h" #include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" cmCTestStartCommand::cmCTestStartCommand() { @@ -154,7 +154,6 @@ bool cmCTestStartCommand return this->CTest->InitializeFromCommand(this); } -//---------------------------------------------------------------------------- bool cmCTestStartCommand::InitialCheckout( std::ostream& ofs, std::string const& sourceDir) { diff --git a/Source/CTest/cmCTestSubmitCommand.cxx b/Source/CTest/cmCTestSubmitCommand.cxx index 5a8090c..6174624 100644 --- a/Source/CTest/cmCTestSubmitCommand.cxx +++ b/Source/CTest/cmCTestSubmitCommand.cxx @@ -161,7 +161,6 @@ cmCTestGenericHandler* cmCTestSubmitCommand::InitializeHandler() return handler; } -//---------------------------------------------------------------------------- bool cmCTestSubmitCommand::InitialPass(std::vector<std::string> const& args, cmExecutionStatus& status) { @@ -169,7 +168,6 @@ bool cmCTestSubmitCommand::InitialPass(std::vector<std::string> const& args, return this->cmCTestHandlerCommand::InitialPass(args, status); } -//---------------------------------------------------------------------------- bool cmCTestSubmitCommand::CheckArgumentKeyword(std::string const& arg) { if (this->CDashUpload) @@ -227,7 +225,6 @@ bool cmCTestSubmitCommand::CheckArgumentKeyword(std::string const& arg) } -//---------------------------------------------------------------------------- bool cmCTestSubmitCommand::CheckArgumentValue(std::string const& arg) { // Handle states specific to this command. diff --git a/Source/CTest/cmCTestSubmitCommand.h b/Source/CTest/cmCTestSubmitCommand.h index 19e8eaf..ebc8c36 100644 --- a/Source/CTest/cmCTestSubmitCommand.h +++ b/Source/CTest/cmCTestSubmitCommand.h @@ -13,6 +13,7 @@ #define cmCTestSubmitCommand_h #include "cmCTestHandlerCommand.h" + #include "cmCTest.h" /** \class cmCTestSubmit diff --git a/Source/CTest/cmCTestSubmitHandler.cxx b/Source/CTest/cmCTestSubmitHandler.cxx index 833cad6..2153b8f 100644 --- a/Source/CTest/cmCTestSubmitHandler.cxx +++ b/Source/CTest/cmCTestSubmitHandler.cxx @@ -10,25 +10,26 @@ See the License for more information. ============================================================================*/ #include "cmCTestSubmitHandler.h" + +#include "cmCTest.h" #include "cmCTestScriptHandler.h" -#include "cmake.h" +#include "cmGeneratedFileStream.h" +#include "cmState.h" #include "cmSystemTools.h" #include "cmVersion.h" -#include "cmGeneratedFileStream.h" -#include "cmCTest.h" #include "cmXMLParser.h" -#include "cmState.h" +#include "cmake.h" -#include <cmsys/Process.h> #include <cmsys/Base64.h> +#include <cmsys/Process.h> // For XML-RPC submission #include "cm_xmlrpc.h" #include <cm_jsoncpp_reader.h> // For curl submission -#include "cmCurl.h" #include "cmCTestCurl.h" +#include "cmCurl.h" #include <sys/stat.h> @@ -36,7 +37,6 @@ typedef std::vector<char> cmCTestSubmitHandlerVectorOfChar; -//---------------------------------------------------------------------------- class cmCTestSubmitHandler::ResponseParser: public cmXMLParser { public: @@ -145,13 +145,11 @@ cmCTestSubmitHandlerCurlDebugCallback(CURL *, curl_infotype, char *chPtr, return size; } -//---------------------------------------------------------------------------- cmCTestSubmitHandler::cmCTestSubmitHandler() : HTTPProxy(), FTPProxy() { this->Initialize(); } -//---------------------------------------------------------------------------- void cmCTestSubmitHandler::Initialize() { // We submit all available parts by default. @@ -173,7 +171,6 @@ void cmCTestSubmitHandler::Initialize() this->Files.clear(); } -//---------------------------------------------------------------------------- bool cmCTestSubmitHandler::SubmitUsingFTP(const std::string& localprefix, const std::set<std::string>& files, const std::string& remoteprefix, @@ -327,7 +324,6 @@ bool cmCTestSubmitHandler::SubmitUsingFTP(const std::string& localprefix, return true; } -//---------------------------------------------------------------------------- // Uploading files is simpler bool cmCTestSubmitHandler::SubmitUsingHTTP(const std::string& localprefix, const std::set<std::string>& files, @@ -642,7 +638,6 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(const std::string& localprefix, return true; } -//---------------------------------------------------------------------------- void cmCTestSubmitHandler ::ParseResponse(cmCTestSubmitHandlerVectorOfChar chunk) { @@ -679,7 +674,6 @@ void cmCTestSubmitHandler } } -//---------------------------------------------------------------------------- bool cmCTestSubmitHandler::TriggerUsingHTTP( const std::set<std::string>& files, const std::string& remoteprefix, @@ -820,7 +814,6 @@ bool cmCTestSubmitHandler::TriggerUsingHTTP( return true; } -//---------------------------------------------------------------------------- bool cmCTestSubmitHandler::SubmitUsingSCP( const std::string& scp_command, const std::string& localprefix, @@ -922,7 +915,6 @@ bool cmCTestSubmitHandler::SubmitUsingSCP( return true; } -//---------------------------------------------------------------------------- bool cmCTestSubmitHandler::SubmitUsingCP( const std::string& localprefix, const std::set<std::string>& files, @@ -932,12 +924,14 @@ bool cmCTestSubmitHandler::SubmitUsingCP( if ( localprefix.empty() || files.empty() || remoteprefix.empty() || destination.empty() ) { + /* clang-format off */ cmCTestLog(this->CTest, ERROR_MESSAGE, "Missing arguments for submit via cp:\n" << "\tlocalprefix: " << localprefix << "\n" << "\tNumber of files: " << files.size() << "\n" << "\tremoteprefix: " << remoteprefix << "\n" << "\tdestination: " << destination << std::endl); + /* clang-format on */ return 0; } @@ -964,7 +958,6 @@ bool cmCTestSubmitHandler::SubmitUsingCP( } -//---------------------------------------------------------------------------- #if defined(CTEST_USE_XMLRPC) bool cmCTestSubmitHandler::SubmitUsingXMLRPC(const std::string& localprefix, const std::set<std::string>& files, @@ -1235,7 +1228,6 @@ int cmCTestSubmitHandler::HandleCDashUploadFile(std::string const& file, return 0; } -//---------------------------------------------------------------------------- int cmCTestSubmitHandler::ProcessHandler() { const char* cdashUploadFile = this->GetOption("CDashUploadFile"); @@ -1661,7 +1653,6 @@ int cmCTestSubmitHandler::ProcessHandler() return -1; } -//---------------------------------------------------------------------------- std::string cmCTestSubmitHandler::GetSubmitResultsPrefix() { std::string buildname = cmCTest::SafeBuildIdField( @@ -1673,7 +1664,6 @@ std::string cmCTestSubmitHandler::GetSubmitResultsPrefix() return name; } -//---------------------------------------------------------------------------- void cmCTestSubmitHandler::SelectParts(std::set<cmCTest::Part> const& parts) { // Check whether each part is selected. @@ -1685,7 +1675,6 @@ void cmCTestSubmitHandler::SelectParts(std::set<cmCTest::Part> const& parts) } } -//---------------------------------------------------------------------------- void cmCTestSubmitHandler::SelectFiles(cmCTest::SetOfStrings const& files) { this->Files.insert(files.begin(), files.end()); diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index 59ed98e..b477f5f 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -11,31 +11,31 @@ ============================================================================*/ #include "cmCTestTestHandler.h" -#include "cmCTestMultiProcessHandler.h" -#include "cmCTestBatchTestHandler.h" + #include "cmCTest.h" +#include "cmCTestBatchTestHandler.h" +#include "cmCTestMultiProcessHandler.h" #include "cmCTestRunTest.h" -#include "cmake.h" +#include "cmCommand.h" #include "cmGeneratedFileStream.h" -#include <cmsys/Process.h> -#include <cmsys/RegularExpression.hxx> -#include <cmsys/Base64.h> -#include <cmsys/Directory.hxx> -#include <cmsys/FStream.hxx> -#include "cmMakefile.h" #include "cmGlobalGenerator.h" -#include "cmCommand.h" +#include "cmMakefile.h" #include "cmSystemTools.h" #include "cmXMLWriter.h" #include "cm_utf8.h" +#include "cmake.h" +#include <cmsys/Base64.h> +#include <cmsys/Directory.hxx> +#include <cmsys/FStream.hxx> +#include <cmsys/Process.h> +#include <cmsys/RegularExpression.hxx> -#include <stdlib.h> -#include <math.h> #include <float.h> +#include <math.h> +#include <stdlib.h> #include <set> -//---------------------------------------------------------------------- class cmCTestSubdirCommand : public cmCommand { public: @@ -66,7 +66,6 @@ public: cmCTestTestHandler* TestHandler; }; -//---------------------------------------------------------------------- bool cmCTestSubdirCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -130,7 +129,6 @@ bool cmCTestSubdirCommand return true; } -//---------------------------------------------------------------------- class cmCTestAddSubdirectoryCommand : public cmCommand { public: @@ -161,7 +159,6 @@ public: cmCTestTestHandler* TestHandler; }; -//---------------------------------------------------------------------- bool cmCTestAddSubdirectoryCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -214,7 +211,6 @@ bool cmCTestAddSubdirectoryCommand return true; } -//---------------------------------------------------------------------- class cmCTestAddTestCommand : public cmCommand { public: @@ -245,7 +241,6 @@ public: cmCTestTestHandler* TestHandler; }; -//---------------------------------------------------------------------- bool cmCTestAddTestCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -257,7 +252,6 @@ bool cmCTestAddTestCommand return this->TestHandler->AddTest(args); } -//---------------------------------------------------------------------- class cmCTestSetTestsPropertiesCommand : public cmCommand { public: @@ -289,14 +283,12 @@ public: cmCTestTestHandler* TestHandler; }; -//---------------------------------------------------------------------- bool cmCTestSetTestsPropertiesCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { return this->TestHandler->SetTestsProperties(args); } -//---------------------------------------------------------------------- // get the next number in a string with numbers separated by , // pos is the start of the search and pos2 is the end of the search // pos becomes pos2 after a call to GetNextNumber. @@ -334,7 +326,6 @@ inline int GetNextNumber(std::string const& in, } } -//---------------------------------------------------------------------- // get the next number in a string with numbers separated by , // pos is the start of the search and pos2 is the end of the search // pos becomes pos2 after a call to GetNextNumber. @@ -373,7 +364,6 @@ inline int GetNextRealNumber(std::string const& in, } -//---------------------------------------------------------------------- cmCTestTestHandler::cmCTestTestHandler() { this->UseUnion = false; @@ -399,7 +389,6 @@ cmCTestTestHandler::cmCTestTestHandler() "(<DartMeasurement[^<]*</DartMeasurement[a-zA-Z]*>)"); } -//---------------------------------------------------------------------- void cmCTestTestHandler::Initialize() { this->Superclass::Initialize(); @@ -434,7 +423,6 @@ void cmCTestTestHandler::Initialize() this->TestList.clear(); } -//---------------------------------------------------------------------- void cmCTestTestHandler::PopulateCustomVectors(cmMakefile *mf) { this->CTest->PopulateCustomVector(mf, "CTEST_CUSTOM_PRE_TEST", @@ -452,7 +440,6 @@ void cmCTestTestHandler::PopulateCustomVectors(cmMakefile *mf) this->CustomMaximumFailedTestOutputSize); } -//---------------------------------------------------------------------- int cmCTestTestHandler::PreProcessHandler() { if ( !this->ExecuteCommands(this->CustomPreTest) ) @@ -464,7 +451,6 @@ int cmCTestTestHandler::PreProcessHandler() return 1; } -//---------------------------------------------------------------------- int cmCTestTestHandler::PostProcessHandler() { if ( !this->ExecuteCommands(this->CustomPostTest) ) @@ -476,7 +462,6 @@ int cmCTestTestHandler::PostProcessHandler() return 1; } -//---------------------------------------------------------------------- //clearly it would be nice if this were broken up into a few smaller //functions and commented... int cmCTestTestHandler::ProcessHandler() @@ -651,7 +636,6 @@ int cmCTestTestHandler::ProcessHandler() return 0; } -//---------------------------------------------------------------------- void cmCTestTestHandler::PrintLabelSummary() { cmCTestTestHandler::ListOfTests::iterator it = this->TestList.begin(); @@ -738,7 +722,6 @@ void cmCTestTestHandler::PrintLabelSummary() } -//---------------------------------------------------------------------- void cmCTestTestHandler::CheckLabelFilterInclude(cmCTestTestProperties& it) { // if not using Labels to filter then return @@ -772,7 +755,6 @@ void cmCTestTestHandler::CheckLabelFilterInclude(cmCTestTestProperties& it) } -//---------------------------------------------------------------------- void cmCTestTestHandler::CheckLabelFilterExclude(cmCTestTestProperties& it) { // if not using Labels to filter then return @@ -804,14 +786,12 @@ void cmCTestTestHandler::CheckLabelFilterExclude(cmCTestTestProperties& it) } } -//---------------------------------------------------------------------- void cmCTestTestHandler::CheckLabelFilter(cmCTestTestProperties& it) { this->CheckLabelFilterInclude(it); this->CheckLabelFilterExclude(it); } -//---------------------------------------------------------------------- void cmCTestTestHandler::ComputeTestList() { this->TestList.clear(); // clear list of test @@ -1059,7 +1039,6 @@ bool cmCTestTestHandler::GetValue(const char* tag, return ret; } -//--------------------------------------------------------------------- void cmCTestTestHandler::ProcessDirectory(std::vector<std::string> &passed, std::vector<std::string> &failed) { @@ -1157,12 +1136,10 @@ void cmCTestTestHandler::ProcessDirectory(std::vector<std::string> &passed, << this->CTest->CurrentTime() << std::endl; } -//---------------------------------------------------------------------- void cmCTestTestHandler::GenerateTestCommand(std::vector<std::string>&, int) { } -//---------------------------------------------------------------------- void cmCTestTestHandler::GenerateDartOutput(cmXMLWriter& xml) { if ( !this->CTest->GetProduceXML() ) @@ -1270,7 +1247,6 @@ void cmCTestTestHandler::GenerateDartOutput(cmXMLWriter& xml) this->CTest->EndXML(xml); } -//---------------------------------------------------------------------------- void cmCTestTestHandler::WriteTestResultHeader(cmXMLWriter& xml, cmCTestTestResult* result) { @@ -1294,7 +1270,6 @@ void cmCTestTestHandler::WriteTestResultHeader(cmXMLWriter& xml, xml.Element("FullCommandLine", result->FullCommandLine); } -//---------------------------------------------------------------------------- void cmCTestTestHandler::WriteTestResultFooter(cmXMLWriter& xml, cmCTestTestResult* result) { @@ -1313,7 +1288,6 @@ void cmCTestTestHandler::WriteTestResultFooter(cmXMLWriter& xml, xml.EndElement(); // Test } -//---------------------------------------------------------------------- void cmCTestTestHandler::AttachFiles(cmXMLWriter& xml, cmCTestTestResult* result) { @@ -1342,7 +1316,6 @@ void cmCTestTestHandler::AttachFiles(cmXMLWriter& xml, } } -//---------------------------------------------------------------------- int cmCTestTestHandler::ExecuteCommands(std::vector<std::string>& vec) { std::vector<std::string>::iterator it; @@ -1364,7 +1337,6 @@ int cmCTestTestHandler::ExecuteCommands(std::vector<std::string>& vec) } -//---------------------------------------------------------------------- // Find the appropriate executable to run for a test std::string cmCTestTestHandler::FindTheExecutable(const char *exe) { @@ -1454,7 +1426,6 @@ void cmCTestTestHandler } -//---------------------------------------------------------------------- // Find the appropriate executable to run for a test std::string cmCTestTestHandler ::FindExecutable(cmCTest *ctest, @@ -1564,7 +1535,6 @@ std::string cmCTestTestHandler } -//---------------------------------------------------------------------- void cmCTestTestHandler::GetListOfTests() { if ( !this->IncludeLabelRegExp.empty() ) @@ -1647,20 +1617,17 @@ void cmCTestTestHandler::GetListOfTests() "Done constructing a list of tests" << std::endl, this->Quiet); } -//---------------------------------------------------------------------- void cmCTestTestHandler::UseIncludeRegExp() { this->UseIncludeRegExpFlag = true; } -//---------------------------------------------------------------------- void cmCTestTestHandler::UseExcludeRegExp() { this->UseExcludeRegExpFlag = true; this->UseExcludeRegExpFirst = this->UseIncludeRegExpFlag ? false : true; } -//---------------------------------------------------------------------- const char* cmCTestTestHandler::GetTestStatus(int status) { static const char statuses[][100] = { @@ -1684,7 +1651,6 @@ const char* cmCTestTestHandler::GetTestStatus(int status) return statuses[status]; } -//---------------------------------------------------------------------- void cmCTestTestHandler::ExpandTestsToRunInformation(size_t numTests) { if (this->TestsToRunString.empty()) @@ -1840,10 +1806,8 @@ void cmCTestTestHandler::ExpandTestsToRunInformationForRerunFailed() } } -//---------------------------------------------------------------------- // Just for convenience #define SPACE_REGEX "[ \t\r\n]" -//---------------------------------------------------------------------- void cmCTestTestHandler::GenerateRegressionImages( cmXMLWriter& xml, const std::string& dart) { @@ -2030,19 +1994,16 @@ void cmCTestTestHandler::GenerateRegressionImages( } } -//---------------------------------------------------------------------- void cmCTestTestHandler::SetIncludeRegExp(const char *arg) { this->IncludeRegExp = arg; } -//---------------------------------------------------------------------- void cmCTestTestHandler::SetExcludeRegExp(const char *arg) { this->ExcludeRegExp = arg; } -//---------------------------------------------------------------------- void cmCTestTestHandler::SetTestsToRunInformation(const char* in) { if ( !in ) @@ -2064,7 +2025,6 @@ void cmCTestTestHandler::SetTestsToRunInformation(const char* in) } } -//---------------------------------------------------------------------------- bool cmCTestTestHandler::CleanTestOutput(std::string& output, size_t length) { if(!length || length >= output.size() || @@ -2106,7 +2066,6 @@ bool cmCTestTestHandler::CleanTestOutput(std::string& output, size_t length) return true; } -//---------------------------------------------------------------------- bool cmCTestTestHandler::SetTestsProperties( const std::vector<std::string>& args) { @@ -2286,7 +2245,6 @@ bool cmCTestTestHandler::SetTestsProperties( return true; } -//---------------------------------------------------------------------- bool cmCTestTestHandler::AddTest(const std::vector<std::string>& args) { const std::string& testname = args[0]; diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h index d12c2b6..28338dd 100644 --- a/Source/CTest/cmCTestTestHandler.h +++ b/Source/CTest/cmCTestTestHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestTestHandler_h #define cmCTestTestHandler_h - #include "cmCTestGenericHandler.h" + #include <cmsys/RegularExpression.hxx> class cmMakefile; diff --git a/Source/CTest/cmCTestUpdateCommand.cxx b/Source/CTest/cmCTestUpdateCommand.cxx index dfda9f1..1bf60fc 100644 --- a/Source/CTest/cmCTestUpdateCommand.cxx +++ b/Source/CTest/cmCTestUpdateCommand.cxx @@ -55,6 +55,8 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler() this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "GITUpdateOptions", "CTEST_GIT_UPDATE_OPTIONS", this->Quiet); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, + "GITInitSubmodules", "CTEST_GIT_INIT_SUBMODULES", this->Quiet); + this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "GITUpdateCustom", "CTEST_GIT_UPDATE_CUSTOM", this->Quiet); this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile, "UpdateVersionOnly", "CTEST_UPDATE_VERSION_ONLY", this->Quiet); diff --git a/Source/CTest/cmCTestUpdateHandler.cxx b/Source/CTest/cmCTestUpdateHandler.cxx index bf2f34a..85624e0 100644 --- a/Source/CTest/cmCTestUpdateHandler.cxx +++ b/Source/CTest/cmCTestUpdateHandler.cxx @@ -12,23 +12,23 @@ #include "cmCTestUpdateHandler.h" +#include "cmCLocaleEnvironmentScope.h" #include "cmCTest.h" -#include "cmake.h" -#include "cmMakefile.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" +#include "cmMakefile.h" #include "cmVersion.h" -#include "cmGeneratedFileStream.h" #include "cmXMLParser.h" #include "cmXMLWriter.h" -#include "cmCLocaleEnvironmentScope.h" +#include "cmake.h" -#include "cmCTestVC.h" -#include "cmCTestCVS.h" -#include "cmCTestSVN.h" #include "cmCTestBZR.h" +#include "cmCTestCVS.h" #include "cmCTestGIT.h" #include "cmCTestHG.h" #include "cmCTestP4.h" +#include "cmCTestSVN.h" +#include "cmCTestVC.h" #include <cmsys/auto_ptr.hxx> @@ -40,11 +40,10 @@ #include "windows.h" #endif -#include <stdlib.h> -#include <math.h> #include <float.h> +#include <math.h> +#include <stdlib.h> -//---------------------------------------------------------------------- static const char* cmCTestUpdateHandlerUpdateStrings[] = { "Unknown", @@ -66,12 +65,10 @@ static const char* cmCTestUpdateHandlerUpdateToString(int type) return cmCTestUpdateHandlerUpdateStrings[type]; } -//---------------------------------------------------------------------- cmCTestUpdateHandler::cmCTestUpdateHandler() { } -//---------------------------------------------------------------------- void cmCTestUpdateHandler::Initialize() { this->Superclass::Initialize(); @@ -79,7 +76,6 @@ void cmCTestUpdateHandler::Initialize() this->UpdateType = e_CVS; } -//---------------------------------------------------------------------- int cmCTestUpdateHandler::DetermineType(const char* cmd, const char* type) { cmCTestOptionalLog(this->CTest, DEBUG, @@ -148,7 +144,6 @@ int cmCTestUpdateHandler::DetermineType(const char* cmd, const char* type) return cmCTestUpdateHandler::e_UNKNOWN; } -//---------------------------------------------------------------------- //clearly it would be nice if this were broken up into a few smaller //functions and commented... int cmCTestUpdateHandler::ProcessHandler() @@ -291,7 +286,6 @@ int cmCTestUpdateHandler::ProcessHandler() return updated? numUpdated : -1; } -//---------------------------------------------------------------------- int cmCTestUpdateHandler::DetectVCS(const char* dir) { std::string sourceDirectory = dir; @@ -341,7 +335,6 @@ int cmCTestUpdateHandler::DetectVCS(const char* dir) return cmCTestUpdateHandler::e_UNKNOWN; } -//---------------------------------------------------------------------- bool cmCTestUpdateHandler::SelectVCS() { // Get update command diff --git a/Source/CTest/cmCTestUpdateHandler.h b/Source/CTest/cmCTestUpdateHandler.h index d2423c0..463703c 100644 --- a/Source/CTest/cmCTestUpdateHandler.h +++ b/Source/CTest/cmCTestUpdateHandler.h @@ -13,8 +13,8 @@ #ifndef cmCTestUpdateHandler_h #define cmCTestUpdateHandler_h - #include "cmCTestGenericHandler.h" + #include "cmListFileCache.h" /** \class cmCTestUpdateHandler diff --git a/Source/CTest/cmCTestUploadCommand.cxx b/Source/CTest/cmCTestUploadCommand.cxx index f5000dd..7c24e62 100644 --- a/Source/CTest/cmCTestUploadCommand.cxx +++ b/Source/CTest/cmCTestUploadCommand.cxx @@ -31,7 +31,6 @@ cmCTestGenericHandler* cmCTestUploadCommand::InitializeHandler() } -//---------------------------------------------------------------------------- bool cmCTestUploadCommand::CheckArgumentKeyword(std::string const& arg) { if(arg == "FILES") @@ -49,7 +48,6 @@ bool cmCTestUploadCommand::CheckArgumentKeyword(std::string const& arg) } -//---------------------------------------------------------------------------- bool cmCTestUploadCommand::CheckArgumentValue(std::string const& arg) { if(this->ArgumentDoing == ArgumentDoingFiles) diff --git a/Source/CTest/cmCTestUploadCommand.h b/Source/CTest/cmCTestUploadCommand.h index 4a07608..1802254 100644 --- a/Source/CTest/cmCTestUploadCommand.h +++ b/Source/CTest/cmCTestUploadCommand.h @@ -13,6 +13,7 @@ #define cmCTestUploadCommand_h #include "cmCTestHandlerCommand.h" + #include "cmCTest.h" /** \class cmCTestUpload diff --git a/Source/CTest/cmCTestUploadHandler.cxx b/Source/CTest/cmCTestUploadHandler.cxx index 5c6b229..6f0a024 100644 --- a/Source/CTest/cmCTestUploadHandler.cxx +++ b/Source/CTest/cmCTestUploadHandler.cxx @@ -15,13 +15,11 @@ #include "cmVersion.h" #include "cmXMLWriter.h" -//---------------------------------------------------------------------------- cmCTestUploadHandler::cmCTestUploadHandler() { this->Initialize(); } -//---------------------------------------------------------------------------- void cmCTestUploadHandler::Initialize() { this->Superclass::Initialize(); @@ -33,7 +31,6 @@ void cmCTestUploadHandler::SetFiles(const cmCTest::SetOfStrings& files) this->Files = files; } -//---------------------------------------------------------------------------- int cmCTestUploadHandler::ProcessHandler() { cmGeneratedFileStream ofs; diff --git a/Source/CTest/cmCTestVC.cxx b/Source/CTest/cmCTestVC.cxx index 8eff4d6..f3d699b 100644 --- a/Source/CTest/cmCTestVC.cxx +++ b/Source/CTest/cmCTestVC.cxx @@ -17,7 +17,6 @@ #include <cmsys/Process.h> -//---------------------------------------------------------------------------- cmCTestVC::cmCTestVC(cmCTest* ct, std::ostream& log): CTest(ct), Log(log) { this->PathCount[PathUpdated] = 0; @@ -28,24 +27,20 @@ cmCTestVC::cmCTestVC(cmCTest* ct, std::ostream& log): CTest(ct), Log(log) this->Unknown.Rev = "Unknown"; } -//---------------------------------------------------------------------------- cmCTestVC::~cmCTestVC() { } -//---------------------------------------------------------------------------- void cmCTestVC::SetCommandLineTool(std::string const& tool) { this->CommandLineTool = tool; } -//---------------------------------------------------------------------------- void cmCTestVC::SetSourceDirectory(std::string const& dir) { this->SourceDirectory = dir; } -//---------------------------------------------------------------------------- bool cmCTestVC::InitialCheckout(const char* command) { cmCTestLog(this->CTest, HANDLER_OUTPUT, @@ -86,7 +81,6 @@ bool cmCTestVC::InitialCheckout(const char* command) return result; } -//---------------------------------------------------------------------------- bool cmCTestVC::RunChild(char const* const* cmd, OutputParser* out, OutputParser* err, const char* workDir) { @@ -102,7 +96,6 @@ bool cmCTestVC::RunChild(char const* const* cmd, OutputParser* out, return result == 0; } -//---------------------------------------------------------------------------- std::string cmCTestVC::ComputeCommandLine(char const* const* cmd) { std::ostringstream line; @@ -115,7 +108,6 @@ std::string cmCTestVC::ComputeCommandLine(char const* const* cmd) return line.str(); } -//---------------------------------------------------------------------------- bool cmCTestVC::RunUpdateCommand(char const* const* cmd, OutputParser* out, OutputParser* err) { @@ -131,7 +123,6 @@ bool cmCTestVC::RunUpdateCommand(char const* const* cmd, return this->RunChild(cmd, out, err); } -//---------------------------------------------------------------------------- std::string cmCTestVC::GetNightlyTime() { // Get the nightly start time corresponding to the current dau. @@ -149,7 +140,6 @@ std::string cmCTestVC::GetNightlyTime() return std::string(current_time); } -//---------------------------------------------------------------------------- void cmCTestVC::Cleanup() { this->Log << "--- Begin Cleanup ---\n"; @@ -157,13 +147,11 @@ void cmCTestVC::Cleanup() this->Log << "--- End Cleanup ---\n"; } -//---------------------------------------------------------------------------- void cmCTestVC::CleanupImpl() { // We do no cleanup by default. } -//---------------------------------------------------------------------------- bool cmCTestVC::Update() { bool result = true; @@ -181,19 +169,16 @@ bool cmCTestVC::Update() return result; } -//---------------------------------------------------------------------------- void cmCTestVC::NoteOldRevision() { // We do nothing by default. } -//---------------------------------------------------------------------------- void cmCTestVC::NoteNewRevision() { // We do nothing by default. } -//---------------------------------------------------------------------------- bool cmCTestVC::UpdateImpl() { cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, @@ -201,7 +186,6 @@ bool cmCTestVC::UpdateImpl() return true; } -//---------------------------------------------------------------------------- bool cmCTestVC::WriteXML(cmXMLWriter& xml) { this->Log << "--- Begin Revisions ---\n"; @@ -210,7 +194,6 @@ bool cmCTestVC::WriteXML(cmXMLWriter& xml) return result; } -//---------------------------------------------------------------------------- bool cmCTestVC::WriteXMLUpdates(cmXMLWriter&) { cmCTestLog(this->CTest, HANDLER_VERBOSE_OUTPUT, @@ -218,7 +201,6 @@ bool cmCTestVC::WriteXMLUpdates(cmXMLWriter&) return true; } -//---------------------------------------------------------------------------- void cmCTestVC::WriteXMLEntry(cmXMLWriter& xml, std::string const& path, std::string const& name, diff --git a/Source/CTest/cmCTestVC.h b/Source/CTest/cmCTestVC.h index bc89302..1caa850 100644 --- a/Source/CTest/cmCTestVC.h +++ b/Source/CTest/cmCTestVC.h @@ -69,7 +69,8 @@ protected: virtual bool WriteXMLUpdates(cmXMLWriter& xml); #if defined(__SUNPRO_CC) && __SUNPRO_CC <= 0x510 -public: // Sun CC 5.1 needs help to allow cmCTestSVN::Revision to see this + // Sun CC 5.1 needs help to allow cmCTestSVN::Revision to see this +public: #endif /** Basic information about one revision of a tree or file. */ struct Revision diff --git a/Source/CTest/cmParseBlanketJSCoverage.cxx b/Source/CTest/cmParseBlanketJSCoverage.cxx index 1edd01f..1f1db3e 100644 --- a/Source/CTest/cmParseBlanketJSCoverage.cxx +++ b/Source/CTest/cmParseBlanketJSCoverage.cxx @@ -9,14 +9,14 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include "cmStandardIncludes.h" -#include <stdio.h> -#include <stdlib.h> -#include "cmSystemTools.h" #include "cmParseBlanketJSCoverage.h" + +#include "cmSystemTools.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <stdio.h> +#include <stdlib.h> class cmParseBlanketJSCoverage::JSONParser diff --git a/Source/CTest/cmParseBlanketJSCoverage.h b/Source/CTest/cmParseBlanketJSCoverage.h index fc1d477..d34492d 100644 --- a/Source/CTest/cmParseBlanketJSCoverage.h +++ b/Source/CTest/cmParseBlanketJSCoverage.h @@ -13,7 +13,6 @@ #ifndef cmParseBlanketJSCoverage_h #define cmParseBlanketJSCoverage_h -#include "cmStandardIncludes.h" #include "cmCTestCoverageHandler.h" diff --git a/Source/CTest/cmParseCacheCoverage.cxx b/Source/CTest/cmParseCacheCoverage.cxx index 92bf88e..f838087 100644 --- a/Source/CTest/cmParseCacheCoverage.cxx +++ b/Source/CTest/cmParseCacheCoverage.cxx @@ -1,11 +1,11 @@ -#include "cmStandardIncludes.h" -#include <stdio.h> -#include <stdlib.h> -#include "cmSystemTools.h" #include "cmParseCacheCoverage.h" + +#include "cmSystemTools.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <stdio.h> +#include <stdlib.h> cmParseCacheCoverage::cmParseCacheCoverage( diff --git a/Source/CTest/cmParseCoberturaCoverage.cxx b/Source/CTest/cmParseCoberturaCoverage.cxx index 3ed5cb0..d3b99fb 100644 --- a/Source/CTest/cmParseCoberturaCoverage.cxx +++ b/Source/CTest/cmParseCoberturaCoverage.cxx @@ -1,11 +1,10 @@ -#include "cmStandardIncludes.h" +#include "cmParseCoberturaCoverage.h" + #include "cmSystemTools.h" #include "cmXMLParser.h" -#include "cmParseCoberturaCoverage.h" #include <cmsys/Directory.hxx> #include <cmsys/FStream.hxx> -//---------------------------------------------------------------------------- class cmParseCoberturaCoverage::XMLParser: public cmXMLParser { public: @@ -125,7 +124,6 @@ protected: std::string line; FileLinesType& curFileLines = this->Coverage.TotalCoverage[this->CurFileName]; - curFileLines.push_back(-1); while(cmSystemTools::GetLineFromStream(fin, line)) { curFileLines.push_back(-1); diff --git a/Source/CTest/cmParseCoberturaCoverage.h b/Source/CTest/cmParseCoberturaCoverage.h index ff5954d..c3e3ec9 100644 --- a/Source/CTest/cmParseCoberturaCoverage.h +++ b/Source/CTest/cmParseCoberturaCoverage.h @@ -13,7 +13,6 @@ #ifndef cmParseCoberturaCoverage_h #define cmParseCoberturaCoverage_h -#include "cmStandardIncludes.h" #include "cmCTestCoverageHandler.h" /** \class cmParsePythonCoverage diff --git a/Source/CTest/cmParseDelphiCoverage.cxx b/Source/CTest/cmParseDelphiCoverage.cxx index e453fe1..09c4f02 100644 --- a/Source/CTest/cmParseDelphiCoverage.cxx +++ b/Source/CTest/cmParseDelphiCoverage.cxx @@ -1,12 +1,12 @@ -#include "cmStandardIncludes.h" -#include <stdio.h> -#include <stdlib.h> +#include "cmParseDelphiCoverage.h" + #include "cmSystemTools.h" #include "cmXMLParser.h" -#include "cmParseDelphiCoverage.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <stdio.h> +#include <stdlib.h> class cmParseDelphiCoverage::HTMLParser diff --git a/Source/CTest/cmParseDelphiCoverage.h b/Source/CTest/cmParseDelphiCoverage.h index 018340b..2c3f3b3 100644 --- a/Source/CTest/cmParseDelphiCoverage.h +++ b/Source/CTest/cmParseDelphiCoverage.h @@ -13,7 +13,6 @@ #ifndef cmParseDelphiCoverage_h #define cmParseDelphiCoverage_h -#include "cmStandardIncludes.h" #include "cmCTestCoverageHandler.h" diff --git a/Source/CTest/cmParseGTMCoverage.cxx b/Source/CTest/cmParseGTMCoverage.cxx index f3f8008..ae7dedb 100644 --- a/Source/CTest/cmParseGTMCoverage.cxx +++ b/Source/CTest/cmParseGTMCoverage.cxx @@ -1,11 +1,11 @@ -#include "cmStandardIncludes.h" -#include <stdio.h> -#include <stdlib.h> -#include "cmSystemTools.h" #include "cmParseGTMCoverage.h" + +#include "cmSystemTools.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <stdio.h> +#include <stdlib.h> cmParseGTMCoverage::cmParseGTMCoverage(cmCTestCoverageHandlerContainer& cont, diff --git a/Source/CTest/cmParseJacocoCoverage.cxx b/Source/CTest/cmParseJacocoCoverage.cxx index 47e3b32..d9c4ffb 100644 --- a/Source/CTest/cmParseJacocoCoverage.cxx +++ b/Source/CTest/cmParseJacocoCoverage.cxx @@ -1,12 +1,12 @@ -#include "cmStandardIncludes.h" -#include <stdio.h> -#include <stdlib.h> +#include "cmParseJacocoCoverage.h" + #include "cmSystemTools.h" #include "cmXMLParser.h" -#include "cmParseJacocoCoverage.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <stdio.h> +#include <stdlib.h> class cmParseJacocoCoverage::XMLParser: public cmXMLParser diff --git a/Source/CTest/cmParseJacocoCoverage.h b/Source/CTest/cmParseJacocoCoverage.h index dad05a3..cf86508 100644 --- a/Source/CTest/cmParseJacocoCoverage.h +++ b/Source/CTest/cmParseJacocoCoverage.h @@ -13,7 +13,6 @@ #ifndef cmParseJacocoCoverage_h #define cmParseJacocoCoverage_h -#include "cmStandardIncludes.h" #include "cmCTestCoverageHandler.h" diff --git a/Source/CTest/cmParseMumpsCoverage.cxx b/Source/CTest/cmParseMumpsCoverage.cxx index 225e704..d0c7599 100644 --- a/Source/CTest/cmParseMumpsCoverage.cxx +++ b/Source/CTest/cmParseMumpsCoverage.cxx @@ -1,11 +1,11 @@ -#include "cmStandardIncludes.h" -#include <stdio.h> -#include <stdlib.h> -#include "cmSystemTools.h" #include "cmParseGTMCoverage.h" + +#include "cmSystemTools.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> +#include <stdio.h> +#include <stdlib.h> cmParseMumpsCoverage::cmParseMumpsCoverage( diff --git a/Source/CTest/cmParseMumpsCoverage.h b/Source/CTest/cmParseMumpsCoverage.h index bc71891..ab957b8 100644 --- a/Source/CTest/cmParseMumpsCoverage.h +++ b/Source/CTest/cmParseMumpsCoverage.h @@ -13,7 +13,6 @@ #ifndef cmParseMumpsCoverage_h #define cmParseMumpsCoverage_h -#include "cmStandardIncludes.h" #include "cmCTestCoverageHandler.h" /** \class cmParseMumpsCoverage diff --git a/Source/CTest/cmParsePHPCoverage.cxx b/Source/CTest/cmParsePHPCoverage.cxx index c7f5a68..7c2901e 100644 --- a/Source/CTest/cmParsePHPCoverage.cxx +++ b/Source/CTest/cmParsePHPCoverage.cxx @@ -1,6 +1,6 @@ -#include "cmStandardIncludes.h" -#include "cmSystemTools.h" #include "cmParsePHPCoverage.h" + +#include "cmSystemTools.h" #include <cmsys/Directory.hxx> #include <cmsys/FStream.hxx> diff --git a/Source/CTest/cmParsePHPCoverage.h b/Source/CTest/cmParsePHPCoverage.h index 92a7634..706d036 100644 --- a/Source/CTest/cmParsePHPCoverage.h +++ b/Source/CTest/cmParsePHPCoverage.h @@ -13,7 +13,6 @@ #ifndef cmParsePHPCoverage_h #define cmParsePHPCoverage_h -#include "cmStandardIncludes.h" #include "cmCTestCoverageHandler.h" /** \class cmParsePHPCoverage diff --git a/Source/CTest/cmProcess.cxx b/Source/CTest/cmProcess.cxx index 6441886..d385677 100644 --- a/Source/CTest/cmProcess.cxx +++ b/Source/CTest/cmProcess.cxx @@ -11,6 +11,7 @@ ============================================================================*/ #include <cmProcess.h> + #include <cmSystemTools.h> cmProcess::cmProcess() @@ -68,7 +69,6 @@ bool cmProcess::StartProcess() == cmsysProcess_State_Executing); } -//---------------------------------------------------------------------------- bool cmProcess::Buffer::GetLine(std::string& line) { // Scan for the next newline. @@ -105,7 +105,6 @@ bool cmProcess::Buffer::GetLine(std::string& line) return false; } -//---------------------------------------------------------------------------- bool cmProcess::Buffer::GetLast(std::string& line) { // Return the partial last line, if any. @@ -119,7 +118,6 @@ bool cmProcess::Buffer::GetLast(std::string& line) return false; } -//---------------------------------------------------------------------------- int cmProcess::GetNextOutputLine(std::string& line, double timeout) { for(;;) diff --git a/Source/CTest/cmProcess.h b/Source/CTest/cmProcess.h index c9fd859..326456e 100644 --- a/Source/CTest/cmProcess.h +++ b/Source/CTest/cmProcess.h @@ -12,8 +12,8 @@ #ifndef cmProcess_h #define cmProcess_h - #include "cmStandardIncludes.h" + #include <cmsys/Process.h> diff --git a/Source/CursesDialog/ccmake.cxx b/Source/CursesDialog/ccmake.cxx index 5236e57..6eccf54 100644 --- a/Source/CursesDialog/ccmake.cxx +++ b/Source/CursesDialog/ccmake.cxx @@ -9,20 +9,20 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ +#include "cmCursesStandardIncludes.h" + +#include "../cmDocumentation.h" #include "../cmSystemTools.h" #include "../cmake.h" -#include "../cmDocumentation.h" #include <signal.h> #include <sys/ioctl.h> #include "cmCursesMainForm.h" -#include "cmCursesStandardIncludes.h" #include <cmsys/Encoding.hxx> #include <form.h> -//---------------------------------------------------------------------------- static const char * cmDocumentationName[][2] = { {0, @@ -30,7 +30,6 @@ static const char * cmDocumentationName[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsage[][2] = { {0, @@ -43,7 +42,6 @@ static const char * cmDocumentationUsage[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsageNote[][2] = { {0, @@ -51,7 +49,6 @@ static const char * cmDocumentationUsageNote[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationOptions[][2] = { CMAKE_STANDARD_OPTIONS_TABLE, diff --git a/Source/CursesDialog/cmCursesBoolWidget.cxx b/Source/CursesDialog/cmCursesBoolWidget.cxx index 29d9cb2..0529b78 100644 --- a/Source/CursesDialog/cmCursesBoolWidget.cxx +++ b/Source/CursesDialog/cmCursesBoolWidget.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmCursesBoolWidget.h" + #include "cmCursesMainForm.h" cmCursesBoolWidget::cmCursesBoolWidget(int width, int height, diff --git a/Source/CursesDialog/cmCursesBoolWidget.h b/Source/CursesDialog/cmCursesBoolWidget.h index 8a57c73..65a8ddb 100644 --- a/Source/CursesDialog/cmCursesBoolWidget.h +++ b/Source/CursesDialog/cmCursesBoolWidget.h @@ -13,6 +13,7 @@ #define cmCursesBoolWidget_h #include "cmCursesWidget.h" + class cmCursesMainForm; class cmCursesBoolWidget : public cmCursesWidget diff --git a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx index 7e09242..40c0eb6 100644 --- a/Source/CursesDialog/cmCursesCacheEntryComposite.cxx +++ b/Source/CursesDialog/cmCursesCacheEntryComposite.cxx @@ -10,16 +10,17 @@ See the License for more information. ============================================================================*/ #include "cmCursesCacheEntryComposite.h" -#include "cmCursesOptionsWidget.h" -#include "cmCursesStringWidget.h" -#include "cmCursesLabelWidget.h" -#include "cmCursesBoolWidget.h" -#include "cmCursesPathWidget.h" -#include "cmCursesFilePathWidget.h" -#include "cmCursesDummyWidget.h" + +#include "../cmState.h" #include "../cmSystemTools.h" #include "../cmake.h" -#include "../cmState.h" +#include "cmCursesBoolWidget.h" +#include "cmCursesDummyWidget.h" +#include "cmCursesFilePathWidget.h" +#include "cmCursesLabelWidget.h" +#include "cmCursesOptionsWidget.h" +#include "cmCursesPathWidget.h" +#include "cmCursesStringWidget.h" #include <assert.h> diff --git a/Source/CursesDialog/cmCursesForm.h b/Source/CursesDialog/cmCursesForm.h index 9837f5a..2c45494 100644 --- a/Source/CursesDialog/cmCursesForm.h +++ b/Source/CursesDialog/cmCursesForm.h @@ -12,8 +12,8 @@ #ifndef cmCursesForm_h #define cmCursesForm_h -#include "../cmStandardIncludes.h" #include "cmCursesStandardIncludes.h" + #include <cmsys/FStream.hxx> class cmCursesForm diff --git a/Source/CursesDialog/cmCursesLabelWidget.h b/Source/CursesDialog/cmCursesLabelWidget.h index 98170f5..c31a58c 100644 --- a/Source/CursesDialog/cmCursesLabelWidget.h +++ b/Source/CursesDialog/cmCursesLabelWidget.h @@ -13,7 +13,6 @@ #define cmCursesLabelWidget_h #include "cmCursesWidget.h" -#include "cmCursesStandardIncludes.h" class cmCursesMainForm; diff --git a/Source/CursesDialog/cmCursesLongMessageForm.cxx b/Source/CursesDialog/cmCursesLongMessageForm.cxx index 6144ddc..776d828 100644 --- a/Source/CursesDialog/cmCursesLongMessageForm.cxx +++ b/Source/CursesDialog/cmCursesLongMessageForm.cxx @@ -9,10 +9,11 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ +#include "cmCursesLongMessageForm.h" + #include "../cmSystemTools.h" -#include "../cmake.h" #include "../cmVersion.h" -#include "cmCursesLongMessageForm.h" +#include "../cmake.h" #include "cmCursesMainForm.h" inline int ctrl(int z) diff --git a/Source/CursesDialog/cmCursesLongMessageForm.h b/Source/CursesDialog/cmCursesLongMessageForm.h index 6e37eea..e9bd542 100644 --- a/Source/CursesDialog/cmCursesLongMessageForm.h +++ b/Source/CursesDialog/cmCursesLongMessageForm.h @@ -12,10 +12,10 @@ #ifndef cmCursesLongMessageForm_h #define cmCursesLongMessageForm_h -#include "../cmStandardIncludes.h" -#include "cmCursesForm.h" #include "cmCursesStandardIncludes.h" +#include "cmCursesForm.h" + class cmCursesCacheEntryComposite; class cmCursesLongMessageForm : public cmCursesForm diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index a2fc2c0..2aafc8b 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -9,19 +9,20 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ +#include "cmCursesMainForm.h" + #include "../cmSystemTools.h" #include "../cmVersion.h" #include "../cmake.h" -#include "cmCursesMainForm.h" -#include "cmCursesStringWidget.h" -#include "cmCursesLabelWidget.h" +#include "cmAlgorithms.h" #include "cmCursesBoolWidget.h" -#include "cmCursesPathWidget.h" -#include "cmCursesFilePathWidget.h" -#include "cmCursesDummyWidget.h" #include "cmCursesCacheEntryComposite.h" +#include "cmCursesDummyWidget.h" +#include "cmCursesFilePathWidget.h" +#include "cmCursesLabelWidget.h" #include "cmCursesLongMessageForm.h" -#include "cmAlgorithms.h" +#include "cmCursesPathWidget.h" +#include "cmCursesStringWidget.h" #include "cmState.h" diff --git a/Source/CursesDialog/cmCursesMainForm.h b/Source/CursesDialog/cmCursesMainForm.h index 255c823..9a80ba2 100644 --- a/Source/CursesDialog/cmCursesMainForm.h +++ b/Source/CursesDialog/cmCursesMainForm.h @@ -12,10 +12,11 @@ #ifndef cmCursesMainForm_h #define cmCursesMainForm_h -#include "../cmStandardIncludes.h" -#include "cmCursesForm.h" #include "cmCursesStandardIncludes.h" +#include "../cmState.h" +#include "cmCursesForm.h" + class cmCursesCacheEntryComposite; class cmCursesWidget; class cmake; diff --git a/Source/CursesDialog/cmCursesOptionsWidget.cxx b/Source/CursesDialog/cmCursesOptionsWidget.cxx index 30110a4..05aeab1 100644 --- a/Source/CursesDialog/cmCursesOptionsWidget.cxx +++ b/Source/CursesDialog/cmCursesOptionsWidget.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmCursesOptionsWidget.h" + #include "cmCursesMainForm.h" inline int ctrl(int z) diff --git a/Source/CursesDialog/cmCursesOptionsWidget.h b/Source/CursesDialog/cmCursesOptionsWidget.h index 324014e..ba359d3 100644 --- a/Source/CursesDialog/cmCursesOptionsWidget.h +++ b/Source/CursesDialog/cmCursesOptionsWidget.h @@ -13,6 +13,7 @@ #define cmCursesOptionsWidget_h #include "cmCursesWidget.h" + class cmCursesMainForm; class cmCursesOptionsWidget : public cmCursesWidget diff --git a/Source/CursesDialog/cmCursesStandardIncludes.h b/Source/CursesDialog/cmCursesStandardIncludes.h index 6047ec5..69a05b2 100644 --- a/Source/CursesDialog/cmCursesStandardIncludes.h +++ b/Source/CursesDialog/cmCursesStandardIncludes.h @@ -11,6 +11,9 @@ ============================================================================*/ #ifndef cmCursesStandardIncludes_h #define cmCursesStandardIncludes_h + +#include "../cmStandardIncludes.h" + #if defined(__sun__) && defined(__GNUC__) #define _MSE_INT_H #endif diff --git a/Source/CursesDialog/cmCursesStringWidget.cxx b/Source/CursesDialog/cmCursesStringWidget.cxx index 1c832dd..6bd7b45 100644 --- a/Source/CursesDialog/cmCursesStringWidget.cxx +++ b/Source/CursesDialog/cmCursesStringWidget.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmCursesStringWidget.h" + #include "cmCursesMainForm.h" inline int ctrl(int z) diff --git a/Source/CursesDialog/cmCursesWidget.h b/Source/CursesDialog/cmCursesWidget.h index 7bbdff1..1f53786 100644 --- a/Source/CursesDialog/cmCursesWidget.h +++ b/Source/CursesDialog/cmCursesWidget.h @@ -12,9 +12,10 @@ #ifndef cmCursesWidget_h #define cmCursesWidget_h -#include "../cmState.h" #include "cmCursesStandardIncludes.h" +#include "../cmState.h" + class cmCursesMainForm; class cmCursesWidget diff --git a/Source/QtDialog/AddCacheEntry.cxx b/Source/QtDialog/AddCacheEntry.cxx index 3881045..efb2b65 100644 --- a/Source/QtDialog/AddCacheEntry.cxx +++ b/Source/QtDialog/AddCacheEntry.cxx @@ -11,8 +11,9 @@ ============================================================================*/ #include "AddCacheEntry.h" -#include <QMetaProperty> + #include <QCompleter> +#include <QMetaProperty> static const int NumTypes = 4; static const int DefaultTypeIndex = 0; diff --git a/Source/QtDialog/AddCacheEntry.h b/Source/QtDialog/AddCacheEntry.h index 38c3a74..7c08af6 100644 --- a/Source/QtDialog/AddCacheEntry.h +++ b/Source/QtDialog/AddCacheEntry.h @@ -13,11 +13,12 @@ #ifndef AddCacheEntry_h #define AddCacheEntry_h -#include <QWidget> +#include "QCMake.h" + #include <QCheckBox> #include <QStringList> +#include <QWidget> -#include "QCMake.h" #include "ui_AddCacheEntry.h" class AddCacheEntry : public QWidget, public Ui::AddCacheEntry diff --git a/Source/QtDialog/CMakeSetup.cxx b/Source/QtDialog/CMakeSetup.cxx index 4f93a77..b78a5df 100644 --- a/Source/QtDialog/CMakeSetup.cxx +++ b/Source/QtDialog/CMakeSetup.cxx @@ -10,21 +10,21 @@ See the License for more information. ============================================================================*/ #include "QCMake.h" // include to disable MS warnings + +#include "CMakeSetupDialog.h" +#include "cmAlgorithms.h" +#include "cmDocumentation.h" +#include "cmVersion.h" +#include "cmake.h" #include <QApplication> #include <QDir> -#include <QTranslator> #include <QLocale> #include <QTextCodec> -#include "CMakeSetupDialog.h" -#include "cmDocumentation.h" -#include "cmake.h" -#include "cmVersion.h" -#include "cmAlgorithms.h" +#include <QTranslator> #include <cmsys/CommandLineArguments.hxx> -#include <cmsys/SystemTools.hxx> #include <cmsys/Encoding.hxx> +#include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------------- static const char * cmDocumentationName[][2] = { {0, @@ -32,7 +32,6 @@ static const char * cmDocumentationName[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsage[][2] = { {0, @@ -42,7 +41,6 @@ static const char * cmDocumentationUsage[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationOptions[][2] = { {0,0} @@ -217,6 +215,7 @@ static bool cmOSXInstall(std::string const& dir, std::string const& tool) return true; } } + cmSystemTools::MakeDirectory(dir); if (symlink(tool.c_str(), link.c_str()) == 0) { std::cerr << "Linked: '" << link << "' -> '" << tool << "'\n"; diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index 2fc4faf..945739d 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -11,28 +11,29 @@ ============================================================================*/ #include "CMakeSetupDialog.h" -#include <QFileDialog> -#include <QProgressBar> -#include <QMessageBox> -#include <QStatusBar> -#include <QToolButton> -#include <QDialogButtonBox> + #include <QCloseEvent> #include <QCoreApplication> -#include <QSettings> +#include <QDialogButtonBox> +#include <QDragEnterEvent> +#include <QFileDialog> +#include <QInputDialog> +#include <QKeySequence> #include <QMenu> #include <QMenuBar> -#include <QDragEnterEvent> +#include <QMessageBox> #include <QMimeData> -#include <QUrl> +#include <QProgressBar> +#include <QSettings> #include <QShortcut> -#include <QKeySequence> -#include <QInputDialog> +#include <QStatusBar> +#include <QToolButton> +#include <QUrl> -#include "QCMake.h" -#include "QCMakeCacheView.h" #include "AddCacheEntry.h" #include "FirstConfigure.h" +#include "QCMake.h" +#include "QCMakeCacheView.h" #include "RegexExplorer.h" #include "WarningMessagesDialog.h" #include "cmSystemTools.h" diff --git a/Source/QtDialog/CMakeSetupDialog.h b/Source/QtDialog/CMakeSetupDialog.h index 4b53b1c..f9624d1 100644 --- a/Source/QtDialog/CMakeSetupDialog.h +++ b/Source/QtDialog/CMakeSetupDialog.h @@ -14,10 +14,11 @@ #define CMakeSetupDialog_h #include "QCMake.h" + +#include "ui_CMakeSetupDialog.h" +#include <QEventLoop> #include <QMainWindow> #include <QThread> -#include <QEventLoop> -#include "ui_CMakeSetupDialog.h" class QCMakeThread; class CMakeCacheModel; diff --git a/Source/QtDialog/Compilers.h b/Source/QtDialog/Compilers.h index 3f7b834..ee89886 100644 --- a/Source/QtDialog/Compilers.h +++ b/Source/QtDialog/Compilers.h @@ -4,6 +4,7 @@ #define COMPILERS_HPP #include <QWidget> + #include <ui_Compilers.h> class Compilers : public QWidget, public Ui::Compilers diff --git a/Source/QtDialog/FirstConfigure.cxx b/Source/QtDialog/FirstConfigure.cxx index 61aad72..5c0af2b 100644 --- a/Source/QtDialog/FirstConfigure.cxx +++ b/Source/QtDialog/FirstConfigure.cxx @@ -1,10 +1,11 @@ #include "FirstConfigure.h" + #include "Compilers.h" -#include <QSettings> -#include <QRadioButton> #include <QComboBox> +#include <QRadioButton> +#include <QSettings> #include <QVBoxLayout> diff --git a/Source/QtDialog/FirstConfigure.h b/Source/QtDialog/FirstConfigure.h index 09952b6..3c574d4 100644 --- a/Source/QtDialog/FirstConfigure.h +++ b/Source/QtDialog/FirstConfigure.h @@ -4,7 +4,9 @@ #include <QWizard> #include <QWizardPage> + #include "cmake.h" + #include "ui_Compilers.h" #include "ui_CrossCompiler.h" diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index dd7c138..28be341 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -12,12 +12,12 @@ #include "QCMake.h" -#include <QDir> #include <QCoreApplication> +#include <QDir> +#include "cmExternalMakefileProjectGenerator.h" #include "cmState.h" #include "cmSystemTools.h" -#include "cmExternalMakefileProjectGenerator.h" #ifdef Q_OS_WIN #include "qt_windows.h" // For SetErrorMode diff --git a/Source/QtDialog/QCMake.h b/Source/QtDialog/QCMake.h index 8942e7c..5cae06d 100644 --- a/Source/QtDialog/QCMake.h +++ b/Source/QtDialog/QCMake.h @@ -12,6 +12,9 @@ #ifndef QCMake_h #define QCMake_h + +#include "cmake.h" + #ifdef _MSC_VER #pragma warning ( disable : 4127 ) #pragma warning ( disable : 4512 ) @@ -19,15 +22,13 @@ #include <vector> +#include <QAtomicInt> +#include <QList> +#include <QMetaType> #include <QObject> #include <QString> -#include <QVariant> -#include <QList> #include <QStringList> -#include <QMetaType> -#include <QAtomicInt> - -#include "cmake.h" +#include <QVariant> /// struct to represent cmake properties in Qt /// Value is of type String or Bool diff --git a/Source/QtDialog/QCMakeCacheView.cxx b/Source/QtDialog/QCMakeCacheView.cxx index bae6a30..f64a78a 100644 --- a/Source/QtDialog/QCMakeCacheView.cxx +++ b/Source/QtDialog/QCMakeCacheView.cxx @@ -12,14 +12,14 @@ #include "QCMakeCacheView.h" +#include <QApplication> +#include <QEvent> #include <QHBoxLayout> #include <QHeaderView> -#include <QEvent> -#include <QStyle> #include <QKeyEvent> -#include <QSortFilterProxyModel> #include <QMetaProperty> -#include <QApplication> +#include <QSortFilterProxyModel> +#include <QStyle> #include "QCMakeWidgets.h" diff --git a/Source/QtDialog/QCMakeCacheView.h b/Source/QtDialog/QCMakeCacheView.h index 41f0bd8..5631b86 100644 --- a/Source/QtDialog/QCMakeCacheView.h +++ b/Source/QtDialog/QCMakeCacheView.h @@ -14,10 +14,11 @@ #define QCMakeCacheView_h #include "QCMake.h" -#include <QTreeView> + +#include <QItemDelegate> #include <QSet> #include <QStandardItemModel> -#include <QItemDelegate> +#include <QTreeView> class QSortFilterProxyModel; class QCMakeCacheModel; diff --git a/Source/QtDialog/QCMakeWidgets.cxx b/Source/QtDialog/QCMakeWidgets.cxx index 41f98b5..7803ef3 100644 --- a/Source/QtDialog/QCMakeWidgets.cxx +++ b/Source/QtDialog/QCMakeWidgets.cxx @@ -13,10 +13,10 @@ #include "QCMakeWidgets.h" #include <QDirModel> -#include <QFileInfo> #include <QFileDialog> -#include <QToolButton> +#include <QFileInfo> #include <QResizeEvent> +#include <QToolButton> QCMakeFileEditor::QCMakeFileEditor(QWidget* p, const QString& var) : QLineEdit(p), Variable(var) diff --git a/Source/QtDialog/QCMakeWidgets.h b/Source/QtDialog/QCMakeWidgets.h index 8f58df2..759b635 100644 --- a/Source/QtDialog/QCMakeWidgets.h +++ b/Source/QtDialog/QCMakeWidgets.h @@ -13,9 +13,10 @@ #ifndef QCMakeWidgets_h #define QCMakeWidgets_h -#include <QLineEdit> #include <QComboBox> #include <QCompleter> +#include <QLineEdit> + class QToolButton; // common widgets for Qt based CMake diff --git a/Source/QtDialog/RegexExplorer.h b/Source/QtDialog/RegexExplorer.h index 2ac9c3e..3ac8a24 100644 --- a/Source/QtDialog/RegexExplorer.h +++ b/Source/QtDialog/RegexExplorer.h @@ -13,9 +13,9 @@ #ifndef RegexExplorer_h #define RegexExplorer_h -#include <string> -#include <cmsys/RegularExpression.hxx> #include <QDialog> +#include <cmsys/RegularExpression.hxx> +#include <string> #include "ui_RegexExplorer.h" diff --git a/Source/QtDialog/WarningMessagesDialog.h b/Source/QtDialog/WarningMessagesDialog.h index 6c274a7..4bb739c 100644 --- a/Source/QtDialog/WarningMessagesDialog.h +++ b/Source/QtDialog/WarningMessagesDialog.h @@ -16,8 +16,8 @@ #include <QDialog> #include <QWidget> -#include "ui_WarningMessagesDialog.h" #include "QCMake.h" +#include "ui_WarningMessagesDialog.h" /** * Dialog window for setting the warning message related options. diff --git a/Source/bindexplib.cxx b/Source/bindexplib.cxx index e7263ae..b179f83 100644 --- a/Source/bindexplib.cxx +++ b/Source/bindexplib.cxx @@ -72,11 +72,11 @@ */ #include "bindexplib.h" #include <cmsys/Encoding.hxx> -#include <windows.h> -#include <stdio.h> -#include <string> #include <fstream> #include <iostream> +#include <stdio.h> +#include <string> +#include <windows.h> typedef struct cmANON_OBJECT_HEADER_BIGOBJ { /* same as ANON_OBJECT_HEADER_V2 */ diff --git a/Source/cmAddCustomCommandCommand.cxx b/Source/cmAddCustomCommandCommand.cxx index fe516ea..30f431c 100644 --- a/Source/cmAddCustomCommandCommand.cxx +++ b/Source/cmAddCustomCommandCommand.cxx @@ -412,7 +412,6 @@ bool cmAddCustomCommandCommand return true; } -//---------------------------------------------------------------------------- bool cmAddCustomCommandCommand ::CheckOutputs(const std::vector<std::string>& outputs) diff --git a/Source/cmAddCustomTargetCommand.cxx b/Source/cmAddCustomTargetCommand.cxx index 42bd71c..5bf752a 100644 --- a/Source/cmAddCustomTargetCommand.cxx +++ b/Source/cmAddCustomTargetCommand.cxx @@ -206,10 +206,12 @@ bool cmAddCustomTargetCommand } if (issueMessage) { + /* clang-format off */ e << "The target name \"" << targetName << "\" is reserved or not valid for certain " "CMake features, such as generator expressions, and may result " "in undefined behavior."; + /* clang-format on */ this->Makefile->IssueMessage(messageType, e.str()); if (messageType == cmake::FATAL_ERROR) diff --git a/Source/cmAddDependenciesCommand.cxx b/Source/cmAddDependenciesCommand.cxx index 01e5253..3b28359 100644 --- a/Source/cmAddDependenciesCommand.cxx +++ b/Source/cmAddDependenciesCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmAddDependenciesCommand.h" + #include "cmGlobalGenerator.h" // cmDependenciesCommand diff --git a/Source/cmAddExecutableCommand.cxx b/Source/cmAddExecutableCommand.cxx index a84bb9d..dccf9d9 100644 --- a/Source/cmAddExecutableCommand.cxx +++ b/Source/cmAddExecutableCommand.cxx @@ -96,10 +96,12 @@ bool cmAddExecutableCommand } if (issueMessage) { + /* clang-format off */ e << "The target name \"" << exename << "\" is reserved or not valid for certain " "CMake features, such as generator expressions, and may result " "in undefined behavior."; + /* clang-format on */ this->Makefile->IssueMessage(messageType, e.str()); if (messageType == cmake::FATAL_ERROR) diff --git a/Source/cmAddLibraryCommand.cxx b/Source/cmAddLibraryCommand.cxx index 5296cbb..e40ecf4 100644 --- a/Source/cmAddLibraryCommand.cxx +++ b/Source/cmAddLibraryCommand.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmAddLibraryCommand.h" -#include "cmake.h" #include "cmState.h" +#include "cmake.h" // cmLibraryCommand bool cmAddLibraryCommand diff --git a/Source/cmAddTestCommand.cxx b/Source/cmAddTestCommand.cxx index 3472b98..e813415 100644 --- a/Source/cmAddTestCommand.cxx +++ b/Source/cmAddTestCommand.cxx @@ -65,7 +65,6 @@ bool cmAddTestCommand return true; } -//---------------------------------------------------------------------------- bool cmAddTestCommand::HandleNameMode(std::vector<std::string> const& args) { std::string name; diff --git a/Source/cmArchiveWrite.cxx b/Source/cmArchiveWrite.cxx index e62a2ed..399c513 100644 --- a/Source/cmArchiveWrite.cxx +++ b/Source/cmArchiveWrite.cxx @@ -11,25 +11,23 @@ ============================================================================*/ #include "cmArchiveWrite.h" -#include "cmSystemTools.h" #include "cmLocale.h" +#include "cmSystemTools.h" +#include "cm_get_date.h" +#include <cm_libarchive.h> #include <cmsys/Directory.hxx> #include <cmsys/FStream.hxx> -#include <cm_libarchive.h> -#include "cm_get_date.h" #ifndef __LA_SSIZE_T # define __LA_SSIZE_T la_ssize_t #endif -//---------------------------------------------------------------------------- static std::string cm_archive_error_string(struct archive* a) { const char* e = archive_error_string(a); return e? e : "unknown error"; } -//---------------------------------------------------------------------------- static void cm_archive_entry_copy_pathname(struct archive_entry* e, const std::string& dest) { @@ -40,7 +38,6 @@ static void cm_archive_entry_copy_pathname(struct archive_entry* e, #endif } -//---------------------------------------------------------------------------- static void cm_archive_entry_copy_sourcepath(struct archive_entry* e, const std::string& file) { @@ -51,7 +48,6 @@ static void cm_archive_entry_copy_sourcepath(struct archive_entry* e, #endif } -//---------------------------------------------------------------------------- class cmArchiveWrite::Entry { struct archive_entry* Object; @@ -61,7 +57,6 @@ public: operator struct archive_entry*() { return this->Object; } }; -//---------------------------------------------------------------------------- struct cmArchiveWrite::Callback { // archive_write_callback @@ -81,7 +76,6 @@ struct cmArchiveWrite::Callback } }; -//---------------------------------------------------------------------------- cmArchiveWrite::cmArchiveWrite( std::ostream& os, Compress c, std::string const& format): Stream(os), @@ -177,14 +171,12 @@ cmArchiveWrite::cmArchiveWrite( } } -//---------------------------------------------------------------------------- cmArchiveWrite::~cmArchiveWrite() { archive_read_free(this->Disk); archive_write_free(this->Archive); } -//---------------------------------------------------------------------------- bool cmArchiveWrite::Add(std::string path, size_t skip, const char* prefix, @@ -201,7 +193,6 @@ bool cmArchiveWrite::Add(std::string path, return this->Okay(); } -//---------------------------------------------------------------------------- bool cmArchiveWrite::AddPath(const char* path, size_t skip, const char* prefix, bool recursive) @@ -239,7 +230,6 @@ bool cmArchiveWrite::AddPath(const char* path, return true; } -//---------------------------------------------------------------------------- bool cmArchiveWrite::AddFile(const char* file, size_t skip, const char* prefix) { @@ -344,7 +334,6 @@ bool cmArchiveWrite::AddFile(const char* file, return true; } -//---------------------------------------------------------------------------- bool cmArchiveWrite::AddData(const char* file, size_t size) { cmsys::ifstream fin(file, std::ios::in | std::ios::binary); diff --git a/Source/cmAuxSourceDirectoryCommand.cxx b/Source/cmAuxSourceDirectoryCommand.cxx index 92ac07d..07cb295 100644 --- a/Source/cmAuxSourceDirectoryCommand.cxx +++ b/Source/cmAuxSourceDirectoryCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmAuxSourceDirectoryCommand.h" + #include "cmSourceFile.h" #include <cmsys/Directory.hxx> diff --git a/Source/cmBootstrapCommands1.cxx b/Source/cmBootstrapCommands1.cxx index 0782b3b..2de8770 100644 --- a/Source/cmBootstrapCommands1.cxx +++ b/Source/cmBootstrapCommands1.cxx @@ -13,7 +13,6 @@ // that CMake knows about at compile time. // This is sort of a boot strapping approach since you would // like to have CMake to build CMake. -#include "cmCommands.h" #include "cmAddCustomCommandCommand.cxx" #include "cmAddCustomTargetCommand.cxx" #include "cmAddDefinitionsCommand.cxx" @@ -27,6 +26,7 @@ #include "cmCMakeMinimumRequired.cxx" #include "cmCMakePolicyCommand.cxx" #include "cmCommandArgumentsHelper.cxx" +#include "cmCommands.h" #include "cmConfigureFileCommand.cxx" #include "cmContinueCommand.cxx" #include "cmCoreTryCompile.cxx" @@ -42,9 +42,9 @@ #include "cmEndWhileCommand.cxx" #include "cmExecProgramCommand.cxx" #include "cmExecuteProcessCommand.cxx" +#include "cmFileCommand.cxx" #include "cmFindBase.cxx" #include "cmFindCommon.cxx" -#include "cmFileCommand.cxx" #include "cmFindFileCommand.cxx" #include "cmFindLibraryCommand.cxx" #include "cmFindPackageCommand.cxx" @@ -52,9 +52,9 @@ #include "cmFindProgramCommand.cxx" #include "cmForEachCommand.cxx" #include "cmFunctionCommand.cxx" +#include "cmParseArgumentsCommand.cxx" #include "cmPathLabel.cxx" #include "cmSearchPath.cxx" -#include "cmParseArgumentsCommand.cxx" void GetBootstrapCommands1(std::vector<cmCommand*>& commands) { diff --git a/Source/cmBootstrapCommands2.cxx b/Source/cmBootstrapCommands2.cxx index e522d8c..38d008d 100644 --- a/Source/cmBootstrapCommands2.cxx +++ b/Source/cmBootstrapCommands2.cxx @@ -22,14 +22,15 @@ #include "cmGetPropertyCommand.cxx" #include "cmGetSourceFilePropertyCommand.cxx" #include "cmGetTargetPropertyCommand.cxx" +#include "cmGetTestPropertyCommand.cxx" #include "cmHexFileConverter.cxx" #include "cmIfCommand.cxx" #include "cmIncludeCommand.cxx" #include "cmIncludeDirectoryCommand.cxx" #include "cmIncludeRegularExpressionCommand.cxx" -#include "cmInstallFilesCommand.cxx" -#include "cmInstallCommandArguments.cxx" #include "cmInstallCommand.cxx" +#include "cmInstallCommandArguments.cxx" +#include "cmInstallFilesCommand.cxx" #include "cmInstallTargetsCommand.cxx" #include "cmLinkDirectoriesCommand.cxx" #include "cmListCommand.cxx" @@ -48,7 +49,6 @@ #include "cmSetSourceFilesPropertiesCommand.cxx" #include "cmSetTargetPropertiesCommand.cxx" #include "cmSetTestsPropertiesCommand.cxx" -#include "cmGetTestPropertyCommand.cxx" #include "cmSiteNameCommand.cxx" #include "cmStringCommand.cxx" #include "cmSubdirCommand.cxx" diff --git a/Source/cmBuildCommand.cxx b/Source/cmBuildCommand.cxx index 64d4fca..b9183ed 100644 --- a/Source/cmBuildCommand.cxx +++ b/Source/cmBuildCommand.cxx @@ -13,7 +13,6 @@ #include "cmGlobalGenerator.h" -//---------------------------------------------------------------------- bool cmBuildCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -27,7 +26,6 @@ bool cmBuildCommand return this->MainSignature(args); } -//---------------------------------------------------------------------- bool cmBuildCommand ::MainSignature(std::vector<std::string> const& args) { @@ -113,7 +111,6 @@ bool cmBuildCommand return true; } -//---------------------------------------------------------------------- bool cmBuildCommand ::TwoArgsSignature(std::vector<std::string> const& args) { diff --git a/Source/cmCMakeMinimumRequired.cxx b/Source/cmCMakeMinimumRequired.cxx index 8591ed6..eac5965 100644 --- a/Source/cmCMakeMinimumRequired.cxx +++ b/Source/cmCMakeMinimumRequired.cxx @@ -127,7 +127,6 @@ bool cmCMakeMinimumRequired return true; } -//---------------------------------------------------------------------------- bool cmCMakeMinimumRequired::EnforceUnknownArguments() { if(!this->UnknownArguments.empty()) diff --git a/Source/cmCMakePolicyCommand.cxx b/Source/cmCMakePolicyCommand.cxx index 3ef6d35..9132aec 100644 --- a/Source/cmCMakePolicyCommand.cxx +++ b/Source/cmCMakePolicyCommand.cxx @@ -62,7 +62,6 @@ bool cmCMakePolicyCommand return false; } -//---------------------------------------------------------------------------- bool cmCMakePolicyCommand::HandleSetMode(std::vector<std::string> const& args) { if(args.size() != 3) @@ -112,7 +111,6 @@ bool cmCMakePolicyCommand::HandleSetMode(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmCMakePolicyCommand::HandleGetMode(std::vector<std::string> const& args) { if(args.size() != 3) @@ -169,7 +167,6 @@ bool cmCMakePolicyCommand::HandleGetMode(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmCMakePolicyCommand::HandleVersionMode(std::vector<std::string> const& args) { diff --git a/Source/cmCPackPropertiesGenerator.cxx b/Source/cmCPackPropertiesGenerator.cxx index 35b3d59..3eef55a 100644 --- a/Source/cmCPackPropertiesGenerator.cxx +++ b/Source/cmCPackPropertiesGenerator.cxx @@ -1,7 +1,7 @@ #include "cmCPackPropertiesGenerator.h" -#include "cmOutputConverter.h" #include "cmLocalGenerator.h" +#include "cmOutputConverter.h" cmCPackPropertiesGenerator::cmCPackPropertiesGenerator( cmLocalGenerator* lg, diff --git a/Source/cmCPackPropertiesGenerator.h b/Source/cmCPackPropertiesGenerator.h index eec3df0..e54bcab 100644 --- a/Source/cmCPackPropertiesGenerator.h +++ b/Source/cmCPackPropertiesGenerator.h @@ -12,8 +12,8 @@ #ifndef cmCPackPropertiesGenerator_h #define cmCPackPropertiesGenerator_h -#include "cmScriptGenerator.h" #include "cmInstalledFile.h" +#include "cmScriptGenerator.h" class cmLocalGenerator; diff --git a/Source/cmCPluginAPI.cxx b/Source/cmCPluginAPI.cxx index fb78446..b203a22 100644 --- a/Source/cmCPluginAPI.cxx +++ b/Source/cmCPluginAPI.cxx @@ -14,8 +14,9 @@ these routines just manipulate arguments and then call the associated methods on the CMake classes. */ -#include "cmMakefile.h" #include "cmCPluginAPI.h" + +#include "cmMakefile.h" #include "cmVersion.h" #include "cmSourceFile.h" diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index f3e7121..a189430 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -12,24 +12,25 @@ #include "cmCurl.h" // include before anything that includes windows.h #include "cmCTest.h" -#include "cmake.h" -#include "cmMakefile.h" -#include "cmGlobalGenerator.h" -#include <cmsys/Base64.h> -#include <cmsys/Directory.hxx> -#include <cmsys/SystemInformation.hxx> -#include <cmsys/FStream.hxx> -#include "cmDynamicLoader.h" -#include "cmGeneratedFileStream.h" -#include "cmVersionMacros.h" + +#include "cmAlgorithms.h" #include "cmCTestCommand.h" #include "cmCTestStartCommand.h" -#include "cmAlgorithms.h" +#include "cmDynamicLoader.h" +#include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" #include "cmState.h" +#include "cmVersionMacros.h" #include "cmXMLWriter.h" +#include "cmake.h" +#include <cmsys/Base64.h> +#include <cmsys/Directory.hxx> +#include <cmsys/FStream.hxx> +#include <cmsys/SystemInformation.hxx> -#include "cmCTestBuildHandler.h" #include "cmCTestBuildAndTestHandler.h" +#include "cmCTestBuildHandler.h" #include "cmCTestConfigureHandler.h" #include "cmCTestCoverageHandler.h" #include "cmCTestMemCheckHandler.h" @@ -41,14 +42,14 @@ #include "cmVersion.h" -#include <cmsys/RegularExpression.hxx> -#include <cmsys/Process.h> #include <cmsys/Glob.hxx> +#include <cmsys/Process.h> +#include <cmsys/RegularExpression.hxx> -#include <stdlib.h> -#include <math.h> -#include <float.h> #include <ctype.h> +#include <float.h> +#include <math.h> +#include <stdlib.h> #include <cmsys/auto_ptr.hxx> @@ -63,7 +64,6 @@ #define DEBUGOUT std::cout << __LINE__ << " "; std::cout #define DEBUGERR std::cerr << __LINE__ << " "; std::cerr -//---------------------------------------------------------------------- struct tm* cmCTest::GetNightlyTime(std::string str, bool tomorrowtag) { @@ -122,7 +122,6 @@ struct tm* cmCTest::GetNightlyTime(std::string str, return lctime; } -//---------------------------------------------------------------------- std::string cmCTest::CleanString(const std::string& str) { std::string::size_type spos = str.find_first_not_of(" \n\t\r\f\v"); @@ -138,7 +137,6 @@ std::string cmCTest::CleanString(const std::string& str) return str.substr(spos, epos); } -//---------------------------------------------------------------------- std::string cmCTest::CurrentTime() { time_t currenttime = time(0); @@ -157,7 +155,6 @@ std::string cmCTest::CurrentTime() return cmCTest::CleanString(current_time); } -//---------------------------------------------------------------------- std::string cmCTest::GetCostDataFile() { std::string fname = this->GetCTestConfiguration("CostDataFile"); @@ -169,7 +166,6 @@ std::string cmCTest::GetCostDataFile() } #ifdef CMAKE_BUILD_WITH_CMAKE -//---------------------------------------------------------------------------- static size_t HTTPResponseCallback(void *ptr, size_t size, size_t nmemb, void *data) { @@ -183,7 +179,6 @@ HTTPResponseCallback(void *ptr, size_t size, size_t nmemb, void *data) return realsize; } -//---------------------------------------------------------------------------- int cmCTest::HTTPRequest(std::string url, HTTPMethod method, std::string& response, std::string fields, @@ -239,7 +234,6 @@ int cmCTest::HTTPRequest(std::string url, HTTPMethod method, } #endif -//---------------------------------------------------------------------- std::string cmCTest::MakeURLSafe(const std::string& str) { std::ostringstream ost; @@ -266,7 +260,6 @@ std::string cmCTest::MakeURLSafe(const std::string& str) return ost.str(); } -//---------------------------------------------------------------------------- std::string cmCTest::DecodeURL(const std::string& in) { std::string out; @@ -286,7 +279,6 @@ std::string cmCTest::DecodeURL(const std::string& in) return out; } -//---------------------------------------------------------------------- cmCTest::cmCTest() { this->LabelSummary = true; @@ -380,7 +372,6 @@ cmCTest::cmCTest() cmSystemTools::EnableVSConsoleOutput(); } -//---------------------------------------------------------------------- cmCTest::~cmCTest() { cmDeleteAll(this->TestingHandlers); @@ -397,7 +388,6 @@ void cmCTest::SetTestLoad(unsigned long load) this->TestLoad = load; } -//---------------------------------------------------------------------------- bool cmCTest::ShouldCompressTestOutput() { if(!this->ComputedCompressTestOutput) @@ -414,7 +404,6 @@ bool cmCTest::ShouldCompressTestOutput() return this->CompressTestOutput; } -//---------------------------------------------------------------------------- bool cmCTest::ShouldCompressMemCheckOutput() { if(!this->ComputedCompressMemCheckOutput) @@ -429,7 +418,6 @@ bool cmCTest::ShouldCompressMemCheckOutput() return this->CompressMemCheckOutput; } -//---------------------------------------------------------------------------- std::string cmCTest::GetCDashVersion() { #ifdef CMAKE_BUILD_WITH_CMAKE @@ -454,7 +442,6 @@ std::string cmCTest::GetCDashVersion() #endif } -//---------------------------------------------------------------------------- cmCTest::Part cmCTest::GetPartFromName(const char* name) { // Look up by lower-case to make names case-insensitive. @@ -469,7 +456,6 @@ cmCTest::Part cmCTest::GetPartFromName(const char* name) return PartCount; } -//---------------------------------------------------------------------- int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command) { bool quiet = false; @@ -657,7 +643,6 @@ int cmCTest::Initialize(const char* binary_dir, cmCTestStartCommand* command) return 1; } -//---------------------------------------------------------------------- bool cmCTest::InitializeFromCommand(cmCTestStartCommand* command) { std::string src_dir @@ -744,7 +729,6 @@ bool cmCTest::InitializeFromCommand(cmCTestStartCommand* command) } -//---------------------------------------------------------------------- bool cmCTest::UpdateCTestConfiguration() { if ( this->SuppressUpdatingCTestConfiguration ) @@ -847,7 +831,6 @@ bool cmCTest::UpdateCTestConfiguration() return true; } -//---------------------------------------------------------------------- void cmCTest::BlockTestErrorDiagnostics() { cmSystemTools::PutEnv("DART_TEST_FROM_DART=1"); @@ -859,14 +842,12 @@ void cmCTest::BlockTestErrorDiagnostics() #endif } -//---------------------------------------------------------------------- void cmCTest::SetTestModel(int mode) { this->InteractiveDebugMode = false; this->TestModel = mode; } -//---------------------------------------------------------------------- bool cmCTest::SetTest(const char* ttype, bool report) { if ( cmSystemTools::LowerCase(ttype) == "all" ) @@ -894,12 +875,10 @@ bool cmCTest::SetTest(const char* ttype, bool report) } } -//---------------------------------------------------------------------- void cmCTest::Finalize() { } -//---------------------------------------------------------------------- bool cmCTest::OpenOutputFile(const std::string& path, const std::string& name, cmGeneratedFileStream& stream, bool compress) @@ -946,7 +925,6 @@ bool cmCTest::OpenOutputFile(const std::string& path, return true; } -//---------------------------------------------------------------------- bool cmCTest::AddIfExists(Part part, const char* file) { if ( this->CTestFileExists(file) ) @@ -969,7 +947,6 @@ bool cmCTest::AddIfExists(Part part, const char* file) return true; } -//---------------------------------------------------------------------- bool cmCTest::CTestFileExists(const std::string& filename) { std::string testingDir = this->BinaryDir + "/Testing/" + @@ -977,7 +954,6 @@ bool cmCTest::CTestFileExists(const std::string& filename) return cmSystemTools::FileExists(testingDir.c_str()); } -//---------------------------------------------------------------------- cmCTestGenericHandler* cmCTest::GetInitializedHandler(const char* handler) { cmCTest::t_TestingHandlers::iterator it = @@ -990,7 +966,6 @@ cmCTestGenericHandler* cmCTest::GetInitializedHandler(const char* handler) return it->second; } -//---------------------------------------------------------------------- cmCTestGenericHandler* cmCTest::GetHandler(const char* handler) { cmCTest::t_TestingHandlers::iterator it = @@ -1002,7 +977,6 @@ cmCTestGenericHandler* cmCTest::GetHandler(const char* handler) return it->second; } -//---------------------------------------------------------------------- int cmCTest::ExecuteHandler(const char* shandler) { cmCTestGenericHandler* handler = this->GetHandler(shandler); @@ -1014,7 +988,6 @@ int cmCTest::ExecuteHandler(const char* shandler) return handler->ProcessHandler(); } -//---------------------------------------------------------------------- int cmCTest::ProcessTests() { int res = 0; @@ -1134,7 +1107,6 @@ int cmCTest::ProcessTests() return res; } -//---------------------------------------------------------------------- std::string cmCTest::GetTestModelString() { if ( !this->SpecificTrack.empty() ) @@ -1151,7 +1123,6 @@ std::string cmCTest::GetTestModelString() return "Experimental"; } -//---------------------------------------------------------------------- int cmCTest::GetTestModelFromString(const char* str) { if ( !str ) @@ -1175,7 +1146,6 @@ int cmCTest::GetTestModelFromString(const char* str) //###################################################################### //###################################################################### -//---------------------------------------------------------------------- int cmCTest::RunMakeCommand(const char* command, std::string& output, int* retVal, const char* dir, int timeout, std::ostream& ofs) { @@ -1293,7 +1263,6 @@ int cmCTest::RunMakeCommand(const char* command, std::string& output, //###################################################################### //###################################################################### -//---------------------------------------------------------------------- int cmCTest::RunTest(std::vector<const char*> argv, std::string* output, int *retVal, std::ostream* log, double testTimeOut, @@ -1471,7 +1440,6 @@ int cmCTest::RunTest(std::vector<const char*> argv, return result; } -//---------------------------------------------------------------------- std::string cmCTest::SafeBuildIdField(const std::string& value) { std::string safevalue(value); @@ -1506,7 +1474,6 @@ std::string cmCTest::SafeBuildIdField(const std::string& value) return safevalue; } -//---------------------------------------------------------------------- void cmCTest::StartXML(cmXMLWriter& xml, bool append) { if(this->CurrentTag.empty()) @@ -1573,7 +1540,6 @@ void cmCTest::StartXML(cmXMLWriter& xml, bool append) this->AddSiteProperties(xml); } -//---------------------------------------------------------------------- void cmCTest::AddSiteProperties(cmXMLWriter& xml) { cmCTestScriptHandler* ch = @@ -1621,14 +1587,12 @@ void cmCTest::AddSiteProperties(cmXMLWriter& xml) } } -//---------------------------------------------------------------------- void cmCTest::EndXML(cmXMLWriter& xml) { xml.EndElement(); // Site xml.EndDocument(); } -//---------------------------------------------------------------------- int cmCTest::GenerateCTestNotesOutput(cmXMLWriter& xml, const cmCTest::VectorOfStrings& files) { @@ -1682,7 +1646,6 @@ int cmCTest::GenerateCTestNotesOutput(cmXMLWriter& xml, return 1; } -//---------------------------------------------------------------------- int cmCTest::GenerateNotesFile(const VectorOfStrings &files) { cmGeneratedFileStream ofs; @@ -1696,7 +1659,6 @@ int cmCTest::GenerateNotesFile(const VectorOfStrings &files) return 0; } -//---------------------------------------------------------------------- int cmCTest::GenerateNotesFile(const char* cfiles) { if ( !cfiles ) @@ -1717,7 +1679,6 @@ int cmCTest::GenerateNotesFile(const char* cfiles) return this->GenerateNotesFile(files); } -//---------------------------------------------------------------------- std::string cmCTest::Base64GzipEncodeFile(std::string file) { std::string tarFile = file + "_temp.tar.gz"; @@ -1736,7 +1697,6 @@ std::string cmCTest::Base64GzipEncodeFile(std::string file) return base64; } -//---------------------------------------------------------------------- std::string cmCTest::Base64EncodeFile(std::string file) { size_t const len = cmSystemTools::FileLength(file); @@ -1767,7 +1727,6 @@ std::string cmCTest::Base64EncodeFile(std::string file) } -//---------------------------------------------------------------------- bool cmCTest::SubmitExtraFiles(const VectorOfStrings &files) { VectorOfStrings::const_iterator it; @@ -1787,7 +1746,6 @@ bool cmCTest::SubmitExtraFiles(const VectorOfStrings &files) return true; } -//---------------------------------------------------------------------- bool cmCTest::SubmitExtraFiles(const char* cfiles) { if ( !cfiles ) @@ -1809,7 +1767,6 @@ bool cmCTest::SubmitExtraFiles(const char* cfiles) } -//------------------------------------------------------- // for a -D argument convert the next argument into // the proper list of dashboard steps via SetTest bool cmCTest::AddTestsForDashboardType(std::string &targ) @@ -1998,7 +1955,6 @@ bool cmCTest::AddTestsForDashboardType(std::string &targ) } -//---------------------------------------------------------------------- void cmCTest::ErrorMessageUnknownDashDValue(std::string &val) { cmCTestLog(this, ERROR_MESSAGE, @@ -2019,7 +1975,6 @@ void cmCTest::ErrorMessageUnknownDashDValue(std::string &val) } -//---------------------------------------------------------------------- bool cmCTest::CheckArgument(const std::string& arg, const char* varg1, const char* varg2) { @@ -2027,7 +1982,6 @@ bool cmCTest::CheckArgument(const std::string& arg, const char* varg1, } -//---------------------------------------------------------------------- // Processes one command line argument (and its arguments if any) // for many simple options and then returns bool cmCTest::HandleCommandLineArguments(size_t &i, @@ -2315,7 +2269,6 @@ bool cmCTest::HandleCommandLineArguments(size_t &i, return true; } -//---------------------------------------------------------------------- // handle the -S -SR and -SP arguments void cmCTest::HandleScriptArguments(size_t &i, std::vector<std::string> &args, @@ -2361,7 +2314,6 @@ void cmCTest::HandleScriptArguments(size_t &i, } } -//---------------------------------------------------------------------- bool cmCTest::AddVariableDefinition(const std::string &arg) { std::string name; @@ -2377,7 +2329,6 @@ bool cmCTest::AddVariableDefinition(const std::string &arg) return false; } -//---------------------------------------------------------------------- // the main entry point of ctest, called from main int cmCTest::Run(std::vector<std::string> &args, std::string* output) { @@ -2624,7 +2575,6 @@ int cmCTest::Run(std::vector<std::string> &args, std::string* output) return 1; } -//---------------------------------------------------------------------- void cmCTest::SetNotesFiles(const char* notes) { if ( !notes ) @@ -2634,14 +2584,12 @@ void cmCTest::SetNotesFiles(const char* notes) this->NotesFiles = notes; } -//---------------------------------------------------------------------- void cmCTest::SetStopTime(std::string time) { this->StopTime = time; this->DetermineNextDayStop(); } -//---------------------------------------------------------------------- int cmCTest::ReadCustomConfigurationFileTree(const char* dir, cmMakefile* mf) { bool found = false; @@ -2718,7 +2666,6 @@ int cmCTest::ReadCustomConfigurationFileTree(const char* dir, cmMakefile* mf) return 1; } -//---------------------------------------------------------------------- void cmCTest::PopulateCustomVector(cmMakefile* mf, const std::string& def, std::vector<std::string>& vec) { @@ -2739,7 +2686,6 @@ void cmCTest::PopulateCustomVector(cmMakefile* mf, const std::string& def, } } -//---------------------------------------------------------------------- void cmCTest::PopulateCustomInteger(cmMakefile* mf, const std::string& def, int& val) { @@ -2751,7 +2697,6 @@ void cmCTest::PopulateCustomInteger(cmMakefile* mf, const std::string& def, val = atoi(dval); } -//---------------------------------------------------------------------- std::string cmCTest::GetShortPathToFile(const char* cfname) { const std::string& sourceDir @@ -2818,7 +2763,6 @@ std::string cmCTest::GetShortPathToFile(const char* cfname) return path; } -//---------------------------------------------------------------------- std::string cmCTest::GetCTestConfiguration(const std::string& name) { if ( this->CTestConfigurationOverwrites.find(name) != @@ -2829,13 +2773,11 @@ std::string cmCTest::GetCTestConfiguration(const std::string& name) return this->CTestConfiguration[name]; } -//---------------------------------------------------------------------- void cmCTest::EmptyCTestConfiguration() { this->CTestConfiguration.clear(); } -//---------------------------------------------------------------------- void cmCTest::DetermineNextDayStop() { struct tm* lctime; @@ -2875,7 +2817,6 @@ void cmCTest::DetermineNextDayStop() } } -//---------------------------------------------------------------------- void cmCTest::SetCTestConfiguration(const char *name, const char* value, bool suppress) { @@ -2895,49 +2836,41 @@ void cmCTest::SetCTestConfiguration(const char *name, const char* value, } -//---------------------------------------------------------------------- std::string cmCTest::GetCurrentTag() { return this->CurrentTag; } -//---------------------------------------------------------------------- std::string cmCTest::GetBinaryDir() { return this->BinaryDir; } -//---------------------------------------------------------------------- std::string const& cmCTest::GetConfigType() { return this->ConfigType; } -//---------------------------------------------------------------------- bool cmCTest::GetShowOnly() { return this->ShowOnly; } -//---------------------------------------------------------------------- int cmCTest::GetMaxTestNameWidth() const { return this->MaxTestNameWidth; } -//---------------------------------------------------------------------- void cmCTest::SetProduceXML(bool v) { this->ProduceXML = v; } -//---------------------------------------------------------------------- bool cmCTest::GetProduceXML() { return this->ProduceXML; } -//---------------------------------------------------------------------- const char* cmCTest::GetSpecificTrack() { if ( this->SpecificTrack.empty() ) @@ -2947,7 +2880,6 @@ const char* cmCTest::GetSpecificTrack() return this->SpecificTrack.c_str(); } -//---------------------------------------------------------------------- void cmCTest::SetSpecificTrack(const char* track) { if ( !track ) @@ -2958,13 +2890,11 @@ void cmCTest::SetSpecificTrack(const char* track) this->SpecificTrack = track; } -//---------------------------------------------------------------------- void cmCTest::AddSubmitFile(Part part, const char* name) { this->Parts[part].SubmitFiles.push_back(name); } -//---------------------------------------------------------------------- void cmCTest::AddCTestConfigurationOverwrite(const std::string& overStr) { size_t epos = overStr.find("="); @@ -2982,7 +2912,6 @@ void cmCTest::AddCTestConfigurationOverwrite(const std::string& overStr) this->CTestConfigurationOverwrites[key] = value; } -//---------------------------------------------------------------------- void cmCTest::SetConfigType(const char* ct) { this->ConfigType = ct?ct:""; @@ -2992,7 +2921,6 @@ void cmCTest::SetConfigType(const char* ct) cmSystemTools::PutEnv(confTypeEnv); } -//---------------------------------------------------------------------- bool cmCTest::SetCTestConfigurationFromCMakeVariable(cmMakefile* mf, const char* dconfig, const std::string& cmake_var, bool suppress) { @@ -3123,7 +3051,6 @@ bool cmCTest::RunCommand( return result; } -//---------------------------------------------------------------------- void cmCTest::SetOutputLogFileName(const char* name) { if ( this->OutputLogFile) @@ -3137,7 +3064,6 @@ void cmCTest::SetOutputLogFileName(const char* name) } } -//---------------------------------------------------------------------- static const char* cmCTestStringLogType[] = { "DEBUG", @@ -3150,7 +3076,6 @@ static const char* cmCTestStringLogType[] = 0 }; -//---------------------------------------------------------------------- #ifdef cerr # undef cerr #endif @@ -3266,7 +3191,6 @@ void cmCTest::Log(int logType, const char* file, int line, const char* msg, } } -//------------------------------------------------------------------------- double cmCTest::GetRemainingTimeAllowed() { if (!this->GetHandler("script")) @@ -3280,7 +3204,6 @@ double cmCTest::GetRemainingTimeAllowed() return ch->GetRemainingTimeAllowed(); } -//---------------------------------------------------------------------- void cmCTest::OutputTestErrors(std::vector<char> const &process_output) { std::string test_outputs("\n*** Test Failed:\n"); @@ -3291,7 +3214,6 @@ void cmCTest::OutputTestErrors(std::vector<char> const &process_output) cmCTestLog(this, HANDLER_OUTPUT, test_outputs << std::endl << std::flush); } -//---------------------------------------------------------------------- bool cmCTest::CompressString(std::string& str) { int ret; diff --git a/Source/cmCTest.h b/Source/cmCTest.h index 73c2807..07081fc 100644 --- a/Source/cmCTest.h +++ b/Source/cmCTest.h @@ -14,6 +14,7 @@ #define cmCTest_h #include "cmStandardIncludes.h" + #include "cmListFileCache.h" #include <time.h> diff --git a/Source/cmCacheManager.cxx b/Source/cmCacheManager.cxx index 7466c29..30caa32 100644 --- a/Source/cmCacheManager.cxx +++ b/Source/cmCacheManager.cxx @@ -9,16 +9,16 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ - #include "cmCacheManager.h" -#include "cmSystemTools.h" + #include "cmGeneratedFileStream.h" -#include "cmake.h" +#include "cmSystemTools.h" #include "cmVersion.h" +#include "cmake.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> #include <cmsys/RegularExpression.hxx> cmCacheManager::cmCacheManager() @@ -204,7 +204,6 @@ bool cmCacheManager::LoadCache(const std::string& path, return true; } -//---------------------------------------------------------------------------- const char* cmCacheManager::PersistentProperties[] = { "ADVANCED", @@ -213,7 +212,6 @@ const char* cmCacheManager::PersistentProperties[] = 0 }; -//---------------------------------------------------------------------------- bool cmCacheManager::ReadPropertyEntry(std::string const& entryKey, CacheEntry& e) { @@ -250,7 +248,6 @@ bool cmCacheManager::ReadPropertyEntry(std::string const& entryKey, return false; } -//---------------------------------------------------------------------------- void cmCacheManager::WritePropertyEntries(std::ostream& os, CacheIterator const& i) { @@ -318,11 +315,14 @@ bool cmCacheManager::SaveCache(const std::string& path) "This is the directory where this CMakeCache.txt" " was created", cmState::INTERNAL); + /* clang-format off */ fout << "# This is the CMakeCache file.\n" << "# For build in directory: " << currentcwd << "\n" << "# It was generated by CMake: " << cmSystemTools::GetCMakeCommand() << std::endl; + /* clang-format on */ + /* clang-format off */ fout << "# You can edit this file to change values found and used by cmake." << std::endl << "# If you do not want to change any of the values, simply exit the " @@ -335,6 +335,7 @@ bool cmCacheManager::SaveCache(const std::string& path) << "# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT " "TYPE!." << std::endl << "# VALUE is the current value for the KEY.\n\n"; + /* clang-format on */ fout << "########################\n"; fout << "# EXTERNAL cache entries\n"; @@ -636,13 +637,11 @@ void cmCacheManager::CacheIterator::SetValue(const char* value) } } -//---------------------------------------------------------------------------- bool cmCacheManager::CacheIterator::GetValueAsBool() const { return cmSystemTools::IsOn(this->GetEntry().Value.c_str()); } -//---------------------------------------------------------------------------- const char* cmCacheManager::CacheEntry::GetProperty(const std::string& prop) const { @@ -657,7 +656,6 @@ cmCacheManager::CacheEntry::GetProperty(const std::string& prop) const return this->Properties.GetPropertyValue(prop); } -//---------------------------------------------------------------------------- void cmCacheManager::CacheEntry::SetProperty(const std::string& prop, const char* value) { @@ -675,7 +673,6 @@ void cmCacheManager::CacheEntry::SetProperty(const std::string& prop, } } -//---------------------------------------------------------------------------- void cmCacheManager::CacheEntry::AppendProperty(const std::string& prop, const char* value, bool asString) @@ -701,7 +698,6 @@ void cmCacheManager::CacheEntry::AppendProperty(const std::string& prop, } } -//---------------------------------------------------------------------------- const char* cmCacheManager::CacheIterator::GetProperty( const std::string& prop) const { @@ -712,7 +708,6 @@ const char* cmCacheManager::CacheIterator::GetProperty( return 0; } -//---------------------------------------------------------------------------- void cmCacheManager::CacheIterator::SetProperty(const std::string& p, const char* v) { @@ -722,7 +717,6 @@ void cmCacheManager::CacheIterator::SetProperty(const std::string& p, } } -//---------------------------------------------------------------------------- void cmCacheManager::CacheIterator::AppendProperty(const std::string& p, const char* v, bool asString) @@ -733,7 +727,6 @@ void cmCacheManager::CacheIterator::AppendProperty(const std::string& p, } } -//---------------------------------------------------------------------------- bool cmCacheManager::CacheIterator::GetPropertyAsBool( const std::string& prop) const { @@ -744,13 +737,11 @@ bool cmCacheManager::CacheIterator::GetPropertyAsBool( return false; } -//---------------------------------------------------------------------------- void cmCacheManager::CacheIterator::SetProperty(const std::string& p, bool v) { this->SetProperty(p, v ? "ON" : "OFF"); } -//---------------------------------------------------------------------------- bool cmCacheManager::CacheIterator::PropertyExists( const std::string& prop) const { diff --git a/Source/cmCacheManager.h b/Source/cmCacheManager.h index 6f063eb..614ff69 100644 --- a/Source/cmCacheManager.h +++ b/Source/cmCacheManager.h @@ -13,6 +13,7 @@ #define cmCacheManager_h #include "cmStandardIncludes.h" + #include "cmPropertyMap.h" #include "cmState.h" diff --git a/Source/cmCallVisualStudioMacro.cxx b/Source/cmCallVisualStudioMacro.cxx index 0e04838..9cc5a69 100644 --- a/Source/cmCallVisualStudioMacro.cxx +++ b/Source/cmCallVisualStudioMacro.cxx @@ -9,8 +9,8 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ - #include "cmCallVisualStudioMacro.h" + #include "cmSystemTools.h" @@ -30,7 +30,6 @@ static bool LogErrorsAsMessages; #include <comdef.h> -//---------------------------------------------------------------------------- // Copied from a correct comdef.h to avoid problems with deficient versions // of comdef.h that exist in the wild... Fixes issue #7533. // @@ -49,7 +48,6 @@ static bool LogErrorsAsMessages; #endif -//---------------------------------------------------------------------------- ///! Use ReportHRESULT to make a cmSystemTools::Message after calling ///! a COM method that may have failed. #define ReportHRESULT(hr, context) \ @@ -68,7 +66,6 @@ static bool LogErrorsAsMessages; } -//---------------------------------------------------------------------------- ///! Using the given instance of Visual Studio, call the named macro HRESULT InstanceCallMacro( IDispatch* vsIDE, @@ -161,7 +158,6 @@ HRESULT InstanceCallMacro( } -//---------------------------------------------------------------------------- ///! Get the Solution object from the IDE object HRESULT GetSolutionObject( IDispatch* vsIDE, @@ -211,7 +207,6 @@ HRESULT GetSolutionObject( } -//---------------------------------------------------------------------------- ///! Get the FullName property from the Solution object HRESULT GetSolutionFullName( IDispatch* vsSolution, @@ -261,7 +256,6 @@ HRESULT GetSolutionFullName( } -//---------------------------------------------------------------------------- ///! Get the FullName property from the Solution object, given the IDE object HRESULT GetIDESolutionFullName( IDispatch* vsIDE, @@ -281,7 +275,6 @@ HRESULT GetIDESolutionFullName( } -//---------------------------------------------------------------------------- ///! Get all running objects from the Windows running object table. ///! Save them in a map by their display names. HRESULT GetRunningInstances(std::map<std::string, IUnknownPtr>& mrot) @@ -347,7 +340,6 @@ HRESULT GetRunningInstances(std::map<std::string, IUnknownPtr>& mrot) } -//---------------------------------------------------------------------------- ///! Do the two file names refer to the same Visual Studio solution? Or are ///! we perhaps looking for any and all solutions? bool FilesSameSolution( @@ -370,7 +362,6 @@ bool FilesSameSolution( } -//---------------------------------------------------------------------------- ///! Find instances of Visual Studio with the given solution file ///! open. Pass "ALL" for slnFile to gather all running instances ///! of Visual Studio. @@ -421,7 +412,6 @@ HRESULT FindVisualStudioInstances( #endif //defined(HAVE_COMDEF_H) -//---------------------------------------------------------------------------- int cmCallVisualStudioMacro::GetNumberOfRunningVisualStudioInstances( const std::string& slnFile) { @@ -457,7 +447,6 @@ int cmCallVisualStudioMacro::GetNumberOfRunningVisualStudioInstances( } -//---------------------------------------------------------------------------- ///! Get all running objects from the Windows running object table. ///! Save them in a map by their display names. int cmCallVisualStudioMacro::CallMacro( diff --git a/Source/cmCommand.h b/Source/cmCommand.h index 59bc396..d5e394d 100644 --- a/Source/cmCommand.h +++ b/Source/cmCommand.h @@ -13,9 +13,10 @@ #define cmCommand_h #include "cmObject.h" + +#include "cmCommandArgumentsHelper.h" #include "cmListFileCache.h" #include "cmMakefile.h" -#include "cmCommandArgumentsHelper.h" /** \class cmCommand * \brief Superclass for all commands in CMake. diff --git a/Source/cmCommandArgumentParserHelper.cxx b/Source/cmCommandArgumentParserHelper.cxx index 14e9e56..0b2fd81 100644 --- a/Source/cmCommandArgumentParserHelper.cxx +++ b/Source/cmCommandArgumentParserHelper.cxx @@ -11,10 +11,10 @@ ============================================================================*/ #include "cmCommandArgumentParserHelper.h" -#include "cmSystemTools.h" #include "cmMakefile.h" -#include "cmState.h" #include "cmOutputConverter.h" +#include "cmState.h" +#include "cmSystemTools.h" #include "cmCommandArgumentLexer.h" @@ -140,15 +140,8 @@ char* cmCommandArgumentParserHelper::ExpandVariable(const char* var) this->Makefile->GetHomeOutputDirectory())) { std::ostringstream msg; - cmListFileContext lfc; - cmOutputConverter converter(this->Makefile->GetStateSnapshot()); - lfc.FilePath = converter.Convert(this->FileName, - cmOutputConverter::HOME); - - lfc.Line = this->FileLine; msg << "uninitialized variable \'" << var << "\'"; - this->Makefile->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, - msg.str(), lfc); + this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, msg.str()); } } return 0; diff --git a/Source/cmCommands.h b/Source/cmCommands.h index 7a94423..0786a64 100644 --- a/Source/cmCommands.h +++ b/Source/cmCommands.h @@ -11,6 +11,7 @@ ============================================================================*/ #ifndef cmCommands_h #define cmCommands_h + #include "cmStandardIncludes.h" #include <vector> diff --git a/Source/cmCommonTargetGenerator.cxx b/Source/cmCommonTargetGenerator.cxx index b5688a8..d00a416 100644 --- a/Source/cmCommonTargetGenerator.cxx +++ b/Source/cmCommonTargetGenerator.cxx @@ -52,19 +52,16 @@ std::string cmCommonTargetGenerator::Convert( return this->LocalGenerator->Convert(source, relative, output); } -//---------------------------------------------------------------------------- const char* cmCommonTargetGenerator::GetFeature(const std::string& feature) { return this->GeneratorTarget->GetFeature(feature, this->ConfigName); } -//---------------------------------------------------------------------------- bool cmCommonTargetGenerator::GetFeatureAsBool(const std::string& feature) { return this->GeneratorTarget->GetFeatureAsBool(feature, this->ConfigName); } -//---------------------------------------------------------------------------- void cmCommonTargetGenerator::AddFeatureFlags( std::string& flags, const std::string& lang ) @@ -78,7 +75,6 @@ void cmCommonTargetGenerator::AddFeatureFlags( } } -//---------------------------------------------------------------------------- void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags) { if(!this->ModuleDefinitionFile) @@ -102,7 +98,6 @@ void cmCommonTargetGenerator::AddModuleDefinitionFlag(std::string& flags) this->LocalGenerator->AppendFlags(flags, flag); } -//---------------------------------------------------------------------------- std::string cmCommonTargetGenerator::ComputeFortranModuleDirectory() const { std::string mod_dir; @@ -132,7 +127,6 @@ std::string cmCommonTargetGenerator::ComputeFortranModuleDirectory() const return mod_dir; } -//---------------------------------------------------------------------------- std::string cmCommonTargetGenerator::GetFortranModuleDirectory() { // Compute the module directory. @@ -146,7 +140,6 @@ std::string cmCommonTargetGenerator::GetFortranModuleDirectory() return this->FortranModuleDirectory; } -//---------------------------------------------------------------------------- void cmCommonTargetGenerator::AddFortranFlags(std::string& flags) { // Enable module output if necessary. @@ -202,7 +195,6 @@ void cmCommonTargetGenerator::AddFortranFlags(std::string& flags) } } -//---------------------------------------------------------------------------- void cmCommonTargetGenerator ::AppendFortranFormatFlags(std::string& flags, cmSourceFile const& source) @@ -231,7 +223,6 @@ cmCommonTargetGenerator } } -//---------------------------------------------------------------------------- std::string cmCommonTargetGenerator::GetFrameworkFlags(std::string const& l) { if(!this->Makefile->IsOn("APPLE")) @@ -293,7 +284,6 @@ std::string cmCommonTargetGenerator::GetFrameworkFlags(std::string const& l) return flags; } -//---------------------------------------------------------------------------- std::string cmCommonTargetGenerator::GetFlags(const std::string &l) { ByLanguageMap::iterator i = this->FlagsByLanguage.find(l); diff --git a/Source/cmComputeComponentGraph.cxx b/Source/cmComputeComponentGraph.cxx index 5bec6a1..9cd780d 100644 --- a/Source/cmComputeComponentGraph.cxx +++ b/Source/cmComputeComponentGraph.cxx @@ -15,7 +15,6 @@ #include <assert.h> -//---------------------------------------------------------------------------- cmComputeComponentGraph::cmComputeComponentGraph(Graph const& input): InputGraph(input) { @@ -28,12 +27,10 @@ cmComputeComponentGraph::cmComputeComponentGraph(Graph const& input): this->TransferEdges(); } -//---------------------------------------------------------------------------- cmComputeComponentGraph::~cmComputeComponentGraph() { } -//---------------------------------------------------------------------------- void cmComputeComponentGraph::Tarjan() { int n = static_cast<int>(this->InputGraph.size()); @@ -58,7 +55,6 @@ void cmComputeComponentGraph::Tarjan() } } -//---------------------------------------------------------------------------- void cmComputeComponentGraph::TarjanVisit(int i) { // We are now visiting this node. @@ -133,7 +129,6 @@ void cmComputeComponentGraph::TarjanVisit(int i) } } -//---------------------------------------------------------------------------- void cmComputeComponentGraph::TransferEdges() { // Map inter-component edges in the original graph to edges in the diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index 2796fdf..23ea371 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -11,13 +11,13 @@ ============================================================================*/ #include "cmComputeLinkDepends.h" +#include "cmAlgorithms.h" #include "cmComputeComponentGraph.h" -#include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmTarget.h" #include "cmake.h" -#include "cmAlgorithms.h" #include <assert.h> @@ -170,7 +170,6 @@ items that we know the linker will re-use automatically (shared libs). */ -//---------------------------------------------------------------------------- cmComputeLinkDepends ::cmComputeLinkDepends(const cmGeneratorTarget* target, const std::string& config) @@ -199,20 +198,17 @@ cmComputeLinkDepends this->CCG = 0; } -//---------------------------------------------------------------------------- cmComputeLinkDepends::~cmComputeLinkDepends() { cmDeleteAll(this->InferredDependSets); delete this->CCG; } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::SetOldLinkDirMode(bool b) { this->OldLinkDirMode = b; } -//---------------------------------------------------------------------------- std::vector<cmComputeLinkDepends::LinkEntry> const& cmComputeLinkDepends::Compute() { @@ -290,7 +286,6 @@ cmComputeLinkDepends::Compute() return this->FinalLinkEntries; } -//---------------------------------------------------------------------------- std::map<std::string, int>::iterator cmComputeLinkDepends::AllocateLinkEntry(std::string const& item) { @@ -304,7 +299,6 @@ cmComputeLinkDepends::AllocateLinkEntry(std::string const& item) return lei; } -//---------------------------------------------------------------------------- int cmComputeLinkDepends::AddLinkEntry(cmLinkItem const& item) { // Check if the item entry has already been added. @@ -354,7 +348,6 @@ int cmComputeLinkDepends::AddLinkEntry(cmLinkItem const& item) return index; } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::FollowLinkEntry(BFSEntry const& qe) { // Get this entry representation. @@ -397,7 +390,6 @@ void cmComputeLinkDepends::FollowLinkEntry(BFSEntry const& qe) } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends ::FollowSharedDeps(int depender_index, cmLinkInterface const* iface, @@ -414,7 +406,6 @@ cmComputeLinkDepends } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends ::QueueSharedDependencies(int depender_index, @@ -430,7 +421,6 @@ cmComputeLinkDepends } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::HandleSharedDependency(SharedDepEntry const& dep) { // Check if the target already has an entry. @@ -472,7 +462,6 @@ void cmComputeLinkDepends::HandleSharedDependency(SharedDepEntry const& dep) } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::AddVarLinkEntries(int depender_index, const char* value) { @@ -550,7 +539,6 @@ void cmComputeLinkDepends::AddVarLinkEntries(int depender_index, this->AddLinkEntries(depender_index, actual_libs); } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::AddDirectLinkEntries() { // Add direct link dependencies in this configuration. @@ -565,7 +553,6 @@ void cmComputeLinkDepends::AddDirectLinkEntries() } } -//---------------------------------------------------------------------------- template <typename T> void cmComputeLinkDepends::AddLinkEntries( @@ -632,7 +619,6 @@ cmComputeLinkDepends::AddLinkEntries( } } -//---------------------------------------------------------------------------- cmGeneratorTarget const* cmComputeLinkDepends::FindTargetToLink(int depender_index, const std::string& name) @@ -650,7 +636,6 @@ cmComputeLinkDepends::FindTargetToLink(int depender_index, return from->FindTargetToLink(name); } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::InferDependencies() { // The inferred dependency sets for each item list the possible @@ -685,7 +670,6 @@ void cmComputeLinkDepends::InferDependencies() } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::CleanConstraintGraph() { for(Graph::iterator i = this->EntryConstraintGraph.begin(); @@ -700,7 +684,6 @@ void cmComputeLinkDepends::CleanConstraintGraph() } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::DisplayConstraintGraph() { // Display the graph nodes and their edges. @@ -714,7 +697,6 @@ void cmComputeLinkDepends::DisplayConstraintGraph() fprintf(stderr, "%s\n", e.str().c_str()); } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::OrderLinkEntires() { // Compute the DAG of strongly connected components. The algorithm @@ -765,7 +747,6 @@ void cmComputeLinkDepends::OrderLinkEntires() } } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::DisplayComponents() { @@ -793,7 +774,6 @@ cmComputeLinkDepends::DisplayComponents() fprintf(stderr, "\n"); } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::VisitComponent(unsigned int c) { // Check if the node has already been visited. @@ -819,7 +799,6 @@ void cmComputeLinkDepends::VisitComponent(unsigned int c) this->ComponentOrder[c] = --this->ComponentOrderId; } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::VisitEntry(int index) { // Include this entry on the link line. @@ -890,7 +869,6 @@ void cmComputeLinkDepends::VisitEntry(int index) } } -//---------------------------------------------------------------------------- cmComputeLinkDepends::PendingComponent& cmComputeLinkDepends::MakePendingComponent(unsigned int component) { @@ -928,7 +906,6 @@ cmComputeLinkDepends::MakePendingComponent(unsigned int component) return pc; } -//---------------------------------------------------------------------------- int cmComputeLinkDepends::ComputeComponentCount(NodeList const& nl) { unsigned int count = 2; @@ -949,7 +926,6 @@ int cmComputeLinkDepends::ComputeComponentCount(NodeList const& nl) return count; } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::DisplayFinalEntries() { fprintf(stderr, "target [%s] links to:\n", this->Target->GetName().c_str()); @@ -969,7 +945,6 @@ void cmComputeLinkDepends::DisplayFinalEntries() fprintf(stderr, "\n"); } -//---------------------------------------------------------------------------- void cmComputeLinkDepends::CheckWrongConfigItem(cmLinkItem const& item) { if(!this->OldLinkDirMode) diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h index f10e4e4..ea23308 100644 --- a/Source/cmComputeLinkDepends.h +++ b/Source/cmComputeLinkDepends.h @@ -13,9 +13,9 @@ #define cmComputeLinkDepends_h #include "cmStandardIncludes.h" -#include "cmLinkItem.h" #include "cmGraphAdjacencyList.h" +#include "cmLinkItem.h" #include <queue> diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 50d8324..0aa6a99 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -14,14 +14,14 @@ #include "cmComputeLinkDepends.h" #include "cmOrderDirectories.h" -#include "cmLocalGenerator.h" +#include "cmAlgorithms.h" +#include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" -#include "cmState.h" -#include "cmOutputConverter.h" +#include "cmLocalGenerator.h" #include "cmMakefile.h" -#include "cmGeneratorTarget.h" +#include "cmOutputConverter.h" +#include "cmState.h" #include "cmake.h" -#include "cmAlgorithms.h" #include <ctype.h> @@ -240,7 +240,6 @@ because this need be done only for shared libraries without soname-s. */ -//---------------------------------------------------------------------------- cmComputeLinkInformation ::cmComputeLinkInformation(const cmGeneratorTarget* target, const std::string& config) @@ -422,7 +421,6 @@ cmComputeLinkInformation "CMAKE_POLICY_WARNING_CMP0060"); } -//---------------------------------------------------------------------------- cmComputeLinkInformation::~cmComputeLinkInformation() { delete this->OrderLinkerSearchPath; @@ -430,20 +428,17 @@ cmComputeLinkInformation::~cmComputeLinkInformation() delete this->OrderDependentRPath; } -//---------------------------------------------------------------------------- cmComputeLinkInformation::ItemVector const& cmComputeLinkInformation::GetItems() { return this->Items; } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmComputeLinkInformation::GetDirectories() { return this->OrderLinkerSearchPath->GetOrderedDirectories(); } -//---------------------------------------------------------------------------- std::string cmComputeLinkInformation::GetRPathLinkString() { // If there is no separate linker runtime search flag (-rpath-link) @@ -457,26 +452,22 @@ std::string cmComputeLinkInformation::GetRPathLinkString() return cmJoin(this->OrderDependentRPath->GetOrderedDirectories(), ":"); } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmComputeLinkInformation::GetDepends() { return this->Depends; } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmComputeLinkInformation::GetFrameworkPaths() { return this->FrameworkPaths; } -//---------------------------------------------------------------------------- const std::set<const cmGeneratorTarget*>& cmComputeLinkInformation::GetSharedLibrariesLinked() { return this->SharedLibrariesLinked; } -//---------------------------------------------------------------------------- bool cmComputeLinkInformation::Compute() { // Skip targets that do not link. @@ -562,6 +553,7 @@ bool cmComputeLinkInformation::Compute() if (!this->CMP0060WarnItems.empty()) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0060) << "\n" "Some library files are in directories implicitly searched by " "the linker when invoked for " << this->LinkLanguage << ":\n" @@ -570,6 +562,7 @@ bool cmComputeLinkInformation::Compute() "link line will ask the linker to search for these by library " "name." ; + /* clang-format on */ this->CMakeInstance->IssueMessage(cmake::AUTHOR_WARNING, w.str(), this->Target->GetBacktrace()); } @@ -577,7 +570,6 @@ bool cmComputeLinkInformation::Compute() return true; } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddImplicitLinkInfo() { // The link closure lists all languages whose implicit info is needed. @@ -594,7 +586,6 @@ void cmComputeLinkInformation::AddImplicitLinkInfo() } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddImplicitLinkInfo(std::string const& lang) { // Add libraries for this language that are not implied by the @@ -629,7 +620,6 @@ void cmComputeLinkInformation::AddImplicitLinkInfo(std::string const& lang) } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddItem(std::string const& item, cmGeneratorTarget const* tgt) { @@ -712,7 +702,6 @@ void cmComputeLinkInformation::AddItem(std::string const& item, } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddSharedDepItem(std::string const& item, const cmGeneratorTarget* tgt) { @@ -802,7 +791,6 @@ void cmComputeLinkInformation::AddSharedDepItem(std::string const& item, } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::ComputeLinkTypeInfo() { // Check whether archives may actually be shared libraries. @@ -859,7 +847,6 @@ void cmComputeLinkInformation::ComputeLinkTypeInfo() this->CurrentLinkType = this->StartLinkType; } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::ComputeItemParserInfo() { // Get possible library name prefixes. @@ -958,7 +945,6 @@ void cmComputeLinkInformation::ComputeItemParserInfo() } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddLinkPrefix(const char* p) { if(p && *p) @@ -967,7 +953,6 @@ void cmComputeLinkInformation::AddLinkPrefix(const char* p) } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddLinkExtension(const char* e, LinkType type) { if(e && *e) @@ -984,7 +969,6 @@ void cmComputeLinkInformation::AddLinkExtension(const char* e, LinkType type) } } -//---------------------------------------------------------------------------- std::string cmComputeLinkInformation ::CreateExtensionRegex(std::vector<std::string> const& exts, LinkType type) @@ -1025,7 +1009,6 @@ cmComputeLinkInformation return libext; } -//---------------------------------------------------------------------------- std::string cmComputeLinkInformation::NoCaseExpression(const char* str) { std::string ret; @@ -1048,7 +1031,6 @@ std::string cmComputeLinkInformation::NoCaseExpression(const char* str) return ret; } -//------------------------------------------------------------------- void cmComputeLinkInformation::SetCurrentLinkType(LinkType lt) { // If we are changing the current link type add the flag to tell the @@ -1074,7 +1056,6 @@ void cmComputeLinkInformation::SetCurrentLinkType(LinkType lt) } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddTargetItem(std::string const& item, cmGeneratorTarget const* target) { @@ -1122,7 +1103,6 @@ void cmComputeLinkInformation::AddTargetItem(std::string const& item, this->Items.push_back(Item(item, true, target)); } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddFullItem(std::string const& item) { // Check for the implicit link directory special case. @@ -1192,7 +1172,6 @@ void cmComputeLinkInformation::AddFullItem(std::string const& item) this->Items.push_back(Item(item, true)); } -//---------------------------------------------------------------------------- bool cmComputeLinkInformation::CheckImplicitDirItem(std::string const& item) { // We only switch to a pathless item if the link type may be @@ -1256,7 +1235,6 @@ bool cmComputeLinkInformation::CheckImplicitDirItem(std::string const& item) return true; } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddUserItem(std::string const& item, bool pathNotKnown) { @@ -1374,7 +1352,6 @@ void cmComputeLinkInformation::AddUserItem(std::string const& item, // specification. } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddFrameworkItem(std::string const& item) { // Try to separate the framework name and path. @@ -1409,7 +1386,6 @@ void cmComputeLinkInformation::AddFrameworkItem(std::string const& item) this->Items.push_back(Item(fw, false)); } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddDirectoryItem(std::string const& item) { if(this->Makefile->IsOn("APPLE") @@ -1423,7 +1399,6 @@ void cmComputeLinkInformation::AddDirectoryItem(std::string const& item) } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::DropDirectoryItem(std::string const& item) { // A full path to a directory was found as a link item. Warn the @@ -1436,7 +1411,6 @@ void cmComputeLinkInformation::DropDirectoryItem(std::string const& item) cmSystemTools::Message(e.str().c_str()); } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::ComputeFrameworkInfo() { // Avoid adding implicit framework paths. @@ -1466,7 +1440,6 @@ void cmComputeLinkInformation::ComputeFrameworkInfo() this->SplitFramework.compile("(.*)/(.*)\\.framework$"); } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddFrameworkPath(std::string const& p) { if(this->FrameworkPathsEmmitted.insert(p).second) @@ -1475,7 +1448,6 @@ void cmComputeLinkInformation::AddFrameworkPath(std::string const& p) } } -//---------------------------------------------------------------------------- bool cmComputeLinkInformation::CheckSharedLibNoSOName(std::string const& item) { // This platform will use the path to a library as its soname if the @@ -1497,7 +1469,6 @@ bool cmComputeLinkInformation::CheckSharedLibNoSOName(std::string const& item) return false; } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddSharedLibNoSOName(std::string const& item) { // We have a full path to a shared library with no soname. We need @@ -1512,7 +1483,6 @@ void cmComputeLinkInformation::AddSharedLibNoSOName(std::string const& item) this->OrderLinkerSearchPath->AddLinkLibrary(item); } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::HandleBadFullItem(std::string const& item, std::string const& file) { @@ -1543,10 +1513,12 @@ void cmComputeLinkInformation::HandleBadFullItem(std::string const& item, { this->CMakeInstance->GetState()->SetGlobalProperty(wid, "1"); std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0008) << "\n" << "Target \"" << this->Target->GetName() << "\" links to item\n" << " " << item << "\n" << "which is a full-path but not a valid library file name."; + /* clang-format on */ this->CMakeInstance->IssueMessage(cmake::AUTHOR_WARNING, w.str(), this->Target->GetBacktrace()); } @@ -1561,10 +1533,12 @@ void cmComputeLinkInformation::HandleBadFullItem(std::string const& item, case cmPolicies::REQUIRED_ALWAYS: { std::ostringstream e; + /* clang-format off */ e << cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0008) << "\n" << "Target \"" << this->Target->GetName() << "\" links to item\n" << " " << item << "\n" << "which is a full-path but not a valid library file name."; + /* clang-format on */ this->CMakeInstance->IssueMessage(cmake::FATAL_ERROR, e.str(), this->Target->GetBacktrace()); } @@ -1572,7 +1546,6 @@ void cmComputeLinkInformation::HandleBadFullItem(std::string const& item, } } -//---------------------------------------------------------------------------- bool cmComputeLinkInformation::FinishLinkerSearchDirectories() { // Support broken projects if necessary. @@ -1625,10 +1598,10 @@ bool cmComputeLinkInformation::FinishLinkerSearchDirectories() return true; } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::PrintLinkPolicyDiagnosis(std::ostream& os) { // Tell the user what to do. + /* clang-format off */ os << "Policy CMP0003 should be set before this line. " << "Add code such as\n" << " if(COMMAND cmake_policy)\n" @@ -1636,6 +1609,7 @@ void cmComputeLinkInformation::PrintLinkPolicyDiagnosis(std::ostream& os) << " endif(COMMAND cmake_policy)\n" << "as early as possible but after the most recent call to " << "cmake_minimum_required or cmake_policy(VERSION). "; + /* clang-format on */ // List the items that might need the old-style paths. os << "This warning appears because target \"" @@ -1694,7 +1668,6 @@ void cmComputeLinkInformation::PrintLinkPolicyDiagnosis(std::ostream& os) << "Run \"cmake --help-policy CMP0003\" for more information."; } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::LoadImplicitLinkInfo() { std::vector<std::string> implicitDirVec; @@ -1765,14 +1738,12 @@ void cmComputeLinkInformation::LoadImplicitLinkInfo() } } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmComputeLinkInformation::GetRuntimeSearchPath() { return this->OrderRuntimeSearchPath->GetOrderedDirectories(); } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddLibraryRuntimeInfo(std::string const& fullPath, cmGeneratorTarget const* target) @@ -1815,7 +1786,6 @@ cmComputeLinkInformation::AddLibraryRuntimeInfo(std::string const& fullPath, } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::AddLibraryRuntimeInfo(std::string const& fullPath) { @@ -1883,7 +1853,6 @@ cmComputeLinkInformation::AddLibraryRuntimeInfo(std::string const& fullPath) } } -//---------------------------------------------------------------------------- static void cmCLI_ExpandListUnique(const char* str, std::vector<std::string>& out, std::set<std::string>& emitted) @@ -1899,7 +1868,6 @@ static void cmCLI_ExpandListUnique(const char* str, } } -//---------------------------------------------------------------------------- void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs, bool for_install) { @@ -2025,7 +1993,6 @@ void cmComputeLinkInformation::GetRPath(std::vector<std::string>& runtimeDirs, cmCLI_ExpandListUnique(this->RuntimeAlways.c_str(), runtimeDirs, emitted); } -//---------------------------------------------------------------------------- std::string cmComputeLinkInformation::GetRPathString(bool for_install) { // Get the directories to use. @@ -2057,7 +2024,6 @@ std::string cmComputeLinkInformation::GetRPathString(bool for_install) return rpath; } -//---------------------------------------------------------------------------- std::string cmComputeLinkInformation::GetChrpathString() { if(!this->RuntimeUseChrpath) diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 586b5bf..1b5297f 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -15,9 +15,9 @@ #include "cmGlobalGenerator.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" +#include "cmSourceFile.h" #include "cmState.h" #include "cmSystemTools.h" -#include "cmSourceFile.h" #include "cmTarget.h" #include "cmake.h" @@ -94,7 +94,6 @@ transitively on all the static libraries it links. */ -//---------------------------------------------------------------------------- cmComputeTargetDepends::cmComputeTargetDepends(cmGlobalGenerator* gg) { this->GlobalGenerator = gg; @@ -105,12 +104,10 @@ cmComputeTargetDepends::cmComputeTargetDepends(cmGlobalGenerator* gg) ->GetGlobalPropertyAsBool("GLOBAL_DEPENDS_NO_CYCLES"); } -//---------------------------------------------------------------------------- cmComputeTargetDepends::~cmComputeTargetDepends() { } -//---------------------------------------------------------------------------- bool cmComputeTargetDepends::Compute() { // Build the original graph. @@ -145,7 +142,6 @@ bool cmComputeTargetDepends::Compute() return true; } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t, cmTargetDependSet& deps) @@ -167,7 +163,6 @@ cmComputeTargetDepends::GetTargetDirectDepends(cmGeneratorTarget const* t, } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::CollectTargets() { // Collect all targets from all generators. @@ -188,7 +183,6 @@ void cmComputeTargetDepends::CollectTargets() } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::CollectDepends() { // Allocate the dependency graph adjacency lists. @@ -201,7 +195,6 @@ void cmComputeTargetDepends::CollectDepends() } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::CollectTargetDepends(int depender_index) { // Get the depender. @@ -287,7 +280,6 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, const cmGeneratorTarget* dependee, const std::string& config, @@ -312,7 +304,6 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, cmLinkItem const& dependee_name, std::set<std::string> &emitted) @@ -344,7 +335,6 @@ void cmComputeTargetDepends::AddInterfaceDepends(int depender_index, } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::AddTargetDepend( int depender_index, cmLinkItem const& dependee_name, bool linking) @@ -411,7 +401,6 @@ void cmComputeTargetDepends::AddTargetDepend( } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::AddTargetDepend(int depender_index, const cmGeneratorTarget* dependee, bool linking) @@ -446,7 +435,6 @@ void cmComputeTargetDepends::AddTargetDepend(int depender_index, } } -//---------------------------------------------------------------------------- void cmComputeTargetDepends::DisplayGraph(Graph const& graph, const std::string& name) @@ -470,7 +458,6 @@ cmComputeTargetDepends::DisplayGraph(Graph const& graph, fprintf(stderr, "\n"); } -//---------------------------------------------------------------------------- void cmComputeTargetDepends ::DisplayComponents(cmComputeComponentGraph const& ccg) @@ -492,7 +479,6 @@ cmComputeTargetDepends fprintf(stderr, "\n"); } -//---------------------------------------------------------------------------- bool cmComputeTargetDepends ::CheckComponents(cmComputeComponentGraph const& ccg) @@ -532,7 +518,6 @@ cmComputeTargetDepends return true; } -//---------------------------------------------------------------------------- void cmComputeTargetDepends ::ComplainAboutBadComponent(cmComputeComponentGraph const& ccg, int c, @@ -589,7 +574,6 @@ cmComputeTargetDepends cmSystemTools::Error(e.str().c_str()); } -//---------------------------------------------------------------------------- bool cmComputeTargetDepends ::IntraComponent(std::vector<int> const& cmap, int c, int i, int* head, @@ -631,7 +615,6 @@ cmComputeTargetDepends return true; } -//---------------------------------------------------------------------------- bool cmComputeTargetDepends ::ComputeFinalDepends(cmComputeComponentGraph const& ccg) diff --git a/Source/cmConditionEvaluator.cxx b/Source/cmConditionEvaluator.cxx index 64c5980..3711b9b 100644 --- a/Source/cmConditionEvaluator.cxx +++ b/Source/cmConditionEvaluator.cxx @@ -11,8 +11,9 @@ ============================================================================*/ #include "cmConditionEvaluator.h" -#include "cmOutputConverter.h" + #include "cmAlgorithms.h" +#include "cmOutputConverter.h" static std::string const keyAND = "AND"; static std::string const keyCOMMAND = "COMMAND"; @@ -663,11 +664,11 @@ bool cmConditionEvaluator::HandleLevel2(cmArgumentList &newArgs, { result = false; } - else if (*(argP1) == "LESS") + else if (*(argP1) == keyLESS) { result = (lhs < rhs); } - else if (*(argP1) == "GREATER") + else if (*(argP1) == keyGREATER) { result = (lhs > rhs); } @@ -688,11 +689,11 @@ bool cmConditionEvaluator::HandleLevel2(cmArgumentList &newArgs, def2 = this->GetVariableOrString(*argP2); int val = strcmp(def,def2); bool result; - if (*(argP1) == "STRLESS") + if (*(argP1) == keySTRLESS) { result = (val < 0); } - else if (*(argP1) == "STRGREATER") + else if (*(argP1) == keySTRGREATER) { result = (val > 0); } diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 46b71c5..94c778b 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -35,9 +35,11 @@ bool cmConfigureFileCommand if(cmSystemTools::FileIsDirectory(this->InputFile)) { std::ostringstream e; + /* clang-format off */ e << "input location\n" << " " << this->InputFile << "\n" << "is a directory but a file was expected."; + /* clang-format on */ this->SetError(e.str()); return false; } diff --git a/Source/cmCoreTryCompile.cxx b/Source/cmCoreTryCompile.cxx index b639c15..18dca91 100644 --- a/Source/cmCoreTryCompile.cxx +++ b/Source/cmCoreTryCompile.cxx @@ -10,11 +10,12 @@ See the License for more information. ============================================================================*/ #include "cmCoreTryCompile.h" -#include "cmake.h" -#include "cmOutputConverter.h" -#include "cmGlobalGenerator.h" + #include "cmAlgorithms.h" #include "cmExportTryCompileFileGenerator.h" +#include "cmGlobalGenerator.h" +#include "cmOutputConverter.h" +#include "cmake.h" #include <cmsys/Directory.hxx> #include <assert.h> @@ -294,6 +295,9 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, } } + std::string const tcConfig = + this->Makefile->GetSafeDefinition("CMAKE_TRY_COMPILE_CONFIGURATION"); + // we need to create a directory and CMakeLists file etc... // first create the directories sourceDirectory = this->BinaryDirectory.c_str(); @@ -303,9 +307,11 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, if (!fout) { std::ostringstream e; + /* clang-format off */ e << "Failed to open\n" << " " << outFileName << "\n" << cmSystemTools::GetLastSystemError(); + /* clang-format on */ this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); return -1; } @@ -350,6 +356,13 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, cmOutputConverter::EscapeForCMake(flags?flags:"").c_str()); fprintf(fout, "set(CMAKE_%s_FLAGS \"${CMAKE_%s_FLAGS}" " ${COMPILE_DEFINITIONS}\")\n", li->c_str(), li->c_str()); + static std::string const cfgDefault = "DEBUG"; + std::string const cfg = !tcConfig.empty()? + cmSystemTools::UpperCase(tcConfig) : cfgDefault; + std::string const langFlagsCfg = "CMAKE_" + *li + "_FLAGS_" + cfg; + const char* flagsCfg = this->Makefile->GetDefinition(langFlagsCfg); + fprintf(fout, "set(%s %s)\n", langFlagsCfg.c_str(), + cmOutputConverter::EscapeForCMake(flagsCfg?flagsCfg:"").c_str()); } switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0056)) { @@ -358,11 +371,13 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, "CMAKE_POLICY_WARNING_CMP0056")) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0056) << "\n" "For compatibility with older versions of CMake, try_compile " "is not honoring caller link flags (e.g. CMAKE_EXE_LINKER_FLAGS) " "in the test project." ; + /* clang-format on */ this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } case cmPolicies::OLD: @@ -406,8 +421,7 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, std::string fname = "/" + std::string(targetName) + "Targets.cmake"; cmExportTryCompileFileGenerator tcfg(gg, targets, this->Makefile); tcfg.SetExportFile((this->BinaryDirectory + fname).c_str()); - tcfg.SetConfig(this->Makefile->GetSafeDefinition( - "CMAKE_TRY_COMPILE_CONFIGURATION")); + tcfg.SetConfig(tcConfig); if(!tcfg.GenerateImportFile()) { @@ -598,10 +612,12 @@ int cmCoreTryCompile::TryCompileCode(std::vector<std::string> const& argv, copyFile)) { std::ostringstream emsg; + /* clang-format off */ emsg << "Cannot copy output executable\n" << " '" << this->OutputFile << "'\n" << "to destination specified by COPY_FILE:\n" << " '" << copyFile << "'\n"; + /* clang-format on */ if(!this->FindErrorMessage.empty()) { emsg << this->FindErrorMessage.c_str(); diff --git a/Source/cmCreateTestSourceList.cxx b/Source/cmCreateTestSourceList.cxx index e670991..65eee34 100644 --- a/Source/cmCreateTestSourceList.cxx +++ b/Source/cmCreateTestSourceList.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmCreateTestSourceList.h" + #include "cmSourceFile.h" // cmCreateTestSourceList diff --git a/Source/cmCryptoHash.cxx b/Source/cmCryptoHash.cxx index 6616218..5eb0239 100644 --- a/Source/cmCryptoHash.cxx +++ b/Source/cmCryptoHash.cxx @@ -11,11 +11,10 @@ ============================================================================*/ #include "cmCryptoHash.h" -#include <cmsys/MD5.h> -#include <cmsys/FStream.hxx> #include "cm_sha2.h" +#include <cmsys/FStream.hxx> +#include <cmsys/MD5.h> -//---------------------------------------------------------------------------- cmsys::auto_ptr<cmCryptoHash> cmCryptoHash::New(const char* algo) { if(strcmp(algo,"MD5") == 0) @@ -34,7 +33,6 @@ cmsys::auto_ptr<cmCryptoHash> cmCryptoHash::New(const char* algo) { return cmsys::auto_ptr<cmCryptoHash>(0); } } -//---------------------------------------------------------------------------- std::string cmCryptoHash::HashString(const std::string& input) { this->Initialize(); @@ -43,7 +41,6 @@ std::string cmCryptoHash::HashString(const std::string& input) return this->Finalize(); } -//---------------------------------------------------------------------------- std::string cmCryptoHash::HashFile(const std::string& file) { cmsys::ifstream fin(file.c_str(), std::ios::in | std::ios::binary); @@ -79,30 +76,25 @@ std::string cmCryptoHash::HashFile(const std::string& file) return ""; } -//---------------------------------------------------------------------------- cmCryptoHashMD5::cmCryptoHashMD5(): MD5(cmsysMD5_New()) { } -//---------------------------------------------------------------------------- cmCryptoHashMD5::~cmCryptoHashMD5() { cmsysMD5_Delete(this->MD5); } -//---------------------------------------------------------------------------- void cmCryptoHashMD5::Initialize() { cmsysMD5_Initialize(this->MD5); } -//---------------------------------------------------------------------------- void cmCryptoHashMD5::Append(unsigned char const* buf, int sz) { cmsysMD5_Append(this->MD5, buf, sz); } -//---------------------------------------------------------------------------- std::string cmCryptoHashMD5::Finalize() { char md5out[32]; diff --git a/Source/cmCurl.cxx b/Source/cmCurl.cxx index 4f3d890..c135f27 100644 --- a/Source/cmCurl.cxx +++ b/Source/cmCurl.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmCurl.h" + #include "cmSystemTools.h" // curl versions before 7.21.5 did not provide this error code @@ -25,7 +26,6 @@ e += ::curl_easy_strerror(result); \ } -//---------------------------------------------------------------------------- std::string cmCurlSetCAInfo(::CURL *curl, const char* cafile) { std::string e; diff --git a/Source/cmCurl.h b/Source/cmCurl.h index 0c5609c..2bc54cd 100644 --- a/Source/cmCurl.h +++ b/Source/cmCurl.h @@ -12,10 +12,10 @@ #ifndef cmCurl_h #define cmCurl_h -#include <cmsys/Configure.h> -#include "cm_curl.h" #include "cmStandardIncludes.h" +#include "cm_curl.h" + std::string cmCurlSetCAInfo(::CURL *curl, const char* cafile = 0); #endif diff --git a/Source/cmCustomCommand.cxx b/Source/cmCustomCommand.cxx index 7c37e3b..e2bd8b1 100644 --- a/Source/cmCustomCommand.cxx +++ b/Source/cmCustomCommand.cxx @@ -15,7 +15,6 @@ #include <cmsys/auto_ptr.hxx> -//---------------------------------------------------------------------------- cmCustomCommand::cmCustomCommand() : Backtrace() { @@ -25,7 +24,6 @@ cmCustomCommand::cmCustomCommand() this->UsesTerminal = false; } -//---------------------------------------------------------------------------- cmCustomCommand::cmCustomCommand(cmMakefile const* mf, const std::vector<std::string>& outputs, const std::vector<std::string>& byproducts, @@ -50,107 +48,90 @@ cmCustomCommand::cmCustomCommand(cmMakefile const* mf, } } -//---------------------------------------------------------------------------- const std::vector<std::string>& cmCustomCommand::GetOutputs() const { return this->Outputs; } -//---------------------------------------------------------------------------- const std::vector<std::string>& cmCustomCommand::GetByproducts() const { return this->Byproducts; } -//---------------------------------------------------------------------------- const std::vector<std::string>& cmCustomCommand::GetDepends() const { return this->Depends; } -//---------------------------------------------------------------------------- const cmCustomCommandLines& cmCustomCommand::GetCommandLines() const { return this->CommandLines; } -//---------------------------------------------------------------------------- const char* cmCustomCommand::GetComment() const { const char* no_comment = 0; return this->HaveComment? this->Comment.c_str() : no_comment; } -//---------------------------------------------------------------------------- void cmCustomCommand::AppendCommands(const cmCustomCommandLines& commandLines) { this->CommandLines.insert(this->CommandLines.end(), commandLines.begin(), commandLines.end()); } -//---------------------------------------------------------------------------- void cmCustomCommand::AppendDepends(const std::vector<std::string>& depends) { this->Depends.insert(this->Depends.end(), depends.begin(), depends.end()); } -//---------------------------------------------------------------------------- bool cmCustomCommand::GetEscapeOldStyle() const { return this->EscapeOldStyle; } -//---------------------------------------------------------------------------- void cmCustomCommand::SetEscapeOldStyle(bool b) { this->EscapeOldStyle = b; } -//---------------------------------------------------------------------------- bool cmCustomCommand::GetEscapeAllowMakeVars() const { return this->EscapeAllowMakeVars; } -//---------------------------------------------------------------------------- void cmCustomCommand::SetEscapeAllowMakeVars(bool b) { this->EscapeAllowMakeVars = b; } -//---------------------------------------------------------------------------- cmListFileBacktrace const& cmCustomCommand::GetBacktrace() const { return this->Backtrace; } -//---------------------------------------------------------------------------- cmCustomCommand::ImplicitDependsList const& cmCustomCommand::GetImplicitDepends() const { return this->ImplicitDepends; } -//---------------------------------------------------------------------------- void cmCustomCommand::SetImplicitDepends(ImplicitDependsList const& l) { this->ImplicitDepends = l; } -//---------------------------------------------------------------------------- void cmCustomCommand::AppendImplicitDepends(ImplicitDependsList const& l) { this->ImplicitDepends.insert(this->ImplicitDepends.end(), l.begin(), l.end()); } -//---------------------------------------------------------------------------- bool cmCustomCommand::GetUsesTerminal() const { return this->UsesTerminal; } -//---------------------------------------------------------------------------- void cmCustomCommand::SetUsesTerminal(bool b) { this->UsesTerminal = b; diff --git a/Source/cmCustomCommand.h b/Source/cmCustomCommand.h index f9b38c3..0370497 100644 --- a/Source/cmCustomCommand.h +++ b/Source/cmCustomCommand.h @@ -13,6 +13,7 @@ #define cmCustomCommand_h #include "cmStandardIncludes.h" + #include "cmListFileCache.h" class cmMakefile; diff --git a/Source/cmCustomCommandGenerator.cxx b/Source/cmCustomCommandGenerator.cxx index dc06678..4a19160 100644 --- a/Source/cmCustomCommandGenerator.cxx +++ b/Source/cmCustomCommandGenerator.cxx @@ -11,13 +11,12 @@ ============================================================================*/ #include "cmCustomCommandGenerator.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" #include "cmCustomCommand.h" -#include "cmOutputConverter.h" #include "cmGeneratorExpression.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" +#include "cmOutputConverter.h" -//---------------------------------------------------------------------------- cmCustomCommandGenerator::cmCustomCommandGenerator( cmCustomCommand const& cc, const std::string& config, cmLocalGenerator* lg): CC(cc), Config(config), LG(lg), @@ -26,19 +25,28 @@ cmCustomCommandGenerator::cmCustomCommandGenerator( { } -//---------------------------------------------------------------------------- cmCustomCommandGenerator::~cmCustomCommandGenerator() { delete this->GE; } -//---------------------------------------------------------------------------- unsigned int cmCustomCommandGenerator::GetNumberOfCommands() const { return static_cast<unsigned int>(this->CC.GetCommandLines().size()); } -//---------------------------------------------------------------------------- +bool cmCustomCommandGenerator::UseCrossCompilingEmulator(unsigned int c) const +{ + std::string const& argv0 = this->CC.GetCommandLines()[c][0]; + cmGeneratorTarget* target = + this->LG->FindGeneratorTargetToUse(argv0); + if(target && target->GetType() == cmState::EXECUTABLE) + { + return target->GetProperty("CROSSCOMPILING_EMULATOR") != 0; + } + return false; +} + std::string cmCustomCommandGenerator::GetCommand(unsigned int c) const { std::string const& argv0 = this->CC.GetCommandLines()[c][0]; @@ -50,10 +58,21 @@ std::string cmCustomCommandGenerator::GetCommand(unsigned int c) const { return target->GetLocation(this->Config); } - return this->GE->Parse(argv0)->Evaluate(this->LG, this->Config); + if (target && target->GetType() == cmState::EXECUTABLE) + { + const char* emulator = target->GetProperty("CROSSCOMPILING_EMULATOR"); + if (emulator) + { + return std::string(emulator); + } + } + + cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = this->GE->Parse(argv0); + std::string exe = cge->Evaluate(this->LG, this->Config); + + return exe; } -//---------------------------------------------------------------------------- std::string escapeForShellOldStyle(const std::string& str) { std::string result; @@ -82,13 +101,17 @@ std::string escapeForShellOldStyle(const std::string& str) #endif } -//---------------------------------------------------------------------------- void cmCustomCommandGenerator ::AppendArguments(unsigned int c, std::string& cmd) const { + unsigned int offset = 1; + if (this->UseCrossCompilingEmulator(c)) + { + offset = 0; + } cmCustomCommandLine const& commandLine = this->CC.GetCommandLines()[c]; - for(unsigned int j=1;j < commandLine.size(); ++j) + for(unsigned int j=offset;j < commandLine.size(); ++j) { std::string arg = this->GE->Parse(commandLine[j])->Evaluate(this->LG, @@ -106,31 +129,26 @@ cmCustomCommandGenerator } } -//---------------------------------------------------------------------------- const char* cmCustomCommandGenerator::GetComment() const { return this->CC.GetComment(); } -//---------------------------------------------------------------------------- std::string cmCustomCommandGenerator::GetWorkingDirectory() const { return this->CC.GetWorkingDirectory(); } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmCustomCommandGenerator::GetOutputs() const { return this->CC.GetOutputs(); } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmCustomCommandGenerator::GetByproducts() const { return this->CC.GetByproducts(); } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmCustomCommandGenerator::GetDepends() const { if (!this->DependsDone) diff --git a/Source/cmCustomCommandGenerator.h b/Source/cmCustomCommandGenerator.h index a637fed..65ce031 100644 --- a/Source/cmCustomCommandGenerator.h +++ b/Source/cmCustomCommandGenerator.h @@ -36,6 +36,7 @@ public: cmCustomCommand const& GetCC() const { return this->CC; } unsigned int GetNumberOfCommands() const; std::string GetCommand(unsigned int c) const; + bool UseCrossCompilingEmulator(unsigned int c) const; void AppendArguments(unsigned int c, std::string& cmd) const; const char* GetComment() const; std::string GetWorkingDirectory() const; diff --git a/Source/cmDefinePropertyCommand.cxx b/Source/cmDefinePropertyCommand.cxx index 0efc7fc..47fc22e 100644 --- a/Source/cmDefinePropertyCommand.cxx +++ b/Source/cmDefinePropertyCommand.cxx @@ -10,8 +10,9 @@ See the License for more information. ============================================================================*/ #include "cmDefinePropertyCommand.h" -#include "cmake.h" + #include "cmState.h" +#include "cmake.h" bool cmDefinePropertyCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx index b06fb5c..e8b898d 100644 --- a/Source/cmDefinitions.cxx +++ b/Source/cmDefinitions.cxx @@ -13,10 +13,8 @@ #include <assert.h> -//---------------------------------------------------------------------------- cmDefinitions::Def cmDefinitions::NoDef; -//---------------------------------------------------------------------------- cmDefinitions::Def const& cmDefinitions::GetInternal( const std::string& key, StackIter begin, StackIter end, bool raise) { @@ -41,7 +39,6 @@ cmDefinitions::Def const& cmDefinitions::GetInternal( return begin->Map.insert(MapType::value_type(key, def)).first->second; } -//---------------------------------------------------------------------------- const char* cmDefinitions::Get(const std::string& key, StackIter begin, StackIter end) { @@ -69,14 +66,12 @@ bool cmDefinitions::HasKey(const std::string& key, return false; } -//---------------------------------------------------------------------------- void cmDefinitions::Set(const std::string& key, const char* value) { Def def(value); this->Map[key] = def; } -//---------------------------------------------------------------------------- std::vector<std::string> cmDefinitions::UnusedKeys() const { std::vector<std::string> keys; @@ -93,7 +88,6 @@ std::vector<std::string> cmDefinitions::UnusedKeys() const return keys; } -//---------------------------------------------------------------------------- cmDefinitions cmDefinitions::MakeClosure(StackIter begin, StackIter end) { @@ -123,7 +117,6 @@ cmDefinitions cmDefinitions::MakeClosure(StackIter begin, return closure; } -//---------------------------------------------------------------------------- std::vector<std::string> cmDefinitions::ClosureKeys(StackIter begin, StackIter end) { diff --git a/Source/cmDepends.cxx b/Source/cmDepends.cxx index d419011..8686bcd 100644 --- a/Source/cmDepends.cxx +++ b/Source/cmDepends.cxx @@ -11,15 +11,14 @@ ============================================================================*/ #include "cmDepends.h" +#include "cmFileTimeComparison.h" +#include "cmGeneratedFileStream.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" #include "cmSystemTools.h" -#include "cmFileTimeComparison.h" -#include <string.h> #include <cmsys/FStream.hxx> +#include <string.h> -//---------------------------------------------------------------------------- cmDepends::cmDepends(cmLocalGenerator* lg, const char* targetDir): CompileDirectory(), LocalGenerator(lg), @@ -32,14 +31,12 @@ cmDepends::cmDepends(cmLocalGenerator* lg, const char* targetDir): { } -//---------------------------------------------------------------------------- cmDepends::~cmDepends() { delete [] this->Dependee; delete [] this->Depender; } -//---------------------------------------------------------------------------- bool cmDepends::Write(std::ostream &makeDepends, std::ostream &internalDepends) { @@ -76,14 +73,12 @@ bool cmDepends::Write(std::ostream &makeDepends, return this->Finalize(makeDepends, internalDepends); } -//---------------------------------------------------------------------------- bool cmDepends::Finalize(std::ostream&, std::ostream&) { return true; } -//---------------------------------------------------------------------------- bool cmDepends::Check(const char *makeFile, const char *internalFile, std::map<std::string, DependencyVector>& validDeps) { @@ -117,7 +112,6 @@ bool cmDepends::Check(const char *makeFile, const char *internalFile, return okay; } -//---------------------------------------------------------------------------- void cmDepends::Clear(const char *file) { // Print verbose output. @@ -135,7 +129,6 @@ void cmDepends::Clear(const char *file) << "# This may be replaced when dependencies are built." << std::endl; } -//---------------------------------------------------------------------------- bool cmDepends::WriteDependencies( const std::set<std::string>&, const std::string&, std::ostream&, std::ostream&) @@ -144,7 +137,6 @@ bool cmDepends::WriteDependencies( return false; } -//---------------------------------------------------------------------------- bool cmDepends::CheckDependencies(std::istream& internalDepends, const char* internalDependsFileName, std::map<std::string, DependencyVector>& validDeps) @@ -291,7 +283,6 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends, return okay; } -//---------------------------------------------------------------------------- void cmDepends::SetIncludePathFromLanguage(const std::string& lang) { // Look for the new per "TARGET_" variant first: diff --git a/Source/cmDependsC.cxx b/Source/cmDependsC.cxx index 6cdd4c1..2fab890 100644 --- a/Source/cmDependsC.cxx +++ b/Source/cmDependsC.cxx @@ -11,11 +11,11 @@ ============================================================================*/ #include "cmDependsC.h" +#include "cmAlgorithms.h" #include "cmFileTimeComparison.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmSystemTools.h" -#include "cmAlgorithms.h" #include <cmsys/FStream.hxx> #include <ctype.h> // isspace @@ -29,13 +29,11 @@ #define INCLUDE_REGEX_COMPLAIN_MARKER "#IncludeRegexComplain: " #define INCLUDE_REGEX_TRANSFORM_MARKER "#IncludeRegexTransform: " -//---------------------------------------------------------------------------- cmDependsC::cmDependsC() : ValidDeps(0) { } -//---------------------------------------------------------------------------- cmDependsC::cmDependsC(cmLocalGenerator* lg, const char* targetDir, const std::string& lang, @@ -87,14 +85,12 @@ cmDependsC::cmDependsC(cmLocalGenerator* lg, this->ReadCacheFile(); } -//---------------------------------------------------------------------------- cmDependsC::~cmDependsC() { this->WriteCacheFile(); cmDeleteAll(this->FileCache); } -//---------------------------------------------------------------------------- bool cmDependsC::WriteDependencies(const std::set<std::string>& sources, const std::string& obj, std::ostream& makeDepends, @@ -292,7 +288,6 @@ bool cmDependsC::WriteDependencies(const std::set<std::string>& sources, return true; } -//---------------------------------------------------------------------------- void cmDependsC::ReadCacheFile() { if(this->CacheFileName.empty()) @@ -381,7 +376,6 @@ void cmDependsC::ReadCacheFile() } } -//---------------------------------------------------------------------------- void cmDependsC::WriteCacheFile() const { if(this->CacheFileName.empty()) @@ -426,7 +420,6 @@ void cmDependsC::WriteCacheFile() const } } -//---------------------------------------------------------------------------- void cmDependsC::Scan(std::istream& is, const char* directory, const std::string& fullName) { @@ -484,7 +477,6 @@ void cmDependsC::Scan(std::istream& is, const char* directory, } } -//---------------------------------------------------------------------------- void cmDependsC::SetupTransforms() { // Get the transformation rules. @@ -532,7 +524,6 @@ void cmDependsC::SetupTransforms() } } -//---------------------------------------------------------------------------- void cmDependsC::ParseTransform(std::string const& xform) { // A transform rule is of the form SOME_MACRO(%)=value-with-% @@ -547,7 +538,6 @@ void cmDependsC::ParseTransform(std::string const& xform) this->TransformRules[name] = value; } -//---------------------------------------------------------------------------- void cmDependsC::TransformLine(std::string& line) { // Check for a transform rule match. Return if none. diff --git a/Source/cmDependsC.h b/Source/cmDependsC.h index 07d3c21..cf0a423 100644 --- a/Source/cmDependsC.h +++ b/Source/cmDependsC.h @@ -13,6 +13,7 @@ #define cmDependsC_h #include "cmDepends.h" + #include <cmsys/RegularExpression.hxx> #include <queue> diff --git a/Source/cmDependsFortran.cxx b/Source/cmDependsFortran.cxx index 80f560f..2e4a276 100644 --- a/Source/cmDependsFortran.cxx +++ b/Source/cmDependsFortran.cxx @@ -11,20 +11,19 @@ ============================================================================*/ #include "cmDependsFortran.h" -#include "cmSystemTools.h" +#include "cmGeneratedFileStream.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" +#include "cmSystemTools.h" #include "cmFortranParser.h" /* Interface to parser object. */ -#include <cmsys/FStream.hxx> #include <assert.h> +#include <cmsys/FStream.hxx> // TODO: Test compiler for the case of the mod file. Some always // use lower case and some always use upper case. I do not know if any // use the case from the source code. -//---------------------------------------------------------------------------- class cmDependsFortranInternals { public: @@ -55,13 +54,11 @@ public: } }; -//---------------------------------------------------------------------------- cmDependsFortran::cmDependsFortran(): Internal(0) { } -//---------------------------------------------------------------------------- cmDependsFortran ::cmDependsFortran(cmLocalGenerator* lg): cmDepends(lg), @@ -94,13 +91,11 @@ cmDependsFortran } } -//---------------------------------------------------------------------------- cmDependsFortran::~cmDependsFortran() { delete this->Internal; } -//---------------------------------------------------------------------------- bool cmDependsFortran::WriteDependencies( const std::set<std::string>& sources, const std::string& obj, std::ostream&, std::ostream&) @@ -143,7 +138,6 @@ bool cmDependsFortran::WriteDependencies( return okay; } -//---------------------------------------------------------------------------- bool cmDependsFortran::Finalize(std::ostream& makeDepends, std::ostream& internalDepends) { @@ -232,7 +226,6 @@ bool cmDependsFortran::Finalize(std::ostream& makeDepends, return true; } -//---------------------------------------------------------------------------- void cmDependsFortran::LocateModules() { // Collect the set of modules provided and required by all sources. @@ -283,7 +276,6 @@ void cmDependsFortran::LocateModules() } } -//---------------------------------------------------------------------------- void cmDependsFortran::MatchLocalModules() { const char* stampDir = this->TargetDirectory.c_str(); @@ -295,7 +287,6 @@ void cmDependsFortran::MatchLocalModules() } } -//---------------------------------------------------------------------------- void cmDependsFortran::MatchRemoteModules(std::istream& fin, const char* stampDir) { @@ -327,7 +318,6 @@ void cmDependsFortran::MatchRemoteModules(std::istream& fin, } } -//---------------------------------------------------------------------------- void cmDependsFortran::ConsiderModule(const char* name, const char* stampDir) { @@ -347,7 +337,6 @@ void cmDependsFortran::ConsiderModule(const char* name, } } -//---------------------------------------------------------------------------- bool cmDependsFortran ::WriteDependenciesReal(const char *obj, @@ -516,7 +505,6 @@ cmDependsFortran return true; } -//---------------------------------------------------------------------------- bool cmDependsFortran::FindModule(std::string const& name, std::string& module) { @@ -554,7 +542,6 @@ bool cmDependsFortran::FindModule(std::string const& name, return false; } -//---------------------------------------------------------------------------- bool cmDependsFortran::CopyModule(const std::vector<std::string>& args) { // Implements @@ -620,7 +607,6 @@ bool cmDependsFortran::CopyModule(const std::vector<std::string>& args) return false; } -//---------------------------------------------------------------------------- // Helper function to look for a short sequence in a stream. If this // is later used for longer sequences it should be re-written using an // efficient string search algorithm such as Boyer-Moore. @@ -656,7 +642,6 @@ bool cmFortranStreamContainsSequence(std::istream& ifs, return true; } -//---------------------------------------------------------------------------- // Helper function to compare the remaining content in two streams. static bool cmFortranStreamsDiffer(std::istream& ifs1, std::istream& ifs2) @@ -684,7 +669,6 @@ static bool cmFortranStreamsDiffer(std::istream& ifs1, return true; } -//---------------------------------------------------------------------------- bool cmDependsFortran::ModulesDiffer(const char* modFile, const char* stampFile, const char* compilerId) diff --git a/Source/cmDependsJava.cxx b/Source/cmDependsJava.cxx index 949d465..96f98dc 100644 --- a/Source/cmDependsJava.cxx +++ b/Source/cmDependsJava.cxx @@ -14,17 +14,14 @@ #include "cmDependsJavaParserHelper.h" #include "cmSystemTools.h" -//---------------------------------------------------------------------------- cmDependsJava::cmDependsJava() { } -//---------------------------------------------------------------------------- cmDependsJava::~cmDependsJava() { } -//---------------------------------------------------------------------------- bool cmDependsJava::WriteDependencies(const std::set<std::string>& sources, const std::string&, std::ostream&, std::ostream&) { diff --git a/Source/cmDependsJavaParserHelper.cxx b/Source/cmDependsJavaParserHelper.cxx index 3c02325..51a1cb4 100644 --- a/Source/cmDependsJavaParserHelper.cxx +++ b/Source/cmDependsJavaParserHelper.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmDependsJavaParserHelper.h" -#include "cmSystemTools.h" #include "cmDependsJavaLexer.h" +#include "cmSystemTools.h" #include <cmsys/FStream.hxx> int cmDependsJava_yyparse( yyscan_t yyscanner ); diff --git a/Source/cmDocumentation.cxx b/Source/cmDocumentation.cxx index 4f34755..d3793c2 100644 --- a/Source/cmDocumentation.cxx +++ b/Source/cmDocumentation.cxx @@ -11,20 +11,19 @@ ============================================================================*/ #include "cmDocumentation.h" +#include "cmAlgorithms.h" +#include "cmRST.h" #include "cmSystemTools.h" #include "cmVersion.h" -#include "cmRST.h" -#include "cmAlgorithms.h" #include <cmsys/Directory.hxx> -#include <cmsys/Glob.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/Glob.hxx> #include <ctype.h> #include <algorithm> -//---------------------------------------------------------------------------- static const char *cmDocumentationStandardOptions[][2] = { {"--help,-help,-usage,-h,-H,/?", @@ -70,7 +69,6 @@ static const char *cmDocumentationStandardOptions[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char *cmDocumentationGeneratorsHeader[][2] = { {0, @@ -78,32 +76,30 @@ static const char *cmDocumentationGeneratorsHeader[][2] = {0,0} }; -//---------------------------------------------------------------------------- cmDocumentation::cmDocumentation() { this->addCommonStandardDocSections(); this->ShowGenerators = true; } -//---------------------------------------------------------------------------- cmDocumentation::~cmDocumentation() { cmDeleteAll(this->AllSections); } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintVersion(std::ostream& os) { + /* clang-format off */ os << this->GetNameString() << " version " << cmVersion::GetCMakeVersion() << "\n" "\n" "CMake suite maintained and supported by Kitware (kitware.com/cmake).\n" ; + /* clang-format on */ return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os) { switch (ht) @@ -148,7 +144,6 @@ bool cmDocumentation::PrintDocumentation(Type ht, std::ostream& os) } } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintRequestedDocumentation(std::ostream& os) { int count = 0; @@ -231,7 +226,6 @@ void cmDocumentation::WarnFormFromFilename( } } -//---------------------------------------------------------------------------- void cmDocumentation::addCommonStandardDocSections() { cmDocumentationSection *sec; @@ -241,7 +235,6 @@ void cmDocumentation::addCommonStandardDocSections() this->AllSections["Options"] = sec; } -//---------------------------------------------------------------------------- void cmDocumentation::addCMakeStandardDocSections() { cmDocumentationSection *sec; @@ -251,7 +244,6 @@ void cmDocumentation::addCMakeStandardDocSections() this->AllSections["Generators"] = sec; } -//---------------------------------------------------------------------------- void cmDocumentation::addCTestStandardDocSections() { // This is currently done for backward compatibility reason @@ -259,7 +251,6 @@ void cmDocumentation::addCTestStandardDocSections() addCMakeStandardDocSections(); } -//---------------------------------------------------------------------------- void cmDocumentation::addCPackStandardDocSections() { cmDocumentationSection *sec; @@ -269,7 +260,6 @@ void cmDocumentation::addCPackStandardDocSections() this->AllSections["Generators"] = sec; } -//---------------------------------------------------------------------------- bool cmDocumentation::CheckOptions(int argc, const char* const* argv, const char* exitOpt) { @@ -480,13 +470,11 @@ bool cmDocumentation::CheckOptions(int argc, const char* const* argv, return result; } -//---------------------------------------------------------------------------- void cmDocumentation::SetName(const std::string& name) { this->NameString = name; } -//---------------------------------------------------------------------------- void cmDocumentation::SetSection(const char *name, cmDocumentationSection *section) { @@ -497,7 +485,6 @@ void cmDocumentation::SetSection(const char *name, this->AllSections[name] = section; } -//---------------------------------------------------------------------------- void cmDocumentation::SetSection(const char *name, std::vector<cmDocumentationEntry> &docs) { @@ -508,7 +495,6 @@ void cmDocumentation::SetSection(const char *name, this->SetSection(name,sec); } -//---------------------------------------------------------------------------- void cmDocumentation::SetSection(const char *name, const char *docs[][2]) { @@ -519,7 +505,6 @@ void cmDocumentation::SetSection(const char *name, this->SetSection(name,sec); } -//---------------------------------------------------------------------------- void cmDocumentation ::SetSections(std::map<std::string,cmDocumentationSection *> §ions) { @@ -530,7 +515,6 @@ void cmDocumentation } } -//---------------------------------------------------------------------------- void cmDocumentation::PrependSection(const char *name, const char *docs[][2]) { @@ -548,7 +532,6 @@ void cmDocumentation::PrependSection(const char *name, sec->Prepend(docs); } -//---------------------------------------------------------------------------- void cmDocumentation::PrependSection(const char *name, std::vector<cmDocumentationEntry> &docs) { @@ -566,7 +549,6 @@ void cmDocumentation::PrependSection(const char *name, sec->Prepend(docs); } -//---------------------------------------------------------------------------- void cmDocumentation::AppendSection(const char *name, const char *docs[][2]) { @@ -584,7 +566,6 @@ void cmDocumentation::AppendSection(const char *name, sec->Append(docs); } -//---------------------------------------------------------------------------- void cmDocumentation::AppendSection(const char *name, std::vector<cmDocumentationEntry> &docs) { @@ -602,7 +583,6 @@ void cmDocumentation::AppendSection(const char *name, sec->Append(docs); } -//---------------------------------------------------------------------------- void cmDocumentation::AppendSection(const char *name, cmDocumentationEntry &docs) { @@ -612,7 +592,6 @@ void cmDocumentation::AppendSection(const char *name, this->AppendSection(name,docsVec); } -//---------------------------------------------------------------------------- void cmDocumentation::PrependSection(const char *name, cmDocumentationEntry &docs) { @@ -622,7 +601,6 @@ void cmDocumentation::PrependSection(const char *name, this->PrependSection(name,docsVec); } -//---------------------------------------------------------------------------- void cmDocumentation::GlobHelp(std::vector<std::string>& files, std::string const& pattern) { @@ -635,7 +613,6 @@ void cmDocumentation::GlobHelp(std::vector<std::string>& files, } } -//---------------------------------------------------------------------------- void cmDocumentation::PrintNames(std::ostream& os, std::string const& pattern) { @@ -664,7 +641,6 @@ void cmDocumentation::PrintNames(std::ostream& os, } } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintFiles(std::ostream& os, std::string const& pattern) { @@ -681,13 +657,11 @@ bool cmDocumentation::PrintFiles(std::ostream& os, return found; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpFull(std::ostream& os) { return this->PrintFiles(os, "index"); } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpOneManual(std::ostream& os) { std::string mname = this->CurrentArgument; @@ -709,14 +683,12 @@ bool cmDocumentation::PrintHelpOneManual(std::ostream& os) return false; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListManuals(std::ostream& os) { this->PrintNames(os, "manual/*"); return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpOneCommand(std::ostream& os) { std::string cname = cmSystemTools::LowerCase(this->CurrentArgument); @@ -731,14 +703,12 @@ bool cmDocumentation::PrintHelpOneCommand(std::ostream& os) return false; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListCommands(std::ostream& os) { this->PrintNames(os, "command/*"); return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpOneModule(std::ostream& os) { std::string mname = this->CurrentArgument; @@ -752,7 +722,6 @@ bool cmDocumentation::PrintHelpOneModule(std::ostream& os) return false; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListModules(std::ostream& os) { std::vector<std::string> files; @@ -773,7 +742,6 @@ bool cmDocumentation::PrintHelpListModules(std::ostream& os) return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpOneProperty(std::ostream& os) { std::string pname = cmSystemTools::HelpFileName(this->CurrentArgument); @@ -788,14 +756,12 @@ bool cmDocumentation::PrintHelpOneProperty(std::ostream& os) return false; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListProperties(std::ostream& os) { this->PrintNames(os, "prop_*/*"); return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpOnePolicy(std::ostream& os) { std::string pname = this->CurrentArgument; @@ -811,14 +777,12 @@ bool cmDocumentation::PrintHelpOnePolicy(std::ostream& os) return false; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListPolicies(std::ostream& os) { this->PrintNames(os, "policy/*"); return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListGenerators(std::ostream& os) { std::map<std::string,cmDocumentationSection*>::iterator si; @@ -831,7 +795,6 @@ bool cmDocumentation::PrintHelpListGenerators(std::ostream& os) return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpOneVariable(std::ostream& os) { std::string vname = cmSystemTools::HelpFileName(this->CurrentArgument); @@ -846,14 +809,12 @@ bool cmDocumentation::PrintHelpOneVariable(std::ostream& os) return false; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelpListVariables(std::ostream& os) { this->PrintNames(os, "variable/*"); return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintUsage(std::ostream& os) { std::map<std::string,cmDocumentationSection*>::iterator si; @@ -865,7 +826,6 @@ bool cmDocumentation::PrintUsage(std::ostream& os) return true; } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintHelp(std::ostream& os) { std::map<std::string,cmDocumentationSection*>::iterator si; @@ -890,7 +850,6 @@ bool cmDocumentation::PrintHelp(std::ostream& os) return true; } -//---------------------------------------------------------------------------- const char* cmDocumentation::GetNameString() const { if(!this->NameString.empty()) @@ -903,14 +862,12 @@ const char* cmDocumentation::GetNameString() const } } -//---------------------------------------------------------------------------- bool cmDocumentation::IsOption(const char* arg) const { return ((arg[0] == '-') || (strcmp(arg, "/V") == 0) || (strcmp(arg, "/?") == 0)); } -//---------------------------------------------------------------------------- bool cmDocumentation::PrintOldCustomModules(std::ostream& os) { // CheckOptions abuses the Argument field to give us the file name. @@ -935,6 +892,7 @@ bool cmDocumentation::PrintOldCustomModules(std::ostream& os) } else if((ext.length()==2) && (ext[1] >='1') && (ext[1]<='9')) { + /* clang-format off */ os << ".TH " << name << " " << ext[1] << " \"" << cmSystemTools::GetCurrentDateTime("%B %d, %Y") << @@ -947,6 +905,7 @@ bool cmDocumentation::PrintOldCustomModules(std::ostream& os) ".PP\n" << detail ; + /* clang-format on */ } else { diff --git a/Source/cmDocumentation.h b/Source/cmDocumentation.h index b6c5fde..a1d73f5 100644 --- a/Source/cmDocumentation.h +++ b/Source/cmDocumentation.h @@ -13,6 +13,7 @@ #define _cmDocumentation_h #include "cmStandardIncludes.h" + #include "cmDocumentationFormatter.h" #include "cmDocumentationSection.h" #include "cmake.h" diff --git a/Source/cmDocumentationSection.cxx b/Source/cmDocumentationSection.cxx index b0dd8ef..2fbc50e 100644 --- a/Source/cmDocumentationSection.cxx +++ b/Source/cmDocumentationSection.cxx @@ -12,7 +12,6 @@ #include "cmDocumentationSection.h" -//---------------------------------------------------------------------------- void cmDocumentationSection::Append(const char *data[][2]) { int i = 0; @@ -24,7 +23,6 @@ void cmDocumentationSection::Append(const char *data[][2]) } } -//---------------------------------------------------------------------------- void cmDocumentationSection::Prepend(const char *data[][2]) { std::vector<cmDocumentationEntry> tmp; @@ -38,7 +36,6 @@ void cmDocumentationSection::Prepend(const char *data[][2]) this->Entries.insert(this->Entries.begin(),tmp.begin(),tmp.end()); } -//---------------------------------------------------------------------------- void cmDocumentationSection::Append(const char *n, const char *b) { this->Entries.push_back(cmDocumentationEntry(n,b)); diff --git a/Source/cmDocumentationSection.h b/Source/cmDocumentationSection.h index d796da8..66b94c2 100644 --- a/Source/cmDocumentationSection.h +++ b/Source/cmDocumentationSection.h @@ -12,7 +12,6 @@ #ifndef _cmDocumentationSection_h #define _cmDocumentationSection_h -#include "cmStandardIncludes.h" #include "cmDocumentationFormatter.h" // Low-level interface for custom documents: diff --git a/Source/cmELF.cxx b/Source/cmELF.cxx index b480cd5..c6ae205 100644 --- a/Source/cmELF.cxx +++ b/Source/cmELF.cxx @@ -10,15 +10,16 @@ See the License for more information. ============================================================================*/ #include "cmStandardIncludes.h" // to get CMAKE_USE_ELF_PARSER first + #include "cmELF.h" -#include <cmsys/auto_ptr.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/auto_ptr.hxx> // Include the ELF format information system header. #if defined(__OpenBSD__) -# include <stdint.h> # include <elf_abi.h> +# include <stdint.h> #elif defined(__HAIKU__) # include <elf32.h> # include <elf64.h> @@ -46,7 +47,6 @@ # include <sys/link.h> // For dynamic section information #endif -//---------------------------------------------------------------------------- // Low-level byte swapping implementation. template <size_t s> struct cmELFByteSwapSize {}; void cmELFByteSwap(char*, cmELFByteSwapSize<1> const&) @@ -79,7 +79,6 @@ void cmELFByteSwap(T& x) cmELFByteSwap(reinterpret_cast<char*>(&x), cmELFByteSwapSize<sizeof(T)>()); } -//---------------------------------------------------------------------------- class cmELFInternal { public: @@ -186,7 +185,6 @@ protected: std::map<unsigned int, StringEntry> DynamicSectionStrings; }; -//---------------------------------------------------------------------------- // Configure the implementation template for 32-bit ELF files. struct cmELFTypes32 { @@ -209,7 +207,6 @@ struct cmELFTypes64 static const char* GetName() { return "64-bit"; } }; -//---------------------------------------------------------------------------- // Parser implementation template. template <class Types> class cmELFInternalImpl: public cmELFInternal @@ -478,7 +475,6 @@ private: std::vector<ELF_Dyn> DynamicSectionEntries; }; -//---------------------------------------------------------------------------- template <class Types> cmELFInternalImpl<Types> ::cmELFInternalImpl(cmELF* external, @@ -547,7 +543,6 @@ cmELFInternalImpl<Types> } } -//---------------------------------------------------------------------------- template <class Types> bool cmELFInternalImpl<Types>::LoadDynamicSection() { @@ -592,7 +587,6 @@ bool cmELFInternalImpl<Types>::LoadDynamicSection() return true; } -//---------------------------------------------------------------------------- template <class Types> unsigned int cmELFInternalImpl<Types>::GetDynamicEntryCount() { @@ -610,7 +604,6 @@ unsigned int cmELFInternalImpl<Types>::GetDynamicEntryCount() return static_cast<unsigned int>(this->DynamicSectionEntries.size()); } -//---------------------------------------------------------------------------- template <class Types> unsigned long cmELFInternalImpl<Types>::GetDynamicEntryPosition(int j) { @@ -626,7 +619,6 @@ unsigned long cmELFInternalImpl<Types>::GetDynamicEntryPosition(int j) return static_cast<unsigned long>(sec.sh_offset + sec.sh_entsize*j); } -//---------------------------------------------------------------------------- template <class Types> cmELF::StringEntry const* cmELFInternalImpl<Types>::GetDynamicSectionString(unsigned int tag) @@ -729,7 +721,6 @@ cmELFInternalImpl<Types>::GetDynamicSectionString(unsigned int tag) //============================================================================ // External class implementation. -//---------------------------------------------------------------------------- cmELF::cmELF(const char* fname): Internal(0) { // Try to open the file. @@ -802,19 +793,16 @@ cmELF::cmELF(const char* fname): Internal(0) } } -//---------------------------------------------------------------------------- cmELF::~cmELF() { delete this->Internal; } -//---------------------------------------------------------------------------- bool cmELF::Valid() const { return this->Internal && this->Internal->GetFileType() != FileTypeInvalid; } -//---------------------------------------------------------------------------- cmELF::FileType cmELF::GetFileType() const { if(this->Valid()) @@ -827,7 +815,6 @@ cmELF::FileType cmELF::GetFileType() const } } -//---------------------------------------------------------------------------- unsigned int cmELF::GetNumberOfSections() const { if(this->Valid()) @@ -840,7 +827,6 @@ unsigned int cmELF::GetNumberOfSections() const } } -//---------------------------------------------------------------------------- unsigned int cmELF::GetDynamicEntryCount() const { if(this->Valid()) @@ -853,7 +839,6 @@ unsigned int cmELF::GetDynamicEntryCount() const } } -//---------------------------------------------------------------------------- unsigned long cmELF::GetDynamicEntryPosition(int index) const { if(this->Valid()) @@ -866,7 +851,6 @@ unsigned long cmELF::GetDynamicEntryPosition(int index) const } } -//---------------------------------------------------------------------------- bool cmELF::ReadBytes(unsigned long pos, unsigned long size, char* buf) const { if(this->Valid()) @@ -879,7 +863,6 @@ bool cmELF::ReadBytes(unsigned long pos, unsigned long size, char* buf) const } } -//---------------------------------------------------------------------------- bool cmELF::GetSOName(std::string& soname) { if(StringEntry const* se = this->GetSOName()) @@ -893,7 +876,6 @@ bool cmELF::GetSOName(std::string& soname) } } -//---------------------------------------------------------------------------- cmELF::StringEntry const* cmELF::GetSOName() { if(this->Valid() && @@ -907,7 +889,6 @@ cmELF::StringEntry const* cmELF::GetSOName() } } -//---------------------------------------------------------------------------- cmELF::StringEntry const* cmELF::GetRPath() { if(this->Valid() && @@ -922,7 +903,6 @@ cmELF::StringEntry const* cmELF::GetRPath() } } -//---------------------------------------------------------------------------- cmELF::StringEntry const* cmELF::GetRunPath() { if(this->Valid() && @@ -937,7 +917,6 @@ cmELF::StringEntry const* cmELF::GetRunPath() } } -//---------------------------------------------------------------------------- void cmELF::PrintInfo(std::ostream& os) const { if(this->Valid()) diff --git a/Source/cmEndIfCommand.cxx b/Source/cmEndIfCommand.cxx index 0ac09de..05f23c4 100644 --- a/Source/cmEndIfCommand.cxx +++ b/Source/cmEndIfCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmEndIfCommand.h" + #include <stdlib.h> // required for atof bool cmEndIfCommand::InitialPass(std::vector<std::string> const&, cmExecutionStatus &) diff --git a/Source/cmExecProgramCommand.cxx b/Source/cmExecProgramCommand.cxx index 41785c2..1109737 100644 --- a/Source/cmExecProgramCommand.cxx +++ b/Source/cmExecProgramCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmExecProgramCommand.h" + #include "cmSystemTools.h" #include <cmsys/Process.h> diff --git a/Source/cmExecuteProcessCommand.cxx b/Source/cmExecuteProcessCommand.cxx index a371390..a1e5010 100644 --- a/Source/cmExecuteProcessCommand.cxx +++ b/Source/cmExecuteProcessCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmExecuteProcessCommand.h" + #include "cmSystemTools.h" #include <cmsys/Process.h> @@ -383,7 +384,6 @@ bool cmExecuteProcessCommand return true; } -//---------------------------------------------------------------------------- void cmExecuteProcessCommandFixText(std::vector<char>& output, bool strip_trailing_whitespace) { @@ -417,7 +417,6 @@ void cmExecuteProcessCommandFixText(std::vector<char>& output, output.push_back('\0'); } -//---------------------------------------------------------------------------- void cmExecuteProcessCommandAppend(std::vector<char>& output, const char* data, int length) { diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx index dcb2187..c1fa54b 100644 --- a/Source/cmExportBuildFileGenerator.cxx +++ b/Source/cmExportBuildFileGenerator.cxx @@ -11,19 +11,17 @@ ============================================================================*/ #include "cmExportBuildFileGenerator.h" -#include "cmLocalGenerator.h" -#include "cmGlobalGenerator.h" #include "cmExportSet.h" +#include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" #include "cmTargetExport.h" -//---------------------------------------------------------------------------- cmExportBuildFileGenerator::cmExportBuildFileGenerator() { this->LG = 0; this->ExportSet = 0; } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator::Compute(cmLocalGenerator* lg) { this->LG = lg; @@ -33,7 +31,6 @@ void cmExportBuildFileGenerator::Compute(cmLocalGenerator* lg) } } -//---------------------------------------------------------------------------- bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os) { { @@ -132,7 +129,6 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os) return true; } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator ::GenerateImportTargetsConfig(std::ostream& os, @@ -179,13 +175,11 @@ cmExportBuildFileGenerator } } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator::SetExportSet(cmExportSet *exportSet) { this->ExportSet = exportSet; } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator ::SetImportLocationProperty(const std::string& config, @@ -227,7 +221,6 @@ cmExportBuildFileGenerator } } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator::HandleMissingTarget( std::string& link_libs, @@ -266,7 +259,6 @@ cmExportBuildFileGenerator::HandleMissingTarget( link_libs += dependee->GetExportName(); } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator ::GetTargets(std::vector<std::string> &targets) const { @@ -283,7 +275,6 @@ void cmExportBuildFileGenerator targets = this->Targets; } -//---------------------------------------------------------------------------- std::vector<std::string> cmExportBuildFileGenerator ::FindNamespaces(cmGlobalGenerator* gg, const std::string& name) @@ -308,7 +299,6 @@ cmExportBuildFileGenerator return namespaces; } -//---------------------------------------------------------------------------- void cmExportBuildFileGenerator ::ComplainAboutMissingTarget(cmGeneratorTarget* depender, diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 4eec66a..ee8865e 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -10,12 +10,13 @@ See the License for more information. ============================================================================*/ #include "cmExportCommand.h" -#include "cmGlobalGenerator.h" + #include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" #include "cmake.h" -#include <cmsys/RegularExpression.hxx> #include <cmsys/Encoding.hxx> +#include <cmsys/RegularExpression.hxx> #include "cmExportBuildFileGenerator.h" @@ -249,7 +250,6 @@ bool cmExportCommand return true; } -//---------------------------------------------------------------------------- bool cmExportCommand::HandlePackage(std::vector<std::string> const& args) { // Parse PACKAGE mode arguments. @@ -313,7 +313,6 @@ bool cmExportCommand::HandlePackage(std::vector<std::string> const& args) #if defined(_WIN32) && !defined(__CYGWIN__) # include <windows.h> # undef GetCurrentDirectory -//---------------------------------------------------------------------------- void cmExportCommand::ReportRegistryError(std::string const& msg, std::string const& key, long err) @@ -333,7 +332,6 @@ void cmExportCommand::ReportRegistryError(std::string const& msg, this->Makefile->IssueMessage(cmake::WARNING, e.str()); } -//---------------------------------------------------------------------------- void cmExportCommand::StorePackageRegistryWin(std::string const& package, const char* content, const char* hash) @@ -366,7 +364,6 @@ void cmExportCommand::StorePackageRegistryWin(std::string const& package, } } #else -//---------------------------------------------------------------------------- void cmExportCommand::StorePackageRegistryDir(std::string const& package, const char* content, const char* hash) @@ -405,9 +402,11 @@ void cmExportCommand::StorePackageRegistryDir(std::string const& package, else { std::ostringstream e; + /* clang-format off */ e << "Cannot create package registry file:\n" << " " << fname << "\n" << cmSystemTools::GetLastSystemError() << "\n"; + /* clang-format on */ this->Makefile->IssueMessage(cmake::WARNING, e.str()); } } diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index c005995..5aa466d 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -11,24 +11,23 @@ ============================================================================*/ #include "cmExportFileGenerator.h" +#include "cmAlgorithms.h" +#include "cmComputeLinkInformation.h" #include "cmExportSet.h" #include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" #include "cmInstallExportGenerator.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" +#include "cmOutputConverter.h" #include "cmSystemTools.h" #include "cmTargetExport.h" #include "cmVersion.h" -#include "cmComputeLinkInformation.h" -#include "cmAlgorithms.h" -#include "cmOutputConverter.h" -#include <cmsys/auto_ptr.hxx> -#include <cmsys/FStream.hxx> #include <assert.h> +#include <cmsys/FStream.hxx> +#include <cmsys/auto_ptr.hxx> -//---------------------------------------------------------------------------- static std::string cmExportFileGeneratorEscape(std::string const& str) { // Escape a property value for writing into a .cmake file. @@ -43,20 +42,17 @@ static std::string cmExportFileGeneratorEscape(std::string const& str) return result; } -//---------------------------------------------------------------------------- cmExportFileGenerator::cmExportFileGenerator() { this->AppendMode = false; this->ExportOld = false; } -//---------------------------------------------------------------------------- void cmExportFileGenerator::AddConfiguration(const std::string& config) { this->Configurations.push_back(config); } -//---------------------------------------------------------------------------- void cmExportFileGenerator::SetExportFile(const char* mainFile) { this->MainImportFile = mainFile; @@ -68,13 +64,11 @@ void cmExportFileGenerator::SetExportFile(const char* mainFile) cmSystemTools::GetFilenameLastExtension(this->MainImportFile); } -//---------------------------------------------------------------------------- const char* cmExportFileGenerator::GetMainExportFileName() const { return this->MainImportFile.c_str(); } -//---------------------------------------------------------------------------- bool cmExportFileGenerator::GenerateImportFile() { // Open the output file to generate it. @@ -106,17 +100,21 @@ bool cmExportFileGenerator::GenerateImportFile() std::ostream& os = *foutPtr; // Protect that file against use with older CMake versions. + /* clang-format off */ os << "# Generated by CMake " << cmVersion::GetCMakeVersion() << "\n\n"; os << "if(\"${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}\" LESS 2.5)\n" << " message(FATAL_ERROR \"CMake >= 2.6.0 required\")\n" << "endif()\n"; + /* clang-format on */ // Isolate the file policy level. // We use 2.6 here instead of the current version because newer // versions of CMake should be able to export files imported by 2.6 // until the import format changes. + /* clang-format off */ os << "cmake_policy(PUSH)\n" << "cmake_policy(VERSION 2.6)\n"; + /* clang-format on */ // Start with the import file header. this->GenerateImportHeaderCode(os); @@ -131,7 +129,6 @@ bool cmExportFileGenerator::GenerateImportFile() return result; } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateImportConfig(std::ostream& os, const std::string& config, std::vector<std::string> &missingTargets) @@ -151,7 +148,6 @@ void cmExportFileGenerator::GenerateImportConfig(std::ostream& os, this->GenerateImportTargetsConfig(os, config, suffix, missingTargets); } -//---------------------------------------------------------------------------- void cmExportFileGenerator::PopulateInterfaceProperty( const std::string& propName, cmGeneratorTarget *target, @@ -164,7 +160,6 @@ void cmExportFileGenerator::PopulateInterfaceProperty( } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::PopulateInterfaceProperty( const std::string& propName, const std::string& outputName, @@ -197,13 +192,14 @@ void cmExportFileGenerator::PopulateInterfaceProperty( void cmExportFileGenerator::GenerateRequiredCMakeVersion(std::ostream& os, const char *versionString) { + /* clang-format off */ os << "if(CMAKE_VERSION VERSION_LESS " << versionString << ")\n" " message(FATAL_ERROR \"This file relies on consumers using " "CMake " << versionString << " or greater.\")\n" "endif()\n\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- bool cmExportFileGenerator::PopulateInterfaceLinkLibrariesProperty( cmGeneratorTarget *target, cmGeneratorExpression::PreprocessContext preprocessRule, @@ -231,14 +227,12 @@ bool cmExportFileGenerator::PopulateInterfaceLinkLibrariesProperty( return false; } -//---------------------------------------------------------------------------- static bool isSubDirectory(const char* a, const char* b) { return (cmSystemTools::ComparePath(a, b) || cmSystemTools::IsSubDirectory(a, b)); } -//---------------------------------------------------------------------------- static bool checkInterfaceDirs(const std::string &prepro, cmGeneratorTarget *target, const std::string& prop) { @@ -296,9 +290,11 @@ static bool checkInterfaceDirs(const std::string &prepro, } if (!cmSystemTools::FileIsFullPath(li->c_str())) { + /* clang-format off */ e << "Target \"" << target->GetName() << "\" " << prop << " property contains relative path:\n" " \"" << *li << "\""; + /* clang-format on */ target->GetLocalGenerator()->IssueMessage(messageType, e.str()); } bool inBinary = isSubDirectory(li->c_str(), topBinaryDir); @@ -350,9 +346,11 @@ static bool checkInterfaceDirs(const std::string &prepro, } if (inBinary) { + /* clang-format off */ e << "Target \"" << target->GetName() << "\" " << prop << " property contains path:\n" " \"" << *li << "\"\nwhich is prefixed in the build directory."; + /* clang-format on */ target->GetLocalGenerator()->IssueMessage(messageType, e.str()); } if (!inSourceBuild) @@ -369,7 +367,6 @@ static bool checkInterfaceDirs(const std::string &prepro, return !hadFatalError; } -//---------------------------------------------------------------------------- static void prefixItems(std::string &exportDirs) { std::vector<std::string> entries; @@ -390,7 +387,6 @@ static void prefixItems(std::string &exportDirs) } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::PopulateSourcesInterface( cmTargetExport *tei, cmGeneratorExpression::PreprocessContext preprocessRule, @@ -430,7 +426,6 @@ void cmExportFileGenerator::PopulateSourcesInterface( } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::PopulateIncludeDirectoriesInterface( cmTargetExport *tei, cmGeneratorExpression::PreprocessContext preprocessRule, @@ -498,7 +493,6 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface( } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::PopulateInterfaceProperty( const std::string& propName, cmGeneratorTarget* target, @@ -511,7 +505,6 @@ void cmExportFileGenerator::PopulateInterfaceProperty( } -//---------------------------------------------------------------------------- void getPropertyContents(cmGeneratorTarget const* tgt, const std::string& prop, std::set<std::string> &ifaceProperties) @@ -526,7 +519,6 @@ void getPropertyContents(cmGeneratorTarget const* tgt, ifaceProperties.insert(content.begin(), content.end()); } -//---------------------------------------------------------------------------- void getCompatibleInterfaceProperties(cmGeneratorTarget *target, std::set<std::string> &ifaceProperties, const std::string& config) @@ -568,7 +560,6 @@ void getCompatibleInterfaceProperties(cmGeneratorTarget *target, } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::PopulateCompatibleInterfaceProperties( cmGeneratorTarget *gtarget, ImportPropertyMap &properties) @@ -613,7 +604,6 @@ void cmExportFileGenerator::PopulateCompatibleInterfaceProperties( } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateInterfaceProperties( const cmGeneratorTarget* target, std::ostream& os, @@ -634,7 +624,6 @@ void cmExportFileGenerator::GenerateInterfaceProperties( } } -//---------------------------------------------------------------------------- bool cmExportFileGenerator::AddTargetNamespace(std::string &input, cmGeneratorTarget* target, @@ -669,7 +658,6 @@ cmExportFileGenerator::AddTargetNamespace(std::string &input, return true; } -//---------------------------------------------------------------------------- void cmExportFileGenerator::ResolveTargetsInGeneratorExpressions( std::string &input, @@ -706,7 +694,6 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpressions( } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::ResolveTargetsInGeneratorExpression( std::string &input, @@ -801,14 +788,12 @@ cmExportFileGenerator::ResolveTargetsInGeneratorExpression( } } -//---------------------------------------------------------------------------- void cmExportFileGenerator::ReplaceInstallPrefix(std::string &) { // Do nothing } -//---------------------------------------------------------------------------- void cmExportFileGenerator ::SetImportLinkInterface(const std::string& config, std::string const& suffix, @@ -883,7 +868,6 @@ cmExportFileGenerator } } -//---------------------------------------------------------------------------- void cmExportFileGenerator ::SetImportDetailProperties(const std::string& config, @@ -946,7 +930,6 @@ cmExportFileGenerator } } -//---------------------------------------------------------------------------- template <typename T> void cmExportFileGenerator @@ -985,7 +968,6 @@ cmExportFileGenerator properties[prop] = link_entries; } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateImportHeaderCode(std::ostream& os, const std::string& config) { @@ -1004,27 +986,27 @@ void cmExportFileGenerator::GenerateImportHeaderCode(std::ostream& os, this->GenerateImportVersionCode(os); } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateImportFooterCode(std::ostream& os) { os << "# Commands beyond this point should not need to know the version.\n" << "set(CMAKE_IMPORT_FILE_VERSION)\n"; } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateImportVersionCode(std::ostream& os) { // Store an import file format version. This will let us change the // format later while still allowing old import files to work. + /* clang-format off */ os << "# Commands may need to know the format version.\n" << "set(CMAKE_IMPORT_FILE_VERSION 1)\n" << "\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateExpectedTargetsCode(std::ostream& os, const std::string &expectedTargets) { + /* clang-format off */ os << "# Protect against multiple inclusion, which would fail when already " "imported targets are added once more.\n" "set(_targetsDefined)\n" @@ -1040,6 +1022,9 @@ void cmExportFileGenerator::GenerateExpectedTargetsCode(std::ostream& os, " endif()\n" "endforeach()\n" "if(\"${_targetsDefined}\" STREQUAL \"${_expectedTargets}\")\n" + " unset(_targetsDefined)\n" + " unset(_targetsNotDefined)\n" + " unset(_expectedTargets)\n" " set(CMAKE_IMPORT_FILE_VERSION)\n" " cmake_policy(POP)\n" " return()\n" @@ -1053,8 +1038,8 @@ void cmExportFileGenerator::GenerateExpectedTargetsCode(std::ostream& os, "unset(_targetsNotDefined)\n" "unset(_expectedTargets)\n" "\n\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- void cmExportFileGenerator ::GenerateImportTargetCode(std::ostream& os, const cmGeneratorTarget* target) @@ -1119,7 +1104,6 @@ cmExportFileGenerator os << "\n"; } -//---------------------------------------------------------------------------- void cmExportFileGenerator ::GenerateImportPropertyCode(std::ostream& os, const std::string& config, @@ -1157,21 +1141,24 @@ cmExportFileGenerator } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateMissingTargetsCheckCode(std::ostream& os, const std::vector<std::string>& missingTargets) { if (missingTargets.empty()) { + /* clang-format off */ os << "# This file does not depend on other imported targets which have\n" "# been exported from the same project but in a separate " "export set.\n\n"; + /* clang-format on */ return; } + /* clang-format off */ os << "# Make sure the targets which have been exported in some other \n" "# export set exist.\n" "unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)\n" "foreach(_target "; + /* clang-format on */ std::set<std::string> emitted; for(unsigned int i=0; i<missingTargets.size(); ++i) { @@ -1180,6 +1167,7 @@ void cmExportFileGenerator::GenerateMissingTargetsCheckCode(std::ostream& os, os << "\"" << missingTargets[i] << "\" "; } } + /* clang-format off */ os << ")\n" " if(NOT TARGET \"${_target}\" )\n" " set(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets \"" @@ -1203,10 +1191,10 @@ void cmExportFileGenerator::GenerateMissingTargetsCheckCode(std::ostream& os, "endif()\n" "unset(${CMAKE_FIND_PACKAGE_NAME}_NOT_FOUND_MESSAGE_targets)\n" "\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- void cmExportFileGenerator::GenerateImportedFileCheckLoop(std::ostream& os) { @@ -1217,6 +1205,7 @@ cmExportFileGenerator::GenerateImportedFileCheckLoop(std::ostream& os) // the non-development package, something similar happened to me without // on SUSE with a mysql pkg-config file, which claimed everything is fine, // but the development package was not installed.). + /* clang-format off */ os << "# Loop over all imported files and verify that they actually exist\n" "foreach(target ${_IMPORT_CHECK_TARGETS} )\n" " foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )\n" @@ -1237,10 +1226,10 @@ cmExportFileGenerator::GenerateImportedFileCheckLoop(std::ostream& os) "endforeach()\n" "unset(_IMPORT_CHECK_TARGETS)\n" "\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- void cmExportFileGenerator ::GenerateImportedFileChecksCode(std::ostream& os, cmGeneratorTarget* target, diff --git a/Source/cmExportFileGenerator.h b/Source/cmExportFileGenerator.h index 18f0b00..9fc02a4 100644 --- a/Source/cmExportFileGenerator.h +++ b/Source/cmExportFileGenerator.h @@ -15,8 +15,8 @@ #include "cmCommand.h" #include "cmGeneratorExpression.h" -#include "cmVersionMacros.h" #include "cmVersion.h" +#include "cmVersionMacros.h" #define STRINGIFY_HELPER(X) #X #define STRINGIFY(X) STRINGIFY_HELPER(X) diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx index 71418e8..2d454b9 100644 --- a/Source/cmExportInstallFileGenerator.cxx +++ b/Source/cmExportInstallFileGenerator.cxx @@ -11,24 +11,22 @@ ============================================================================*/ #include "cmExportInstallFileGenerator.h" +#include "cmAlgorithms.h" #include "cmExportSet.h" #include "cmExportSetMap.h" #include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" -#include "cmLocalGenerator.h" #include "cmInstallExportGenerator.h" #include "cmInstallTargetGenerator.h" +#include "cmLocalGenerator.h" #include "cmTargetExport.h" -#include "cmAlgorithms.h" -//---------------------------------------------------------------------------- cmExportInstallFileGenerator ::cmExportInstallFileGenerator(cmInstallExportGenerator* iegen): IEGen(iegen) { } -//---------------------------------------------------------------------------- std::string cmExportInstallFileGenerator::GetConfigImportFileGlob() { std::string glob = this->FileBase; @@ -37,7 +35,6 @@ std::string cmExportInstallFileGenerator::GetConfigImportFileGlob() return glob; } -//---------------------------------------------------------------------------- bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) { std::vector<cmTargetExport*> allTargets; @@ -80,10 +77,12 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) { // The export file is being installed to an absolute path so the // package is not relocatable. Use the configured install prefix. + /* clang-format off */ os << "# The installation prefix configured by this project.\n" "set(_IMPORT_PREFIX \"" << installPrefix << "\")\n" "\n"; + /* clang-format on */ } else { @@ -100,6 +99,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) cmHasLiteralPrefix(absDestS.c_str(), "/usr/lib64/")) { // Handle "/usr move" symlinks created by some Linux distros. + /* clang-format off */ os << "# Use original install prefix when loaded through a\n" "# cross-prefix symbolic link such as /lib -> /usr/lib.\n" @@ -110,6 +110,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) "endif()\n" "unset(_realOrig)\n" "unset(_realCurr)\n"; + /* clang-format on */ } std::string dest = expDest; while(!dest.empty()) @@ -214,6 +215,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) } // Now load per-configuration properties for them. + /* clang-format off */ os << "# Load information for each installed configuration.\n" << "get_filename_component(_DIR \"${CMAKE_CURRENT_LIST_FILE}\" PATH)\n" << "file(GLOB CONFIG_FILES \"${_DIR}/" @@ -222,11 +224,14 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) << " include(${f})\n" << "endforeach()\n" << "\n"; + /* clang-format on */ // Cleanup the import prefix variable. + /* clang-format off */ os << "# Cleanup temporary variables.\n" << "set(_IMPORT_PREFIX)\n" << "\n"; + /* clang-format on */ this->GenerateImportedFileCheckLoop(os); bool result = true; @@ -250,7 +255,6 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os) return result; } -//---------------------------------------------------------------------------- void cmExportInstallFileGenerator::ReplaceInstallPrefix(std::string &input) { @@ -265,7 +269,6 @@ cmExportInstallFileGenerator::ReplaceInstallPrefix(std::string &input) } } -//---------------------------------------------------------------------------- bool cmExportInstallFileGenerator::GenerateImportFileConfig( const std::string& config, @@ -320,7 +323,6 @@ cmExportInstallFileGenerator::GenerateImportFileConfig( return true; } -//---------------------------------------------------------------------------- void cmExportInstallFileGenerator ::GenerateImportTargetsConfig(std::ostream& os, @@ -382,7 +384,6 @@ cmExportInstallFileGenerator } } -//---------------------------------------------------------------------------- void cmExportInstallFileGenerator ::SetImportLocationProperty(const std::string& config, @@ -451,7 +452,6 @@ cmExportInstallFileGenerator } } -//---------------------------------------------------------------------------- void cmExportInstallFileGenerator::HandleMissingTarget(std::string& link_libs, std::vector<std::string>& missingTargets, @@ -477,7 +477,6 @@ cmExportInstallFileGenerator::HandleMissingTarget(std::string& link_libs, } } -//---------------------------------------------------------------------------- std::vector<std::string> cmExportInstallFileGenerator ::FindNamespaces(cmGlobalGenerator* gg, const std::string& name) @@ -517,7 +516,6 @@ cmExportInstallFileGenerator return namespaces; } -//---------------------------------------------------------------------------- void cmExportInstallFileGenerator ::ComplainAboutMissingTarget(cmGeneratorTarget* depender, diff --git a/Source/cmExportLibraryDependenciesCommand.cxx b/Source/cmExportLibraryDependenciesCommand.cxx index 21d961f..a715070 100644 --- a/Source/cmExportLibraryDependenciesCommand.cxx +++ b/Source/cmExportLibraryDependenciesCommand.cxx @@ -10,10 +10,11 @@ See the License for more information. ============================================================================*/ #include "cmExportLibraryDependenciesCommand.h" -#include "cmGlobalGenerator.h" + #include "cmGeneratedFileStream.h" -#include "cmake.h" +#include "cmGlobalGenerator.h" #include "cmVersion.h" +#include "cmake.h" #include <cmsys/auto_ptr.hxx> diff --git a/Source/cmExportSet.cxx b/Source/cmExportSet.cxx index 0059b64..83c4fdc 100644 --- a/Source/cmExportSet.cxx +++ b/Source/cmExportSet.cxx @@ -11,9 +11,10 @@ ============================================================================*/ #include "cmExportSet.h" -#include "cmTargetExport.h" + #include "cmAlgorithms.h" #include "cmLocalGenerator.h" +#include "cmTargetExport.h" cmExportSet::~cmExportSet() { diff --git a/Source/cmExportSet.h b/Source/cmExportSet.h index d780a22..a3359ac 100644 --- a/Source/cmExportSet.h +++ b/Source/cmExportSet.h @@ -13,6 +13,7 @@ #define cmExportSet_h #include "cmSystemTools.h" + class cmTargetExport; class cmInstallExportGenerator; class cmLocalGenerator; diff --git a/Source/cmExportSetMap.cxx b/Source/cmExportSetMap.cxx index cf431c6..d267cd3 100644 --- a/Source/cmExportSetMap.cxx +++ b/Source/cmExportSetMap.cxx @@ -11,8 +11,9 @@ ============================================================================*/ #include "cmExportSetMap.h" -#include "cmExportSet.h" + #include "cmAlgorithms.h" +#include "cmExportSet.h" cmExportSet* cmExportSetMap::operator[](const std::string &name) { diff --git a/Source/cmExportSetMap.h b/Source/cmExportSetMap.h index 965046c..87f2060 100644 --- a/Source/cmExportSetMap.h +++ b/Source/cmExportSetMap.h @@ -13,6 +13,7 @@ #define cmExportSetMap_h #include "cmSystemTools.h" + class cmExportSet; /// A name -> cmExportSet map with overloaded operator[]. diff --git a/Source/cmExportTryCompileFileGenerator.cxx b/Source/cmExportTryCompileFileGenerator.cxx index 83127e7..891af84 100644 --- a/Source/cmExportTryCompileFileGenerator.cxx +++ b/Source/cmExportTryCompileFileGenerator.cxx @@ -13,11 +13,10 @@ #include "cmExportTryCompileFileGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGeneratorExpressionDAGChecker.h" #include "cmGlobalGenerator.h" #include "cmLocalGenerator.h" -#include "cmGeneratorExpressionDAGChecker.h" -//---------------------------------------------------------------------------- cmExportTryCompileFileGenerator::cmExportTryCompileFileGenerator( cmGlobalGenerator* gg, const std::vector<std::string>& targets, @@ -98,7 +97,6 @@ std::string cmExportTryCompileFileGenerator::FindTargets( return result; } -//---------------------------------------------------------------------------- void cmExportTryCompileFileGenerator::PopulateProperties( const cmGeneratorTarget* target, diff --git a/Source/cmExprParserHelper.cxx b/Source/cmExprParserHelper.cxx index 6016c4c..c5ecde4 100644 --- a/Source/cmExprParserHelper.cxx +++ b/Source/cmExprParserHelper.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmExprParserHelper.h" -#include "cmSystemTools.h" #include "cmMakefile.h" +#include "cmSystemTools.h" #include "cmExprLexer.h" diff --git a/Source/cmExternalMakefileProjectGenerator.cxx b/Source/cmExternalMakefileProjectGenerator.cxx index 9264671..cdf0292 100644 --- a/Source/cmExternalMakefileProjectGenerator.cxx +++ b/Source/cmExternalMakefileProjectGenerator.cxx @@ -9,10 +9,11 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include <assert.h> #include "cmExternalMakefileProjectGenerator.h" +#include <assert.h> + void cmExternalMakefileProjectGenerator ::EnableLanguage(std::vector<std::string> const&, cmMakefile *, bool) diff --git a/Source/cmExtraCodeBlocksGenerator.cxx b/Source/cmExtraCodeBlocksGenerator.cxx index 52512a8..53a9fdc 100644 --- a/Source/cmExtraCodeBlocksGenerator.cxx +++ b/Source/cmExtraCodeBlocksGenerator.cxx @@ -11,14 +11,15 @@ See the License for more information. ============================================================================*/ #include "cmExtraCodeBlocksGenerator.h" + +#include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" -#include "cmake.h" #include "cmSourceFile.h" -#include "cmGeneratedFileStream.h" #include "cmSystemTools.h" #include "cmXMLWriter.h" +#include "cmake.h" #include <cmsys/SystemTools.hxx> @@ -35,7 +36,6 @@ Discussion: http://forums.codeblocks.org/index.php/topic,6789.0.html */ -//---------------------------------------------------------------------------- void cmExtraCodeBlocksGenerator ::GetDocumentation(cmDocumentationEntry& entry, const std::string&) const { @@ -568,10 +568,12 @@ std::string cmExtraCodeBlocksGenerator::CreateDummyTargetFile( cmGeneratedFileStream fout(filename.c_str()); if(fout) { + /* clang-format off */ fout << "# This is a dummy file for the OBJECT library " << target->GetName() << " for the CMake CodeBlocks project generator.\n" << "# Don't edit, this file will be overwritten.\n"; + /* clang-format on */ } return filename; } diff --git a/Source/cmExtraCodeLiteGenerator.cxx b/Source/cmExtraCodeLiteGenerator.cxx index 9fc7b1e..6ef2290 100644 --- a/Source/cmExtraCodeLiteGenerator.cxx +++ b/Source/cmExtraCodeLiteGenerator.cxx @@ -12,21 +12,21 @@ See the License for more information. ============================================================================*/ #include "cmExtraCodeLiteGenerator.h" + +#include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" -#include "cmake.h" #include "cmSourceFile.h" -#include "cmGeneratedFileStream.h" #include "cmSystemTools.h" +#include "cmake.h" -#include <cmsys/SystemTools.hxx> -#include <cmsys/SystemInformation.hxx> -#include <cmsys/Directory.hxx> #include "cmStandardIncludes.h" #include "cmXMLWriter.h" +#include <cmsys/Directory.hxx> +#include <cmsys/SystemInformation.hxx> +#include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------------- void cmExtraCodeLiteGenerator::GetDocumentation(cmDocumentationEntry& entry, const std::string&) const { diff --git a/Source/cmExtraEclipseCDT4Generator.cxx b/Source/cmExtraEclipseCDT4Generator.cxx index 9e67301..2b20e95 100644 --- a/Source/cmExtraEclipseCDT4Generator.cxx +++ b/Source/cmExtraEclipseCDT4Generator.cxx @@ -12,18 +12,19 @@ See the License for more information. ============================================================================*/ #include "cmExtraEclipseCDT4Generator.h" + +#include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" -#include "cmGeneratedFileStream.h" +#include "cmSourceFile.h" #include "cmState.h" #include "cmTarget.h" -#include "cmSourceFile.h" #include "cmXMLWriter.h" #include "cmSystemTools.h" -#include <stdlib.h> #include <assert.h> +#include <stdlib.h> static void AppendAttribute(cmXMLWriter& xml, const char* keyval) { @@ -42,7 +43,6 @@ void AppendDictionary(cmXMLWriter& xml, const char* key, T const& value) xml.EndElement(); } -//---------------------------------------------------------------------------- cmExtraEclipseCDT4Generator ::cmExtraEclipseCDT4Generator() : cmExternalMakefileProjectGenerator() { @@ -64,7 +64,6 @@ cmExtraEclipseCDT4Generator this->CXXEnabled = false; } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator ::GetDocumentation(cmDocumentationEntry& entry, const std::string&) const { @@ -72,7 +71,6 @@ void cmExtraEclipseCDT4Generator entry.Brief = "Generates Eclipse CDT 4.0 project files."; } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator ::EnableLanguage(std::vector<std::string> const& languages, cmMakefile *, bool) @@ -98,7 +96,6 @@ void cmExtraEclipseCDT4Generator } } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::Generate() { cmLocalGenerator* lg = this->GlobalGenerator->GetLocalGenerators()[0]; @@ -212,7 +209,6 @@ void cmExtraEclipseCDT4Generator::CreateSourceProjectFile() } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::AddEnvVar(std::ostream& out, const char* envVar, cmLocalGenerator* lg) @@ -276,7 +272,6 @@ void cmExtraEclipseCDT4Generator::AddEnvVar(std::ostream& out, } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::CreateProjectFile() { cmLocalGenerator* lg = this->GlobalGenerator->GetLocalGenerators()[0]; @@ -511,7 +506,6 @@ void cmExtraEclipseCDT4Generator::WriteGroups( } } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::CreateLinksForTargets(cmXMLWriter& xml) { std::string linkName = "[Targets]"; @@ -578,7 +572,6 @@ void cmExtraEclipseCDT4Generator::CreateLinksForTargets(cmXMLWriter& xml) } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects( cmXMLWriter& xml, const std::string& baseDir) { @@ -618,7 +611,6 @@ void cmExtraEclipseCDT4Generator::CreateLinksToSubprojects( } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::AppendIncludeDirectories( cmXMLWriter& xml, const std::vector<std::string>& includeDirs, @@ -656,7 +648,6 @@ void cmExtraEclipseCDT4Generator::AppendIncludeDirectories( } } -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator::CreateCProjectFile() const { std::set<std::string> emmited; @@ -1145,7 +1136,6 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const xml.EndElement(); // cproject } -//---------------------------------------------------------------------------- std::string cmExtraEclipseCDT4Generator::GetEclipsePath(const std::string& path) { @@ -1193,9 +1183,7 @@ cmExtraEclipseCDT4Generator::GenerateProjectName(const std::string& name, return name + (type.empty() ? "" : "-") + type + "@" + path; } -//---------------------------------------------------------------------------- // Helper functions -//---------------------------------------------------------------------------- void cmExtraEclipseCDT4Generator ::AppendStorageScanners(cmXMLWriter& xml, const cmMakefile& makefile) diff --git a/Source/cmExtraKateGenerator.cxx b/Source/cmExtraKateGenerator.cxx index ff5d3ab..f221604 100644 --- a/Source/cmExtraKateGenerator.cxx +++ b/Source/cmExtraKateGenerator.cxx @@ -11,17 +11,17 @@ See the License for more information. ============================================================================*/ #include "cmExtraKateGenerator.h" + +#include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" -#include "cmake.h" #include "cmSourceFile.h" -#include "cmGeneratedFileStream.h" #include "cmSystemTools.h" +#include "cmake.h" #include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------------- void cmExtraKateGenerator ::GetDocumentation(cmDocumentationEntry& entry, const std::string&) const { @@ -68,11 +68,13 @@ void cmExtraKateGenerator::CreateKateProjectFile( return; } + /* clang-format off */ fout << "{\n" "\t\"name\": \"" << this->ProjectName << "\",\n" "\t\"directory\": \"" << lg->GetSourceDirectory() << "\",\n" "\t\"files\": [ { " << this->GenerateFilesString(lg) << "} ],\n"; + /* clang-format on */ this->WriteTargets(lg, fout); fout << "}\n"; } @@ -88,11 +90,13 @@ cmExtraKateGenerator::WriteTargets(const cmLocalGenerator* lg, "CMAKE_KATE_MAKE_ARGUMENTS"); const char* homeOutputDir = lg->GetBinaryDirectory(); + /* clang-format off */ fout << "\t\"build\": {\n" "\t\t\"directory\": \"" << lg->GetBinaryDirectory() << "\",\n" "\t\t\"default_target\": \"all\",\n" "\t\t\"clean_target\": \"clean\",\n"; + /* clang-format on */ // build, clean and quick are for the build plugin kate <= 4.12: fout << "\t\t\"build\": \"" << make << " -C \\\"" << homeOutputDir diff --git a/Source/cmExtraSublimeTextGenerator.cxx b/Source/cmExtraSublimeTextGenerator.cxx index 92d38b9..0f64eda 100644 --- a/Source/cmExtraSublimeTextGenerator.cxx +++ b/Source/cmExtraSublimeTextGenerator.cxx @@ -11,7 +11,7 @@ See the License for more information. ============================================================================*/ #include "cmExtraSublimeTextGenerator.h" -#include "cmake.h" + #include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" #include "cmGlobalUnixMakefileGenerator3.h" @@ -20,6 +20,7 @@ #include "cmMakefile.h" #include "cmSourceFile.h" #include "cmSystemTools.h" +#include "cmake.h" #include <cmsys/SystemTools.hxx> @@ -37,7 +38,6 @@ http://www.sublimetext.com/docs/2/projects.html http://sublimetext.info/docs/en/reference/build_systems.html */ -//---------------------------------------------------------------------------- void cmExtraSublimeTextGenerator ::GetDocumentation(cmDocumentationEntry& entry, const std::string&) const { diff --git a/Source/cmFLTKWrapUICommand.cxx b/Source/cmFLTKWrapUICommand.cxx index d17d664..c64e813 100644 --- a/Source/cmFLTKWrapUICommand.cxx +++ b/Source/cmFLTKWrapUICommand.cxx @@ -117,7 +117,7 @@ void cmFLTKWrapUICommand::FinalPass() // people should add the srcs to the target themselves, but the old command // didn't support that, so check and see if they added the files in and if // they didn;t then print a warning and add then anyhow - cmTarget* target = this->Makefile->FindTarget(this->Target); + cmTarget* target = this->Makefile->FindLocalNonAliasTarget(this->Target); if(!target) { std::string msg = diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index b0a61b2..6b6b913 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -10,14 +10,15 @@ See the License for more information. ============================================================================*/ #include "cmFileCommand.h" + +#include "cmAlgorithms.h" +#include "cmCryptoHash.h" #include "cmCryptoHash.h" -#include "cmake.h" -#include "cmHexFileConverter.h" -#include "cmInstallType.h" #include "cmFileTimeComparison.h" #include "cmGlobalGenerator.h" -#include "cmCryptoHash.h" -#include "cmAlgorithms.h" +#include "cmHexFileConverter.h" +#include "cmInstallType.h" +#include "cmake.h" #include "cmTimestamp.h" @@ -28,15 +29,17 @@ #undef GetCurrentDirectory #include <assert.h> + #include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> -#include <cmsys/auto_ptr.hxx> #include <cmsys/Directory.hxx> +#include <cmsys/Encoding.hxx> +#include <cmsys/FStream.hxx> #include <cmsys/Glob.hxx> #include <cmsys/RegularExpression.hxx> -#include <cmsys/FStream.hxx> -#include <cmsys/Encoding.hxx> +#include <cmsys/auto_ptr.hxx> // Table of permissions flags. #if defined(_WIN32) && !defined(__CYGWIN__) @@ -215,7 +218,6 @@ bool cmFileCommand return false; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleWriteCommand(std::vector<std::string> const& args, bool append) { @@ -279,7 +281,6 @@ bool cmFileCommand::HandleWriteCommand(std::vector<std::string> const& args, return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleReadCommand(std::vector<std::string> const& args) { if ( args.size() < 3 ) @@ -396,7 +397,6 @@ bool cmFileCommand::HandleReadCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleHashCommand(std::vector<std::string> const& args) { #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -431,7 +431,6 @@ bool cmFileCommand::HandleHashCommand(std::vector<std::string> const& args) #endif } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args) { if(args.size() < 3) @@ -882,7 +881,6 @@ bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args, bool recurse) { @@ -1067,7 +1065,6 @@ bool cmFileCommand::HandleGlobCommand(std::vector<std::string> const& args, return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleMakeDirectoryCommand( std::vector<std::string> const& args) { @@ -1106,7 +1103,6 @@ bool cmFileCommand::HandleMakeDirectoryCommand( return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleDifferentCommand(std::vector<std::string> const& args) { @@ -1167,7 +1163,6 @@ cmFileCommand::HandleDifferentCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- // File installation helper class. struct cmFileCopier { @@ -1377,7 +1372,6 @@ protected: } }; -//---------------------------------------------------------------------------- bool cmFileCopier::Parse(std::vector<std::string> const& args) { this->Doing = DoingFiles; @@ -1424,7 +1418,6 @@ bool cmFileCopier::Parse(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmFileCopier::CheckKeyword(std::string const& arg) { if(arg == "DESTINATION") @@ -1537,7 +1530,6 @@ bool cmFileCopier::CheckKeyword(std::string const& arg) return true; } -//---------------------------------------------------------------------------- bool cmFileCopier::CheckValue(std::string const& arg) { switch(this->Doing) @@ -1630,7 +1622,6 @@ bool cmFileCopier::CheckValue(std::string const& arg) return true; } -//---------------------------------------------------------------------------- bool cmFileCopier::Run(std::vector<std::string> const& args) { if(!this->Parse(args)) @@ -1674,7 +1665,6 @@ bool cmFileCopier::Run(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmFileCopier::Install(const char* fromFile, const char* toFile) { if(!*fromFile) @@ -1713,7 +1703,6 @@ bool cmFileCopier::Install(const char* fromFile, const char* toFile) return this->ReportMissing(fromFile); } -//---------------------------------------------------------------------------- bool cmFileCopier::InstallSymlink(const char* fromFile, const char* toFile) { // Read the original symlink. @@ -1764,7 +1753,6 @@ bool cmFileCopier::InstallSymlink(const char* fromFile, const char* toFile) return true; } -//---------------------------------------------------------------------------- bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile, MatchProperties const& match_properties) { @@ -1824,7 +1812,6 @@ bool cmFileCopier::InstallFile(const char* fromFile, const char* toFile, return this->SetPermissions(toFile, permissions); } -//---------------------------------------------------------------------------- bool cmFileCopier::InstallDirectory(const char* source, const char* destination, MatchProperties const& match_properties) @@ -1908,14 +1895,12 @@ bool cmFileCopier::InstallDirectory(const char* source, return this->SetPermissions(destination, permissions_after); } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleCopyCommand(std::vector<std::string> const& args) { cmFileCopier copier(this); return copier.Run(args); } -//---------------------------------------------------------------------------- struct cmFileInstaller: public cmFileCopier { cmFileInstaller(cmFileCommand* command): @@ -2028,7 +2013,6 @@ protected: bool HandleInstallDestination(); }; -//---------------------------------------------------------------------------- bool cmFileInstaller::Parse(std::vector<std::string> const& args) { if(!this->cmFileCopier::Parse(args)) @@ -2071,7 +2055,6 @@ bool cmFileInstaller::Parse(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmFileInstaller::CheckKeyword(std::string const& arg) { if(arg == "TYPE") @@ -2198,7 +2181,6 @@ bool cmFileInstaller::CheckKeyword(std::string const& arg) return true; } -//---------------------------------------------------------------------------- bool cmFileInstaller::CheckValue(std::string const& arg) { switch(this->Doing) @@ -2218,7 +2200,6 @@ bool cmFileInstaller::CheckValue(std::string const& arg) return true; } -//---------------------------------------------------------------------------- bool cmFileInstaller ::GetTargetTypeFromString(const std::string& stype) { @@ -2260,7 +2241,6 @@ bool cmFileInstaller return true; } -//---------------------------------------------------------------------------- bool cmFileInstaller::HandleInstallDestination() { std::string& destination = this->Destination; @@ -2356,7 +2336,6 @@ bool cmFileInstaller::HandleInstallDestination() return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleRPathChangeCommand(std::vector<std::string> const& args) { @@ -2433,11 +2412,13 @@ cmFileCommand::HandleRPathChangeCommand(std::vector<std::string> const& args) if(!cmSystemTools::ChangeRPath(file, oldRPath, newRPath, &emsg, &changed)) { std::ostringstream e; + /* clang-format off */ e << "RPATH_CHANGE could not write new RPATH:\n" << " " << newRPath << "\n" << "to the file:\n" << " " << file << "\n" << emsg; + /* clang-format on */ this->SetError(e.str()); success = false; } @@ -2461,7 +2442,6 @@ cmFileCommand::HandleRPathChangeCommand(std::vector<std::string> const& args) return success; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleRPathRemoveCommand(std::vector<std::string> const& args) { @@ -2508,9 +2488,11 @@ cmFileCommand::HandleRPathRemoveCommand(std::vector<std::string> const& args) if(!cmSystemTools::RemoveRPath(file, &emsg, &removed)) { std::ostringstream e; + /* clang-format off */ e << "RPATH_REMOVE could not remove RPATH from file:\n" << " " << file << "\n" << emsg; + /* clang-format on */ this->SetError(e.str()); success = false; } @@ -2532,7 +2514,6 @@ cmFileCommand::HandleRPathRemoveCommand(std::vector<std::string> const& args) return success; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleRPathCheckCommand(std::vector<std::string> const& args) { @@ -2592,14 +2573,12 @@ cmFileCommand::HandleRPathCheckCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleInstallCommand(std::vector<std::string> const& args) { cmFileInstaller installer(this); return installer.Run(args); } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleRelativePathCommand( std::vector<std::string> const& args) { @@ -2638,7 +2617,6 @@ bool cmFileCommand::HandleRelativePathCommand( } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleRename(std::vector<std::string> const& args) { if(args.size() != 3) @@ -2665,11 +2643,13 @@ bool cmFileCommand::HandleRename(std::vector<std::string> const& args) { std::string err = cmSystemTools::GetLastSystemError(); std::ostringstream e; + /* clang-format off */ e << "RENAME failed to rename\n" << " " << oldname << "\n" << "to\n" << " " << newname << "\n" << "because: " << err << "\n"; + /* clang-format on */ this->SetError(e.str()); return false; } @@ -2677,7 +2657,6 @@ bool cmFileCommand::HandleRename(std::vector<std::string> const& args) } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleRemove(std::vector<std::string> const& args, bool recurse) { @@ -2708,7 +2687,6 @@ bool cmFileCommand::HandleRemove(std::vector<std::string> const& args, return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleCMakePathCommand(std::vector<std::string> const& args, bool nativePath) @@ -3564,7 +3542,6 @@ cmFileCommand::HandleUploadCommand(std::vector<std::string> const& args) #endif } -//---------------------------------------------------------------------------- void cmFileCommand::AddEvaluationFile(const std::string &inputName, const std::string &outputExpr, const std::string &condition, @@ -3585,7 +3562,6 @@ void cmFileCommand::AddEvaluationFile(const std::string &inputName, conditionCge, inputIsContent); } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleGenerateCommand( std::vector<std::string> const& args) { @@ -3633,7 +3609,6 @@ bool cmFileCommand::HandleGenerateCommand( return true; } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleLockCommand( std::vector<std::string> const& args) { @@ -3832,7 +3807,6 @@ bool cmFileCommand::HandleLockCommand( #endif } -//---------------------------------------------------------------------------- bool cmFileCommand::HandleTimestampCommand( std::vector<std::string> const& args) { diff --git a/Source/cmFileLock.cxx b/Source/cmFileLock.cxx index e6aa5f4..0d41c53 100644 --- a/Source/cmFileLock.cxx +++ b/Source/cmFileLock.cxx @@ -12,8 +12,8 @@ #include "cmFileLock.h" -#include <assert.h> #include "cmFileLockResult.h" +#include <assert.h> // Common implementation diff --git a/Source/cmFileLockPool.cxx b/Source/cmFileLockPool.cxx index 3710eb0..939a8f5 100644 --- a/Source/cmFileLockPool.cxx +++ b/Source/cmFileLockPool.cxx @@ -14,9 +14,9 @@ #include <assert.h> +#include "cmAlgorithms.h" #include "cmFileLock.h" #include "cmFileLockResult.h" -#include "cmAlgorithms.h" cmFileLockPool::cmFileLockPool() { diff --git a/Source/cmFileLockUnix.cxx b/Source/cmFileLockUnix.cxx index 36a2d72..f5e77be 100644 --- a/Source/cmFileLockUnix.cxx +++ b/Source/cmFileLockUnix.cxx @@ -12,11 +12,11 @@ #include "cmFileLock.h" +#include "cmSystemTools.h" #include <errno.h> // errno -#include <stdio.h> // SEEK_SET #include <fcntl.h> +#include <stdio.h> // SEEK_SET #include <unistd.h> -#include "cmSystemTools.h" cmFileLock::cmFileLock(): File(-1) { diff --git a/Source/cmFileLockWin32.cxx b/Source/cmFileLockWin32.cxx index dc65948..e40ae2c 100644 --- a/Source/cmFileLockWin32.cxx +++ b/Source/cmFileLockWin32.cxx @@ -12,8 +12,8 @@ #include "cmFileLock.h" -#include <windows.h> // CreateFileW #include "cmSystemTools.h" +#include <windows.h> // CreateFileW cmFileLock::cmFileLock(): File(INVALID_HANDLE_VALUE) { diff --git a/Source/cmFileTimeComparison.cxx b/Source/cmFileTimeComparison.cxx index 279b61d..88b5d99 100644 --- a/Source/cmFileTimeComparison.cxx +++ b/Source/cmFileTimeComparison.cxx @@ -32,7 +32,6 @@ # include <windows.h> #endif -//---------------------------------------------------------------------------- class cmFileTimeComparisonInternal { public: @@ -74,7 +73,6 @@ private: cmFileTimeComparison_Type* st2); }; -//---------------------------------------------------------------------------- bool cmFileTimeComparisonInternal::Stat(const char* fname, cmFileTimeComparison_Type* st) { @@ -118,32 +116,27 @@ bool cmFileTimeComparisonInternal::Stat(const char* fname, return true; } -//---------------------------------------------------------------------------- cmFileTimeComparison::cmFileTimeComparison() { this->Internals = new cmFileTimeComparisonInternal; } -//---------------------------------------------------------------------------- cmFileTimeComparison::~cmFileTimeComparison() { delete this->Internals; } -//---------------------------------------------------------------------------- bool cmFileTimeComparison::FileTimeCompare(const char* f1, const char* f2, int* result) { return this->Internals->FileTimeCompare(f1, f2, result); } -//---------------------------------------------------------------------------- bool cmFileTimeComparison::FileTimesDiffer(const char* f1, const char* f2) { return this->Internals->FileTimesDiffer(f1, f2); } -//---------------------------------------------------------------------------- int cmFileTimeComparisonInternal::Compare(cmFileTimeComparison_Type* s1, cmFileTimeComparison_Type* s2) { @@ -203,7 +196,6 @@ int cmFileTimeComparisonInternal::Compare(cmFileTimeComparison_Type* s1, #endif } -//---------------------------------------------------------------------------- bool cmFileTimeComparisonInternal::TimesDiffer(cmFileTimeComparison_Type* s1, cmFileTimeComparison_Type* s2) { @@ -280,7 +272,6 @@ bool cmFileTimeComparisonInternal::TimesDiffer(cmFileTimeComparison_Type* s1, #endif } -//---------------------------------------------------------------------------- bool cmFileTimeComparisonInternal::FileTimeCompare(const char* f1, const char* f2, int* result) @@ -303,7 +294,6 @@ bool cmFileTimeComparisonInternal::FileTimeCompare(const char* f1, } } -//---------------------------------------------------------------------------- bool cmFileTimeComparisonInternal::FileTimesDiffer(const char* f1, const char* f2) { diff --git a/Source/cmFindBase.cxx b/Source/cmFindBase.cxx index fa9b381..90091c1 100644 --- a/Source/cmFindBase.cxx +++ b/Source/cmFindBase.cxx @@ -22,7 +22,6 @@ cmFindBase::cmFindBase() this->NamesPerDirAllowed = false; } -//---------------------------------------------------------------------------- bool cmFindBase::ParseArguments(std::vector<std::string> const& argsIn) { if(argsIn.size() < 2 ) @@ -223,7 +222,6 @@ void cmFindBase::ExpandPaths() this->FillUserGuessPath(); } -//---------------------------------------------------------------------------- void cmFindBase::FillCMakeEnvironmentPath() { cmSearchPath &paths = this->LabeledPaths[PathLabel::CMakeEnvironment]; @@ -246,7 +244,6 @@ void cmFindBase::FillCMakeEnvironmentPath() paths.AddSuffixes(this->SearchPathSuffixes); } -//---------------------------------------------------------------------------- void cmFindBase::FillCMakeVariablePath() { cmSearchPath &paths = this->LabeledPaths[PathLabel::CMake]; @@ -271,7 +268,6 @@ void cmFindBase::FillCMakeVariablePath() paths.AddSuffixes(this->SearchPathSuffixes); } -//---------------------------------------------------------------------------- void cmFindBase::FillSystemEnvironmentPath() { cmSearchPath &paths = this->LabeledPaths[PathLabel::SystemEnvironment]; @@ -287,7 +283,6 @@ void cmFindBase::FillSystemEnvironmentPath() paths.AddSuffixes(this->SearchPathSuffixes); } -//---------------------------------------------------------------------------- void cmFindBase::FillCMakeSystemVariablePath() { cmSearchPath &paths = this->LabeledPaths[PathLabel::CMakeSystem]; @@ -309,7 +304,6 @@ void cmFindBase::FillCMakeSystemVariablePath() paths.AddSuffixes(this->SearchPathSuffixes); } -//---------------------------------------------------------------------------- void cmFindBase::FillUserHintsPath() { cmSearchPath &paths = this->LabeledPaths[PathLabel::Hints]; @@ -322,7 +316,6 @@ void cmFindBase::FillUserHintsPath() paths.AddSuffixes(this->SearchPathSuffixes); } -//---------------------------------------------------------------------------- void cmFindBase::FillUserGuessPath() { cmSearchPath &paths = this->LabeledPaths[PathLabel::Guess]; @@ -335,7 +328,6 @@ void cmFindBase::FillUserGuessPath() paths.AddSuffixes(this->SearchPathSuffixes); } -//---------------------------------------------------------------------------- void cmFindBase::PrintFindStuff() { std::cerr << "SearchFrameworkLast: " << this->SearchFrameworkLast << "\n"; diff --git a/Source/cmFindCommon.cxx b/Source/cmFindCommon.cxx index 913985f..2758c18 100644 --- a/Source/cmFindCommon.cxx +++ b/Source/cmFindCommon.cxx @@ -10,10 +10,10 @@ See the License for more information. ============================================================================*/ #include "cmFindCommon.h" -#include <functional> + #include <algorithm> +#include <functional> -//---------------------------------------------------------------------------- cmFindCommon::PathGroup cmFindCommon::PathGroup::All("ALL"); cmFindCommon::PathLabel cmFindCommon::PathLabel::CMake("CMAKE"); cmFindCommon::PathLabel @@ -24,7 +24,6 @@ cmFindCommon::PathLabel cmFindCommon::PathLabel cmFindCommon::PathLabel::CMakeSystem("CMAKE_SYSTEM"); cmFindCommon::PathLabel cmFindCommon::PathLabel::Guess("GUESS"); -//---------------------------------------------------------------------------- cmFindCommon::cmFindCommon() { this->FindRootPathMode = RootPathModeBoth; @@ -51,12 +50,10 @@ cmFindCommon::cmFindCommon() this->InitializeSearchPathGroups(); } -//---------------------------------------------------------------------------- cmFindCommon::~cmFindCommon() { } -//---------------------------------------------------------------------------- void cmFindCommon::InitializeSearchPathGroups() { std::vector<PathLabel>* labels; @@ -90,7 +87,6 @@ void cmFindCommon::InitializeSearchPathGroups() cmSearchPath(this))); } -//---------------------------------------------------------------------------- void cmFindCommon::SelectDefaultRootPathMode() { // Check the policy variable for this find command type. @@ -112,7 +108,6 @@ void cmFindCommon::SelectDefaultRootPathMode() } } -//---------------------------------------------------------------------------- void cmFindCommon::SelectDefaultMacMode() { std::string ff = this->Makefile->GetSafeDefinition("CMAKE_FIND_FRAMEWORK"); @@ -168,7 +163,6 @@ void cmFindCommon::SelectDefaultMacMode() } } -//---------------------------------------------------------------------------- void cmFindCommon::RerootPaths(std::vector<std::string>& paths) { #if 0 @@ -257,7 +251,6 @@ void cmFindCommon::RerootPaths(std::vector<std::string>& paths) } } -//---------------------------------------------------------------------------- void cmFindCommon::FilterPaths(const std::vector<std::string>& inPaths, const std::set<std::string>& ignore, std::vector<std::string>& outPaths) @@ -272,7 +265,6 @@ void cmFindCommon::FilterPaths(const std::vector<std::string>& inPaths, } } -//---------------------------------------------------------------------------- void cmFindCommon::GetIgnoredPaths(std::vector<std::string>& ignore) { // null-terminated list of paths. @@ -300,7 +292,6 @@ void cmFindCommon::GetIgnoredPaths(std::vector<std::string>& ignore) } -//---------------------------------------------------------------------------- void cmFindCommon::GetIgnoredPaths(std::set<std::string>& ignore) { std::vector<std::string> ignoreVec; @@ -308,7 +299,6 @@ void cmFindCommon::GetIgnoredPaths(std::set<std::string>& ignore) ignore.insert(ignoreVec.begin(), ignoreVec.end()); } -//---------------------------------------------------------------------------- bool cmFindCommon::CheckCommonArgument(std::string const& arg) { if(arg == "NO_DEFAULT_PATH") @@ -353,7 +343,6 @@ bool cmFindCommon::CheckCommonArgument(std::string const& arg) return true; } -//---------------------------------------------------------------------------- void cmFindCommon::AddPathSuffix(std::string const& arg) { std::string suffix = arg; @@ -384,7 +373,6 @@ void cmFindCommon::AddPathSuffix(std::string const& arg) this->SearchPathSuffixes.push_back(suffix); } -//---------------------------------------------------------------------------- void AddTrailingSlash(std::string& s) { if(!s.empty() && *s.rbegin() != '/') @@ -415,7 +403,6 @@ void cmFindCommon::ComputeFinalPaths() &AddTrailingSlash); } -//---------------------------------------------------------------------------- void cmFindCommon::SetMakefile(cmMakefile* makefile) { cmCommand::SetMakefile(makefile); diff --git a/Source/cmFindCommon.h b/Source/cmFindCommon.h index 3fefc8d..2b87427 100644 --- a/Source/cmFindCommon.h +++ b/Source/cmFindCommon.h @@ -13,8 +13,8 @@ #define cmFindCommon_h #include "cmCommand.h" -#include "cmSearchPath.h" #include "cmPathLabel.h" +#include "cmSearchPath.h" /** \class cmFindCommon * \brief Base class for FIND_XXX implementations. diff --git a/Source/cmFindFileCommand.cxx b/Source/cmFindFileCommand.cxx index 615e7c1..a6666ba 100644 --- a/Source/cmFindFileCommand.cxx +++ b/Source/cmFindFileCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmFindFileCommand.h" + #include "cmSystemTools.h" cmFindFileCommand::cmFindFileCommand() diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index e7696af..a37b0bd 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmFindLibraryCommand.h" + #include <cmsys/Directory.hxx> cmFindLibraryCommand::cmFindLibraryCommand() @@ -81,7 +82,6 @@ bool cmFindLibraryCommand return true; } -//---------------------------------------------------------------------------- void cmFindLibraryCommand::AddArchitecturePaths(const char* suffix) { std::vector<std::string> original; @@ -93,7 +93,6 @@ void cmFindLibraryCommand::AddArchitecturePaths(const char* suffix) } } -//---------------------------------------------------------------------------- void cmFindLibraryCommand::AddArchitecturePath( std::string const& dir, std::string::size_type start_pos, const char* suffix, bool fresh) @@ -135,7 +134,6 @@ void cmFindLibraryCommand::AddArchitecturePath( } } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindLibrary() { std::string library; @@ -154,7 +152,6 @@ std::string cmFindLibraryCommand::FindLibrary() return library; } -//---------------------------------------------------------------------------- struct cmFindLibraryHelper { cmFindLibraryHelper(cmMakefile* mf); @@ -208,7 +205,6 @@ struct cmFindLibraryHelper bool CheckDirectoryForName(std::string const& path, Name& name); }; -//---------------------------------------------------------------------------- cmFindLibraryHelper::cmFindLibraryHelper(cmMakefile* mf): Makefile(mf) { @@ -230,7 +226,6 @@ cmFindLibraryHelper::cmFindLibraryHelper(cmMakefile* mf): ->GetGlobalPropertyAsBool("FIND_LIBRARY_USE_OPENBSD_VERSIONING"); } -//---------------------------------------------------------------------------- void cmFindLibraryHelper::RegexFromLiteral(std::string& out, std::string const& in) { @@ -251,7 +246,6 @@ void cmFindLibraryHelper::RegexFromLiteral(std::string& out, } } -//---------------------------------------------------------------------------- void cmFindLibraryHelper::RegexFromList(std::string& out, std::vector<std::string> const& in) { @@ -272,7 +266,6 @@ void cmFindLibraryHelper::RegexFromList(std::string& out, out += ")"; } -//---------------------------------------------------------------------------- bool cmFindLibraryHelper::HasValidSuffix(std::string const& name) { for(std::vector<std::string>::const_iterator si = this->Suffixes.begin(); @@ -299,7 +292,6 @@ bool cmFindLibraryHelper::HasValidSuffix(std::string const& name) return false; } -//---------------------------------------------------------------------------- void cmFindLibraryHelper::AddName(std::string const& name) { Name entry; @@ -322,14 +314,12 @@ void cmFindLibraryHelper::AddName(std::string const& name) this->Names.push_back(entry); } -//---------------------------------------------------------------------------- void cmFindLibraryHelper::SetName(std::string const& name) { this->Names.clear(); this->AddName(name); } -//---------------------------------------------------------------------------- bool cmFindLibraryHelper::CheckDirectory(std::string const& path) { for(std::vector<Name>::iterator i = this->Names.begin(); @@ -343,7 +333,6 @@ bool cmFindLibraryHelper::CheckDirectory(std::string const& path) return false; } -//---------------------------------------------------------------------------- bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path, Name& name) { @@ -422,7 +411,6 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path, return !this->BestPath.empty(); } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindNormalLibrary() { if(this->NamesPerDir) @@ -435,7 +423,6 @@ std::string cmFindLibraryCommand::FindNormalLibrary() } } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindNormalLibraryNamesPerDir() { // Search for all names in each directory. @@ -458,7 +445,6 @@ std::string cmFindLibraryCommand::FindNormalLibraryNamesPerDir() return ""; } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindNormalLibraryDirsPerName() { // Search the entire path for each name. @@ -484,7 +470,6 @@ std::string cmFindLibraryCommand::FindNormalLibraryDirsPerName() return ""; } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindFrameworkLibrary() { if(this->NamesPerDir) @@ -497,7 +482,6 @@ std::string cmFindLibraryCommand::FindFrameworkLibrary() } } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindFrameworkLibraryNamesPerDir() { std::string fwPath; @@ -522,7 +506,6 @@ std::string cmFindLibraryCommand::FindFrameworkLibraryNamesPerDir() return ""; } -//---------------------------------------------------------------------------- std::string cmFindLibraryCommand::FindFrameworkLibraryDirsPerName() { std::string fwPath; diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 64176e7..d08441b 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -11,22 +11,21 @@ ============================================================================*/ #include "cmFindPackageCommand.h" +#include "cmAlgorithms.h" #include <cmsys/Directory.hxx> -#include <cmsys/RegularExpression.hxx> #include <cmsys/Encoding.hxx> -#include "cmAlgorithms.h" +#include <cmsys/RegularExpression.hxx> #ifdef CMAKE_BUILD_WITH_CMAKE #include "cmVariableWatch.h" #endif #if defined(__HAIKU__) -#include <string.h> #include <FindDirectory.h> #include <StorageDefs.h> +#include <string.h> #endif -//---------------------------------------------------------------------------- cmFindPackageCommand::PathLabel cmFindPackageCommand::PathLabel::UserRegistry("PACKAGE_REGISTRY"); cmFindPackageCommand::PathLabel @@ -34,7 +33,6 @@ cmFindPackageCommand::PathLabel cmFindPackageCommand::PathLabel cmFindPackageCommand::PathLabel::SystemRegistry("SYSTEM_PACKAGE_REGISTRY"); -//---------------------------------------------------------------------------- cmFindPackageCommand::cmFindPackageCommand() { this->CMakePathName = "PACKAGE"; @@ -63,7 +61,6 @@ cmFindPackageCommand::cmFindPackageCommand() this->AppendSearchPathGroups(); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::AppendSearchPathGroups() { std::vector<cmFindCommon::PathLabel>* labels; @@ -88,7 +85,6 @@ void cmFindPackageCommand::AppendSearchPathGroups() cmSearchPath(this))); } -//---------------------------------------------------------------------------- bool cmFindPackageCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -525,7 +521,6 @@ bool cmFindPackageCommand } -//---------------------------------------------------------------------------- void cmFindPackageCommand::SetModuleVariables(const std::string& components) { this->AddFindDefinition("CMAKE_FIND_PACKAGE_NAME", this->Name.c_str()); @@ -578,7 +573,6 @@ void cmFindPackageCommand::SetModuleVariables(const std::string& components) } } -//---------------------------------------------------------------------------- void cmFindPackageCommand::AddFindDefinition(const std::string& var, const char* val) { @@ -594,7 +588,6 @@ void cmFindPackageCommand::AddFindDefinition(const std::string& var, this->Makefile->AddDefinition(var, val); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::RestoreFindDefinitions() { for(std::map<std::string, OriginalDef>::iterator @@ -612,7 +605,6 @@ void cmFindPackageCommand::RestoreFindDefinitions() } } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::FindModule(bool& found) { std::string module = "Find"; @@ -634,7 +626,6 @@ bool cmFindPackageCommand::FindModule(bool& found) return true; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::HandlePackageMode() { this->ConsideredConfigs.clear(); @@ -748,10 +739,12 @@ bool cmFindPackageCommand::HandlePackageMode() std::ostringstream aw; if (configFileSetFOUNDFalse) { + /* clang-format off */ e << "Found package configuration file:\n" " " << this->FileFound << "\n" "but it set " << foundVar << " to FALSE so package \"" << this->Name << "\" is considered to be NOT FOUND."; + /* clang-format on */ if (!notFoundMessage.empty()) { e << " Reason given by package: \n" << notFoundMessage << "\n"; @@ -890,7 +883,6 @@ bool cmFindPackageCommand::HandlePackageMode() return result; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::FindConfig() { // Compute the set of search prefixes. @@ -950,7 +942,6 @@ bool cmFindPackageCommand::FindConfig() return found; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::FindPrefixedConfig() { std::vector<std::string>& prefixes = this->SearchPaths; @@ -965,7 +956,6 @@ bool cmFindPackageCommand::FindPrefixedConfig() return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::FindFrameworkConfig() { std::vector<std::string>& prefixes = this->SearchPaths; @@ -980,7 +970,6 @@ bool cmFindPackageCommand::FindFrameworkConfig() return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::FindAppBundleConfig() { std::vector<std::string>& prefixes = this->SearchPaths; @@ -995,7 +984,6 @@ bool cmFindPackageCommand::FindAppBundleConfig() return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::ReadListFile(const char* f, PolicyScopeRule psr) { const bool noPolicyScope = !this->PolicyScope || psr == NoPolicyScope; @@ -1010,7 +998,6 @@ bool cmFindPackageCommand::ReadListFile(const char* f, PolicyScopeRule psr) return false; } -//---------------------------------------------------------------------------- void cmFindPackageCommand::AppendToFoundProperty(bool found) { std::vector<std::string> foundContents; @@ -1065,7 +1052,6 @@ void cmFindPackageCommand::AppendToFoundProperty(bool found) ->SetGlobalProperty("PACKAGES_NOT_FOUND", tmp.c_str()); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::AppendSuccessInformation() { { @@ -1120,7 +1106,6 @@ void cmFindPackageCommand::AppendSuccessInformation() this->RestoreFindDefinitions(); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::ComputePrefixes() { if(!this->NoDefaultPath) @@ -1159,7 +1144,6 @@ void cmFindPackageCommand::ComputePrefixes() this->ComputeFinalPaths(); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesCMakeEnvironment() { cmSearchPath &paths = this->LabeledPaths[PathLabel::CMakeEnvironment]; @@ -1174,7 +1158,6 @@ void cmFindPackageCommand::FillPrefixesCMakeEnvironment() paths.AddEnvPath("CMAKE_APPBUNDLE_PATH"); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesCMakeVariable() { cmSearchPath &paths = this->LabeledPaths[PathLabel::CMake]; @@ -1184,7 +1167,6 @@ void cmFindPackageCommand::FillPrefixesCMakeVariable() paths.AddCMakePath("CMAKE_APPBUNDLE_PATH"); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesSystemEnvironment() { cmSearchPath &paths = this->LabeledPaths[PathLabel::SystemEnvironment]; @@ -1210,7 +1192,6 @@ void cmFindPackageCommand::FillPrefixesSystemEnvironment() } } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesUserRegistry() { #if defined(_WIN32) && !defined(__CYGWIN__) @@ -1238,7 +1219,6 @@ void cmFindPackageCommand::FillPrefixesUserRegistry() #endif } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesSystemRegistry() { if(this->NoSystemRegistry || this->NoDefaultPath) @@ -1261,7 +1241,6 @@ void cmFindPackageCommand::FillPrefixesSystemRegistry() # if !defined(KEY_WOW64_64KEY) # define KEY_WOW64_64KEY 0x0100 # endif -//---------------------------------------------------------------------------- void cmFindPackageCommand::LoadPackageRegistryWinUser() { // HKEY_CURRENT_USER\\Software shares 32-bit and 64-bit views. @@ -1269,7 +1248,6 @@ void cmFindPackageCommand::LoadPackageRegistryWinUser() this->LabeledPaths[PathLabel::UserRegistry]); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::LoadPackageRegistryWinSystem() { cmSearchPath &paths = this->LabeledPaths[PathLabel::SystemRegistry]; @@ -1288,7 +1266,6 @@ void cmFindPackageCommand::LoadPackageRegistryWinSystem() } } -//---------------------------------------------------------------------------- void cmFindPackageCommand::LoadPackageRegistryWin(bool user, unsigned int view, cmSearchPath& outPaths) { @@ -1347,7 +1324,6 @@ void cmFindPackageCommand::LoadPackageRegistryWin(bool user, unsigned int view, } } #else -//---------------------------------------------------------------------------- class cmFindPackageCommandHoldFile { const char* File; @@ -1358,7 +1334,6 @@ public: void Release() { this->File = 0; } }; -//---------------------------------------------------------------------------- void cmFindPackageCommand::LoadPackageRegistryDir(std::string const& dir, cmSearchPath& outPaths) { @@ -1396,7 +1371,6 @@ void cmFindPackageCommand::LoadPackageRegistryDir(std::string const& dir, } #endif -//---------------------------------------------------------------------------- bool cmFindPackageCommand::CheckPackageRegistryEntry(const std::string& fname, cmSearchPath& outPaths) { @@ -1435,7 +1409,6 @@ bool cmFindPackageCommand::CheckPackageRegistryEntry(const std::string& fname, } } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesCMakeSystemVariable() { cmSearchPath &paths = this->LabeledPaths[PathLabel::CMakeSystem]; @@ -1445,7 +1418,6 @@ void cmFindPackageCommand::FillPrefixesCMakeSystemVariable() paths.AddCMakePath("CMAKE_SYSTEM_APPBUNDLE_PATH"); } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesUserGuess() { cmSearchPath &paths = this->LabeledPaths[PathLabel::Guess]; @@ -1457,7 +1429,6 @@ void cmFindPackageCommand::FillPrefixesUserGuess() } } -//---------------------------------------------------------------------------- void cmFindPackageCommand::FillPrefixesUserHints() { cmSearchPath &paths = this->LabeledPaths[PathLabel::Hints]; @@ -1469,7 +1440,6 @@ void cmFindPackageCommand::FillPrefixesUserHints() } } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::SearchDirectory(std::string const& dir) { assert(!dir.empty() && dir[dir.size()-1] == '/'); @@ -1493,7 +1463,6 @@ bool cmFindPackageCommand::SearchDirectory(std::string const& dir) return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::CheckDirectory(std::string const& dir) { assert(!dir.empty() && dir[dir.size()-1] == '/'); @@ -1509,7 +1478,6 @@ bool cmFindPackageCommand::CheckDirectory(std::string const& dir) return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::FindConfigFile(std::string const& dir, std::string& file) { @@ -1537,7 +1505,6 @@ bool cmFindPackageCommand::FindConfigFile(std::string const& dir, return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::CheckVersion(std::string const& config_file) { bool result = false; // by default, assume the version is not ok. @@ -1583,7 +1550,6 @@ bool cmFindPackageCommand::CheckVersion(std::string const& config_file) return result; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::CheckVersionFile(std::string const& version_file, std::string& result_version) { @@ -1668,7 +1634,6 @@ bool cmFindPackageCommand::CheckVersionFile(std::string const& version_file, return suitable; } -//---------------------------------------------------------------------------- void cmFindPackageCommand::StoreVersionFound() { // Store the whole version string. @@ -1697,7 +1662,6 @@ void cmFindPackageCommand::StoreVersionFound() this->Makefile->AddDefinition(ver+"_COUNT", buf); } -//---------------------------------------------------------------------------- #include <cmsys/Glob.hxx> #include <cmsys/String.h> #include <cmsys/auto_ptr.hxx> @@ -2041,7 +2005,6 @@ private: } }; -//---------------------------------------------------------------------------- bool cmFindPackageCommand::SearchPrefix(std::string const& prefix_in) { assert(!prefix_in.empty() && prefix_in[prefix_in.size()-1] == '/'); @@ -2160,7 +2123,6 @@ bool cmFindPackageCommand::SearchPrefix(std::string const& prefix_in) return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::SearchFrameworkPrefix(std::string const& prefix_in) { assert(!prefix_in.empty() && prefix_in[prefix_in.size()-1] == '/'); @@ -2231,7 +2193,6 @@ bool cmFindPackageCommand::SearchFrameworkPrefix(std::string const& prefix_in) return false; } -//---------------------------------------------------------------------------- bool cmFindPackageCommand::SearchAppBundlePrefix(std::string const& prefix_in) { assert(!prefix_in.empty() && prefix_in[prefix_in.size()-1] == '/'); diff --git a/Source/cmFindPathCommand.cxx b/Source/cmFindPathCommand.cxx index 1f3d1a4..c34a98c 100644 --- a/Source/cmFindPathCommand.cxx +++ b/Source/cmFindPathCommand.cxx @@ -65,7 +65,6 @@ bool cmFindPathCommand return true; } -//---------------------------------------------------------------------------- std::string cmFindPathCommand::FindHeader() { std::string header; @@ -146,7 +145,6 @@ cmFindPathCommand::FindHeaderInFramework(std::string const& file, return ""; } -//---------------------------------------------------------------------------- std::string cmFindPathCommand::FindNormalHeader() { std::string tryPath; @@ -175,7 +173,6 @@ std::string cmFindPathCommand::FindNormalHeader() return ""; } -//---------------------------------------------------------------------------- std::string cmFindPathCommand::FindFrameworkHeader() { for(std::vector<std::string>::const_iterator ni = this->Names.begin(); diff --git a/Source/cmFindProgramCommand.cxx b/Source/cmFindProgramCommand.cxx index 219ad48..423bf62 100644 --- a/Source/cmFindProgramCommand.cxx +++ b/Source/cmFindProgramCommand.cxx @@ -10,13 +10,13 @@ See the License for more information. ============================================================================*/ #include "cmFindProgramCommand.h" + #include <stdlib.h> #if defined(__APPLE__) #include <CoreFoundation/CoreFoundation.h> #endif -//---------------------------------------------------------------------------- struct cmFindProgramHelper { cmFindProgramHelper() @@ -153,7 +153,6 @@ std::string cmFindProgramCommand::FindProgram() return program; } -//---------------------------------------------------------------------------- std::string cmFindProgramCommand::FindNormalProgram() { if(this->NamesPerDir) @@ -166,7 +165,6 @@ std::string cmFindProgramCommand::FindNormalProgram() } } -//---------------------------------------------------------------------------- std::string cmFindProgramCommand::FindNormalProgramNamesPerDir() { // Search for all names in each directory. @@ -196,7 +194,6 @@ std::string cmFindProgramCommand::FindNormalProgramNamesPerDir() return ""; } -//---------------------------------------------------------------------------- std::string cmFindProgramCommand::FindNormalProgramDirsPerName() { // Search the entire path for each name. diff --git a/Source/cmForEachCommand.cxx b/Source/cmForEachCommand.cxx index e983bfb..b138e33 100644 --- a/Source/cmForEachCommand.cxx +++ b/Source/cmForEachCommand.cxx @@ -216,7 +216,6 @@ bool cmForEachCommand return true; } -//---------------------------------------------------------------------------- bool cmForEachCommand::HandleInMode(std::vector<std::string> const& args) { cmsys::auto_ptr<cmForEachFunctionBlocker> diff --git a/Source/cmForEachCommand.h b/Source/cmForEachCommand.h index 36e8808..027b8cb 100644 --- a/Source/cmForEachCommand.h +++ b/Source/cmForEachCommand.h @@ -13,6 +13,7 @@ #define cmForEachCommand_h #include "cmCommand.h" + #include "cmFunctionBlocker.h" #include "cmListFileCache.h" diff --git a/Source/cmFortranParser.h b/Source/cmFortranParser.h index cdaf46b..2ad951e 100644 --- a/Source/cmFortranParser.h +++ b/Source/cmFortranParser.h @@ -102,7 +102,6 @@ int cmFortran_yylex(YYSTYPE* yylvalp, yyscan_t yyscanner) #if !defined(cmFortranLexer_cxx) && !defined(cmFortranParser_cxx) #include <stack> -//---------------------------------------------------------------------------- // Information about a single source file. class cmFortranSourceInfo { @@ -118,7 +117,6 @@ public: std::set<std::string> Includes; }; -//---------------------------------------------------------------------------- // Parser methods not included in generated interface. // Get the current buffer processed by the lexer. @@ -127,7 +125,6 @@ YY_BUFFER_STATE cmFortranLexer_GetCurrentBuffer(yyscan_t yyscanner); // The parser entry point. int cmFortran_yyparse(yyscan_t); -//---------------------------------------------------------------------------- // Define parser object internal structure. struct cmFortranFile { diff --git a/Source/cmFortranParserImpl.cxx b/Source/cmFortranParserImpl.cxx index c175e62..c26ad88 100644 --- a/Source/cmFortranParserImpl.cxx +++ b/Source/cmFortranParserImpl.cxx @@ -14,7 +14,6 @@ #include "cmSystemTools.h" #include <assert.h> -//---------------------------------------------------------------------------- bool cmFortranParser_s::FindIncludeFile(const char* dir, const char* includeName, std::string& fileName) @@ -55,7 +54,6 @@ bool cmFortranParser_s::FindIncludeFile(const char* dir, return false; } -//---------------------------------------------------------------------------- cmFortranParser_s ::cmFortranParser_s(std::vector<std::string> const& includes, std::set<std::string> const& defines, @@ -76,13 +74,11 @@ cmFortranParser_s cmFortran_yy_switch_to_buffer(buffer, this->Scanner); } -//---------------------------------------------------------------------------- cmFortranParser_s::~cmFortranParser_s() { cmFortran_yylex_destroy(this->Scanner); } -//---------------------------------------------------------------------------- bool cmFortranParser_FilePush(cmFortranParser* parser, const char* fname) { @@ -106,7 +102,6 @@ bool cmFortranParser_FilePush(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- bool cmFortranParser_FilePop(cmFortranParser* parser) { // Pop one file off the stack and close it. Switch the lexer back @@ -127,7 +122,6 @@ bool cmFortranParser_FilePop(cmFortranParser* parser) } } -//---------------------------------------------------------------------------- int cmFortranParser_Input(cmFortranParser* parser, char* buffer, size_t bufferSize) { @@ -141,26 +135,22 @@ int cmFortranParser_Input(cmFortranParser* parser, return 0; } -//---------------------------------------------------------------------------- void cmFortranParser_StringStart(cmFortranParser* parser) { parser->TokenString = ""; } -//---------------------------------------------------------------------------- const char* cmFortranParser_StringEnd(cmFortranParser* parser) { return parser->TokenString.c_str(); } -//---------------------------------------------------------------------------- void cmFortranParser_StringAppend(cmFortranParser* parser, char c) { parser->TokenString += c; } -//---------------------------------------------------------------------------- void cmFortranParser_SetInInterface(cmFortranParser* parser, bool in) { @@ -172,26 +162,22 @@ void cmFortranParser_SetInInterface(cmFortranParser* parser, parser->InInterface = in; } -//---------------------------------------------------------------------------- bool cmFortranParser_GetInInterface(cmFortranParser* parser) { return parser->InInterface; } -//---------------------------------------------------------------------------- void cmFortranParser_SetOldStartcond(cmFortranParser* parser, int arg) { parser->OldStartcond = arg; } -//---------------------------------------------------------------------------- int cmFortranParser_GetOldStartcond(cmFortranParser* parser) { return parser->OldStartcond; } -//---------------------------------------------------------------------------- void cmFortranParser_Error(cmFortranParser*, const char*) { // If there is a parser error just ignore it. The source will not @@ -199,7 +185,6 @@ void cmFortranParser_Error(cmFortranParser*, const char*) // to be regenerated anyway. } -//---------------------------------------------------------------------------- void cmFortranParser_RuleUse(cmFortranParser* parser, const char* name) { @@ -209,7 +194,6 @@ void cmFortranParser_RuleUse(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleLineDirective(cmFortranParser* parser, const char* filename) { @@ -229,13 +213,12 @@ void cmFortranParser_RuleLineDirective(cmFortranParser* parser, cmSystemTools::ConvertToUnixSlashes(included); // Save the named file as included in the source. - if (cmSystemTools::FileExists(included)) + if (cmSystemTools::FileExists(included, true)) { parser->Info.Includes.insert(included); } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleInclude(cmFortranParser* parser, const char* name) { @@ -266,7 +249,6 @@ void cmFortranParser_RuleInclude(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleModule(cmFortranParser* parser, const char* name) { @@ -276,7 +258,6 @@ void cmFortranParser_RuleModule(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleDefine(cmFortranParser* parser, const char* macro) { @@ -286,7 +267,6 @@ void cmFortranParser_RuleDefine(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleUndef(cmFortranParser* parser, const char* macro) { @@ -301,7 +281,6 @@ void cmFortranParser_RuleUndef(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleIfdef(cmFortranParser* parser, const char* macro) { @@ -322,7 +301,6 @@ void cmFortranParser_RuleIfdef(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleIfndef(cmFortranParser* parser, const char* macro) { @@ -344,7 +322,6 @@ void cmFortranParser_RuleIfndef(cmFortranParser* parser, } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleIf(cmFortranParser* parser) { /* Note: The current parser is _not_ able to get statements like @@ -378,7 +355,6 @@ void cmFortranParser_RuleIf(cmFortranParser* parser) parser->SkipToEnd.push(false); } -//---------------------------------------------------------------------------- void cmFortranParser_RuleElif(cmFortranParser* parser) { /* Note: There are parser limitations. See the note at @@ -395,7 +371,6 @@ void cmFortranParser_RuleElif(cmFortranParser* parser) } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleElse(cmFortranParser* parser) { // if the parent branch is false do nothing! @@ -417,7 +392,6 @@ void cmFortranParser_RuleElse(cmFortranParser* parser) } } -//---------------------------------------------------------------------------- void cmFortranParser_RuleEndif(cmFortranParser* parser) { if(!parser->SkipToEnd.empty()) diff --git a/Source/cmFunctionBlocker.h b/Source/cmFunctionBlocker.h index a3b8078..d0d52ce 100644 --- a/Source/cmFunctionBlocker.h +++ b/Source/cmFunctionBlocker.h @@ -13,6 +13,7 @@ #define cmFunctionBlocker_h #include "cmStandardIncludes.h" + #include "cmExecutionStatus.h" #include "cmListFileCache.h" class cmMakefile; diff --git a/Source/cmFunctionCommand.h b/Source/cmFunctionCommand.h index 2df435e..1a5ce59 100644 --- a/Source/cmFunctionCommand.h +++ b/Source/cmFunctionCommand.h @@ -13,6 +13,7 @@ #define cmFunctionCommand_h #include "cmCommand.h" + #include "cmFunctionBlocker.h" class cmFunctionFunctionBlocker : public cmFunctionBlocker diff --git a/Source/cmGeneratedFileStream.cxx b/Source/cmGeneratedFileStream.cxx index 600b793..78d863c 100644 --- a/Source/cmGeneratedFileStream.cxx +++ b/Source/cmGeneratedFileStream.cxx @@ -17,13 +17,11 @@ # include <cm_zlib.h> #endif -//---------------------------------------------------------------------------- cmGeneratedFileStream::cmGeneratedFileStream(): cmGeneratedFileStreamBase(), Stream() { } -//---------------------------------------------------------------------------- cmGeneratedFileStream::cmGeneratedFileStream(const char* name, bool quiet): cmGeneratedFileStreamBase(name), Stream(TempName.c_str()) @@ -37,7 +35,6 @@ cmGeneratedFileStream::cmGeneratedFileStream(const char* name, bool quiet): } } -//---------------------------------------------------------------------------- cmGeneratedFileStream::~cmGeneratedFileStream() { // This is the first destructor called. Check the status of the @@ -48,7 +45,6 @@ cmGeneratedFileStream::~cmGeneratedFileStream() this->Okay = (*this)?true:false; } -//---------------------------------------------------------------------------- cmGeneratedFileStream& cmGeneratedFileStream::Open(const char* name, bool quiet, bool binaryFlag) { @@ -76,7 +72,6 @@ cmGeneratedFileStream::Open(const char* name, bool quiet, bool binaryFlag) return *this; } -//---------------------------------------------------------------------------- bool cmGeneratedFileStream::Close() { @@ -90,25 +85,21 @@ cmGeneratedFileStream::Close() return this->cmGeneratedFileStreamBase::Close(); } -//---------------------------------------------------------------------------- void cmGeneratedFileStream::SetCopyIfDifferent(bool copy_if_different) { this->CopyIfDifferent = copy_if_different; } -//---------------------------------------------------------------------------- void cmGeneratedFileStream::SetCompression(bool compression) { this->Compress = compression; } -//---------------------------------------------------------------------------- void cmGeneratedFileStream::SetCompressionExtraExtension(bool ext) { this->CompressExtraExtension = ext; } -//---------------------------------------------------------------------------- cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(): Name(), TempName(), @@ -119,7 +110,6 @@ cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(): { } -//---------------------------------------------------------------------------- cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(const char* name): Name(), TempName(), @@ -131,13 +121,11 @@ cmGeneratedFileStreamBase::cmGeneratedFileStreamBase(const char* name): this->Open(name); } -//---------------------------------------------------------------------------- cmGeneratedFileStreamBase::~cmGeneratedFileStreamBase() { this->Close(); } -//---------------------------------------------------------------------------- void cmGeneratedFileStreamBase::Open(const char* name) { // Save the original name of the file. @@ -158,7 +146,6 @@ void cmGeneratedFileStreamBase::Open(const char* name) cmSystemTools::MakeDirectory(dir.c_str()); } -//---------------------------------------------------------------------------- bool cmGeneratedFileStreamBase::Close() { bool replaced = false; @@ -203,7 +190,6 @@ bool cmGeneratedFileStreamBase::Close() return replaced; } -//---------------------------------------------------------------------------- #ifdef CMAKE_BUILD_WITH_CMAKE int cmGeneratedFileStreamBase::CompressFile(const char* oldname, const char* newname) @@ -241,14 +227,12 @@ int cmGeneratedFileStreamBase::CompressFile(const char*, const char*) } #endif -//---------------------------------------------------------------------------- int cmGeneratedFileStreamBase::RenameFile(const char* oldname, const char* newname) { return cmSystemTools::RenameFile(oldname, newname); } -//---------------------------------------------------------------------------- void cmGeneratedFileStream::SetName(const std::string& fname) { this->Name = fname; diff --git a/Source/cmGeneratedFileStream.h b/Source/cmGeneratedFileStream.h index 8df3e1a..cb397c1 100644 --- a/Source/cmGeneratedFileStream.h +++ b/Source/cmGeneratedFileStream.h @@ -13,6 +13,7 @@ #define cmGeneratedFileStream_h #include "cmStandardIncludes.h" + #include <cmsys/FStream.hxx> // This is the first base class of cmGeneratedFileStream. It will be diff --git a/Source/cmGeneratorExpression.cxx b/Source/cmGeneratorExpression.cxx index 6796a01..0566662 100644 --- a/Source/cmGeneratorExpression.cxx +++ b/Source/cmGeneratorExpression.cxx @@ -15,19 +15,17 @@ #include "cmAlgorithms.h" #include "cmSystemTools.h" +#include "cmGeneratorExpressionDAGChecker.h" #include "cmGeneratorExpressionEvaluator.h" #include "cmGeneratorExpressionLexer.h" #include "cmGeneratorExpressionParser.h" -#include "cmGeneratorExpressionDAGChecker.h" -//---------------------------------------------------------------------------- cmGeneratorExpression::cmGeneratorExpression( const cmListFileBacktrace& backtrace): Backtrace(backtrace) { } -//---------------------------------------------------------------------------- cmsys::auto_ptr<cmCompiledGeneratorExpression> cmGeneratorExpression::Parse(std::string const& input) { @@ -35,7 +33,6 @@ cmGeneratorExpression::Parse(std::string const& input) new cmCompiledGeneratorExpression(this->Backtrace, input)); } -//---------------------------------------------------------------------------- cmsys::auto_ptr<cmCompiledGeneratorExpression> cmGeneratorExpression::Parse(const char* input) { @@ -46,7 +43,6 @@ cmGeneratorExpression::~cmGeneratorExpression() { } -//---------------------------------------------------------------------------- const char *cmCompiledGeneratorExpression::Evaluate(cmLocalGenerator* lg, const std::string& config, bool quiet, const cmGeneratorTarget* headTarget, @@ -62,7 +58,6 @@ const char *cmCompiledGeneratorExpression::Evaluate(cmLocalGenerator* lg, language); } -//---------------------------------------------------------------------------- const char *cmCompiledGeneratorExpression::Evaluate( cmLocalGenerator* lg, const std::string& config, bool quiet, const cmGeneratorTarget* headTarget, @@ -78,7 +73,6 @@ const char *cmCompiledGeneratorExpression::Evaluate( return this->EvaluateWithContext(context, dagChecker); } -//---------------------------------------------------------------------------- const char* cmCompiledGeneratorExpression::EvaluateWithContext( cmGeneratorExpressionContext& context, cmGeneratorExpressionDAGChecker *dagChecker) const @@ -144,13 +138,11 @@ cmCompiledGeneratorExpression::cmCompiledGeneratorExpression( } -//---------------------------------------------------------------------------- cmCompiledGeneratorExpression::~cmCompiledGeneratorExpression() { cmDeleteAll(this->Evaluators); } -//---------------------------------------------------------------------------- std::string cmGeneratorExpression::StripEmptyListElements( const std::string &input) { @@ -190,7 +182,6 @@ std::string cmGeneratorExpression::StripEmptyListElements( return result; } -//---------------------------------------------------------------------------- static std::string stripAllGeneratorExpressions(const std::string &input) { std::string result; @@ -236,7 +227,6 @@ static std::string stripAllGeneratorExpressions(const std::string &input) return cmGeneratorExpression::StripEmptyListElements(result); } -//---------------------------------------------------------------------------- static void prefixItems(const std::string &content, std::string &result, const std::string &prefix) { @@ -257,7 +247,6 @@ static void prefixItems(const std::string &content, std::string &result, } } -//---------------------------------------------------------------------------- static std::string stripExportInterface(const std::string &input, cmGeneratorExpression::PreprocessContext context, bool resolveRelative) @@ -351,7 +340,6 @@ static std::string stripExportInterface(const std::string &input, return cmGeneratorExpression::StripEmptyListElements(result); } -//---------------------------------------------------------------------------- void cmGeneratorExpression::Split(const std::string &input, std::vector<std::string> &output) { @@ -420,7 +408,6 @@ void cmGeneratorExpression::Split(const std::string &input, } } -//---------------------------------------------------------------------------- std::string cmGeneratorExpression::Preprocess(const std::string &input, PreprocessContext context, bool resolveRelative) @@ -438,7 +425,6 @@ std::string cmGeneratorExpression::Preprocess(const std::string &input, return std::string(); } -//---------------------------------------------------------------------------- std::string::size_type cmGeneratorExpression::Find(const std::string &input) { const std::string::size_type openpos = input.find("$<"); @@ -450,7 +436,6 @@ std::string::size_type cmGeneratorExpression::Find(const std::string &input) return std::string::npos; } -//---------------------------------------------------------------------------- bool cmGeneratorExpression::IsValidTargetName(const std::string &input) { // The ':' is supported to allow use with IMPORTED targets. At least @@ -460,7 +445,6 @@ bool cmGeneratorExpression::IsValidTargetName(const std::string &input) return targetNameValidator.find(input); } -//---------------------------------------------------------------------------- void cmCompiledGeneratorExpression::GetMaxLanguageStandard( const cmGeneratorTarget* tgt, diff --git a/Source/cmGeneratorExpression.h b/Source/cmGeneratorExpression.h index efd381b..001f2df 100644 --- a/Source/cmGeneratorExpression.h +++ b/Source/cmGeneratorExpression.h @@ -14,6 +14,7 @@ #define cmGeneratorExpression_h #include "cmStandardIncludes.h" + #include "cmListFileCache.h" #include <cmsys/RegularExpression.hxx> diff --git a/Source/cmGeneratorExpressionContext.cxx b/Source/cmGeneratorExpressionContext.cxx index 5c9462f..b3bcb50 100644 --- a/Source/cmGeneratorExpressionContext.cxx +++ b/Source/cmGeneratorExpressionContext.cxx @@ -11,6 +11,7 @@ ============================================================================*/ #include "cmGeneratorExpressionContext.h" + #include "cmGeneratorTarget.h" cmGeneratorExpressionContext::cmGeneratorExpressionContext( diff --git a/Source/cmGeneratorExpressionContext.h b/Source/cmGeneratorExpressionContext.h index e802138..8228e89 100644 --- a/Source/cmGeneratorExpressionContext.h +++ b/Source/cmGeneratorExpressionContext.h @@ -14,14 +14,13 @@ #include "cmListFileCache.h" -#include <set> #include <map> +#include <set> #include <string> class cmGeneratorTarget; class cmLocalGenerator; -//---------------------------------------------------------------------------- struct cmGeneratorExpressionContext { cmGeneratorExpressionContext(cmLocalGenerator* lg, std::string const& config, diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx index c3b0272..17bafde 100644 --- a/Source/cmGeneratorExpressionDAGChecker.cxx +++ b/Source/cmGeneratorExpressionDAGChecker.cxx @@ -12,10 +12,9 @@ #include "cmGeneratorExpressionDAGChecker.h" -#include "cmLocalGenerator.h" #include "cmAlgorithms.h" +#include "cmLocalGenerator.h" -//---------------------------------------------------------------------------- cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( const cmListFileBacktrace &backtrace, const std::string &target, @@ -28,7 +27,6 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( Initialize(); } -//---------------------------------------------------------------------------- cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( const std::string &target, const std::string &property, @@ -40,7 +38,6 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker( Initialize(); } -//---------------------------------------------------------------------------- void cmGeneratorExpressionDAGChecker::Initialize() { @@ -78,14 +75,12 @@ cmGeneratorExpressionDAGChecker::Initialize() } } -//---------------------------------------------------------------------------- cmGeneratorExpressionDAGChecker::Result cmGeneratorExpressionDAGChecker::Check() const { return this->CheckResult; } -//---------------------------------------------------------------------------- void cmGeneratorExpressionDAGChecker::ReportError( cmGeneratorExpressionContext *context, const std::string &expr) @@ -118,9 +113,11 @@ void cmGeneratorExpressionDAGChecker::ReportError( { std::ostringstream e; + /* clang-format off */ e << "Error evaluating generator expression:\n" << " " << expr << "\n" << "Dependency loop found."; + /* clang-format on */ context->LG->GetCMakeInstance() ->IssueMessage(cmake::FATAL_ERROR, e.str(), context->Backtrace); @@ -142,7 +139,6 @@ void cmGeneratorExpressionDAGChecker::ReportError( } } -//---------------------------------------------------------------------------- cmGeneratorExpressionDAGChecker::Result cmGeneratorExpressionDAGChecker::CheckGraph() const { @@ -158,7 +154,6 @@ cmGeneratorExpressionDAGChecker::CheckGraph() const return DAG; } -//---------------------------------------------------------------------------- bool cmGeneratorExpressionDAGChecker::GetTransitivePropertiesOnly() { const cmGeneratorExpressionDAGChecker *top = this; @@ -172,7 +167,6 @@ bool cmGeneratorExpressionDAGChecker::GetTransitivePropertiesOnly() return top->TransitivePropertiesOnly; } -//---------------------------------------------------------------------------- bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries(const char *tgt) { const cmGeneratorExpressionDAGChecker *top = this; diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h index 10f9fa7..c6c8901 100644 --- a/Source/cmGeneratorExpressionDAGChecker.h +++ b/Source/cmGeneratorExpressionDAGChecker.h @@ -38,7 +38,6 @@ #define CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(F) \ CM_FOR_EACH_TRANSITIVE_PROPERTY_IMPL(F, CM_SELECT_SECOND) -//---------------------------------------------------------------------------- struct cmGeneratorExpressionDAGChecker { cmGeneratorExpressionDAGChecker(const cmListFileBacktrace &backtrace, diff --git a/Source/cmGeneratorExpressionEvaluationFile.cxx b/Source/cmGeneratorExpressionEvaluationFile.cxx index 4ac2a0d..75ddd28 100644 --- a/Source/cmGeneratorExpressionEvaluationFile.cxx +++ b/Source/cmGeneratorExpressionEvaluationFile.cxx @@ -12,16 +12,15 @@ #include "cmGeneratorExpressionEvaluationFile.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmGeneratedFileStream.h" #include <cmsys/FStream.hxx> #include <assert.h> -//---------------------------------------------------------------------------- cmGeneratorExpressionEvaluationFile::cmGeneratorExpressionEvaluationFile( const std::string &input, cmsys::auto_ptr<cmCompiledGeneratorExpression> outputFileExpr, @@ -34,7 +33,6 @@ cmGeneratorExpressionEvaluationFile::cmGeneratorExpressionEvaluationFile( { } -//---------------------------------------------------------------------------- void cmGeneratorExpressionEvaluationFile::Generate(cmLocalGenerator* lg, const std::string& config, const std::string& lang, @@ -99,7 +97,6 @@ void cmGeneratorExpressionEvaluationFile::Generate(cmLocalGenerator* lg, } } -//---------------------------------------------------------------------------- void cmGeneratorExpressionEvaluationFile::CreateOutputFile( cmLocalGenerator *lg, std::string const& config) { @@ -121,7 +118,6 @@ void cmGeneratorExpressionEvaluationFile::CreateOutputFile( } } -//---------------------------------------------------------------------------- void cmGeneratorExpressionEvaluationFile::Generate(cmLocalGenerator *lg) { mode_t perm = 0; diff --git a/Source/cmGeneratorExpressionEvaluationFile.h b/Source/cmGeneratorExpressionEvaluationFile.h index ad41274..51aa51b 100644 --- a/Source/cmGeneratorExpressionEvaluationFile.h +++ b/Source/cmGeneratorExpressionEvaluationFile.h @@ -12,15 +12,13 @@ #ifndef cmGeneratorExpressionEvaluationFile_h #define cmGeneratorExpressionEvaluationFile_h -#include "cmStandardIncludes.h" -#include <sys/types.h> -#include <cmsys/auto_ptr.hxx> - #include "cmGeneratorExpression.h" +#include <cmsys/auto_ptr.hxx> +#include <sys/types.h> + class cmLocalGenerator; -//---------------------------------------------------------------------------- class cmGeneratorExpressionEvaluationFile { public: diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx index af94bcc..5645e01 100644 --- a/Source/cmGeneratorExpressionEvaluator.cxx +++ b/Source/cmGeneratorExpressionEvaluator.cxx @@ -9,16 +9,16 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include "cmMakefile.h" - #include "cmGeneratorExpressionEvaluator.h" -#include "cmGeneratorExpressionParser.h" -#include "cmGeneratorExpressionDAGChecker.h" + +#include "cmAlgorithms.h" #include "cmGeneratorExpression.h" -#include "cmLocalGenerator.h" +#include "cmGeneratorExpressionDAGChecker.h" +#include "cmGeneratorExpressionParser.h" #include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmAlgorithms.h" #include <cmsys/String.h> @@ -27,7 +27,6 @@ #include "cmGeneratorExpressionNode.h" -//---------------------------------------------------------------------------- GeneratorExpressionContent::GeneratorExpressionContent( const char *startContent, size_t length) @@ -36,13 +35,11 @@ GeneratorExpressionContent::GeneratorExpressionContent( } -//---------------------------------------------------------------------------- std::string GeneratorExpressionContent::GetOriginalExpression() const { return std::string(this->StartContent, this->ContentLength); } -//---------------------------------------------------------------------------- std::string GeneratorExpressionContent::ProcessArbitraryContent( const cmGeneratorExpressionNode *node, const std::string &identifier, @@ -93,7 +90,6 @@ std::string GeneratorExpressionContent::ProcessArbitraryContent( return result; } -//---------------------------------------------------------------------------- std::string GeneratorExpressionContent::Evaluate( cmGeneratorExpressionContext *context, cmGeneratorExpressionDAGChecker *dagChecker) const @@ -154,7 +150,6 @@ std::string GeneratorExpressionContent::Evaluate( return node->Evaluate(parameters, context, this, dagChecker); } -//---------------------------------------------------------------------------- std::string GeneratorExpressionContent::EvaluateParameters( const cmGeneratorExpressionNode *node, const std::string &identifier, @@ -244,7 +239,6 @@ std::string GeneratorExpressionContent::EvaluateParameters( return std::string(); } -//---------------------------------------------------------------------------- GeneratorExpressionContent::~GeneratorExpressionContent() { cmDeleteAll(this->IdentifierChildren); diff --git a/Source/cmGeneratorExpressionEvaluator.h b/Source/cmGeneratorExpressionEvaluator.h index 407f83f..bce486b 100644 --- a/Source/cmGeneratorExpressionEvaluator.h +++ b/Source/cmGeneratorExpressionEvaluator.h @@ -12,16 +12,16 @@ #ifndef cmGeneratorExpressionEvaluator_h #define cmGeneratorExpressionEvaluator_h -#include "cmListFileCache.h" #include "cmGeneratorExpressionContext.h" -#include <vector> +#include "cmListFileCache.h" + #include <string> +#include <vector> struct cmGeneratorExpressionDAGChecker; struct cmGeneratorExpressionNode; -//---------------------------------------------------------------------------- struct cmGeneratorExpressionEvaluator { cmGeneratorExpressionEvaluator() {} @@ -77,7 +77,6 @@ private: size_t Length; }; -//---------------------------------------------------------------------------- struct GeneratorExpressionContent : public cmGeneratorExpressionEvaluator { GeneratorExpressionContent(const char *startContent, size_t length); diff --git a/Source/cmGeneratorExpressionLexer.cxx b/Source/cmGeneratorExpressionLexer.cxx index 1c83466..6a1ddf4 100644 --- a/Source/cmGeneratorExpressionLexer.cxx +++ b/Source/cmGeneratorExpressionLexer.cxx @@ -12,14 +12,12 @@ #include "cmGeneratorExpressionLexer.h" -//---------------------------------------------------------------------------- cmGeneratorExpressionLexer::cmGeneratorExpressionLexer() : SawBeginExpression(false), SawGeneratorExpression(false) { } -//---------------------------------------------------------------------------- static void InsertText(const char *upto, const char *c, std::vector<cmGeneratorExpressionToken> &result) { @@ -30,7 +28,6 @@ static void InsertText(const char *upto, const char *c, } } -//---------------------------------------------------------------------------- std::vector<cmGeneratorExpressionToken> cmGeneratorExpressionLexer::Tokenize(const std::string& input) { diff --git a/Source/cmGeneratorExpressionLexer.h b/Source/cmGeneratorExpressionLexer.h index 1e2e8c2..16f2794 100644 --- a/Source/cmGeneratorExpressionLexer.h +++ b/Source/cmGeneratorExpressionLexer.h @@ -16,7 +16,6 @@ #include <vector> -//---------------------------------------------------------------------------- struct cmGeneratorExpressionToken { cmGeneratorExpressionToken(unsigned type, const char *c, size_t l) diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index 32b2f82..7bd2b1c 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -11,12 +11,12 @@ ============================================================================*/ #include "cmGeneratorExpressionNode.h" -#include "cmGlobalGenerator.h" + #include "cmAlgorithms.h" -#include "cmOutputConverter.h" +#include "cmGlobalGenerator.h" #include "cmMakefile.h" +#include "cmOutputConverter.h" -//---------------------------------------------------------------------------- std::string cmGeneratorExpressionNode::EvaluateDependentExpression( std::string const& prop, cmLocalGenerator *lg, cmGeneratorExpressionContext *context, @@ -45,7 +45,6 @@ std::string cmGeneratorExpressionNode::EvaluateDependentExpression( return result; } -//---------------------------------------------------------------------------- static const struct ZeroNode : public cmGeneratorExpressionNode { ZeroNode() {} @@ -63,7 +62,6 @@ static const struct ZeroNode : public cmGeneratorExpressionNode } } zeroNode; -//---------------------------------------------------------------------------- static const struct OneNode : public cmGeneratorExpressionNode { OneNode() {} @@ -79,13 +77,10 @@ static const struct OneNode : public cmGeneratorExpressionNode } } oneNode; -//---------------------------------------------------------------------------- static const struct OneNode buildInterfaceNode; -//---------------------------------------------------------------------------- static const struct ZeroNode installInterfaceNode; -//---------------------------------------------------------------------------- #define BOOLEAN_OP_NODE(OPNAME, OP, SUCCESS_VALUE, FAILURE_VALUE) \ static const struct OP ## Node : public cmGeneratorExpressionNode \ { \ @@ -121,7 +116,6 @@ BOOLEAN_OP_NODE(orNode, OR, 0, 1) #undef BOOLEAN_OP_NODE -//---------------------------------------------------------------------------- static const struct NotNode : public cmGeneratorExpressionNode { NotNode() {} @@ -141,7 +135,6 @@ static const struct NotNode : public cmGeneratorExpressionNode } } notNode; -//---------------------------------------------------------------------------- static const struct BoolNode : public cmGeneratorExpressionNode { BoolNode() {} @@ -157,7 +150,6 @@ static const struct BoolNode : public cmGeneratorExpressionNode } } boolNode; -//---------------------------------------------------------------------------- static const struct StrEqualNode : public cmGeneratorExpressionNode { StrEqualNode() {} @@ -173,7 +165,6 @@ static const struct StrEqualNode : public cmGeneratorExpressionNode } } strEqualNode; -//---------------------------------------------------------------------------- static const struct EqualNode : public cmGeneratorExpressionNode { EqualNode() {} @@ -259,7 +250,6 @@ static const struct EqualNode : public cmGeneratorExpressionNode } } equalNode; -//---------------------------------------------------------------------------- static const struct LowerCaseNode : public cmGeneratorExpressionNode { LowerCaseNode() {} @@ -275,7 +265,6 @@ static const struct LowerCaseNode : public cmGeneratorExpressionNode } } lowerCaseNode; -//---------------------------------------------------------------------------- static const struct UpperCaseNode : public cmGeneratorExpressionNode { UpperCaseNode() {} @@ -291,7 +280,6 @@ static const struct UpperCaseNode : public cmGeneratorExpressionNode } } upperCaseNode; -//---------------------------------------------------------------------------- static const struct MakeCIdentifierNode : public cmGeneratorExpressionNode { MakeCIdentifierNode() {} @@ -307,7 +295,6 @@ static const struct MakeCIdentifierNode : public cmGeneratorExpressionNode } } makeCIdentifierNode; -//---------------------------------------------------------------------------- static const struct Angle_RNode : public cmGeneratorExpressionNode { Angle_RNode() {} @@ -323,7 +310,6 @@ static const struct Angle_RNode : public cmGeneratorExpressionNode } } angle_rNode; -//---------------------------------------------------------------------------- static const struct CommaNode : public cmGeneratorExpressionNode { CommaNode() {} @@ -339,7 +325,6 @@ static const struct CommaNode : public cmGeneratorExpressionNode } } commaNode; -//---------------------------------------------------------------------------- static const struct SemicolonNode : public cmGeneratorExpressionNode { SemicolonNode() {} @@ -355,7 +340,6 @@ static const struct SemicolonNode : public cmGeneratorExpressionNode } } semicolonNode; -//---------------------------------------------------------------------------- struct CompilerIdNode : public cmGeneratorExpressionNode { CompilerIdNode() {} @@ -416,7 +400,6 @@ struct CompilerIdNode : public cmGeneratorExpressionNode } }; -//---------------------------------------------------------------------------- static const struct CCompilerIdNode : public CompilerIdNode { CCompilerIdNode() {} @@ -438,7 +421,6 @@ static const struct CCompilerIdNode : public CompilerIdNode } } cCompilerIdNode; -//---------------------------------------------------------------------------- static const struct CXXCompilerIdNode : public CompilerIdNode { CXXCompilerIdNode() {} @@ -460,7 +442,6 @@ static const struct CXXCompilerIdNode : public CompilerIdNode } } cxxCompilerIdNode; -//---------------------------------------------------------------------------- struct CompilerVersionNode : public cmGeneratorExpressionNode { CompilerVersionNode() {} @@ -499,7 +480,6 @@ struct CompilerVersionNode : public cmGeneratorExpressionNode } }; -//---------------------------------------------------------------------------- static const struct CCompilerVersionNode : public CompilerVersionNode { CCompilerVersionNode() {} @@ -521,7 +501,6 @@ static const struct CCompilerVersionNode : public CompilerVersionNode } } cCompilerVersionNode; -//---------------------------------------------------------------------------- static const struct CxxCompilerVersionNode : public CompilerVersionNode { CxxCompilerVersionNode() {} @@ -544,7 +523,6 @@ static const struct CxxCompilerVersionNode : public CompilerVersionNode } cxxCompilerVersionNode; -//---------------------------------------------------------------------------- struct PlatformIdNode : public cmGeneratorExpressionNode { PlatformIdNode() {} @@ -576,7 +554,6 @@ struct PlatformIdNode : public cmGeneratorExpressionNode } } platformIdNode; -//---------------------------------------------------------------------------- static const struct VersionGreaterNode : public cmGeneratorExpressionNode { VersionGreaterNode() {} @@ -594,7 +571,6 @@ static const struct VersionGreaterNode : public cmGeneratorExpressionNode } } versionGreaterNode; -//---------------------------------------------------------------------------- static const struct VersionLessNode : public cmGeneratorExpressionNode { VersionLessNode() {} @@ -612,7 +588,6 @@ static const struct VersionLessNode : public cmGeneratorExpressionNode } } versionLessNode; -//---------------------------------------------------------------------------- static const struct VersionEqualNode : public cmGeneratorExpressionNode { VersionEqualNode() {} @@ -630,7 +605,6 @@ static const struct VersionEqualNode : public cmGeneratorExpressionNode } } versionEqualNode; -//---------------------------------------------------------------------------- static const struct LinkOnlyNode : public cmGeneratorExpressionNode { LinkOnlyNode() {} @@ -648,7 +622,6 @@ static const struct LinkOnlyNode : public cmGeneratorExpressionNode } } linkOnlyNode; -//---------------------------------------------------------------------------- static const struct ConfigurationNode : public cmGeneratorExpressionNode { ConfigurationNode() {} @@ -665,7 +638,6 @@ static const struct ConfigurationNode : public cmGeneratorExpressionNode } } configurationNode; -//---------------------------------------------------------------------------- static const struct ConfigurationTestNode : public cmGeneratorExpressionNode { ConfigurationTestNode() {} @@ -823,7 +795,6 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode #define TRANSITIVE_PROPERTY_NAME(PROPERTY) \ , "INTERFACE_" #PROPERTY -//---------------------------------------------------------------------------- static const char* targetPropertyTransitiveWhitelist[] = { 0 CM_FOR_EACH_TRANSITIVE_PROPERTY_NAME(TRANSITIVE_PROPERTY_NAME) @@ -872,7 +843,6 @@ getLinkedTargetsContent( return linkedTargetsContent; } -//---------------------------------------------------------------------------- static const struct TargetPropertyNode : public cmGeneratorExpressionNode { TargetPropertyNode() {} @@ -1225,7 +1195,6 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode } } targetPropertyNode; -//---------------------------------------------------------------------------- static const struct TargetNameNode : public cmGeneratorExpressionNode { TargetNameNode() {} @@ -1247,7 +1216,6 @@ static const struct TargetNameNode : public cmGeneratorExpressionNode } targetNameNode; -//---------------------------------------------------------------------------- static const struct TargetObjectsNode : public cmGeneratorExpressionNode { TargetObjectsNode() {} @@ -1323,7 +1291,6 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode } } targetObjectsNode; -//---------------------------------------------------------------------------- static const struct CompileFeaturesNode : public cmGeneratorExpressionNode { CompileFeaturesNode() {} @@ -1426,7 +1393,6 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode } } compileFeaturesNode; -//---------------------------------------------------------------------------- static const char* targetPolicyWhitelist[] = { 0 #define TARGET_POLICY_STRING(POLICY) \ @@ -1470,7 +1436,6 @@ cmPolicies::PolicyID policyForString(const char *policy_id) return cmPolicies::CMP0002; } -//---------------------------------------------------------------------------- static const struct TargetPolicyNode : public cmGeneratorExpressionNode { TargetPolicyNode() {} @@ -1532,7 +1497,6 @@ static const struct TargetPolicyNode : public cmGeneratorExpressionNode } targetPolicyNode; -//---------------------------------------------------------------------------- static const struct InstallPrefixNode : public cmGeneratorExpressionNode { InstallPrefixNode() {} @@ -1553,7 +1517,6 @@ static const struct InstallPrefixNode : public cmGeneratorExpressionNode } installPrefixNode; -//---------------------------------------------------------------------------- class ArtifactNameTag; class ArtifactLinkerTag; class ArtifactSonameTag; @@ -1562,7 +1525,6 @@ class ArtifactPdbTag; class ArtifactPathTag; class ArtifactDirTag; -//---------------------------------------------------------------------------- template<typename ArtifactT> struct TargetFilesystemArtifactResultCreator { @@ -1571,7 +1533,6 @@ struct TargetFilesystemArtifactResultCreator const GeneratorExpressionContent *content); }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultCreator<ArtifactSonameTag> { @@ -1601,7 +1562,6 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameTag> } }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultCreator<ArtifactPdbTag> { @@ -1646,7 +1606,6 @@ struct TargetFilesystemArtifactResultCreator<ArtifactPdbTag> } }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultCreator<ArtifactLinkerTag> { @@ -1667,7 +1626,6 @@ struct TargetFilesystemArtifactResultCreator<ArtifactLinkerTag> } }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultCreator<ArtifactNameTag> { @@ -1680,14 +1638,12 @@ struct TargetFilesystemArtifactResultCreator<ArtifactNameTag> }; -//---------------------------------------------------------------------------- template<typename ArtifactT> struct TargetFilesystemArtifactResultGetter { static std::string Get(const std::string &result); }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultGetter<ArtifactNameTag> { @@ -1695,7 +1651,6 @@ struct TargetFilesystemArtifactResultGetter<ArtifactNameTag> { return cmSystemTools::GetFilenameName(result); } }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultGetter<ArtifactDirTag> { @@ -1703,7 +1658,6 @@ struct TargetFilesystemArtifactResultGetter<ArtifactDirTag> { return cmSystemTools::GetFilenamePath(result); } }; -//---------------------------------------------------------------------------- template<> struct TargetFilesystemArtifactResultGetter<ArtifactPathTag> { @@ -1711,7 +1665,6 @@ struct TargetFilesystemArtifactResultGetter<ArtifactPathTag> { return result; } }; -//---------------------------------------------------------------------------- template<typename ArtifactT, typename ComponentT> struct TargetFilesystemArtifact : public cmGeneratorExpressionNode { @@ -1774,7 +1727,6 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode } }; -//---------------------------------------------------------------------------- template<typename ArtifactT> struct TargetFilesystemArtifactNodeGroup { @@ -1787,7 +1739,6 @@ struct TargetFilesystemArtifactNodeGroup TargetFilesystemArtifact<ArtifactT, ArtifactDirTag> FileDir; }; -//---------------------------------------------------------------------------- static const TargetFilesystemArtifactNodeGroup<ArtifactNameTag> targetNodeGroup; @@ -1800,7 +1751,6 @@ TargetFilesystemArtifactNodeGroup<ArtifactSonameTag> targetSoNameNodeGroup; static const TargetFilesystemArtifactNodeGroup<ArtifactPdbTag> targetPdbNodeGroup; -//---------------------------------------------------------------------------- static const struct ShellPathNode : public cmGeneratorExpressionNode { ShellPathNode() {} @@ -1821,7 +1771,6 @@ static const struct ShellPathNode : public cmGeneratorExpressionNode } } shellPathNode; -//---------------------------------------------------------------------------- const cmGeneratorExpressionNode* cmGeneratorExpressionNode::GetNode(const std::string &identifier) { @@ -1886,7 +1835,6 @@ cmGeneratorExpressionNode::GetNode(const std::string &identifier) return i->second; } -//---------------------------------------------------------------------------- void reportError(cmGeneratorExpressionContext *context, const std::string &expr, const std::string &result) { @@ -1897,9 +1845,11 @@ void reportError(cmGeneratorExpressionContext *context, } std::ostringstream e; + /* clang-format off */ e << "Error evaluating generator expression:\n" << " " << expr << "\n" << result; + /* clang-format on */ context->LG->GetCMakeInstance() ->IssueMessage(cmake::FATAL_ERROR, e.str(), context->Backtrace); diff --git a/Source/cmGeneratorExpressionNode.h b/Source/cmGeneratorExpressionNode.h index 854811b..725ff01 100644 --- a/Source/cmGeneratorExpressionNode.h +++ b/Source/cmGeneratorExpressionNode.h @@ -12,10 +12,11 @@ #ifndef cmGeneratorExpressionNode_h #define cmGeneratorExpressionNode_h +#include "cmGeneratorExpression.h" + +#include "cmGeneratorExpressionDAGChecker.h" #include "cmGeneratorExpressionEvaluator.h" #include "cmGeneratorExpressionParser.h" -#include "cmGeneratorExpressionDAGChecker.h" -#include "cmGeneratorExpression.h" #include "cmLocalGenerator.h" #include "cmSourceFile.h" @@ -26,7 +27,6 @@ #include "cmListFileCache.h" -//---------------------------------------------------------------------------- struct cmGeneratorExpressionNode { enum { @@ -62,7 +62,6 @@ struct cmGeneratorExpressionNode const std::string &identifier); }; -//---------------------------------------------------------------------------- void reportError(cmGeneratorExpressionContext *context, const std::string &expr, const std::string &result); diff --git a/Source/cmGeneratorExpressionParser.cxx b/Source/cmGeneratorExpressionParser.cxx index a17da8c..f59405c 100644 --- a/Source/cmGeneratorExpressionParser.cxx +++ b/Source/cmGeneratorExpressionParser.cxx @@ -16,14 +16,12 @@ #include "assert.h" -//---------------------------------------------------------------------------- cmGeneratorExpressionParser::cmGeneratorExpressionParser( const std::vector<cmGeneratorExpressionToken> &tokens) : Tokens(tokens), NestingLevel(0) { } -//---------------------------------------------------------------------------- void cmGeneratorExpressionParser::Parse( std::vector<cmGeneratorExpressionEvaluator*> &result) { @@ -35,7 +33,6 @@ void cmGeneratorExpressionParser::Parse( } } -//---------------------------------------------------------------------------- static void extendText(std::vector<cmGeneratorExpressionEvaluator*> &result, std::vector<cmGeneratorExpressionToken>::const_iterator it) { @@ -53,7 +50,6 @@ static void extendText(std::vector<cmGeneratorExpressionEvaluator*> &result, } } -//---------------------------------------------------------------------------- static void extendResult(std::vector<cmGeneratorExpressionEvaluator*> &result, const std::vector<cmGeneratorExpressionEvaluator*> &contents) { @@ -73,7 +69,6 @@ static void extendResult(std::vector<cmGeneratorExpressionEvaluator*> &result, } } -//---------------------------------------------------------------------------- void cmGeneratorExpressionParser::ParseGeneratorExpression( std::vector<cmGeneratorExpressionEvaluator*> &result) { @@ -245,7 +240,6 @@ void cmGeneratorExpressionParser::ParseGeneratorExpression( result.push_back(content); } -//---------------------------------------------------------------------------- void cmGeneratorExpressionParser::ParseContent( std::vector<cmGeneratorExpressionEvaluator*> &result) { diff --git a/Source/cmGeneratorExpressionParser.h b/Source/cmGeneratorExpressionParser.h index 5bd6777..3df7fed 100644 --- a/Source/cmGeneratorExpressionParser.h +++ b/Source/cmGeneratorExpressionParser.h @@ -21,7 +21,6 @@ struct cmGeneratorExpressionEvaluator; -//---------------------------------------------------------------------------- struct cmGeneratorExpressionParser { cmGeneratorExpressionParser( diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index d7c2782..4ffe2f0 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -11,21 +11,21 @@ ============================================================================*/ #include "cmGeneratorTarget.h" -#include "cmTarget.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" -#include "cmGlobalGenerator.h" -#include "cmSourceFile.h" -#include "cmGeneratorExpression.h" -#include "cmGeneratorExpressionDAGChecker.h" +#include "cmAlgorithms.h" #include "cmComputeLinkInformation.h" #include "cmCustomCommandGenerator.h" -#include "cmAlgorithms.h" +#include "cmGeneratorExpression.h" +#include "cmGeneratorExpressionDAGChecker.h" +#include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" +#include "cmSourceFile.h" +#include "cmTarget.h" #include <queue> -#include <errno.h> #include "assert.h" +#include <errno.h> #if defined(CMAKE_BUILD_WITH_CMAKE) #include <cmsys/hash_set.hxx> @@ -46,7 +46,6 @@ public: }; cmLinkImplItem cmGeneratorTarget::TargetPropertyEntry::NoLinkImplItem; -//---------------------------------------------------------------------------- void reportBadObjLib(std::vector<cmSourceFile*> const& badObjLib, cmGeneratorTarget const* target, cmake *cm) { @@ -140,7 +139,6 @@ struct DoAccept<true> } }; -//---------------------------------------------------------------------------- template<typename Tag, typename DataType = std::vector<cmSourceFile const*> > struct TagVisitor { @@ -261,7 +259,6 @@ void CreatePropertyGeneratorExpressions( } } -//---------------------------------------------------------------------------- cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg) : Target(t), SourceFileFlagsConstructed(false), @@ -328,19 +325,16 @@ cmLocalGenerator* cmGeneratorTarget::GetLocalGenerator() const return this->LocalGenerator; } -//---------------------------------------------------------------------------- cmState::TargetType cmGeneratorTarget::GetType() const { return this->Target->GetType(); } -//---------------------------------------------------------------------------- const std::string& cmGeneratorTarget::GetName() const { return this->Target->GetName(); } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetExportName() const { const char *exportName = this->GetProperty("EXPORT_NAME"); @@ -360,13 +354,11 @@ std::string cmGeneratorTarget::GetExportName() const return this->GetName(); } -//---------------------------------------------------------------------------- const char *cmGeneratorTarget::GetProperty(const std::string& prop) const { return this->Target->GetProperty(prop); } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::GetOutputTargetType(bool implib) const { switch(this->GetType()) @@ -422,7 +414,6 @@ const char* cmGeneratorTarget::GetOutputTargetType(bool implib) const return ""; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetOutputName(const std::string& config, bool implib) const { @@ -524,7 +515,6 @@ void cmGeneratorTarget::AddTracedSources(std::vector<std::string> const& srcs) } } -//---------------------------------------------------------------------------- std::vector<cmSourceFile*> const* cmGeneratorTarget::GetSourceDepends(cmSourceFile const* sf) const { @@ -588,7 +578,6 @@ static void handleSystemIncludesDep(cmLocalGenerator *lg, #define EMPTY #define COMMA , -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetObjectSources(std::vector<cmSourceFile const*> &data, @@ -631,7 +620,6 @@ void cmGeneratorTarget::ComputeObjectMapping() } } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::GetFeature(const std::string& feature, const std::string& config) const { @@ -652,27 +640,23 @@ const char* cmGeneratorTarget::GetFeature(const std::string& feature, return this->LocalGenerator->GetFeature(feature, config); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::GetFeatureAsBool(const std::string& feature, const std::string& config) const { return cmSystemTools::IsOn(this->GetFeature(feature, config)); } -//---------------------------------------------------------------------------- const std::string& cmGeneratorTarget::GetObjectName(cmSourceFile const* file) { this->ComputeObjectMapping(); return this->Objects[file]; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::AddExplicitObjectName(cmSourceFile const* sf) { this->ExplicitObjectName.insert(sf); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HasExplicitObjectName(cmSourceFile const* file) const { const_cast<cmGeneratorTarget*>(this)->ComputeObjectMapping(); @@ -681,7 +665,6 @@ bool cmGeneratorTarget::HasExplicitObjectName(cmSourceFile const* file) const return it != this->ExplicitObjectName.end(); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetIDLSources(std::vector<cmSourceFile const*>& data, const std::string& config) const @@ -689,7 +672,6 @@ void cmGeneratorTarget IMPLEMENT_VISIT(IDLSources); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetHeaderSources(std::vector<cmSourceFile const*>& data, @@ -698,7 +680,6 @@ cmGeneratorTarget IMPLEMENT_VISIT(HeaderSources); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetExtraSources(std::vector<cmSourceFile const*>& data, const std::string& config) const @@ -706,7 +687,6 @@ void cmGeneratorTarget IMPLEMENT_VISIT(ExtraSources); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetCustomCommands(std::vector<cmSourceFile const*>& data, @@ -715,7 +695,6 @@ cmGeneratorTarget IMPLEMENT_VISIT(CustomCommands); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetExternalObjects(std::vector<cmSourceFile const*>& data, @@ -724,7 +703,6 @@ cmGeneratorTarget IMPLEMENT_VISIT(ExternalObjects); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetExpectedResxHeaders(std::set<std::string>& srcs, const std::string& config) const @@ -734,7 +712,6 @@ cmGeneratorTarget::GetExpectedResxHeaders(std::set<std::string>& srcs, srcs = data.ExpectedResxHeaders; } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetResxSources(std::vector<cmSourceFile const*>& srcs, const std::string& config) const @@ -744,7 +721,6 @@ void cmGeneratorTarget srcs = data.ResxSources; } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetAppManifest(std::vector<cmSourceFile const*>& data, @@ -753,7 +729,6 @@ cmGeneratorTarget IMPLEMENT_VISIT(AppManifest); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetManifests(std::vector<cmSourceFile const*>& data, @@ -762,7 +737,6 @@ cmGeneratorTarget IMPLEMENT_VISIT(Manifests); } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetCertificates(std::vector<cmSourceFile const*>& data, @@ -771,7 +745,6 @@ cmGeneratorTarget IMPLEMENT_VISIT(Certificates); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetExpectedXamlHeaders(std::set<std::string>& headers, const std::string& config) const @@ -781,7 +754,6 @@ cmGeneratorTarget::GetExpectedXamlHeaders(std::set<std::string>& headers, headers = data.ExpectedXamlHeaders; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetExpectedXamlSources(std::set<std::string>& srcs, const std::string& config) const @@ -808,7 +780,6 @@ std::set<cmLinkItem> const& cmGeneratorTarget::GetUtilityItems() const return this->UtilityItems; } -//---------------------------------------------------------------------------- void cmGeneratorTarget ::GetXamlSources(std::vector<cmSourceFile const*>& srcs, const std::string& config) const @@ -818,7 +789,6 @@ void cmGeneratorTarget srcs = data.XamlSources; } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::GetLocation(const std::string& config) const { static std::string location; @@ -861,7 +831,6 @@ bool cmGeneratorTarget::IsImportedGloballyVisible() const return this->Target->IsImportedGloballyVisible(); } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::GetLocationForBuild() const { static std::string location; @@ -896,7 +865,6 @@ const char* cmGeneratorTarget::GetLocationForBuild() const } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir, const std::string& config) const { @@ -958,13 +926,11 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir, return std::binary_search(iter->second.begin(), iter->second.end(), dir); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::GetPropertyAsBool(const std::string& prop) const { return this->Target->GetPropertyAsBool(prop); } -//---------------------------------------------------------------------------- static void AddInterfaceEntries( cmGeneratorTarget const* thisTarget, std::string const& config, std::string const& prop, @@ -991,7 +957,6 @@ static void AddInterfaceEntries( } } -//---------------------------------------------------------------------------- static bool processSources(cmGeneratorTarget const* tgt, const std::vector<cmGeneratorTarget::TargetPropertyEntry*> &entries, std::vector<std::string> &srcs, @@ -1086,7 +1051,6 @@ static bool processSources(cmGeneratorTarget const* tgt, return contextDependent; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetSourceFiles(std::vector<std::string> &files, const std::string& config) const { @@ -1179,7 +1143,6 @@ void cmGeneratorTarget::GetSourceFiles(std::vector<std::string> &files, cmDeleteAll(linkInterfaceSourcesEntries); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files, const std::string& config) const { @@ -1219,7 +1182,6 @@ void cmGeneratorTarget::GetSourceFiles(std::vector<cmSourceFile*> &files, } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetCompilePDBName(const std::string& config) const { @@ -1247,7 +1209,6 @@ cmGeneratorTarget::GetCompilePDBName(const std::string& config) const return ""; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetCompilePDBPath(const std::string& config) const { @@ -1264,7 +1225,6 @@ cmGeneratorTarget::GetCompilePDBPath(const std::string& config) const return dir + name; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HasSOName(const std::string& config) const { // soname is supported only for shared libraries and modules, @@ -1274,7 +1234,6 @@ bool cmGeneratorTarget::HasSOName(const std::string& config) const this->Makefile->GetSONameFlag(this->GetLinkerLanguage(config))); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::NeedRelinkBeforeInstall(const std::string& config) const { @@ -1340,7 +1299,6 @@ cmGeneratorTarget::NeedRelinkBeforeInstall(const std::string& config) const || this->HaveInstallTreeRPATH(); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsChrpathUsed(const std::string& config) const { // Only certain target types have an rpath. @@ -1407,7 +1365,6 @@ bool cmGeneratorTarget::IsChrpathUsed(const std::string& config) const return false; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsImportedSharedLibWithoutSOName( const std::string& config) const { @@ -1422,7 +1379,6 @@ bool cmGeneratorTarget::IsImportedSharedLibWithoutSOName( return false; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HasMacOSXRpathInstallNameDir( const std::string& config) const { @@ -1506,7 +1462,6 @@ bool cmGeneratorTarget::HasMacOSXRpathInstallNameDir( return true; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::MacOSXRpathInstallNameDirDefault() const { // we can't do rpaths when unsupported @@ -1537,7 +1492,6 @@ bool cmGeneratorTarget::MacOSXRpathInstallNameDirDefault() const return false; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetSOName(const std::string& config) const { if(this->IsImported()) @@ -1582,7 +1536,6 @@ std::string cmGeneratorTarget::GetSOName(const std::string& config) const } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetAppBundleDirectory(const std::string& config, bool contentOnly) const @@ -1598,7 +1551,6 @@ cmGeneratorTarget::GetAppBundleDirectory(const std::string& config, return fpath; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsBundleOnApple() const { return this->IsFrameworkOnApple() @@ -1606,7 +1558,6 @@ bool cmGeneratorTarget::IsBundleOnApple() const || this->IsCFBundleOnApple(); } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetCFBundleDirectory(const std::string& config, bool contentOnly) const { @@ -1635,7 +1586,6 @@ std::string cmGeneratorTarget::GetCFBundleDirectory(const std::string& config, return fpath; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetFrameworkDirectory(const std::string& config, bool rootDir) const @@ -1651,7 +1601,6 @@ cmGeneratorTarget::GetFrameworkDirectory(const std::string& config, return fpath; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetFullName(const std::string& config, bool implib) const { @@ -1665,7 +1614,6 @@ cmGeneratorTarget::GetFullName(const std::string& config, bool implib) const } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetInstallNameDirForBuildTree( const std::string& config) const @@ -1700,7 +1648,6 @@ cmGeneratorTarget::GetInstallNameDirForBuildTree( } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetInstallNameDirForInstallTree() const { if(this->Makefile->IsOn("CMAKE_PLATFORM_HAS_INSTALLNAME")) @@ -1753,7 +1700,6 @@ cmGeneratorTarget::GetUtilityBacktrace(const std::string& u) const return this->Target->GetUtilityBacktrace(u); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HaveWellDefinedOutputFiles() const { return @@ -1763,7 +1709,6 @@ bool cmGeneratorTarget::HaveWellDefinedOutputFiles() const this->GetType() == cmState::EXECUTABLE; } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::GetExportMacro() const { // Define the symbol for targets that export symbols. @@ -1789,7 +1734,6 @@ const char* cmGeneratorTarget::GetExportMacro() const } } -//---------------------------------------------------------------------------- class cmTargetCollectLinkLanguages { public: @@ -1869,7 +1813,6 @@ private: std::set<cmGeneratorTarget const*> Visited; }; -//---------------------------------------------------------------------------- cmGeneratorTarget::LinkClosure const* cmGeneratorTarget::GetLinkClosure(const std::string& config) const { @@ -1886,7 +1829,6 @@ cmGeneratorTarget::GetLinkClosure(const std::string& config) const return &i->second; } -//---------------------------------------------------------------------------- class cmTargetSelectLinker { int Preference; @@ -1938,7 +1880,6 @@ public: } }; -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeLinkClosure(const std::string& config, LinkClosure& lc) const { @@ -2004,7 +1945,6 @@ void cmGeneratorTarget::ComputeLinkClosure(const std::string& config, } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetFullNameComponents(std::string& prefix, std::string& base, std::string& suffix, @@ -2014,7 +1954,6 @@ void cmGeneratorTarget::GetFullNameComponents(std::string& prefix, this->GetFullNameInternal(config, implib, prefix, base, suffix); } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::BuildMacContentDirectory(const std::string& base, const std::string& config, @@ -2036,7 +1975,6 @@ cmGeneratorTarget::BuildMacContentDirectory(const std::string& base, return fpath; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetMacContentDirectory(const std::string& config, bool implib) const @@ -2056,7 +1994,6 @@ cmGeneratorTarget::GetMacContentDirectory(const std::string& config, } -//---------------------------------------------------------------------------- cmGeneratorTarget::CompileInfo const* cmGeneratorTarget::GetCompileInfo( const std::string& config) const { @@ -2094,7 +2031,6 @@ cmGeneratorTarget::CompileInfo const* cmGeneratorTarget::GetCompileInfo( return &i->second; } -//---------------------------------------------------------------------------- cmSourceFile const* cmGeneratorTarget::GetModuleDefinitionFile(const std::string& config) const { @@ -2114,7 +2050,6 @@ bool cmGeneratorTarget::IsDLLPlatform() const return this->DLLPlatform; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs, const std::string &config) const @@ -2154,7 +2089,6 @@ cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs, } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetAutoUicOptions(std::vector<std::string> &result, const std::string& config) const { @@ -2179,7 +2113,6 @@ void cmGeneratorTarget::GetAutoUicOptions(std::vector<std::string> &result, result); } -//---------------------------------------------------------------------------- void processILibs(const std::string& config, cmGeneratorTarget const* headTarget, cmLinkItem const& item, @@ -2203,7 +2136,6 @@ void processILibs(const std::string& config, } } -//---------------------------------------------------------------------------- const std::vector<const cmGeneratorTarget*>& cmGeneratorTarget::GetLinkImplementationClosure( const std::string& config) const @@ -2230,7 +2162,6 @@ cmGeneratorTarget::GetLinkImplementationClosure( return tgts; } -//---------------------------------------------------------------------------- class cmTargetTraceDependencies { public: @@ -2260,7 +2191,6 @@ private: std::set<std::string>& emitted); }; -//---------------------------------------------------------------------------- cmTargetTraceDependencies ::cmTargetTraceDependencies(cmGeneratorTarget* target): GeneratorTarget(target) @@ -2319,7 +2249,6 @@ cmTargetTraceDependencies this->GeneratorTarget->GetPostBuildCommands()); } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies::Trace() { // Process one dependency at a time until the queue is empty. @@ -2363,7 +2292,6 @@ void cmTargetTraceDependencies::Trace() this->GeneratorTarget->AddTracedSources(this->NewSources); } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies::QueueSource(cmSourceFile* sf) { if(this->SourcesQueued.insert(sf).second) @@ -2375,7 +2303,6 @@ void cmTargetTraceDependencies::QueueSource(cmSourceFile* sf) } } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies::FollowName(std::string const& name) { NameMapType::iterator i = this->NameMap.find(name); @@ -2397,7 +2324,6 @@ void cmTargetTraceDependencies::FollowName(std::string const& name) } } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies::FollowNames(std::vector<std::string> const& names) { @@ -2408,7 +2334,6 @@ cmTargetTraceDependencies::FollowNames(std::vector<std::string> const& names) } } -//---------------------------------------------------------------------------- bool cmTargetTraceDependencies::IsUtility(std::string const& dep) { // Dependencies on targets (utilities) are supposed to be named by @@ -2463,7 +2388,6 @@ bool cmTargetTraceDependencies::IsUtility(std::string const& dep) return false; } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies ::CheckCustomCommand(cmCustomCommand const& cc) @@ -2526,7 +2450,6 @@ cmTargetTraceDependencies } } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies::FollowCommandDepends(cmCustomCommand const& cc, const std::string& config, std::set<std::string>& emitted) @@ -2552,7 +2475,6 @@ void cmTargetTraceDependencies::FollowCommandDepends(cmCustomCommand const& cc, } } -//---------------------------------------------------------------------------- void cmTargetTraceDependencies ::CheckCustomCommands(const std::vector<cmCustomCommand>& commands) @@ -2564,7 +2486,6 @@ cmTargetTraceDependencies } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::TraceDependencies() { // CMake-generated targets have no dependencies to trace. Normally tracing @@ -2591,7 +2512,6 @@ cmGeneratorTarget::GetCompilePDBDirectory(const std::string& config) const return ""; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetAppleArchs(const std::string& config, std::vector<std::string>& archVec) const { @@ -2612,7 +2532,6 @@ void cmGeneratorTarget::GetAppleArchs(const std::string& config, } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetCreateRuleVariable(std::string const& lang, std::string const& config) const @@ -2644,7 +2563,6 @@ cmGeneratorTarget::GetCreateRuleVariable(std::string const& lang, } return ""; } -//---------------------------------------------------------------------------- static void processIncludeDirectories(cmGeneratorTarget const* tgt, const std::vector<cmGeneratorTarget::TargetPropertyEntry*> &entries, std::vector<std::string> &includes, @@ -2693,6 +2611,7 @@ static void processIncludeDirectories(cmGeneratorTarget const* tgt, break; } } + /* clang-format off */ e << "Imported target \"" << targetName << "\" includes " "non-existent path\n \"" << *li << "\"\nin its " "INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:\n" @@ -2702,6 +2621,7 @@ static void processIncludeDirectories(cmGeneratorTarget const* tgt, "successfully.\n" "* The installation package was faulty and references files it " "does not provide.\n"; + /* clang-format on */ tgt->GetLocalGenerator()->IssueMessage(messageType, e.str()); return; } @@ -2713,9 +2633,11 @@ static void processIncludeDirectories(cmGeneratorTarget const* tgt, cmake::MessageType messageType = cmake::FATAL_ERROR; if (!targetName.empty()) { + /* clang-format off */ e << "Target \"" << targetName << "\" contains relative " "path in its INTERFACE_INCLUDE_DIRECTORIES:\n" " \"" << *li << "\""; + /* clang-format on */ } else { @@ -2773,7 +2695,6 @@ static void processIncludeDirectories(cmGeneratorTarget const* tgt, } } -//---------------------------------------------------------------------------- std::vector<std::string> cmGeneratorTarget::GetIncludeDirectories(const std::string& config, const std::string& lang) const @@ -2859,7 +2780,6 @@ cmGeneratorTarget::GetIncludeDirectories(const std::string& config, return includes; } -//---------------------------------------------------------------------------- static void processCompileOptionsInternal(cmGeneratorTarget const* tgt, const std::vector<cmGeneratorTarget::TargetPropertyEntry*> &entries, std::vector<std::string> &options, @@ -2906,7 +2826,6 @@ static void processCompileOptionsInternal(cmGeneratorTarget const* tgt, } } -//---------------------------------------------------------------------------- static void processCompileOptions(cmGeneratorTarget const* tgt, const std::vector<cmGeneratorTarget::TargetPropertyEntry*> &entries, std::vector<std::string> &options, @@ -2920,7 +2839,6 @@ static void processCompileOptions(cmGeneratorTarget const* tgt, language); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetCompileOptions(std::vector<std::string> &result, const std::string& config, const std::string& language) const @@ -2977,7 +2895,6 @@ void cmGeneratorTarget::GetCompileOptions(std::vector<std::string> &result, cmDeleteAll(linkInterfaceCompileOptionsEntries); } -//---------------------------------------------------------------------------- static void processCompileFeatures(cmGeneratorTarget const* tgt, const std::vector<cmGeneratorTarget::TargetPropertyEntry*> &entries, std::vector<std::string> &options, @@ -2990,7 +2907,6 @@ static void processCompileFeatures(cmGeneratorTarget const* tgt, std::string()); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetCompileFeatures(std::vector<std::string> &result, const std::string& config) const { @@ -3044,7 +2960,6 @@ void cmGeneratorTarget::GetCompileFeatures(std::vector<std::string> &result, cmDeleteAll(linkInterfaceCompileFeaturesEntries); } -//---------------------------------------------------------------------------- static void processCompileDefinitions(cmGeneratorTarget const* tgt, const std::vector<cmGeneratorTarget::TargetPropertyEntry*> &entries, std::vector<std::string> &options, @@ -3058,7 +2973,6 @@ static void processCompileDefinitions(cmGeneratorTarget const* tgt, "definitions", language); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetCompileDefinitions(std::vector<std::string> &list, const std::string& config, const std::string& language) const @@ -3146,7 +3060,6 @@ void cmGeneratorTarget::GetCompileDefinitions(std::vector<std::string> &list, cmDeleteAll(linkInterfaceCompileDefinitionsEntries); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeTargetManifest( const std::string& config) const { @@ -3220,7 +3133,6 @@ void cmGeneratorTarget::ComputeTargetManifest( } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetFullPath(const std::string& config, bool implib, bool realname) const { @@ -3262,7 +3174,6 @@ std::string cmGeneratorTarget::NormalGetFullPath(const std::string& config, return fpath; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::NormalGetRealName(const std::string& config) const { @@ -3300,7 +3211,6 @@ cmGeneratorTarget::NormalGetRealName(const std::string& config) const } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetLibraryNames(std::string& name, std::string& soName, std::string& realName, @@ -3391,7 +3301,6 @@ void cmGeneratorTarget::GetLibraryNames(std::string& name, pdbName = this->GetPDBName(config); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetExecutableNames(std::string& name, std::string& realName, std::string& impName, @@ -3453,7 +3362,6 @@ void cmGeneratorTarget::GetExecutableNames(std::string& name, pdbName = this->GetPDBName(config); } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetFullNameInternal(const std::string& config, bool implib) const { @@ -3464,7 +3372,6 @@ std::string cmGeneratorTarget::GetFullNameInternal(const std::string& config, return prefix+base+suffix; } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::ImportedGetLocation(const std::string& config) const { @@ -3474,7 +3381,6 @@ cmGeneratorTarget::ImportedGetLocation(const std::string& config) const return location.c_str(); } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetFullNameImported(const std::string& config, bool implib) const { @@ -3482,7 +3388,6 @@ std::string cmGeneratorTarget::GetFullNameImported(const std::string& config, this->Target->ImportedGetFullPath(config, implib)); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetFullNameInternal(const std::string& config, bool implib, std::string& outPrefix, @@ -3614,14 +3519,12 @@ void cmGeneratorTarget::GetFullNameInternal(const std::string& config, } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetLinkerLanguage(const std::string& config) const { return this->GetLinkClosure(config)->LinkerLanguage; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetPDBName(const std::string& config) const { std::string prefix; @@ -3665,7 +3568,6 @@ bool cmGeneratorTarget::StrictTargetComparison::operator()( return nameResult < 0; } -//---------------------------------------------------------------------------- struct cmGeneratorTarget::SourceFileFlags cmGeneratorTarget::GetTargetSourceFileFlags(const cmSourceFile* sf) const { @@ -3697,7 +3599,6 @@ cmGeneratorTarget::GetTargetSourceFileFlags(const cmSourceFile* sf) const return flags; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ConstructSourceFileFlags() const { if(this->SourceFileFlagsConstructed) @@ -3763,7 +3664,6 @@ void cmGeneratorTarget::ConstructSourceFileFlags() const } } -//---------------------------------------------------------------------------- const cmGeneratorTarget::CompatibleInterfacesBase& cmGeneratorTarget::GetCompatibleInterfaces(std::string const& config) const { @@ -3796,7 +3696,6 @@ cmGeneratorTarget::GetCompatibleInterfaces(std::string const& config) const return compat; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsLinkInterfaceDependentBoolProperty( const std::string &p, const std::string& config) const { @@ -3808,7 +3707,6 @@ bool cmGeneratorTarget::IsLinkInterfaceDependentBoolProperty( return this->GetCompatibleInterfaces(config).PropsBool.count(p) > 0; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsLinkInterfaceDependentStringProperty( const std::string &p, const std::string& config) const { @@ -3820,7 +3718,6 @@ bool cmGeneratorTarget::IsLinkInterfaceDependentStringProperty( return this->GetCompatibleInterfaces(config).PropsString.count(p) > 0; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsLinkInterfaceDependentNumberMinProperty( const std::string &p, const std::string& config) const { @@ -3832,7 +3729,6 @@ bool cmGeneratorTarget::IsLinkInterfaceDependentNumberMinProperty( return this->GetCompatibleInterfaces(config).PropsNumberMin.count(p) > 0; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsLinkInterfaceDependentNumberMaxProperty( const std::string &p, const std::string& config) const { @@ -3891,7 +3787,6 @@ const char * getLinkInterfaceDependentProperty(cmGeneratorTarget const* tgt, return 0; } -//---------------------------------------------------------------------------- template<typename PropertyType> void checkPropertyConsistency(cmGeneratorTarget const* depender, cmGeneratorTarget const* dependee, @@ -3985,7 +3880,6 @@ static std::string intersect(const std::set<std::string> &s1, return intersect(s2, s3, s4); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::CheckPropertyCompatibility( cmComputeLinkInformation *info, const std::string& config) const { @@ -4086,7 +3980,6 @@ void cmGeneratorTarget::CheckPropertyCompatibility( } } -//---------------------------------------------------------------------------- std::string compatibilityType(CompatibleType t) { switch(t) @@ -4104,7 +3997,6 @@ std::string compatibilityType(CompatibleType t) return ""; } -//---------------------------------------------------------------------------- std::string compatibilityAgree(CompatibleType t, bool dominant) { switch(t) @@ -4120,12 +4012,10 @@ std::string compatibilityAgree(CompatibleType t, bool dominant) return ""; } -//---------------------------------------------------------------------------- template<typename PropertyType> PropertyType getTypedProperty(cmGeneratorTarget const* tgt, const std::string& prop); -//---------------------------------------------------------------------------- template<> bool getTypedProperty<bool>(cmGeneratorTarget const* tgt, const std::string& prop) @@ -4133,7 +4023,6 @@ bool getTypedProperty<bool>(cmGeneratorTarget const* tgt, return tgt->GetPropertyAsBool(prop); } -//---------------------------------------------------------------------------- template<> const char *getTypedProperty<const char *>(cmGeneratorTarget const* tgt, const std::string& prop) @@ -4167,13 +4056,11 @@ const char* impliedValue<const char*>(const char*) return ""; } -//---------------------------------------------------------------------------- template<typename PropertyType> std::pair<bool, PropertyType> consistentProperty(PropertyType lhs, PropertyType rhs, CompatibleType t); -//---------------------------------------------------------------------------- template<> std::pair<bool, bool> consistentProperty(bool lhs, bool rhs, CompatibleType) @@ -4181,7 +4068,6 @@ std::pair<bool, bool> consistentProperty(bool lhs, bool rhs, return std::make_pair(lhs == rhs, lhs); } -//---------------------------------------------------------------------------- std::pair<bool, const char*> consistentStringProperty(const char *lhs, const char *rhs) { @@ -4189,7 +4075,6 @@ std::pair<bool, const char*> consistentStringProperty(const char *lhs, return std::make_pair(b, b ? lhs : 0); } -//---------------------------------------------------------------------------- std::pair<bool, const char*> consistentNumberProperty(const char *lhs, const char *rhs, CompatibleType t) @@ -4220,7 +4105,6 @@ std::pair<bool, const char*> consistentNumberProperty(const char *lhs, } } -//---------------------------------------------------------------------------- template<> std::pair<bool, const char*> consistentProperty(const char *lhs, const char *rhs, @@ -4256,7 +4140,6 @@ std::pair<bool, const char*> consistentProperty(const char *lhs, return std::pair<bool, const char*>(false, null_ptr); } -//---------------------------------------------------------------------------- template<typename PropertyType> PropertyType checkInterfacePropertyCompatibility(cmGeneratorTarget const* tgt, const std::string &p, @@ -4446,7 +4329,6 @@ PropertyType checkInterfacePropertyCompatibility(cmGeneratorTarget const* tgt, return propContent; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::GetLinkInterfaceDependentBoolProperty( const std::string &p, const std::string& config) const { @@ -4455,7 +4337,6 @@ bool cmGeneratorTarget::GetLinkInterfaceDependentBoolProperty( BoolType, 0); } -//---------------------------------------------------------------------------- const char* cmGeneratorTarget::GetLinkInterfaceDependentStringProperty( const std::string &p, const std::string& config) const @@ -4467,7 +4348,6 @@ const char* cmGeneratorTarget::GetLinkInterfaceDependentStringProperty( StringType, 0); } -//---------------------------------------------------------------------------- const char * cmGeneratorTarget::GetLinkInterfaceDependentNumberMinProperty( const std::string &p, const std::string& config) const @@ -4479,7 +4359,6 @@ const char * cmGeneratorTarget::GetLinkInterfaceDependentNumberMinProperty( NumberMinType, 0); } -//---------------------------------------------------------------------------- const char * cmGeneratorTarget::GetLinkInterfaceDependentNumberMaxProperty( const std::string &p, const std::string& config) const @@ -4491,7 +4370,6 @@ const char * cmGeneratorTarget::GetLinkInterfaceDependentNumberMaxProperty( NumberMaxType, 0); } -//---------------------------------------------------------------------------- cmComputeLinkInformation* cmGeneratorTarget::GetLinkInformation(const std::string& config) const { @@ -4522,14 +4400,12 @@ cmGeneratorTarget::GetLinkInformation(const std::string& config) const return i->second; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetTargetVersion(int& major, int& minor) const { int patch; this->GetTargetVersion(false, major, minor, patch); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetTargetVersion(bool soversion, int& major, int& minor, int& patch) const { @@ -4560,7 +4436,6 @@ void cmGeneratorTarget::GetTargetVersion(bool soversion, } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetFrameworkVersion() const { assert(this->GetType() != cmState::INTERFACE_LIBRARY); @@ -4579,7 +4454,6 @@ std::string cmGeneratorTarget::GetFrameworkVersion() const } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeVersionedName(std::string& vName, std::string const& prefix, std::string const& base, @@ -4609,7 +4483,6 @@ std::vector<std::string> cmGeneratorTarget::GetPropertyKeys() const return props; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ReportPropertyOrigin(const std::string &p, const std::string &result, @@ -4649,7 +4522,6 @@ cmGeneratorTarget::ReportPropertyOrigin(const std::string &p, this->LocalGenerator->GetCMakeInstance()->IssueMessage(cmake::LOG, areport); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::LookupLinkItems(std::vector<std::string> const& names, std::vector<cmLinkItem>& items) const { @@ -4665,7 +4537,6 @@ void cmGeneratorTarget::LookupLinkItems(std::vector<std::string> const& names, } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ExpandLinkItems(std::string const& prop, std::string const& value, std::string const& config, @@ -4694,7 +4565,6 @@ void cmGeneratorTarget::ExpandLinkItems(std::string const& prop, hadHeadSensitiveCondition = cge->GetHadHeadSensitiveCondition(); } -//---------------------------------------------------------------------------- cmLinkInterface const* cmGeneratorTarget::GetLinkInterface(const std::string& config, cmGeneratorTarget const* head) const @@ -4743,7 +4613,6 @@ cmGeneratorTarget::GetLinkInterface(const std::string& config, return iface.Exists? &iface : 0; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeLinkInterface(const std::string& config, cmOptionalLinkInterface &iface, cmGeneratorTarget const* headTarget) const @@ -4841,7 +4710,6 @@ void cmGeneratorTarget::ComputeLinkInterface(const std::string& config, } } -//---------------------------------------------------------------------------- const cmLinkInterfaceLibraries * cmGeneratorTarget::GetLinkInterfaceLibraries(const std::string& config, cmGeneratorTarget const* head, @@ -4887,7 +4755,6 @@ cmGeneratorTarget::GetLinkInterfaceLibraries(const std::string& config, return iface.Exists? &iface : 0; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetDirectory(const std::string& config, bool implib) const { @@ -4906,7 +4773,6 @@ std::string cmGeneratorTarget::GetDirectory(const std::string& config, return ""; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::UsesDefaultOutputDir(const std::string& config, bool implib) const { @@ -4914,7 +4780,6 @@ bool cmGeneratorTarget::UsesDefaultOutputDir(const std::string& config, return this->ComputeOutputDir(config, implib, dir); } -//---------------------------------------------------------------------------- cmGeneratorTarget::OutputInfo const* cmGeneratorTarget::GetOutputInfo( const std::string& config) const { @@ -4974,7 +4839,6 @@ cmGeneratorTarget::OutputInfo const* cmGeneratorTarget::GetOutputInfo( return &i->second; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::ComputeOutputDir(const std::string& config, bool implib, std::string& out) const { @@ -5068,7 +4932,6 @@ bool cmGeneratorTarget::ComputeOutputDir(const std::string& config, return usesDefaultOutputDir; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::ComputePDBOutputDir(const std::string& kind, const std::string& config, std::string& out) const @@ -5129,7 +4992,6 @@ bool cmGeneratorTarget::ComputePDBOutputDir(const std::string& kind, return true; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HaveInstallTreeRPATH() const { const char* install_rpath = this->GetProperty("INSTALL_RPATH"); @@ -5137,7 +4999,6 @@ bool cmGeneratorTarget::HaveInstallTreeRPATH() const !this->Makefile->IsOn("CMAKE_SKIP_INSTALL_RPATH"); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeLinkInterfaceLibraries( const std::string& config, @@ -5198,6 +5059,7 @@ cmGeneratorTarget::ComputeLinkInterfaceLibraries( && strcmp(newExplicitLibraries, explicitLibraries) != 0) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0022) << "\n" "Target \"" << this->GetName() << "\" has an " "INTERFACE_LINK_LIBRARIES property which differs from its " << @@ -5207,6 +5069,7 @@ cmGeneratorTarget::ComputeLinkInterfaceLibraries( " " << newExplicitLibraries << "\n" << linkIfaceProp << ":\n" " " << (explicitLibraries ? explicitLibraries : "(empty)") << "\n"; + /* clang-format on */ this->LocalGenerator->IssueMessage(cmake::AUTHOR_WARNING, w.str()); this->PolicyWarnedCMP0022 = true; } @@ -5269,6 +5132,7 @@ cmGeneratorTarget::ComputeLinkInterfaceLibraries( { newLibraries = "(empty)"; } std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0022) << "\n" "Target \"" << this->GetName() << "\" has an " "INTERFACE_LINK_LIBRARIES property. " @@ -5281,6 +5145,7 @@ cmGeneratorTarget::ComputeLinkInterfaceLibraries( " " << newLibraries << "\n" "Link implementation:\n" " " << oldLibraries << "\n"; + /* clang-format on */ this->LocalGenerator->IssueMessage(cmake::AUTHOR_WARNING, w.str()); this->PolicyWarnedCMP0022 = true; } @@ -5288,7 +5153,6 @@ cmGeneratorTarget::ComputeLinkInterfaceLibraries( } } -//---------------------------------------------------------------------------- const cmLinkInterface * cmGeneratorTarget::GetImportLinkInterface(const std::string& config, cmGeneratorTarget const* headTarget, @@ -5332,7 +5196,6 @@ cmGeneratorTarget::GetImportLinkInterface(const std::string& config, return &iface; } -//---------------------------------------------------------------------------- cmGeneratorTarget::ImportInfo const* cmGeneratorTarget::GetImportInfo(const std::string& config) const { @@ -5379,7 +5242,6 @@ cmGeneratorTarget::GetImportInfo(const std::string& config) const return &i->second; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeImportInfo(std::string const& desired_config, ImportInfo& info) const { @@ -5564,7 +5426,6 @@ cmGeneratorTarget::GetHeadToLinkInterfaceUsageRequirementsMap( return this->LinkInterfaceUsageRequirementsOnlyMap[CONFIG]; } -//---------------------------------------------------------------------------- const cmLinkImplementation * cmGeneratorTarget::GetLinkImplementation(const std::string& config) const { @@ -5589,7 +5450,6 @@ cmGeneratorTarget::GetLinkImplementation(const std::string& config) const return &impl; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::GetConfigCommonSourceFiles( std::vector<cmSourceFile*>& files) const { @@ -5630,6 +5490,7 @@ bool cmGeneratorTarget::GetConfigCommonSourceFiles( sep = "\n "; } std::ostringstream e; + /* clang-format off */ e << "Target \"" << this->GetName() << "\" has source files which vary by " "configuration. This is not supported by the \"" @@ -5639,6 +5500,7 @@ bool cmGeneratorTarget::GetConfigCommonSourceFiles( " " << firstConfigFiles << "\n" "Config \"" << *it << "\":\n" " " << thisConfigFiles << "\n"; + /* clang-format on */ this->LocalGenerator->IssueMessage(cmake::FATAL_ERROR, e.str()); return false; } @@ -5646,7 +5508,6 @@ bool cmGeneratorTarget::GetConfigCommonSourceFiles( return true; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetObjectLibrariesCMP0026( std::vector<cmGeneratorTarget*>& objlibs) const { @@ -5686,7 +5547,6 @@ void cmGeneratorTarget::GetObjectLibrariesCMP0026( } } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::CheckCMP0004(std::string const& item) const { // Strip whitespace off the library names because we used to do this @@ -5745,7 +5605,6 @@ std::string cmGeneratorTarget::CheckCMP0004(std::string const& item) const return lib; } -//---------------------------------------------------------------------------- void cmGeneratorTarget::GetLanguages(std::set<std::string>& languages, const std::string& config) const { @@ -5795,7 +5654,6 @@ void cmGeneratorTarget::GetLanguages(std::set<std::string>& languages, } } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeLinkImplementationLanguages( const std::string& config, cmOptionalLinkImplementation& impl) const @@ -5809,7 +5667,6 @@ void cmGeneratorTarget::ComputeLinkImplementationLanguages( languages.begin(), languages.end()); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HaveBuildTreeRPATH(const std::string& config) const { if (this->GetPropertyAsBool("SKIP_BUILD_RPATH")) @@ -5824,7 +5681,6 @@ bool cmGeneratorTarget::HaveBuildTreeRPATH(const std::string& config) const return false; } -//---------------------------------------------------------------------------- cmLinkImplementationLibraries const* cmGeneratorTarget::GetLinkImplementationLibraries( const std::string& config) const @@ -5832,7 +5688,6 @@ cmGeneratorTarget::GetLinkImplementationLibraries( return this->GetLinkImplementationLibrariesInternal(config, this); } -//---------------------------------------------------------------------------- cmLinkImplementationLibraries const* cmGeneratorTarget::GetLinkImplementationLibrariesInternal( const std::string& config, cmGeneratorTarget const* head) const @@ -5864,7 +5719,6 @@ cmGeneratorTarget::GetLinkImplementationLibrariesInternal( return &impl; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsNullImpliedByLinkLibraries(const std::string &p) const { @@ -5872,7 +5726,6 @@ cmGeneratorTarget::IsNullImpliedByLinkLibraries(const std::string &p) const != this->LinkImplicitNullProperties.end(); } -//---------------------------------------------------------------------------- void cmGeneratorTarget::ComputeLinkImplementationLibraries( const std::string& config, cmOptionalLinkImplementation& impl, @@ -5989,7 +5842,6 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries( } } -//---------------------------------------------------------------------------- cmGeneratorTarget* cmGeneratorTarget::FindTargetToLink(std::string const& name) const { @@ -6022,7 +5874,6 @@ cmGeneratorTarget::FindTargetToLink(std::string const& name) const return tgt; } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetPDBDirectory(const std::string& config) const { @@ -6034,14 +5885,12 @@ cmGeneratorTarget::GetPDBDirectory(const std::string& config) const return ""; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HasImplibGNUtoMS() const { return this->HasImportLibrary() && this->GetPropertyAsBool("GNUtoMS"); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::GetImplibGNUtoMS(std::string const& gnuName, std::string& out, const char* newExt) const { @@ -6055,14 +5904,12 @@ bool cmGeneratorTarget::GetImplibGNUtoMS(std::string const& gnuName, return false; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsExecutableWithExports() const { return (this->GetType() == cmState::EXECUTABLE && this->GetPropertyAsBool("ENABLE_EXPORTS")); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::HasImportLibrary() const { return (this->IsDLLPlatform() && @@ -6070,7 +5917,6 @@ bool cmGeneratorTarget::HasImportLibrary() const this->IsExecutableWithExports())); } -//---------------------------------------------------------------------------- std::string cmGeneratorTarget::GetSupportDirectory() const { std::string dir = this->LocalGenerator->GetCurrentBinaryDirectory(); @@ -6085,7 +5931,6 @@ std::string cmGeneratorTarget::GetSupportDirectory() const return dir; } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsLinkable() const { return (this->GetType() == cmState::STATIC_LIBRARY || @@ -6096,7 +5941,6 @@ bool cmGeneratorTarget::IsLinkable() const this->IsExecutableWithExports()); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsFrameworkOnApple() const { return (this->GetType() == cmState::SHARED_LIBRARY && @@ -6104,7 +5948,6 @@ bool cmGeneratorTarget::IsFrameworkOnApple() const this->GetPropertyAsBool("FRAMEWORK")); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsAppBundleOnApple() const { return (this->GetType() == cmState::EXECUTABLE && @@ -6112,14 +5955,12 @@ bool cmGeneratorTarget::IsAppBundleOnApple() const this->GetPropertyAsBool("MACOSX_BUNDLE")); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsXCTestOnApple() const { return (this->IsCFBundleOnApple() && this->GetPropertyAsBool("XCTEST")); } -//---------------------------------------------------------------------------- bool cmGeneratorTarget::IsCFBundleOnApple() const { return (this->GetType() == cmState::MODULE_LIBRARY && diff --git a/Source/cmGetCMakePropertyCommand.cxx b/Source/cmGetCMakePropertyCommand.cxx index 1a91183..2be4dec 100644 --- a/Source/cmGetCMakePropertyCommand.cxx +++ b/Source/cmGetCMakePropertyCommand.cxx @@ -11,10 +11,10 @@ ============================================================================*/ #include "cmGetCMakePropertyCommand.h" +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" -#include "cmake.h" #include "cmState.h" -#include "cmAlgorithms.h" +#include "cmake.h" // cmGetCMakePropertyCommand bool cmGetCMakePropertyCommand diff --git a/Source/cmGetFilenameComponentCommand.cxx b/Source/cmGetFilenameComponentCommand.cxx index 0f56c8e..2026a45 100644 --- a/Source/cmGetFilenameComponentCommand.cxx +++ b/Source/cmGetFilenameComponentCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGetFilenameComponentCommand.h" + #include "cmSystemTools.h" // cmGetFilenameComponentCommand diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx index 617a811..6bcc131 100644 --- a/Source/cmGetPropertyCommand.cxx +++ b/Source/cmGetPropertyCommand.cxx @@ -11,20 +11,18 @@ ============================================================================*/ #include "cmGetPropertyCommand.h" -#include "cmake.h" -#include "cmState.h" -#include "cmTest.h" #include "cmGlobalGenerator.h" -#include "cmSourceFile.h" #include "cmPropertyDefinition.h" +#include "cmSourceFile.h" +#include "cmState.h" +#include "cmTest.h" +#include "cmake.h" -//---------------------------------------------------------------------------- cmGetPropertyCommand::cmGetPropertyCommand() { this->InfoType = OutValue; } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -202,7 +200,6 @@ bool cmGetPropertyCommand return true; } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::StoreResult(const char* value) { if(this->InfoType == OutSet) @@ -223,7 +220,6 @@ bool cmGetPropertyCommand::StoreResult(const char* value) return true; } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleGlobalMode() { if(!this->Name.empty()) @@ -238,7 +234,6 @@ bool cmGetPropertyCommand::HandleGlobalMode() ->GetGlobalProperty(this->PropertyName)); } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleDirectoryMode() { // Default to the current directory. @@ -293,7 +288,6 @@ bool cmGetPropertyCommand::HandleDirectoryMode() return this->StoreResult(mf->GetProperty(this->PropertyName)); } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleTargetMode() { if(this->Name.empty()) @@ -329,7 +323,6 @@ bool cmGetPropertyCommand::HandleTargetMode() } } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleSourceMode() { if(this->Name.empty()) @@ -355,7 +348,6 @@ bool cmGetPropertyCommand::HandleSourceMode() } } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleTestMode() { if(this->Name.empty()) @@ -377,7 +369,6 @@ bool cmGetPropertyCommand::HandleTestMode() return false; } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleVariableMode() { if(!this->Name.empty()) @@ -390,7 +381,6 @@ bool cmGetPropertyCommand::HandleVariableMode() (this->Makefile->GetDefinition(this->PropertyName)); } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleCacheMode() { if(this->Name.empty()) @@ -409,7 +399,6 @@ bool cmGetPropertyCommand::HandleCacheMode() return true; } -//---------------------------------------------------------------------------- bool cmGetPropertyCommand::HandleInstallMode() { if(this->Name.empty()) diff --git a/Source/cmGetTestPropertyCommand.cxx b/Source/cmGetTestPropertyCommand.cxx index bf34589..3d7a013 100644 --- a/Source/cmGetTestPropertyCommand.cxx +++ b/Source/cmGetTestPropertyCommand.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmGetTestPropertyCommand.h" -#include "cmake.h" #include "cmTest.h" +#include "cmake.h" // cmGetTestPropertyCommand bool cmGetTestPropertyCommand diff --git a/Source/cmGhsMultiGpj.h b/Source/cmGhsMultiGpj.h index 91ff0f4..862b63c 100644 --- a/Source/cmGhsMultiGpj.h +++ b/Source/cmGhsMultiGpj.h @@ -12,6 +12,8 @@ #ifndef cmGhsMultiGpj_h #define cmGhsMultiGpj_h +#include "cmStandardIncludes.h" + class cmGeneratedFileStream; class GhsMultiGpj diff --git a/Source/cmGhsMultiTargetGenerator.cxx b/Source/cmGhsMultiTargetGenerator.cxx index 1f17f8f..4ca59cb 100644 --- a/Source/cmGhsMultiTargetGenerator.cxx +++ b/Source/cmGhsMultiTargetGenerator.cxx @@ -10,12 +10,13 @@ See the License for more information. ============================================================================*/ #include "cmGhsMultiTargetGenerator.h" + +#include "cmGeneratedFileStream.h" #include "cmGlobalGhsMultiGenerator.h" #include "cmLocalGhsMultiGenerator.h" #include "cmMakefile.h" -#include "cmTarget.h" -#include "cmGeneratedFileStream.h" #include "cmSourceFile.h" +#include "cmTarget.h" #include <assert.h> #include <cmAlgorithms.h> @@ -113,7 +114,7 @@ cmGhsMultiTargetGenerator::AddSlashIfNeededToPath(std::string const &input) void cmGhsMultiTargetGenerator::Generate() { - const std::vector<cmSourceFile *> objectSources = this->GetSources(); + std::vector<cmSourceFile *> objectSources = this->GetSources(); if (!objectSources.empty() && this->IncludeThisTarget()) { if (!cmSystemTools::FileExists(this->AbsBuildFilePath.c_str())) @@ -153,7 +154,11 @@ void cmGhsMultiTargetGenerator::Generate() } this->WriteCustomCommands(); - this->WriteSources(objectSources); + std::map<const cmSourceFile *, std::string> objectNames = + cmGhsMultiTargetGenerator::GetObjectNames( + &objectSources, this->LocalGenerator, this->GeneratorTarget); + + this->WriteSources(objectSources, objectNames); } } @@ -481,8 +486,66 @@ void cmGhsMultiTargetGenerator::WriteCustomCommandsHelper( } } +std::map<const cmSourceFile *, std::string> +cmGhsMultiTargetGenerator::GetObjectNames( + std::vector<cmSourceFile *> *const objectSources, + cmLocalGhsMultiGenerator *const localGhsMultiGenerator, + cmGeneratorTarget *const generatorTarget) +{ + std::map<std::string, std::vector<cmSourceFile *> > filenameToSource; + std::map<cmSourceFile *, std::string> sourceToFilename; + for(std::vector<cmSourceFile *>::const_iterator + sf = objectSources->begin(); sf != objectSources->end(); ++sf) + { + const std::string filename = + cmSystemTools::GetFilenameName((*sf)->GetFullPath()); + const std::string lower_filename = cmSystemTools::LowerCase(filename); + filenameToSource[lower_filename].push_back(*sf); + sourceToFilename[*sf] = lower_filename; + } + + std::vector<cmSourceFile *> duplicateSources; + for (std::map<std::string, std::vector<cmSourceFile *> >::const_iterator + msvSourceI = filenameToSource.begin(); + msvSourceI != filenameToSource.end(); ++msvSourceI) + { + if (msvSourceI->second.size() > 1) + { + duplicateSources.insert(duplicateSources.end(), + msvSourceI->second.begin(), + msvSourceI->second.end()); + } + } + + std::map<const cmSourceFile *, std::string> objectNamesCorrected; + + for (std::vector<cmSourceFile *>::const_iterator sf = + duplicateSources.begin(); + sf != duplicateSources.end(); ++sf) + { + static std::string::size_type const MAX_FULL_PATH_LENGTH = 247; + std::string const longestObjectDirectory( + cmGhsMultiTargetGenerator::ComputeLongestObjectDirectory( + localGhsMultiGenerator, generatorTarget, *sf)); + std::string fullFilename = (*sf)->GetFullPath(); + bool const ObjPathFound = cmLocalGeneratorCheckObjectName( + fullFilename, longestObjectDirectory.size(), MAX_FULL_PATH_LENGTH); + if (!ObjPathFound) + { + cmSystemTools::Error("Object path \"", fullFilename.c_str(), + "\" too long", ""); + } + cmsys::SystemTools::ReplaceString(fullFilename, ":/", "_"); + cmsys::SystemTools::ReplaceString(fullFilename, "/", "_"); + objectNamesCorrected[*sf] = fullFilename; + } + + return objectNamesCorrected; +} + void cmGhsMultiTargetGenerator::WriteSources( - std::vector<cmSourceFile *> const &objectSources) + std::vector<cmSourceFile *> const &objectSources, + std::map<const cmSourceFile *, std::string> const &objectNames) { for (std::vector<cmSourceFile *>::const_iterator si = objectSources.begin(); si != objectSources.end(); ++si) @@ -515,6 +578,11 @@ void cmGhsMultiTargetGenerator::WriteSources( "bsp" != (*si)->GetExtension()) { this->WriteObjectLangOverride(this->FolderBuildStreams[sgPath], (*si)); + if (objectNames.end() != objectNames.find(*si)) + { + *this->FolderBuildStreams[sgPath] << " -o \"" << + objectNames.find(*si)->second << ".o\"" << std::endl; + } this->WriteObjectDir(this->FolderBuildStreams[sgPath], this->AbsBuildFilePath + sgPath); @@ -603,6 +671,30 @@ cmGhsMultiTargetGenerator::GetOutputFilename(const std::string &config) const return outputFilename; } +std::string cmGhsMultiTargetGenerator::ComputeLongestObjectDirectory( + cmLocalGhsMultiGenerator const *localGhsMultiGenerator, + cmGeneratorTarget *const generatorTarget, cmSourceFile *const sourceFile) +{ + std::string dir_max; + dir_max += + localGhsMultiGenerator->GetMakefile()->GetCurrentBinaryDirectory(); + dir_max += "/"; + dir_max += generatorTarget->Target->GetName(); + dir_max += "/"; + std::vector<cmSourceGroup> sourceGroups( + localGhsMultiGenerator->GetMakefile()->GetSourceGroups()); + char const *const sourceFullPath = sourceFile->GetFullPath().c_str(); + cmSourceGroup *sourceGroup = + localGhsMultiGenerator->GetMakefile()->FindSourceGroup(sourceFullPath, + sourceGroups); + std::string const sgPath(sourceGroup->GetFullName()); + dir_max += sgPath; + dir_max += "/Objs/libs/"; + dir_max += generatorTarget->Target->GetName(); + dir_max += "/"; + return dir_max; +} + bool cmGhsMultiTargetGenerator::IsNotKernel(std::string const &config, const std::string &language) { diff --git a/Source/cmGhsMultiTargetGenerator.h b/Source/cmGhsMultiTargetGenerator.h index e85e412..9f18eeb 100644 --- a/Source/cmGhsMultiTargetGenerator.h +++ b/Source/cmGhsMultiTargetGenerator.h @@ -12,10 +12,10 @@ #ifndef cmGhsMultiTargetGenerator_h #define cmGhsMultiTargetGenerator_h -#include "cmStandardIncludes.h" -#include "cmTarget.h" #include "cmGhsMultiGpj.h" +#include "cmTarget.h" + class cmGeneratedFileStream; class cmGlobalGhsMultiGenerator; class cmLocalGhsMultiGenerator; @@ -87,13 +87,22 @@ private: void WriteCustomCommandsHelper(std::vector<cmCustomCommand> const &commandsSet, cmTarget::CustomCommandType commandType); - void WriteSources(std::vector<cmSourceFile *> const &objectSources); + void WriteSources( + std::vector<cmSourceFile *> const &objectSources, + std::map<const cmSourceFile *, std::string> const &objectNames); + static std::map<const cmSourceFile *, std::string> + GetObjectNames(std::vector<cmSourceFile *> *objectSources, + cmLocalGhsMultiGenerator *localGhsMultiGenerator, + cmGeneratorTarget *generatorTarget); static void WriteObjectLangOverride(cmGeneratedFileStream *fileStream, cmSourceFile *sourceFile); static void WriteObjectDir(cmGeneratedFileStream *fileStream, std::string const &dir); std::string GetOutputDirectory(const std::string &config) const; std::string GetOutputFilename(const std::string &config) const; + static std::string ComputeLongestObjectDirectory( + cmLocalGhsMultiGenerator const *localGhsMultiGenerator, + cmGeneratorTarget *generatorTarget, cmSourceFile *const sourceFile); bool IsNotKernel(std::string const &config, const std::string &language); static bool DetermineIfTargetGroup(const cmGeneratorTarget* target); diff --git a/Source/cmGlobalBorlandMakefileGenerator.cxx b/Source/cmGlobalBorlandMakefileGenerator.cxx index 40e8d29..48a04c3 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.cxx +++ b/Source/cmGlobalBorlandMakefileGenerator.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGlobalBorlandMakefileGenerator.h" + #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" #include "cmake.h" @@ -55,7 +56,6 @@ cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator( } -//---------------------------------------------------------------------------- void cmGlobalBorlandMakefileGenerator ::GetDocumentation(cmDocumentationEntry& entry) { diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 1d0ade4..2b06d7d 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -17,31 +17,32 @@ #endif #include "cmGlobalGenerator.h" -#include "cmLocalGenerator.h" + +#include "cmAlgorithms.h" +#include "cmCPackPropertiesGenerator.h" +#include "cmComputeTargetDepends.h" +#include "cmExportBuildFileGenerator.h" #include "cmExternalMakefileProjectGenerator.h" -#include "cmake.h" -#include "cmState.h" +#include "cmGeneratedFileStream.h" +#include "cmGeneratorExpression.h" +#include "cmGeneratorTarget.h" +#include "cmInstallGenerator.h" +#include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmQtAutoGeneratorInitializer.h" #include "cmSourceFile.h" -#include "cmVersion.h" +#include "cmState.h" #include "cmTargetExport.h" -#include "cmComputeTargetDepends.h" -#include "cmGeneratedFileStream.h" -#include "cmGeneratorTarget.h" -#include "cmGeneratorExpression.h" -#include "cmExportBuildFileGenerator.h" -#include "cmCPackPropertiesGenerator.h" -#include "cmAlgorithms.h" -#include "cmInstallGenerator.h" +#include "cmVersion.h" +#include "cmake.h" #include <cmsys/Directory.hxx> #include <cmsys/FStream.hxx> #if defined(CMAKE_BUILD_WITH_CMAKE) -# include <cmsys/MD5.h> # include "cm_jsoncpp_value.h" # include "cm_jsoncpp_writer.h" +# include <cmsys/MD5.h> #endif #include <stdlib.h> // required for atof @@ -110,12 +111,14 @@ bool cmGlobalGenerator::SetGeneratorPlatform(std::string const& p, } std::ostringstream e; + /* clang-format off */ e << "Generator\n" " " << this->GetName() << "\n" "does not support platform specification, but platform\n" " " << p << "\n" "was specified."; + /* clang-format on */ mf->IssueMessage(cmake::FATAL_ERROR, e.str()); return false; } @@ -128,12 +131,14 @@ bool cmGlobalGenerator::SetGeneratorToolset(std::string const& ts, return true; } std::ostringstream e; + /* clang-format off */ e << "Generator\n" " " << this->GetName() << "\n" "does not support toolset specification, but toolset\n" " " << ts << "\n" "was specified."; + /* clang-format on */ mf->IssueMessage(cmake::FATAL_ERROR, e.str()); return false; } @@ -695,28 +700,34 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages, if(!compilerFile || !*compilerFile || cmSystemTools::IsNOTFOUND(compilerFile)) { + /* clang-format off */ noCompiler << "No " << compilerName << " could be found.\n" ; + /* clang-format on */ } else if(strcmp(lang, "RC") != 0 && strcmp(lang, "ASM_MASM") != 0) { if(!cmSystemTools::FileIsFullPath(compilerFile)) { + /* clang-format off */ noCompiler << "The " << compilerName << ":\n" " " << compilerFile << "\n" "is not a full path and was not found in the PATH.\n" ; + /* clang-format on */ } else if(!cmSystemTools::FileExists(compilerFile)) { + /* clang-format off */ noCompiler << "The " << compilerName << ":\n" " " << compilerFile << "\n" "is not a full path to an existing compiler tool.\n" ; + /* clang-format on */ } } if(!noCompiler.str().empty()) @@ -846,7 +857,6 @@ cmGlobalGenerator::EnableLanguage(std::vector<std::string>const& languages, } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::PrintCompilerAdvice(std::ostream& os, std::string const& lang, const char* envVar) const @@ -868,7 +878,6 @@ void cmGlobalGenerator::PrintCompilerAdvice(std::ostream& os, ; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf, std::string const& lang) const { @@ -888,10 +897,12 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf, mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0025")) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0025) << "\n" "Converting " << lang << " compiler id \"AppleClang\" to \"Clang\" for compatibility." ; + /* clang-format on */ mf->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } case cmPolicies::OLD: @@ -919,10 +930,12 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf, mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0047")) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0047) << "\n" "Converting " << lang << " compiler id \"QCC\" to \"GNU\" for compatibility." ; + /* clang-format on */ mf->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } case cmPolicies::OLD: @@ -950,7 +963,6 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf, } } -//---------------------------------------------------------------------------- std::string cmGlobalGenerator::GetLanguageOutputExtension(cmSourceFile const& source) const { @@ -1268,7 +1280,6 @@ cmGlobalGenerator::GetExportedTargetsFile(const std::string &filename) const return it == this->BuildExportSets.end() ? 0 : it->second; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AddCMP0042WarnTarget(const std::string& target) { this->CMP0042WarnTargets.insert(target); @@ -1468,7 +1479,6 @@ void cmGlobalGenerator::Generate() this->CMakeInstance->UpdateProgress("Generating done", -1); } -//---------------------------------------------------------------------------- bool cmGlobalGenerator::ComputeTargetDepends() { cmComputeTargetDepends ctd(this); @@ -1485,7 +1495,6 @@ bool cmGlobalGenerator::ComputeTargetDepends() return true; } -//---------------------------------------------------------------------------- std::vector<const cmGeneratorTarget*> cmGlobalGenerator::CreateQtAutoGeneratorsTargets() { @@ -1549,7 +1558,6 @@ cmGlobalGenerator::CreateQtAutoGeneratorsTargets() return autogenTargets; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::FinalizeTargetCompileInfo() { // Construct per-target generator information. @@ -1608,7 +1616,6 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::CreateGeneratorTargets( TargetTypes targetTypes, cmMakefile *mf, @@ -1636,7 +1643,6 @@ void cmGlobalGenerator::CreateGeneratorTargets( } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes) { std::map<cmTarget*, cmGeneratorTarget*> importedMap; @@ -1663,7 +1669,6 @@ void cmGlobalGenerator::CreateGeneratorTargets(TargetTypes targetTypes) } -//---------------------------------------------------------------------------- void cmGlobalGenerator::ClearGeneratorMembers() { cmDeleteAll(this->BuildExportSets); @@ -1685,7 +1690,6 @@ void cmGlobalGenerator::ClearGeneratorMembers() this->BinaryDirectories.clear(); } -//---------------------------------------------------------------------------- void cmGlobalGenerator::ComputeTargetObjectDirectory(cmGeneratorTarget*) const { } @@ -1944,7 +1948,6 @@ int cmGlobalGenerator::Build( return retVal; } -//---------------------------------------------------------------------------- std::string cmGlobalGenerator::GenerateCMakeBuildCommand( const std::string& target, const std::string& config, const std::string& native, @@ -1984,7 +1987,6 @@ std::string cmGlobalGenerator::GenerateCMakeBuildCommand( return makeCommand; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AddMakefile(cmMakefile *mf) { this->Makefiles.push_back(mf); @@ -2062,7 +2064,6 @@ void cmGlobalGenerator::EnableLanguagesFromGenerator(cmGlobalGenerator *gen, this->OutputExtensions = gen->OutputExtensions; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::SetConfiguredFilesPath(cmGlobalGenerator* gen) { if(!gen->ConfiguredFilesPath.empty()) @@ -2194,14 +2195,12 @@ cmGlobalGenerator::FindLocalGenerator(const std::string& start_dir) const return 0; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AddAlias(const std::string& name, std::string const& tgtName) { this->AliasTargets[name] = tgtName; } -//---------------------------------------------------------------------------- bool cmGlobalGenerator::IsAlias(const std::string& name) const { return this->AliasTargets.find(name) != this->AliasTargets.end(); @@ -2245,7 +2244,6 @@ cmGlobalGenerator::FindGeneratorTargetImpl(std::string const& name) const return 0; } -//---------------------------------------------------------------------------- cmTarget* cmGlobalGenerator::FindTarget(const std::string& name, bool excludeAliases) const @@ -2274,7 +2272,6 @@ cmGlobalGenerator::FindGeneratorTarget(const std::string& name) const return this->FindGeneratorTargetImpl(name); } -//---------------------------------------------------------------------------- bool cmGlobalGenerator::NameResolvesToFramework(const std::string& libname) const { @@ -2294,7 +2291,6 @@ cmGlobalGenerator::NameResolvesToFramework(const std::string& libname) const return false; } -//---------------------------------------------------------------------------- inline std::string removeQuotes(const std::string& s) { if(s[0] == '\"' && s[s.size()-1] == '\"') @@ -2572,7 +2568,6 @@ void cmGlobalGenerator::CreateDefaultGlobalTargets(cmTargets* targets) } } -//---------------------------------------------------------------------------- const char* cmGlobalGenerator::GetPredefinedTargetsFolder() { const char* prop = this->GetCMakeInstance()->GetState() @@ -2586,7 +2581,6 @@ const char* cmGlobalGenerator::GetPredefinedTargetsFolder() return "CMakePredefinedTargets"; } -//---------------------------------------------------------------------------- bool cmGlobalGenerator::UseFolderProperty() { const char* prop = this->GetCMakeInstance()->GetState() @@ -2605,7 +2599,6 @@ bool cmGlobalGenerator::UseFolderProperty() return false; } -//---------------------------------------------------------------------------- cmTarget cmGlobalGenerator::CreateGlobalTarget( const std::string& name, const char* message, const cmCustomCommandLines* commandLines, @@ -2643,7 +2636,6 @@ cmTarget cmGlobalGenerator::CreateGlobalTarget( return target; } -//---------------------------------------------------------------------------- std::string cmGlobalGenerator::GenerateRuleFile(std::string const& output) const { @@ -2658,7 +2650,6 @@ cmGlobalGenerator::GenerateRuleFile(std::string const& output) const return ruleFile; } -//---------------------------------------------------------------------------- std::string cmGlobalGenerator::GetSharedLibFlagsForLanguage( std::string const& l) const { @@ -2671,7 +2662,6 @@ std::string cmGlobalGenerator::GetSharedLibFlagsForLanguage( return ""; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AppendDirectoryForConfig(const std::string&, const std::string&, const std::string&, @@ -2682,7 +2672,6 @@ void cmGlobalGenerator::AppendDirectoryForConfig(const std::string&, // configuration. } -//---------------------------------------------------------------------------- cmGlobalGenerator::TargetDependSet const& cmGlobalGenerator::GetTargetDirectDepends(cmGeneratorTarget const* target) { @@ -2746,7 +2735,6 @@ cmGlobalGenerator std::back_inserter(filenames)); } -//---------------------------------------------------------------------------- void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets, TargetDependSet& originalTargets, cmLocalGenerator* root, @@ -2781,14 +2769,12 @@ void cmGlobalGenerator::GetTargetSets(TargetDependSet& projectTargets, } } -//---------------------------------------------------------------------------- bool cmGlobalGenerator::IsRootOnlyTarget(cmGeneratorTarget* target) const { return (target->GetType() == cmState::GLOBAL_TARGET || target->GetName() == this->GetAllTargetName()); } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target, TargetDependSet& projectTargets) { @@ -2806,7 +2792,6 @@ void cmGlobalGenerator::AddTargetDepends(cmGeneratorTarget const* target, } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AddToManifest(std::string const& f) { // Add to the content listing for the file's directory. @@ -2817,7 +2802,6 @@ void cmGlobalGenerator::AddToManifest(std::string const& f) dc.All.insert(file); } -//---------------------------------------------------------------------------- std::set<std::string> const& cmGlobalGenerator::GetDirectoryContent(std::string const& dir, bool needDisk) { @@ -2850,7 +2834,6 @@ cmGlobalGenerator::GetDirectoryContent(std::string const& dir, bool needDisk) return dc.All; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::AddRuleHash(const std::vector<std::string>& outputs, std::string const& content) @@ -2888,7 +2871,6 @@ cmGlobalGenerator::AddRuleHash(const std::vector<std::string>& outputs, #endif } -//---------------------------------------------------------------------------- void cmGlobalGenerator::CheckRuleHashes() { #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -2901,7 +2883,6 @@ void cmGlobalGenerator::CheckRuleHashes() #endif } -//---------------------------------------------------------------------------- void cmGlobalGenerator::CheckRuleHashes(std::string const& pfile, std::string const& home) { @@ -2964,7 +2945,6 @@ void cmGlobalGenerator::CheckRuleHashes(std::string const& pfile, } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::WriteRuleHashes(std::string const& pfile) { // Now generate a new persistence file with the current hashes. @@ -2985,7 +2965,6 @@ void cmGlobalGenerator::WriteRuleHashes(std::string const& pfile) } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::WriteSummary() { // Record all target directories in a central location. @@ -3011,7 +2990,6 @@ void cmGlobalGenerator::WriteSummary() } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target) { // Place the labels file in a per-target support directory. @@ -3100,7 +3078,6 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target) } } -//---------------------------------------------------------------------------- // static std::string cmGlobalGenerator::EscapeJSON(const std::string& s) { std::string result; @@ -3113,20 +3090,17 @@ std::string cmGlobalGenerator::EscapeJSON(const std::string& s) { return result; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::SetFilenameTargetDepends(cmSourceFile* sf, std::set<cmGeneratorTarget const*> tgts) { this->FilenameTargetDepends[sf] = tgts; } -//---------------------------------------------------------------------------- std::set<cmGeneratorTarget const*> const& cmGlobalGenerator::GetFilenameTargetDepends(cmSourceFile* sf) const { return this->FilenameTargetDepends[sf]; } -//---------------------------------------------------------------------------- void cmGlobalGenerator::CreateEvaluationSourceFiles( std::string const& config) const { @@ -3137,7 +3111,6 @@ void cmGlobalGenerator::CreateEvaluationSourceFiles( } } -//---------------------------------------------------------------------------- void cmGlobalGenerator::ProcessEvaluationFiles() { std::vector<std::string> generatedFiles; @@ -3148,14 +3121,12 @@ void cmGlobalGenerator::ProcessEvaluationFiles() } } -//---------------------------------------------------------------------------- std::string cmGlobalGenerator::ExpandCFGIntDir(const std::string& str, const std::string& /*config*/) const { return str; } -//---------------------------------------------------------------------------- bool cmGlobalGenerator::GenerateCPackPropertiesFile() { cmake::InstalledFilesMap const& installedFiles = diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 14c7d67..1576f09 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -15,13 +15,13 @@ #include "cmStandardIncludes.h" -#include "cmTarget.h" // For cmTargets -#include "cmTargetDepend.h" // For cmTargetDependSet -#include "cmSystemTools.h" // for cmSystemTools::OutputOption #include "cmExportSetMap.h" // For cmExportSetMap -#include "cmGeneratorTarget.h" #include "cmGeneratorExpression.h" +#include "cmGeneratorTarget.h" #include "cmState.h" +#include "cmSystemTools.h" // for cmSystemTools::OutputOption +#include "cmTarget.h" // For cmTargets +#include "cmTargetDepend.h" // For cmTargetDependSet #if defined(CMAKE_BUILD_WITH_CMAKE) # include "cmFileLockPool.h" diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index 1bcbd26..df7011c 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -10,13 +10,14 @@ See the License for more information. ============================================================================*/ #include "cmGlobalGhsMultiGenerator.h" + +#include "cmGeneratedFileStream.h" +#include "cmGhsMultiTargetGenerator.h" #include "cmLocalGhsMultiGenerator.h" #include "cmMakefile.h" #include "cmVersion.h" -#include "cmGeneratedFileStream.h" -#include "cmGhsMultiTargetGenerator.h" -#include <cmsys/SystemTools.hxx> #include <cmAlgorithms.h> +#include <cmsys/SystemTools.hxx> const char *cmGlobalGhsMultiGenerator::FILE_EXTENSION = ".gpj"; const char *cmGlobalGhsMultiGenerator::DEFAULT_MAKE_PROGRAM = "gbuild"; diff --git a/Source/cmGlobalGhsMultiGenerator.h b/Source/cmGlobalGhsMultiGenerator.h index 6f86c5d..5de9d2b 100644 --- a/Source/cmGlobalGhsMultiGenerator.h +++ b/Source/cmGlobalGhsMultiGenerator.h @@ -12,9 +12,10 @@ #ifndef cmGhsMultiGenerator_h #define cmGhsMultiGenerator_h -#include "cmGlobalGeneratorFactory.h" #include "cmGlobalGenerator.h" + #include "cmGhsMultiGpj.h" +#include "cmGlobalGeneratorFactory.h" class cmGeneratedFileStream; diff --git a/Source/cmGlobalJOMMakefileGenerator.cxx b/Source/cmGlobalJOMMakefileGenerator.cxx index 3f33f91..6ae82d8 100644 --- a/Source/cmGlobalJOMMakefileGenerator.cxx +++ b/Source/cmGlobalJOMMakefileGenerator.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGlobalJOMMakefileGenerator.h" + #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" @@ -39,7 +40,6 @@ void cmGlobalJOMMakefileGenerator this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional); } -//---------------------------------------------------------------------------- void cmGlobalJOMMakefileGenerator ::GetDocumentation(cmDocumentationEntry& entry) { @@ -47,18 +47,19 @@ void cmGlobalJOMMakefileGenerator entry.Brief = "Generates JOM makefiles."; } -//---------------------------------------------------------------------------- void cmGlobalJOMMakefileGenerator::PrintCompilerAdvice(std::ostream& os, std::string const& lang, const char* envVar) const { if(lang == "CXX" || lang == "C") { + /* clang-format off */ os << "To use the JOM generator with Visual C++, cmake must be run from a " "shell that can use the compiler cl from the command line. This " "environment is unable to invoke the cl compiler. To fix this problem, " "run cmake from the Visual Studio Command Prompt (vcvarsall.bat).\n"; + /* clang-format on */ } this->cmGlobalUnixMakefileGenerator3::PrintCompilerAdvice(os, lang, envVar); } diff --git a/Source/cmGlobalKdevelopGenerator.cxx b/Source/cmGlobalKdevelopGenerator.cxx index b4f7670..f2de750 100644 --- a/Source/cmGlobalKdevelopGenerator.cxx +++ b/Source/cmGlobalKdevelopGenerator.cxx @@ -11,20 +11,20 @@ See the License for more information. ============================================================================*/ #include "cmGlobalKdevelopGenerator.h" + +#include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" -#include "cmake.h" #include "cmSourceFile.h" -#include "cmGeneratedFileStream.h" #include "cmSystemTools.h" #include "cmXMLWriter.h" +#include "cmake.h" -#include <cmsys/SystemTools.hxx> #include <cmsys/Directory.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/SystemTools.hxx> -//---------------------------------------------------------------------------- void cmGlobalKdevelopGenerator ::GetDocumentation(cmDocumentationEntry& entry, const std::string&) const { diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx index 9a6f3ba..88eb4f3 100644 --- a/Source/cmGlobalMSYSMakefileGenerator.cxx +++ b/Source/cmGlobalMSYSMakefileGenerator.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGlobalMSYSMakefileGenerator.h" + #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" #include "cmake.h" @@ -94,7 +95,6 @@ void cmGlobalMSYSMakefileGenerator } } -//---------------------------------------------------------------------------- void cmGlobalMSYSMakefileGenerator ::GetDocumentation(cmDocumentationEntry& entry) { diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx index b6e52d7..fab9eda 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.cxx +++ b/Source/cmGlobalMinGWMakefileGenerator.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGlobalMinGWMakefileGenerator.h" + #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" @@ -59,7 +60,6 @@ void cmGlobalMinGWMakefileGenerator this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional); } -//---------------------------------------------------------------------------- void cmGlobalMinGWMakefileGenerator ::GetDocumentation(cmDocumentationEntry& entry) { diff --git a/Source/cmGlobalNMakeMakefileGenerator.cxx b/Source/cmGlobalNMakeMakefileGenerator.cxx index 7c570a6..6080f96 100644 --- a/Source/cmGlobalNMakeMakefileGenerator.cxx +++ b/Source/cmGlobalNMakeMakefileGenerator.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGlobalNMakeMakefileGenerator.h" + #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" @@ -39,7 +40,6 @@ void cmGlobalNMakeMakefileGenerator this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional); } -//---------------------------------------------------------------------------- void cmGlobalNMakeMakefileGenerator ::GetDocumentation(cmDocumentationEntry& entry) { @@ -47,18 +47,19 @@ void cmGlobalNMakeMakefileGenerator entry.Brief = "Generates NMake makefiles."; } -//---------------------------------------------------------------------------- void cmGlobalNMakeMakefileGenerator::PrintCompilerAdvice(std::ostream& os, std::string const& lang, const char* envVar) const { if(lang == "CXX" || lang == "C") { + /* clang-format off */ os << "To use the NMake generator with Visual C++, cmake must be run from a " "shell that can use the compiler cl from the command line. This " "environment is unable to invoke the cl compiler. To fix this problem, " "run cmake from the Visual Studio Command Prompt (vcvarsall.bat).\n"; + /* clang-format on */ } this->cmGlobalUnixMakefileGenerator3::PrintCompilerAdvice(os, lang, envVar); } diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index f12396f..6f631e5 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -10,14 +10,15 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ +#include "cmGlobalNinjaGenerator.h" + +#include "cmAlgorithms.h" #include "cmGeneratedFileStream.h" #include "cmGeneratorExpressionEvaluationFile.h" #include "cmGeneratorTarget.h" -#include "cmGlobalNinjaGenerator.h" #include "cmLocalNinjaGenerator.h" #include "cmMakefile.h" #include "cmVersion.h" -#include "cmAlgorithms.h" #include <algorithm> #include <assert.h> @@ -230,9 +231,10 @@ void cmGlobalNinjaGenerator::WriteBuild(std::ostream& os, std::string assignments = variable_assignments.str(); const std::string& args = arguments; bool useResponseFile = false; - if (cmdLineLimit > 0 - && args.size() + buildstr.size() + assignments.size() - > (size_t) cmdLineLimit) { + if (cmdLineLimit < 0 || + (cmdLineLimit > 0 && + (args.size() + buildstr.size() + assignments.size()) + > static_cast<size_t>(cmdLineLimit))) { variable_assignments.str(std::string()); cmGlobalNinjaGenerator::WriteVariable(variable_assignments, "RSP_FILE", rspfile, "", 1); @@ -529,7 +531,6 @@ cmGlobalNinjaGenerator::cmGlobalNinjaGenerator(cmake* cm) } -//---------------------------------------------------------------------------- // Virtual public methods. cmLocalGenerator* @@ -683,7 +684,6 @@ void cmGlobalNinjaGenerator } } -//---------------------------------------------------------------------------- // Non-virtual public methods. void cmGlobalNinjaGenerator::AddRule(const std::string& name, @@ -725,7 +725,6 @@ bool cmGlobalNinjaGenerator::HasRule(const std::string &name) return (rule != this->Rules.end()); } -//---------------------------------------------------------------------------- // Private virtual overrides std::string cmGlobalNinjaGenerator::GetEditCacheCommand() const @@ -735,7 +734,6 @@ std::string cmGlobalNinjaGenerator::GetEditCacheCommand() const return cmSystemTools::GetCMakeGUICommand(); } -//---------------------------------------------------------------------------- void cmGlobalNinjaGenerator ::ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const { @@ -748,7 +746,6 @@ void cmGlobalNinjaGenerator gt->ObjectDirectory = dir; } -//---------------------------------------------------------------------------- // Private methods void cmGlobalNinjaGenerator::OpenBuildFileStream() @@ -818,11 +815,13 @@ void cmGlobalNinjaGenerator::OpenRulesFileStream() this->WriteDisclaimer(*this->RulesFileStream); // Write comment about this file. + /* clang-format off */ *this->RulesFileStream << "# This file contains all the rules used to get the outputs files\n" << "# built from the input files.\n" << "# It is included in the main '" << NINJA_BUILD_FILE << "'.\n\n" ; + /* clang-format on */ } void cmGlobalNinjaGenerator::CloseRulesFileStream() @@ -889,6 +888,7 @@ void cmGlobalNinjaGenerator::AddCXXCompileCommand( } + /* clang-format off */ *this->CompileCommandsStream << "\n{\n" << " \"directory\": \"" << cmGlobalGenerator::EscapeJSON(buildFileDir) << "\",\n" @@ -897,6 +897,7 @@ void cmGlobalNinjaGenerator::AddCXXCompileCommand( << " \"file\": \"" << cmGlobalGenerator::EscapeJSON(sourceFileName) << "\"\n" << "}"; + /* clang-format on */ } void cmGlobalNinjaGenerator::CloseCompileCommandsStream() @@ -1147,9 +1148,11 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os) //dependencies that we have no rule for cmGlobalNinjaGenerator::WriteDivider(os); + /* clang-format off */ os << "# Unknown Build Time Dependencies.\n" << "# Tell Ninja that they may appear as side effects of build rules\n" << "# otherwise ordered by order-only dependencies.\n\n"; + /* clang-format on */ //get the list of files that cmake itself has generated as a //product of configuration. @@ -1254,6 +1257,7 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os) if (!warnExplicitDepends.empty()) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0058) << "\n" "This project specifies custom command DEPENDS on files " "in the build tree that are not specified as the OUTPUT or " @@ -1267,6 +1271,7 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os) "Project authors should add the missing BYPRODUCTS or OUTPUT " "options to the custom commands that produce these files." ; + /* clang-format on */ this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } } diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 3023a95..56e2bdb 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -11,11 +11,12 @@ See the License for more information. ============================================================================*/ #ifndef cmGlobalNinjaGenerator_h -# define cmGlobalNinjaGenerator_h +#define cmGlobalNinjaGenerator_h -# include "cmGlobalCommonGenerator.h" -# include "cmGlobalGeneratorFactory.h" -# include "cmNinjaTypes.h" +#include "cmGlobalCommonGenerator.h" + +#include "cmGlobalGeneratorFactory.h" +#include "cmNinjaTypes.h" //#define NINJA_GEN_VERBOSE_FILES @@ -94,7 +95,7 @@ public: const cmNinjaDeps& orderOnlyDeps, const cmNinjaVars& variables, const std::string& rspfile = std::string(), - int cmdLineLimit = -1, + int cmdLineLimit = 0, bool* usedResponseFile = 0); /** diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index ce7815d..79b07ba 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -10,13 +10,14 @@ See the License for more information. ============================================================================*/ #include "cmGlobalUnixMakefileGenerator3.h" + +#include "cmAlgorithms.h" +#include "cmGeneratedFileStream.h" +#include "cmGeneratorTarget.h" #include "cmLocalUnixMakefileGenerator3.h" -#include "cmMakefileTargetGenerator.h" #include "cmMakefile.h" +#include "cmMakefileTargetGenerator.h" #include "cmake.h" -#include "cmGeneratedFileStream.h" -#include "cmGeneratorTarget.h" -#include "cmAlgorithms.h" cmGlobalUnixMakefileGenerator3::cmGlobalUnixMakefileGenerator3(cmake* cm) : cmGlobalCommonGenerator(cm) @@ -63,7 +64,6 @@ cmLocalGenerator* cmGlobalUnixMakefileGenerator3::CreateLocalGenerator( return new cmLocalUnixMakefileGenerator3(this, mf); } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::GetDocumentation(cmDocumentationEntry& entry) { @@ -71,7 +71,6 @@ void cmGlobalUnixMakefileGenerator3 entry.Brief = "Generates standard UNIX makefiles."; } -//---------------------------------------------------------------------------- std::string cmGlobalUnixMakefileGenerator3::GetEditCacheCommand() const { // If generating for an extra IDE, the edit_cache target cannot @@ -107,7 +106,6 @@ std::string cmGlobalUnixMakefileGenerator3::GetEditCacheCommand() const return edit_cmd? edit_cmd : ""; } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const @@ -276,7 +274,6 @@ void cmGlobalUnixMakefileGenerator3::WriteMainMakefile2() } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3::WriteMainCMakefile() { // Open the output file. This should not be copy-if-different @@ -442,7 +439,6 @@ void cmGlobalUnixMakefileGenerator3 cmakefileStream << " )\n"; } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::WriteDirectoryRule2(std::ostream& ruleFileStream, @@ -514,7 +510,6 @@ cmGlobalUnixMakefileGenerator3 makeTarget, depends, no_commands, true); } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::WriteDirectoryRules2(std::ostream& ruleFileStream, @@ -545,7 +540,6 @@ cmGlobalUnixMakefileGenerator3 this->WriteDirectoryRule2(ruleFileStream, lg, "preinstall", true, true); } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::GenerateBuildCommand(std::vector<std::string>& makeCommand, const std::string& makeProgram, @@ -602,7 +596,6 @@ void cmGlobalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::WriteConvenienceRules(std::ostream& ruleFileStream, @@ -700,7 +693,6 @@ cmGlobalUnixMakefileGenerator3 } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::WriteConvenienceRules2(std::ostream& ruleFileStream, @@ -953,7 +945,6 @@ void cmGlobalUnixMakefileGenerator3::InitializeProgressMarks() } } -//---------------------------------------------------------------------------- size_t cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInTarget(cmGeneratorTarget const* target, @@ -977,7 +968,6 @@ cmGlobalUnixMakefileGenerator3 return count; } -//---------------------------------------------------------------------------- size_t cmGlobalUnixMakefileGenerator3 ::CountProgressMarksInAll(cmLocalGenerator* lg) @@ -994,7 +984,6 @@ cmGlobalUnixMakefileGenerator3 return count; } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3::RecordTargetProgress( cmMakefileTargetGenerator* tg) @@ -1004,7 +993,6 @@ cmGlobalUnixMakefileGenerator3::RecordTargetProgress( tp.VariableFile = tg->GetProgressFileNameFull(); } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3::TargetProgress ::WriteProgressVariables(unsigned long total, unsigned long ¤t) @@ -1031,7 +1019,6 @@ cmGlobalUnixMakefileGenerator3::TargetProgress current += this->NumberOfActions; } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3 ::AppendGlobalTargetDepends(std::vector<std::string>& depends, @@ -1056,7 +1043,6 @@ cmGlobalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmGlobalUnixMakefileGenerator3::WriteHelpRule (std::ostream& ruleFileStream, cmLocalUnixMakefileGenerator3 *lg) { diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 0591a5a..b035df4 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -13,6 +13,7 @@ #define cmGlobalUnixMakefileGenerator3_h #include "cmGlobalCommonGenerator.h" + #include "cmGlobalGeneratorFactory.h" class cmGeneratedFileStream; diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index c49008d..441c2df 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -10,14 +10,16 @@ See the License for more information. ============================================================================*/ #include "windows.h" // this must be first to define GetCurrentDirectory + #include "cmGlobalVisualStudio10Generator.h" + +#include "cmAlgorithms.h" #include "cmLocalVisualStudio10Generator.h" #include "cmMakefile.h" #include "cmSourceFile.h" #include "cmVisualStudioSlnData.h" #include "cmVisualStudioSlnParser.h" #include "cmake.h" -#include "cmAlgorithms.h" static const char vs10generatorName[] = "Visual Studio 10 2010"; @@ -85,13 +87,11 @@ public: virtual bool SupportsToolset() const { return true; } }; -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalVisualStudio10Generator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator(cmake* cm, const std::string& name, const std::string& platformName) : cmGlobalVisualStudio8Generator(cm, name, platformName) @@ -107,7 +107,6 @@ cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator(cmake* cm, this->Version = VS10; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::MatchesGeneratorName( const std::string& name) const @@ -120,7 +119,6 @@ cmGlobalVisualStudio10Generator::MatchesGeneratorName( return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::SetSystemName(std::string const& s, cmMakefile* mf) { @@ -133,7 +131,6 @@ bool cmGlobalVisualStudio10Generator::SetSystemName(std::string const& s, return this->cmGlobalVisualStudio8Generator::SetSystemName(s, mf); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::SetGeneratorPlatform(std::string const& p, cmMakefile* mf) @@ -152,7 +149,6 @@ cmGlobalVisualStudio10Generator::SetGeneratorPlatform(std::string const& p, return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts, cmMakefile* mf) @@ -175,7 +171,6 @@ cmGlobalVisualStudio10Generator::SetGeneratorToolset(std::string const& ts, return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeSystem(cmMakefile* mf) { if (this->SystemName == "Windows") @@ -237,13 +232,11 @@ bool cmGlobalVisualStudio10Generator::InitializeSystem(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeWindows(cmMakefile*) { return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeWindowsCE(cmMakefile* mf) { if (this->DefaultPlatformName != "Win32") @@ -260,7 +253,6 @@ bool cmGlobalVisualStudio10Generator::InitializeWindowsCE(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeWindowsPhone(cmMakefile* mf) { std::ostringstream e; @@ -269,7 +261,6 @@ bool cmGlobalVisualStudio10Generator::InitializeWindowsPhone(cmMakefile* mf) return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::InitializeWindowsStore(cmMakefile* mf) { std::ostringstream e; @@ -278,7 +269,6 @@ bool cmGlobalVisualStudio10Generator::InitializeWindowsStore(cmMakefile* mf) return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::SelectWindowsPhoneToolset( std::string& toolset) const @@ -287,7 +277,6 @@ cmGlobalVisualStudio10Generator::SelectWindowsPhoneToolset( return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::SelectWindowsStoreToolset( std::string& toolset) const @@ -296,7 +285,6 @@ cmGlobalVisualStudio10Generator::SelectWindowsStoreToolset( return false; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio10Generator::SelectWindowsCEToolset() const { if (this->SystemVersion == "8.0") @@ -306,7 +294,6 @@ std::string cmGlobalVisualStudio10Generator::SelectWindowsCEToolset() const return ""; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 11.00\n"; @@ -335,6 +322,7 @@ void cmGlobalVisualStudio10Generator::Generate() { cmLocalGenerator* lg = this->LongestSource.Target->GetLocalGenerator(); std::ostringstream e; + /* clang-format off */ e << "The binary and/or source directory paths may be too long to generate " "Visual Studio 10 files for this project. " @@ -354,11 +342,11 @@ void cmGlobalVisualStudio10Generator::Generate() "the path length is too long for some internal buffer or API. " "To avoid this problem CMake must use a full path for this file " "which then triggers the VS 10 property dialog bug."; + /* clang-format on */ lg->IssueMessage(cmake::WARNING, e.str().c_str()); } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator ::EnableLanguage(std::vector<std::string>const & lang, cmMakefile *mf, bool optional) @@ -366,7 +354,6 @@ void cmGlobalVisualStudio10Generator cmGlobalVisualStudio8Generator::EnableLanguage(lang, mf, optional); } -//---------------------------------------------------------------------------- const char* cmGlobalVisualStudio10Generator::GetPlatformToolset() const { if(!this->GeneratorToolset.empty()) @@ -380,7 +367,6 @@ const char* cmGlobalVisualStudio10Generator::GetPlatformToolset() const return 0; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator::FindMakeProgram(cmMakefile* mf) { this->cmGlobalVisualStudio8Generator::FindMakeProgram(mf); @@ -388,7 +374,6 @@ void cmGlobalVisualStudio10Generator::FindMakeProgram(cmMakefile* mf) this->GetMSBuildCommand().c_str()); } -//---------------------------------------------------------------------------- std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand() { if(!this->MSBuildCommandInitialized) @@ -399,7 +384,6 @@ std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand() return this->MSBuildCommand; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio10Generator::FindMSBuildCommand() { std::string msbuild; @@ -417,7 +401,6 @@ std::string cmGlobalVisualStudio10Generator::FindMSBuildCommand() return msbuild; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio10Generator::FindDevEnvCommand() { if(this->ExpressEdition) @@ -432,7 +415,6 @@ std::string cmGlobalVisualStudio10Generator::FindDevEnvCommand() return this->cmGlobalVisualStudio71Generator::FindDevEnvCommand(); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator::GenerateBuildCommand( std::vector<std::string>& makeCommand, const std::string& makeProgram, @@ -537,7 +519,6 @@ void cmGlobalVisualStudio10Generator::GenerateBuildCommand( makeOptions.begin(), makeOptions.end()); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::Find64BitTools(cmMakefile* mf) { if(this->GetPlatformToolset()) @@ -564,16 +545,17 @@ bool cmGlobalVisualStudio10Generator::Find64BitTools(cmMakefile* mf) else { std::ostringstream e; + /* clang-format off */ e << "Cannot enable 64-bit tools with Visual Studio 2010 Express.\n" << "Install the Microsoft Windows SDK v7.1 to get 64-bit tools:\n" << " http://msdn.microsoft.com/en-us/windows/bb980924.aspx"; + /* clang-format on */ mf->IssueMessage(cmake::FATAL_ERROR, e.str().c_str()); cmSystemTools::SetFatalErrorOccured(); return false; } } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio10Generator ::GenerateRuleFile(std::string const& output) const @@ -591,7 +573,6 @@ cmGlobalVisualStudio10Generator return ruleFile; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio10Generator::PathTooLong( cmGeneratorTarget *target, cmSourceFile const* sf, std::string const& sfRel) @@ -608,25 +589,16 @@ void cmGlobalVisualStudio10Generator::PathTooLong( } } -//---------------------------------------------------------------------------- -bool cmGlobalVisualStudio10Generator::UseFolderProperty() -{ - return IsExpressEdition() ? false : cmGlobalGenerator::UseFolderProperty(); -} - -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio10Generator::IsNsightTegra() const { return !this->NsightTegraVersion.empty(); } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio10Generator::GetNsightTegraVersion() const { return this->NsightTegraVersion; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio10Generator::GetInstalledNsightTegraVersion() { std::string version; diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h index 6bf4740..8723fd1 100644 --- a/Source/cmGlobalVisualStudio10Generator.h +++ b/Source/cmGlobalVisualStudio10Generator.h @@ -56,9 +56,6 @@ public: cmMakefile *, bool optional); virtual void WriteSLNHeader(std::ostream& fout); - /** Is the installed VS an Express edition? */ - bool IsExpressEdition() const { return this->ExpressEdition; } - /** Generating for Nsight Tegra VS plugin? */ bool IsNsightTegra() const; std::string GetNsightTegraVersion() const; @@ -129,9 +126,6 @@ protected: bool SystemIsWindowsCE; bool SystemIsWindowsPhone; bool SystemIsWindowsStore; - bool ExpressEdition; - - bool UseFolderProperty(); private: class Factory; diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx index 9522f6e..1a17c6f 100644 --- a/Source/cmGlobalVisualStudio11Generator.cxx +++ b/Source/cmGlobalVisualStudio11Generator.cxx @@ -10,9 +10,10 @@ See the License for more information. ============================================================================*/ #include "cmGlobalVisualStudio11Generator.h" + +#include "cmAlgorithms.h" #include "cmLocalVisualStudio10Generator.h" #include "cmMakefile.h" -#include "cmAlgorithms.h" static const char vs11generatorName[] = "Visual Studio 11 2012"; @@ -100,13 +101,11 @@ public: virtual bool SupportsToolset() const { return true; } }; -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalVisualStudio11Generator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator(cmake* cm, const std::string& name, const std::string& platformName) : cmGlobalVisualStudio10Generator(cm, name, platformName) @@ -119,7 +118,6 @@ cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator(cmake* cm, this->Version = VS11; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::MatchesGeneratorName( const std::string& name) const @@ -132,7 +130,6 @@ cmGlobalVisualStudio11Generator::MatchesGeneratorName( return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::InitializeWindowsPhone(cmMakefile* mf) { if(!this->SelectWindowsPhoneToolset(this->DefaultPlatformToolset)) @@ -155,7 +152,6 @@ bool cmGlobalVisualStudio11Generator::InitializeWindowsPhone(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::InitializeWindowsStore(cmMakefile* mf) { if(!this->SelectWindowsStoreToolset(this->DefaultPlatformToolset)) @@ -178,7 +174,6 @@ bool cmGlobalVisualStudio11Generator::InitializeWindowsStore(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::SelectWindowsPhoneToolset( std::string& toolset) const @@ -200,7 +195,6 @@ cmGlobalVisualStudio11Generator::SelectWindowsPhoneToolset( this->cmGlobalVisualStudio10Generator::SelectWindowsPhoneToolset(toolset); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::SelectWindowsStoreToolset( std::string& toolset) const @@ -222,7 +216,6 @@ cmGlobalVisualStudio11Generator::SelectWindowsStoreToolset( this->cmGlobalVisualStudio10Generator::SelectWindowsStoreToolset(toolset); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 12.00\n"; @@ -236,16 +229,14 @@ void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream& fout) } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::UseFolderProperty() { - // Intentionally skip over the parent class implementation and call the - // grand-parent class's implementation. Folders are not supported by the - // Express editions in VS10 and earlier, but they are in VS11 Express. - return cmGlobalVisualStudio8Generator::UseFolderProperty(); + // Intentionally skip up to the top-level class implementation. + // Folders are not supported by the Express editions in VS10 and earlier, + // but they are in VS11 Express and above. + return cmGlobalGenerator::UseFolderProperty(); } -//---------------------------------------------------------------------------- std::set<std::string> cmGlobalVisualStudio11Generator::GetInstalledWindowsCESDKs() { @@ -278,7 +269,6 @@ cmGlobalVisualStudio11Generator::GetInstalledWindowsCESDKs() return ret; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::NeedsDeploy(cmState::TargetType type) const { @@ -292,7 +282,6 @@ cmGlobalVisualStudio11Generator::NeedsDeploy(cmState::TargetType type) const return cmGlobalVisualStudio10Generator::NeedsDeploy(type); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::IsWindowsDesktopToolsetInstalled() const { @@ -313,7 +302,6 @@ cmGlobalVisualStudio11Generator::IsWindowsDesktopToolsetInstalled() const cmSystemTools::KeyWOW64_32); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::IsWindowsPhoneToolsetInstalled() const { @@ -329,7 +317,6 @@ cmGlobalVisualStudio11Generator::IsWindowsPhoneToolsetInstalled() const return !path.empty(); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio11Generator::IsWindowsStoreToolsetInstalled() const { diff --git a/Source/cmGlobalVisualStudio12Generator.cxx b/Source/cmGlobalVisualStudio12Generator.cxx index 568d4d7..10308a3 100644 --- a/Source/cmGlobalVisualStudio12Generator.cxx +++ b/Source/cmGlobalVisualStudio12Generator.cxx @@ -10,9 +10,10 @@ See the License for more information. ============================================================================*/ #include "cmGlobalVisualStudio12Generator.h" + +#include "cmAlgorithms.h" #include "cmLocalVisualStudio10Generator.h" #include "cmMakefile.h" -#include "cmAlgorithms.h" static const char vs12generatorName[] = "Visual Studio 12 2013"; @@ -80,13 +81,11 @@ public: virtual bool SupportsToolset() const { return true; } }; -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalVisualStudio12Generator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalVisualStudio12Generator::cmGlobalVisualStudio12Generator(cmake* cm, const std::string& name, const std::string& platformName) : cmGlobalVisualStudio11Generator(cm, name, platformName) @@ -99,7 +98,6 @@ cmGlobalVisualStudio12Generator::cmGlobalVisualStudio12Generator(cmake* cm, this->Version = VS12; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::MatchesGeneratorName( const std::string& name) const @@ -112,7 +110,6 @@ cmGlobalVisualStudio12Generator::MatchesGeneratorName( return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::InitializeWindowsPhone(cmMakefile* mf) { if(!this->SelectWindowsPhoneToolset(this->DefaultPlatformToolset)) @@ -135,7 +132,6 @@ bool cmGlobalVisualStudio12Generator::InitializeWindowsPhone(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::InitializeWindowsStore(cmMakefile* mf) { if(!this->SelectWindowsStoreToolset(this->DefaultPlatformToolset)) @@ -158,7 +154,6 @@ bool cmGlobalVisualStudio12Generator::InitializeWindowsStore(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::SelectWindowsPhoneToolset( std::string& toolset) const @@ -180,7 +175,6 @@ cmGlobalVisualStudio12Generator::SelectWindowsPhoneToolset( this->cmGlobalVisualStudio11Generator::SelectWindowsPhoneToolset(toolset); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::SelectWindowsStoreToolset( std::string& toolset) const @@ -202,7 +196,6 @@ cmGlobalVisualStudio12Generator::SelectWindowsStoreToolset( this->cmGlobalVisualStudio11Generator::SelectWindowsStoreToolset(toolset); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio12Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 12.00\n"; @@ -216,7 +209,6 @@ void cmGlobalVisualStudio12Generator::WriteSLNHeader(std::ostream& fout) } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::IsWindowsDesktopToolsetInstalled() const { @@ -230,7 +222,6 @@ cmGlobalVisualStudio12Generator::IsWindowsDesktopToolsetInstalled() const cmSystemTools::KeyWOW64_32); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::IsWindowsPhoneToolsetInstalled() const { @@ -245,7 +236,6 @@ cmGlobalVisualStudio12Generator::IsWindowsPhoneToolsetInstalled() const return !path.empty(); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio12Generator::IsWindowsStoreToolsetInstalled() const { diff --git a/Source/cmGlobalVisualStudio14Generator.cxx b/Source/cmGlobalVisualStudio14Generator.cxx index c058f8c..8f93e17 100644 --- a/Source/cmGlobalVisualStudio14Generator.cxx +++ b/Source/cmGlobalVisualStudio14Generator.cxx @@ -10,9 +10,10 @@ See the License for more information. ============================================================================*/ #include "cmGlobalVisualStudio14Generator.h" + +#include "cmAlgorithms.h" #include "cmLocalVisualStudio10Generator.h" #include "cmMakefile.h" -#include "cmAlgorithms.h" static const char vs14generatorName[] = "Visual Studio 14 2015"; @@ -80,13 +81,11 @@ public: virtual bool SupportsToolset() const { return true; } }; -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalVisualStudio14Generator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalVisualStudio14Generator::cmGlobalVisualStudio14Generator(cmake* cm, const std::string& name, const std::string& platformName) : cmGlobalVisualStudio12Generator(cm, name, platformName) @@ -99,7 +98,6 @@ cmGlobalVisualStudio14Generator::cmGlobalVisualStudio14Generator(cmake* cm, this->Version = VS14; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::MatchesGeneratorName( const std::string& name) const @@ -112,7 +110,6 @@ cmGlobalVisualStudio14Generator::MatchesGeneratorName( return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::InitializeWindows(cmMakefile* mf) { if (cmHasLiteralPrefix(this->SystemVersion, "10.0")) @@ -122,7 +119,6 @@ bool cmGlobalVisualStudio14Generator::InitializeWindows(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::InitializeWindowsStore(cmMakefile* mf) { std::ostringstream e; @@ -150,7 +146,6 @@ bool cmGlobalVisualStudio14Generator::InitializeWindowsStore(cmMakefile* mf) return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::SelectWindows10SDK(cmMakefile* mf, bool required) { @@ -169,7 +164,6 @@ bool cmGlobalVisualStudio14Generator::SelectWindows10SDK(cmMakefile* mf, return true; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::SelectWindowsStoreToolset( std::string& toolset) const @@ -191,7 +185,6 @@ cmGlobalVisualStudio14Generator::SelectWindowsStoreToolset( this->cmGlobalVisualStudio12Generator::SelectWindowsStoreToolset(toolset); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio14Generator::WriteSLNHeader(std::ostream& fout) { // Visual Studio 14 writes .sln format 12.00 @@ -206,7 +199,6 @@ void cmGlobalVisualStudio14Generator::WriteSLNHeader(std::ostream& fout) } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::IsWindowsDesktopToolsetInstalled() const { @@ -219,7 +211,6 @@ cmGlobalVisualStudio14Generator::IsWindowsDesktopToolsetInstalled() const vc14, cmSystemTools::KeyWOW64_32); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio14Generator::IsWindowsStoreToolsetInstalled() const { @@ -242,7 +233,6 @@ struct NoWindowsH }; #endif -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio14Generator::GetWindows10SDKVersion() { #if defined(_WIN32) && !defined(__CYGWIN__) diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index 7b51fdf..2aec245 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -10,12 +10,13 @@ See the License for more information. ============================================================================*/ #include "windows.h" // this must be first to define GetCurrentDirectory + #include "cmGlobalVisualStudio71Generator.h" + #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" #include "cmake.h" -//---------------------------------------------------------------------------- cmGlobalVisualStudio71Generator::cmGlobalVisualStudio71Generator(cmake* cm, const std::string& platformName) : cmGlobalVisualStudio7Generator(cm, platformName) @@ -24,7 +25,6 @@ cmGlobalVisualStudio71Generator::cmGlobalVisualStudio71Generator(cmake* cm, this->Version = VS71; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio71Generator::GetUserMacrosDirectory() { // Macros not supported on Visual Studio 7.1 and earlier because @@ -63,7 +63,6 @@ std::string cmGlobalVisualStudio71Generator::GetUserMacrosDirectory() #endif } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio71Generator::GetUserMacrosRegKeyBase() { // Macros not supported on Visual Studio 7.1 and earlier because @@ -77,7 +76,6 @@ std::string cmGlobalVisualStudio71Generator::GetUserMacrosRegKeyBase() #endif } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio71Generator ::WriteSLNFile(std::ostream& fout, cmLocalGenerator* root, @@ -147,7 +145,6 @@ void cmGlobalVisualStudio71Generator this->WriteSLNFooter(fout); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio71Generator ::WriteSolutionConfigurations(std::ostream& fout, @@ -162,7 +159,6 @@ cmGlobalVisualStudio71Generator fout << "\tEndGlobalSection\n"; } -//---------------------------------------------------------------------------- // Write a dsp file into the SLN file, // Note, that dependencies from executables to // the libraries it uses are also done here @@ -202,6 +198,7 @@ cmGlobalVisualStudio71Generator::WriteProject(std::ostream& fout, if(ui != this->UtilityDepends.end()) { const char* uname = ui->second.c_str(); + /* clang-format off */ fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" << uname << "\", \"" << this->ConvertToSolutionPath(dir) << (dir[0]? "\\":"") @@ -211,10 +208,10 @@ cmGlobalVisualStudio71Generator::WriteProject(std::ostream& fout, << "\t\t{" << guid << "} = {" << guid << "}\n" << "\tEndProjectSection\n" << "EndProject\n"; + /* clang-format on */ } } -//---------------------------------------------------------------------------- // Write a dsp file into the SLN file, // Note, that dependencies from executables to // the libraries it uses are also done here @@ -242,7 +239,6 @@ cmGlobalVisualStudio71Generator } } -//---------------------------------------------------------------------------- // Write a dsp file into the SLN file, Note, that dependencies from // executables to the libraries it uses are also done here void cmGlobalVisualStudio71Generator @@ -285,7 +281,6 @@ void cmGlobalVisualStudio71Generator } -//---------------------------------------------------------------------------- // Write a dsp file into the SLN file, Note, that dependencies from // executables to the libraries it uses are also done here void cmGlobalVisualStudio71Generator @@ -313,17 +308,15 @@ void cmGlobalVisualStudio71Generator } } -//---------------------------------------------------------------------------- // ouput standard header for dsw file void cmGlobalVisualStudio71Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 8.00\n"; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio71Generator ::GetDocumentation(cmDocumentationEntry& entry) { entry.Name = cmGlobalVisualStudio71Generator::GetActualName(); - entry.Brief = "Generates Visual Studio .NET 2003 project files."; + entry.Brief = "Deprecated. Generates Visual Studio .NET 2003 project files."; } diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h index 5035fda..d20ffbc 100644 --- a/Source/cmGlobalVisualStudio71Generator.h +++ b/Source/cmGlobalVisualStudio71Generator.h @@ -75,6 +75,9 @@ protected: const std::set<std::string>& depends); virtual void WriteSLNHeader(std::ostream& fout); + // Folders are not supported by VS 7.1. + virtual bool UseFolderProperty() { return false; } + std::string ProjectConfigurationSectionName; }; #endif diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index c1c8c77..6fefa9e 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -10,8 +10,9 @@ See the License for more information. ============================================================================*/ #include "windows.h" // this must be first to define GetCurrentDirectory -#include <assert.h> + #include "cmGlobalVisualStudio7Generator.h" + #include "cmGeneratedFileStream.h" #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" @@ -19,7 +20,8 @@ #include "cmake.h" #include <cmsys/Encoding.hxx> -//---------------------------------------------------------------------------- +#include <assert.h> + static cmVS7FlagTable cmVS7ExtraFlagTable[] = { // Precompiled header and related options. Note that the @@ -143,7 +145,6 @@ void cmGlobalVisualStudio7Generator } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio7Generator::FindMakeProgram(cmMakefile* mf) { this->cmGlobalVisualStudioGenerator::FindMakeProgram(mf); @@ -151,7 +152,6 @@ void cmGlobalVisualStudio7Generator::FindMakeProgram(cmMakefile* mf) this->GetDevEnvCommand().c_str()); } -//---------------------------------------------------------------------------- std::string const& cmGlobalVisualStudio7Generator::GetDevEnvCommand() { if(!this->DevEnvCommandInitialized) @@ -162,7 +162,6 @@ std::string const& cmGlobalVisualStudio7Generator::GetDevEnvCommand() return this->DevEnvCommand; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio7Generator::FindDevEnvCommand() { std::string vscmd; @@ -177,7 +176,6 @@ std::string cmGlobalVisualStudio7Generator::FindDevEnvCommand() return vscmd; } -//---------------------------------------------------------------------------- const char* cmGlobalVisualStudio7Generator::ExternalProjectType( const char* location) { @@ -212,7 +210,6 @@ const char* cmGlobalVisualStudio7Generator::ExternalProjectType( } return "8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942"; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio7Generator::GenerateBuildCommand( std::vector<std::string>& makeCommand, const std::string& makeProgram, @@ -287,7 +284,6 @@ cmLocalGenerator *cmGlobalVisualStudio7Generator::CreateLocalGenerator( return lg; } -//---------------------------------------------------------------------------- std::string const& cmGlobalVisualStudio7Generator::GetPlatformName() const { if(!this->GeneratorPlatform.empty()) @@ -297,7 +293,6 @@ std::string const& cmGlobalVisualStudio7Generator::GetPlatformName() const return this->DefaultPlatformName; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio7Generator::SetSystemName(std::string const& s, cmMakefile* mf) { @@ -306,7 +301,6 @@ bool cmGlobalVisualStudio7Generator::SetSystemName(std::string const& s, return this->cmGlobalVisualStudioGenerator::SetSystemName(s, mf); } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio7Generator::SetGeneratorPlatform(std::string const& p, cmMakefile* mf) { @@ -335,6 +329,23 @@ void cmGlobalVisualStudio7Generator::Generate() { this->CallVisualStudioMacro(MacroReload); } + + if (this->Version == VS71 && + !this->CMakeInstance->GetIsInTryCompile()) + { + const char* cmakeWarnVS71 = + this->CMakeInstance->GetState()->GetCacheEntryValue("CMAKE_WARN_VS71"); + if (!cmakeWarnVS71 || !cmSystemTools::IsOff(cmakeWarnVS71)) + { + this->CMakeInstance->IssueMessage( + cmake::WARNING, + "The \"Visual Studio 7 .NET 2003\" generator is deprecated " + "and will be removed in a future version of CMake." + "\n" + "Add CMAKE_WARN_VS71=OFF to the cache to disable this warning." + ); + } + } } void cmGlobalVisualStudio7Generator @@ -533,7 +544,6 @@ void cmGlobalVisualStudio7Generator::WriteTargetDepends( } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio7Generator::WriteFolders(std::ostream& fout) { const char *prefix = "CMAKE_FOLDER_GUID_"; @@ -562,7 +572,6 @@ void cmGlobalVisualStudio7Generator::WriteFolders(std::ostream& fout) } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio7Generator::WriteFoldersContent(std::ostream& fout) { for(std::map<std::string,std::set<std::string> >::iterator iter = @@ -582,7 +591,6 @@ void cmGlobalVisualStudio7Generator::WriteFoldersContent(std::ostream& fout) } } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio7Generator::ConvertToSolutionPath(const char* path) { @@ -667,7 +675,6 @@ void cmGlobalVisualStudio7Generator::WriteSLNFooter(std::ostream& fout) fout << "EndGlobal\n"; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio7Generator::WriteUtilityDepend( cmGeneratorTarget const* target) @@ -684,6 +691,7 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend( fout.SetCopyIfDifferent(true); std::string guid = this->GetGUID(pname.c_str()); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding = \"" << this->Encoding() << "\"?>\n" @@ -696,9 +704,11 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend( "\t<Platforms><Platform Name=\"Win32\"/></Platforms>\n" "\t<Configurations>\n" ; + /* clang-format on */ for(std::vector<std::string>::iterator i = configs.begin(); i != configs.end(); ++i) { + /* clang-format off */ fout << "\t\t<Configuration\n" "\t\t\tName=\"" << *i << "|Win32\"\n" @@ -710,13 +720,16 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend( "\t\t\tCharacterSet=\"2\">\n" "\t\t</Configuration>\n" ; + /* clang-format on */ } + /* clang-format off */ fout << "\t</Configurations>\n" "\t<Files></Files>\n" "\t<Globals></Globals>\n" "</VisualStudioProject>\n" ; + /* clang-format on */ if(fout.Close()) { @@ -725,7 +738,6 @@ cmGlobalVisualStudio7Generator::WriteUtilityDepend( return pname; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) { std::string const& guidStoreName = name + "_GUID_CMAKE"; @@ -750,7 +762,6 @@ std::string cmGlobalVisualStudio7Generator::GetGUID(std::string const& name) return cmSystemTools::UpperCase(guid); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio7Generator ::AppendDirectoryForConfig(const std::string& prefix, diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index 02f9809..a360bd9 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -13,6 +13,7 @@ #define cmGlobalVisualStudio7Generator_h #include "cmGlobalVisualStudioGenerator.h" + #include "cmGlobalGeneratorFactory.h" class cmTarget; diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index 3abff6c..76baf0d 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -10,13 +10,15 @@ See the License for more information. ============================================================================*/ #include "windows.h" // this must be first to define GetCurrentDirectory + #include "cmGlobalVisualStudio8Generator.h" + +#include "cmGeneratedFileStream.h" #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" +#include "cmSourceFile.h" #include "cmVisualStudioWCEPlatformParser.h" #include "cmake.h" -#include "cmGeneratedFileStream.h" -#include "cmSourceFile.h" static const char vs8generatorName[] = "Visual Studio 8 2005"; @@ -88,13 +90,11 @@ public: virtual bool SupportsToolset() const { return false; } }; -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalVisualStudio8Generator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalVisualStudio8Generator::cmGlobalVisualStudio8Generator(cmake* cm, const std::string& name, const std::string& platformName) : cmGlobalVisualStudio71Generator(cm, platformName) @@ -103,9 +103,12 @@ cmGlobalVisualStudio8Generator::cmGlobalVisualStudio8Generator(cmake* cm, this->Name = name; this->ExtraFlagTable = this->GetExtraFlagTableVS8(); this->Version = VS8; + std::string vc8Express; + this->ExpressEdition = cmSystemTools::ReadRegistryValue( + "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\8.0\\Setup\\VC;" + "ProductDir", vc8Express, cmSystemTools::KeyWOW64_32); } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio8Generator::FindDevEnvCommand() { // First look for VCExpress. @@ -125,7 +128,6 @@ std::string cmGlobalVisualStudio8Generator::FindDevEnvCommand() return this->cmGlobalVisualStudio71Generator::FindDevEnvCommand(); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator ::EnableLanguage(std::vector<std::string>const & lang, cmMakefile *mf, bool optional) @@ -142,7 +144,6 @@ void cmGlobalVisualStudio8Generator cmGlobalVisualStudio7Generator::EnableLanguage(lang, mf, optional); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf) { if(this->TargetsWindowsCE()) @@ -152,7 +153,6 @@ void cmGlobalVisualStudio8Generator::AddPlatformDefinitions(cmMakefile* mf) } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio8Generator::SetGeneratorPlatform(std::string const& p, cmMakefile* mf) { @@ -167,7 +167,6 @@ bool cmGlobalVisualStudio8Generator::SetGeneratorPlatform(std::string const& p, } } -//---------------------------------------------------------------------------- // ouput standard header for dsw file void cmGlobalVisualStudio8Generator::WriteSLNHeader(std::ostream& fout) { @@ -175,7 +174,6 @@ void cmGlobalVisualStudio8Generator::WriteSLNHeader(std::ostream& fout) fout << "# Visual Studio 2005\n"; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator ::GetDocumentation(cmDocumentationEntry& entry) { @@ -183,13 +181,16 @@ void cmGlobalVisualStudio8Generator entry.Brief = "Generates Visual Studio 8 2005 project files."; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator::Configure() { this->cmGlobalVisualStudio7Generator::Configure(); } -//---------------------------------------------------------------------------- +bool cmGlobalVisualStudio8Generator::UseFolderProperty() +{ + return IsExpressEdition() ? false : cmGlobalGenerator::UseFolderProperty(); +} + std::string cmGlobalVisualStudio8Generator::GetUserMacrosDirectory() { // Some VS8 sp0 versions cannot run macros. @@ -227,13 +228,11 @@ std::string cmGlobalVisualStudio8Generator::GetUserMacrosDirectory() return path; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio8Generator::GetUserMacrosRegKeyBase() { return "Software\\Microsoft\\VisualStudio\\8.0\\vsmacros"; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio8Generator::AddCheckTarget() { // Add a special target on which all other targets depend that @@ -349,7 +348,6 @@ bool cmGlobalVisualStudio8Generator::AddCheckTarget() return true; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator::AddExtraIDETargets() { cmGlobalVisualStudio7Generator::AddExtraIDETargets(); @@ -372,7 +370,6 @@ void cmGlobalVisualStudio8Generator::AddExtraIDETargets() } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator ::WriteSolutionConfigurations(std::ostream& fout, @@ -388,7 +385,6 @@ cmGlobalVisualStudio8Generator fout << "\tEndGlobalSection\n"; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator ::WriteProjectConfigurations( @@ -427,7 +423,6 @@ cmGlobalVisualStudio8Generator } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio8Generator::NeedsDeploy(cmState::TargetType type) const { @@ -436,7 +431,6 @@ cmGlobalVisualStudio8Generator::NeedsDeploy(cmState::TargetType type) const return this->TargetsWindowsCE() && needsDeploy; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio8Generator::ComputeTargetDepends() { // Skip over the cmGlobalVisualStudioGenerator implementation! @@ -444,7 +438,6 @@ bool cmGlobalVisualStudio8Generator::ComputeTargetDepends() return this->cmGlobalGenerator::ComputeTargetDepends(); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio8Generator::WriteProjectDepends( std::ostream& fout, const std::string&, const char*, cmGeneratorTarget const* gt) @@ -463,7 +456,6 @@ void cmGlobalVisualStudio8Generator::WriteProjectDepends( } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudio8Generator::NeedLinkLibraryDependencies( cmGeneratorTarget *target) { @@ -488,7 +480,6 @@ bool cmGlobalVisualStudio8Generator::NeedLinkLibraryDependencies( return false; } -//---------------------------------------------------------------------------- static cmVS7FlagTable cmVS8ExtraFlagTable[] = { {"CallingConvention", "Gd", "cdecl", "0", 0 }, diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h index b3093cc..6eb8450 100644 --- a/Source/cmGlobalVisualStudio8Generator.h +++ b/Source/cmGlobalVisualStudio8Generator.h @@ -66,6 +66,9 @@ public: virtual bool TargetsWindowsCE() const { return !this->WindowsCEVersion.empty(); } + /** Is the installed VS an Express edition? */ + bool IsExpressEdition() const { return this->ExpressEdition; } + protected: virtual void AddExtraIDETargets(); virtual const char* GetIDEVersion() { return "8.0"; } @@ -94,8 +97,11 @@ protected: const char* path, const cmGeneratorTarget *t); + bool UseFolderProperty(); + std::string Name; std::string WindowsCEVersion; + bool ExpressEdition; private: class Factory; diff --git a/Source/cmGlobalVisualStudio9Generator.cxx b/Source/cmGlobalVisualStudio9Generator.cxx index 884f754..6052856 100644 --- a/Source/cmGlobalVisualStudio9Generator.cxx +++ b/Source/cmGlobalVisualStudio9Generator.cxx @@ -10,7 +10,9 @@ See the License for more information. ============================================================================*/ #include "windows.h" // this must be first to define GetCurrentDirectory + #include "cmGlobalVisualStudio9Generator.h" + #include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" #include "cmVisualStudioWCEPlatformParser.h" @@ -92,28 +94,28 @@ public: virtual bool SupportsToolset() const { return false; } }; -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalVisualStudio9Generator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalVisualStudio9Generator::cmGlobalVisualStudio9Generator(cmake* cm, const std::string& name, const std::string& platformName) : cmGlobalVisualStudio8Generator(cm, name, platformName) { this->Version = VS9; + std::string vc9Express; + this->ExpressEdition = cmSystemTools::ReadRegistryValue( + "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\9.0\\Setup\\VC;" + "ProductDir", vc9Express, cmSystemTools::KeyWOW64_32); } -//---------------------------------------------------------------------------- void cmGlobalVisualStudio9Generator::WriteSLNHeader(std::ostream& fout) { fout << "Microsoft Visual Studio Solution File, Format Version 10.00\n"; fout << "# Visual Studio 2008\n"; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio9Generator::GetUserMacrosDirectory() { std::string base; @@ -140,7 +142,6 @@ std::string cmGlobalVisualStudio9Generator::GetUserMacrosDirectory() return path; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudio9Generator::GetUserMacrosRegKeyBase() { return "Software\\Microsoft\\VisualStudio\\9.0\\vsmacros"; diff --git a/Source/cmGlobalVisualStudioGenerator.cxx b/Source/cmGlobalVisualStudioGenerator.cxx index 04146fb..4f6aa20 100644 --- a/Source/cmGlobalVisualStudioGenerator.cxx +++ b/Source/cmGlobalVisualStudioGenerator.cxx @@ -12,6 +12,7 @@ ============================================================================*/ #include "cmGlobalVisualStudioGenerator.h" +#include "cmAlgorithms.h" #include "cmCallVisualStudioMacro.h" #include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" @@ -20,9 +21,7 @@ #include "cmSourceFile.h" #include "cmTarget.h" #include <cmsys/Encoding.hxx> -#include "cmAlgorithms.h" -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::cmGlobalVisualStudioGenerator(cmake* cm) : cmGlobalGenerator(cm) { @@ -30,32 +29,27 @@ cmGlobalVisualStudioGenerator::cmGlobalVisualStudioGenerator(cmake* cm) cm->GetState()->SetWindowsVSIDE(true); } -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::~cmGlobalVisualStudioGenerator() { } -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::VSVersion cmGlobalVisualStudioGenerator::GetVersion() const { return this->Version; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::SetVersion(VSVersion v) { this->Version = v; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetRegistryBase() { return cmGlobalVisualStudioGenerator::GetRegistryBase( this->GetIDEVersion()); } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetRegistryBase( const char* version) { @@ -63,7 +57,6 @@ std::string cmGlobalVisualStudioGenerator::GetRegistryBase( return key + version; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::AddExtraIDETargets() { // Add a special target that depends on ALL projects for easy build @@ -92,7 +85,7 @@ void cmGlobalVisualStudioGenerator::AddExtraIDETargets() // // Organize in the "predefined targets" folder: // - if (this->UseFolderProperty() && this->GetVersion() > VS71) + if (this->UseFolderProperty()) { allBuild->SetProperty("FOLDER", this->GetPredefinedTargetsFolder()); } @@ -136,7 +129,6 @@ void cmGlobalVisualStudioGenerator::AddExtraIDETargets() } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator ::ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const { @@ -157,7 +149,6 @@ void cmGlobalVisualStudioGenerator gt->ObjectDirectory = dir; } -//---------------------------------------------------------------------------- bool IsVisualStudioMacrosFileRegistered(const std::string& macrosFile, const std::string& regKeyBase, std::string& nextAvailableSubKeyName); @@ -165,7 +156,6 @@ bool IsVisualStudioMacrosFileRegistered(const std::string& macrosFile, void RegisterVisualStudioMacros(const std::string& macrosFile, const std::string& regKeyBase); -//---------------------------------------------------------------------------- #define CMAKE_VSMACROS_FILENAME \ "CMakeVSMacros2.vsmacros" @@ -175,7 +165,6 @@ void RegisterVisualStudioMacros(const std::string& macrosFile, #define CMAKE_VSMACROS_STOP_MACRONAME \ "Macros.CMakeVSMacros2.Macros.StopBuild" -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::ConfigureCMakeVisualStudioMacros() { std::string dir = this->GetUserMacrosDirectory(); @@ -209,7 +198,6 @@ void cmGlobalVisualStudioGenerator::ConfigureCMakeVisualStudioMacros() } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator ::CallVisualStudioMacro(MacroName m, @@ -282,19 +270,16 @@ cmGlobalVisualStudioGenerator } } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetUserMacrosDirectory() { return ""; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetUserMacrosRegKeyBase() { return ""; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::FillLinkClosure( const cmGeneratorTarget *target, TargetSet& linked) @@ -314,7 +299,6 @@ void cmGlobalVisualStudioGenerator::FillLinkClosure( } } -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::TargetSet const& cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmGeneratorTarget* target) { @@ -328,7 +312,6 @@ cmGlobalVisualStudioGenerator::GetTargetLinkClosure(cmGeneratorTarget* target) return i->second; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::FollowLinkDepends( const cmGeneratorTarget *target, std::set<const cmGeneratorTarget *> &linked) @@ -354,7 +337,6 @@ void cmGlobalVisualStudioGenerator::FollowLinkDepends( } } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudioGenerator::ComputeTargetDepends() { if(!this->cmGlobalGenerator::ComputeTargetDepends()) @@ -379,13 +361,11 @@ bool cmGlobalVisualStudioGenerator::ComputeTargetDepends() return true; } -//---------------------------------------------------------------------------- static bool VSLinkable(cmGeneratorTarget const* t) { return t->IsLinkable() || t->GetType() == cmState::OBJECT_LIBRARY; } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends( cmGeneratorTarget* target) { @@ -484,7 +464,6 @@ void cmGlobalVisualStudioGenerator::ComputeVSTargetDepends( } } -//---------------------------------------------------------------------------- void cmGlobalVisualStudioGenerator::FindMakeProgram(cmMakefile* mf) { // Visual Studio generators know how to lookup their build tool @@ -497,7 +476,6 @@ void cmGlobalVisualStudioGenerator::FindMakeProgram(cmMakefile* mf) } } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetUtilityDepend( cmGeneratorTarget const* target) @@ -512,7 +490,6 @@ cmGlobalVisualStudioGenerator::GetUtilityDepend( return i->second; } -//---------------------------------------------------------------------------- std::string cmGlobalVisualStudioGenerator::GetStartupProjectName( cmLocalGenerator const* root) const @@ -538,10 +515,8 @@ cmGlobalVisualStudioGenerator::GetStartupProjectName( return this->GetAllTargetName(); } -//---------------------------------------------------------------------------- #include <windows.h> -//---------------------------------------------------------------------------- bool IsVisualStudioMacrosFileRegistered(const std::string& macrosFile, const std::string& regKeyBase, std::string& nextAvailableSubKeyName) @@ -712,7 +687,6 @@ bool IsVisualStudioMacrosFileRegistered(const std::string& macrosFile, return macrosRegistered; } -//---------------------------------------------------------------------------- void WriteVSMacrosFileRegistryEntry( const std::string& nextAvailableSubKeyName, const std::string& macrosFile, @@ -785,7 +759,6 @@ void WriteVSMacrosFileRegistryEntry( } } -//---------------------------------------------------------------------------- void RegisterVisualStudioMacros(const std::string& macrosFile, const std::string& regKeyBase) { @@ -872,7 +845,6 @@ cmGlobalVisualStudioGenerator::TargetIsFortranOnly(cmGeneratorTarget const* gt) return false; } -//---------------------------------------------------------------------------- bool cmGlobalVisualStudioGenerator::TargetCompare ::operator()(cmGeneratorTarget const* l, cmGeneratorTarget const* r) const @@ -891,7 +863,6 @@ cmGlobalVisualStudioGenerator::TargetCompare return l->GetName() < r->GetName(); } -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::OrderedTargetDependSet ::OrderedTargetDependSet(TargetDependSet const& targets, std::string const& first): @@ -900,7 +871,6 @@ cmGlobalVisualStudioGenerator::OrderedTargetDependSet this->insert(targets.begin(), targets.end()); } -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::OrderedTargetDependSet ::OrderedTargetDependSet(TargetSet const& targets, std::string const& first): diff --git a/Source/cmGlobalWatcomWMakeGenerator.cxx b/Source/cmGlobalWatcomWMakeGenerator.cxx index 153773f..461b9b1 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.cxx +++ b/Source/cmGlobalWatcomWMakeGenerator.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmGlobalWatcomWMakeGenerator.h" + #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" @@ -49,7 +50,6 @@ void cmGlobalWatcomWMakeGenerator this->cmGlobalUnixMakefileGenerator3::EnableLanguage(l, mf, optional); } -//---------------------------------------------------------------------------- void cmGlobalWatcomWMakeGenerator ::GetDocumentation(cmDocumentationEntry& entry) { diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index 7c85281..022b802 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -10,22 +10,22 @@ See the License for more information. ============================================================================*/ #include "cmGlobalXCodeGenerator.h" -#include "cmLocalXCodeGenerator.h" -#include "cmMakefile.h" -#include "cmXCodeObject.h" -#include "cmXCode21Object.h" -#include "cmake.h" -#include "cmGeneratedFileStream.h" + +#include "cmAlgorithms.h" #include "cmComputeLinkInformation.h" -#include "cmSourceFile.h" #include "cmCustomCommandGenerator.h" +#include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" #include "cmGlobalGeneratorFactory.h" -#include "cmAlgorithms.h" +#include "cmLocalXCodeGenerator.h" +#include "cmMakefile.h" +#include "cmSourceFile.h" +#include "cmXCode21Object.h" +#include "cmXCodeObject.h" +#include "cmake.h" #include <cmsys/auto_ptr.hxx> -//---------------------------------------------------------------------------- #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmXMLParser.h" @@ -84,7 +84,7 @@ public: bool IsEmpty() const { return this->Empty; } - void Add(const char *newString) + void Add(const std::string& newString) { this->Empty = false; @@ -109,7 +109,7 @@ public: } else { - return this->Generator->CreateString(this->String.c_str()); + return this->Generator->CreateString(this->String); } } }; @@ -129,7 +129,6 @@ public: virtual bool SupportsToolset() const { return true; } }; -//---------------------------------------------------------------------------- cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm, std::string const& version) : cmGlobalGenerator(cm) @@ -150,13 +149,11 @@ cmGlobalXCodeGenerator::cmGlobalXCodeGenerator(cmake* cm, this->XcodeBuildCommandInitialized = false; } -//---------------------------------------------------------------------------- cmGlobalGeneratorFactory* cmGlobalXCodeGenerator::NewFactory() { return new Factory; } -//---------------------------------------------------------------------------- cmGlobalGenerator* cmGlobalXCodeGenerator::Factory ::CreateGlobalGenerator(const std::string& name, cmake* cm) const { @@ -206,7 +203,6 @@ cmGlobalGenerator* cmGlobalXCodeGenerator::Factory #endif } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::FindMakeProgram(cmMakefile* mf) { // The Xcode generator knows how to lookup its build tool @@ -219,7 +215,6 @@ void cmGlobalXCodeGenerator::FindMakeProgram(cmMakefile* mf) } } -//---------------------------------------------------------------------------- std::string const& cmGlobalXCodeGenerator::GetXcodeBuildCommand() { if(!this->XcodeBuildCommandInitialized) @@ -230,7 +225,6 @@ std::string const& cmGlobalXCodeGenerator::GetXcodeBuildCommand() return this->XcodeBuildCommand; } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::FindXcodeBuildCommand() { if (this->XcodeVersion >= 40) @@ -249,7 +243,6 @@ std::string cmGlobalXCodeGenerator::FindXcodeBuildCommand() } } -//---------------------------------------------------------------------------- bool cmGlobalXCodeGenerator::SetGeneratorToolset(std::string const& ts, cmMakefile* mf) { @@ -269,7 +262,6 @@ bool cmGlobalXCodeGenerator::SetGeneratorToolset(std::string const& ts, } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::EnableLanguage(std::vector<std::string>const& lang, cmMakefile * mf, bool optional) @@ -306,7 +298,6 @@ void cmGlobalXCodeGenerator::EnableLanguage(std::vector<std::string>const& } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::GenerateBuildCommand( std::vector<std::string>& makeCommand, @@ -370,7 +361,6 @@ cmGlobalXCodeGenerator::GenerateBuildCommand( makeOptions.begin(), makeOptions.end()); } -//---------------------------------------------------------------------------- ///! Create a local generator appropriate to this Global Generator cmLocalGenerator * cmGlobalXCodeGenerator::CreateLocalGenerator(cmMakefile* mf) @@ -409,7 +399,6 @@ void cmGlobalXCodeGenerator::Generate() } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::SetGenerationRoot(cmLocalGenerator* root) { this->CurrentProject = root->GetProjectName(); @@ -428,7 +417,6 @@ void cmGlobalXCodeGenerator::SetGenerationRoot(cmLocalGenerator* root) this->CurrentXCodeHackMakefile += "/XCODE_DEPEND_HELPER.make"; } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::PostBuildMakeTarget(std::string const& tName, std::string const& configName) @@ -443,10 +431,8 @@ cmGlobalXCodeGenerator::PostBuildMakeTarget(std::string const& tName, return out; } -//---------------------------------------------------------------------------- #define CMAKE_CHECK_BUILD_SYSTEM_TARGET "ZERO_CHECK" -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root, std::vector<cmLocalGenerator*>& gens) @@ -569,7 +555,6 @@ cmGlobalXCodeGenerator::AddExtraTargets(cmLocalGenerator* root, } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::CreateReRunCMakeFile( cmLocalGenerator* root, std::vector<cmLocalGenerator*> const& gens) { @@ -622,21 +607,18 @@ void cmGlobalXCodeGenerator::CreateReRunCMakeFile( root->GetBinaryDirectory()) << "\n"; } -//---------------------------------------------------------------------------- static bool objectIdLessThan(cmXCodeObject* l, cmXCodeObject* r) { return l->GetId() < r->GetId(); } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::SortXCodeObjects() { std::sort(this->XCodeObjects.begin(), this->XCodeObjects.end(), objectIdLessThan); } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::ClearXCodeObjects() { this->TargetDoneSet.clear(); @@ -653,7 +635,6 @@ void cmGlobalXCodeGenerator::ClearXCodeObjects() this->FileRefs.clear(); } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::addObject(cmXCodeObject *obj) { if(obj->GetType() == cmXCodeObject::OBJECT) @@ -674,7 +655,6 @@ void cmGlobalXCodeGenerator::addObject(cmXCodeObject *obj) this->XCodeObjects.push_back(obj); } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::PBXType ptype) { @@ -691,7 +671,6 @@ cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::PBXType ptype) return obj; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::Type type) { @@ -700,7 +679,6 @@ cmGlobalXCodeGenerator::CreateObject(cmXCodeObject::Type type) return obj; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateString(const std::string& s) { @@ -709,7 +687,6 @@ cmGlobalXCodeGenerator::CreateString(const std::string& s) return obj; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator ::CreateObjectReference(cmXCodeObject* ref) { @@ -718,7 +695,6 @@ cmXCodeObject* cmGlobalXCodeGenerator return obj; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator ::CreateFlatClone(cmXCodeObject* orig) { @@ -727,7 +703,6 @@ cmXCodeObject* cmGlobalXCodeGenerator return obj; } -//---------------------------------------------------------------------------- std::string GetGroupMapKeyFromPath(cmGeneratorTarget* target, const std::string& fullpath) { @@ -737,14 +712,12 @@ GetGroupMapKeyFromPath(cmGeneratorTarget* target, const std::string& fullpath) return key; } -//---------------------------------------------------------------------------- std::string GetGroupMapKey(cmGeneratorTarget* target, cmSourceFile* sf) { return GetGroupMapKeyFromPath(target, sf->GetFullPath()); } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFileFromPath( const std::string &fullpath, @@ -765,7 +738,6 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFileFromPath( return buildFile; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg, cmSourceFile* sf, @@ -804,7 +776,7 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg, cmXCodeObject* settings = this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP); - settings->AddAttribute("COMPILER_FLAGS", this->CreateString(flags.c_str())); + settings->AddAttribute("COMPILER_FLAGS", this->CreateString(flags)); // Is this a resource file in this target? Add it to the resources group... // @@ -847,7 +819,6 @@ cmGlobalXCodeGenerator::CreateXCodeSourceFile(cmLocalGenerator* lg, return buildFile; } -//---------------------------------------------------------------------------- std::string GetSourcecodeValueFromFileExtension(const std::string& _ext, const std::string& lang, @@ -939,7 +910,6 @@ GetSourcecodeValueFromFileExtension(const std::string& _ext, return sourcecode; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath( const std::string &fullpath, @@ -1011,8 +981,8 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath( std::string name = cmSystemTools::GetFilenameName(path.c_str()); const char* sourceTree = (cmSystemTools::FileIsFullPath(path.c_str())? "<absolute>" : "SOURCE_ROOT"); - fileRef->AddAttribute("name", this->CreateString(name.c_str())); - fileRef->AddAttribute("path", this->CreateString(path.c_str())); + fileRef->AddAttribute("name", this->CreateString(name)); + fileRef->AddAttribute("path", this->CreateString(path)); fileRef->AddAttribute("sourceTree", this->CreateString(sourceTree)); if(this->XcodeVersion == 15) { @@ -1021,7 +991,6 @@ cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath( return fileRef; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeFileReference(cmSourceFile* sf, cmGeneratorTarget* target) @@ -1033,7 +1002,6 @@ cmGlobalXCodeGenerator::CreateXCodeFileReference(cmSourceFile* sf, sf->GetFullPath(), target, lang, sf); } -//---------------------------------------------------------------------------- bool cmGlobalXCodeGenerator::SpecialTargetEmitted(std::string const& tname) { if(tname == "ALL_BUILD" || tname == "XCODE_DEPEND_HELPER" || @@ -1050,7 +1018,6 @@ bool cmGlobalXCodeGenerator::SpecialTargetEmitted(std::string const& tname) return false; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::SetCurrentLocalGenerator(cmLocalGenerator* gen) { this->CurrentLocalGenerator = gen; @@ -1070,7 +1037,6 @@ void cmGlobalXCodeGenerator::SetCurrentLocalGenerator(cmLocalGenerator* gen) } } -//---------------------------------------------------------------------------- struct cmSourceFilePathCompare { bool operator()(cmSourceFile* l, cmSourceFile* r) @@ -1079,7 +1045,6 @@ struct cmSourceFilePathCompare } }; -//---------------------------------------------------------------------------- struct cmCompareTargets { bool operator () (std::string const& a, std::string const& b) const @@ -1096,7 +1061,6 @@ struct cmCompareTargets } }; -//---------------------------------------------------------------------------- bool cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen, std::vector<cmXCodeObject*>& @@ -1326,7 +1290,7 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen, ostr << "../" << mit->first.c_str(); } copyFilesBuildPhase->AddAttribute("dstPath", - this->CreateString(ostr.str().c_str())); + this->CreateString(ostr.str())); copyFilesBuildPhase->AddAttribute( "runOnlyForDeploymentPostprocessing", this->CreateString("0")); buildFiles = this->CreateObject(cmXCodeObject::OBJECT_LIST); @@ -1377,7 +1341,6 @@ cmGlobalXCodeGenerator::CreateXCodeTargets(cmLocalGenerator* gen, return true; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::ForceLinkerLanguages() { for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) @@ -1394,7 +1357,6 @@ void cmGlobalXCodeGenerator::ForceLinkerLanguages() } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::ForceLinkerLanguage(cmGeneratorTarget* gtgt) { // This matters only for targets that link. @@ -1439,7 +1401,6 @@ void cmGlobalXCodeGenerator::ForceLinkerLanguage(cmGeneratorTarget* gtgt) } } -//---------------------------------------------------------------------------- bool cmGlobalXCodeGenerator::IsHeaderFile(cmSourceFile* sf) { const std::vector<std::string>& hdrExts = @@ -1448,7 +1409,6 @@ bool cmGlobalXCodeGenerator::IsHeaderFile(cmSourceFile* sf) hdrExts.end()); } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateBuildPhase(const char* name, const char* name2, @@ -1477,7 +1437,6 @@ cmGlobalXCodeGenerator::CreateBuildPhase(const char* name, return buildPhase; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases, cmXCodeObject* sourceBuildPhase, @@ -1607,7 +1566,6 @@ void cmGlobalXCodeGenerator::CreateCustomCommands(cmXCodeObject* buildPhases, } } -//---------------------------------------------------------------------------- // This function removes each occurrence of the flag and returns the last one // (i.e., the dominant flag in GCC) std::string cmGlobalXCodeGenerator::ExtractFlag(const char* flag, @@ -1641,7 +1599,6 @@ std::string cmGlobalXCodeGenerator::ExtractFlag(const char* flag, return retFlag; } -//---------------------------------------------------------------------------- // This function removes each matching occurrence of the expression and // returns the last one (i.e., the dominant flag in GCC) std::string cmGlobalXCodeGenerator::ExtractFlagRegex(const char* exp, @@ -1714,7 +1671,6 @@ cmGlobalXCodeGenerator } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase, cmGeneratorTarget* target, @@ -1752,12 +1708,11 @@ cmGlobalXCodeGenerator::AddCommandsToBuildPhase(cmXCodeObject* buildphase, (makefile+"$CONFIGURATION").c_str()); makecmd += " all"; buildphase->AddAttribute("shellScript", - this->CreateString(makecmd.c_str())); + this->CreateString(makecmd)); buildphase->AddAttribute("showEnvVarsInLog", this->CreateString("0")); } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator ::CreateCustomRulesMakefile(const char* makefileBasename, cmGeneratorTarget* target, @@ -1883,7 +1838,6 @@ void cmGlobalXCodeGenerator } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, cmXCodeObject* buildSettings, const std::string& configName) @@ -2021,7 +1975,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, if(archs.size() == 1) { buildSettings->AddAttribute("ARCHS", - this->CreateString(archs[0].c_str())); + this->CreateString(archs[0])); } else { @@ -2030,7 +1984,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, for(std::vector<std::string>::iterator i = archs.begin(); i != archs.end(); i++) { - archObjects->AddObject(this->CreateString((*i).c_str())); + archObjects->AddObject(this->CreateString(*i)); } buildSettings->AddAttribute("ARCHS", archObjects); } @@ -2081,13 +2035,13 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, { std::string pncdir = gtgt->GetDirectory(configName); buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR", - this->CreateString(pncdir.c_str())); + this->CreateString(pncdir)); } } else { buildSettings->AddAttribute("OBJROOT", - this->CreateString(pndir.c_str())); + this->CreateString(pndir)); pndir = gtgt->GetDirectory(configName); } @@ -2097,9 +2051,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, } buildSettings->AddAttribute("EXECUTABLE_PREFIX", - this->CreateString(pnprefix.c_str())); + this->CreateString(pnprefix)); buildSettings->AddAttribute("EXECUTABLE_SUFFIX", - this->CreateString(pnsuffix.c_str())); + this->CreateString(pnsuffix)); } else if(gtgt->GetType() == cmState::OBJECT_LIBRARY) { @@ -2112,12 +2066,12 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, std::string pncdir = this->GetObjectsNormalDirectory( this->CurrentProject, configName, gtgt); buildSettings->AddAttribute("CONFIGURATION_BUILD_DIR", - this->CreateString(pncdir.c_str())); + this->CreateString(pncdir)); } else { buildSettings->AddAttribute("OBJROOT", - this->CreateString(pndir.c_str())); + this->CreateString(pndir)); pndir = this->GetObjectsNormalDirectory( this->CurrentProject, configName, gtgt); } @@ -2125,9 +2079,9 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, // Store the product name for all target types. buildSettings->AddAttribute("PRODUCT_NAME", - this->CreateString(realName.c_str())); + this->CreateString(realName)); buildSettings->AddAttribute("SYMROOT", - this->CreateString(pndir.c_str())); + this->CreateString(pndir)); // Handle settings for each target type. switch(gtgt->GetType()) @@ -2203,7 +2157,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, { std::string fw_version = gtgt->GetFrameworkVersion(); buildSettings->AddAttribute("FRAMEWORK_VERSION", - this->CreateString(fw_version.c_str())); + this->CreateString(fw_version)); std::string plist = this->ComputeInfoPListLocation(gtgt); // Xcode will create the final version of Info.plist at build time, @@ -2282,17 +2236,17 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, { std::string frameworkDir = *i; frameworkDir += "/../"; - frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir.c_str()); + frameworkDir = cmSystemTools::CollapseFullPath(frameworkDir); if(emitted.insert(frameworkDir).second) { - fdirs.Add(this->XCodeEscapePath(frameworkDir.c_str()).c_str()); + fdirs.Add(this->XCodeEscapePath(frameworkDir)); } } else { std::string incpath = - this->XCodeEscapePath(i->c_str()); - dirs.Add(incpath.c_str()); + this->XCodeEscapePath(*i); + dirs.Add(incpath); } } // Add framework search paths needed for linking. @@ -2304,7 +2258,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, { if(emitted.insert(*fdi).second) { - fdirs.Add(this->XCodeEscapePath(fdi->c_str()).c_str()); + fdirs.Add(this->XCodeEscapePath(*fdi)); } } } @@ -2390,17 +2344,17 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, if (*li == "CXX") { buildSettings->AddAttribute("OTHER_CPLUSPLUSFLAGS", - this->CreateString(flags.c_str())); + this->CreateString(flags)); } else if (*li == "Fortran") { buildSettings->AddAttribute("IFORT_OTHER_FLAGS", - this->CreateString(flags.c_str())); + this->CreateString(flags)); } else if (*li == "C") { buildSettings->AddAttribute("OTHER_CFLAGS", - this->CreateString(flags.c_str())); + this->CreateString(flags)); } } @@ -2444,11 +2398,11 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, { install_name_dir = ""; extraLinkOptions += " -install_name "; - extraLinkOptions += XCodeEscapePath(install_name.c_str()); + extraLinkOptions += XCodeEscapePath(install_name); } } buildSettings->AddAttribute("INSTALL_PATH", - this->CreateString(install_name_dir.c_str())); + this->CreateString(install_name_dir)); // Create the LD_RUNPATH_SEARCH_PATHS cmComputeLinkInformation* pcli = gtgt->GetLinkInformation(configName); @@ -2473,18 +2427,18 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, { search_paths += " "; } - search_paths += this->XCodeEscapePath(runpath.c_str()); + search_paths += this->XCodeEscapePath(runpath); } } if(!search_paths.empty()) { buildSettings->AddAttribute("LD_RUNPATH_SEARCH_PATHS", - this->CreateString(search_paths.c_str())); + this->CreateString(search_paths)); } } buildSettings->AddAttribute(this->GetTargetLinkFlagsVar(gtgt), - this->CreateString(extraLinkOptions.c_str())); + this->CreateString(extraLinkOptions)); buildSettings->AddAttribute("OTHER_REZFLAGS", this->CreateString("")); buildSettings->AddAttribute("SECTORDER_FLAGS", @@ -2525,7 +2479,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, v << major << "." << minor << "." << patch; } buildSettings->AddAttribute("DYLIB_CURRENT_VERSION", - this->CreateString(v.str().c_str())); + this->CreateString(v.str())); // SOVERSION -> compatibility_version gtgt->GetTargetVersion(true, major, minor, patch); @@ -2537,7 +2491,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, vso << major << "." << minor << "." << patch; } buildSettings->AddAttribute("DYLIB_COMPATIBILITY_VERSION", - this->CreateString(vso.str().c_str())); + this->CreateString(vso.str())); } // put this last so it can override existing settings // Convert "XCODE_ATTRIBUTE_*" properties directly. @@ -2563,7 +2517,6 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmGeneratorTarget* gtgt, } } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateUtilityTarget(cmGeneratorTarget* gtgt) { @@ -2642,7 +2595,6 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmGeneratorTarget* gtgt) return target; } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target, cmGeneratorTarget* gtgt) { @@ -2674,14 +2626,14 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target, this->CreateObject(cmXCodeObject::ATTRIBUTE_GROUP); this->CreateBuildSettings(gtgt, buildSettings, configVector[i].c_str()); - config->AddAttribute("name", this->CreateString(configVector[i].c_str())); + config->AddAttribute("name", this->CreateString(configVector[i])); config->SetComment(configVector[i].c_str()); config->AddAttribute("buildSettings", buildSettings); } if(!configVector.empty()) { configlist->AddAttribute("defaultConfigurationName", - this->CreateString(configVector[0].c_str())); + this->CreateString(configVector[0])); configlist->AddAttribute("defaultConfigurationIsVisible", this->CreateString("0")); return configVector[0]; @@ -2689,7 +2641,6 @@ std::string cmGlobalXCodeGenerator::AddConfigurations(cmXCodeObject* target, return ""; } -//---------------------------------------------------------------------------- const char* cmGlobalXCodeGenerator::GetTargetLinkFlagsVar( cmGeneratorTarget const* target) const { @@ -2705,7 +2656,6 @@ const char* cmGlobalXCodeGenerator::GetTargetLinkFlagsVar( } } -//---------------------------------------------------------------------------- const char* cmGlobalXCodeGenerator::GetTargetFileType( cmGeneratorTarget* target) { @@ -2732,7 +2682,6 @@ const char* cmGlobalXCodeGenerator::GetTargetFileType( return 0; } -//---------------------------------------------------------------------------- const char* cmGlobalXCodeGenerator::GetTargetProductType( cmGeneratorTarget* target) { @@ -2763,7 +2712,6 @@ const char* cmGlobalXCodeGenerator::GetTargetProductType( return 0; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeTarget(cmGeneratorTarget* gtgt, cmXCodeObject* buildPhases) @@ -2813,7 +2761,7 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmGeneratorTarget* gtgt, { fullName = gtgt->GetFullName(defConfig.c_str()); } - fileRef->AddAttribute("path", this->CreateString(fullName.c_str())); + fileRef->AddAttribute("path", this->CreateString(fullName)); if(this->XcodeVersion == 15) { fileRef->AddAttribute("refType", this->CreateString("0")); @@ -2834,7 +2782,6 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmGeneratorTarget* gtgt, return target; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator::FindXCodeTarget(cmGeneratorTarget const* t) { @@ -2852,7 +2799,6 @@ cmGlobalXCodeGenerator::FindXCodeTarget(cmGeneratorTarget const* t) return i->second; } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::GetOrCreateId(const std::string& name, const std::string& id) { @@ -2872,7 +2818,6 @@ std::string cmGlobalXCodeGenerator::GetOrCreateId(const std::string& name, return id; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AddDependTarget(cmXCodeObject* target, cmXCodeObject* dependTarget) { @@ -2909,7 +2854,6 @@ void cmGlobalXCodeGenerator::AddDependTarget(cmXCodeObject* target, } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AppendOrAddBuildSetting(cmXCodeObject* settings, const char* attribute, const char* value) @@ -2931,7 +2875,6 @@ void cmGlobalXCodeGenerator::AppendOrAddBuildSetting(cmXCodeObject* settings, } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator ::AppendBuildSettingAttribute(cmXCodeObject* target, const char* attribute, @@ -2976,7 +2919,6 @@ void cmGlobalXCodeGenerator } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator ::AddDependAndLinkInformation(cmXCodeObject* target) { @@ -3021,7 +2963,7 @@ void cmGlobalXCodeGenerator { linkObjs += sep; sep = " "; - linkObjs += this->XCodeEscapePath(oi->c_str()); + linkObjs += this->XCodeEscapePath(*oi); } this->AppendBuildSettingAttribute( target, this->GetTargetLinkFlagsVar(gt), @@ -3068,10 +3010,10 @@ void cmGlobalXCodeGenerator // $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) to it: linkDirs += " "; linkDirs += this->XCodeEscapePath( - (*libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)").c_str()); + *libDir + "/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)"); } linkDirs += " "; - linkDirs += this->XCodeEscapePath(libDir->c_str()); + linkDirs += this->XCodeEscapePath(*libDir); } } this->AppendBuildSettingAttribute(target, "LIBRARY_SEARCH_PATHS", @@ -3091,7 +3033,7 @@ void cmGlobalXCodeGenerator sep = " "; if(li->IsPath) { - linkLibs += this->XCodeEscapePath(li->Value.c_str()); + linkLibs += this->XCodeEscapePath(li->Value); } else if (!li->Target || li->Target->GetType() != cmState::INTERFACE_LIBRARY) @@ -3110,7 +3052,6 @@ void cmGlobalXCodeGenerator } } -//---------------------------------------------------------------------------- bool cmGlobalXCodeGenerator::CreateGroups(cmLocalGenerator* root, std::vector<cmLocalGenerator*>& generators) @@ -3200,7 +3141,7 @@ cmXCodeObject *cmGlobalXCodeGenerator cmXCodeObject* group = this->CreateObject(cmXCodeObject::PBXGroup); cmXCodeObject* groupChildren = this->CreateObject(cmXCodeObject::OBJECT_LIST); - group->AddAttribute("name", this->CreateString(name.c_str())); + group->AddAttribute("name", this->CreateString(name)); group->AddAttribute("children", groupChildren); if(this->XcodeVersion == 15) { @@ -3212,7 +3153,6 @@ cmXCodeObject *cmGlobalXCodeGenerator return group; } -//---------------------------------------------------------------------------- cmXCodeObject* cmGlobalXCodeGenerator ::CreateOrGetPBXGroup(cmGeneratorTarget* gtgt, cmSourceGroup* sg) { @@ -3308,7 +3248,6 @@ cmXCodeObject* cmGlobalXCodeGenerator return group; } -//---------------------------------------------------------------------------- bool cmGlobalXCodeGenerator ::CreateXCodeObjects(cmLocalGenerator* root, std::vector<cmLocalGenerator*>& @@ -3447,7 +3386,7 @@ bool cmGlobalXCodeGenerator std::string pdir = this->RelativeToBinary(root->GetCurrentSourceDirectory()); this->RootObject->AddAttribute("projectDirPath", - this->CreateString(pdir.c_str())); + this->CreateString(pdir)); this->RootObject->AddAttribute("projectRoot", this->CreateString("")); } cmXCodeObject* configlist = @@ -3528,7 +3467,7 @@ bool cmGlobalXCodeGenerator else { // Tell Xcode to use ARCHS (ONLY_ACTIVE_ARCH defaults to NO). - buildSettings->AddAttribute("ARCHS", this->CreateString(archs.c_str())); + buildSettings->AddAttribute("ARCHS", this->CreateString(archs)); } if(deploymentTarget && *deploymentTarget) { @@ -3538,12 +3477,12 @@ bool cmGlobalXCodeGenerator if(!this->GeneratorToolset.empty()) { buildSettings->AddAttribute("GCC_VERSION", - this->CreateString(this->GeneratorToolset.c_str())); + this->CreateString(this->GeneratorToolset)); } std::string symroot = root->GetCurrentBinaryDirectory(); symroot += "/build"; - buildSettings->AddAttribute("SYMROOT", this->CreateString(symroot.c_str())); + buildSettings->AddAttribute("SYMROOT", this->CreateString(symroot)); for(Configs::iterator i = configs.begin(); i != configs.end(); ++i) { @@ -3618,7 +3557,6 @@ bool cmGlobalXCodeGenerator return true; } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::GetObjectsNormalDirectory( const std::string &projName, @@ -3638,7 +3576,6 @@ cmGlobalXCodeGenerator::GetObjectsNormalDirectory( return dir; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::CreateXCodeDependHackTarget( std::vector<cmXCodeObject*>& targets) @@ -3654,6 +3591,7 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget( makefileStream.SetCopyIfDifferent(true); // one more pass for external depend information not handled // correctly by xcode + /* clang-format off */ makefileStream << "# DO NOT EDIT\n"; makefileStream << "# This makefile makes sure all linkable targets are\n"; makefileStream << "# up-to-date with anything they link to\n" @@ -3663,6 +3601,7 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget( makefileStream << "# For each target create a dummy rule " "so the target does not have to exist\n"; + /* clang-format on */ std::set<std::string> emitted; for(std::vector<cmXCodeObject*>::iterator i = targets.begin(); i != targets.end(); ++i) @@ -3687,10 +3626,12 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget( makefileStream << "\n\n"; // Write rules to help Xcode relink things at the right time. + /* clang-format off */ makefileStream << "# Rules to remove targets that are older than anything to which they\n" "# link. This forces Xcode to relink the targets from scratch. It\n" "# does not seem to check these dependencies itself.\n"; + /* clang-format on */ for(std::vector<std::string>::const_iterator ct = this->CurrentConfigurationTypes.begin(); ct != this->CurrentConfigurationTypes.end(); ++ct) @@ -3782,7 +3723,6 @@ cmGlobalXCodeGenerator::CreateXCodeDependHackTarget( } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::OutputXCodeProject(cmLocalGenerator* root, std::vector<cmLocalGenerator*>& @@ -3831,7 +3771,6 @@ cmGlobalXCodeGenerator::OutputXCodeProject(cmLocalGenerator* root, root->GetBinaryDirectory()); } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout, cmLocalGenerator* , @@ -3871,7 +3810,6 @@ cmGlobalXCodeGenerator::WriteXCodePBXProj(std::ostream& fout, fout << "}\n"; } -//---------------------------------------------------------------------------- const char* cmGlobalXCodeGenerator::GetCMakeCFGIntDir() const { return this->XcodeVersion >= 21 ? @@ -3902,20 +3840,17 @@ std::string cmGlobalXCodeGenerator::ExpandCFGIntDir(const std::string& str, return tmp; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::GetDocumentation(cmDocumentationEntry& entry) { entry.Name = cmGlobalXCodeGenerator::GetActualName(); entry.Brief = "Generate Xcode project files."; } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::ConvertToRelativeForMake(const char* p) { return cmSystemTools::ConvertToOutputPath(p); } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::RelativeToSource(const char* p) { // We force conversion because Xcode breakpoints do not work unless @@ -3924,28 +3859,24 @@ std::string cmGlobalXCodeGenerator::RelativeToSource(const char* p) ConvertToRelativePath(this->ProjectSourceDirectoryComponents, p, true); } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::RelativeToBinary(const char* p) { return this->CurrentLocalGenerator-> ConvertToRelativePath(this->ProjectOutputDirectoryComponents, p); } -//---------------------------------------------------------------------------- -std::string cmGlobalXCodeGenerator::XCodeEscapePath(const char* p) +std::string cmGlobalXCodeGenerator::XCodeEscapePath(const std::string& p) { - std::string ret = p; - if(ret.find(' ') != ret.npos) + if(p.find(' ') != p.npos) { - std::string t = ret; - ret = "\""; - ret += t; - ret += "\""; + std::string t = "\""; + t += p; + t += "\""; + return t; } - return ret; + return p; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator ::AppendDirectoryForConfig(const std::string& prefix, @@ -3964,7 +3895,6 @@ cmGlobalXCodeGenerator } } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::LookupFlags( const std::string& varNamePrefix, const std::string& varNameLang, @@ -3988,7 +3918,6 @@ std::string cmGlobalXCodeGenerator::LookupFlags( return default_flags; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AppendDefines(BuildObjectListOrString& defs, const char* defines_list, bool dflag) @@ -4007,7 +3936,6 @@ void cmGlobalXCodeGenerator::AppendDefines(BuildObjectListOrString& defs, this->AppendDefines(defs, defines, dflag); } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AppendDefines(BuildObjectListOrString& defs, std::vector<std::string> const& defines, @@ -4025,11 +3953,10 @@ cmGlobalXCodeGenerator::AppendDefines(BuildObjectListOrString& defs, // Append the flag with needed escapes. std::string tmp; this->AppendFlag(tmp, def); - defs.Add(tmp.c_str()); + defs.Add(tmp); } } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator::AppendFlag(std::string& flags, std::string const& flag) { @@ -4096,7 +4023,6 @@ void cmGlobalXCodeGenerator::AppendFlag(std::string& flags, } } -//---------------------------------------------------------------------------- std::string cmGlobalXCodeGenerator::ComputeInfoPListLocation(cmGeneratorTarget* target) { @@ -4109,7 +4035,6 @@ cmGlobalXCodeGenerator::ComputeInfoPListLocation(cmGeneratorTarget* target) return plist; } -//---------------------------------------------------------------------------- // Return true if the generated build tree may contain multiple builds. // i.e. "Can I build Debug and Release in the same tree?" bool cmGlobalXCodeGenerator::IsMultiConfig() @@ -4124,7 +4049,6 @@ bool cmGlobalXCodeGenerator::IsMultiConfig() return true; } -//---------------------------------------------------------------------------- void cmGlobalXCodeGenerator ::ComputeTargetObjectDirectory(cmGeneratorTarget* gt) const { diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 862746f..c3b3613 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -13,8 +13,9 @@ #define cmGlobalXCodeGenerator_h #include "cmGlobalGenerator.h" -#include "cmXCodeObject.h" + #include "cmCustomCommand.h" +#include "cmXCodeObject.h" class cmGlobalGeneratorFactory; class cmSourceFile; class cmSourceGroup; @@ -96,7 +97,7 @@ private: bool CreateGroups(cmLocalGenerator* root, std::vector<cmLocalGenerator*>& generators); - std::string XCodeEscapePath(const char* p); + std::string XCodeEscapePath(const std::string& p); std::string RelativeToSource(const char* p); std::string RelativeToBinary(const char* p); std::string ConvertToRelativeForMake(const char* p); diff --git a/Source/cmGraphVizWriter.cxx b/Source/cmGraphVizWriter.cxx index 448306f..76b6430 100644 --- a/Source/cmGraphVizWriter.cxx +++ b/Source/cmGraphVizWriter.cxx @@ -10,10 +10,11 @@ See the License for more information. ============================================================================*/ #include "cmGraphVizWriter.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" -#include "cmGlobalGenerator.h" + #include "cmGeneratedFileStream.h" +#include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" diff --git a/Source/cmGraphVizWriter.h b/Source/cmGraphVizWriter.h index 90d31d3..7914ca3 100644 --- a/Source/cmGraphVizWriter.h +++ b/Source/cmGraphVizWriter.h @@ -1,5 +1,3 @@ -#ifndef CMGRAPHVIZWRITER_H -#define CMGRAPHVIZWRITER_H /*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2009 Kitware, Inc., Insight Software Consortium @@ -11,9 +9,13 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ +#ifndef CMGRAPHVIZWRITER_H +#define CMGRAPHVIZWRITER_H + #include "cmStandardIncludes.h" -#include "cmLocalGenerator.h" + #include "cmGeneratedFileStream.h" +#include "cmLocalGenerator.h" #include <cmsys/RegularExpression.hxx> class cmGeneratorTarget; diff --git a/Source/cmHexFileConverter.h b/Source/cmHexFileConverter.h index e11d74a..89b8533 100644 --- a/Source/cmHexFileConverter.h +++ b/Source/cmHexFileConverter.h @@ -12,6 +12,8 @@ #ifndef cmHexFileConverter_h #define cmHexFileConverter_h +#include "cmStandardIncludes.h" + /** \class cmHexFileConverter * \brief Can detects Intel Hex and Motorola S-record files and convert them * to binary files. diff --git a/Source/cmIDEOptions.cxx b/Source/cmIDEOptions.cxx index 509602f..1c52519 100644 --- a/Source/cmIDEOptions.cxx +++ b/Source/cmIDEOptions.cxx @@ -15,7 +15,6 @@ #include <cmsys/String.h> -//---------------------------------------------------------------------------- cmIDEOptions::cmIDEOptions() { this->DoingDefine = false; @@ -28,12 +27,10 @@ cmIDEOptions::cmIDEOptions() } } -//---------------------------------------------------------------------------- cmIDEOptions::~cmIDEOptions() { } -//---------------------------------------------------------------------------- void cmIDEOptions::HandleFlag(const char* flag) { // If the last option was -D then this option is the definition. @@ -92,7 +89,6 @@ void cmIDEOptions::HandleFlag(const char* flag) this->StoreUnknownFlag(flag); } -//---------------------------------------------------------------------------- bool cmIDEOptions::CheckFlagTable(cmIDEFlagTable const* table, const char* flag, bool& flag_handled) { @@ -147,7 +143,6 @@ bool cmIDEOptions::CheckFlagTable(cmIDEFlagTable const* table, return false; } -//---------------------------------------------------------------------------- void cmIDEOptions::FlagMapUpdate(cmIDEFlagTable const* entry, const char* new_value) { @@ -167,13 +162,11 @@ void cmIDEOptions::FlagMapUpdate(cmIDEFlagTable const* entry, } } -//---------------------------------------------------------------------------- void cmIDEOptions::AddDefine(const std::string& def) { this->Defines.push_back(def); } -//---------------------------------------------------------------------------- void cmIDEOptions::AddDefines(const char* defines) { if(defines) @@ -182,33 +175,28 @@ void cmIDEOptions::AddDefines(const char* defines) cmSystemTools::ExpandListArgument(defines, this->Defines); } } -//---------------------------------------------------------------------------- void cmIDEOptions::AddDefines(const std::vector<std::string> &defines) { this->Defines.insert(this->Defines.end(), defines.begin(), defines.end()); } -//---------------------------------------------------------------------------- void cmIDEOptions::AddFlag(const char* flag, const char* value) { this->FlagMap[flag] = value; } -//---------------------------------------------------------------------------- void cmIDEOptions::AddFlag(const char* flag, std::vector<std::string> const& value) { this->FlagMap[flag] = value; } -//---------------------------------------------------------------------------- void cmIDEOptions::AppendFlag(std::string const& flag, std::string const& value) { this->FlagMap[flag].push_back(value); } -//---------------------------------------------------------------------------- void cmIDEOptions::AppendFlag(std::string const& flag, std::vector<std::string> const& value) { @@ -216,19 +204,16 @@ void cmIDEOptions::AppendFlag(std::string const& flag, std::copy(value.begin(), value.end(), std::back_inserter(fv)); } -//---------------------------------------------------------------------------- void cmIDEOptions::RemoveFlag(const char* flag) { this->FlagMap.erase(flag); } -//---------------------------------------------------------------------------- bool cmIDEOptions::HasFlag(std::string const& flag) const { return this->FlagMap.find(flag) != this->FlagMap.end(); } -//---------------------------------------------------------------------------- const char* cmIDEOptions::GetFlag(const char* flag) { // This method works only for single-valued flags! diff --git a/Source/cmIDEOptions.h b/Source/cmIDEOptions.h index 7386016..8c985c7 100644 --- a/Source/cmIDEOptions.h +++ b/Source/cmIDEOptions.h @@ -13,6 +13,7 @@ #define cmIDEOptions_h #include "cmStandardIncludes.h" + #include "cmIDEFlagTable.h" /** \class cmIDEOptions diff --git a/Source/cmIfCommand.cxx b/Source/cmIfCommand.cxx index 9a07dde..37f03c5 100644 --- a/Source/cmIfCommand.cxx +++ b/Source/cmIfCommand.cxx @@ -10,14 +10,15 @@ See the License for more information. ============================================================================*/ #include "cmIfCommand.h" -#include "cmStringCommand.h" + #include "cmOutputConverter.h" +#include "cmStringCommand.h" #include "cmConditionEvaluator.h" -#include <stdlib.h> // required for atof -#include <list> #include <cmsys/RegularExpression.hxx> +#include <list> +#include <stdlib.h> // required for atof static std::string cmIfCommandError( @@ -203,15 +204,9 @@ bool cmIfCommand cmake::MessageType status; - cmListFileContext execContext = this->Makefile->GetExecutionContext(); - - cmCommandContext commandContext; - commandContext.Line = execContext.Line; - commandContext.Name = execContext.Name; - cmConditionEvaluator conditionEvaluator( - *(this->Makefile), cmListFileContext::FromCommandContext( - commandContext, execContext.FilePath), + *(this->Makefile), + this->Makefile->GetExecutionContext(), this->Makefile->GetBacktrace()); bool isTrue = conditionEvaluator.IsTrue( diff --git a/Source/cmIfCommand.h b/Source/cmIfCommand.h index 689efce..9054a0b 100644 --- a/Source/cmIfCommand.h +++ b/Source/cmIfCommand.h @@ -13,6 +13,7 @@ #define cmIfCommand_h #include "cmCommand.h" + #include "cmFunctionBlocker.h" class cmIfFunctionBlocker : public cmFunctionBlocker diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index 26a1485..c87b29b 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -11,14 +11,14 @@ ============================================================================*/ #include "cmInstallCommand.h" +#include "cmExportSet.h" +#include "cmInstallCommandArguments.h" #include "cmInstallDirectoryGenerator.h" +#include "cmInstallExportGenerator.h" #include "cmInstallFilesGenerator.h" #include "cmInstallScriptGenerator.h" #include "cmInstallTargetGenerator.h" -#include "cmInstallExportGenerator.h" -#include "cmInstallCommandArguments.h" #include "cmTargetExport.h" -#include "cmExportSet.h" #include <cmsys/Glob.hxx> @@ -112,7 +112,6 @@ bool cmInstallCommand::InitialPass(std::vector<std::string> const& args, return false; } -//---------------------------------------------------------------------------- bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args) { std::string component = this->DefaultComponentName; @@ -221,7 +220,6 @@ bool cmInstallCommand::HandleScriptMode(std::vector<std::string> const& args) cmInstallCommandArguments args; };*/ -//---------------------------------------------------------------------------- bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args) { // This is the TARGETS mode. @@ -388,7 +386,7 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args) return false; } // Lookup this target in the current directory. - if(cmTarget* target=this->Makefile->FindTarget(*targetIt)) + if(cmTarget* target=this->Makefile->FindLocalNonAliasTarget(*targetIt)) { // Found the target. Check its type. if(target->GetType() != cmState::EXECUTABLE && @@ -836,7 +834,6 @@ bool cmInstallCommand::HandleTargetsMode(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmInstallCommand::HandleFilesMode(std::vector<std::string> const& args) { // This is the FILES mode. @@ -946,7 +943,6 @@ bool cmInstallCommand::HandleFilesMode(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args) { @@ -1306,7 +1302,6 @@ cmInstallCommand::HandleDirectoryMode(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmInstallCommand::HandleExportMode(std::vector<std::string> const& args) { // This is the EXPORT mode. @@ -1464,7 +1459,6 @@ bool cmInstallCommand::MakeFilesFullPath(const char* modeName, return true; } -//---------------------------------------------------------------------------- bool cmInstallCommand::CheckCMP0006(bool& failure) { switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0006)) diff --git a/Source/cmInstallCommandArguments.cxx b/Source/cmInstallCommandArguments.cxx index 6ded365..57f5f31 100644 --- a/Source/cmInstallCommandArguments.cxx +++ b/Source/cmInstallCommandArguments.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmInstallCommandArguments.h" + #include "cmSystemTools.h" // Table of valid permissions. diff --git a/Source/cmInstallCommandArguments.h b/Source/cmInstallCommandArguments.h index 694f1ed..e83a397 100644 --- a/Source/cmInstallCommandArguments.h +++ b/Source/cmInstallCommandArguments.h @@ -14,6 +14,7 @@ #define cmInstallCommandArguments_h #include "cmStandardIncludes.h" + #include "cmCommandArgumentsHelper.h" class cmInstallCommandArguments diff --git a/Source/cmInstallDirectoryGenerator.cxx b/Source/cmInstallDirectoryGenerator.cxx index 6ad6c75..99141df 100644 --- a/Source/cmInstallDirectoryGenerator.cxx +++ b/Source/cmInstallDirectoryGenerator.cxx @@ -14,7 +14,6 @@ #include "cmGeneratorExpression.h" #include "cmLocalGenerator.h" -//---------------------------------------------------------------------------- cmInstallDirectoryGenerator ::cmInstallDirectoryGenerator(std::vector<std::string> const& dirs, const char* dest, @@ -50,7 +49,6 @@ cmInstallDirectoryGenerator } } -//---------------------------------------------------------------------------- cmInstallDirectoryGenerator ::~cmInstallDirectoryGenerator() { @@ -61,7 +59,6 @@ void cmInstallDirectoryGenerator::Compute(cmLocalGenerator* lg) LocalGenerator = lg; } -//---------------------------------------------------------------------------- void cmInstallDirectoryGenerator::GenerateScriptActions(std::ostream& os, Indent const& indent) @@ -112,7 +109,6 @@ void cmInstallDirectoryGenerator::AddDirectoryInstallRule( indent); } -//---------------------------------------------------------------------------- std::string cmInstallDirectoryGenerator::GetDestination(std::string const& config) const { diff --git a/Source/cmInstallExportGenerator.cxx b/Source/cmInstallExportGenerator.cxx index 80fc054..d77e14f 100644 --- a/Source/cmInstallExportGenerator.cxx +++ b/Source/cmInstallExportGenerator.cxx @@ -13,19 +13,18 @@ #include <stdio.h> -#include "cmake.h" -#include "cmInstallTargetGenerator.h" #include "cmGeneratedFileStream.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" #include "cmGlobalGenerator.h" +#include "cmInstallTargetGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" +#include "cmake.h" #include "cmInstallFilesGenerator.h" #include "cmExportInstallFileGenerator.h" #include "cmExportSet.h" -//---------------------------------------------------------------------------- cmInstallExportGenerator::cmInstallExportGenerator( cmExportSet* exportSet, const char* destination, @@ -49,7 +48,6 @@ cmInstallExportGenerator::cmInstallExportGenerator( exportSet->AddInstallation(this); } -//---------------------------------------------------------------------------- cmInstallExportGenerator::~cmInstallExportGenerator() { delete this->EFGen; @@ -61,7 +59,6 @@ void cmInstallExportGenerator::Compute(cmLocalGenerator* lg) this->ExportSet->Compute(lg); } -//---------------------------------------------------------------------------- void cmInstallExportGenerator::ComputeTempDir() { // Choose a temporary directory in which to generate the import @@ -123,7 +120,6 @@ void cmInstallExportGenerator::ComputeTempDir() } } -//---------------------------------------------------------------------------- void cmInstallExportGenerator::GenerateScript(std::ostream& os) { // Skip empty sets. @@ -175,7 +171,6 @@ void cmInstallExportGenerator::GenerateScript(std::ostream& os) this->cmInstallGenerator::GenerateScript(os); } -//---------------------------------------------------------------------------- void cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os, Indent const& indent) @@ -202,7 +197,6 @@ cmInstallExportGenerator::GenerateScriptConfigs(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmInstallExportGenerator::GenerateScriptActions(std::ostream& os, Indent const& indent) { @@ -216,6 +210,7 @@ void cmInstallExportGenerator::GenerateScriptActions(std::ostream& os, Indent indentN = indent.Next(); Indent indentNN = indentN.Next(); Indent indentNNN = indentNN.Next(); + /* clang-format off */ os << indentN << "file(DIFFERENT EXPORT_FILE_CHANGED FILES\n" << indentN << " \"" << installedFile << "\"\n" << indentN << " \"" << this->MainImportFile << "\")\n"; @@ -229,6 +224,7 @@ void cmInstallExportGenerator::GenerateScriptActions(std::ostream& os, os << indentNN << "endif()\n"; os << indentN << "endif()\n"; os << indent << "endif()\n"; + /* clang-format on */ // Install the main export file. std::vector<std::string> files; diff --git a/Source/cmInstallFilesGenerator.cxx b/Source/cmInstallFilesGenerator.cxx index 3dd5528..a61c38e 100644 --- a/Source/cmInstallFilesGenerator.cxx +++ b/Source/cmInstallFilesGenerator.cxx @@ -12,11 +12,10 @@ #include "cmInstallFilesGenerator.h" #include "cmGeneratorExpression.h" +#include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmSystemTools.h" -#include "cmLocalGenerator.h" -//---------------------------------------------------------------------------- cmInstallFilesGenerator ::cmInstallFilesGenerator(std::vector<std::string> const& files, const char* dest, bool programs, @@ -53,7 +52,6 @@ cmInstallFilesGenerator } } -//---------------------------------------------------------------------------- cmInstallFilesGenerator ::~cmInstallFilesGenerator() { @@ -64,7 +62,6 @@ void cmInstallFilesGenerator::Compute(cmLocalGenerator* lg) this->LocalGenerator = lg; } -//---------------------------------------------------------------------------- std::string cmInstallFilesGenerator::GetDestination(std::string const& config) const { @@ -73,7 +70,6 @@ cmInstallFilesGenerator::GetDestination(std::string const& config) const ->Evaluate(this->LocalGenerator, config); } -//---------------------------------------------------------------------------- void cmInstallFilesGenerator::AddFilesInstallRule( std::ostream& os, const std::string config, @@ -93,7 +89,6 @@ void cmInstallFilesGenerator::AddFilesInstallRule( this->Rename.c_str(), 0, indent); } -//---------------------------------------------------------------------------- void cmInstallFilesGenerator::GenerateScriptActions(std::ostream& os, Indent const& indent) { @@ -107,7 +102,6 @@ void cmInstallFilesGenerator::GenerateScriptActions(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmInstallFilesGenerator::GenerateScriptForConfig(std::ostream& os, const std::string& config, Indent const& indent) diff --git a/Source/cmInstallGenerator.cxx b/Source/cmInstallGenerator.cxx index 660e44f..4218011 100644 --- a/Source/cmInstallGenerator.cxx +++ b/Source/cmInstallGenerator.cxx @@ -14,7 +14,6 @@ #include "cmMakefile.h" #include "cmSystemTools.h" -//---------------------------------------------------------------------------- cmInstallGenerator ::cmInstallGenerator(const char* destination, std::vector<std::string> const& configurations, @@ -29,13 +28,11 @@ cmInstallGenerator { } -//---------------------------------------------------------------------------- cmInstallGenerator ::~cmInstallGenerator() { } -//---------------------------------------------------------------------------- void cmInstallGenerator ::AddInstallRule( std::ostream& os, @@ -146,7 +143,6 @@ void cmInstallGenerator os << ")\n"; } -//---------------------------------------------------------------------------- std::string cmInstallGenerator::CreateComponentTest(const char* component, bool exclude_from_all) @@ -161,7 +157,6 @@ cmInstallGenerator::CreateComponentTest(const char* component, return result; } -//---------------------------------------------------------------------------- void cmInstallGenerator::GenerateScript(std::ostream& os) { // Track indentation. @@ -179,13 +174,11 @@ void cmInstallGenerator::GenerateScript(std::ostream& os) os << indent << "endif()\n\n"; } -//---------------------------------------------------------------------------- bool cmInstallGenerator::InstallsForConfig(const std::string& config) { return this->GeneratesForConfig(config); } -//---------------------------------------------------------------------------- std::string cmInstallGenerator::ConvertToAbsoluteDestination(std::string const& dest) const { @@ -199,7 +192,6 @@ cmInstallGenerator::ConvertToAbsoluteDestination(std::string const& dest) const return result; } -//---------------------------------------------------------------------------- cmInstallGenerator::MessageLevel cmInstallGenerator::SelectMessageLevel(cmMakefile* mf, bool never) { diff --git a/Source/cmInstallProgramsCommand.cxx b/Source/cmInstallProgramsCommand.cxx index b6d0c45..790215d 100644 --- a/Source/cmInstallProgramsCommand.cxx +++ b/Source/cmInstallProgramsCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmInstallProgramsCommand.h" + #include "cmInstallFilesGenerator.h" // cmExecutableCommand bool cmInstallProgramsCommand diff --git a/Source/cmInstallScriptGenerator.cxx b/Source/cmInstallScriptGenerator.cxx index d58d039..c676569 100644 --- a/Source/cmInstallScriptGenerator.cxx +++ b/Source/cmInstallScriptGenerator.cxx @@ -11,7 +11,6 @@ ============================================================================*/ #include "cmInstallScriptGenerator.h" -//---------------------------------------------------------------------------- cmInstallScriptGenerator ::cmInstallScriptGenerator(const char* script, bool code, const char* component, bool exclude_from_all) : @@ -21,13 +20,11 @@ cmInstallScriptGenerator { } -//---------------------------------------------------------------------------- cmInstallScriptGenerator ::~cmInstallScriptGenerator() { } -//---------------------------------------------------------------------------- void cmInstallScriptGenerator::GenerateScript(std::ostream& os) { Indent indent; diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx index 3d44fe2..7e5817e 100644 --- a/Source/cmInstallTargetGenerator.cxx +++ b/Source/cmInstallTargetGenerator.cxx @@ -13,16 +13,15 @@ #include "cmComputeLinkInformation.h" #include "cmGeneratorExpression.h" +#include "cmGeneratorTarget.h" +#include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" -#include "cmGeneratorTarget.h" #include "cmake.h" -#include "cmGeneratorTarget.h" #include <assert.h> -//---------------------------------------------------------------------------- cmInstallTargetGenerator ::cmInstallTargetGenerator(const std::string& targetName, const char* dest, bool implib, @@ -44,13 +43,11 @@ cmInstallTargetGenerator this->NamelinkMode = NamelinkModeNone; } -//---------------------------------------------------------------------------- cmInstallTargetGenerator ::~cmInstallTargetGenerator() { } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator::GenerateScript(std::ostream& os) { // Warn if installing an exclude-from-all target. @@ -68,7 +65,6 @@ void cmInstallTargetGenerator::GenerateScript(std::ostream& os) this->cmInstallGenerator::GenerateScript(os); } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator::GenerateScriptForConfig(std::ostream& os, const std::string& config, Indent const& indent) @@ -352,7 +348,6 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(std::ostream& os, &cmInstallTargetGenerator::PostReplacementTweaks); } -//---------------------------------------------------------------------------- std::string cmInstallTargetGenerator::GetDestination(std::string const& config) const { @@ -361,7 +356,6 @@ cmInstallTargetGenerator::GetDestination(std::string const& config) const ->Evaluate(this->Target->GetLocalGenerator(), config); } -//---------------------------------------------------------------------------- std::string cmInstallTargetGenerator::GetInstallFilename(const std::string& config) const { @@ -371,7 +365,6 @@ cmInstallTargetGenerator::GetInstallFilename(const std::string& config) const nameType); } -//---------------------------------------------------------------------------- std::string cmInstallTargetGenerator::GetInstallFilename(cmGeneratorTarget const* target, const std::string& config, @@ -448,10 +441,9 @@ cmInstallTargetGenerator::GetInstallFilename(cmGeneratorTarget const* target, void cmInstallTargetGenerator::Compute(cmLocalGenerator* lg) { - this->Target = lg->FindGeneratorTarget(this->TargetName); + this->Target = lg->FindLocalNonAliasGeneratorTarget(this->TargetName); } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator ::AddTweak(std::ostream& os, Indent const& indent, const std::string& config, @@ -469,7 +461,6 @@ cmInstallTargetGenerator } } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator ::AddTweak(std::ostream& os, Indent const& indent, const std::string& config, @@ -502,7 +493,6 @@ cmInstallTargetGenerator } } -//---------------------------------------------------------------------------- std::string cmInstallTargetGenerator::GetDestDirPath(std::string const& file) { // Construct the path of the file on disk after installation on @@ -516,7 +506,6 @@ std::string cmInstallTargetGenerator::GetDestDirPath(std::string const& file) return toDestDirPath; } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator::PreReplacementTweaks(std::ostream& os, Indent const& indent, const std::string& config, @@ -525,7 +514,6 @@ void cmInstallTargetGenerator::PreReplacementTweaks(std::ostream& os, this->AddRPathCheckRule(os, indent, config, file); } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator::PostReplacementTweaks(std::ostream& os, Indent const& indent, const std::string& config, @@ -538,7 +526,6 @@ void cmInstallTargetGenerator::PostReplacementTweaks(std::ostream& os, this->AddStripRule(os, indent, file); } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator ::AddInstallNamePatchRule(std::ostream& os, Indent const& indent, @@ -652,7 +639,6 @@ cmInstallTargetGenerator } } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator ::AddRPathCheckRule(std::ostream& os, Indent const& indent, @@ -685,12 +671,13 @@ cmInstallTargetGenerator // Write a rule to remove the installed file if its rpath is not the // new rpath. This is needed for existing build/install trees when // the installed rpath changes but the file is not rebuilt. + /* clang-format off */ os << indent << "file(RPATH_CHECK\n" << indent << " FILE \"" << toDestDirPath << "\"\n" << indent << " RPATH \"" << newRpath << "\")\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator ::AddChrpathPatchRule(std::ostream& os, Indent const& indent, @@ -800,7 +787,6 @@ cmInstallTargetGenerator } } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator::AddStripRule(std::ostream& os, Indent const& indent, @@ -833,7 +819,6 @@ cmInstallTargetGenerator::AddStripRule(std::ostream& os, os << indent << "endif()\n"; } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator::AddRanlibRule(std::ostream& os, Indent const& indent, @@ -863,7 +848,6 @@ cmInstallTargetGenerator::AddRanlibRule(std::ostream& os, << ranlib << "\" \"" << toDestDirPath << "\")\n"; } -//---------------------------------------------------------------------------- void cmInstallTargetGenerator ::AddUniversalInstallRule(std::ostream& os, diff --git a/Source/cmInstalledFile.cxx b/Source/cmInstalledFile.cxx index fa5e815..3dac750 100644 --- a/Source/cmInstalledFile.cxx +++ b/Source/cmInstalledFile.cxx @@ -10,18 +10,17 @@ See the License for more information. ============================================================================*/ #include "cmInstalledFile.h" -#include "cmSystemTools.h" -#include "cmMakefile.h" + #include "cmAlgorithms.h" +#include "cmMakefile.h" +#include "cmSystemTools.h" -//---------------------------------------------------------------------------- cmInstalledFile::cmInstalledFile(): NameExpression(0) { } -//---------------------------------------------------------------------------- cmInstalledFile::~cmInstalledFile() { if(NameExpression) @@ -40,7 +39,6 @@ cmInstalledFile::Property::~Property() cmDeleteAll(this->ValueExpressions); } -//---------------------------------------------------------------------------- void cmInstalledFile::SetName(cmMakefile* mf, const std::string& name) { cmListFileBacktrace backtrace = mf->GetBacktrace(); @@ -50,25 +48,21 @@ void cmInstalledFile::SetName(cmMakefile* mf, const std::string& name) this->NameExpression = ge.Parse(name).release(); } -//---------------------------------------------------------------------------- std::string const& cmInstalledFile::GetName() const { return this->Name; } -//---------------------------------------------------------------------------- cmCompiledGeneratorExpression const& cmInstalledFile::GetNameExpression() const { return *(this->NameExpression); } -//---------------------------------------------------------------------------- void cmInstalledFile::RemoveProperty(const std::string& prop) { this->Properties.erase(prop); } -//---------------------------------------------------------------------------- void cmInstalledFile::SetProperty(cmMakefile const* mf, const std::string& prop, const char* value) { @@ -76,7 +70,6 @@ void cmInstalledFile::SetProperty(cmMakefile const* mf, this->AppendProperty(mf, prop, value); } -//---------------------------------------------------------------------------- void cmInstalledFile::AppendProperty(cmMakefile const* mf, const std::string& prop, const char* value, bool /*asString*/) { @@ -87,14 +80,12 @@ void cmInstalledFile::AppendProperty(cmMakefile const* mf, property.ValueExpressions.push_back(ge.Parse(value).release()); } -//---------------------------------------------------------------------------- bool cmInstalledFile::HasProperty( const std::string& prop) const { return this->Properties.find(prop) != this->Properties.end(); } -//---------------------------------------------------------------------------- bool cmInstalledFile::GetProperty( const std::string& prop, std::string& value) const { @@ -122,7 +113,6 @@ bool cmInstalledFile::GetProperty( return true; } -//---------------------------------------------------------------------------- bool cmInstalledFile::GetPropertyAsBool(const std::string& prop) const { std::string value; @@ -130,7 +120,6 @@ bool cmInstalledFile::GetPropertyAsBool(const std::string& prop) const return isSet && cmSystemTools::IsOn(value.c_str()); } -//---------------------------------------------------------------------------- void cmInstalledFile::GetPropertyAsList(const std::string& prop, std::vector<std::string>& list) const { diff --git a/Source/cmLinkDirectoriesCommand.cxx b/Source/cmLinkDirectoriesCommand.cxx index b6c0072..b77c3be 100644 --- a/Source/cmLinkDirectoriesCommand.cxx +++ b/Source/cmLinkDirectoriesCommand.cxx @@ -28,7 +28,6 @@ bool cmLinkDirectoriesCommand return true; } -//---------------------------------------------------------------------------- void cmLinkDirectoriesCommand::AddLinkDir(std::string const& dir) { std::string unixPath = dir; @@ -37,9 +36,11 @@ void cmLinkDirectoriesCommand::AddLinkDir(std::string const& dir) { bool convertToAbsolute = false; std::ostringstream e; + /* clang-format off */ e << "This command specifies the relative path\n" << " " << unixPath << "\n" << "as a link directory.\n"; + /* clang-format on */ switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0015)) { case cmPolicies::WARN: diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx index 15a1af5..feecb1e 100644 --- a/Source/cmListCommand.cxx +++ b/Source/cmListCommand.cxx @@ -10,15 +10,15 @@ See the License for more information. ============================================================================*/ #include "cmListCommand.h" + +#include "cmAlgorithms.h" #include <cmsys/RegularExpression.hxx> #include <cmsys/SystemTools.hxx> -#include "cmAlgorithms.h" #include <algorithm> -#include <stdlib.h> // required for atoi -#include <ctype.h> #include <assert.h> -//---------------------------------------------------------------------------- +#include <ctype.h> +#include <stdlib.h> // required for atoi bool cmListCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -79,7 +79,6 @@ bool cmListCommand return false; } -//---------------------------------------------------------------------------- bool cmListCommand::GetListString(std::string& listString, const std::string& var) { @@ -94,7 +93,6 @@ bool cmListCommand::GetListString(std::string& listString, return true; } -//---------------------------------------------------------------------------- bool cmListCommand::GetList(std::vector<std::string>& list, const std::string& var) { @@ -154,7 +152,6 @@ bool cmListCommand::GetList(std::vector<std::string>& list, return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleLengthCommand(std::vector<std::string> const& args) { if(args.size() != 3) @@ -178,7 +175,6 @@ bool cmListCommand::HandleLengthCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleGetCommand(std::vector<std::string> const& args) { if(args.size() < 4) @@ -232,7 +228,6 @@ bool cmListCommand::HandleGetCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleAppendCommand(std::vector<std::string> const& args) { assert(args.size() >= 2); @@ -258,7 +253,6 @@ bool cmListCommand::HandleAppendCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleFindCommand(std::vector<std::string> const& args) { if(args.size() != 4) @@ -291,7 +285,6 @@ bool cmListCommand::HandleFindCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args) { if(args.size() < 4) @@ -340,7 +333,6 @@ bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmListCommand ::HandleRemoveItemCommand(std::vector<std::string> const& args) { @@ -373,7 +365,6 @@ bool cmListCommand return true; } -//---------------------------------------------------------------------------- bool cmListCommand ::HandleReverseCommand(std::vector<std::string> const& args) { @@ -400,7 +391,6 @@ bool cmListCommand return true; } -//---------------------------------------------------------------------------- bool cmListCommand ::HandleRemoveDuplicatesCommand(std::vector<std::string> const& args) { @@ -432,7 +422,6 @@ bool cmListCommand return true; } -//---------------------------------------------------------------------------- bool cmListCommand ::HandleSortCommand(std::vector<std::string> const& args) { @@ -460,7 +449,6 @@ bool cmListCommand return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleRemoveAtCommand( std::vector<std::string> const& args) { @@ -522,7 +510,6 @@ bool cmListCommand::HandleRemoveAtCommand( return true; } -//---------------------------------------------------------------------------- bool cmListCommand::HandleFilterCommand( std::vector<std::string> const& args) { @@ -585,7 +572,6 @@ bool cmListCommand::HandleFilterCommand( return false; } -//---------------------------------------------------------------------------- class MatchesRegex { public: MatchesRegex(cmsys::RegularExpression& in_regex, bool in_includeMatches) diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx index d5d0184..8788e41 100644 --- a/Source/cmListFileCache.cxx +++ b/Source/cmListFileCache.cxx @@ -12,15 +12,14 @@ #include "cmListFileCache.h" #include "cmListFileLexer.h" +#include "cmMakefile.h" #include "cmOutputConverter.h" #include "cmSystemTools.h" -#include "cmMakefile.h" #include "cmVersion.h" #include <cmsys/RegularExpression.hxx> -//---------------------------------------------------------------------------- struct cmListFileParser { cmListFileParser(cmListFile* lf, cmMakefile* mf, const char* filename); @@ -37,7 +36,6 @@ struct cmListFileParser enum { SeparationOkay, SeparationWarning, SeparationError} Separation; }; -//---------------------------------------------------------------------------- cmListFileParser::cmListFileParser(cmListFile* lf, cmMakefile* mf, const char* filename): ListFile(lf), Makefile(mf), FileName(filename), @@ -45,13 +43,11 @@ cmListFileParser::cmListFileParser(cmListFile* lf, cmMakefile* mf, { } -//---------------------------------------------------------------------------- cmListFileParser::~cmListFileParser() { cmListFileLexer_Delete(this->Lexer); } -//---------------------------------------------------------------------------- bool cmListFileParser::ParseFile() { // Open the file. @@ -134,7 +130,6 @@ bool cmListFileParser::ParseFile() return true; } -//---------------------------------------------------------------------------- bool cmListFile::ParseFile(const char* filename, bool topLevel, cmMakefile *mf) @@ -246,7 +241,6 @@ bool cmListFile::ParseFile(const char* filename, return true; } -//---------------------------------------------------------------------------- bool cmListFileParser::ParseFunction(const char* name, long line) { // Ininitialize a new function call. @@ -261,9 +255,11 @@ bool cmListFileParser::ParseFunction(const char* name, long line) if(!token) { std::ostringstream error; + /* clang-format off */ error << "Error in cmake code at\n" << this->FileName << ":" << cmListFileLexer_GetCurrentLine(this->Lexer) << ":\n" << "Parse error. Function missing opening \"(\"."; + /* clang-format on */ cmSystemTools::Error(error.str().c_str()); return false; } @@ -369,7 +365,6 @@ bool cmListFileParser::ParseFunction(const char* name, long line) return false; } -//---------------------------------------------------------------------------- bool cmListFileParser::AddArgument(cmListFileLexer_Token* token, cmListFileArgument::Delimiter delim) { @@ -382,10 +377,12 @@ bool cmListFileParser::AddArgument(cmListFileLexer_Token* token, bool isError = (this->Separation == SeparationError || delim == cmListFileArgument::Bracket); std::ostringstream m; + /* clang-format off */ m << "Syntax " << (isError? "Error":"Warning") << " in cmake code at\n" << " " << this->FileName << ":" << token->line << ":" << token->column << "\n" << "Argument not separated from preceding token by whitespace."; + /* clang-format on */ if(isError) { this->Makefile->IssueMessage(cmake::FATAL_ERROR, m.str()); @@ -398,69 +395,176 @@ bool cmListFileParser::AddArgument(cmListFileLexer_Token* token, } } -cmListFileBacktrace::cmListFileBacktrace(cmState::Snapshot snapshot, - cmCommandContext const& cc) - : Context(cc) - , Snapshot(snapshot) +struct cmListFileBacktrace::Entry: public cmListFileContext { - if (this->Snapshot.IsValid()) + Entry(cmListFileContext const& lfc, Entry* up): + cmListFileContext(lfc), Up(up), RefCount(0) + { + if (this->Up) + { + this->Up->Ref(); + } + } + ~Entry() + { + if (this->Up) + { + this->Up->Unref(); + } + } + void Ref() + { + ++this->RefCount; + } + void Unref() { - this->Snapshot.Keep(); + if (--this->RefCount == 0) + { + delete this; + } } + Entry* Up; + unsigned int RefCount; +}; + +cmListFileBacktrace::cmListFileBacktrace(cmState::Snapshot bottom, + Entry* up, + cmListFileContext const& lfc): + Bottom(bottom), Cur(new Entry(lfc, up)) +{ + assert(this->Bottom.IsValid()); + this->Cur->Ref(); +} + +cmListFileBacktrace::cmListFileBacktrace(cmState::Snapshot bottom, Entry* cur): + Bottom(bottom), Cur(cur) +{ + if (this->Cur) + { + assert(this->Bottom.IsValid()); + this->Cur->Ref(); + } +} + +cmListFileBacktrace::cmListFileBacktrace(): Bottom(), Cur(0) +{ +} + +cmListFileBacktrace::cmListFileBacktrace(cmState::Snapshot snapshot): + Bottom(snapshot.GetCallStackBottom()), Cur(0) +{ +} + +cmListFileBacktrace::cmListFileBacktrace(cmListFileBacktrace const& r): + Bottom(r.Bottom), Cur(r.Cur) +{ + if (this->Cur) + { + assert(this->Bottom.IsValid()); + this->Cur->Ref(); + } +} + +cmListFileBacktrace& +cmListFileBacktrace::operator=(cmListFileBacktrace const& r) +{ + cmListFileBacktrace tmp(r); + std::swap(this->Cur, tmp.Cur); + std::swap(this->Bottom, tmp.Bottom); + return *this; } cmListFileBacktrace::~cmListFileBacktrace() { + if (this->Cur) + { + this->Cur->Unref(); + } +} + +cmListFileBacktrace +cmListFileBacktrace::Push(std::string const& file) const +{ + // We are entering a file-level scope but have not yet reached + // any specific line or command invocation within it. This context + // is useful to print when it is at the top but otherwise can be + // skipped during call stack printing. + cmListFileContext lfc; + lfc.FilePath = file; + return cmListFileBacktrace(this->Bottom, this->Cur, lfc); +} + +cmListFileBacktrace +cmListFileBacktrace::Push(cmListFileContext const& lfc) const +{ + return cmListFileBacktrace(this->Bottom, this->Cur, lfc); +} + +cmListFileBacktrace cmListFileBacktrace::Pop() const +{ + assert(this->Cur); + return cmListFileBacktrace(this->Bottom, this->Cur->Up); +} + +cmListFileContext const& cmListFileBacktrace::Top() const +{ + if (this->Cur) + { + return *this->Cur; + } + else + { + static cmListFileContext const empty; + return empty; + } } void cmListFileBacktrace::PrintTitle(std::ostream& out) const { - if (!this->Snapshot.IsValid()) + if (!this->Cur) { return; } - cmOutputConverter converter(this->Snapshot); - cmListFileContext lfc = - cmListFileContext::FromCommandContext( - this->Context, this->Snapshot.GetExecutionListFile()); - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + cmOutputConverter converter(this->Bottom); + cmListFileContext lfc = *this->Cur; + if (!this->Bottom.GetState()->GetIsInTryCompile()) + { + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + } out << (lfc.Line ? " at " : " in ") << lfc; } void cmListFileBacktrace::PrintCallStack(std::ostream& out) const { - if (!this->Snapshot.IsValid()) - { - return; - } - cmState::Snapshot parent = this->Snapshot.GetCallStackParent(); - if (!parent.IsValid() || parent.GetExecutionListFile().empty()) + if (!this->Cur || !this->Cur->Up) { return; } - cmOutputConverter converter(this->Snapshot); - std::string commandName = this->Snapshot.GetEntryPointCommand(); - long commandLine = this->Snapshot.GetEntryPointLine(); - - out << "Call Stack (most recent call first):\n"; - while(parent.IsValid()) + bool first = true; + cmOutputConverter converter(this->Bottom); + for (Entry* i = this->Cur->Up; i; i = i->Up) { - cmListFileContext lfc; - lfc.Name = commandName; - lfc.Line = commandLine; - - lfc.FilePath = converter.Convert(parent.GetExecutionListFile(), - cmOutputConverter::HOME); + if (i->Name.empty()) + { + // Skip this whole-file scope. When we get here we already will + // have printed a more-specific context within the file. + continue; + } + if (first) + { + first = false; + out << "Call Stack (most recent call first):\n"; + } + cmListFileContext lfc = *i; + if (!this->Bottom.GetState()->GetIsInTryCompile()) + { + lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); + } out << " " << lfc << "\n"; - - commandName = parent.GetEntryPointCommand(); - commandLine = parent.GetEntryPointLine(); - parent = parent.GetCallStackParent(); } } -//---------------------------------------------------------------------------- std::ostream& operator<<(std::ostream& os, cmListFileContext const& lfc) { os << lfc.FilePath; diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index 4d3055f..9fa8585 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -87,18 +87,53 @@ struct cmListFileFunction: public cmCommandContext std::vector<cmListFileArgument> Arguments; }; +// Represent a backtrace (call stack). Provide value semantics +// but use efficient reference-counting underneath to avoid copies. class cmListFileBacktrace { - public: - cmListFileBacktrace(cmState::Snapshot snapshot = cmState::Snapshot(), - cmCommandContext const& cc = cmCommandContext()); - ~cmListFileBacktrace(); - - void PrintTitle(std::ostream& out) const; - void PrintCallStack(std::ostream& out) const; - private: - cmCommandContext Context; - cmState::Snapshot Snapshot; +public: + // Default-constructed backtrace may not be used until after + // set via assignment from a backtrace constructed with a + // valid snapshot. + cmListFileBacktrace(); + + // Construct an empty backtrace whose bottom sits in the directory + // indicated by the given valid snapshot. + cmListFileBacktrace(cmState::Snapshot snapshot); + + // Backtraces may be copied and assigned as values. + cmListFileBacktrace(cmListFileBacktrace const& r); + cmListFileBacktrace& operator=(cmListFileBacktrace const& r); + ~cmListFileBacktrace(); + + // Get a backtrace with the given file scope added to the top. + // May not be called until after construction with a valid snapshot. + cmListFileBacktrace Push(std::string const& file) const; + + // Get a backtrace with the given call context added to the top. + // May not be called until after construction with a valid snapshot. + cmListFileBacktrace Push(cmListFileContext const& lfc) const; + + // Get a backtrace with the top level removed. + // May not be called until after a matching Push. + cmListFileBacktrace Pop() const; + + // Get the context at the top of the backtrace. + // Returns an empty context if the backtrace is empty. + cmListFileContext const& Top() const; + + // Print the top of the backtrace. + void PrintTitle(std::ostream& out) const; + + // Print the call stack below the top of the backtrace. + void PrintCallStack(std::ostream& out) const; +private: + struct Entry; + cmState::Snapshot Bottom; + Entry* Cur; + cmListFileBacktrace(cmState::Snapshot bottom, Entry* up, + cmListFileContext const& lfc); + cmListFileBacktrace(cmState::Snapshot bottom, Entry* cur); }; struct cmListFile diff --git a/Source/cmLoadCacheCommand.cxx b/Source/cmLoadCacheCommand.cxx index 6ade535..4865e56 100644 --- a/Source/cmLoadCacheCommand.cxx +++ b/Source/cmLoadCacheCommand.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmLoadCacheCommand.h" -#include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/RegularExpression.hxx> // cmLoadCacheCommand bool cmLoadCacheCommand @@ -89,7 +89,6 @@ bool cmLoadCacheCommand return true; } -//---------------------------------------------------------------------------- bool cmLoadCacheCommand::ReadWithPrefix(std::vector<std::string> const& args) { // Make sure we have a prefix. @@ -166,7 +165,6 @@ bool cmLoadCacheCommand::ReadWithPrefix(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- void cmLoadCacheCommand::CheckLine(const char* line) { // Check one line of the cache file. diff --git a/Source/cmLoadCommandCommand.cxx b/Source/cmLoadCommandCommand.cxx index 403f7fc..14b70e4 100644 --- a/Source/cmLoadCommandCommand.cxx +++ b/Source/cmLoadCommandCommand.cxx @@ -10,8 +10,9 @@ See the License for more information. ============================================================================*/ #include "cmLoadCommandCommand.h" -#include "cmCPluginAPI.h" + #include "cmCPluginAPI.cxx" +#include "cmCPluginAPI.h" #include "cmDynamicLoader.h" #include <cmsys/DynamicLoader.hxx> diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 1be39a9..8d985b1 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -11,22 +11,22 @@ ============================================================================*/ #include "cmLocalGenerator.h" +#include "cmAlgorithms.h" #include "cmComputeLinkInformation.h" +#include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGeneratorExpressionEvaluationFile.h" #include "cmGlobalGenerator.h" -#include "cmInstallGenerator.h" #include "cmInstallFilesGenerator.h" -#include "cmGeneratorExpressionEvaluationFile.h" +#include "cmInstallGenerator.h" #include "cmInstallScriptGenerator.h" #include "cmInstallTargetGenerator.h" #include "cmMakefile.h" #include "cmSourceFile.h" #include "cmTest.h" #include "cmTestGenerator.h" -#include "cmCustomCommandGenerator.h" #include "cmVersion.h" #include "cmake.h" -#include "cmAlgorithms.h" #if defined(CMAKE_BUILD_WITH_CMAKE) # define CM_LG_ENCODE_OBJECT_NAMES @@ -69,20 +69,9 @@ cmLocalGenerator::~cmLocalGenerator() void cmLocalGenerator::IssueMessage(cmake::MessageType t, std::string const& text) const { - cmListFileContext lfc; - lfc.FilePath = this->StateSnapshot.GetDirectory().GetCurrentSource(); - lfc.FilePath += "/CMakeLists.txt"; - - if(!this->GlobalGenerator->GetCMakeInstance()->GetIsInTryCompile()) - { - cmOutputConverter converter(this->StateSnapshot); - lfc.FilePath = converter.Convert(lfc.FilePath, cmLocalGenerator::HOME); - } - lfc.Line = 0; - this->GlobalGenerator->GetCMakeInstance()->IssueMessage(t, text, lfc); + this->Makefile->IssueMessage(t, text); } -//---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectMaxPath() { // Choose a maximum object file name length. @@ -257,7 +246,6 @@ void cmLocalGenerator::ProcessEvaluationFiles( } } -//---------------------------------------------------------------------------- void cmLocalGenerator::GenerateInstallRules() { // Compute the install prefix. @@ -359,6 +347,7 @@ void cmLocalGenerator::GenerateInstallRules() << std::endl; // Write support code for generating per-configuration install rules. + /* clang-format off */ fout << "# Set the install configuration name.\n" "if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)\n" @@ -372,8 +361,10 @@ void cmLocalGenerator::GenerateInstallRules() "\\\"${CMAKE_INSTALL_CONFIG_NAME}\\\"\")\n" "endif()\n" "\n"; + /* clang-format on */ // Write support code for dealing with component-specific installs. + /* clang-format off */ fout << "# Set the component getting installed.\n" "if(NOT CMAKE_INSTALL_COMPONENT)\n" @@ -385,17 +376,20 @@ void cmLocalGenerator::GenerateInstallRules() " endif()\n" "endif()\n" "\n"; + /* clang-format on */ // Copy user-specified install options to the install code. if(const char* so_no_exe = this->Makefile->GetDefinition("CMAKE_INSTALL_SO_NO_EXE")) { + /* clang-format off */ fout << "# Install shared libraries without execute permission?\n" "if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)\n" " set(CMAKE_INSTALL_SO_NO_EXE \"" << so_no_exe << "\")\n" "endif()\n" "\n"; + /* clang-format on */ } // Ask each install generator to write its code. @@ -436,6 +430,7 @@ void cmLocalGenerator::GenerateInstallRules() // Record the install manifest. if ( toplevel_install ) { + /* clang-format off */ fout << "if(CMAKE_INSTALL_COMPONENT)\n" " set(CMAKE_INSTALL_MANIFEST \"install_manifest_" @@ -448,6 +443,7 @@ void cmLocalGenerator::GenerateInstallRules() " \"${CMAKE_INSTALL_MANIFEST_FILES}\")\n" "file(WRITE \"" << homedir << "/${CMAKE_INSTALL_MANIFEST}\"\n" " \"${CMAKE_INSTALL_MANIFEST_CONTENT}\")\n"; + /* clang-format on */ } } @@ -485,19 +481,9 @@ private: std::string Name; }; -cmGeneratorTarget* cmLocalGenerator::FindGeneratorTarget( +cmGeneratorTarget* cmLocalGenerator::FindLocalNonAliasGeneratorTarget( const std::string& name) const { - std::map<std::string, std::string>::const_iterator i = - this->AliasTargets.find(name); - if (i != this->AliasTargets.end()) - { - std::vector<cmGeneratorTarget*>::const_iterator ai = - std::find_if(this->GeneratorTargets.begin(), - this->GeneratorTargets.end(), - NamedGeneratorTargetFinder(i->second)); - return *ai; - } std::vector<cmGeneratorTarget*>::const_iterator ti = std::find_if(this->GeneratorTargets.begin(), this->GeneratorTargets.end(), @@ -506,11 +492,9 @@ cmGeneratorTarget* cmLocalGenerator::FindGeneratorTarget( { return *ti; } - return 0; } -//---------------------------------------------------------------------------- void cmLocalGenerator::ComputeTargetManifest() { // Collect the set of configuration types. @@ -975,7 +959,6 @@ cmLocalGenerator::ExpandRuleVariables(std::string& s, s = expandedInput; } -//---------------------------------------------------------------------------- const char* cmLocalGenerator::GetRuleLauncher(cmGeneratorTarget* target, const std::string& prop) { @@ -989,7 +972,6 @@ const char* cmLocalGenerator::GetRuleLauncher(cmGeneratorTarget* target, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::InsertRuleLauncher(std::string& s, cmGeneratorTarget* target, const std::string& prop) @@ -1002,7 +984,6 @@ void cmLocalGenerator::InsertRuleLauncher(std::string& s, } } -//---------------------------------------------------------------------------- std::string cmLocalGenerator::ConvertToIncludeReference(std::string const& path, OutputFormat format, @@ -1012,7 +993,6 @@ cmLocalGenerator::ConvertToIncludeReference(std::string const& path, path, forceFullPaths? FULL : START_OUTPUT, format); } -//---------------------------------------------------------------------------- std::string cmLocalGenerator::GetIncludeFlags( const std::vector<std::string> &includes, cmGeneratorTarget* target, @@ -1142,7 +1122,6 @@ std::string cmLocalGenerator::GetIncludeFlags( return flags; } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddCompileDefinitions(std::set<std::string>& defines, cmGeneratorTarget const* target, const std::string& config, @@ -1153,7 +1132,6 @@ void cmLocalGenerator::AddCompileDefinitions(std::set<std::string>& defines, this->AppendDefines(defines, targetDefines); } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddCompileOptions( std::string& flags, cmGeneratorTarget* target, const std::string& lang, const std::string& config @@ -1238,7 +1216,6 @@ void cmLocalGenerator::AddCompileOptions( this->AddCompilerRequirementFlag(flags, target, lang); } -//---------------------------------------------------------------------------- void cmLocalGenerator::GetIncludeDirectories(std::vector<std::string>& dirs, cmGeneratorTarget const* target, const std::string& lang, @@ -1615,11 +1592,13 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries, "CMAKE_POLICY_WARNING_CMP0065")) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0065) << "\n" "For compatibility with older versions of CMake, " "additional flags may be added to export symbols on all " "executables regardless of thier ENABLE_EXPORTS property."; - this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str()); + /* clang-format on */ + this->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } case cmPolicies::OLD: // OLD behavior is to always add the flags @@ -1627,7 +1606,7 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries, break; case cmPolicies::REQUIRED_IF_USED: case cmPolicies::REQUIRED_ALWAYS: - this->Makefile->IssueMessage( + this->IssueMessage( cmake::FATAL_ERROR, cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0065) ); @@ -1756,7 +1735,6 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries, } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddArchitectureFlags(std::string& flags, cmGeneratorTarget const* target, const std::string& lang, @@ -1814,7 +1792,6 @@ void cmLocalGenerator::AddArchitectureFlags(std::string& flags, } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddLanguageFlags(std::string& flags, const std::string& lang, const std::string& config) @@ -1826,7 +1803,6 @@ void cmLocalGenerator::AddLanguageFlags(std::string& flags, this->AddConfigVariableFlags(flags, flagsVar, config); } -//---------------------------------------------------------------------------- cmGeneratorTarget* cmLocalGenerator::FindGeneratorTargetToUse(const std::string& name) const { @@ -1839,7 +1815,7 @@ cmLocalGenerator::FindGeneratorTargetToUse(const std::string& name) const return *imported; } - if(cmGeneratorTarget* t = this->FindGeneratorTarget(name)) + if(cmGeneratorTarget* t = this->FindLocalNonAliasGeneratorTarget(name)) { return t; } @@ -1847,7 +1823,6 @@ cmLocalGenerator::FindGeneratorTargetToUse(const std::string& name) const return this->GetGlobalGenerator()->FindGeneratorTarget(name); } -//---------------------------------------------------------------------------- bool cmLocalGenerator::GetRealDependency(const std::string& inName, const std::string& config, std::string& dep) @@ -1948,7 +1923,6 @@ bool cmLocalGenerator::GetRealDependency(const std::string& inName, return true; } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddSharedFlags(std::string& flags, const std::string& lang, bool shared) @@ -1965,7 +1939,6 @@ void cmLocalGenerator::AddSharedFlags(std::string& flags, } } -//---------------------------------------------------------------------------- void cmLocalGenerator:: AddCompilerRequirementFlag(std::string &flags, cmGeneratorTarget const* target, @@ -2158,7 +2131,6 @@ static void AddInlineVisibilityCompileOption(std::string &flags, lg->AppendFlags(flags, opt); } -//---------------------------------------------------------------------------- void cmLocalGenerator ::AddVisibilityPresetFlags(std::string &flags, cmGeneratorTarget const* target, const std::string& lang) @@ -2197,6 +2169,7 @@ void cmLocalGenerator this->WarnCMP0063.insert(target).second) { std::ostringstream w; + /* clang-format off */ w << cmPolicies::GetPolicyWarning(cmPolicies::CMP0063) << "\n" "Target \"" << target->GetName() << "\" of " @@ -2204,13 +2177,13 @@ void cmLocalGenerator "has the following visibility properties set for " << lang << ":\n" << warnCMP0063 << "For compatibility CMake is not honoring them for this target."; + /* clang-format on */ target->GetLocalGenerator()->GetCMakeInstance() ->IssueMessage(cmake::AUTHOR_WARNING, w.str(), target->GetBacktrace()); } } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddCMP0018Flags(std::string &flags, cmGeneratorTarget const* target, std::string const& lang, @@ -2249,7 +2222,6 @@ void cmLocalGenerator::AddCMP0018Flags(std::string &flags, } } -//---------------------------------------------------------------------------- bool cmLocalGenerator::GetShouldUseOldFlags(bool shared, const std::string &lang) const { @@ -2292,7 +2264,6 @@ bool cmLocalGenerator::GetShouldUseOldFlags(bool shared, return false; } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddPositionIndependentFlags(std::string& flags, std::string const& lang, int targetType) @@ -2325,7 +2296,6 @@ void cmLocalGenerator::AddPositionIndependentFlags(std::string& flags, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::AddConfigVariableFlags(std::string& flags, const std::string& var, const std::string& config) @@ -2342,7 +2312,6 @@ void cmLocalGenerator::AddConfigVariableFlags(std::string& flags, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::AppendFlags(std::string& flags, const std::string& newFlags) { @@ -2356,7 +2325,6 @@ void cmLocalGenerator::AppendFlags(std::string& flags, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::AppendFlags(std::string& flags, const char* newFlags) { @@ -2366,14 +2334,12 @@ void cmLocalGenerator::AppendFlags(std::string& flags, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::AppendFlagEscape(std::string& flags, const std::string& rawFlag) { this->AppendFlags(flags, this->EscapeForShell(rawFlag)); } -//---------------------------------------------------------------------------- void cmLocalGenerator::AppendDefines(std::set<std::string>& defines, const char* defines_list) { @@ -2389,7 +2355,6 @@ void cmLocalGenerator::AppendDefines(std::set<std::string>& defines, this->AppendDefines(defines, defines_vec); } -//---------------------------------------------------------------------------- void cmLocalGenerator::AppendDefines(std::set<std::string>& defines, const std::vector<std::string> &defines_vec) { @@ -2405,7 +2370,6 @@ void cmLocalGenerator::AppendDefines(std::set<std::string>& defines, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::JoinDefines(const std::set<std::string>& defines, std::string &definesString, const std::string& lang) @@ -2470,7 +2434,6 @@ void cmLocalGenerator::JoinDefines(const std::set<std::string>& defines, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::AppendFeatureOptions( std::string& flags, const std::string& lang, const char* feature) { @@ -2490,7 +2453,6 @@ void cmLocalGenerator::AppendFeatureOptions( } } -//---------------------------------------------------------------------------- const char* cmLocalGenerator::GetFeature(const std::string& feature, const std::string& config) { @@ -2519,7 +2481,6 @@ std::string cmLocalGenerator::GetProjectName() const return this->StateSnapshot.GetProjectName(); } -//---------------------------------------------------------------------------- std::string cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, const char* default_comment) @@ -2550,7 +2511,6 @@ cmLocalGenerator::ConstructComment(cmCustomCommandGenerator const& ccg, return default_comment; } -//---------------------------------------------------------------------------- class cmInstallTargetGeneratorLocal: public cmInstallTargetGenerator { public: @@ -2565,7 +2525,6 @@ public: } }; -//---------------------------------------------------------------------------- void cmLocalGenerator ::GenerateTargetInstallRules( @@ -2688,7 +2647,6 @@ cmLocalGeneratorShortenObjectName(std::string& objName, } } -static bool cmLocalGeneratorCheckObjectName(std::string& objName, std::string::size_type dir_len, std::string::size_type max_total_len) @@ -2718,7 +2676,6 @@ bool cmLocalGeneratorCheckObjectName(std::string& objName, } #endif -//---------------------------------------------------------------------------- std::string& cmLocalGenerator ::CreateSafeUniqueObjectFileName(const std::string& sin, @@ -2786,6 +2743,7 @@ cmLocalGenerator if(this->ObjectMaxPathViolations.insert(dir_max).second) { std::ostringstream m; + /* clang-format off */ m << "The object file directory\n" << " " << dir_max << "\n" << "has " << dir_max.size() << " characters. " @@ -2796,6 +2754,7 @@ cmLocalGenerator << " " << ssin << "\n" << "cannot be safely placed under this directory. " << "The build may not work correctly."; + /* clang-format on */ this->IssueMessage(cmake::WARNING, m.str()); } } @@ -2812,7 +2771,6 @@ cmLocalGenerator return it->second; } -//---------------------------------------------------------------------------- void cmLocalGenerator::ComputeObjectFilenames( std::map<cmSourceFile const*, std::string>&, cmGeneratorTarget const*) @@ -2840,7 +2798,6 @@ bool cmLocalGenerator::IsNMake() const return this->GetState()->UseNMake(); } -//---------------------------------------------------------------------------- std::string cmLocalGenerator ::GetObjectFileNameWithoutTarget(const cmSourceFile& source, @@ -2939,7 +2896,6 @@ cmLocalGenerator return this->CreateSafeUniqueObjectFileName(objectName, dir_max); } -//---------------------------------------------------------------------------- std::string cmLocalGenerator ::GetSourceFileLanguage(const cmSourceFile& source) @@ -2972,7 +2928,6 @@ const char* cmLocalGenerator::GetCurrentSourceDirectory() const return this->StateSnapshot.GetDirectory().GetCurrentSource(); } -//---------------------------------------------------------------------------- std::string cmLocalGenerator::GetTargetDirectory(const cmGeneratorTarget*) const { @@ -2981,7 +2936,6 @@ cmLocalGenerator::GetTargetDirectory(const cmGeneratorTarget*) const return ""; } -//---------------------------------------------------------------------------- KWIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility() { // The computed version may change until the project is fully @@ -3008,7 +2962,6 @@ KWIML_INT_uint64_t cmLocalGenerator::GetBackwardsCompatibility() return this->BackwardsCompatibility; } -//---------------------------------------------------------------------------- bool cmLocalGenerator::NeedBackwardsCompatibility_2_4() { // Check the policy to decide whether to pay attention to this @@ -3046,7 +2999,6 @@ cmLocalGenerator::GetPolicyStatus(cmPolicies::PolicyID id) const return this->Makefile->GetPolicyStatus(id); } -//---------------------------------------------------------------------------- bool cmLocalGenerator::CheckDefinition(std::string const& define) const { // Many compilers do not support -DNAME(arg)=sdf so we disable it. @@ -3056,11 +3008,13 @@ bool cmLocalGenerator::CheckDefinition(std::string const& define) const if (define[pos] == '(') { std::ostringstream e; + /* clang-format off */ e << "WARNING: Function-style preprocessor definitions may not be " << "passed on the compiler command line because many compilers " << "do not support it.\n" << "CMake is dropping a preprocessor definition: " << define << "\n" << "Consider defining the macro in a (configured) header file.\n"; + /* clang-format on */ cmSystemTools::Message(e.str().c_str()); return false; } @@ -3070,11 +3024,13 @@ bool cmLocalGenerator::CheckDefinition(std::string const& define) const if(define.find_first_of("#") != define.npos) { std::ostringstream e; + /* clang-format off */ e << "WARNING: Preprocessor definitions containing '#' may not be " << "passed on the compiler command line because many compilers " << "do not support it.\n" << "CMake is dropping a preprocessor definition: " << define << "\n" << "Consider defining the macro in a (configured) header file.\n"; + /* clang-format on */ cmSystemTools::Message(e.str().c_str()); return false; } @@ -3083,7 +3039,6 @@ bool cmLocalGenerator::CheckDefinition(std::string const& define) const return true; } -//---------------------------------------------------------------------------- static void cmLGInfoProp(cmMakefile* mf, cmGeneratorTarget* target, const std::string& prop) { @@ -3093,7 +3048,6 @@ static void cmLGInfoProp(cmMakefile* mf, cmGeneratorTarget* target, } } -//---------------------------------------------------------------------------- void cmLocalGenerator::GenerateAppleInfoPList(cmGeneratorTarget* target, const std::string& targetName, const char* fname) @@ -3136,7 +3090,6 @@ void cmLocalGenerator::GenerateAppleInfoPList(cmGeneratorTarget* target, mf->ConfigureFile(inFile.c_str(), fname, false, false, false); } -//---------------------------------------------------------------------------- void cmLocalGenerator::GenerateFrameworkInfoPList(cmGeneratorTarget* target, const std::string& targetName, const char* fname) diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 68e7667..33db68c 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -13,9 +13,10 @@ #define cmLocalGenerator_h #include "cmStandardIncludes.h" + +#include "cmOutputConverter.h" #include "cmState.h" #include "cmake.h" -#include "cmOutputConverter.h" class cmMakefile; class cmGlobalGenerator; @@ -129,7 +130,8 @@ public: void AddImportedGeneratorTarget(cmGeneratorTarget* gt); void AddOwnedImportedGeneratorTarget(cmGeneratorTarget* gt); - cmGeneratorTarget* FindGeneratorTarget(const std::string& name) const; + cmGeneratorTarget* + FindLocalNonAliasGeneratorTarget(const std::string& name) const; cmGeneratorTarget* FindGeneratorTargetToUse(const std::string& name) const; /** @@ -402,4 +404,10 @@ private: void ComputeObjectMaxPath(); }; +#if defined(CMAKE_BUILD_WITH_CMAKE) +bool cmLocalGeneratorCheckObjectName(std::string &objName, + std::string::size_type dir_len, + std::string::size_type max_total_len); +#endif + #endif diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index a77a75e..f23f27d 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -10,11 +10,12 @@ See the License for more information. ============================================================================*/ #include "cmLocalGhsMultiGenerator.h" -#include "cmGlobalGhsMultiGenerator.h" + +#include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" -#include "cmMakefile.h" #include "cmGhsMultiTargetGenerator.h" -#include "cmGeneratedFileStream.h" +#include "cmGlobalGhsMultiGenerator.h" +#include "cmMakefile.h" cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmGlobalGenerator* gg, cmMakefile* mf) diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index 8a68af6..800c071 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -11,14 +11,15 @@ See the License for more information. ============================================================================*/ #include "cmLocalNinjaGenerator.h" + #include "cmCustomCommandGenerator.h" -#include "cmMakefile.h" +#include "cmGeneratedFileStream.h" #include "cmGlobalNinjaGenerator.h" +#include "cmMakefile.h" #include "cmNinjaTargetGenerator.h" -#include "cmGeneratedFileStream.h" #include "cmSourceFile.h" -#include "cmake.h" #include "cmState.h" +#include "cmake.h" #include <assert.h> @@ -30,7 +31,6 @@ cmLocalNinjaGenerator::cmLocalNinjaGenerator(cmGlobalGenerator* gg, this->TargetImplib = "$TARGET_IMPLIB"; } -//---------------------------------------------------------------------------- // Virtual public methods. cmLocalNinjaGenerator::~cmLocalNinjaGenerator() @@ -111,7 +111,6 @@ std::string cmLocalNinjaGenerator return dir; } -//---------------------------------------------------------------------------- // Non-virtual public methods. const cmGlobalNinjaGenerator* @@ -126,7 +125,6 @@ cmGlobalNinjaGenerator* cmLocalNinjaGenerator::GetGlobalNinjaGenerator() return static_cast<cmGlobalNinjaGenerator*>(this->GetGlobalGenerator()); } -//---------------------------------------------------------------------------- // Virtual protected methods. std::string @@ -144,7 +142,6 @@ cmLocalNinjaGenerator::ConvertToIncludeReference(std::string const& path, return this->Convert(path, forceFullPaths? FULL : HOME_OUTPUT, format); } -//---------------------------------------------------------------------------- // Private methods. cmGeneratedFileStream& cmLocalNinjaGenerator::GetBuildFileStream() const @@ -256,7 +253,6 @@ void cmLocalNinjaGenerator::WriteNinjaFilesInclusion(std::ostream& os) os << "\n"; } -//---------------------------------------------------------------------------- void cmLocalNinjaGenerator::ComputeObjectFilenames( std::map<cmSourceFile const*, std::string>& mapping, cmGeneratorTarget const* gt) @@ -400,7 +396,7 @@ cmLocalNinjaGenerator::WriteCustomCommandBuildStatement( bool symbolic = false; for (std::vector<std::string>::const_iterator o = outputs.begin(); - o != outputs.end(); ++o) + !symbolic && o != outputs.end(); ++o) { if (cmSourceFile* sf = this->Makefile->GetSource(*o)) { @@ -444,7 +440,7 @@ cmLocalNinjaGenerator::WriteCustomCommandBuildStatement( this->ConstructComment(ccg), "Custom command for " + ninjaOutputs[0], cc->GetUsesTerminal(), - /*restat*/!symbolic, + /*restat*/!symbolic || !byproducts.empty(), ninjaOutputs, ninjaDeps, orderOnlyDeps); diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index 5e1d6f2..9746a3c 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -11,10 +11,11 @@ See the License for more information. ============================================================================*/ #ifndef cmLocalNinjaGenerator_h -# define cmLocalNinjaGenerator_h +#define cmLocalNinjaGenerator_h -# include "cmLocalCommonGenerator.h" -# include "cmNinjaTypes.h" +#include "cmLocalCommonGenerator.h" + +#include "cmNinjaTypes.h" class cmCustomCommandGenerator; class cmGlobalNinjaGenerator; diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index afdff33..82220be 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -11,16 +11,16 @@ ============================================================================*/ #include "cmLocalUnixMakefileGenerator3.h" +#include "cmAlgorithms.h" +#include "cmCustomCommandGenerator.h" +#include "cmFileTimeComparison.h" #include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmMakefile.h" #include "cmMakefileTargetGenerator.h" #include "cmSourceFile.h" -#include "cmake.h" #include "cmVersion.h" -#include "cmFileTimeComparison.h" -#include "cmCustomCommandGenerator.h" -#include "cmAlgorithms.h" +#include "cmake.h" // Include dependency scanners for supported languages. Only the // C/C++ scanner is needed for bootstrapping CMake. @@ -30,13 +30,12 @@ # include "cmDependsJava.h" #endif -#include <cmsys/auto_ptr.hxx> #include <cmsys/Terminal.h> +#include <cmsys/auto_ptr.hxx> -#include <queue> #include <algorithm> +#include <queue> -//---------------------------------------------------------------------------- // Escape special characters in Makefile dependency lines class cmMakeSafe { @@ -60,7 +59,6 @@ private: } }; -//---------------------------------------------------------------------------- // Helper function used below. static std::string cmSplitExtension(std::string const& in, std::string& base) { @@ -79,7 +77,6 @@ static std::string cmSplitExtension(std::string const& in, std::string& base) return ext; } -//---------------------------------------------------------------------------- cmLocalUnixMakefileGenerator3:: cmLocalUnixMakefileGenerator3(cmGlobalGenerator* gg, cmMakefile* mf) : cmLocalCommonGenerator(gg, mf) @@ -92,12 +89,10 @@ cmLocalUnixMakefileGenerator3(cmGlobalGenerator* gg, cmMakefile* mf) this->BorlandMakeCurlyHack = false; } -//---------------------------------------------------------------------------- cmLocalUnixMakefileGenerator3::~cmLocalUnixMakefileGenerator3() { } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::Generate() { this->SetConfigName(); @@ -156,7 +151,6 @@ void cmLocalUnixMakefileGenerator3::ComputeHomeRelativeOutputPath() } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::ComputeObjectFilenames( std::map<cmSourceFile const*, std::string>& mapping, cmGeneratorTarget const* gt) @@ -170,7 +164,6 @@ void cmLocalUnixMakefileGenerator3::ComputeObjectFilenames( } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3:: GetLocalObjectFiles(std::map<std::string, LocalObjectInfo> &localObjectFiles) { @@ -213,7 +206,6 @@ GetLocalObjectFiles(std::map<std::string, LocalObjectInfo> &localObjectFiles) } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::GetIndividualFileTargets (std::vector<std::string>& targets) { @@ -239,7 +231,6 @@ void cmLocalUnixMakefileGenerator3::GetIndividualFileTargets } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::WriteLocalMakefile() { // generate the includes @@ -350,7 +341,6 @@ void cmLocalUnixMakefileGenerator3::WriteLocalMakefile() this->WriteSpecialTargetsBottom(ruleFileStream); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteObjectConvenienceRule(std::ostream& ruleFileStream, @@ -407,7 +397,6 @@ cmLocalUnixMakefileGenerator3 output, no_depends, commands, true, inHelp); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteLocalMakefileTargets(std::ostream& ruleFileStream, std::set<std::string> &emitted) @@ -500,7 +489,6 @@ void cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::WriteDirectoryInformationFile() { std::string infoFileName = this->GetCurrentBinaryDirectory(); @@ -519,6 +507,7 @@ void cmLocalUnixMakefileGenerator3::WriteDirectoryInformationFile() this->WriteDisclaimer(infoFileStream); // Setup relative path conversion tops. + /* clang-format off */ infoFileStream << "# Relative path conversion top directories.\n" << "set(CMAKE_RELATIVE_PATH_TOP_SOURCE \"" @@ -528,14 +517,17 @@ void cmLocalUnixMakefileGenerator3::WriteDirectoryInformationFile() << this->StateSnapshot.GetDirectory().GetRelativePathTopBinary() << "\")\n" << "\n"; + /* clang-format on */ // Tell the dependency scanner to use unix paths if necessary. if(cmSystemTools::GetForceUnixPaths()) { + /* clang-format off */ infoFileStream << "# Force unix paths in dependencies.\n" << "set(CMAKE_FORCE_UNIX_PATHS 1)\n" << "\n"; + /* clang-format on */ } // Store the include regular expressions for this directory. @@ -562,7 +554,6 @@ void cmLocalUnixMakefileGenerator3::WriteDirectoryInformationFile() "${CMAKE_C_INCLUDE_REGEX_COMPLAIN})\n"; } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 ::ConvertToFullPath(const std::string& localPath) @@ -579,7 +570,6 @@ const std::string &cmLocalUnixMakefileGenerator3::GetHomeRelativeOutputPath() return this->HomeRelativeOutputPath; } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteMakeRule(std::ostream& os, @@ -668,7 +658,6 @@ cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 ::ConvertShellCommand(std::string const& cmd, RelativeRoot root) @@ -689,7 +678,6 @@ cmLocalUnixMakefileGenerator3 return this->Convert(cmd, root, SHELL); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteMakeVariables(std::ostream& makefileStream) @@ -718,13 +706,16 @@ cmLocalUnixMakefileGenerator3 else { #if !defined(__VMS) + /* clang-format off */ makefileStream << "# The shell in which to execute make rules.\n" << "SHELL = /bin/sh\n" << "\n"; + /* clang-format on */ #endif } + /* clang-format off */ makefileStream << "# The CMake executable.\n" << "CMAKE_COMMAND = " @@ -753,9 +744,9 @@ cmLocalUnixMakefileGenerator3 << this->Convert(this->GetBinaryDirectory(), FULL, SHELL) << "\n" << "\n"; + /* clang-format on */ } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteSpecialTargetsTop(std::ostream& makefileStream) @@ -793,27 +784,33 @@ cmLocalUnixMakefileGenerator3 // Switch on WMake feature, if an error or interrupt occurs during // makefile processing, the current target being made may be deleted // without prompting (the same as command line -e option). + /* clang-format off */ makefileStream << "\n" ".ERASE\n" "\n" ; + /* clang-format on */ } if(this->Makefile->IsOn("CMAKE_VERBOSE_MAKEFILE")) { + /* clang-format off */ makefileStream << "# Produce verbose output by default.\n" << "VERBOSE = 1\n" << "\n"; + /* clang-format on */ } if(this->IsWatcomWMake()) { + /* clang-format off */ makefileStream << "!ifndef VERBOSE\n" ".SILENT\n" "!endif\n" "\n" ; + /* clang-format on */ } else { @@ -856,7 +853,6 @@ cmLocalUnixMakefileGenerator3 this->WriteMakeVariables(makefileStream); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteSpecialTargetsBottom(std::ostream& makefileStream) { @@ -900,7 +896,6 @@ void cmLocalUnixMakefileGenerator3 -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteConvenienceRule(std::ostream& ruleFileStream, @@ -924,7 +919,6 @@ cmLocalUnixMakefileGenerator3 } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 ::GetRelativeTargetDirectory(cmGeneratorTarget* target) @@ -936,7 +930,6 @@ cmLocalUnixMakefileGenerator3 -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::AppendFlags(std::string& flags, const std::string& newFlags) { @@ -953,14 +946,12 @@ void cmLocalUnixMakefileGenerator3::AppendFlags(std::string& flags, this->cmLocalGenerator::AppendFlags(flags, newFlags); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::AppendFlags(std::string& flags, const char* newFlags) { this->cmLocalGenerator::AppendFlags(flags, newFlags); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendRuleDepend(std::vector<std::string>& depends, @@ -976,7 +967,6 @@ cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendRuleDepends(std::vector<std::string>& depends, @@ -990,7 +980,6 @@ cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendCustomDepends(std::vector<std::string>& depends, @@ -1004,7 +993,6 @@ cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendCustomDepend(std::vector<std::string>& depends, @@ -1023,7 +1011,6 @@ cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendCustomCommands(std::vector<std::string>& commands, @@ -1039,7 +1026,6 @@ cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendCustomCommand(std::vector<std::string>& commands, @@ -1171,7 +1157,6 @@ cmLocalUnixMakefileGenerator3 commands.insert(commands.end(), commands1.begin(), commands1.end()); } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3::MakeLauncher( cmCustomCommandGenerator const& ccg, @@ -1207,7 +1192,6 @@ cmLocalUnixMakefileGenerator3::MakeLauncher( return launcher; } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::AppendCleanCommand(std::vector<std::string>& commands, @@ -1252,16 +1236,17 @@ cmLocalUnixMakefileGenerator3 std::set<std::string> languages; target->GetLanguages(languages, this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE")); + /* clang-format off */ fout << "\n" << "# Per-language clean rules from dependency scanning.\n" << "foreach(lang " << cmJoin(languages, " ") << ")\n" << " include(" << this->GetTargetDirectory(target) << "/cmake_clean_${lang}.cmake OPTIONAL)\n" << "endforeach()\n"; + /* clang-format on */ } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::AppendEcho(std::vector<std::string>& commands, std::string const& text, @@ -1355,7 +1340,6 @@ cmLocalUnixMakefileGenerator3::AppendEcho(std::vector<std::string>& commands, } } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 ::CreateMakeVariable(const std::string& sin, const std::string& s2in) @@ -1447,7 +1431,6 @@ cmLocalUnixMakefileGenerator3 return ret; } -//---------------------------------------------------------------------------- bool cmLocalUnixMakefileGenerator3::UpdateDependencies(const char* tgtInfo, bool verbose, bool color) @@ -1558,7 +1541,6 @@ bool cmLocalUnixMakefileGenerator3::UpdateDependencies(const char* tgtInfo, return true; } -//---------------------------------------------------------------------------- bool cmLocalUnixMakefileGenerator3 ::ScanDependencies(const char* targetDir, @@ -1681,7 +1663,6 @@ cmLocalUnixMakefileGenerator3 return true; } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::CheckMultipleOutputs(bool verbose) { cmMakefile* mf = this->Makefile; @@ -1720,7 +1701,6 @@ void cmLocalUnixMakefileGenerator3::CheckMultipleOutputs(bool verbose) } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteLocalAllRules(std::ostream& ruleFileStream) { @@ -1938,7 +1918,6 @@ void cmLocalUnixMakefileGenerator3 } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::ClearDependencies(cmMakefile* mf, bool verbose) { @@ -2083,10 +2062,12 @@ void cmLocalUnixMakefileGenerator3 this->ConfigName, l->first); if(!defines.empty()) { + /* clang-format off */ cmakefileStream << "\n" << "# Preprocessor definitions for this target.\n" << "set(CMAKE_TARGET_DEFINITIONS_" << l->first << "\n"; + /* clang-format on */ for(std::set<std::string>::const_iterator di = defines.begin(); di != defines.end(); ++di) { @@ -2159,7 +2140,6 @@ void cmLocalUnixMakefileGenerator3 } } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::WriteDisclaimer(std::ostream& os) { os @@ -2170,7 +2150,6 @@ void cmLocalUnixMakefileGenerator3::WriteDisclaimer(std::ostream& os) << cmVersion::GetMinorVersion() << "\n\n"; } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 ::GetRecursiveMakeCall(const char *makefile, const std::string& tgt) @@ -2221,7 +2200,6 @@ cmLocalUnixMakefileGenerator3 return cmd; } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::WriteDivider(std::ostream& os) { os @@ -2229,7 +2207,6 @@ void cmLocalUnixMakefileGenerator3::WriteDivider(std::ostream& os) << "=======================================\n"; } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::WriteCMakeArgument(std::ostream& os, const char* s) @@ -2255,7 +2232,6 @@ cmLocalUnixMakefileGenerator3 os << "\""; } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3::ConvertToQuotedOutputPath(const char* p, bool useWatcomQuote) @@ -2335,7 +2311,6 @@ cmLocalUnixMakefileGenerator3::ConvertToQuotedOutputPath(const char* p, return result; } -//---------------------------------------------------------------------------- std::string cmLocalUnixMakefileGenerator3 ::GetTargetDirectory(cmGeneratorTarget const* target) const @@ -2350,7 +2325,6 @@ cmLocalUnixMakefileGenerator3 return dir; } -//---------------------------------------------------------------------------- cmLocalUnixMakefileGenerator3::ImplicitDependLanguageMap const& cmLocalUnixMakefileGenerator3::GetImplicitDepends( const cmGeneratorTarget* tgt) @@ -2358,7 +2332,6 @@ cmLocalUnixMakefileGenerator3::GetImplicitDepends( return this->ImplicitDepends[tgt->GetName()]; } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3::AddImplicitDepends(const cmGeneratorTarget* tgt, const std::string& lang, @@ -2368,7 +2341,6 @@ cmLocalUnixMakefileGenerator3::AddImplicitDepends(const cmGeneratorTarget* tgt, this->ImplicitDepends[tgt->GetName()][lang][obj].push_back(src); } -//---------------------------------------------------------------------------- void cmLocalUnixMakefileGenerator3 ::CreateCDCommand(std::vector<std::string>& commands, const char *tgtDir, cmLocalGenerator::RelativeRoot relRetDir) diff --git a/Source/cmLocalVisualStudio10Generator.cxx b/Source/cmLocalVisualStudio10Generator.cxx index d0784ad..4025df4 100644 --- a/Source/cmLocalVisualStudio10Generator.cxx +++ b/Source/cmLocalVisualStudio10Generator.cxx @@ -10,11 +10,13 @@ See the License for more information. ============================================================================*/ #include "cmLocalVisualStudio10Generator.h" + +#include "cmGlobalVisualStudio10Generator.h" #include "cmMakefile.h" #include "cmVisualStudio10TargetGenerator.h" -#include "cmGlobalVisualStudio10Generator.h" -#include <cm_expat.h> #include "cmXMLParser.h" +#include <cm_expat.h> + class cmVS10XMLParser : public cmXMLParser { public: @@ -59,7 +61,6 @@ class cmVS10XMLParser : public cmXMLParser }; -//---------------------------------------------------------------------------- cmLocalVisualStudio10Generator ::cmLocalVisualStudio10Generator(cmGlobalGenerator* gg, cmMakefile* mf): cmLocalVisualStudio7Generator(gg, mf) @@ -121,7 +122,6 @@ void cmLocalVisualStudio10Generator cmState::INTERNAL); } -//---------------------------------------------------------------------------- const char* cmLocalVisualStudio10Generator::ReportErrorLabel() const { return ":VCEnd"; diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 2f66517..897fce1 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -9,16 +9,17 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include "cmGlobalVisualStudio7Generator.h" #include "cmLocalVisualStudio7Generator.h" -#include "cmXMLParser.h" -#include <cm_expat.h> + +#include "cmCustomCommandGenerator.h" +#include "cmGeneratorTarget.h" +#include "cmGlobalVisualStudio7Generator.h" #include "cmMakefile.h" -#include "cmSystemTools.h" #include "cmSourceFile.h" -#include "cmGeneratorTarget.h" -#include "cmCustomCommandGenerator.h" +#include "cmSystemTools.h" +#include "cmXMLParser.h" #include "cmake.h" +#include <cm_expat.h> #include "cmComputeLinkInformation.h" #include "cmGeneratedFileStream.h" @@ -52,7 +53,6 @@ static void cmConvertToWindowsSlash(std::string& s) } } -//---------------------------------------------------------------------------- cmLocalVisualStudio7Generator ::cmLocalVisualStudio7Generator(cmGlobalGenerator* gg, cmMakefile* mf): cmLocalVisualStudioGenerator(gg, mf) @@ -192,7 +192,6 @@ void cmLocalVisualStudio7Generator::WriteProjectFiles() } } -//---------------------------------------------------------------------------- void cmLocalVisualStudio7Generator::WriteStampFiles() { // Touch a timestamp file used to determine when the project file is @@ -223,7 +222,6 @@ void cmLocalVisualStudio7Generator::WriteStampFiles() } } -//---------------------------------------------------------------------------- void cmLocalVisualStudio7Generator ::CreateSingleVCProj(const std::string& lname, cmGeneratorTarget *target) { @@ -270,7 +268,6 @@ void cmLocalVisualStudio7Generator gg->SetVersion(realVersion); } -//---------------------------------------------------------------------------- cmSourceFile* cmLocalVisualStudio7Generator::CreateVCProjBuildRule() { std::string stampName = this->GetCurrentBinaryDirectory(); @@ -592,7 +589,6 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorFortranLinkFlagTable[] = {0,0,0,0,0} }; -//---------------------------------------------------------------------------- // Helper class to write build event <Tool .../> elements. class cmLocalVisualStudio7Generator::EventWriter { @@ -645,7 +641,6 @@ private: bool First; }; -//---------------------------------------------------------------------------- void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, const std::string& configName, const std::string& libName, @@ -793,16 +788,20 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, std::string const& outDir = target->GetType() == cmState::OBJECT_LIBRARY? intermediateDir : target->GetDirectory(configName); + /* clang-format off */ fout << "\t\t\tOutputDirectory=\"" << this->ConvertToXMLOutputPathSingle(outDir.c_str()) << "\"\n"; + /* clang-format on */ } + /* clang-format off */ fout << "\t\t\tIntermediateDirectory=\"" << this->ConvertToXMLOutputPath(intermediateDir.c_str()) << "\"\n" << "\t\t\tConfigurationType=\"" << configType << "\"\n" << "\t\t\tUseOfMFC=\"" << mfcFlag << "\"\n" << "\t\t\tATLMinimizesCRunTimeLibraryUsage=\"false\"\n"; + /* clang-format on */ if (this->FortranProject) { @@ -812,10 +811,12 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, cmSystemTools::GetFilenameWithoutLastExtension(targetNameFull); std::string targetExt = cmSystemTools::GetFilenameLastExtension(targetNameFull); + /* clang-format off */ fout << "\t\t\tTargetName=\"" << this->EscapeForXML(targetName) << "\"\n" "\t\t\tTargetExt=\"" << this->EscapeForXML(targetExt) << "\"\n" ; + /* clang-format on */ } // If unicode is enabled change the character set to unicode, if not @@ -897,11 +898,13 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, if(gg->IsMasmEnabled() && !this->FortranProject) { Options masmOptions(this, Options::MasmCompiler, 0, 0); + /* clang-format off */ fout << "\t\t\t<Tool\n" "\t\t\t\tName=\"MASM\"\n" "\t\t\t\tIncludePaths=\"" ; + /* clang-format on */ const char* sep = ""; for(i = includes.begin(); i != includes.end(); ++i) { @@ -915,9 +918,11 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, targetOptions.OutputPreprocessorDefinitions(fout, "\t\t\t\t", "\n", "ASM_MASM"); masmOptions.OutputFlagMap(fout, "\t\t\t\t"); + /* clang-format off */ fout << "\t\t\t\tObjectFile=\"$(IntDir)\\\"\n" "\t\t\t/>\n"; + /* clang-format on */ } tool = "VCCustomBuildTool"; if(this->FortranProject) @@ -984,9 +989,11 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, { manifestTool = "VFManifestTool"; } + /* clang-format off */ fout << "\t\t\t<Tool\n" "\t\t\t\tName=\"" << manifestTool << "\""; + /* clang-format on */ std::vector<cmSourceFile const*> manifest_srcs; target->GetManifests(manifest_srcs, configName); @@ -1021,7 +1028,6 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout, fout << "\t\t</Configuration>\n"; } -//---------------------------------------------------------------------------- std::string cmLocalVisualStudio7Generator ::GetBuildTypeLinkerFlags(std::string rootLinkerFlags, @@ -1387,6 +1393,7 @@ void cmLocalVisualStudio7Generator::OutputDeploymentDebuggerTool( { if (const char* dir = target->GetProperty("DEPLOYMENT_REMOTE_DIRECTORY")) { + /* clang-format off */ fout << "\t\t\t<DeploymentTool\n" "\t\t\t\tForceDirty=\"-1\"\n" @@ -1394,19 +1401,21 @@ void cmLocalVisualStudio7Generator::OutputDeploymentDebuggerTool( "\t\t\t\tRegisterOutput=\"0\"\n" "\t\t\t\tAdditionalFiles=\"\"/>\n" ; + /* clang-format on */ std::string const exe = dir + std::string("\\") + target->GetFullName(config); + /* clang-format off */ fout << "\t\t\t<DebuggerTool\n" "\t\t\t\tRemoteExecutable=\"" << this->EscapeForXML(exe) << "\"\n" "\t\t\t\tArguments=\"\"\n" "\t\t\t/>\n" ; + /* clang-format on */ } } } -//---------------------------------------------------------------------------- void cmLocalVisualStudio7Generator ::WriteTargetVersionAttribute(std::ostream& fout, cmGeneratorTarget* gt) @@ -1417,7 +1426,6 @@ cmLocalVisualStudio7Generator fout << "\t\t\t\tVersion=\"" << major << "." << minor << "\"\n"; } -//---------------------------------------------------------------------------- void cmLocalVisualStudio7GeneratorInternals ::OutputLibraries(std::ostream& fout, ItemVector const& libs) @@ -1440,7 +1448,6 @@ cmLocalVisualStudio7GeneratorInternals } } -//---------------------------------------------------------------------------- void cmLocalVisualStudio7GeneratorInternals ::OutputObjects(std::ostream& fout, cmGeneratorTarget* gt, const char* isep) @@ -1462,7 +1469,6 @@ cmLocalVisualStudio7GeneratorInternals } } -//---------------------------------------------------------------------------- void cmLocalVisualStudio7Generator ::OutputLibraryDirectories(std::ostream& fout, @@ -1718,7 +1724,6 @@ cmLocalVisualStudio7GeneratorFCInfo } } -//---------------------------------------------------------------------------- std::string cmLocalVisualStudio7Generator ::ComputeLongestObjectDirectory(cmGeneratorTarget const* target) const @@ -1960,6 +1965,7 @@ WriteCustomRule(std::ostream& fout, { cmSystemTools::ReplaceString(script, "$(Configuration)", i->c_str()); } + /* clang-format off */ fout << "\t\t\t\t\t<Tool\n" << "\t\t\t\t\tName=\"" << customTool << "\"\n" << "\t\t\t\t\tDescription=\"" @@ -1967,6 +1973,7 @@ WriteCustomRule(std::ostream& fout, << "\t\t\t\t\tCommandLine=\"" << this->EscapeForXML(script.c_str()) << "\"\n" << "\t\t\t\t\tAdditionalDependencies=\""; + /* clang-format on */ if(ccg.GetDepends().empty()) { // There are no real dependencies. Produce an artificial one to @@ -2024,9 +2031,11 @@ void cmLocalVisualStudio7Generator::WriteVCProjBeginGroup(std::ostream& fout, const char* group, const char* ) { + /* clang-format off */ fout << "\t\t<Filter\n" << "\t\t\tName=\"" << group << "\"\n" << "\t\t\tFilter=\"\">\n"; + /* clang-format on */ } @@ -2106,9 +2115,11 @@ void cmLocalVisualStudio7Generator::WriteProjectSCC(std::ostream& fout, if(vsProvider && vsLocalpath && vsProjectname) { + /* clang-format off */ fout << "\tSccProjectName=\"" << vsProjectname << "\"\n" << "\tSccLocalPath=\"" << vsLocalpath << "\"\n" << "\tSccProvider=\"" << vsProvider << "\"\n"; + /* clang-format on */ const char* vsAuxPath = target->GetProperty("VS_SCC_AUXPATH"); if(vsAuxPath) @@ -2127,11 +2138,13 @@ cmLocalVisualStudio7Generator cmGlobalVisualStudio7Generator* gg = static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding = \"" << gg->Encoding() << "\"?>\n" << "<VisualStudioProject\n" << "\tProjectCreator=\"Intel Fortran\"\n" << "\tVersion=\"" << gg->GetIntelProjectVersion() << "\"\n"; + /* clang-format on */ const char* keyword = target->GetProperty("VS_KEYWORD"); if(!keyword) { @@ -2172,11 +2185,13 @@ cmLocalVisualStudio7Generator fout << "\tProjectType=\"" << projectType << "\"\n"; } this->WriteProjectSCC(fout, target); + /* clang-format off */ fout<< "\tKeyword=\"" << keyword << "\">\n" << "\tProjectGUID=\"{" << gg->GetGUID(libName.c_str()) << "}\">\n" << "\t<Platforms>\n" << "\t\t<Platform\n\t\t\tName=\"" << gg->GetPlatformName() << "\"/>\n" << "\t</Platforms>\n"; + /* clang-format on */ } @@ -2195,10 +2210,12 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout, cmGlobalVisualStudio7Generator* gg = static_cast<cmGlobalVisualStudio7Generator *>(this->GlobalGenerator); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding = \"" << gg->Encoding() << "\"?>\n" << "<VisualStudioProject\n" << "\tProjectType=\"Visual C++\"\n"; + /* clang-format on */ if(gg->GetVersion() == cmGlobalVisualStudioGenerator::VS71) { fout << "\tVersion=\"7.10\"\n"; @@ -2228,12 +2245,15 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout, { fout << "\tTargetFrameworkVersion=\"" << targetFrameworkVersion << "\"\n"; } + /* clang-format off */ fout << "\tKeyword=\"" << keyword << "\">\n" << "\t<Platforms>\n" << "\t\t<Platform\n\t\t\tName=\"" << gg->GetPlatformName() << "\"/>\n" << "\t</Platforms>\n"; + /* clang-format on */ if(gg->IsMasmEnabled()) { + /* clang-format off */ fout << "\t<ToolFiles>\n" "\t\t<DefaultToolFile\n" @@ -2241,6 +2261,7 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout, "\t\t/>\n" "\t</ToolFiles>\n" ; + /* clang-format on */ } } @@ -2260,10 +2281,12 @@ void cmLocalVisualStudio7Generator::WriteVCProjFooter( std::string name = i->substr(10); if(name != "") { + /* clang-format off */ fout << "\t\t<Global\n" << "\t\t\tName=\"" << name << "\"\n" << "\t\t\tValue=\"" << target->GetProperty(*i) << "\"\n" << "\t\t/>\n"; + /* clang-format on */ } } } @@ -2385,7 +2408,6 @@ void cmLocalVisualStudio7Generator::ReadAndStoreExternalGUID( } -//---------------------------------------------------------------------------- std::string cmLocalVisualStudio7Generator ::GetTargetDirectory(cmGeneratorTarget const* target) const { @@ -2395,7 +2417,6 @@ std::string cmLocalVisualStudio7Generator return dir; } -//---------------------------------------------------------------------------- #include <windows.h> static bool cmLVS7G_IsFAT(const char* dir) { diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 562f485..5d9a634 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -13,6 +13,7 @@ #define cmLocalVisualStudio7Generator_h #include "cmLocalVisualStudioGenerator.h" + #include "cmVisualStudioGeneratorOptions.h" class cmSourceFile; diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index 561f9a1..b12ea49 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -10,26 +10,24 @@ See the License for more information. ============================================================================*/ #include "cmLocalVisualStudioGenerator.h" + +#include "cmCustomCommandGenerator.h" #include "cmGlobalGenerator.h" #include "cmMakefile.h" #include "cmSourceFile.h" #include "cmSystemTools.h" -#include "cmCustomCommandGenerator.h" #include "windows.h" -//---------------------------------------------------------------------------- cmLocalVisualStudioGenerator ::cmLocalVisualStudioGenerator(cmGlobalGenerator* gg, cmMakefile* mf) : cmLocalGenerator(gg, mf) { } -//---------------------------------------------------------------------------- cmLocalVisualStudioGenerator::~cmLocalVisualStudioGenerator() { } -//---------------------------------------------------------------------------- cmGlobalVisualStudioGenerator::VSVersion cmLocalVisualStudioGenerator::GetVersion() const { @@ -38,7 +36,6 @@ cmLocalVisualStudioGenerator::GetVersion() const return gg->GetVersion(); } -//---------------------------------------------------------------------------- void cmLocalVisualStudioGenerator::ComputeObjectFilenames( std::map<cmSourceFile const*, std::string>& mapping, cmGeneratorTarget const* gt) @@ -78,7 +75,6 @@ void cmLocalVisualStudioGenerator::ComputeObjectFilenames( } } -//---------------------------------------------------------------------------- cmsys::auto_ptr<cmCustomCommand> cmLocalVisualStudioGenerator::MaybeCreateImplibDir(cmGeneratorTarget* target, const std::string& config, @@ -114,19 +110,16 @@ cmLocalVisualStudioGenerator::MaybeCreateImplibDir(cmGeneratorTarget* target, return pcc; } -//---------------------------------------------------------------------------- const char* cmLocalVisualStudioGenerator::ReportErrorLabel() const { return ":VCReportError"; } -//---------------------------------------------------------------------------- const char* cmLocalVisualStudioGenerator::GetReportErrorLabel() const { return this->ReportErrorLabel(); } -//---------------------------------------------------------------------------- std::string cmLocalVisualStudioGenerator ::ConstructScript(cmCustomCommandGenerator const& ccg, diff --git a/Source/cmLocalVisualStudioGenerator.h b/Source/cmLocalVisualStudioGenerator.h index f95eefa..caffff7 100644 --- a/Source/cmLocalVisualStudioGenerator.h +++ b/Source/cmLocalVisualStudioGenerator.h @@ -13,6 +13,7 @@ #define cmLocalVisualStudioGenerator_h #include "cmLocalGenerator.h" + #include "cmGlobalVisualStudioGenerator.h" #include <cmsys/auto_ptr.hxx> diff --git a/Source/cmLocalXCodeGenerator.cxx b/Source/cmLocalXCodeGenerator.cxx index aec2603..18eccdd 100644 --- a/Source/cmLocalXCodeGenerator.cxx +++ b/Source/cmLocalXCodeGenerator.cxx @@ -10,11 +10,11 @@ See the License for more information. ============================================================================*/ #include "cmLocalXCodeGenerator.h" + #include "cmGlobalXCodeGenerator.h" -#include "cmSourceFile.h" #include "cmMakefile.h" +#include "cmSourceFile.h" -//---------------------------------------------------------------------------- cmLocalXCodeGenerator::cmLocalXCodeGenerator(cmGlobalGenerator* gg, cmMakefile* mf) : cmLocalGenerator(gg, mf) @@ -24,12 +24,10 @@ cmLocalXCodeGenerator::cmLocalXCodeGenerator(cmGlobalGenerator* gg, this->EmitUniversalBinaryFlags = false; } -//---------------------------------------------------------------------------- cmLocalXCodeGenerator::~cmLocalXCodeGenerator() { } -//---------------------------------------------------------------------------- std::string cmLocalXCodeGenerator::GetTargetDirectory(cmGeneratorTarget const*) const { @@ -37,7 +35,6 @@ cmLocalXCodeGenerator::GetTargetDirectory(cmGeneratorTarget const*) const return ""; } -//---------------------------------------------------------------------------- void cmLocalXCodeGenerator::AppendFlagEscape(std::string& flags, const std::string& rawFlag) { @@ -46,7 +43,6 @@ void cmLocalXCodeGenerator::AppendFlagEscape(std::string& flags, gg->AppendFlag(flags, rawFlag); } -//---------------------------------------------------------------------------- void cmLocalXCodeGenerator::Generate() { cmLocalGenerator::Generate(); @@ -59,7 +55,6 @@ void cmLocalXCodeGenerator::Generate() } } -//---------------------------------------------------------------------------- void cmLocalXCodeGenerator::GenerateInstallRules() { cmLocalGenerator::GenerateInstallRules(); @@ -72,7 +67,6 @@ void cmLocalXCodeGenerator::GenerateInstallRules() } } -//---------------------------------------------------------------------------- void cmLocalXCodeGenerator::ComputeObjectFilenames( std::map<cmSourceFile const*, std::string>& mapping, cmGeneratorTarget const*) diff --git a/Source/cmLocale.h b/Source/cmLocale.h index 727f0f5..69640f6 100644 --- a/Source/cmLocale.h +++ b/Source/cmLocale.h @@ -12,6 +12,8 @@ #ifndef cmLocale_h #define cmLocale_h +#include "cmStandardIncludes.h" + #include <locale.h> class cmLocaleRAII diff --git a/Source/cmMachO.cxx b/Source/cmMachO.cxx index 1607845..147979d 100644 --- a/Source/cmMachO.cxx +++ b/Source/cmMachO.cxx @@ -10,13 +10,14 @@ See the License for more information. ============================================================================*/ #include "cmStandardIncludes.h" // to get CMAKE_USE_MACH_PARSER first + #include "cmMachO.h" #include <cmsys/FStream.hxx> // Include the Mach-O format information system header. -#include <mach-o/loader.h> #include <mach-o/fat.h> +#include <mach-o/loader.h> /** @@ -205,7 +206,6 @@ bool cmMachOHeaderAndLoadCommands::read_load_commands(uint32_t ncmds, return true; } -//---------------------------------------------------------------------------- class cmMachOInternal { public: @@ -360,14 +360,12 @@ bool cmMachOInternal::read_mach_o(uint32_t file_offset) //============================================================================ // External class implementation. -//---------------------------------------------------------------------------- cmMachO::cmMachO(const char* fname): Internal(0) { this->Internal = new cmMachOInternal(fname); } -//---------------------------------------------------------------------------- cmMachO::~cmMachO() { delete this->Internal; @@ -378,7 +376,6 @@ std::string const& cmMachO::GetErrorMessage() const return this->Internal->ErrorMessage; } -//---------------------------------------------------------------------------- bool cmMachO::Valid() const { return !this->Internal->MachOList.empty(); diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx index 71de7a7..36831fe 100644 --- a/Source/cmMacroCommand.cxx +++ b/Source/cmMacroCommand.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmMacroCommand.h" -#include "cmake.h" #include "cmAlgorithms.h" +#include "cmake.h" // define the class for macro commands class cmMacroHelperCommand : public cmCommand diff --git a/Source/cmMacroCommand.h b/Source/cmMacroCommand.h index 5c1cc00..6f1ae9e 100644 --- a/Source/cmMacroCommand.h +++ b/Source/cmMacroCommand.h @@ -13,6 +13,7 @@ #define cmMacroCommand_h #include "cmCommand.h" + #include "cmFunctionBlocker.h" class cmMacroFunctionBlocker : public cmFunctionBlocker diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index aa6f7c8..251d748 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -10,43 +10,45 @@ See the License for more information. ============================================================================*/ #include "cmMakefile.h" -#include "cmVersion.h" + #include "cmCommand.h" -#include "cmSourceFile.h" -#include "cmSourceFileLocation.h" -#include "cmSystemTools.h" -#include "cmGlobalGenerator.h" +#include "cmCommandArgumentParserHelper.h" #include "cmCommands.h" -#include "cmState.h" -#include "cmOutputConverter.h" #include "cmFunctionBlocker.h" +#include "cmGeneratorExpression.h" #include "cmGeneratorExpressionEvaluationFile.h" +#include "cmGlobalGenerator.h" #include "cmListFileCache.h" -#include "cmCommandArgumentParserHelper.h" -#include "cmGeneratorExpression.h" +#include "cmOutputConverter.h" +#include "cmSourceFile.h" +#include "cmSourceFileLocation.h" +#include "cmState.h" +#include "cmSystemTools.h" #include "cmTest.h" +#include "cmVersion.h" #ifdef CMAKE_BUILD_WITH_CMAKE # include "cmVariableWatch.h" #endif +#include "cmAlgorithms.h" #include "cmInstallGenerator.h" #include "cmTestGenerator.h" -#include "cmAlgorithms.h" #include "cmake.h" #include <stdlib.h> // required for atoi -#include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/RegularExpression.hxx> #include <cmsys/auto_ptr.hxx> -#include <list> -#include <ctype.h> // for isspace #include <assert.h> +#include <ctype.h> // for isspace +#include <list> // default is not to be building executables cmMakefile::cmMakefile(cmGlobalGenerator* globalGenerator, cmState::Snapshot const& snapshot) : GlobalGenerator(globalGenerator), - StateSnapshot(snapshot) + StateSnapshot(snapshot), + Backtrace(snapshot) { this->IsSourceFileTryCompile = false; @@ -103,7 +105,6 @@ cmMakefile::~cmMakefile() cmDeleteAll(this->EvaluationFiles); } -//---------------------------------------------------------------------------- void cmMakefile::IssueMessage(cmake::MessageType t, std::string const& text, bool force) const @@ -115,24 +116,8 @@ void cmMakefile::IssueMessage(cmake::MessageType t, { this->ExecutionStatusStack.back()->SetNestedError(true); } - this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace(), - force); - } - else - { - cmListFileContext lfc; - // We are not currently executing a command. Add whatever context - // information we have. - lfc.FilePath = this->GetExecutionFilePath(); - - if(!this->GetCMakeInstance()->GetIsInTryCompile()) - { - cmOutputConverter converter(this->StateSnapshot); - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); - } - lfc.Line = 0; - this->GetCMakeInstance()->IssueMessage(t, text, lfc, force); } + this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace(), force); } cmStringRange cmMakefile::GetIncludeDirectoriesEntries() const @@ -167,35 +152,30 @@ cmBacktraceRange cmMakefile::GetCompileDefinitionsBacktraces() const .GetCompileDefinitionsEntryBacktraces(); } -//---------------------------------------------------------------------------- cmListFileBacktrace cmMakefile::GetBacktrace() const { - cmListFileBacktrace backtrace; - if (!this->ContextStack.empty()) - { - backtrace = cmListFileBacktrace(this->StateSnapshot, - *this->ContextStack.back()); - } - return backtrace; + return this->Backtrace; } -//---------------------------------------------------------------------------- -cmListFileBacktrace -cmMakefile::GetBacktrace(cmCommandContext const& cc) const +cmListFileBacktrace cmMakefile::GetBacktrace(cmCommandContext const& cc) const { - cmState::Snapshot snp = this->StateSnapshot; - return cmListFileBacktrace(snp, cc); + cmListFileContext lfc; + lfc.Name = cc.Name; + lfc.Line = cc.Line; + lfc.FilePath = this->StateSnapshot.GetExecutionListFile(); + return this->Backtrace.Push(lfc); } -//---------------------------------------------------------------------------- cmListFileContext cmMakefile::GetExecutionContext() const { - return cmListFileContext::FromCommandContext( - *this->ContextStack.back(), - this->StateSnapshot.GetExecutionListFile()); + cmListFileContext const& cur = this->Backtrace.Top(); + cmListFileContext lfc; + lfc.Name = cur.Name; + lfc.Line = cur.Line; + lfc.FilePath = this->StateSnapshot.GetExecutionListFile(); + return lfc; } -//---------------------------------------------------------------------------- void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const { std::ostringstream msg; @@ -222,7 +202,29 @@ void cmMakefile::PrintCommandTrace(const cmListFileFunction& lff) const cmSystemTools::Message(msg.str().c_str()); } -//---------------------------------------------------------------------------- +// Helper class to make sure the call stack is valid. +class cmMakefileCall +{ +public: + cmMakefileCall(cmMakefile* mf, cmCommandContext const& cc, + cmExecutionStatus& status): Makefile(mf) + { + cmListFileContext const& lfc = + cmListFileContext::FromCommandContext( + cc, this->Makefile->StateSnapshot.GetExecutionListFile()); + this->Makefile->Backtrace = this->Makefile->Backtrace.Push(lfc); + this->Makefile->ExecutionStatusStack.push_back(&status); + } + + ~cmMakefileCall() + { + this->Makefile->ExecutionStatusStack.pop_back(); + this->Makefile->Backtrace = this->Makefile->Backtrace.Pop(); + } +private: + cmMakefile* Makefile; +}; + bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, cmExecutionStatus &status) { @@ -307,7 +309,6 @@ bool cmMakefile::ExecuteCommand(const cmListFileFunction& lff, return result; } -//---------------------------------------------------------------------------- class cmMakefile::IncludeScope { public: @@ -323,20 +324,20 @@ private: void EnforceCMP0011(); }; -//---------------------------------------------------------------------------- cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, std::string const& filenametoread, bool noPolicyScope): Makefile(mf), NoPolicyScope(noPolicyScope), CheckCMP0011(false), ReportError(true) { + this->Makefile->Backtrace = + this->Makefile->Backtrace.Push(filenametoread); + this->Makefile->PushFunctionBlockerBarrier(); this->Makefile->StateSnapshot = - this->Makefile->GetState()->CreateCallStackSnapshot( + this->Makefile->GetState()->CreateIncludeFileSnapshot( this->Makefile->StateSnapshot, - this->Makefile->ContextStack.back()->Name, - this->Makefile->ContextStack.back()->Line, filenametoread); if(!this->NoPolicyScope) { @@ -368,7 +369,6 @@ cmMakefile::IncludeScope::IncludeScope(cmMakefile* mf, } } -//---------------------------------------------------------------------------- cmMakefile::IncludeScope::~IncludeScope() { if(!this->NoPolicyScope) @@ -396,9 +396,10 @@ cmMakefile::IncludeScope::~IncludeScope() this->Makefile->PopSnapshot(this->ReportError); this->Makefile->PopFunctionBlockerBarrier(this->ReportError); + + this->Makefile->Backtrace = this->Makefile->Backtrace.Pop(); } -//---------------------------------------------------------------------------- void cmMakefile::IncludeScope::EnforceCMP0011() { // We check the setting of this policy again because the included @@ -422,10 +423,12 @@ void cmMakefile::IncludeScope::EnforceCMP0011() case cmPolicies::REQUIRED_ALWAYS: { std::ostringstream e; + /* clang-format off */ e << cmPolicies::GetRequiredPolicyError(cmPolicies::CMP0011) << "\n" << "The included script\n " << this->Makefile->GetExecutionFilePath() << "\n" << "affects policy settings, so it requires this policy to be set."; + /* clang-format on */ this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } break; @@ -438,25 +441,6 @@ void cmMakefile::IncludeScope::EnforceCMP0011() } } -class cmParseFileScope -{ -public: - cmParseFileScope(cmMakefile* mf) - : Makefile(mf) - { - this->Makefile->ContextStack.push_back(&this->Context); - } - - ~cmParseFileScope() - { - this->Makefile->ContextStack.pop_back(); - } - -private: - cmMakefile* Makefile; - cmCommandContext Context; -}; - bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) { this->AddDefinition("CMAKE_PARENT_LIST_FILE", @@ -468,13 +452,10 @@ bool cmMakefile::ReadDependentFile(const char* filename, bool noPolicyScope) IncludeScope incScope(this, filenametoread, noPolicyScope); cmListFile listFile; - { - cmParseFileScope pfs(this); if (!listFile.ParseFile(filenametoread.c_str(), false, this)) { return false; } - } this->ReadListFile(listFile, filenametoread); if(cmSystemTools::GetFatalErrorOccured()) @@ -490,16 +471,12 @@ public: ListFileScope(cmMakefile* mf, std::string const& filenametoread) : Makefile(mf), ReportError(true) { - long line = 0; - std::string name; - if (!this->Makefile->ContextStack.empty()) - { - line = this->Makefile->ContextStack.back()->Line; - name = this->Makefile->ContextStack.back()->Name; - } + this->Makefile->Backtrace = + this->Makefile->Backtrace.Push(filenametoread); + this->Makefile->StateSnapshot = this->Makefile->GetState()->CreateInlineListFileSnapshot( - this->Makefile->StateSnapshot, name, line, filenametoread); + this->Makefile->StateSnapshot, filenametoread); assert(this->Makefile->StateSnapshot.IsValid()); this->Makefile->PushFunctionBlockerBarrier(); @@ -509,6 +486,7 @@ public: { this->Makefile->PopSnapshot(this->ReportError); this->Makefile->PopFunctionBlockerBarrier(this->ReportError); + this->Makefile->Backtrace = this->Makefile->Backtrace.Pop(); } void Quiet() { this->ReportError = false; } @@ -526,13 +504,10 @@ bool cmMakefile::ReadListFile(const char* filename) ListFileScope scope(this, filenametoread); cmListFile listFile; - { - cmParseFileScope pfs(this); if (!listFile.ParseFile(filenametoread.c_str(), false, this)) { return false; } - } this->ReadListFile(listFile, filenametoread); if(cmSystemTools::GetFatalErrorOccured()) @@ -588,7 +563,6 @@ void cmMakefile::ReadListFile(cmListFile const& listFile, this->MarkVariableAsUsed("CMAKE_CURRENT_LIST_DIR"); } -//---------------------------------------------------------------------------- void cmMakefile::EnforceDirectoryLevelRules() const { // Diagnose a violation of CMP0000 if necessary. @@ -735,7 +709,6 @@ void cmMakefile::ConfigureFinalPass() } } -//---------------------------------------------------------------------------- void cmMakefile::AddCustomCommandToTarget(const std::string& target, const std::vector<std::string>& byproducts, @@ -843,7 +816,6 @@ cmMakefile::AddCustomCommandToTarget(const std::string& target, } } -//---------------------------------------------------------------------------- cmSourceFile* cmMakefile::AddCustomCommandToOutput(const std::vector<std::string>& outputs, const std::vector<std::string>& byproducts, @@ -976,7 +948,6 @@ cmMakefile::AddCustomCommandToOutput(const std::vector<std::string>& outputs, return file; } -//---------------------------------------------------------------------------- void cmMakefile::UpdateOutputToSourceMap(std::vector<std::string> const& outputs, cmSourceFile* source) @@ -988,7 +959,6 @@ cmMakefile::UpdateOutputToSourceMap(std::vector<std::string> const& outputs, } } -//---------------------------------------------------------------------------- void cmMakefile::UpdateOutputToSourceMap(std::string const& output, cmSourceFile* source) @@ -1009,7 +979,6 @@ cmMakefile::UpdateOutputToSourceMap(std::string const& output, this->OutputToSource[output] = source; } -//---------------------------------------------------------------------------- cmSourceFile* cmMakefile::AddCustomCommandToOutput(const std::string& output, const std::vector<std::string>& depends, @@ -1031,7 +1000,6 @@ cmMakefile::AddCustomCommandToOutput(const std::string& output, uses_terminal); } -//---------------------------------------------------------------------------- void cmMakefile::AddCustomCommandOldStyle(const std::string& target, const std::vector<std::string>& outputs, @@ -1102,7 +1070,6 @@ cmMakefile::AddCustomCommandOldStyle(const std::string& target, } } -//---------------------------------------------------------------------------- cmTarget* cmMakefile::AddUtilityCommand(const std::string& utilityName, bool excludeFromAll, @@ -1141,7 +1108,6 @@ cmMakefile::AddUtilityCommand(const std::string& utilityName, depends, commandLines); } -//---------------------------------------------------------------------------- cmTarget* cmMakefile::AddUtilityCommand(const std::string& utilityName, bool excludeFromAll, @@ -1157,7 +1123,6 @@ cmMakefile::AddUtilityCommand(const std::string& utilityName, escapeOldStyle, comment, uses_terminal); } -//---------------------------------------------------------------------------- cmTarget* cmMakefile::AddUtilityCommand(const std::string& utilityName, bool excludeFromAll, @@ -1505,9 +1470,7 @@ void cmMakefile::PushFunctionScope(std::string const& fileName, { this->StateSnapshot = this->GetState()->CreateFunctionCallSnapshot( - this->StateSnapshot, - this->ContextStack.back()->Name, this->ContextStack.back()->Line, - fileName); + this->StateSnapshot, fileName); assert(this->StateSnapshot.IsValid()); this->PushLoopBlockBarrier(); @@ -1543,9 +1506,7 @@ void cmMakefile::PushMacroScope(std::string const& fileName, { this->StateSnapshot = this->GetState()->CreateMacroCallSnapshot( - this->StateSnapshot, - this->ContextStack.back()->Name, this->ContextStack.back()->Line, - fileName); + this->StateSnapshot, fileName); assert(this->StateSnapshot.IsValid()); this->PushFunctionBlockerBarrier(); @@ -1610,9 +1571,17 @@ private: bool ReportError; }; -//---------------------------------------------------------------------------- void cmMakefile::Configure() { + std::string currentStart = + this->StateSnapshot.GetDirectory().GetCurrentSource(); + currentStart += "/CMakeLists.txt"; + + // Add the bottom of all backtraces within this directory. + // We will never pop this scope because it should be available + // for messages during the generate step too. + this->Backtrace = this->Backtrace.Push(currentStart); + BuildsystemFileScope scope(this); // make sure the CMakeFiles dir is there @@ -1620,20 +1589,14 @@ void cmMakefile::Configure() filesDir += cmake::GetCMakeFilesDirectory(); cmSystemTools::MakeDirectory(filesDir.c_str()); - std::string currentStart = - this->StateSnapshot.GetDirectory().GetCurrentSource(); - currentStart += "/CMakeLists.txt"; assert(cmSystemTools::FileExists(currentStart.c_str(), true)); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentStart.c_str()); cmListFile listFile; - { - cmParseFileScope pfs(this); if (!listFile.ParseFile(currentStart.c_str(), this->IsRootMakefile(), this)) { return; } - } this->ReadListFile(listFile, currentStart); if(cmSystemTools::GetFatalErrorOccured()) { @@ -1670,19 +1633,23 @@ void cmMakefile::ConfigureSubDirectory(cmMakefile *mf) { // The file is missing. Check policy CMP0014. std::ostringstream e; + /* clang-format off */ e << "The source directory\n" << " " << currentStart << "\n" << "does not contain a CMakeLists.txt file."; + /* clang-format on */ switch (this->GetPolicyStatus(cmPolicies::CMP0014)) { case cmPolicies::WARN: // Print the warning. + /* clang-format off */ e << "\n" << "CMake does not support this case but it used " << "to work accidentally and is being allowed for " << "compatibility." << "\n" << cmPolicies::GetPolicyWarning(cmPolicies::CMP0014); + /* clang-format on */ this->IssueMessage(cmake::AUTHOR_WARNING, e.str()); case cmPolicies::OLD: // OLD behavior does not warn. @@ -1720,9 +1687,7 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, } cmState::Snapshot newSnapshot = this->GetState() - ->CreateBuildsystemDirectorySnapshot(this->StateSnapshot, - this->ContextStack.back()->Name, - this->ContextStack.back()->Line); + ->CreateBuildsystemDirectorySnapshot(this->StateSnapshot); newSnapshot.GetDirectory().SetCurrentSource(srcPath); newSnapshot.GetDirectory().SetCurrentBinary(binPath); @@ -1769,7 +1734,6 @@ std::vector<cmTarget*> cmMakefile::GetImportedTargets() const return tgts; } -//---------------------------------------------------------------------------- void cmMakefile::AddIncludeDirectories(const std::vector<std::string> &incs, bool before) { @@ -1800,7 +1764,6 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string> &incs, } } -//---------------------------------------------------------------------------- void cmMakefile::AddSystemIncludeDirectories(const std::set<std::string> &incs) { @@ -1845,10 +1808,11 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value, cmState::CacheEntryType type, bool force) { - bool haveVal = value ? true : false; - std::string val = haveVal ? value : ""; const char* existingValue = this->GetState()->GetInitializedCacheValue(name); + // must be outside the following if() to keep it alive long enough + std::string nvalue; + if(existingValue && (this->GetState()->GetCacheEntryType(name) == cmState::UNINITIALIZED)) @@ -1857,15 +1821,16 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value, // if it is a force, then use the value being passed in if(!force) { - val = existingValue; - haveVal = true; + value = existingValue; } if ( type == cmState::PATH || type == cmState::FILEPATH ) { std::vector<std::string>::size_type cc; std::vector<std::string> files; - std::string nvalue = ""; - cmSystemTools::ExpandListArgument(val, files); + nvalue = value ? value : ""; + + cmSystemTools::ExpandListArgument(nvalue, files); + nvalue = ""; for ( cc = 0; cc < files.size(); cc ++ ) { if(!cmSystemTools::IsOff(files[cc].c_str())) @@ -1880,13 +1845,12 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value, } this->GetCMakeInstance()->AddCacheEntry(name, nvalue.c_str(), doc, type); - val = this->GetState()->GetInitializedCacheValue(name); - haveVal = true; + nvalue = this->GetState()->GetInitializedCacheValue(name); + value = nvalue.c_str(); } } - this->GetCMakeInstance()->AddCacheEntry(name, haveVal ? val.c_str() : 0, - doc, type); + this->GetCMakeInstance()->AddCacheEntry(name, value, doc, type); // if there was a definition then remove it this->StateSnapshot.RemoveDefinition(name); } @@ -1941,21 +1905,15 @@ void cmMakefile::LogUnused(const char* reason, if (this->WarnUnused) { std::string path; - cmListFileContext lfc; if (!this->ExecutionStatusStack.empty()) { - lfc = this->GetExecutionContext(); - path = lfc.FilePath; + path = this->GetExecutionContext().FilePath; } else { path = this->GetCurrentSourceDirectory(); path += "/CMakeLists.txt"; - lfc.FilePath = path; - lfc.Line = 0; } - cmOutputConverter converter(this->StateSnapshot); - lfc.FilePath = converter.Convert(lfc.FilePath, cmOutputConverter::HOME); if (this->CheckSystemVars || cmSystemTools::IsSubDirectory(path, @@ -1967,9 +1925,7 @@ void cmMakefile::LogUnused(const char* reason, { std::ostringstream msg; msg << "unused variable (" << reason << ") \'" << name << "\'"; - this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, - msg.str(), - lfc); + this->IssueMessage(cmake::AUTHOR_WARNING, msg.str()); } } } @@ -2091,7 +2047,6 @@ cmTarget* cmMakefile::AddExecutable(const char *exeName, return target; } -//---------------------------------------------------------------------------- cmTarget* cmMakefile::AddNewTarget(cmState::TargetType type, const std::string& name) { @@ -2276,10 +2231,12 @@ void cmMakefile::ExpandVariablesCMP0019() this->ExpandVariablesInString(dirs, true, true); if(pol == cmPolicies::WARN && dirs != includeDirs) { + /* clang-format off */ w << "Evaluated directory INCLUDE_DIRECTORIES\n" << " " << includeDirs << "\n" << "as\n" << " " << dirs << "\n"; + /* clang-format on */ } this->SetProperty("INCLUDE_DIRECTORIES", dirs.c_str()); } @@ -2301,10 +2258,12 @@ void cmMakefile::ExpandVariablesCMP0019() this->ExpandVariablesInString(dirs, true, true); if(pol == cmPolicies::WARN && dirs != includeDirs) { + /* clang-format off */ w << "Evaluated target " << t.GetName() << " INCLUDE_DIRECTORIES\n" << " " << includeDirs << "\n" << "as\n" << " " << dirs << "\n"; + /* clang-format on */ } t.SetProperty("INCLUDE_DIRECTORIES", dirs.c_str()); } @@ -2319,10 +2278,12 @@ void cmMakefile::ExpandVariablesCMP0019() this->ExpandVariablesInString(d, true, true); if(pol == cmPolicies::WARN && d != orig) { + /* clang-format off */ w << "Evaluated link directories\n" << " " << orig << "\n" << "as\n" << " " << d << "\n"; + /* clang-format on */ } } } @@ -2336,10 +2297,12 @@ void cmMakefile::ExpandVariablesCMP0019() this->ExpandVariablesInString(l->first, true, true); if(pol == cmPolicies::WARN && l->first != orig) { + /* clang-format off */ w << "Evaluated link library\n" << " " << orig << "\n" << "as\n" << " " << l->first << "\n"; + /* clang-format on */ } } } @@ -2347,10 +2310,12 @@ void cmMakefile::ExpandVariablesCMP0019() if(!w.str().empty()) { std::ostringstream m; + /* clang-format off */ m << cmPolicies::GetPolicyWarning(cmPolicies::CMP0019) << "\n" << "The following variable evaluations were encountered:\n" << w.str(); + /* clang-format on */ this->IssueMessage(cmake::AUTHOR_WARNING, m.str()); } } @@ -2899,14 +2864,8 @@ cmake::MessageType cmMakefile::ExpandVariablesInStringNew( this->GetHomeOutputDirectory())) { std::ostringstream msg; - cmListFileContext lfc; - cmOutputConverter converter(this->StateSnapshot); - lfc.FilePath = - converter.Convert(filename, cmOutputConverter::HOME); - lfc.Line = line; msg << "uninitialized variable \'" << lookup << "\'"; - this->GetCMakeInstance()->IssueMessage(cmake::AUTHOR_WARNING, - msg.str(), lfc); + this->IssueMessage(cmake::AUTHOR_WARNING, msg.str()); } } } @@ -3146,7 +3105,6 @@ void cmMakefile::RemoveVariablesInString(std::string& source, } } -//---------------------------------------------------------------------------- std::string cmMakefile::GetConfigurations(std::vector<std::string>& configs, bool singleConfig) const @@ -3235,13 +3193,11 @@ bool cmMakefile::IsFunctionBlocked(const cmListFileFunction& lff, return false; } -//---------------------------------------------------------------------------- void cmMakefile::PushFunctionBlockerBarrier() { this->FunctionBlockerBarriers.push_back(this->FunctionBlockers.size()); } -//---------------------------------------------------------------------------- void cmMakefile::PopFunctionBlockerBarrier(bool reportError) { // Remove any extra entries pushed on the barrier. @@ -3256,9 +3212,11 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError) // Report the context in which the unclosed block was opened. cmListFileContext const& lfc = fb->GetStartingContext(); std::ostringstream e; + /* clang-format off */ e << "A logical block opening on the line\n" << " " << lfc << "\n" << "is not closed."; + /* clang-format on */ this->IssueMessage(cmake::FATAL_ERROR, e.str()); reportError = false; } @@ -3268,7 +3226,6 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError) this->FunctionBlockerBarriers.pop_back(); } -//---------------------------------------------------------------------------- void cmMakefile::PushLoopBlock() { assert(!this->LoopBlockCounter.empty()); @@ -3306,7 +3263,6 @@ std::string cmMakefile::GetExecutionFilePath() const return this->StateSnapshot.GetExecutionListFile(); } -//---------------------------------------------------------------------------- bool cmMakefile::ExpandArguments( std::vector<cmListFileArgument> const& inArgs, std::vector<std::string>& outArgs, const char* filename) const @@ -3346,7 +3302,6 @@ bool cmMakefile::ExpandArguments( return !cmSystemTools::GetFatalErrorOccured(); } -//---------------------------------------------------------------------------- bool cmMakefile::ExpandArguments( std::vector<cmListFileArgument> const& inArgs, std::vector<cmExpandedCommandArgument>& outArgs, const char* filename) const @@ -3391,7 +3346,6 @@ bool cmMakefile::ExpandArguments( return !cmSystemTools::GetFatalErrorOccured(); } -//---------------------------------------------------------------------------- void cmMakefile::AddFunctionBlocker(cmFunctionBlocker* fb) { if(!this->ExecutionStatusStack.empty()) @@ -3430,11 +3384,13 @@ cmMakefile::RemoveFunctionBlocker(cmFunctionBlocker* fb, cmListFileContext closingContext = cmListFileContext::FromCommandContext(lff, lfc.FilePath); std::ostringstream e; + /* clang-format off */ e << "A logical block opening on the line\n" << " " << lfc << "\n" << "closes on the line\n" << " " << closingContext << "\n" << "with mis-matching arguments."; + /* clang-format on */ this->IssueMessage(cmake::AUTHOR_WARNING, e.str()); } cmFunctionBlocker* b = *pos; @@ -3477,7 +3433,6 @@ void cmMakefile::SetArgcArgv(const std::vector<std::string>& args) } } -//---------------------------------------------------------------------------- cmSourceFile* cmMakefile::GetSource(const std::string& sourceName) const { cmSourceFileLocation sfl(this, sourceName); @@ -3494,7 +3449,6 @@ cmSourceFile* cmMakefile::GetSource(const std::string& sourceName) const return 0; } -//---------------------------------------------------------------------------- cmSourceFile* cmMakefile::CreateSource(const std::string& sourceName, bool generated) { @@ -3507,7 +3461,6 @@ cmSourceFile* cmMakefile::CreateSource(const std::string& sourceName, return sf; } -//---------------------------------------------------------------------------- cmSourceFile* cmMakefile::GetOrCreateSource(const std::string& sourceName, bool generated) { @@ -3774,11 +3727,13 @@ std::string cmMakefile::GetModulesFile(const char* filename) const case cmPolicies::WARN: { std::ostringstream e; + /* clang-format off */ e << "File " << currentFile << " includes " << moduleInCMakeModulePath << " (found via CMAKE_MODULE_PATH) which shadows " << moduleInCMakeRoot << ". This may cause errors later on .\n" << cmPolicies::GetPolicyWarning(cmPolicies::CMP0017); + /* clang-format on */ this->IssueMessage(cmake::AUTHOR_WARNING, e.str()); // break; // fall through to OLD behaviour @@ -4026,29 +3981,16 @@ std::vector<std::string> cmMakefile::GetPropertyKeys() const return this->StateSnapshot.GetDirectory().GetPropertyKeys(); } -cmTarget* cmMakefile::FindTarget(const std::string& name, - bool excludeAliases) const +cmTarget* cmMakefile::FindLocalNonAliasTarget(const std::string& name) const { - if (!excludeAliases) - { - std::map<std::string, std::string>::const_iterator i = - this->AliasTargets.find(name); - if (i != this->AliasTargets.end()) - { - cmTargets::iterator ai = this->Targets.find(i->second); - return &ai->second; - } - } cmTargets::iterator i = this->Targets.find( name ); if ( i != this->Targets.end() ) { return &i->second; } - return 0; } -//---------------------------------------------------------------------------- cmTest* cmMakefile::CreateTest(const std::string& testName) { cmTest* test = this->GetTest(testName); @@ -4062,7 +4004,6 @@ cmTest* cmMakefile::CreateTest(const std::string& testName) return test; } -//---------------------------------------------------------------------------- cmTest* cmMakefile::GetTest(const std::string& testName) const { std::map<std::string, cmTest*>::const_iterator @@ -4134,17 +4075,8 @@ std::string cmMakefile::FormatListFileStack() const void cmMakefile::PushScope() { - std::string commandName; - long line = 0; - if (!this->ContextStack.empty()) - { - commandName = this->ContextStack.back()->Name; - line = this->ContextStack.back()->Line; - } this->StateSnapshot = this->GetState()->CreateVariableScopeSnapshot( - this->StateSnapshot, - commandName, - line); + this->StateSnapshot); this->PushLoopBlockBarrier(); #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -4180,7 +4112,6 @@ void cmMakefile::RaiseScope(const std::string& var, const char *varDef) } } -//---------------------------------------------------------------------------- cmTarget* cmMakefile::AddImportedTarget(const std::string& name, cmState::TargetType type, @@ -4201,7 +4132,6 @@ cmMakefile::AddImportedTarget(const std::string& name, return target.release(); } -//---------------------------------------------------------------------------- cmTarget* cmMakefile::FindTargetToUse(const std::string& name, bool excludeAliases) const { @@ -4215,7 +4145,7 @@ cmTarget* cmMakefile::FindTargetToUse(const std::string& name, } // Look for a target built in this directory. - if(cmTarget* t = this->FindTarget(name, excludeAliases)) + if(cmTarget* t = this->FindLocalNonAliasTarget(name)) { return t; } @@ -4224,7 +4154,6 @@ cmTarget* cmMakefile::FindTargetToUse(const std::string& name, return this->GetGlobalGenerator()->FindTarget(name, excludeAliases); } -//---------------------------------------------------------------------------- bool cmMakefile::IsAlias(const std::string& name) const { if (this->AliasTargets.find(name) != this->AliasTargets.end()) @@ -4232,7 +4161,6 @@ bool cmMakefile::IsAlias(const std::string& name) const return this->GetGlobalGenerator()->IsAlias(name); } -//---------------------------------------------------------------------------- bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg, bool isCustom) const { @@ -4327,7 +4255,6 @@ bool cmMakefile::EnforceUniqueName(std::string const& name, std::string& msg, return true; } -//---------------------------------------------------------------------------- bool cmMakefile::EnforceUniqueDir(const std::string& srcPath, const std::string& binPath) const { @@ -4342,6 +4269,7 @@ bool cmMakefile::EnforceUniqueDir(const std::string& srcPath, { case cmPolicies::WARN: // Print the warning. + /* clang-format off */ e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0013) << "\n" << "The binary directory\n" @@ -4353,6 +4281,7 @@ bool cmMakefile::EnforceUniqueDir(const std::string& srcPath, << "CMake does not support this use case but it used " << "to work accidentally and is being allowed for " << "compatibility."; + /* clang-format on */ this->IssueMessage(cmake::AUTHOR_WARNING, e.str()); case cmPolicies::OLD: // OLD behavior does not warn. @@ -4363,12 +4292,14 @@ bool cmMakefile::EnforceUniqueDir(const std::string& srcPath, << "\n"; case cmPolicies::NEW: // NEW behavior prints the error. + /* clang-format off */ e << "The binary directory\n" << " " << binPath << "\n" << "is already used to build a source directory. " << "It cannot be used to build source directory\n" << " " << srcPath << "\n" << "Specify a unique binary directory name."; + /* clang-format on */ this->IssueMessage(cmake::FATAL_ERROR, e.str()); break; } @@ -4376,13 +4307,11 @@ bool cmMakefile::EnforceUniqueDir(const std::string& srcPath, return false; } -//---------------------------------------------------------------------------- void cmMakefile::AddQtUiFileWithOptions(cmSourceFile *sf) { this->QtUiFilesWithOptions.push_back(sf); } -//---------------------------------------------------------------------------- std::vector<cmSourceFile*> cmMakefile::GetQtUiFilesWithOptions() const { return this->QtUiFilesWithOptions; @@ -4403,7 +4332,6 @@ static std::string const matchVariables[] = { static std::string const nMatchesVariable = "CMAKE_MATCH_COUNT"; -//---------------------------------------------------------------------------- void cmMakefile::ClearMatches() { const char* nMatchesStr = this->GetDefinition(nMatchesVariable); @@ -4426,7 +4354,6 @@ void cmMakefile::ClearMatches() this->MarkVariableAsUsed(nMatchesVariable); } -//---------------------------------------------------------------------------- void cmMakefile::StoreMatches(cmsys::RegularExpression& re) { char highest = 0; @@ -4456,14 +4383,12 @@ const char* cmMakefile::GetDefineFlagsCMP0059() const return this->DefineFlagsOrig.c_str(); } -//---------------------------------------------------------------------------- cmPolicies::PolicyStatus cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const { return this->StateSnapshot.GetPolicy(id); } -//---------------------------------------------------------------------------- bool cmMakefile::PolicyOptionalWarningEnabled(std::string const& var) { // Check for an explicit CMAKE_POLICY_WARNING_CMP<NNNN> setting. @@ -4494,7 +4419,6 @@ bool cmMakefile::SetPolicy(const char *id, return this->SetPolicy(pid,status); } -//---------------------------------------------------------------------------- bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status) { @@ -4513,25 +4437,21 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, return true; } -//---------------------------------------------------------------------------- cmMakefile::PolicyPushPop::PolicyPushPop(cmMakefile* m): Makefile(m) { this->Makefile->PushPolicy(); } -//---------------------------------------------------------------------------- cmMakefile::PolicyPushPop::~PolicyPushPop() { this->Makefile->PopPolicy(); } -//---------------------------------------------------------------------------- void cmMakefile::PushPolicy(bool weak, cmPolicies::PolicyMap const& pm) { this->StateSnapshot.PushPolicy(pm, weak); } -//---------------------------------------------------------------------------- void cmMakefile::PopPolicy() { if (!this->StateSnapshot.PopPolicy()) @@ -4541,7 +4461,6 @@ void cmMakefile::PopPolicy() } } -//---------------------------------------------------------------------------- void cmMakefile::PopSnapshot(bool reportError) { // cmState::Snapshot manages nested policy scopes within it. @@ -4562,20 +4481,17 @@ void cmMakefile::PopSnapshot(bool reportError) assert(this->StateSnapshot.IsValid()); } -//---------------------------------------------------------------------------- bool cmMakefile::SetPolicyVersion(const char *version) { return cmPolicies::ApplyPolicyVersion(this,version); } -//---------------------------------------------------------------------------- bool cmMakefile::HasCMP0054AlreadyBeenReported( cmListFileContext const& context) const { return !this->CMP0054ReportedIds.insert(context).second; } -//---------------------------------------------------------------------------- void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm) { /* Record the setting of every policy. */ @@ -4587,7 +4503,6 @@ void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm) } } -//---------------------------------------------------------------------------- bool cmMakefile::IgnoreErrorsCMP0061() const { bool ignoreErrors = true; @@ -4606,7 +4521,6 @@ bool cmMakefile::IgnoreErrorsCMP0061() const return ignoreErrors; } -//---------------------------------------------------------------------------- #define FEATURE_STRING(F) , #F static const char * const C_FEATURES[] = { 0 @@ -4630,7 +4544,6 @@ static const char * const CXX_STANDARDS[] = { , "14" }; -//---------------------------------------------------------------------------- bool cmMakefile:: AddRequiredTargetFeature(cmTarget *target, const std::string& feature, std::string *error) const @@ -4676,7 +4589,6 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature, : this->AddRequiredTargetCxxFeature(target, feature); } -//---------------------------------------------------------------------------- bool cmMakefile:: CompileFeatureKnown(cmTarget const* target, const std::string& feature, std::string& lang, std::string *error) const @@ -4721,7 +4633,6 @@ CompileFeatureKnown(cmTarget const* target, const std::string& feature, return false; } -//---------------------------------------------------------------------------- const char* cmMakefile:: CompileFeaturesAvailable(const std::string& lang, std::string *error) const { @@ -4756,7 +4667,6 @@ CompileFeaturesAvailable(const std::string& lang, std::string *error) const return featuresKnown; } -//---------------------------------------------------------------------------- bool cmMakefile::HaveStandardAvailable(cmTarget const* target, std::string const& lang, const std::string& feature) const @@ -4766,7 +4676,6 @@ bool cmMakefile::HaveStandardAvailable(cmTarget const* target, : this->HaveCxxStandardAvailable(target, feature); } -//---------------------------------------------------------------------------- bool cmMakefile:: HaveCStandardAvailable(cmTarget const* target, const std::string& feature) const @@ -4844,7 +4753,6 @@ HaveCStandardAvailable(cmTarget const* target, return true; } -//---------------------------------------------------------------------------- bool cmMakefile::IsLaterStandard(std::string const& lang, std::string const& lhs, std::string const& rhs) @@ -4866,7 +4774,6 @@ bool cmMakefile::IsLaterStandard(std::string const& lang, cmStrCmp(lhs)) != cmArrayEnd(CXX_STANDARDS); } -//---------------------------------------------------------------------------- bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target, const std::string& feature) const { @@ -4934,7 +4841,6 @@ bool cmMakefile::HaveCxxStandardAvailable(cmTarget const* target, return true; } -//---------------------------------------------------------------------------- void cmMakefile::CheckNeededCxxLanguage(const std::string& feature, bool& needCxx98, bool& needCxx11, @@ -4963,7 +4869,6 @@ void cmMakefile::CheckNeededCxxLanguage(const std::string& feature, } } -//---------------------------------------------------------------------------- bool cmMakefile:: AddRequiredTargetCxxFeature(cmTarget *target, const std::string& feature) const @@ -5034,7 +4939,6 @@ AddRequiredTargetCxxFeature(cmTarget *target, return true; } -//---------------------------------------------------------------------------- void cmMakefile::CheckNeededCLanguage(const std::string& feature, bool& needC90, bool& needC99, @@ -5063,7 +4967,6 @@ void cmMakefile::CheckNeededCLanguage(const std::string& feature, } } -//---------------------------------------------------------------------------- bool cmMakefile:: AddRequiredTargetCFeature(cmTarget *target, const std::string& feature) const { @@ -5160,16 +5063,3 @@ cmMakefile::MacroPushPop::~MacroPushPop() { this->Makefile->PopMacroScope(this->ReportError); } - -cmMakefileCall::cmMakefileCall(cmMakefile* mf, const cmCommandContext& lfc, - cmExecutionStatus& status): Makefile(mf) -{ - this->Makefile->ContextStack.push_back(&lfc); - this->Makefile->ExecutionStatusStack.push_back(&status); -} - -cmMakefileCall::~cmMakefileCall() -{ - this->Makefile->ExecutionStatusStack.pop_back(); - this->Makefile->ContextStack.pop_back(); -} diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 362ea75..fa5e9b4 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -12,22 +12,24 @@ #ifndef cmMakefile_h #define cmMakefile_h +#include "cmStandardIncludes.h" + +#include "cmAlgorithms.h" #include "cmExecutionStatus.h" +#include "cmExpandedCommandArgument.h" #include "cmListFileCache.h" +#include "cmNewLineStyle.h" +#include "cmState.h" #include "cmSystemTools.h" #include "cmTarget.h" -#include "cmNewLineStyle.h" -#include "cmExpandedCommandArgument.h" #include "cmake.h" -#include "cmState.h" -#include "cmAlgorithms.h" #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmSourceGroup.h" #endif -#include <cmsys/auto_ptr.hxx> #include <cmsys/RegularExpression.hxx> +#include <cmsys/auto_ptr.hxx> #if defined(CMAKE_BUILD_WITH_CMAKE) # ifdef CMake_HAVE_CXX11_UNORDERED_MAP # include <unordered_map> @@ -388,8 +390,7 @@ public: } std::vector<cmTarget*> GetImportedTargets() const; - cmTarget* FindTarget(const std::string& name, - bool excludeAliases = false) const; + cmTarget* FindLocalNonAliasTarget(const std::string& name) const; /** Find a target to use in place of the given name. The target returned may be imported or built within the project. */ @@ -836,6 +837,7 @@ private: cmMakefile& operator=(const cmMakefile& mf); cmState::Snapshot StateSnapshot; + cmListFileBacktrace Backtrace; void ReadListFile(cmListFile const& listFile, const std::string& filenametoread); @@ -863,7 +865,6 @@ private: std::vector<cmGeneratorExpressionEvaluationFile*> EvaluationFiles; - std::vector<cmCommandContext const*> ContextStack; std::vector<cmExecutionStatus*> ExecutionStatusStack; friend class cmMakefileCall; friend class cmParseFileScope; @@ -960,17 +961,4 @@ private: mutable bool SuppressWatches; }; -//---------------------------------------------------------------------------- -// Helper class to make sure the call stack is valid. -class cmMakefileCall -{ -public: - cmMakefileCall(cmMakefile* mf, - cmCommandContext const& lfc, - cmExecutionStatus& status); - ~cmMakefileCall(); -private: - cmMakefile* Makefile; -}; - #endif diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 9e35e4c..7e54680 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -18,7 +18,6 @@ #include "cmSourceFile.h" #include "cmake.h" -//---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::cmMakefileExecutableTargetGenerator(cmGeneratorTarget* target): cmMakefileTargetGenerator(target) @@ -33,14 +32,12 @@ cmMakefileExecutableTargetGenerator this->OSXBundleGenerator->SetMacContentFolders(&this->MacContentFolders); } -//---------------------------------------------------------------------------- cmMakefileExecutableTargetGenerator ::~cmMakefileExecutableTargetGenerator() { delete this->OSXBundleGenerator; } -//---------------------------------------------------------------------------- void cmMakefileExecutableTargetGenerator::WriteRuleFiles() { // create the build.make file and directory, put in the common blocks @@ -79,7 +76,6 @@ void cmMakefileExecutableTargetGenerator::WriteRuleFiles() -//---------------------------------------------------------------------------- void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) { std::vector<std::string> commands; diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 435844e..195dd98 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -11,15 +11,14 @@ ============================================================================*/ #include "cmMakefileLibraryTargetGenerator.h" +#include "cmAlgorithms.h" #include "cmGeneratedFileStream.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" #include "cmSourceFile.h" #include "cmake.h" -#include "cmAlgorithms.h" -//---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::cmMakefileLibraryTargetGenerator(cmGeneratorTarget* target): cmMakefileTargetGenerator(target) @@ -37,14 +36,12 @@ cmMakefileLibraryTargetGenerator this->OSXBundleGenerator->SetMacContentFolders(&this->MacContentFolders); } -//---------------------------------------------------------------------------- cmMakefileLibraryTargetGenerator ::~cmMakefileLibraryTargetGenerator() { delete this->OSXBundleGenerator; } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteRuleFiles() { // create the build.make file and directory, put in the common blocks @@ -105,7 +102,6 @@ void cmMakefileLibraryTargetGenerator::WriteRuleFiles() this->CloseFileStreams(); } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteObjectLibraryRules() { std::vector<std::string> commands; @@ -129,7 +125,6 @@ void cmMakefileLibraryTargetGenerator::WriteObjectLibraryRules() this->WriteTargetDriverRule(this->GeneratorTarget->GetName(), false); } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteStaticLibraryRules() { std::string linkLanguage = @@ -150,7 +145,6 @@ void cmMakefileLibraryTargetGenerator::WriteStaticLibraryRules() this->WriteLibraryRules(linkRuleVar, extraFlags, false); } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteSharedLibraryRules(bool relink) { if(this->GeneratorTarget->IsFrameworkOnApple()) @@ -179,7 +173,6 @@ void cmMakefileLibraryTargetGenerator::WriteSharedLibraryRules(bool relink) this->WriteLibraryRules(linkRuleVar, extraFlags, relink); } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink) { std::string linkLanguage = @@ -202,7 +195,6 @@ void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink) this->WriteLibraryRules(linkRuleVar, extraFlags, relink); } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteFrameworkRules(bool relink) { std::string linkLanguage = @@ -224,7 +216,6 @@ void cmMakefileLibraryTargetGenerator::WriteFrameworkRules(bool relink) this->WriteLibraryRules(linkRuleVar, extraFlags, relink); } -//---------------------------------------------------------------------------- void cmMakefileLibraryTargetGenerator::WriteLibraryRules (const std::string& linkRuleVar, const std::string& extraFlags, bool relink) { diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index eedc6ab..bd06298 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -11,19 +11,19 @@ ============================================================================*/ #include "cmMakefileTargetGenerator.h" -#include "cmGeneratorTarget.h" +#include "cmAlgorithms.h" +#include "cmComputeLinkInformation.h" +#include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGeneratorExpression.h" +#include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmGlobalUnixMakefileGenerator3.h" #include "cmLocalUnixMakefileGenerator3.h" #include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmake.h" #include "cmState.h" -#include "cmComputeLinkInformation.h" -#include "cmCustomCommandGenerator.h" -#include "cmGeneratorExpression.h" -#include "cmAlgorithms.h" +#include "cmake.h" #include "cmMakefileExecutableTargetGenerator.h" #include "cmMakefileLibraryTargetGenerator.h" @@ -86,7 +86,6 @@ cmMakefileTargetGenerator::New(cmGeneratorTarget *tgt) return result; } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::CreateRuleFile() { // Create a directory for this target. @@ -130,7 +129,6 @@ void cmMakefileTargetGenerator::CreateRuleFile() this->LocalGenerator->WriteSpecialTargetsTop(*this->BuildFileStream); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::WriteTargetBuildRules() { const std::string& config = @@ -212,7 +210,6 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules() } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::WriteCommonCodeRules() { const char* root = (this->Makefile->IsOn("CMAKE_MAKE_INCLUDE_FROM_ROOT")? @@ -310,7 +307,6 @@ void cmMakefileTargetGenerator::WriteTargetLanguageFlags() } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::MacOSXContentGeneratorType::operator() (cmSourceFile const& source, const char* pkgloc) @@ -362,7 +358,6 @@ cmMakefileTargetGenerator::MacOSXContentGeneratorType::operator() this->Generator->ExtraFiles.insert(output); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::WriteObjectRuleFiles(cmSourceFile const& source) { @@ -436,7 +431,6 @@ void cmMakefileTargetGenerator srcFullPath.c_str()); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::WriteObjectBuildFile(std::string &obj, @@ -667,10 +661,23 @@ cmMakefileTargetGenerator { std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; const char *iwyu = this->GeneratorTarget->GetProperty(iwyu_prop); - if (iwyu && *iwyu) + std::string const tidy_prop = lang + "_CLANG_TIDY"; + const char *tidy = this->GeneratorTarget->GetProperty(tidy_prop); + if ((iwyu && *iwyu) || (tidy && *tidy)) { - std::string run_iwyu = "$(CMAKE_COMMAND) -E __run_iwyu --iwyu="; - run_iwyu += this->LocalGenerator->EscapeForShell(iwyu); + std::string run_iwyu = "$(CMAKE_COMMAND) -E __run_iwyu"; + if (iwyu && *iwyu) + { + run_iwyu += " --iwyu="; + run_iwyu += this->LocalGenerator->EscapeForShell(iwyu); + } + if (tidy && *tidy) + { + run_iwyu += " --tidy="; + run_iwyu += this->LocalGenerator->EscapeForShell(tidy); + run_iwyu += " --source="; + run_iwyu += sourceFile; + } run_iwyu += " -- "; compileCommands.front().insert(0, run_iwyu); } @@ -891,7 +898,6 @@ cmMakefileTargetGenerator false); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::WriteTargetRequiresRules() { std::vector<std::string> depends; @@ -920,7 +926,6 @@ void cmMakefileTargetGenerator::WriteTargetRequiresRules() depends, no_commands, true); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::WriteTargetCleanRules() { std::vector<std::string> depends; @@ -945,7 +950,6 @@ void cmMakefileTargetGenerator::WriteTargetCleanRules() depends, commands, true); } -//---------------------------------------------------------------------------- bool cmMakefileTargetGenerator::WriteMakeRule( std::ostream& os, const char* comment, @@ -1021,7 +1025,6 @@ bool cmMakefileTargetGenerator::WriteMakeRule( return symbolic; } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::WriteTargetDependRules() { // must write the targets depend info file @@ -1044,10 +1047,12 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() // Store multiple output pairs in the depend info file. if(!this->MultipleOutputPairs.empty()) { + /* clang-format off */ *this->InfoFileStream << "\n" << "# Pairs of files generated by the same build rule.\n" << "set(CMAKE_MULTIPLE_OUTPUT_PAIRS\n"; + /* clang-format on */ for(MultipleOutputPairsType::const_iterator pi = this->MultipleOutputPairs.begin(); pi != this->MultipleOutputPairs.end(); ++pi) @@ -1062,10 +1067,12 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() // Store list of targets linked directly or transitively. { + /* clang-format off */ *this->InfoFileStream << "\n" << "# Targets to which this target links.\n" << "set(CMAKE_TARGET_LINKED_INFO_FILES\n"; + /* clang-format on */ std::vector<std::string> dirs = this->GetLinkedTargetDirectories(); for (std::vector<std::string>::iterator i = dirs.begin(); i != dirs.end(); ++i) @@ -1076,11 +1083,13 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() << " )\n"; } + /* clang-format off */ *this->InfoFileStream << "\n" << "# Fortran module output directory.\n" << "set(CMAKE_Fortran_TARGET_MODULE_DIR \"" << this->GetFortranModuleDirectory() << "\")\n"; + /* clang-format on */ // and now write the rule to use it std::vector<std::string> depends; @@ -1150,7 +1159,6 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() depends, commands, true); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::DriveCustomCommands(std::vector<std::string>& depends) @@ -1172,7 +1180,6 @@ cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::WriteObjectDependRules(cmSourceFile const& source, std::vector<std::string>& depends) @@ -1186,7 +1193,6 @@ void cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::GenerateCustomRuleFile(cmCustomCommandGenerator const& ccg) { @@ -1246,7 +1252,6 @@ void cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::MakeEchoProgress(cmLocalUnixMakefileGenerator3::EchoProgress& progress) const @@ -1258,7 +1263,6 @@ cmMakefileTargetGenerator progress.Arg = progressArg.str(); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::WriteObjectsVariable(std::string& variableName, @@ -1295,11 +1299,13 @@ cmMakefileTargetGenerator variableNameExternal = this->LocalGenerator->CreateMakeVariable(this->GeneratorTarget->GetName(), "_EXTERNAL_OBJECTS"); + /* clang-format off */ *this->BuildFileStream << "\n" << "# External object files for target " << this->GeneratorTarget->GetName() << "\n" << variableNameExternal << " ="; + /* clang-format on */ for(std::vector<std::string>::const_iterator i = this->ExternalObjects.begin(); i != this->ExternalObjects.end(); ++i) @@ -1315,7 +1321,6 @@ cmMakefileTargetGenerator *this->BuildFileStream << "\n" << "\n"; } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::WriteObjectsString(std::string& buildObjs) @@ -1325,7 +1330,6 @@ cmMakefileTargetGenerator buildObjs = objStrings[0]; } -//---------------------------------------------------------------------------- class cmMakefileTargetGeneratorObjectStrings { public: @@ -1374,7 +1378,6 @@ private: const char* Space; }; -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::WriteObjectsStrings(std::vector<std::string>& objStrings, @@ -1396,7 +1399,6 @@ cmMakefileTargetGenerator helper.Done(); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::WriteTargetDriverRule( const std::string& main_output, bool relink) @@ -1443,7 +1445,6 @@ void cmMakefileTargetGenerator::WriteTargetDriverRule( depends, no_commands, true); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::AppendTargetDepends(std::vector<std::string>& depends) { @@ -1463,7 +1464,6 @@ void cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::AppendObjectDepends(std::vector<std::string>& depends) { @@ -1487,7 +1487,6 @@ void cmMakefileTargetGenerator this->BuildFileNameFull.c_str()); } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::AppendLinkDepends(std::vector<std::string>& depends) { @@ -1519,7 +1518,6 @@ void cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- std::string cmMakefileTargetGenerator::GetLinkRule( const std::string& linkRuleVar) { @@ -1537,7 +1535,6 @@ std::string cmMakefileTargetGenerator::GetLinkRule( return linkRule; } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::CloseFileStreams() { @@ -1600,7 +1597,6 @@ void cmMakefileTargetGenerator::RemoveForbiddenFlags(const char* flagVar, } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::CreateLinkScript(const char* name, @@ -1635,7 +1631,6 @@ cmMakefileTargetGenerator makefile_depends.push_back(linkScriptName); } -//---------------------------------------------------------------------------- std::string cmMakefileTargetGenerator ::CreateResponseFile(const char* name, std::string const& options, @@ -1660,7 +1655,6 @@ cmMakefileTargetGenerator return responseFileName; } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::CreateLinkLibs(std::string& linkLibs, bool relink, @@ -1703,7 +1697,6 @@ cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator ::CreateObjectLists(bool useLinkScript, bool useArchiveRules, @@ -1776,7 +1769,6 @@ cmMakefileTargetGenerator } } -//---------------------------------------------------------------------------- void cmMakefileTargetGenerator::AddIncludeFlags(std::string& flags, const std::string& lang) { diff --git a/Source/cmMakefileUtilityTargetGenerator.cxx b/Source/cmMakefileUtilityTargetGenerator.cxx index 5b62cbf..1c601c6 100644 --- a/Source/cmMakefileUtilityTargetGenerator.cxx +++ b/Source/cmMakefileUtilityTargetGenerator.cxx @@ -17,7 +17,6 @@ #include "cmMakefile.h" #include "cmSourceFile.h" -//---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::cmMakefileUtilityTargetGenerator(cmGeneratorTarget* target): cmMakefileTargetGenerator(target) @@ -28,14 +27,12 @@ cmMakefileUtilityTargetGenerator this->OSXBundleGenerator->SetMacContentFolders(&this->MacContentFolders); } -//---------------------------------------------------------------------------- cmMakefileUtilityTargetGenerator ::~cmMakefileUtilityTargetGenerator() { delete this->OSXBundleGenerator; } -//---------------------------------------------------------------------------- void cmMakefileUtilityTargetGenerator::WriteRuleFiles() { this->CreateRuleFile(); diff --git a/Source/cmMathCommand.cxx b/Source/cmMathCommand.cxx index f1942c5..d6e1d17 100644 --- a/Source/cmMathCommand.cxx +++ b/Source/cmMathCommand.cxx @@ -13,7 +13,6 @@ #include "cmExprParserHelper.h" -//---------------------------------------------------------------------------- bool cmMathCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -32,7 +31,6 @@ bool cmMathCommand return false; } -//---------------------------------------------------------------------------- bool cmMathCommand::HandleExprCommand(std::vector<std::string> const& args) { if ( args.size() != 3 ) diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index c34df3c..04e84fe 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -11,18 +11,19 @@ See the License for more information. ============================================================================*/ #include "cmNinjaNormalTargetGenerator.h" -#include "cmLocalNinjaGenerator.h" -#include "cmGlobalNinjaGenerator.h" -#include "cmSourceFile.h" + +#include "cmAlgorithms.h" +#include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGeneratorTarget.h" +#include "cmGlobalNinjaGenerator.h" +#include "cmLocalNinjaGenerator.h" #include "cmMakefile.h" #include "cmOSXBundleGenerator.h" -#include "cmGeneratorTarget.h" -#include "cmCustomCommandGenerator.h" -#include "cmAlgorithms.h" +#include "cmSourceFile.h" -#include <assert.h> #include <algorithm> +#include <assert.h> #include <limits> #ifndef _WIN32 @@ -697,10 +698,8 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() cmGlobalNinjaGenerator& globalGen = *this->GetGlobalGenerator(); - int commandLineLengthLimit = 1; - const char* forceRspFile = "CMAKE_NINJA_FORCE_RESPONSE_FILE"; - if (!mf->IsDefinitionSet(forceRspFile) && - cmSystemTools::GetEnv(forceRspFile) == 0) + int commandLineLengthLimit = -1; + if (!this->ForceResponseFile()) { commandLineLengthLimit = calculateCommandLineLengthLimit( globalGen.GetRuleCmdLength(this->LanguageLinkerRule())); @@ -785,7 +784,6 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement() globalGen.AddTargetAlias(this->GetTargetName(), >); } -//---------------------------------------------------------------------------- void cmNinjaNormalTargetGenerator::WriteObjectLibStatement() { // Write a phony output that depends on all object files. diff --git a/Source/cmNinjaNormalTargetGenerator.h b/Source/cmNinjaNormalTargetGenerator.h index 556ed5e..300618c 100644 --- a/Source/cmNinjaNormalTargetGenerator.h +++ b/Source/cmNinjaNormalTargetGenerator.h @@ -11,13 +11,13 @@ See the License for more information. ============================================================================*/ #ifndef cmNinjaNormalTargetGenerator_h -# define cmNinjaNormalTargetGenerator_h +#define cmNinjaNormalTargetGenerator_h -# include "cmNinjaTargetGenerator.h" -# include "cmNinjaTypes.h" -# include "cmStandardIncludes.h" +#include "cmNinjaTargetGenerator.h" -# include <set> +#include "cmNinjaTypes.h" + +#include <set> class cmSourceFile; class cmOSXBundleGenerator; diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 5ff4fdb..f077c64 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -11,18 +11,19 @@ See the License for more information. ============================================================================*/ #include "cmNinjaTargetGenerator.h" -#include "cmGlobalNinjaGenerator.h" -#include "cmLocalNinjaGenerator.h" + +#include "cmAlgorithms.h" +#include "cmComputeLinkInformation.h" +#include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" #include "cmGeneratorTarget.h" +#include "cmGlobalNinjaGenerator.h" +#include "cmLocalNinjaGenerator.h" +#include "cmMakefile.h" #include "cmNinjaNormalTargetGenerator.h" #include "cmNinjaUtilityTargetGenerator.h" -#include "cmSystemTools.h" -#include "cmMakefile.h" -#include "cmComputeLinkInformation.h" #include "cmSourceFile.h" -#include "cmCustomCommandGenerator.h" -#include "cmAlgorithms.h" +#include "cmSystemTools.h" #include <algorithm> @@ -341,11 +342,25 @@ cmNinjaTargetGenerator cmMakefile* mf = this->GetMakefile(); + std::string flags = "$FLAGS"; + std::string rspfile; + std::string rspcontent; + std::string responseFlag; + + if (this->ForceResponseFile()) + { + rspfile = "$RSP_FILE"; + responseFlag = "@" + rspfile; + rspcontent = " $DEFINES $INCLUDES $FLAGS"; + flags = responseFlag; + vars.Defines = ""; + vars.Includes = ""; + } + // Tell ninja dependency format so all deps can be loaded into a database std::string deptype; std::string depfile; std::string cldeps; - std::string flags = "$FLAGS"; if (this->NeedDepTypeMSVC(lang)) { deptype = "msvc"; @@ -405,13 +420,25 @@ cmNinjaTargetGenerator { std::string const iwyu_prop = lang + "_INCLUDE_WHAT_YOU_USE"; const char *iwyu = this->GeneratorTarget->GetProperty(iwyu_prop); - if (iwyu && *iwyu) + std::string const tidy_prop = lang + "_CLANG_TIDY"; + const char *tidy = this->GeneratorTarget->GetProperty(tidy_prop); + if ((iwyu && *iwyu) || (tidy && *tidy)) { std::string run_iwyu = this->GetLocalGenerator()->ConvertToOutputFormat( cmSystemTools::GetCMakeCommand(), cmLocalGenerator::SHELL); - run_iwyu += " -E __run_iwyu --iwyu="; - run_iwyu += this->GetLocalGenerator()->EscapeForShell(iwyu); + run_iwyu += " -E __run_iwyu"; + if (iwyu && *iwyu) + { + run_iwyu += " --iwyu="; + run_iwyu += this->GetLocalGenerator()->EscapeForShell(iwyu); + } + if (tidy && *tidy) + { + run_iwyu += " --tidy="; + run_iwyu += this->GetLocalGenerator()->EscapeForShell(tidy); + run_iwyu += " --source=$in"; + } run_iwyu += " -- "; compileCmds.front().insert(0, run_iwyu); } @@ -460,8 +487,8 @@ cmNinjaTargetGenerator comment.str(), depfile, deptype, - /*rspfile*/ "", - /*rspcontent*/ "", + rspfile, + rspcontent, /*restat*/ "", /*generator*/ false); } @@ -641,6 +668,9 @@ cmNinjaTargetGenerator this->SetMsvcTargetPdbVariable(vars); + int const commandLineLengthLimit = this->ForceResponseFile() ? -1 : 0; + std::string const rspfile = objectFileName + ".rsp"; + this->GetGlobalGenerator()->WriteBuild(this->GetBuildFileStream(), comment, rule, @@ -648,7 +678,10 @@ cmNinjaTargetGenerator explicitDeps, implicitDeps, orderOnlyDeps, - vars); + vars, + rspfile, + commandLineLengthLimit); + if(const char* objectOutputs = source->GetProperty("OBJECT_OUTPUTS")) { std::vector<std::string> outputList; @@ -750,7 +783,6 @@ cmNinjaTargetGenerator } -//---------------------------------------------------------------------------- void cmNinjaTargetGenerator::MacOSXContentGeneratorType::operator()( cmSourceFile const& source, const char* pkgloc) @@ -795,3 +827,10 @@ void cmNinjaTargetGenerator::addPoolNinjaVariable( vars["pool"] = pool; } } + +bool cmNinjaTargetGenerator::ForceResponseFile() +{ + static std::string const forceRspFile = "CMAKE_NINJA_FORCE_RESPONSE_FILE"; + return (this->GetMakefile()->IsDefinitionSet(forceRspFile) || + cmSystemTools::GetEnv(forceRspFile) != 0); +} diff --git a/Source/cmNinjaTargetGenerator.h b/Source/cmNinjaTargetGenerator.h index e3ec423..8225a60 100644 --- a/Source/cmNinjaTargetGenerator.h +++ b/Source/cmNinjaTargetGenerator.h @@ -15,10 +15,9 @@ #include "cmCommonTargetGenerator.h" -#include "cmStandardIncludes.h" -#include "cmNinjaTypes.h" #include "cmGlobalNinjaGenerator.h" #include "cmLocalNinjaGenerator.h" +#include "cmNinjaTypes.h" #include "cmOSXBundleGenerator.h" class cmTarget; @@ -152,6 +151,8 @@ protected: cmGeneratorTarget* target, cmNinjaVars& vars); + bool ForceResponseFile(); + private: cmLocalNinjaGenerator* LocalGenerator; /// List of object files for this target. diff --git a/Source/cmNinjaTypes.h b/Source/cmNinjaTypes.h index 498f6b6..82a5220 100644 --- a/Source/cmNinjaTypes.h +++ b/Source/cmNinjaTypes.h @@ -11,7 +11,9 @@ See the License for more information. ============================================================================*/ #ifndef cmNinjaTypes_h -# define cmNinjaTypes_h +#define cmNinjaTypes_h + +#include "cmStandardIncludes.h" typedef std::vector<std::string> cmNinjaDeps; typedef std::map<std::string, std::string> cmNinjaVars; diff --git a/Source/cmNinjaUtilityTargetGenerator.cxx b/Source/cmNinjaUtilityTargetGenerator.cxx index ac66fcd..735730e 100644 --- a/Source/cmNinjaUtilityTargetGenerator.cxx +++ b/Source/cmNinjaUtilityTargetGenerator.cxx @@ -11,12 +11,13 @@ See the License for more information. ============================================================================*/ #include "cmNinjaUtilityTargetGenerator.h" + #include "cmCustomCommand.h" +#include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" #include "cmGlobalNinjaGenerator.h" #include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmCustomCommandGenerator.h" cmNinjaUtilityTargetGenerator::cmNinjaUtilityTargetGenerator( cmGeneratorTarget *target) diff --git a/Source/cmNinjaUtilityTargetGenerator.h b/Source/cmNinjaUtilityTargetGenerator.h index add0291..fec2946 100644 --- a/Source/cmNinjaUtilityTargetGenerator.h +++ b/Source/cmNinjaUtilityTargetGenerator.h @@ -11,10 +11,11 @@ See the License for more information. ============================================================================*/ #ifndef cmNinjaUtilityTargetGenerator_h -# define cmNinjaUtilityTargetGenerator_h +#define cmNinjaUtilityTargetGenerator_h -# include "cmNinjaTargetGenerator.h" -# include "cmNinjaTypes.h" +#include "cmNinjaTargetGenerator.h" + +#include "cmNinjaTypes.h" class cmSourceFile; diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx index 934e198..09b99bb 100644 --- a/Source/cmOSXBundleGenerator.cxx +++ b/Source/cmOSXBundleGenerator.cxx @@ -10,13 +10,13 @@ See the License for more information. ============================================================================*/ #include "cmOSXBundleGenerator.h" + +#include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmTarget.h" -#include "cmLocalGenerator.h" #include <cassert> -//---------------------------------------------------------------------------- cmOSXBundleGenerator:: cmOSXBundleGenerator(cmGeneratorTarget* target, const std::string& configName) @@ -31,13 +31,11 @@ cmOSXBundleGenerator(cmGeneratorTarget* target, } -//---------------------------------------------------------------------------- bool cmOSXBundleGenerator::MustSkip() { return !this->GT->HaveWellDefinedOutputFiles(); } -//---------------------------------------------------------------------------- void cmOSXBundleGenerator::CreateAppBundle(const std::string& targetName, std::string& outpath) { @@ -66,7 +64,6 @@ void cmOSXBundleGenerator::CreateAppBundle(const std::string& targetName, outpath = newoutpath; } -//---------------------------------------------------------------------------- void cmOSXBundleGenerator::CreateFramework( const std::string& targetName, const std::string& outpath) { @@ -171,7 +168,6 @@ void cmOSXBundleGenerator::CreateFramework( } } -//---------------------------------------------------------------------------- void cmOSXBundleGenerator::CreateCFBundle(const std::string& targetName, const std::string& root) { @@ -197,7 +193,6 @@ void cmOSXBundleGenerator::CreateCFBundle(const std::string& targetName, this->Makefile->AddCMakeOutputFile(plist); } -//---------------------------------------------------------------------------- void cmOSXBundleGenerator:: GenerateMacOSXContentStatements( @@ -219,7 +214,6 @@ GenerateMacOSXContentStatements( } } -//---------------------------------------------------------------------------- std::string cmOSXBundleGenerator::InitMacOSXContentDirectory(const char* pkgloc) { diff --git a/Source/cmOSXBundleGenerator.h b/Source/cmOSXBundleGenerator.h index f945c15..3952e95 100644 --- a/Source/cmOSXBundleGenerator.h +++ b/Source/cmOSXBundleGenerator.h @@ -13,10 +13,11 @@ #define cmOSXBundleGenerator_h #include "cmStandardIncludes.h" + #include "cmSourceFile.h" -#include <string> #include <set> +#include <string> class cmTarget; class cmMakefile; diff --git a/Source/cmOrderDirectories.cxx b/Source/cmOrderDirectories.cxx index 61efd01..a4d9558 100644 --- a/Source/cmOrderDirectories.cxx +++ b/Source/cmOrderDirectories.cxx @@ -11,10 +11,10 @@ ============================================================================*/ #include "cmOrderDirectories.h" +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" #include "cmSystemTools.h" #include "cmake.h" -#include "cmAlgorithms.h" #include <assert.h> @@ -28,7 +28,6 @@ Directory ordering computation. for shared libraries. */ -//---------------------------------------------------------------------------- class cmOrderDirectoriesConstraint { public: @@ -127,7 +126,6 @@ protected: int DirectoryIndex; }; -//---------------------------------------------------------------------------- bool cmOrderDirectoriesConstraint::FileMayConflict(std::string const& dir, std::string const& name) { @@ -149,7 +147,6 @@ bool cmOrderDirectoriesConstraint::FileMayConflict(std::string const& dir, return fi != files.end(); } -//---------------------------------------------------------------------------- class cmOrderDirectoriesConstraintSOName: public cmOrderDirectoriesConstraint { public: @@ -189,7 +186,6 @@ private: std::string SOName; }; -//---------------------------------------------------------------------------- bool cmOrderDirectoriesConstraintSOName::FindConflict(std::string const& dir) { // Determine which type of check to do. @@ -224,7 +220,6 @@ bool cmOrderDirectoriesConstraintSOName::FindConflict(std::string const& dir) return false; } -//---------------------------------------------------------------------------- class cmOrderDirectoriesConstraintLibrary: public cmOrderDirectoriesConstraint { public: @@ -242,7 +237,6 @@ public: virtual bool FindConflict(std::string const& dir); }; -//---------------------------------------------------------------------------- bool cmOrderDirectoriesConstraintLibrary::FindConflict(std::string const& dir) { // We have the library file name. Check if it will be found. @@ -276,7 +270,6 @@ bool cmOrderDirectoriesConstraintLibrary::FindConflict(std::string const& dir) return false; } -//---------------------------------------------------------------------------- cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg, const cmGeneratorTarget* target, const char* purpose) @@ -287,14 +280,12 @@ cmOrderDirectories::cmOrderDirectories(cmGlobalGenerator* gg, this->Computed = false; } -//---------------------------------------------------------------------------- cmOrderDirectories::~cmOrderDirectories() { cmDeleteAll(this->ConstraintEntries); cmDeleteAll(this->ImplicitDirEntries); } -//---------------------------------------------------------------------------- std::vector<std::string> const& cmOrderDirectories::GetOrderedDirectories() { if(!this->Computed) @@ -307,7 +298,6 @@ std::vector<std::string> const& cmOrderDirectories::GetOrderedDirectories() return this->OrderedDirectories; } -//---------------------------------------------------------------------------- void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath, const char* soname) { @@ -353,7 +343,6 @@ void cmOrderDirectories::AddRuntimeLibrary(std::string const& fullPath, } } -//---------------------------------------------------------------------------- void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath) { // Link extension info is required for library constraints. @@ -381,7 +370,6 @@ void cmOrderDirectories::AddLinkLibrary(std::string const& fullPath) } } -//---------------------------------------------------------------------------- void cmOrderDirectories ::AddUserDirectories(std::vector<std::string> const& extra) @@ -390,7 +378,6 @@ cmOrderDirectories extra.begin(), extra.end()); } -//---------------------------------------------------------------------------- void cmOrderDirectories ::AddLanguageDirectories(std::vector<std::string> const& dirs) @@ -399,7 +386,6 @@ cmOrderDirectories dirs.begin(), dirs.end()); } -//---------------------------------------------------------------------------- void cmOrderDirectories ::SetImplicitDirectories(std::set<std::string> const& implicitDirs) @@ -407,7 +393,6 @@ cmOrderDirectories this->ImplicitDirectories = implicitDirs; } -//---------------------------------------------------------------------------- void cmOrderDirectories ::SetLinkExtensionInfo(std::vector<std::string> const& linkExtensions, @@ -417,7 +402,6 @@ cmOrderDirectories this->RemoveLibraryExtension.compile(removeExtRegex.c_str()); } -//---------------------------------------------------------------------------- void cmOrderDirectories::CollectOriginalDirectories() { // Add user directories specified for inclusion. These should be @@ -435,7 +419,6 @@ void cmOrderDirectories::CollectOriginalDirectories() this->AddOriginalDirectories(this->LanguageDirectories); } -//---------------------------------------------------------------------------- int cmOrderDirectories::AddOriginalDirectory(std::string const& dir) { // Add the runtime directory with a unique index. @@ -452,7 +435,6 @@ int cmOrderDirectories::AddOriginalDirectory(std::string const& dir) return i->second; } -//---------------------------------------------------------------------------- void cmOrderDirectories ::AddOriginalDirectories(std::vector<std::string> const& dirs) @@ -478,7 +460,6 @@ cmOrderDirectories } } -//---------------------------------------------------------------------------- struct cmOrderDirectoriesCompare { typedef std::pair<int, int> ConflictPair; @@ -493,7 +474,6 @@ struct cmOrderDirectoriesCompare } }; -//---------------------------------------------------------------------------- void cmOrderDirectories::FindConflicts() { // Allocate the conflict graph. @@ -525,7 +505,6 @@ void cmOrderDirectories::FindConflicts() this->FindImplicitConflicts(); } -//---------------------------------------------------------------------------- void cmOrderDirectories::FindImplicitConflicts() { // Check for items in implicit link directories that have conflicts @@ -556,7 +535,6 @@ void cmOrderDirectories::FindImplicitConflicts() this->Target->GetBacktrace()); } -//---------------------------------------------------------------------------- void cmOrderDirectories::OrderDirectories() { // Allow a cycle to be diagnosed once. @@ -572,7 +550,6 @@ void cmOrderDirectories::OrderDirectories() } } -//---------------------------------------------------------------------------- void cmOrderDirectories::VisitDirectory(unsigned int i) { // Skip nodes already visited. @@ -603,7 +580,6 @@ void cmOrderDirectories::VisitDirectory(unsigned int i) this->OrderedDirectories.push_back(this->OriginalDirectories[i]); } -//---------------------------------------------------------------------------- void cmOrderDirectories::DiagnoseCycle() { // Report the cycle at most once. diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 5acae2f..be14230 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -16,15 +16,15 @@ #include <assert.h> -#include <string.h> /* strlen */ #include <ctype.h> /* isalpha */ +#include <string.h> /* strlen */ cmOutputConverter::cmOutputConverter(cmState::Snapshot snapshot) : StateSnapshot(snapshot), LinkScriptShell(false) { + assert(this->StateSnapshot.IsValid()); } -//---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, std::string const& result, @@ -47,7 +47,6 @@ cmOutputConverter::ConvertToOutputForExistingCommon(const std::string& remote, return result; } -//---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToOutputForExisting(const std::string& remote, RelativeRoot local, @@ -62,7 +61,6 @@ cmOutputConverter::ConvertToOutputForExisting(const std::string& remote, return this->ConvertToOutputForExistingCommon(remote, result, format); } -//---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote, const std::string& local, @@ -76,7 +74,6 @@ cmOutputConverter::ConvertToOutputForExisting(RelativeRoot remote, return this->ConvertToOutputForExistingCommon(remotePath, result, format); } -//---------------------------------------------------------------------------- const char* cmOutputConverter::GetRelativeRootPath(RelativeRoot relroot) const { switch (relroot) @@ -130,7 +127,6 @@ std::string cmOutputConverter::Convert(const std::string& source, return this->ConvertToOutputFormat(result, output); } -//---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source, OutputFormat output) const { @@ -152,7 +148,6 @@ std::string cmOutputConverter::ConvertToOutputFormat(const std::string& source, return result; } -//---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertDirectorySeparatorsForShell( const std::string& source) const { @@ -175,7 +170,6 @@ std::string cmOutputConverter::ConvertDirectorySeparatorsForShell( return result; } -//---------------------------------------------------------------------------- std::string cmOutputConverter::Convert(RelativeRoot remote, const std::string& local, OutputFormat output, @@ -197,14 +191,12 @@ std::string cmOutputConverter::Convert(RelativeRoot remote, return this->ConvertToOutputFormat(remotePath, output); } -//---------------------------------------------------------------------------- static bool cmOutputConverterNotAbove(const char* a, const char* b) { return (cmSystemTools::ComparePath(a, b) || cmSystemTools::IsSubDirectory(a, b)); } -//---------------------------------------------------------------------------- std::string cmOutputConverter::ConvertToRelativePath(const std::vector<std::string>& local, const std::string& in_remote, @@ -308,7 +300,6 @@ cmOutputConverter::ConvertToRelativePath(const std::vector<std::string>& local, return relative; } -//---------------------------------------------------------------------------- static bool cmOutputConverterIsShellOperator(const std::string& str) { static std::set<std::string> shellOperators; @@ -330,7 +321,6 @@ static bool cmOutputConverterIsShellOperator(const std::string& str) return shellOperators.count(str) > 0; } -//---------------------------------------------------------------------------- std::string cmOutputConverter::EscapeForShell(const std::string& str, bool makeVars, bool forEcho, @@ -395,7 +385,6 @@ std::string cmOutputConverter::EscapeForShell(const std::string& str, return std::string(&arg[0]); } -//---------------------------------------------------------------------------- std::string cmOutputConverter::EscapeForCMake(const std::string& str) { // Always double-quote the argument to take care of most escapes. @@ -427,7 +416,6 @@ std::string cmOutputConverter::EscapeForCMake(const std::string& str) return result; } -//---------------------------------------------------------------------------- std::string cmOutputConverter::EscapeWindowsShellArgument(const char* arg, int shell_flags) { @@ -447,7 +435,6 @@ cmOutputConverter::EscapeWindowsShellArgument(const char* arg, int shell_flags) return result; } -//---------------------------------------------------------------------------- cmOutputConverter::FortranFormat cmOutputConverter::GetFortranFormat(const char* value) { @@ -482,7 +469,6 @@ cmState* cmOutputConverter::GetState() const return this->StateSnapshot.GetState(); } -//---------------------------------------------------------------------------- /* Notes: @@ -517,13 +503,11 @@ redirection character (for example, ^>, ^<, or ^| ). If you need to use the caret character itself (^), use two in a row (^^). */ -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__CharIsWhitespace(char c) { return ((c == ' ') || (c == '\t')); } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__CharNeedsQuotesOnUnix(char c) { return ((c == '\'') || (c == '`') || (c == ';') || (c == '#') || @@ -532,14 +516,12 @@ int cmOutputConverter::Shell__CharNeedsQuotesOnUnix(char c) (c == '*') || (c == '^') || (c == '\\')); } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__CharNeedsQuotesOnWindows(char c) { return ((c == '\'') || (c == '#') || (c == '&') || (c == '<') || (c == '>') || (c == '|') || (c == '^')); } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__CharNeedsQuotes(char c, int isUnix, int flags) { /* On Windows the built-in command shell echo never needs quotes. */ @@ -573,13 +555,11 @@ int cmOutputConverter::Shell__CharNeedsQuotes(char c, int isUnix, int flags) return 0; } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__CharIsMakeVariableName(char c) { return c && (c == '_' || isalpha(((int)c))); } -/*--------------------------------------------------------------------------*/ const char* cmOutputConverter::Shell__SkipMakeVariables(const char* c) { while(*c == '$' && *(c+1) == '(') @@ -624,7 +604,6 @@ flag later when we understand applications of this better. */ #define KWSYS_SYSTEM_SHELL_QUOTE_MAKE_VARIABLES 0 -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, int isUnix, int flags) { @@ -683,7 +662,6 @@ int cmOutputConverter::Shell__ArgumentNeedsQuotes(const char* in, return 0; } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell__GetArgumentSize(const char* in, int isUnix, int flags) { @@ -818,7 +796,6 @@ int cmOutputConverter::Shell__GetArgumentSize(const char* in, return size; } -/*--------------------------------------------------------------------------*/ char* cmOutputConverter::Shell__GetArgument(const char* in, char* out, int isUnix, int flags) { @@ -1036,28 +1013,24 @@ char* cmOutputConverter::Shell__GetArgument(const char* in, char* out, return out; } -/*--------------------------------------------------------------------------*/ char* cmOutputConverter::Shell_GetArgumentForWindows(const char* in, char* out, int flags) { return Shell__GetArgument(in, out, 0, flags); } -/*--------------------------------------------------------------------------*/ char* cmOutputConverter::Shell_GetArgumentForUnix(const char* in, char* out, int flags) { return Shell__GetArgument(in, out, 1, flags); } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell_GetArgumentSizeForWindows(const char* in, int flags) { return Shell__GetArgumentSize(in, 0, flags); } -/*--------------------------------------------------------------------------*/ int cmOutputConverter::Shell_GetArgumentSizeForUnix(const char* in, int flags) { diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index 54208ac..3b98c87 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmOutputRequiredFilesCommand.h" + #include "cmAlgorithms.h" #include <cmsys/FStream.hxx> diff --git a/Source/cmParseArgumentsCommand.cxx b/Source/cmParseArgumentsCommand.cxx index ca76c88..8d78921 100644 --- a/Source/cmParseArgumentsCommand.cxx +++ b/Source/cmParseArgumentsCommand.cxx @@ -12,9 +12,9 @@ ============================================================================*/ #include "cmParseArgumentsCommand.h" + #include "cmAlgorithms.h" -//---------------------------------------------------------------------------- bool cmParseArgumentsCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { diff --git a/Source/cmPathLabel.cxx b/Source/cmPathLabel.cxx index 67d56e1..f3b0864 100644 --- a/Source/cmPathLabel.cxx +++ b/Source/cmPathLabel.cxx @@ -12,7 +12,6 @@ #include "cmPathLabel.h" -//---------------------------------------------------------------------------- cmPathLabel::cmPathLabel(const std::string& label) : Label(label), Hash(0) { @@ -28,13 +27,11 @@ cmPathLabel::cmPathLabel(const std::string& label) this->Hash += ((this->Hash & 0x0001FFFF) << 15); } -//---------------------------------------------------------------------------- bool cmPathLabel::operator < (const cmPathLabel& l) const { return this->Hash < l.Hash; } -//---------------------------------------------------------------------------- bool cmPathLabel::operator == (const cmPathLabel& l) const { return this->Hash == l.Hash; diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 3eb19bb..b0ca675 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -1,13 +1,15 @@ #include "cmPolicies.h" -#include "cmake.h" + +#include "cmAlgorithms.h" #include "cmMakefile.h" #include "cmVersion.h" #include "cmVersionMacros.h" -#include "cmAlgorithms.h" +#include "cmake.h" +#include <assert.h> +#include <ctype.h> #include <map> -#include <set> #include <queue> -#include <assert.h> +#include <set> static bool stringToId(const char* input, cmPolicies::PolicyID& pid) { @@ -121,7 +123,6 @@ const char* idToShortDescription(cmPolicies::PolicyID id) return 0; } -//---------------------------------------------------------------------------- static void DiagnoseAncientPolicies( std::vector<cmPolicies::PolicyID> const& ancient, unsigned int majorVer, @@ -146,7 +147,6 @@ static void DiagnoseAncientPolicies( mf->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- static bool GetPolicyDefault(cmMakefile* mf, std::string const& policy, cmPolicies::PolicyStatus* defaultSetting) { @@ -176,7 +176,6 @@ static bool GetPolicyDefault(cmMakefile* mf, std::string const& policy, return true; } -//---------------------------------------------------------------------------- bool cmPolicies::ApplyPolicyVersion(cmMakefile *mf, const char *version) { @@ -340,7 +339,6 @@ cmPolicies::GetPolicyStatus(cmPolicies::PolicyID) return cmPolicies::WARN; } -//---------------------------------------------------------------------------- std::string cmPolicies::GetRequiredAlwaysPolicyError(cmPolicies::PolicyID id) { diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 5023055..dbea895 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -204,7 +204,7 @@ class cmPolicy; "Ninja requires custom command byproducts to be explicit.", \ 3, 3, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0059, \ - "Do no treat DEFINITIONS as a built-in directory property.", \ + "Do not treat DEFINITIONS as a built-in directory property.", \ 3, 3, 0, cmPolicies::WARN) \ SELECT(POLICY, CMP0060, \ "Link libraries by full path even in implicit directories.", \ diff --git a/Source/cmProcessTools.cxx b/Source/cmProcessTools.cxx index 15d9ed0..41f6e26 100644 --- a/Source/cmProcessTools.cxx +++ b/Source/cmProcessTools.cxx @@ -13,7 +13,6 @@ #include <cmsys/Process.h> -//---------------------------------------------------------------------------- void cmProcessTools::RunProcess(struct cmsysProcess_s* cp, OutputParser* out, OutputParser* err) { @@ -42,20 +41,17 @@ void cmProcessTools::RunProcess(struct cmsysProcess_s* cp, } -//---------------------------------------------------------------------------- cmProcessTools::LineParser::LineParser(char sep, bool ignoreCR): Log(0), Prefix(0), Separator(sep), LineEnd('\0'), IgnoreCR(ignoreCR) { } -//---------------------------------------------------------------------------- void cmProcessTools::LineParser::SetLog(std::ostream* log, const char* prefix) { this->Log = log; this->Prefix = prefix? prefix : ""; } -//---------------------------------------------------------------------------- bool cmProcessTools::LineParser::ProcessChunk(const char* first, int length) { const char* last = first + length; diff --git a/Source/cmProperty.cxx b/Source/cmProperty.cxx index ef57068..4cdf650 100644 --- a/Source/cmProperty.cxx +++ b/Source/cmProperty.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmProperty.h" + #include "cmSystemTools.h" void cmProperty::Set(const char *value) diff --git a/Source/cmPropertyDefinition.cxx b/Source/cmPropertyDefinition.cxx index 1af967c..9bb812e 100644 --- a/Source/cmPropertyDefinition.cxx +++ b/Source/cmPropertyDefinition.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmPropertyDefinition.h" + #include "cmSystemTools.h" void cmPropertyDefinition diff --git a/Source/cmPropertyDefinitionMap.cxx b/Source/cmPropertyDefinitionMap.cxx index 776fad1..cba2b5a 100644 --- a/Source/cmPropertyDefinitionMap.cxx +++ b/Source/cmPropertyDefinitionMap.cxx @@ -10,8 +10,9 @@ See the License for more information. ============================================================================*/ #include "cmPropertyDefinitionMap.h" -#include "cmSystemTools.h" + #include "cmDocumentationSection.h" +#include "cmSystemTools.h" void cmPropertyDefinitionMap ::DefineProperty(const std::string& name, cmProperty::ScopeType scope, diff --git a/Source/cmPropertyMap.cxx b/Source/cmPropertyMap.cxx index ef09dbc..2b25023 100644 --- a/Source/cmPropertyMap.cxx +++ b/Source/cmPropertyMap.cxx @@ -10,9 +10,10 @@ See the License for more information. ============================================================================*/ #include "cmPropertyMap.h" + +#include "cmState.h" #include "cmSystemTools.h" #include "cmake.h" -#include "cmState.h" #include <assert.h> diff --git a/Source/cmQtAutoGeneratorInitializer.cxx b/Source/cmQtAutoGeneratorInitializer.cxx index 4cab81f..9b2362a 100644 --- a/Source/cmQtAutoGeneratorInitializer.cxx +++ b/Source/cmQtAutoGeneratorInitializer.cxx @@ -25,6 +25,87 @@ # include "cmGlobalVisualStudioGenerator.h" #endif +static std::string GetAutogenTargetName( + cmGeneratorTarget const* target) +{ + std::string autogenTargetName = target->GetName(); + autogenTargetName += "_automoc"; + return autogenTargetName; +} + +static std::string GetAutogenTargetDir( + cmGeneratorTarget const* target) +{ + cmMakefile* makefile = target->Target->GetMakefile(); + std::string targetDir = makefile->GetCurrentBinaryDirectory(); + targetDir += makefile->GetCMakeInstance()->GetCMakeFilesDirectory(); + targetDir += "/"; + targetDir += GetAutogenTargetName(target); + targetDir += ".dir/"; + return targetDir; +} + +static std::string GetAutogenTargetBuildDir( + cmGeneratorTarget const* target) +{ + cmMakefile* makefile = target->Target->GetMakefile(); + std::string targetDir = makefile->GetCurrentBinaryDirectory(); + targetDir += "/"; + targetDir += GetAutogenTargetName(target); + targetDir += ".dir/"; + return targetDir; +} + +static std::string GetSourceRelativePath( + cmGeneratorTarget const* target, + const std::string& fileName) +{ + std::string pathRel; + // Test if the file is child to any of the known directories + { + const std::string fileNameReal = cmsys::SystemTools::GetRealPath(fileName); + std::string parentDirectory; + bool match ( false ); + { + std::string testDirs[4]; + { + cmMakefile* makefile = target->Target->GetMakefile(); + testDirs[0] = makefile->GetCurrentSourceDirectory(); + testDirs[1] = makefile->GetCurrentBinaryDirectory(); + testDirs[2] = makefile->GetHomeDirectory(); + testDirs[3] = makefile->GetHomeOutputDirectory(); + } + for(int ii=0; ii != sizeof(testDirs)/sizeof(std::string); ++ii ) + { + const ::std::string testDir = cmsys::SystemTools::GetRealPath( + testDirs[ii]); + if (!testDir.empty() + && cmsys::SystemTools::IsSubDirectory(fileNameReal, testDir) ) + { + parentDirectory = testDir; + match = true; + break; + } + } + } + // Use root as fallback parent directory + if (!match) + { + cmsys::SystemTools::SplitPathRootComponent(fileNameReal, + &parentDirectory); + } + pathRel = cmsys::SystemTools::RelativePath( + parentDirectory, cmsys::SystemTools::GetParentDirectory(fileNameReal)); + } + // Sanitize relative path + if (!pathRel.empty()) + { + pathRel += '/'; + cmSystemTools::ReplaceString(pathRel, "..", "__"); + } + return pathRel; +} + static void SetupSourceFiles(cmGeneratorTarget const* target, std::vector<std::string>& skipMoc, std::vector<std::string>& mocSources, @@ -61,13 +142,16 @@ static void SetupSourceFiles(cmGeneratorTarget const* target, if (ext == "qrc" && !cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTORCC"))) { + + std::string rcc_output_dir = GetAutogenTargetBuildDir(target); + rcc_output_dir += GetSourceRelativePath(target,absFile); + cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); + std::string basename = cmsys::SystemTools:: GetFilenameWithoutLastExtension(absFile); - std::string rcc_output_dir = target->GetSupportDirectory(); - cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); std::string rcc_output_file = rcc_output_dir; - rcc_output_file += "/qrc_" + basename + ".cpp"; + rcc_output_file += "qrc_" + basename + ".cpp"; makefile->AppendProperty("ADDITIONAL_MAKE_CLEAN_FILES", rcc_output_file.c_str(), false); makefile->GetOrCreateSource(rcc_output_file, true); @@ -433,26 +517,6 @@ static void MergeRccOptions(std::vector<std::string> &opts, opts.insert(opts.end(), extraOpts.begin(), extraOpts.end()); } -std::string GetAutogenTargetName( - cmGeneratorTarget const* target) -{ - std::string autogenTargetName = target->GetName(); - autogenTargetName += "_automoc"; - return autogenTargetName; -} - -std::string GetAutogenTargetDir( - cmGeneratorTarget const* target) -{ - cmMakefile* makefile = target->Target->GetMakefile(); - std::string targetDir = makefile->GetCurrentBinaryDirectory(); - targetDir += makefile->GetCMakeInstance()->GetCMakeFilesDirectory(); - targetDir += "/"; - targetDir += GetAutogenTargetName(target); - targetDir += ".dir/"; - return targetDir; -} - static void copyTargetProperty(cmTarget* destinationTarget, cmTarget* sourceTarget, const std::string& propertyName) @@ -528,8 +592,10 @@ static std::string ListQt5RccInputs(cmSourceFile* sf, &retVal, 0, cmSystemTools::OUTPUT_NONE); if (!result || retVal) { - std::cerr << "AUTOGEN: error: Rcc list process for " << sf->GetFullPath() - << " failed:\n" << rccStdOut << "\n" << rccStdErr << std::endl; + std::stringstream err; + err << "AUTOGEN: error: Rcc list process for " << sf->GetFullPath() + << " failed:\n" << rccStdOut << "\n" << rccStdErr << std::endl; + std::cerr << err.str(); return std::string(); } @@ -559,8 +625,10 @@ static std::string ListQt5RccInputs(cmSourceFile* sf, std::string::size_type pos = eline.find(searchString); if (pos == std::string::npos) { - std::cerr << "AUTOGEN: error: Rcc lists unparsable output " - << eline << std::endl; + std::stringstream err; + err << "AUTOGEN: error: Rcc lists unparsable output " + << eline << std::endl; + std::cerr << err.str(); return std::string(); } pos += searchString.length(); @@ -858,14 +926,18 @@ void cmQtAutoGeneratorInitializer::InitializeAutogenTarget( if (ext == "qrc" && !cmSystemTools::IsOn(sf->GetPropertyForUser("SKIP_AUTORCC"))) { - std::string basename = cmsys::SystemTools:: - GetFilenameWithoutLastExtension(absFile); - - std::string rcc_output_dir = target->GetSupportDirectory(); - cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); - std::string rcc_output_file = rcc_output_dir; - rcc_output_file += "/qrc_" + basename + ".cpp"; - rcc_output.push_back(rcc_output_file); + + { + std::string rcc_output_dir = GetAutogenTargetBuildDir(target); + rcc_output_dir += GetSourceRelativePath(target,absFile); + cmSystemTools::MakeDirectory(rcc_output_dir.c_str()); + + std::string basename = cmsys::SystemTools:: + GetFilenameWithoutLastExtension(absFile); + std::string rcc_output_file = rcc_output_dir; + rcc_output_file += "qrc_" + basename + ".cpp"; + rcc_output.push_back(rcc_output_file); + } if (!cmSystemTools::IsOn(sf->GetPropertyForUser("GENERATED"))) { diff --git a/Source/cmQtAutoGeneratorInitializer.h b/Source/cmQtAutoGeneratorInitializer.h index eaf140d..b411597 100644 --- a/Source/cmQtAutoGeneratorInitializer.h +++ b/Source/cmQtAutoGeneratorInitializer.h @@ -16,9 +16,9 @@ #include "cmStandardIncludes.h" +#include <map> #include <string> #include <vector> -#include <map> class cmSourceFile; class cmGeneratorTarget; diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index ebe08b0..a55a3f3 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -11,26 +11,26 @@ See the License for more information. ============================================================================*/ +#include "cmQtAutoGenerators.h" + +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" -#include "cmOutputConverter.h" #include "cmMakefile.h" -#include "cmSystemTools.h" +#include "cmOutputConverter.h" #include "cmState.h" -#include "cmAlgorithms.h" +#include "cmSystemTools.h" #include <sys/stat.h> -#include <cmsys/Terminal.h> -#include <cmsys/FStream.hxx> #include <assert.h> +#include <cmsys/FStream.hxx> +#include <cmsys/Terminal.h> #include <string.h> #if defined(__APPLE__) #include <unistd.h> #endif -#include "cmQtAutoGenerators.h" - static bool requiresMocing(const std::string& text, std::string ¯oName) { // this simple check is much much faster than the regexp @@ -410,9 +410,12 @@ cmQtAutoGenerators::WriteOldMocDefinitionsFile( void cmQtAutoGenerators::Init() { - this->OutMocCppFilename = this->Builddir; - this->OutMocCppFilename += this->TargetName; - this->OutMocCppFilename += ".cpp"; + this->TargetBuildSubDir = this->TargetName; + this->TargetBuildSubDir += ".dir/"; + + this->OutMocCppFilenameRel = this->TargetName; + this->OutMocCppFilenameRel += ".cpp"; + this->OutMocCppFilenameAbs = this->Builddir + this->OutMocCppFilenameRel; std::vector<std::string> cdefList; cmSystemTools::ExpandListArgument(this->MocCompileDefinitionsStr, cdefList); @@ -464,7 +467,7 @@ void cmQtAutoGenerators::Init() std::list<std::string>::iterator it = this->MocIncludes.begin(); while (it != this->MocIncludes.end()) { - if (this->StartsWith(*it, binDir)) + if (cmsys::SystemTools::StringStartsWith(*it, binDir.c_str())) { sortedMocIncludes.push_back(*it); it = this->MocIncludes.erase(it); @@ -477,7 +480,7 @@ void cmQtAutoGenerators::Init() it = this->MocIncludes.begin(); while (it != this->MocIncludes.end()) { - if (this->StartsWith(*it, srcDir)) + if (cmsys::SystemTools::StringStartsWith(*it, srcDir.c_str())) { sortedMocIncludes.push_back(*it); it = this->MocIncludes.erase(it); @@ -505,7 +508,7 @@ static std::string ReadAll(const std::string& filename) bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) { - if (!cmsys::SystemTools::FileExists(this->OutMocCppFilename.c_str()) + if (!cmsys::SystemTools::FileExists(this->OutMocCppFilenameAbs.c_str()) || (this->OldCompileSettingsStr != this->CurrentCompileSettingsStr)) { this->GenerateAll = true; @@ -546,7 +549,9 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) const std::string &absFilename = *it; if (this->Verbose) { - std::cout << "AUTOGEN: Checking " << absFilename << std::endl; + std::stringstream err; + err << "AUTOGEN: Checking " << absFilename << std::endl; + this->LogInfo(err.str()); } if (this->RelaxedMode) { @@ -574,7 +579,9 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) const std::string &absFilename = *it; if (this->Verbose) { - std::cout << "AUTOGEN: Checking " << absFilename << std::endl; + std::stringstream err; + err << "AUTOGEN: Checking " << absFilename << std::endl; + this->LogInfo(err.str()); } this->ParseForUic(absFilename, includedUis); } @@ -589,93 +596,37 @@ bool cmQtAutoGenerators::RunAutogen(cmMakefile* makefile) std::map<std::string, std::string> notIncludedMocs; this->ParseHeaders(headerFiles, includedMocs, notIncludedMocs, includedUis); - // run moc on all the moc's that are #included in source files - for(std::map<std::string, std::string>::const_iterator - it = includedMocs.begin(); - it != includedMocs.end(); - ++it) + if(!this->MocExecutable.empty()) { - this->GenerateMoc(it->first, it->second); + this->GenerateMocFiles ( includedMocs, notIncludedMocs ); } - for(std::map<std::string, std::vector<std::string> >::const_iterator - it = includedUis.begin(); - it != includedUis.end(); - ++it) + if(!this->UicExecutable.empty()) { - for (std::vector<std::string>::const_iterator nit = it->second.begin(); - nit != it->second.end(); - ++nit) - { - this->GenerateUi(it->first, *nit); - } + this->GenerateUiFiles ( includedUis ); } - if(!this->RccExecutable.empty()) { - this->GenerateQrc(); - } - - std::stringstream outStream; - outStream << "/* This file is autogenerated, do not edit*/\n"; - - bool automocCppChanged = false; - if (notIncludedMocs.empty()) - { - outStream << "enum some_compilers { need_more_than_nothing };\n"; - } - else - { - // run moc on the remaining headers and include them in - // the _automoc.cpp file - for(std::map<std::string, std::string>::const_iterator - it = notIncludedMocs.begin(); - it != notIncludedMocs.end(); - ++it) - { - bool mocSuccess = this->GenerateMoc(it->first, it->second); - if (mocSuccess) - { - automocCppChanged = true; - } - outStream << "#include \"" << it->second << "\"\n"; - } + this->GenerateQrcFiles(); } if (this->RunMocFailed) { - std::cerr << "moc failed..." << std::endl; + std::stringstream err; err << "moc failed..." << std::endl; + this->LogError(err.str()); return false; } - if (this->RunUicFailed) { - std::cerr << "uic failed..." << std::endl; + std::stringstream err; err << "uic failed..." << std::endl; + this->LogError(err.str()); return false; } if (this->RunRccFailed) { - std::cerr << "rcc failed..." << std::endl; + std::stringstream err; err << "rcc failed..." << std::endl; + this->LogError(err.str()); return false; } - outStream.flush(); - std::string automocSource = outStream.str(); - if (!automocCppChanged) - { - // compare contents of the _automoc.cpp file - const std::string oldContents = ReadAll(this->OutMocCppFilename); - if (oldContents == automocSource) - { - // nothing changed: don't touch the _automoc.cpp file - return true; - } - } - - // source file that includes all remaining moc files (_automoc.cpp file) - cmsys::ofstream outfile; - outfile.open(this->OutMocCppFilename.c_str(), - std::ios::trunc); - outfile << automocSource; - outfile.close(); return true; } @@ -693,8 +644,10 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, const std::string contentsString = ReadAll(absFilename); if (contentsString.empty()) { - std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: warning: " << absFilename << ": file is empty\n" + << std::endl; + this->LogError(err.str()); return; } this->ParseForUic(absFilename, contentsString, includedUis); @@ -726,7 +679,6 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, do { const std::string currentMoc = mocIncludeRegExp.match(1); - //std::cout << "found moc include: " << currentMoc << std::endl; std::string basename = cmsys::SystemTools:: GetFilenameWithoutLastExtension(currentMoc); @@ -759,20 +711,21 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, } else { - std::cerr << "AUTOGEN: error: " << absFilename << ": The file " - << "includes the moc file \"" << currentMoc << "\", " - << "but could not find header \"" << basename - << '{' << this->Join(headerExtensions, ',') << "}\" "; + std::stringstream err; + err << "AUTOGEN: error: " << absFilename << ": The file " + << "includes the moc file \"" << currentMoc << "\", " + << "but could not find header \"" << basename + << '{' << this->JoinExts(headerExtensions) << "}\" "; if (mocSubDir.empty()) { - std::cerr << "in " << absPath << "\n" << std::endl; + err << "in " << absPath << "\n" << std::endl; } else { - std::cerr << "neither in " << absPath - << " nor in " << mocSubDir << "\n" << std::endl; + err << "neither in " << absPath + << " nor in " << mocSubDir << "\n" << std::endl; } - + this->LogError(err.str()); ::exit(EXIT_FAILURE); } } @@ -790,34 +743,40 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, fileToMoc = headerToMoc; if ((requiresMoc==false) &&(basename==scannedFileBasename)) { - std::cerr << "AUTOGEN: warning: " << absFilename << ": The file " - "includes the moc file \"" << currentMoc << - "\", but does not contain a " << macroName - << " macro. Running moc on " - << "\"" << headerToMoc << "\" ! Include \"moc_" - << basename << ".cpp\" for a compatibility with " - "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: warning: " << absFilename << ": The file " + "includes the moc file \"" << currentMoc << + "\", but does not contain a " << macroName + << " macro. Running moc on " + << "\"" << headerToMoc << "\" ! Include \"moc_" + << basename << ".cpp\" for a compatibility with " + "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" + << std::endl; + this->LogError(err.str()); } else { - std::cerr << "AUTOGEN: warning: " << absFilename << ": The file " - "includes the moc file \"" << currentMoc << - "\" instead of \"moc_" << basename << ".cpp\". " - "Running moc on " - << "\"" << headerToMoc << "\" ! Include \"moc_" - << basename << ".cpp\" for compatibility with " - "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: warning: " << absFilename << ": The file " + "includes the moc file \"" << currentMoc << + "\" instead of \"moc_" << basename << ".cpp\". " + "Running moc on " + << "\"" << headerToMoc << "\" ! Include \"moc_" + << basename << ".cpp\" for compatibility with " + "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" + << std::endl; + this->LogError(err.str()); } } else { - std::cerr <<"AUTOGEN: error: " << absFilename << ": The file " - "includes the moc file \"" << currentMoc << - "\", which seems to be the moc file from a different " - "source file. CMake also could not find a matching " - "header.\n" << std::endl; + std::stringstream err; + err << "AUTOGEN: error: " << absFilename << ": The file " + "includes the moc file \"" << currentMoc << + "\", which seems to be the moc file from a different " + "source file. CMake also could not find a matching " + "header.\n" << std::endl; + this->LogError(err.str()); ::exit(EXIT_FAILURE); } } @@ -841,27 +800,33 @@ void cmQtAutoGenerators::ParseCppFile(const std::string& absFilename, if (mocUnderscoreIncluded == true) { // this is for KDE4 compatibility: - std::cerr << "AUTOGEN: warning: " << absFilename << ": The file " - << "contains a " << macroName << " macro, but does not " - "include " - << "\"" << scannedFileBasename << ".moc\", but instead " - "includes " - << "\"" << ownMocUnderscoreFile << "\". Running moc on " - << "\"" << absFilename << "\" ! Better include \"" - << scannedFileBasename << ".moc\" for compatibility with " - "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: warning: " << absFilename << ": The file " + << "contains a " << macroName << " macro, but does not " + "include " + << "\"" << scannedFileBasename << ".moc\", but instead " + "includes " + << "\"" << ownMocUnderscoreFile << "\". Running moc on " + << "\"" << absFilename << "\" ! Better include \"" + << scannedFileBasename << ".moc\" for compatibility with " + "strict mode (see CMAKE_AUTOMOC_RELAXED_MODE).\n" + << std::endl; + this->LogError(err.str()); + includedMocs[absFilename] = ownMocUnderscoreFile; includedMocs.erase(ownMocHeaderFile); } else { // otherwise always error out since it will not compile: - std::cerr << "AUTOGEN: error: " << absFilename << ": The file " - << "contains a " << macroName << " macro, but does not " - "include " - << "\"" << scannedFileBasename << ".moc\" !\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: error: " << absFilename << ": The file " + << "contains a " << macroName << " macro, but does not " + "include " + << "\"" << scannedFileBasename << ".moc\" !\n" + << std::endl; + this->LogError(err.str()); + ::exit(EXIT_FAILURE); } } @@ -881,8 +846,10 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, const std::string contentsString = ReadAll(absFilename); if (contentsString.empty()) { - std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: warning: " << absFilename << ": file is empty\n" + << std::endl; + this->LogError(err.str()); return; } this->ParseForUic(absFilename, contentsString, includedUis); @@ -934,20 +901,21 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, } else { - std::cerr << "AUTOGEN: error: " << absFilename << " The file " - << "includes the moc file \"" << currentMoc << "\", " - << "but could not find header \"" << basename - << '{' << this->Join(headerExtensions, ',') << "}\" "; + std::stringstream err; + err << "AUTOGEN: error: " << absFilename << " The file " + << "includes the moc file \"" << currentMoc << "\", " + << "but could not find header \"" << basename + << '{' << this->JoinExts(headerExtensions) << "}\" "; if (mocSubDir.empty()) { - std::cerr << "in " << absPath << "\n" << std::endl; + err << "in " << absPath << "\n" << std::endl; } else { - std::cerr << "neither in " << absPath - << " nor in " << mocSubDir << "\n" << std::endl; + err << "neither in " << absPath + << " nor in " << mocSubDir << "\n" << std::endl; } - + this->LogError(err.str()); ::exit(EXIT_FAILURE); } } @@ -955,12 +923,14 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, { if (basename != scannedFileBasename) { - std::cerr <<"AUTOGEN: error: " << absFilename << ": The file " - "includes the moc file \"" << currentMoc << - "\", which seems to be the moc file from a different " - "source file. This is not supported. " - "Include \"" << scannedFileBasename << ".moc\" to run " - "moc on this source file.\n" << std::endl; + std::stringstream err; + err << "AUTOGEN: error: " << absFilename << ": The file " + "includes the moc file \"" << currentMoc << + "\", which seems to be the moc file from a different " + "source file. This is not supported. " + "Include \"" << scannedFileBasename << ".moc\" to run " + "moc on this source file.\n" << std::endl; + this->LogError(err.str()); ::exit(EXIT_FAILURE); } dotMocIncluded = true; @@ -979,10 +949,12 @@ void cmQtAutoGenerators::StrictParseCppFile(const std::string& absFilename, macroName))) { // otherwise always error out since it will not compile: - std::cerr << "AUTOGEN: error: " << absFilename << ": The file " - << "contains a " << macroName << " macro, but does not include " - << "\"" << scannedFileBasename << ".moc\" !\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: error: " << absFilename << ": The file " + << "contains a " << macroName << " macro, but does not include " + << "\"" << scannedFileBasename << ".moc\" !\n" + << std::endl; + this->LogError(err.str()); ::exit(EXIT_FAILURE); } @@ -999,8 +971,10 @@ void cmQtAutoGenerators::ParseForUic(const std::string& absFilename, const std::string contentsString = ReadAll(absFilename); if (contentsString.empty()) { - std::cerr << "AUTOGEN: warning: " << absFilename << ": file is empty\n" - << std::endl; + std::stringstream err; + err << "AUTOGEN: warning: " << absFilename << ": file is empty\n" + << std::endl; + this->LogError(err.str()); return; } this->ParseForUic(absFilename, contentsString, includedUis); @@ -1101,17 +1075,19 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders, { if (this->Verbose) { - std::cout << "AUTOGEN: Checking " << headerName << std::endl; + std::stringstream err; + err << "AUTOGEN: Checking " << headerName << std::endl; + this->LogInfo(err.str()); } - const std::string basename = cmsys::SystemTools:: - GetFilenameWithoutLastExtension(headerName); - - const std::string currentMoc = "moc_" + basename + ".cpp"; std::string macroName; if (requiresMocing(contents, macroName)) { - //std::cout << "header contains Q_OBJECT macro"; + const std::string parentDir = this->TargetBuildSubDir + + this->SourceRelativePath ( headerName ); + const std::string basename = cmsys::SystemTools:: + GetFilenameWithoutLastExtension(headerName); + const std::string currentMoc = parentDir + "moc_" + basename + ".cpp"; notIncludedMocs[headerName] = currentMoc; } } @@ -1119,6 +1095,125 @@ void cmQtAutoGenerators::ParseHeaders(const std::set<std::string>& absHeaders, } } + +bool cmQtAutoGenerators::GenerateMocFiles( + const std::map<std::string, std::string>& includedMocs, + const std::map<std::string, std::string>& notIncludedMocs ) +{ + // look for name collisions + { + std::multimap<std::string, std::string> collisions; + // Test merged map of included and notIncluded + std::map<std::string, std::string> mergedMocs ( includedMocs ); + mergedMocs.insert ( notIncludedMocs.begin(), notIncludedMocs.end() ); + if( this->NameCollisionTest ( mergedMocs, collisions ) ) + { + std::stringstream err; + err << + "AUTOGEN: error: " + "The same moc file will be generated " + "from different sources." << std::endl << + "To avoid this error either" << std::endl << + "- rename the source files or" << std::endl << + "- do not include the (moc_NAME.cpp|NAME.moc) file" << std::endl; + this->NameCollisionLog ( err.str(), collisions ); + ::exit(EXIT_FAILURE); + } + } + + // generate moc files that are included by source files. + for(std::map<std::string, std::string>::const_iterator + it = includedMocs.begin(); it != includedMocs.end(); ++it) + { + if (!this->GenerateMoc(it->first, it->second)) + { + if (this->RunMocFailed) + { + return false; + } + } + } + + // generate moc files that are _not_ included by source files. + bool automocCppChanged = false; + for(std::map<std::string, std::string>::const_iterator + it = notIncludedMocs.begin(); it != notIncludedMocs.end(); ++it) + { + if (this->GenerateMoc(it->first, it->second)) + { + automocCppChanged = true; + } + else + { + if (this->RunMocFailed) + { + return false; + } + } + } + + // compose _automoc.cpp content + std::string automocSource; + { + std::stringstream outStream; + outStream << "/* This file is autogenerated, do not edit*/\n"; + if( notIncludedMocs.empty() ) + { + outStream << "enum some_compilers { need_more_than_nothing };\n"; + } + else + { + for(std::map<std::string, std::string>::const_iterator + it = notIncludedMocs.begin(); + it != notIncludedMocs.end(); + ++it) + { + outStream << "#include \"" << it->second << "\"\n"; + } + } + outStream.flush(); + automocSource = outStream.str(); + } + + // check if we even need to update _automoc.cpp + if (!automocCppChanged) + { + // compare contents of the _automoc.cpp file + const std::string oldContents = ReadAll(this->OutMocCppFilenameAbs); + if (oldContents == automocSource) + { + // nothing changed: don't touch the _automoc.cpp file + if (this->Verbose) + { + std::stringstream err; + err << "AUTOGEN: " << this->OutMocCppFilenameRel + << " still up to date" << std::endl; + this->LogInfo(err.str()); + } + return true; + } + } + + // actually write _automoc.cpp + { + std::string msg = "Generating moc compilation "; + msg += this->OutMocCppFilenameRel; + cmSystemTools::MakefileColorEcho(cmsysTerminal_Color_ForegroundBlue + |cmsysTerminal_Color_ForegroundBold, + msg.c_str(), true, this->ColorOutput); + } + { + cmsys::ofstream outfile; + outfile.open(this->OutMocCppFilenameAbs.c_str(), + std::ios::trunc); + outfile << automocSource; + outfile.close(); + } + + return true; +} + + bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, const std::string& mocFileName) { @@ -1136,7 +1231,7 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, cmsys::SystemTools::MakeDirectory(mocDir.c_str()); } - std::string msg = "Generating "; + std::string msg = "Generating moc source "; msg += mocFileName; cmSystemTools::MakefileColorEcho(cmsysTerminal_Color_ForegroundBlue |cmsysTerminal_Color_ForegroundBold, @@ -1159,13 +1254,7 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, if (this->Verbose) { - for(std::vector<std::string>::const_iterator cmdIt = command.begin(); - cmdIt != command.end(); - ++cmdIt) - { - std::cout << *cmdIt << " "; - } - std::cout << std::endl; + this->LogCommand(command); } std::string output; @@ -1174,8 +1263,10 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, &retVal); if (!result || retVal) { - std::cerr << "AUTOGEN: error: process for " << mocFilePath <<" failed:\n" - << output << std::endl; + std::stringstream err; + err << "AUTOGEN: error: process for " << mocFilePath <<" failed:\n" + << output << std::endl; + this->LogError(err.str()); this->RunMocFailed = true; cmSystemTools::RemoveFile(mocFilePath); } @@ -1184,28 +1275,91 @@ bool cmQtAutoGenerators::GenerateMoc(const std::string& sourceFile, return false; } + +bool cmQtAutoGenerators::GenerateUiFiles( + const std::map<std::string, std::vector<std::string> >& includedUis ) +{ + // single map with input / output names + std::map<std::string, std::map<std::string, std::string> > uiGenMap; + std::map<std::string, std::string> testMap; + for(std::map<std::string, std::vector<std::string> >::const_iterator + it = includedUis.begin(); it != includedUis.end(); ++it) + { + // source file path + std::string sourcePath = cmsys::SystemTools::GetFilenamePath(it->first); + sourcePath += '/'; + // insert new map for source file an use new reference + uiGenMap[it->first] = std::map<std::string, std::string>(); + std::map<std::string, std::string>& sourceMap = uiGenMap[it->first]; + for (std::vector<std::string>::const_iterator sit = it->second.begin(); + sit != it->second.end(); + ++sit) + { + const std::string & uiFileName = *sit; + const std::string uiInputFile = sourcePath + uiFileName + ".ui"; + const std::string uiOutputFile = "ui_" + uiFileName + ".h"; + sourceMap[uiInputFile] = uiOutputFile; + testMap[uiInputFile] = uiOutputFile; + } + } + + // look for name collisions + { + std::multimap<std::string, std::string> collisions; + if( this->NameCollisionTest ( testMap, collisions ) ) + { + std::stringstream err; + err << "AUTOGEN: error: The same ui_NAME.h file will be generated " + "from different sources." << std::endl + << "To avoid this error rename the source files." << std::endl; + this->NameCollisionLog ( err.str(), collisions ); + ::exit(EXIT_FAILURE); + } + } + testMap.clear(); + + // generate ui files + for(std::map<std::string, std::map<std::string, std::string> >:: + const_iterator it = uiGenMap.begin(); it != uiGenMap.end(); ++it) + { + for(std::map<std::string, std::string>::const_iterator + sit = it->second.begin(); + sit != it->second.end(); + ++sit) + { + if (!this->GenerateUi(it->first, sit->first, sit->second) ) + { + if (this->RunUicFailed) + { + return false; + } + } + } + } + + return true; +} + + bool cmQtAutoGenerators::GenerateUi(const std::string& realName, - const std::string& uiFileName) + const std::string& uiInputFile, + const std::string& uiOutputFile) { if (!cmsys::SystemTools::FileExists(this->Builddir.c_str(), false)) { cmsys::SystemTools::MakeDirectory(this->Builddir.c_str()); } - const std::string path = cmsys::SystemTools::GetFilenamePath( - realName) + '/'; - - std::string ui_output_file = "ui_" + uiFileName + ".h"; - std::string ui_input_file = path + uiFileName + ".ui"; + const ::std::string uiBuildFile = this->Builddir + uiOutputFile; int sourceNewerThanUi = 0; - bool success = cmsys::SystemTools::FileTimeCompare(ui_input_file, - this->Builddir + ui_output_file, + bool success = cmsys::SystemTools::FileTimeCompare(uiInputFile, + uiBuildFile, &sourceNewerThanUi); if (this->GenerateAll || !success || sourceNewerThanUi >= 0) { - std::string msg = "Generating "; - msg += ui_output_file; + std::string msg = "Generating ui header "; + msg += uiOutputFile; cmSystemTools::MakefileColorEcho(cmsysTerminal_Color_ForegroundBlue |cmsysTerminal_Color_ForegroundBold, msg.c_str(), true, this->ColorOutput); @@ -1215,7 +1369,7 @@ bool cmQtAutoGenerators::GenerateUi(const std::string& realName, std::vector<std::string> opts = this->UicTargetOptions; std::map<std::string, std::string>::const_iterator optionIt - = this->UicOptions.find(ui_input_file); + = this->UicOptions.find(uiInputFile); if (optionIt != this->UicOptions.end()) { std::vector<std::string> fileOpts; @@ -1226,18 +1380,12 @@ bool cmQtAutoGenerators::GenerateUi(const std::string& realName, command.insert(command.end(), opts.begin(), opts.end()); command.push_back("-o"); - command.push_back(this->Builddir + ui_output_file); - command.push_back(ui_input_file); + command.push_back(uiBuildFile); + command.push_back(uiInputFile); if (this->Verbose) { - for(std::vector<std::string>::const_iterator cmdIt = command.begin(); - cmdIt != command.end(); - ++cmdIt) - { - std::cout << *cmdIt << " "; - } - std::cout << std::endl; + this->LogCommand(command); } std::string output; int retVal = 0; @@ -1245,11 +1393,13 @@ bool cmQtAutoGenerators::GenerateUi(const std::string& realName, &retVal); if (!result || retVal) { - std::cerr << "AUTOUIC: error: process for " << ui_output_file << - " needed by\n \"" << realName << "\"\nfailed:\n" << output - << std::endl; + std::stringstream err; + err << "AUTOUIC: error: process for " << uiOutputFile << + " needed by\n \"" << realName << "\"\nfailed:\n" << output + << std::endl; + this->LogError(err.str()); this->RunUicFailed = true; - cmSystemTools::RemoveFile(ui_output_file); + cmSystemTools::RemoveFile(uiOutputFile); return false; } return true; @@ -1276,79 +1426,251 @@ bool cmQtAutoGenerators::InputFilesNewerThanQrc(const std::string& qrcFile, return false; } -bool cmQtAutoGenerators::GenerateQrc() +bool cmQtAutoGenerators::GenerateQrcFiles() { + // generate single map with input / output names + std::map<std::string, std::string> qrcGenMap; for(std::vector<std::string>::const_iterator si = this->RccSources.begin(); si != this->RccSources.end(); ++si) { - std::string ext = cmsys::SystemTools::GetFilenameLastExtension(*si); + const std::string ext = cmsys::SystemTools::GetFilenameLastExtension(*si); + if (ext == ".qrc") + { + std::string basename = cmsys::SystemTools:: + GetFilenameWithoutLastExtension(*si); + std::string qrcOutputFile = this->TargetBuildSubDir + + this->SourceRelativePath ( *si ) + + "qrc_" + basename + ".cpp"; + //std::string qrcOutputFile = "CMakeFiles/" + this->OriginTargetName + // + ".dir/qrc_" + basename + ".cpp"; + qrcGenMap[*si] = qrcOutputFile; + } + } + + // look for name collisions + { + std::multimap<std::string, std::string> collisions; + if( this->NameCollisionTest ( qrcGenMap, collisions ) ) + { + std::stringstream err; + err << "AUTOGEN: error: The same qrc_NAME.cpp file" + " will be generated from different sources." << std::endl + << "To avoid this error rename the source .qrc files." + << std::endl; + this->NameCollisionLog ( err.str(), collisions ); + ::exit(EXIT_FAILURE); + } + } - if (ext != ".qrc") + // generate qrc files + for(std::map<std::string, std::string>::const_iterator + si = qrcGenMap.begin(); si != qrcGenMap.end(); ++si) + { + if (!this->GenerateQrc( si->first, si->second)) { - continue; + if (this->RunRccFailed) + { + return false; + } } + } + return true; +} + +bool cmQtAutoGenerators::GenerateQrc ( + const std::string& qrcInputFile, + const std::string& qrcOutputFile ) +{ + std::string relName = this->SourceRelativePath ( qrcInputFile ); + cmSystemTools::ReplaceString(relName, "/", "_"); + relName += cmsys::SystemTools::GetFilenameWithoutLastExtension(qrcInputFile); + + const ::std::string qrcBuildFile = this->Builddir + qrcOutputFile; + + int sourceNewerThanQrc = 0; + bool generateQrc = !cmsys::SystemTools::FileTimeCompare(qrcInputFile, + qrcBuildFile, + &sourceNewerThanQrc); + generateQrc = generateQrc || (sourceNewerThanQrc >= 0); + generateQrc = generateQrc || this->InputFilesNewerThanQrc(qrcInputFile, + qrcBuildFile); + + if (this->GenerateAll || generateQrc) + { + std::string msg = "Generating qrc source "; + msg += qrcOutputFile; + cmSystemTools::MakefileColorEcho(cmsysTerminal_Color_ForegroundBlue + |cmsysTerminal_Color_ForegroundBold, + msg.c_str(), true, this->ColorOutput); + std::vector<std::string> command; command.push_back(this->RccExecutable); - std::string basename = cmsys::SystemTools:: - GetFilenameWithoutLastExtension(*si); - - std::string rcc_output_file = this->Builddir - + "CMakeFiles/" + this->OriginTargetName - + ".dir/qrc_" + basename + ".cpp"; + std::map<std::string, std::string>::const_iterator optionIt + = this->RccOptions.find(qrcInputFile); + if (optionIt != this->RccOptions.end()) + { + cmSystemTools::ExpandListArgument(optionIt->second, command); + } - int sourceNewerThanQrc = 0; - bool generateQrc = !cmsys::SystemTools::FileTimeCompare(*si, - rcc_output_file, - &sourceNewerThanQrc); - generateQrc = generateQrc || (sourceNewerThanQrc >= 0); - generateQrc = generateQrc || this->InputFilesNewerThanQrc(*si, - rcc_output_file); + command.push_back("-name"); + command.push_back(relName); + command.push_back("-o"); + command.push_back(qrcBuildFile); + command.push_back(qrcInputFile); - if (this->GenerateAll || generateQrc) + if (this->Verbose) { - std::map<std::string, std::string>::const_iterator optionIt - = this->RccOptions.find(*si); - if (optionIt != this->RccOptions.end()) - { - cmSystemTools::ExpandListArgument(optionIt->second, command); - } + this->LogCommand(command); + } + std::string output; + int retVal = 0; + bool result = cmSystemTools::RunSingleCommand(command, &output, &output, + &retVal); + if (!result || retVal) + { + std::stringstream err; + err << "AUTORCC: error: process for " << qrcOutputFile << + " failed:\n" << output << std::endl; + this->LogError(err.str()); + this->RunRccFailed = true; + cmSystemTools::RemoveFile(qrcBuildFile); + return false; + } + } + return true; +} - command.push_back("-name"); - command.push_back(basename); - command.push_back("-o"); - command.push_back(rcc_output_file); - command.push_back(*si); +std::string cmQtAutoGenerators::SourceRelativePath(const std::string& filename) +{ + std::string pathRel; - if (this->Verbose) + // Test if the file is child to any of the known directories + { + std::string fileNameReal = cmsys::SystemTools::GetRealPath( filename ); + std::string parentDirectory; + bool match ( false ); + { + const ::std::string* testDirs[4]; + testDirs[0] = &(this->Srcdir); + testDirs[1] = &(this->Builddir); + testDirs[2] = &(this->ProjectSourceDir); + testDirs[3] = &(this->ProjectBinaryDir); + for(int ii=0; ii != sizeof(testDirs)/sizeof(const ::std::string*); ++ii ) { - for(std::vector<std::string>::const_iterator cmdIt = command.begin(); - cmdIt != command.end(); - ++cmdIt) + const ::std::string testDir = cmsys::SystemTools::GetRealPath( + *(testDirs[ii])); + if (cmsys::SystemTools::IsSubDirectory(fileNameReal, + testDir) ) { - std::cout << *cmdIt << " "; + parentDirectory = testDir; + match = true; + break; } - std::cout << std::endl; } - std::string output; - int retVal = 0; - bool result = cmSystemTools::RunSingleCommand(command, &output, &output, - &retVal); - if (!result || retVal) + } + // Use root as fallback parent directory + if ( !match ) + { + cmsys::SystemTools::SplitPathRootComponent(fileNameReal, + &parentDirectory); + } + pathRel = cmsys::SystemTools::RelativePath( + parentDirectory, cmsys::SystemTools::GetParentDirectory(fileNameReal)); + } + + // Sanitize relative path + if (!pathRel.empty()) + { + pathRel += '/'; + cmSystemTools::ReplaceString(pathRel, "..", "__"); + } + return pathRel; +} + +/** + * @brief Collects name collisions as output/input pairs + * @return True if there were collisions + */ +bool cmQtAutoGenerators::NameCollisionTest( + const std::map<std::string, std::string >& genFiles, + std::multimap<std::string, std::string>& collisions) +{ + typedef std::map<std::string, std::string>::const_iterator Iter; + typedef std::map<std::string, std::string>::value_type VType; + for(Iter ait = genFiles.begin(); ait != genFiles.end(); ++ait ) + { + bool first_match ( true ); + for (Iter bit = (++Iter(ait)); bit != genFiles.end(); ++bit) + { + if(ait->second == bit->second) { - std::cerr << "AUTORCC: error: process for " << rcc_output_file << - " failed:\n" << output << std::endl; - this->RunRccFailed = true; - cmSystemTools::RemoveFile(rcc_output_file); - return false; + if (first_match) + { + if (collisions.find(ait->second) != collisions.end()) + { + // We already know of this collision from before + break; + } + collisions.insert(VType(ait->second, ait->first)); + first_match = false; + } + collisions.insert(VType(bit->second, bit->first)); } } } - return true; + + return !collisions.empty(); } -std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst, - char separator) +void cmQtAutoGenerators::NameCollisionLog( + const std::string& message, + const std::multimap<std::string, std::string>& collisions) +{ + typedef std::multimap<std::string, std::string>::const_iterator Iter; + + std::stringstream err; + // Add message + err << message; + // Append collision list + for(Iter it = collisions.begin(); it != collisions.end(); ++it ) + { + err << it->first << " : " << it->second << std::endl; + } + this->LogError(err.str()); +} + +void cmQtAutoGenerators::LogInfo(const std::string& message) +{ + std::cout << message; +} + +void cmQtAutoGenerators::LogError(const std::string& message) +{ + std::cerr << message; +} + +void cmQtAutoGenerators::LogCommand(const std::vector<std::string>& command) +{ + std::stringstream sbuf; + for(std::vector<std::string>::const_iterator cmdIt = command.begin(); + cmdIt != command.end(); + ++cmdIt) + { + if ( cmdIt != command.begin() ) + { + sbuf << " "; + } + sbuf << *cmdIt; + } + if ( !sbuf.str().empty() ) + { + sbuf << std::endl; + this->LogInfo ( sbuf.str() ); + } +} + +std::string cmQtAutoGenerators::JoinExts(const std::vector<std::string>& lst) { if (lst.empty()) { @@ -1356,30 +1678,17 @@ std::string cmQtAutoGenerators::Join(const std::vector<std::string>& lst, } std::string result; + std::string separator = ","; for (std::vector<std::string>::const_iterator it = lst.begin(); it != lst.end(); ++it) { - result += "." + (*it) + separator; + if(it != lst.begin()) + { + result += separator; + } + result += '.' + (*it); } result.erase(result.end() - 1); return result; } - - -bool cmQtAutoGenerators::StartsWith(const std::string& str, - const std::string& with) -{ - return (str.substr(0, with.length()) == with); -} - - -bool cmQtAutoGenerators::EndsWith(const std::string& str, - const std::string& with) -{ - if (with.length() > (str.length())) - { - return false; - } - return (str.substr(str.length() - with.length(), with.length()) == with); -} diff --git a/Source/cmQtAutoGenerators.h b/Source/cmQtAutoGenerators.h index ab7b6ed..315e915 100644 --- a/Source/cmQtAutoGenerators.h +++ b/Source/cmQtAutoGenerators.h @@ -14,10 +14,12 @@ #ifndef cmQtAutoGenerators_h #define cmQtAutoGenerators_h +#include "cmStandardIncludes.h" + #include <list> -#include <vector> -#include <string> #include <map> +#include <string> +#include <vector> class cmMakefile; @@ -39,10 +41,19 @@ private: std::string MakeCompileSettingsString(cmMakefile* makefile); bool RunAutogen(cmMakefile* makefile); + bool GenerateMocFiles( + const std::map<std::string, std::string>& includedMocs, + const std::map<std::string, std::string>& notIncludedMocs); bool GenerateMoc(const std::string& sourceFile, const std::string& mocFileName); - bool GenerateUi(const std::string& realName, const std::string& uiFileName); - bool GenerateQrc(); + bool GenerateUiFiles( + const std::map<std::string, std::vector<std::string> >& includedUis ); + bool GenerateUi(const std::string& realName, + const std::string& uiInputFile, + const std::string& uiOutputFile ); + bool GenerateQrcFiles(); + bool GenerateQrc(const std::string& qrcInputFile, + const std::string& qrcOutputFile); void ParseCppFile(const std::string& absFilename, const std::vector<std::string>& headerExtensions, std::map<std::string, std::string>& includedMocs, @@ -69,9 +80,18 @@ private: void Init(); - std::string Join(const std::vector<std::string>& lst, char separator); - bool EndsWith(const std::string& str, const std::string& with); - bool StartsWith(const std::string& str, const std::string& with); + std::string SourceRelativePath(const std::string& filename); + + bool NameCollisionTest(const std::map<std::string, std::string >& genFiles, + std::multimap<std::string, std::string>& collisions ); + void NameCollisionLog( + const std::string& message, + const std::multimap<std::string, std::string>& collisions ); + + void LogInfo(const std::string& message); + void LogError(const std::string& message); + void LogCommand(const std::vector<std::string>& command); + std::string JoinExts(const std::vector<std::string>& lst); static void MergeUicOptions(std::vector<std::string> &opts, const std::vector<std::string> &fileOpts, bool isQt5); @@ -101,7 +121,9 @@ private: std::string CurrentCompileSettingsStr; std::string OldCompileSettingsStr; - std::string OutMocCppFilename; + std::string TargetBuildSubDir; + std::string OutMocCppFilenameRel; + std::string OutMocCppFilenameAbs; std::list<std::string> MocIncludes; std::list<std::string> MocDefinitions; std::vector<std::string> MocOptions; diff --git a/Source/cmRST.cxx b/Source/cmRST.cxx index cb61ed9..ad545aa 100644 --- a/Source/cmRST.cxx +++ b/Source/cmRST.cxx @@ -11,13 +11,12 @@ ============================================================================*/ #include "cmRST.h" -#include "cmSystemTools.h" #include "cmAlgorithms.h" +#include "cmSystemTools.h" #include "cmVersion.h" #include <cmsys/FStream.hxx> #include <ctype.h> -//---------------------------------------------------------------------------- cmRST::cmRST(std::ostream& os, std::string const& docroot): OS(os), DocRoot(docroot), @@ -46,12 +45,12 @@ cmRST::cmRST(std::ostream& os, std::string const& docroot): "):`(<*([^`<]|[^` \t]<)*)([ \t]+<[^`]*>)?`"), Substitution("(^|[^A-Za-z0-9_])" "((\\|[^| \t\r\n]([^|\r\n]*[^| \t\r\n])?\\|)(__|_|))" - "([^A-Za-z0-9_]|$)") + "([^A-Za-z0-9_]|$)"), + TocTreeLink("^.*[ \t]+<([^>]+)>$") { this->Replace["|release|"] = cmVersion::GetCMakeVersion(); } -//---------------------------------------------------------------------------- bool cmRST::ProcessFile(std::string const& fname, bool isModule) { cmsys::ifstream fin(fname.c_str()); @@ -72,7 +71,6 @@ bool cmRST::ProcessFile(std::string const& fname, bool isModule) return false; } -//---------------------------------------------------------------------------- void cmRST::ProcessRST(std::istream& is) { std::string line; @@ -83,7 +81,6 @@ void cmRST::ProcessRST(std::istream& is) this->Reset(); } -//---------------------------------------------------------------------------- void cmRST::ProcessModule(std::istream& is) { std::string line; @@ -147,7 +144,6 @@ void cmRST::ProcessModule(std::istream& is) } } -//---------------------------------------------------------------------------- void cmRST::Reset() { if(!this->MarkupLines.empty()) @@ -168,7 +164,6 @@ void cmRST::Reset() this->MarkupLines.clear(); } -//---------------------------------------------------------------------------- void cmRST::ProcessLine(std::string const& line) { bool lastLineEndedInColonColon = this->LastLineEndedInColonColon; @@ -276,14 +271,12 @@ void cmRST::ProcessLine(std::string const& line) } } -//---------------------------------------------------------------------------- void cmRST::NormalLine(std::string const& line) { this->Reset(); this->OutputLine(line, true); } -//---------------------------------------------------------------------------- void cmRST::OutputLine(std::string const& line_in, bool inlineMarkup) { if(this->OutputLinePending) @@ -318,7 +311,6 @@ void cmRST::OutputLine(std::string const& line_in, bool inlineMarkup) } } -//---------------------------------------------------------------------------- std::string cmRST::ReplaceSubstitutions(std::string const& line) { std::string out; @@ -348,7 +340,6 @@ std::string cmRST::ReplaceSubstitutions(std::string const& line) return out; } -//---------------------------------------------------------------------------- void cmRST::OutputMarkupLines(bool inlineMarkup) { for(std::vector<std::string>::iterator i = this->MarkupLines.begin(); @@ -364,7 +355,6 @@ void cmRST::OutputMarkupLines(bool inlineMarkup) this->OutputLinePending = true; } -//---------------------------------------------------------------------------- bool cmRST::ProcessInclude(std::string file, IncludeType type) { bool found = false; @@ -395,25 +385,21 @@ bool cmRST::ProcessInclude(std::string file, IncludeType type) return found; } -//---------------------------------------------------------------------------- void cmRST::ProcessDirectiveParsedLiteral() { this->OutputMarkupLines(true); } -//---------------------------------------------------------------------------- void cmRST::ProcessDirectiveLiteralBlock() { this->OutputMarkupLines(false); } -//---------------------------------------------------------------------------- void cmRST::ProcessDirectiveCodeBlock() { this->OutputMarkupLines(false); } -//---------------------------------------------------------------------------- void cmRST::ProcessDirectiveReplace() { // Record markup lines as replacement text. @@ -422,21 +408,28 @@ void cmRST::ProcessDirectiveReplace() this->ReplaceName = ""; } -//---------------------------------------------------------------------------- void cmRST::ProcessDirectiveTocTree() { // Process documents referenced by toctree directive. for(std::vector<std::string>::iterator i = this->MarkupLines.begin(); i != this->MarkupLines.end(); ++i) { - if(!i->empty() && i->find_first_of(":") == i->npos) + std::string const& line = *i; + if (!line.empty() && line[0] != ':') { - this->ProcessInclude(*i + ".rst", IncludeTocTree); + if (this->TocTreeLink.find(line)) + { + std::string const& link = this->TocTreeLink.match(1); + this->ProcessInclude(link + ".rst", IncludeTocTree); + } + else + { + this->ProcessInclude(line + ".rst", IncludeTocTree); + } } } } -//---------------------------------------------------------------------------- void cmRST::UnindentLines(std::vector<std::string>& lines) { // Remove the common indentation from the second and later lines. diff --git a/Source/cmRST.h b/Source/cmRST.h index b9b2366..098afab 100644 --- a/Source/cmRST.h +++ b/Source/cmRST.h @@ -89,6 +89,7 @@ private: cmsys::RegularExpression ModuleRST; cmsys::RegularExpression CMakeRole; cmsys::RegularExpression Substitution; + cmsys::RegularExpression TocTreeLink; std::vector<std::string> MarkupLines; std::string DocDir; diff --git a/Source/cmScriptGenerator.cxx b/Source/cmScriptGenerator.cxx index e44b236..3b8a20e 100644 --- a/Source/cmScriptGenerator.cxx +++ b/Source/cmScriptGenerator.cxx @@ -13,7 +13,6 @@ #include "cmSystemTools.h" -//---------------------------------------------------------------------------- cmScriptGenerator ::cmScriptGenerator(const std::string& config_var, std::vector<std::string> const& configurations): @@ -25,13 +24,11 @@ cmScriptGenerator { } -//---------------------------------------------------------------------------- cmScriptGenerator ::~cmScriptGenerator() { } -//---------------------------------------------------------------------------- void cmScriptGenerator ::Generate(std::ostream& os, const std::string& config, @@ -44,7 +41,6 @@ cmScriptGenerator this->ConfigurationTypes = 0; } -//---------------------------------------------------------------------------- static void cmScriptGeneratorEncodeConfig(const std::string& config, std::string& result) { @@ -71,7 +67,6 @@ static void cmScriptGeneratorEncodeConfig(const std::string& config, } } -//---------------------------------------------------------------------------- std::string cmScriptGenerator::CreateConfigTest(const std::string& config) { @@ -86,7 +81,6 @@ cmScriptGenerator::CreateConfigTest(const std::string& config) return result; } -//---------------------------------------------------------------------------- std::string cmScriptGenerator::CreateConfigTest(std::vector<std::string> const& configs) { @@ -105,7 +99,6 @@ cmScriptGenerator::CreateConfigTest(std::vector<std::string> const& configs) return result; } -//---------------------------------------------------------------------------- void cmScriptGenerator::GenerateScript(std::ostream& os) { // Track indentation. @@ -115,7 +108,6 @@ void cmScriptGenerator::GenerateScript(std::ostream& os) this->GenerateScriptConfigs(os, indent); } -//---------------------------------------------------------------------------- void cmScriptGenerator::GenerateScriptConfigs(std::ostream& os, Indent const& indent) { @@ -129,7 +121,6 @@ void cmScriptGenerator::GenerateScriptConfigs(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmScriptGenerator::GenerateScriptActions(std::ostream& os, Indent const& indent) { @@ -141,7 +132,6 @@ void cmScriptGenerator::GenerateScriptActions(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmScriptGenerator::GenerateScriptForConfig(std::ostream&, const std::string&, Indent const&) @@ -149,7 +139,6 @@ void cmScriptGenerator::GenerateScriptForConfig(std::ostream&, // No actions for this generator. } -//---------------------------------------------------------------------------- bool cmScriptGenerator::GeneratesForConfig(const std::string& config) { // If this is not a configuration-specific rule then we install. @@ -173,7 +162,6 @@ bool cmScriptGenerator::GeneratesForConfig(const std::string& config) return false; } -//---------------------------------------------------------------------------- void cmScriptGenerator::GenerateScriptActionsOnce(std::ostream& os, Indent const& indent) { @@ -192,7 +180,6 @@ void cmScriptGenerator::GenerateScriptActionsOnce(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmScriptGenerator::GenerateScriptActionsPerConfig(std::ostream& os, Indent const& indent) { diff --git a/Source/cmSearchPath.cxx b/Source/cmSearchPath.cxx index c9cc817..28798c1 100644 --- a/Source/cmSearchPath.cxx +++ b/Source/cmSearchPath.cxx @@ -9,23 +9,20 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ - #include "cmSearchPath.h" -#include "cmFindCommon.h" + #include "cmAlgorithms.h" +#include "cmFindCommon.h" -//---------------------------------------------------------------------------- cmSearchPath::cmSearchPath(cmFindCommon* findCmd) : FC(findCmd) { } -//---------------------------------------------------------------------------- cmSearchPath::~cmSearchPath() { } -//---------------------------------------------------------------------------- void cmSearchPath::ExtractWithout(const std::set<std::string>& ignore, std::vector<std::string>& outPaths, @@ -45,13 +42,11 @@ void cmSearchPath::ExtractWithout(const std::set<std::string>& ignore, } } -//---------------------------------------------------------------------------- void cmSearchPath::AddPath(const std::string& path) { this->AddPathInternal(path); } -//---------------------------------------------------------------------------- void cmSearchPath::AddUserPath(const std::string& path) { assert(this->FC != NULL); @@ -90,7 +85,6 @@ void cmSearchPath::AddUserPath(const std::string& path) } } -//---------------------------------------------------------------------------- void cmSearchPath::AddCMakePath(const std::string& variable) { assert(this->FC != NULL); @@ -110,7 +104,6 @@ void cmSearchPath::AddCMakePath(const std::string& variable) } } -//---------------------------------------------------------------------------- void cmSearchPath::AddEnvPath(const std::string& variable) { std::vector<std::string> expanded; @@ -122,7 +115,6 @@ void cmSearchPath::AddEnvPath(const std::string& variable) } } -//---------------------------------------------------------------------------- void cmSearchPath::AddCMakePrefixPath(const std::string& variable) { assert(this->FC != NULL); @@ -138,7 +130,6 @@ void cmSearchPath::AddCMakePrefixPath(const std::string& variable) } } -//---------------------------------------------------------------------------- static std::string cmSearchPathStripBin(std::string const& s) { // If the path is a PREFIX/bin case then add its parent instead. @@ -153,7 +144,6 @@ static std::string cmSearchPathStripBin(std::string const& s) } } -//---------------------------------------------------------------------------- void cmSearchPath::AddEnvPrefixPath(const std::string& variable, bool stripBin) { std::vector<std::string> expanded; @@ -166,7 +156,6 @@ void cmSearchPath::AddEnvPrefixPath(const std::string& variable, bool stripBin) this->AddPrefixPaths(expanded); } -//---------------------------------------------------------------------------- void cmSearchPath::AddSuffixes(const std::vector<std::string>& suffixes) { std::vector<std::string> inPaths; @@ -199,7 +188,6 @@ void cmSearchPath::AddSuffixes(const std::vector<std::string>& suffixes) } } -//---------------------------------------------------------------------------- void cmSearchPath::AddPrefixPaths(const std::vector<std::string>& paths, const char *base) { @@ -254,7 +242,6 @@ void cmSearchPath::AddPrefixPaths(const std::vector<std::string>& paths, } } -//---------------------------------------------------------------------------- void cmSearchPath::AddPathInternal(const std::string& path, const char *base) { assert(this->FC != NULL); diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 17ad475..a03f608 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -10,12 +10,12 @@ See the License for more information. ============================================================================*/ #include "cmSetPropertyCommand.h" + +#include "cmSetSourceFilesPropertiesCommand.h" #include "cmSetTargetPropertiesCommand.h" #include "cmSetTestsPropertiesCommand.h" -#include "cmSetSourceFilesPropertiesCommand.h" -//---------------------------------------------------------------------------- cmSetPropertyCommand::cmSetPropertyCommand() { this->AppendMode = false; @@ -23,7 +23,6 @@ cmSetPropertyCommand::cmSetPropertyCommand() this->Remove = true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -148,7 +147,6 @@ bool cmSetPropertyCommand return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleGlobalMode() { if(!this->Names.empty()) @@ -177,7 +175,6 @@ bool cmSetPropertyCommand::HandleGlobalMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleDirectoryMode() { if(this->Names.size() > 1) @@ -236,7 +233,6 @@ bool cmSetPropertyCommand::HandleDirectoryMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleTargetMode() { for(std::set<std::string>::const_iterator ni = this->Names.begin(); @@ -267,7 +263,6 @@ bool cmSetPropertyCommand::HandleTargetMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleTarget(cmTarget* target) { // Set or append the property. @@ -292,7 +287,6 @@ bool cmSetPropertyCommand::HandleTarget(cmTarget* target) return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleSourceMode() { for(std::set<std::string>::const_iterator ni = this->Names.begin(); @@ -317,7 +311,6 @@ bool cmSetPropertyCommand::HandleSourceMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleSource(cmSourceFile* sf) { // Set or append the property. @@ -339,7 +332,6 @@ bool cmSetPropertyCommand::HandleSource(cmSourceFile* sf) return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleTestMode() { // Look for tests with all names given. @@ -378,7 +370,6 @@ bool cmSetPropertyCommand::HandleTestMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleTest(cmTest* test) { // Set or append the property. @@ -400,7 +391,6 @@ bool cmSetPropertyCommand::HandleTest(cmTest* test) return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleCacheMode() { if(this->PropertyName == "ADVANCED") @@ -465,7 +455,6 @@ bool cmSetPropertyCommand::HandleCacheMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleCacheEntry(std::string const& cacheKey) { // Set or append the property. @@ -489,7 +478,6 @@ bool cmSetPropertyCommand::HandleCacheEntry(std::string const& cacheKey) return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleInstallMode() { cmake* cm = this->Makefile->GetCMakeInstance(); @@ -516,7 +504,6 @@ bool cmSetPropertyCommand::HandleInstallMode() return true; } -//---------------------------------------------------------------------------- bool cmSetPropertyCommand::HandleInstall(cmInstalledFile* file) { // Set or append the property. diff --git a/Source/cmSetTargetPropertiesCommand.cxx b/Source/cmSetTargetPropertiesCommand.cxx index b1c13ac..b4c58d4 100644 --- a/Source/cmSetTargetPropertiesCommand.cxx +++ b/Source/cmSetTargetPropertiesCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmSetTargetPropertiesCommand.h" + #include "cmGlobalGenerator.h" // cmSetTargetPropertiesCommand diff --git a/Source/cmSetTestsPropertiesCommand.cxx b/Source/cmSetTestsPropertiesCommand.cxx index 53dc5a8..70c34c4 100644 --- a/Source/cmSetTestsPropertiesCommand.cxx +++ b/Source/cmSetTestsPropertiesCommand.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include "cmSetTestsPropertiesCommand.h" -#include "cmake.h" #include "cmTest.h" +#include "cmake.h" // cmSetTestsPropertiesCommand bool cmSetTestsPropertiesCommand diff --git a/Source/cmSourceFile.cxx b/Source/cmSourceFile.cxx index a9ac549..b31bc74 100644 --- a/Source/cmSourceFile.cxx +++ b/Source/cmSourceFile.cxx @@ -16,7 +16,6 @@ #include "cmSystemTools.h" #include "cmake.h" -//---------------------------------------------------------------------------- cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name): Location(mf, name) { @@ -26,13 +25,11 @@ cmSourceFile::cmSourceFile(cmMakefile* mf, const std::string& name): cmSystemTools::GetFilenameLastExtension(this->Location.GetName())); } -//---------------------------------------------------------------------------- cmSourceFile::~cmSourceFile() { this->SetCustomCommand(0); } -//---------------------------------------------------------------------------- std::string const& cmSourceFile::GetExtension() const { return this->Extension; @@ -40,19 +37,16 @@ std::string const& cmSourceFile::GetExtension() const const std::string cmSourceFile::propLANGUAGE = "LANGUAGE"; -//---------------------------------------------------------------------------- void cmSourceFile::SetObjectLibrary(std::string const& objlib) { this->ObjectLibrary = objlib; } -//---------------------------------------------------------------------------- std::string cmSourceFile::GetObjectLibrary() const { return this->ObjectLibrary; } -//---------------------------------------------------------------------------- std::string cmSourceFile::GetLanguage() { // If the language was set explicitly by the user then use it. @@ -89,7 +83,6 @@ std::string cmSourceFile::GetLanguage() return static_cast<cmSourceFile const*>(this)->GetLanguage(); } -//---------------------------------------------------------------------------- std::string cmSourceFile::GetLanguage() const { // If the language was set explicitly by the user then use it. @@ -108,13 +101,11 @@ std::string cmSourceFile::GetLanguage() const return ""; } -//---------------------------------------------------------------------------- cmSourceFileLocation const& cmSourceFile::GetLocation() const { return this->Location; } -//---------------------------------------------------------------------------- std::string const& cmSourceFile::GetFullPath(std::string* error) { if(this->FullPath.empty()) @@ -127,13 +118,11 @@ std::string const& cmSourceFile::GetFullPath(std::string* error) return this->FullPath; } -//---------------------------------------------------------------------------- std::string const& cmSourceFile::GetFullPath() const { return this->FullPath; } -//---------------------------------------------------------------------------- bool cmSourceFile::FindFullPath(std::string* error) { // If thie method has already failed once do not try again. @@ -232,7 +221,6 @@ bool cmSourceFile::FindFullPath(std::string* error) return false; } -//---------------------------------------------------------------------------- bool cmSourceFile::TryFullPath(const std::string& path, const std::string& ext) { @@ -250,7 +238,6 @@ bool cmSourceFile::TryFullPath(const std::string& path, return false; } -//---------------------------------------------------------------------------- void cmSourceFile::CheckExtension() { // Compute the extension. @@ -277,7 +264,6 @@ void cmSourceFile::CheckExtension() } } -//---------------------------------------------------------------------------- void cmSourceFile::CheckLanguage(std::string const& ext) { // Try to identify the source file language from the extension. @@ -290,13 +276,11 @@ void cmSourceFile::CheckLanguage(std::string const& ext) } } -//---------------------------------------------------------------------------- bool cmSourceFile::Matches(cmSourceFileLocation const& loc) { return this->Location.Matches(loc); } -//---------------------------------------------------------------------------- void cmSourceFile::SetProperty(const std::string& prop, const char* value) { this->Properties.SetProperty(prop, value); @@ -311,14 +295,12 @@ void cmSourceFile::SetProperty(const std::string& prop, const char* value) } } -//---------------------------------------------------------------------------- void cmSourceFile::AppendProperty(const std::string& prop, const char* value, bool asString) { this->Properties.AppendProperty(prop, value, asString); } -//---------------------------------------------------------------------------- const char* cmSourceFile::GetPropertyForUser(const std::string& prop) { // This method is a consequence of design history and backwards @@ -345,7 +327,6 @@ const char* cmSourceFile::GetPropertyForUser(const std::string& prop) return this->GetProperty(prop); } -//---------------------------------------------------------------------------- const char* cmSourceFile::GetProperty(const std::string& prop) const { // Check for computed properties. @@ -376,25 +357,21 @@ const char* cmSourceFile::GetProperty(const std::string& prop) const return retVal; } -//---------------------------------------------------------------------------- bool cmSourceFile::GetPropertyAsBool(const std::string& prop) const { return cmSystemTools::IsOn(this->GetProperty(prop)); } -//---------------------------------------------------------------------------- cmCustomCommand* cmSourceFile::GetCustomCommand() { return this->CustomCommand; } -//---------------------------------------------------------------------------- cmCustomCommand const* cmSourceFile::GetCustomCommand() const { return this->CustomCommand; } -//---------------------------------------------------------------------------- void cmSourceFile::SetCustomCommand(cmCustomCommand* cc) { cmCustomCommand* old = this->CustomCommand; diff --git a/Source/cmSourceFile.h b/Source/cmSourceFile.h index 1433b54..e5e2ab9 100644 --- a/Source/cmSourceFile.h +++ b/Source/cmSourceFile.h @@ -13,6 +13,7 @@ #define cmSourceFile_h #include "cmSourceFileLocation.h" + #include "cmCustomCommand.h" #include "cmPropertyMap.h" diff --git a/Source/cmSourceFileLocation.cxx b/Source/cmSourceFileLocation.cxx index 00d5d6a..6e47402 100644 --- a/Source/cmSourceFileLocation.cxx +++ b/Source/cmSourceFileLocation.cxx @@ -11,21 +11,19 @@ ============================================================================*/ #include "cmSourceFileLocation.h" -#include "cmMakefile.h" +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" +#include "cmMakefile.h" #include "cmSystemTools.h" -#include "cmAlgorithms.h" #include "assert.h" -//---------------------------------------------------------------------------- cmSourceFileLocation::cmSourceFileLocation() : Makefile(0), AmbiguousDirectory(true), AmbiguousExtension(true) { } -//---------------------------------------------------------------------------- cmSourceFileLocation::cmSourceFileLocation(const cmSourceFileLocation& loc) : Makefile(loc.Makefile) { @@ -35,7 +33,6 @@ cmSourceFileLocation::cmSourceFileLocation(const cmSourceFileLocation& loc) this->Name = loc.Name; } -//---------------------------------------------------------------------------- cmSourceFileLocation& cmSourceFileLocation::operator=(const cmSourceFileLocation& loc) { @@ -52,7 +49,6 @@ cmSourceFileLocation::operator=(const cmSourceFileLocation& loc) return *this; } -//---------------------------------------------------------------------------- cmSourceFileLocation ::cmSourceFileLocation(cmMakefile const* mf, const std::string& name) : Makefile(mf) @@ -69,7 +65,6 @@ cmSourceFileLocation this->UpdateExtension(name); } -//---------------------------------------------------------------------------- void cmSourceFileLocation::Update(cmSourceFileLocation const& loc) { if(this->AmbiguousDirectory && !loc.AmbiguousDirectory) @@ -84,7 +79,6 @@ void cmSourceFileLocation::Update(cmSourceFileLocation const& loc) } } -//---------------------------------------------------------------------------- void cmSourceFileLocation::DirectoryUseSource() { assert(this->Makefile); @@ -97,7 +91,6 @@ void cmSourceFileLocation::DirectoryUseSource() } } -//---------------------------------------------------------------------------- void cmSourceFileLocation::DirectoryUseBinary() { assert(this->Makefile); @@ -110,7 +103,6 @@ void cmSourceFileLocation::DirectoryUseBinary() } } -//---------------------------------------------------------------------------- void cmSourceFileLocation::UpdateExtension(const std::string& name) { assert(this->Makefile); @@ -168,7 +160,6 @@ void cmSourceFileLocation::UpdateExtension(const std::string& name) } } -//---------------------------------------------------------------------------- bool cmSourceFileLocation ::MatchesAmbiguousExtension(cmSourceFileLocation const& loc) const @@ -210,7 +201,6 @@ cmSourceFileLocation return false; } -//---------------------------------------------------------------------------- bool cmSourceFileLocation::Matches(cmSourceFileLocation const& loc) { assert(this->Makefile); diff --git a/Source/cmSourceGroup.cxx b/Source/cmSourceGroup.cxx index 8fed95e..34b4315 100644 --- a/Source/cmSourceGroup.cxx +++ b/Source/cmSourceGroup.cxx @@ -17,7 +17,6 @@ public: std::vector<cmSourceGroup> GroupChildren; }; -//---------------------------------------------------------------------------- cmSourceGroup::cmSourceGroup(const char* name, const char* regex, const char* parentName): Name(name) { @@ -31,13 +30,11 @@ cmSourceGroup::cmSourceGroup(const char* name, const char* regex, this->FullName += this->Name; } -//---------------------------------------------------------------------------- cmSourceGroup::~cmSourceGroup() { delete this->Internal; } -//---------------------------------------------------------------------------- cmSourceGroup::cmSourceGroup(cmSourceGroup const& r) { this->Name = r.Name; @@ -48,7 +45,6 @@ cmSourceGroup::cmSourceGroup(cmSourceGroup const& r) this->Internal = new cmSourceGroupInternals(*r.Internal); } -//---------------------------------------------------------------------------- cmSourceGroup& cmSourceGroup::operator=(cmSourceGroup const& r) { this->Name = r.Name; @@ -59,7 +55,6 @@ cmSourceGroup& cmSourceGroup::operator=(cmSourceGroup const& r) return *this; } -//---------------------------------------------------------------------------- void cmSourceGroup::SetGroupRegex(const char* regex) { if(regex) @@ -72,31 +67,26 @@ void cmSourceGroup::SetGroupRegex(const char* regex) } } -//---------------------------------------------------------------------------- void cmSourceGroup::AddGroupFile(const std::string& name) { this->GroupFiles.insert(name); } -//---------------------------------------------------------------------------- const char* cmSourceGroup::GetName() const { return this->Name.c_str(); } -//---------------------------------------------------------------------------- const char* cmSourceGroup::GetFullName() const { return this->FullName.c_str(); } -//---------------------------------------------------------------------------- bool cmSourceGroup::MatchesRegex(const char* name) { return this->GroupRegex.find(name); } -//---------------------------------------------------------------------------- bool cmSourceGroup::MatchesFiles(const char* name) { std::set<std::string>::const_iterator i = this->GroupFiles.find(name); @@ -107,25 +97,21 @@ bool cmSourceGroup::MatchesFiles(const char* name) return false; } -//---------------------------------------------------------------------------- void cmSourceGroup::AssignSource(const cmSourceFile* sf) { this->SourceFiles.push_back(sf); } -//---------------------------------------------------------------------------- const std::vector<const cmSourceFile*>& cmSourceGroup::GetSourceFiles() const { return this->SourceFiles; } -//---------------------------------------------------------------------------- void cmSourceGroup::AddChild(cmSourceGroup child) { this->Internal->GroupChildren.push_back(child); } -//---------------------------------------------------------------------------- cmSourceGroup *cmSourceGroup::LookupChild(const char* name) const { // initializing iterators diff --git a/Source/cmSourceGroup.h b/Source/cmSourceGroup.h index e8cf519..316d725 100644 --- a/Source/cmSourceGroup.h +++ b/Source/cmSourceGroup.h @@ -13,6 +13,7 @@ #define cmSourceGroup_h #include "cmStandardIncludes.h" + #include <cmsys/RegularExpression.hxx> class cmSourceFile; diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index 272c136..f80586e 100644 --- a/Source/cmStandardIncludes.h +++ b/Source/cmStandardIncludes.h @@ -17,6 +17,7 @@ #define cmStandardIncludes_h #include <cmConfigure.h> + #include <cmsys/Configure.hxx> #ifdef _MSC_VER @@ -34,23 +35,23 @@ #include <cm_kwiml.h> #include <fstream> -#include <iostream> #include <iomanip> +#include <iostream> #include <sstream> // we must have stl with the standard include style -#include <vector> -#include <string> -#include <iterator> #include <algorithm> #include <functional> +#include <iterator> #include <map> #include <set> +#include <string> +#include <vector> // include the "c" string header -#include <string.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #if defined( _MSC_VER ) typedef unsigned short mode_t; diff --git a/Source/cmState.cxx b/Source/cmState.cxx index b8e604b..a400def 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -11,12 +11,12 @@ ============================================================================*/ #include "cmState.h" -#include "cmake.h" -#include "cmVersion.h" +#include "cmAlgorithms.h" #include "cmCacheManager.h" #include "cmCommand.h" -#include "cmAlgorithms.h" #include "cmDefinitions.h" +#include "cmVersion.h" +#include "cmake.h" #include <assert.h> @@ -35,8 +35,6 @@ struct cmState::SnapshotDataType cmLinkedTree<cmDefinitions>::iterator Vars; cmLinkedTree<cmDefinitions>::iterator Root; cmLinkedTree<cmDefinitions>::iterator Parent; - std::string EntryPointCommand; - long EntryPointLine; std::vector<std::string>::size_type IncludeDirectoryPosition; std::vector<std::string>::size_type CompileDefinitionsPosition; std::vector<std::string>::size_type CompileOptionsPosition; @@ -845,14 +843,10 @@ cmState::Snapshot cmState::CreateBaseSnapshot() } cmState::Snapshot -cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine) +cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot) { assert(originSnapshot.IsValid()); PositionType pos = this->SnapshotData.Push(originSnapshot.Position); - pos->EntryPointLine = entryPointLine; - pos->EntryPointCommand = entryPointCommand; pos->DirectoryParent = originSnapshot.Position; pos->ScopeParent = originSnapshot.Position; pos->SnapshotType = BuildsystemDirectoryType; @@ -886,15 +880,11 @@ cmState::CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot, cmState::Snapshot cmState::CreateFunctionCallSnapshot(cmState::Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine, std::string const& fileName) { PositionType pos = this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position); pos->ScopeParent = originSnapshot.Position; - pos->EntryPointLine = entryPointLine; - pos->EntryPointCommand = entryPointCommand; pos->SnapshotType = FunctionCallType; pos->Keep = false; pos->ExecutionListFile = this->ExecutionListFiles.Push( @@ -912,14 +902,10 @@ cmState::CreateFunctionCallSnapshot(cmState::Snapshot originSnapshot, cmState::Snapshot cmState::CreateMacroCallSnapshot(cmState::Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine, std::string const& fileName) { PositionType pos = this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position); - pos->EntryPointLine = entryPointLine; - pos->EntryPointCommand = entryPointCommand; pos->SnapshotType = MacroCallType; pos->Keep = false; pos->ExecutionListFile = this->ExecutionListFiles.Push( @@ -931,16 +917,12 @@ cmState::CreateMacroCallSnapshot(cmState::Snapshot originSnapshot, } cmState::Snapshot -cmState::CreateCallStackSnapshot(cmState::Snapshot originSnapshot, - const std::string& entryPointCommand, - long entryPointLine, - const std::string& fileName) +cmState::CreateIncludeFileSnapshot(cmState::Snapshot originSnapshot, + const std::string& fileName) { PositionType pos = this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position); - pos->EntryPointLine = entryPointLine; - pos->EntryPointCommand = entryPointCommand; - pos->SnapshotType = CallStackType; + pos->SnapshotType = IncludeFileType; pos->Keep = true; pos->ExecutionListFile = this->ExecutionListFiles.Push( originSnapshot.Position->ExecutionListFile, fileName); @@ -951,15 +933,11 @@ cmState::CreateCallStackSnapshot(cmState::Snapshot originSnapshot, } cmState::Snapshot -cmState::CreateVariableScopeSnapshot(cmState::Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine) +cmState::CreateVariableScopeSnapshot(cmState::Snapshot originSnapshot) { PositionType pos = this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position); pos->ScopeParent = originSnapshot.Position; - pos->EntryPointLine = entryPointLine; - pos->EntryPointCommand = entryPointCommand; pos->SnapshotType = VariableScopeType; pos->Keep = false; pos->PolicyScope = originSnapshot.Position->Policies; @@ -975,14 +953,10 @@ cmState::CreateVariableScopeSnapshot(cmState::Snapshot originSnapshot, cmState::Snapshot cmState::CreateInlineListFileSnapshot(cmState::Snapshot originSnapshot, - const std::string& entryPointCommand, - long entryPointLine, const std::string& fileName) { PositionType pos = this->SnapshotData.Push(originSnapshot.Position, *originSnapshot.Position); - pos->EntryPointLine = entryPointLine; - pos->EntryPointCommand = entryPointCommand; pos->SnapshotType = InlineListFileType; pos->Keep = true; pos->ExecutionListFile = this->ExecutionListFiles.Push( @@ -1098,11 +1072,6 @@ void cmState::Directory::SetCurrentBinary(std::string const& dir) this->Snapshot_.SetDefinition("CMAKE_CURRENT_BINARY_DIR", loc.c_str()); } -void cmState::Snapshot::Keep() -{ - this->Position->Keep = true; -} - void cmState::Snapshot::SetListFile(const std::string& listfile) { *this->Position->ExecutionListFile = listfile; @@ -1145,16 +1114,6 @@ std::string cmState::Snapshot::GetExecutionListFile() const return *this->Position->ExecutionListFile; } -std::string cmState::Snapshot::GetEntryPointCommand() const -{ - return this->Position->EntryPointCommand; -} - -long cmState::Snapshot::GetEntryPointLine() const -{ - return this->Position->EntryPointLine; -} - bool cmState::Snapshot::IsValid() const { return this->State && this->Position.IsValid() @@ -1213,6 +1172,21 @@ cmState::Snapshot cmState::Snapshot::GetCallStackParent() const return snapshot; } +cmState::Snapshot cmState::Snapshot::GetCallStackBottom() const +{ + assert(this->State); + assert(this->Position != this->State->SnapshotData.Root()); + + PositionType pos = this->Position; + while (pos->SnapshotType != cmState::BaseType && + pos->SnapshotType != cmState::BuildsystemDirectoryType && + pos != this->State->SnapshotData.Root()) + { + ++pos; + } + return Snapshot(this->State, pos); +} + void cmState::Snapshot::PushPolicy(cmPolicies::PolicyMap entry, bool weak) { PositionType pos = this->Position; @@ -1425,6 +1399,9 @@ void cmState::Snapshot::SetDefaultDefinitions() this->SetDefinition("APPLE", "1"); this->SetDefinition("CMAKE_HOST_APPLE", "1"); #endif + #if defined(__sun__) + this->SetDefinition("CMAKE_HOST_SOLARIS", "1"); + #endif char temp[1024]; sprintf(temp, "%d", cmVersion::GetMinorVersion()); diff --git a/Source/cmState.h b/Source/cmState.h index 6717481..705c1a8 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -13,11 +13,12 @@ #define cmState_h #include "cmStandardIncludes.h" -#include "cmPropertyDefinitionMap.h" -#include "cmPropertyMap.h" -#include "cmLinkedTree.h" + #include "cmAlgorithms.h" +#include "cmLinkedTree.h" #include "cmPolicies.h" +#include "cmPropertyDefinitionMap.h" +#include "cmPropertyMap.h" class cmake; class cmCommand; @@ -42,7 +43,7 @@ public: BuildsystemDirectoryType, FunctionCallType, MacroCallType, - CallStackType, + IncludeFileType, InlineListFileType, PolicyScopeType, VariableScopeType @@ -63,18 +64,16 @@ public: std::vector<std::string> ClosureKeys() const; bool RaiseScope(std::string const& var, const char* varDef); - void Keep(); void SetListFile(std::string const& listfile); std::string GetExecutionListFile() const; std::vector<Snapshot> GetChildren(); - std::string GetEntryPointCommand() const; - long GetEntryPointLine() const; bool IsValid() const; Snapshot GetBuildsystemDirectoryParent() const; Snapshot GetCallStackParent() const; + Snapshot GetCallStackBottom() const; SnapshotType GetType() const; void SetPolicy(cmPolicies::PolicyID id, cmPolicies::PolicyStatus status); @@ -192,27 +191,15 @@ public: Snapshot CreateBaseSnapshot(); Snapshot - CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine); + CreateBuildsystemDirectorySnapshot(Snapshot originSnapshot); Snapshot CreateFunctionCallSnapshot(Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine, std::string const& fileName); Snapshot CreateMacroCallSnapshot(Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine, - std::string const& fileName); - Snapshot CreateCallStackSnapshot(Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine, std::string const& fileName); - Snapshot CreateVariableScopeSnapshot(Snapshot originSnapshot, - std::string const& entryPointCommand, - long entryPointLine); + Snapshot CreateIncludeFileSnapshot(Snapshot originSnapshot, + std::string const& fileName); + Snapshot CreateVariableScopeSnapshot(Snapshot originSnapshot); Snapshot CreateInlineListFileSnapshot(Snapshot originSnapshot, - const std::string& entryPointCommand, - long entryPointLine, std::string const& fileName); Snapshot CreatePolicyScopeSnapshot(Snapshot originSnapshot); Snapshot Pop(Snapshot originSnapshot); diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 3c027a0..757425f 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -10,19 +10,19 @@ See the License for more information. ============================================================================*/ #include "cmStringCommand.h" + #include "cmCryptoHash.h" #include <cmsys/RegularExpression.hxx> #include <cmsys/SystemTools.hxx> -#include <stdlib.h> // required for atoi #include <ctype.h> +#include <stdlib.h> // required for atoi #include <time.h> #include <cmTimestamp.h> #include <cmUuid.h> -//---------------------------------------------------------------------------- bool cmStringCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -120,7 +120,6 @@ bool cmStringCommand return false; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleHashCommand(std::vector<std::string> const& args) { #if defined(CMAKE_BUILD_WITH_CMAKE) @@ -148,7 +147,6 @@ bool cmStringCommand::HandleHashCommand(std::vector<std::string> const& args) #endif } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleToUpperLowerCommand( std::vector<std::string> const& args, bool toUpper) { @@ -175,7 +173,6 @@ bool cmStringCommand::HandleToUpperLowerCommand( return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleAsciiCommand(std::vector<std::string> const& args) { if ( args.size() < 3 ) @@ -207,7 +204,6 @@ bool cmStringCommand::HandleAsciiCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleConfigureCommand( std::vector<std::string> const& args) { @@ -254,7 +250,6 @@ bool cmStringCommand::HandleConfigureCommand( return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleRegexCommand(std::vector<std::string> const& args) { if(args.size() < 2) @@ -299,7 +294,6 @@ bool cmStringCommand::HandleRegexCommand(std::vector<std::string> const& args) return false; } -//---------------------------------------------------------------------------- bool cmStringCommand::RegexMatch(std::vector<std::string> const& args) { //"STRING(REGEX MATCH <regular_expression> <output variable> @@ -344,7 +338,6 @@ bool cmStringCommand::RegexMatch(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::RegexMatchAll(std::vector<std::string> const& args) { //"STRING(REGEX MATCHALL <regular_expression> <output variable> <input> @@ -395,7 +388,6 @@ bool cmStringCommand::RegexMatchAll(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::RegexReplace(std::vector<std::string> const& args) { //"STRING(REGEX REPLACE <regular_expression> <replace_expression> @@ -532,7 +524,6 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleFindCommand(std::vector<std::string> const& args) { @@ -594,7 +585,6 @@ bool cmStringCommand::HandleFindCommand(std::vector<std::string> const& return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleCompareCommand(std::vector<std::string> const& args) { @@ -651,7 +641,6 @@ bool cmStringCommand::HandleCompareCommand(std::vector<std::string> const& return false; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleReplaceCommand(std::vector<std::string> const& args) { @@ -674,7 +663,6 @@ bool cmStringCommand::HandleReplaceCommand(std::vector<std::string> const& return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleSubstringCommand(std::vector<std::string> const& args) { @@ -712,7 +700,6 @@ bool cmStringCommand::HandleSubstringCommand(std::vector<std::string> const& return true; } -//---------------------------------------------------------------------------- bool cmStringCommand ::HandleLengthCommand(std::vector<std::string> const& args) { @@ -733,7 +720,6 @@ bool cmStringCommand return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleAppendCommand(std::vector<std::string> const& args) { if(args.size() < 2) @@ -761,7 +747,6 @@ bool cmStringCommand::HandleAppendCommand(std::vector<std::string> const& args) return true; } -//---------------------------------------------------------------------------- bool cmStringCommand ::HandleConcatCommand(std::vector<std::string> const& args) { @@ -778,7 +763,6 @@ bool cmStringCommand return true; } -//---------------------------------------------------------------------------- bool cmStringCommand ::HandleMakeCIdentifierCommand(std::vector<std::string> const& args) { @@ -796,7 +780,6 @@ bool cmStringCommand return true; } -//---------------------------------------------------------------------------- bool cmStringCommand ::HandleGenexStripCommand(std::vector<std::string> const& args) { @@ -817,7 +800,6 @@ bool cmStringCommand return true; } -//---------------------------------------------------------------------------- bool cmStringCommand::HandleStripCommand( std::vector<std::string> const& args) { @@ -866,7 +848,6 @@ bool cmStringCommand::HandleStripCommand( return true; } -//---------------------------------------------------------------------------- bool cmStringCommand ::HandleRandomCommand(std::vector<std::string> const& args) { @@ -949,7 +930,6 @@ bool cmStringCommand return true; } -//---------------------------------------------------------------------------- bool cmStringCommand ::HandleTimestampCommand(std::vector<std::string> const& args) { diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 9af54bf..08dda81 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -9,23 +9,23 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ - #include "cmSystemTools.h" + #include "cmAlgorithms.h" +#include <assert.h> #include <ctype.h> #include <errno.h> -#include <time.h> -#include <string.h> #include <stdlib.h> -#include <assert.h> +#include <string.h> +#include <time.h> #ifdef __QNX__ # include <malloc.h> /* for malloc/free on QNX */ #endif +#include <cmsys/Directory.hxx> +#include <cmsys/Encoding.hxx> #include <cmsys/Glob.hxx> #include <cmsys/RegularExpression.hxx> -#include <cmsys/Directory.hxx> #include <cmsys/System.h> -#include <cmsys/Encoding.hxx> #if defined(CMAKE_BUILD_WITH_CMAKE) # include "cmArchiveWrite.h" # include "cmLocale.h" @@ -39,13 +39,14 @@ #if defined(_WIN32) # include <windows.h> + // include wincrypt.h after windows.h # include <wincrypt.h> #else # include <sys/time.h> # include <sys/types.h> +# include <sys/wait.h> # include <unistd.h> # include <utime.h> -# include <sys/wait.h> #endif #if defined(__APPLE__) @@ -461,7 +462,6 @@ bool cmSystemTools::IsOff(const char* val) return (offValues.count(v) > 0); } -//---------------------------------------------------------------------------- void cmSystemTools::ParseWindowsCommandLine(const char* command, std::vector<std::string>& args) { @@ -531,7 +531,6 @@ void cmSystemTools::ParseWindowsCommandLine(const char* command, } } -//---------------------------------------------------------------------------- class cmSystemToolsArgV { char** ArgV; @@ -554,7 +553,6 @@ public: } }; -//---------------------------------------------------------------------------- void cmSystemTools::ParseUnixCommandLine(const char* command, std::vector<std::string>& args) { @@ -893,7 +891,6 @@ bool cmSystemTools::CopyFileIfDifferent(const char* source, return Superclass::CopyFileIfDifferent(source, destination); } -//---------------------------------------------------------------------------- #ifdef _WIN32 cmSystemTools::WindowsFileRetry cmSystemTools::GetWindowsFileRetry() { @@ -931,7 +928,6 @@ cmSystemTools::WindowsFileRetry cmSystemTools::GetWindowsFileRetry() } #endif -//---------------------------------------------------------------------------- bool cmSystemTools::RenameFile(const char* oldname, const char* newname) { #ifdef _WIN32 @@ -1006,7 +1002,6 @@ std::string cmSystemTools::ComputeStringMD5(const std::string& input) #endif } -//---------------------------------------------------------------------------- std::string cmSystemTools::ComputeCertificateThumbprint( const std::string& source) { @@ -1454,7 +1449,6 @@ std::string cmSystemTools::CollapseCombinedPath(std::string const& dir, } #ifdef CMAKE_BUILD_WITH_CMAKE -//---------------------------------------------------------------------- bool cmSystemTools::UnsetEnv(const char* value) { #if !defined(HAVE_UNSETENV) @@ -1467,7 +1461,6 @@ bool cmSystemTools::UnsetEnv(const char* value) #endif } -//---------------------------------------------------------------------- std::vector<std::string> cmSystemTools::GetEnvironmentVariables() { std::vector<std::string> env; @@ -1479,7 +1472,6 @@ std::vector<std::string> cmSystemTools::GetEnvironmentVariables() return env; } -//---------------------------------------------------------------------- void cmSystemTools::AppendEnv(std::vector<std::string> const& env) { for(std::vector<std::string>::const_iterator eit = env.begin(); @@ -1489,13 +1481,11 @@ void cmSystemTools::AppendEnv(std::vector<std::string> const& env) } } -//---------------------------------------------------------------------- cmSystemTools::SaveRestoreEnvironment::SaveRestoreEnvironment() { this->Env = cmSystemTools::GetEnvironmentVariables(); } -//---------------------------------------------------------------------- cmSystemTools::SaveRestoreEnvironment::~SaveRestoreEnvironment() { // First clear everything in the current environment: @@ -2027,7 +2017,6 @@ void cmSystemTools::DoNotInheritStdPipes() #endif } -//---------------------------------------------------------------------------- bool cmSystemTools::CopyFileTime(const char* fromFile, const char* toFile) { #if defined(_WIN32) && !defined(__CYGWIN__) @@ -2072,19 +2061,16 @@ bool cmSystemTools::CopyFileTime(const char* fromFile, const char* toFile) return true; } -//---------------------------------------------------------------------------- cmSystemToolsFileTime* cmSystemTools::FileTimeNew() { return new cmSystemToolsFileTime; } -//---------------------------------------------------------------------------- void cmSystemTools::FileTimeDelete(cmSystemToolsFileTime* t) { delete t; } -//---------------------------------------------------------------------------- bool cmSystemTools::FileTimeGet(const char* fname, cmSystemToolsFileTime* t) { #if defined(_WIN32) && !defined(__CYGWIN__) @@ -2112,7 +2098,6 @@ bool cmSystemTools::FileTimeGet(const char* fname, cmSystemToolsFileTime* t) return true; } -//---------------------------------------------------------------------------- bool cmSystemTools::FileTimeSet(const char* fname, cmSystemToolsFileTime* t) { #if defined(_WIN32) && !defined(__CYGWIN__) @@ -2137,7 +2122,6 @@ bool cmSystemTools::FileTimeSet(const char* fname, cmSystemToolsFileTime* t) return true; } -//---------------------------------------------------------------------------- #ifdef _WIN32 # ifndef CRYPT_SILENT # define CRYPT_SILENT 0x40 /* Not defined by VS 6 version of header. */ @@ -2156,7 +2140,6 @@ static int WinCryptRandom(void* data, size_t size) } #endif -//---------------------------------------------------------------------------- unsigned int cmSystemTools::RandomSeed() { #if defined(_WIN32) && !defined(__CYGWIN__) @@ -2204,7 +2187,6 @@ unsigned int cmSystemTools::RandomSeed() #endif } -//---------------------------------------------------------------------------- static std::string cmSystemToolsCMakeCommand; static std::string cmSystemToolsCTestCommand; static std::string cmSystemToolsCPackCommand; @@ -2346,49 +2328,41 @@ void cmSystemTools::FindCMakeResources(const char* argv0) #endif } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCMakeCommand() { return cmSystemToolsCMakeCommand; } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCTestCommand() { return cmSystemToolsCTestCommand; } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCPackCommand() { return cmSystemToolsCPackCommand; } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCMakeCursesCommand() { return cmSystemToolsCMakeCursesCommand; } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCMakeGUICommand() { return cmSystemToolsCMakeGUICommand; } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCMClDepsCommand() { return cmSystemToolsCMClDepsCommand; } -//---------------------------------------------------------------------------- std::string const& cmSystemTools::GetCMakeRoot() { return cmSystemToolsCMakeRoot; } -//---------------------------------------------------------------------------- void cmSystemTools::MakefileColorEcho(int color, const char* message, bool newline, bool enabled) { @@ -2425,7 +2399,6 @@ void cmSystemTools::MakefileColorEcho(int color, const char* message, } } -//---------------------------------------------------------------------------- bool cmSystemTools::GuessLibrarySOName(std::string const& fullPath, std::string& soname) { @@ -2466,7 +2439,6 @@ bool cmSystemTools::GuessLibrarySOName(std::string const& fullPath, return false; } -//---------------------------------------------------------------------------- bool cmSystemTools::GuessLibraryInstallName(std::string const& fullPath, std::string& soname) { @@ -2484,7 +2456,6 @@ bool cmSystemTools::GuessLibraryInstallName(std::string const& fullPath, return false; } -//---------------------------------------------------------------------------- #if defined(CMAKE_USE_ELF_PARSER) std::string::size_type cmSystemToolsFindRPath(std::string const& have, std::string const& want) @@ -2540,7 +2511,6 @@ struct cmSystemToolsRPathInfo }; #endif -//---------------------------------------------------------------------------- bool cmSystemTools::ChangeRPath(std::string const& file, std::string const& oldRPath, std::string const& newRPath, @@ -2617,11 +2587,13 @@ bool cmSystemTools::ChangeRPath(std::string const& file, if(emsg) { std::ostringstream e; + /* clang-format off */ e << "The current " << se_name[i] << " is:\n" << " " << se[i]->Value << "\n" << "which does not contain:\n" << " " << oldRPath << "\n" << "as was expected."; + /* clang-format on */ *emsg = e.str(); } return false; @@ -2752,7 +2724,6 @@ bool cmSystemTools::ChangeRPath(std::string const& file, #endif } -//---------------------------------------------------------------------------- bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op, const char* lhss, const char* rhss) { @@ -2792,7 +2763,6 @@ bool cmSystemTools::VersionCompare(cmSystemTools::CompareOp op, return op == cmSystemTools::OP_EQUAL; } -//---------------------------------------------------------------------------- bool cmSystemTools::VersionCompareEqual(std::string const& lhs, std::string const& rhs) { @@ -2800,7 +2770,6 @@ bool cmSystemTools::VersionCompareEqual(std::string const& lhs, cmSystemTools::OP_EQUAL, lhs.c_str(), rhs.c_str()); } -//---------------------------------------------------------------------------- bool cmSystemTools::VersionCompareGreater(std::string const& lhs, std::string const& rhs) { @@ -2808,7 +2777,6 @@ bool cmSystemTools::VersionCompareGreater(std::string const& lhs, cmSystemTools::OP_GREATER, lhs.c_str(), rhs.c_str()); } -//---------------------------------------------------------------------------- bool cmSystemTools::RemoveRPath(std::string const& file, std::string* emsg, bool* removed) { @@ -2978,7 +2946,6 @@ bool cmSystemTools::RemoveRPath(std::string const& file, std::string* emsg, #endif } -//---------------------------------------------------------------------------- bool cmSystemTools::CheckRPath(std::string const& file, std::string const& newRPath) { @@ -3017,7 +2984,6 @@ bool cmSystemTools::CheckRPath(std::string const& file, #endif } -//---------------------------------------------------------------------------- bool cmSystemTools::RepeatedRemoveDirectory(const char* dir) { // Windows sometimes locks files temporarily so try a few times. @@ -3032,7 +2998,6 @@ bool cmSystemTools::RepeatedRemoveDirectory(const char* dir) return false; } -//---------------------------------------------------------------------------- std::vector<std::string> cmSystemTools::tokenize(const std::string& str, const std::string& sep) { @@ -3064,7 +3029,6 @@ std::vector<std::string> cmSystemTools::tokenize(const std::string& str, return tokens; } -//---------------------------------------------------------------------------- bool cmSystemTools::StringToLong(const char* str, long* value) { errno = 0; @@ -3073,7 +3037,6 @@ bool cmSystemTools::StringToLong(const char* str, long* value) return (*endp == '\0') && (endp != str) && (errno == 0); } -//---------------------------------------------------------------------------- bool cmSystemTools::StringToULong(const char* str, unsigned long* value) { errno = 0; diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index d444675..d311750 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -14,8 +14,8 @@ #include "cmStandardIncludes.h" -#include <cmsys/SystemTools.hxx> #include <cmsys/Process.h> +#include <cmsys/SystemTools.hxx> class cmSystemToolsFileTime; diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 576189f..d7d301f 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -10,22 +10,23 @@ See the License for more information. ============================================================================*/ #include "cmTarget.h" -#include "cmake.h" -#include "cmMakefile.h" -#include "cmSourceFile.h" -#include "cmOutputConverter.h" -#include "cmGlobalGenerator.h" + +#include "cmAlgorithms.h" #include "cmComputeLinkInformation.h" -#include "cmListFileCache.h" #include "cmGeneratorExpression.h" #include "cmGeneratorExpressionDAGChecker.h" -#include "cmAlgorithms.h" +#include "cmGlobalGenerator.h" +#include "cmListFileCache.h" +#include "cmMakefile.h" +#include "cmOutputConverter.h" +#include "cmSourceFile.h" +#include "cmake.h" +#include <assert.h> #include <cmsys/RegularExpression.hxx> +#include <errno.h> #include <map> #include <set> #include <stdlib.h> // required for atof -#include <assert.h> -#include <errno.h> #if defined(CMAKE_BUILD_WITH_CMAKE) #include <cmsys/hash_set.hxx> #define UNORDERED_SET cmsys::hash_set @@ -33,7 +34,6 @@ #define UNORDERED_SET std::set #endif -//---------------------------------------------------------------------------- class cmTargetInternals { public: @@ -51,7 +51,6 @@ public: std::vector<cmListFileBacktrace> LinkImplementationPropertyBacktraces; }; -//---------------------------------------------------------------------------- cmTarget::cmTarget() { this->Makefile = 0; @@ -79,7 +78,6 @@ void cmTarget::SetType(cmState::TargetType type, const std::string& name) } } -//---------------------------------------------------------------------------- void cmTarget::SetMakefile(cmMakefile* mf) { // Set our makefile. @@ -142,11 +140,13 @@ void cmTarget::SetMakefile(cmMakefile* mf) this->SetPropertyDefault("MACOSX_BUNDLE", 0); this->SetPropertyDefault("MACOSX_RPATH", 0); this->SetPropertyDefault("NO_SYSTEM_FROM_IMPORTED", 0); + this->SetPropertyDefault("C_CLANG_TIDY", 0); this->SetPropertyDefault("C_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("C_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("C_STANDARD", 0); this->SetPropertyDefault("C_STANDARD_REQUIRED", 0); this->SetPropertyDefault("C_EXTENSIONS", 0); + this->SetPropertyDefault("CXX_CLANG_TIDY", 0); this->SetPropertyDefault("CXX_COMPILER_LAUNCHER", 0); this->SetPropertyDefault("CXX_INCLUDE_WHAT_YOU_USE", 0); this->SetPropertyDefault("CXX_STANDARD", 0); @@ -164,6 +164,7 @@ void cmTarget::SetMakefile(cmMakefile* mf) if (this->GetType() != cmState::UTILITY) { const char* configProps[] = { + /* clang-format needs this comment to break after the opening brace */ "ARCHIVE_OUTPUT_DIRECTORY_", "LIBRARY_OUTPUT_DIRECTORY_", "RUNTIME_OUTPUT_DIRECTORY_", @@ -289,7 +290,6 @@ void cmTarget::SetMakefile(cmMakefile* mf) } } -//---------------------------------------------------------------------------- void cmTarget::AddUtility(const std::string& u, cmMakefile *makefile) { if(this->Utilities.insert(u).second && makefile) @@ -299,7 +299,6 @@ void cmTarget::AddUtility(const std::string& u, cmMakefile *makefile) } } -//---------------------------------------------------------------------------- cmListFileBacktrace const* cmTarget::GetUtilityBacktrace( const std::string& u) const { @@ -310,20 +309,17 @@ cmListFileBacktrace const* cmTarget::GetUtilityBacktrace( return &i->second; } -//---------------------------------------------------------------------------- cmListFileBacktrace const& cmTarget::GetBacktrace() const { return this->Backtrace; } -//---------------------------------------------------------------------------- bool cmTarget::IsExecutableWithExports() const { return (this->GetType() == cmState::EXECUTABLE && this->GetPropertyAsBool("ENABLE_EXPORTS")); } -//---------------------------------------------------------------------------- bool cmTarget::HasImportLibrary() const { return (this->DLLPlatform && @@ -331,7 +327,6 @@ bool cmTarget::HasImportLibrary() const this->IsExecutableWithExports())); } -//---------------------------------------------------------------------------- bool cmTarget::IsFrameworkOnApple() const { return (this->GetType() == cmState::SHARED_LIBRARY && @@ -339,7 +334,6 @@ bool cmTarget::IsFrameworkOnApple() const this->GetPropertyAsBool("FRAMEWORK")); } -//---------------------------------------------------------------------------- bool cmTarget::IsAppBundleOnApple() const { return (this->GetType() == cmState::EXECUTABLE && @@ -347,7 +341,6 @@ bool cmTarget::IsAppBundleOnApple() const this->GetPropertyAsBool("MACOSX_BUNDLE")); } -//---------------------------------------------------------------------------- void cmTarget::AddTracedSources(std::vector<std::string> const& srcs) { if (!srcs.empty()) @@ -358,7 +351,6 @@ void cmTarget::AddTracedSources(std::vector<std::string> const& srcs) } } -//---------------------------------------------------------------------------- void cmTarget::AddSources(std::vector<std::string> const& srcs) { std::string srcFiles; @@ -393,7 +385,6 @@ void cmTarget::AddSources(std::vector<std::string> const& srcs) } } -//---------------------------------------------------------------------------- std::string cmTarget::ProcessSourceItemCMP0049(const std::string& s) { std::string src = s; @@ -435,7 +426,6 @@ std::string cmTarget::ProcessSourceItemCMP0049(const std::string& s) return src; } -//---------------------------------------------------------------------------- cmSourceFile* cmTarget::AddSourceCMP0049(const std::string& s) { std::string src = this->ProcessSourceItemCMP0049(s); @@ -446,7 +436,6 @@ cmSourceFile* cmTarget::AddSourceCMP0049(const std::string& s) return this->AddSource(src); } -//---------------------------------------------------------------------------- struct CreateLocation { cmMakefile const* Makefile; @@ -463,7 +452,6 @@ struct CreateLocation } }; -//---------------------------------------------------------------------------- struct LocationMatcher { const cmSourceFileLocation& Needle; @@ -481,7 +469,6 @@ struct LocationMatcher }; -//---------------------------------------------------------------------------- struct TargetPropertyEntryFinder { private: @@ -506,7 +493,6 @@ public: } }; -//---------------------------------------------------------------------------- cmSourceFile* cmTarget::AddSource(const std::string& src) { cmSourceFileLocation sfl(this->Makefile, src); @@ -526,7 +512,6 @@ cmSourceFile* cmTarget::AddSource(const std::string& src) return this->Makefile->GetOrCreateSource(src); } -//---------------------------------------------------------------------------- void cmTarget::MergeLinkLibraries( cmMakefile& mf, const std::string& selfname, const LinkLibraryVectorType& libs ) @@ -545,7 +530,6 @@ void cmTarget::MergeLinkLibraries( cmMakefile& mf, this->PrevLinkedLibraries = libs; } -//---------------------------------------------------------------------------- void cmTarget::AddLinkDirectory(const std::string& d) { // Make sure we don't add unnecessary search directories. @@ -555,13 +539,11 @@ void cmTarget::AddLinkDirectory(const std::string& d) } } -//---------------------------------------------------------------------------- const std::vector<std::string>& cmTarget::GetLinkDirectories() const { return this->LinkDirectories; } -//---------------------------------------------------------------------------- void cmTarget::ClearDependencyInformation( cmMakefile& mf, const std::string& target ) { @@ -589,7 +571,6 @@ void cmTarget::ClearDependencyInformation( cmMakefile& mf, } } -//---------------------------------------------------------------------------- std::string cmTarget::GetDebugGeneratorExpressions(const std::string &value, cmTargetLinkLibraryType llt) const { @@ -621,13 +602,11 @@ std::string cmTarget::GetDebugGeneratorExpressions(const std::string &value, return "$<" + configString + ":" + value + ">"; } -//---------------------------------------------------------------------------- static std::string targetNameGenex(const std::string& lib) { return "$<TARGET_NAME:" + lib + ">"; } -//---------------------------------------------------------------------------- bool cmTarget::PushTLLCommandTrace(TLLSignature signature, cmListFileContext const& lfc) { @@ -646,7 +625,6 @@ bool cmTarget::PushTLLCommandTrace(TLLSignature signature, return ret; } -//---------------------------------------------------------------------------- void cmTarget::GetTllSignatureTraces(std::ostringstream &s, TLLSignature sig) const { @@ -667,7 +645,6 @@ void cmTarget::GetTllSignatureTraces(std::ostringstream &s, } } -//---------------------------------------------------------------------------- void cmTarget::AddLinkLibrary(cmMakefile& mf, const std::string& target, const std::string& lib, @@ -738,7 +715,6 @@ void cmTarget::AddLinkLibrary(cmMakefile& mf, } -//---------------------------------------------------------------------------- void cmTarget::AddSystemIncludeDirectories(const std::set<std::string> &incs) { @@ -805,7 +781,6 @@ cmBacktraceRange cmTarget::GetLinkImplementationBacktraces() const return cmMakeRange(this->Internal->LinkImplementationPropertyBacktraces); } -//---------------------------------------------------------------------------- static bool whiteListedInterfaceProperty(const std::string& prop) { if(cmHasLiteralPrefix(prop, "INTERFACE_")) @@ -838,7 +813,6 @@ static bool whiteListedInterfaceProperty(const std::string& prop) return false; } -//---------------------------------------------------------------------------- void cmTarget::SetProperty(const std::string& prop, const char* value) { if (this->GetType() == cmState::INTERFACE_LIBRARY @@ -945,7 +919,6 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) } } -//---------------------------------------------------------------------------- void cmTarget::AppendProperty(const std::string& prop, const char* value, bool asString) { @@ -1037,7 +1010,6 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value, } } -//---------------------------------------------------------------------------- void cmTarget::AppendBuildInterfaceIncludes() { if(this->GetType() != cmState::SHARED_LIBRARY && @@ -1069,7 +1041,6 @@ void cmTarget::AppendBuildInterfaceIncludes() } } -//---------------------------------------------------------------------------- void cmTarget::InsertInclude(std::string const& entry, cmListFileBacktrace const& bt, bool before) @@ -1086,7 +1057,6 @@ void cmTarget::InsertInclude(std::string const& entry, this->Internal->IncludeDirectoriesBacktraces.insert(btPosition, bt); } -//---------------------------------------------------------------------------- void cmTarget::InsertCompileOption(std::string const& entry, cmListFileBacktrace const& bt, bool before) @@ -1103,7 +1073,6 @@ void cmTarget::InsertCompileOption(std::string const& entry, this->Internal->CompileOptionsBacktraces.insert(btPosition, bt); } -//---------------------------------------------------------------------------- void cmTarget::InsertCompileDefinition(std::string const& entry, cmListFileBacktrace const& bt) { @@ -1111,7 +1080,6 @@ void cmTarget::InsertCompileDefinition(std::string const& entry, this->Internal->CompileDefinitionsBacktraces.push_back(bt); } -//---------------------------------------------------------------------------- static void cmTargetCheckLINK_INTERFACE_LIBRARIES( const std::string& prop, const char* value, cmMakefile* context, bool imported) @@ -1154,7 +1122,6 @@ static void cmTargetCheckLINK_INTERFACE_LIBRARIES( context->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- static void cmTargetCheckINTERFACE_LINK_LIBRARIES(const char* value, cmMakefile* context) { @@ -1177,7 +1144,6 @@ static void cmTargetCheckINTERFACE_LINK_LIBRARIES(const char* value, context->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- void cmTarget::CheckProperty(const std::string& prop, cmMakefile* context) const { @@ -1205,14 +1171,12 @@ void cmTarget::CheckProperty(const std::string& prop, } } -//---------------------------------------------------------------------------- void cmTarget::MarkAsImported(bool global) { this->IsImportedTarget = true; this->ImportedGloballyVisible = global; } -//---------------------------------------------------------------------------- bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const { if (this->IsImported()) @@ -1248,13 +1212,11 @@ bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const return messageType != cmake::FATAL_ERROR; } -//---------------------------------------------------------------------------- const char *cmTarget::GetProperty(const std::string& prop) const { return this->GetProperty(prop, this->Makefile); } -//---------------------------------------------------------------------------- const char *cmTarget::GetProperty(const std::string& prop, cmMakefile* context) const { @@ -1573,13 +1535,11 @@ const char *cmTarget::GetProperty(const std::string& prop, return retVal; } -//---------------------------------------------------------------------------- bool cmTarget::GetPropertyAsBool(const std::string& prop) const { return cmSystemTools::IsOn(this->GetProperty(prop)); } -//---------------------------------------------------------------------------- const char* cmTarget::GetSuffixVariableInternal(bool implib) const { switch(this->GetType()) @@ -1608,7 +1568,6 @@ const char* cmTarget::GetSuffixVariableInternal(bool implib) const } -//---------------------------------------------------------------------------- const char* cmTarget::GetPrefixVariableInternal(bool implib) const { switch(this->GetType()) @@ -1636,7 +1595,6 @@ const char* cmTarget::GetPrefixVariableInternal(bool implib) const return ""; } -//---------------------------------------------------------------------------- std::string cmTarget::ImportedGetFullPath(const std::string& config, bool pimplib) const { @@ -1715,7 +1673,6 @@ cmTarget::ImportedGetFullPath(const std::string& config, bool pimplib) const return result; } -//---------------------------------------------------------------------------- void cmTarget::SetPropertyDefault(const std::string& property, const char* default_value) { @@ -1864,13 +1821,11 @@ bool cmTarget::GetMappedConfig(std::string const& desired_config, return true; } -//---------------------------------------------------------------------------- cmTargetInternalPointer::cmTargetInternalPointer() { this->Pointer = new cmTargetInternals; } -//---------------------------------------------------------------------------- cmTargetInternalPointer ::cmTargetInternalPointer(cmTargetInternalPointer const& r) { @@ -1880,13 +1835,11 @@ cmTargetInternalPointer this->Pointer = new cmTargetInternals(*r.Pointer); } -//---------------------------------------------------------------------------- cmTargetInternalPointer::~cmTargetInternalPointer() { delete this->Pointer; } -//---------------------------------------------------------------------------- cmTargetInternalPointer& cmTargetInternalPointer::operator=(cmTargetInternalPointer const& r) { diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 4e97c2c..262cc9b 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -12,10 +12,12 @@ #ifndef cmTarget_h #define cmTarget_h +#include "cmStandardIncludes.h" + #include "cmCustomCommand.h" -#include "cmPropertyMap.h" -#include "cmPolicies.h" #include "cmListFileCache.h" +#include "cmPolicies.h" +#include "cmPropertyMap.h" #include <cmsys/auto_ptr.hxx> #if defined(CMAKE_BUILD_WITH_CMAKE) diff --git a/Source/cmTargetCompileDefinitionsCommand.cxx b/Source/cmTargetCompileDefinitionsCommand.cxx index 394a166..e50e783 100644 --- a/Source/cmTargetCompileDefinitionsCommand.cxx +++ b/Source/cmTargetCompileDefinitionsCommand.cxx @@ -37,7 +37,6 @@ void cmTargetCompileDefinitionsCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- std::string cmTargetCompileDefinitionsCommand ::Join(const std::vector<std::string> &content) { @@ -59,7 +58,6 @@ std::string cmTargetCompileDefinitionsCommand return defs; } -//---------------------------------------------------------------------------- bool cmTargetCompileDefinitionsCommand ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content, bool, bool) diff --git a/Source/cmTargetCompileFeaturesCommand.cxx b/Source/cmTargetCompileFeaturesCommand.cxx index 823afa1..4bc8181 100644 --- a/Source/cmTargetCompileFeaturesCommand.cxx +++ b/Source/cmTargetCompileFeaturesCommand.cxx @@ -38,14 +38,12 @@ void cmTargetCompileFeaturesCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- std::string cmTargetCompileFeaturesCommand ::Join(const std::vector<std::string> &content) { return cmJoin(content, ";"); } -//---------------------------------------------------------------------------- bool cmTargetCompileFeaturesCommand ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content, bool, bool) diff --git a/Source/cmTargetCompileOptionsCommand.cxx b/Source/cmTargetCompileOptionsCommand.cxx index 8e86f0f..d7c19c8 100644 --- a/Source/cmTargetCompileOptionsCommand.cxx +++ b/Source/cmTargetCompileOptionsCommand.cxx @@ -37,14 +37,12 @@ void cmTargetCompileOptionsCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- std::string cmTargetCompileOptionsCommand ::Join(const std::vector<std::string> &content) { return cmJoin(content, ";"); } -//---------------------------------------------------------------------------- bool cmTargetCompileOptionsCommand ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content, bool, bool) diff --git a/Source/cmTargetIncludeDirectoriesCommand.cxx b/Source/cmTargetIncludeDirectoriesCommand.cxx index 7dfe9ca..01d9164 100644 --- a/Source/cmTargetIncludeDirectoriesCommand.cxx +++ b/Source/cmTargetIncludeDirectoriesCommand.cxx @@ -13,7 +13,6 @@ #include "cmGeneratorExpression.h" -//---------------------------------------------------------------------------- bool cmTargetIncludeDirectoriesCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { @@ -21,7 +20,6 @@ bool cmTargetIncludeDirectoriesCommand ArgumentFlags(PROCESS_BEFORE | PROCESS_SYSTEM)); } -//---------------------------------------------------------------------------- void cmTargetIncludeDirectoriesCommand ::HandleImportedTarget(const std::string &tgt) { @@ -31,7 +29,6 @@ void cmTargetIncludeDirectoriesCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- void cmTargetIncludeDirectoriesCommand ::HandleMissingTarget(const std::string &name) { @@ -41,7 +38,6 @@ void cmTargetIncludeDirectoriesCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- std::string cmTargetIncludeDirectoriesCommand ::Join(const std::vector<std::string> &content) { @@ -66,7 +62,6 @@ std::string cmTargetIncludeDirectoriesCommand return dirs; } -//---------------------------------------------------------------------------- bool cmTargetIncludeDirectoriesCommand ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content, bool prepend, bool system) @@ -96,7 +91,6 @@ bool cmTargetIncludeDirectoriesCommand return true; } -//---------------------------------------------------------------------------- void cmTargetIncludeDirectoriesCommand ::HandleInterfaceContent(cmTarget *tgt, const std::vector<std::string> &content, diff --git a/Source/cmTargetIncludeDirectoriesCommand.h b/Source/cmTargetIncludeDirectoriesCommand.h index 2a7814e..14d1d1e 100644 --- a/Source/cmTargetIncludeDirectoriesCommand.h +++ b/Source/cmTargetIncludeDirectoriesCommand.h @@ -15,7 +15,6 @@ #include "cmTargetPropCommandBase.h" -//---------------------------------------------------------------------------- class cmTargetIncludeDirectoriesCommand : public cmTargetPropCommandBase { public: diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index 435346a..04f0b45 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -334,7 +334,6 @@ bool cmTargetLinkLibrariesCommand return true; } -//---------------------------------------------------------------------------- void cmTargetLinkLibrariesCommand ::LinkLibraryTypeSpecifierWarning(int left, int right) @@ -347,7 +346,6 @@ cmTargetLinkLibrariesCommand this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str()); } -//---------------------------------------------------------------------------- bool cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib, cmTargetLinkLibraryType llt) diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx index bfc19a4..0c51b71 100644 --- a/Source/cmTargetPropCommandBase.cxx +++ b/Source/cmTargetPropCommandBase.cxx @@ -14,7 +14,6 @@ #include "cmGlobalGenerator.h" -//---------------------------------------------------------------------------- bool cmTargetPropCommandBase ::HandleArguments(std::vector<std::string> const& args, const std::string& prop, @@ -93,7 +92,6 @@ bool cmTargetPropCommandBase return true; } -//---------------------------------------------------------------------------- bool cmTargetPropCommandBase ::ProcessContentArgs(std::vector<std::string> const& args, unsigned int &argIndex, bool prepend, bool system) @@ -139,7 +137,6 @@ bool cmTargetPropCommandBase return this->PopulateTargetProperies(scope, content, prepend, system); } -//---------------------------------------------------------------------------- bool cmTargetPropCommandBase ::PopulateTargetProperies(const std::string &scope, const std::vector<std::string> &content, @@ -159,7 +156,6 @@ bool cmTargetPropCommandBase return true; } -//---------------------------------------------------------------------------- void cmTargetPropCommandBase::HandleInterfaceContent(cmTarget *tgt, const std::vector<std::string> &content, bool prepend, bool) diff --git a/Source/cmTargetPropCommandBase.h b/Source/cmTargetPropCommandBase.h index d42b588..4f1f108 100644 --- a/Source/cmTargetPropCommandBase.h +++ b/Source/cmTargetPropCommandBase.h @@ -17,7 +17,6 @@ class cmTarget; -//---------------------------------------------------------------------------- class cmTargetPropCommandBase : public cmCommand { public: diff --git a/Source/cmTargetSourcesCommand.cxx b/Source/cmTargetSourcesCommand.cxx index 0a44d6f..390ba38 100644 --- a/Source/cmTargetSourcesCommand.cxx +++ b/Source/cmTargetSourcesCommand.cxx @@ -13,14 +13,12 @@ #include "cmGeneratorExpression.h" -//---------------------------------------------------------------------------- bool cmTargetSourcesCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { return this->HandleArguments(args, "SOURCES"); } -//---------------------------------------------------------------------------- void cmTargetSourcesCommand ::HandleImportedTarget(const std::string &tgt) { @@ -30,7 +28,6 @@ void cmTargetSourcesCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- void cmTargetSourcesCommand ::HandleMissingTarget(const std::string &name) { @@ -40,14 +37,12 @@ void cmTargetSourcesCommand this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str()); } -//---------------------------------------------------------------------------- std::string cmTargetSourcesCommand ::Join(const std::vector<std::string> &content) { return cmJoin(content, ";"); } -//---------------------------------------------------------------------------- bool cmTargetSourcesCommand ::HandleDirectContent(cmTarget *tgt, const std::vector<std::string> &content, bool, bool) diff --git a/Source/cmTargetSourcesCommand.h b/Source/cmTargetSourcesCommand.h index a170e36..3768f30 100644 --- a/Source/cmTargetSourcesCommand.h +++ b/Source/cmTargetSourcesCommand.h @@ -15,7 +15,6 @@ #include "cmTargetPropCommandBase.h" -//---------------------------------------------------------------------------- class cmTargetSourcesCommand : public cmTargetPropCommandBase { public: diff --git a/Source/cmTest.cxx b/Source/cmTest.cxx index 6fcd0dc..ec61ec6 100644 --- a/Source/cmTest.cxx +++ b/Source/cmTest.cxx @@ -10,12 +10,12 @@ See the License for more information. ============================================================================*/ #include "cmTest.h" + #include "cmSystemTools.h" -#include "cmake.h" #include "cmMakefile.h" +#include "cmake.h" -//---------------------------------------------------------------------------- cmTest::cmTest(cmMakefile* mf) : Backtrace(mf->GetBacktrace()) { @@ -23,30 +23,25 @@ cmTest::cmTest(cmMakefile* mf) this->OldStyle = true; } -//---------------------------------------------------------------------------- cmTest::~cmTest() { } -//---------------------------------------------------------------------------- cmListFileBacktrace const& cmTest::GetBacktrace() const { return this->Backtrace; } -//---------------------------------------------------------------------------- void cmTest::SetName(const std::string& name) { this->Name = name; } -//---------------------------------------------------------------------------- void cmTest::SetCommand(std::vector<std::string> const& command) { this->Command = command; } -//---------------------------------------------------------------------------- const char *cmTest::GetProperty(const std::string& prop) const { const char *retVal = this->Properties.GetPropertyValue(prop); @@ -62,19 +57,16 @@ const char *cmTest::GetProperty(const std::string& prop) const return retVal; } -//---------------------------------------------------------------------------- bool cmTest::GetPropertyAsBool(const std::string& prop) const { return cmSystemTools::IsOn(this->GetProperty(prop)); } -//---------------------------------------------------------------------------- void cmTest::SetProperty(const std::string& prop, const char* value) { this->Properties.SetProperty(prop, value); } -//---------------------------------------------------------------------------- void cmTest::AppendProperty(const std::string& prop, const char* value, bool asString) { diff --git a/Source/cmTest.h b/Source/cmTest.h index ca88afe..46013af 100644 --- a/Source/cmTest.h +++ b/Source/cmTest.h @@ -12,9 +12,11 @@ #ifndef cmTest_h #define cmTest_h +#include "cmStandardIncludes.h" + #include "cmCustomCommand.h" -#include "cmPropertyMap.h" #include "cmListFileCache.h" +#include "cmPropertyMap.h" class cmMakefile; /** \class cmTest diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index b411f15..42e8090 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -12,12 +12,11 @@ #include "cmTestGenerator.h" #include "cmGeneratorExpression.h" -#include "cmOutputConverter.h" #include "cmLocalGenerator.h" +#include "cmOutputConverter.h" #include "cmSystemTools.h" #include "cmTest.h" -//---------------------------------------------------------------------------- cmTestGenerator ::cmTestGenerator(cmTest* test, std::vector<std::string> const& configurations): @@ -29,7 +28,6 @@ cmTestGenerator this->LG = 0; } -//---------------------------------------------------------------------------- cmTestGenerator ::~cmTestGenerator() { @@ -40,7 +38,6 @@ void cmTestGenerator::Compute(cmLocalGenerator* lg) this->LG = lg; } -//---------------------------------------------------------------------------- void cmTestGenerator::GenerateScriptConfigs(std::ostream& os, Indent const& indent) { @@ -48,7 +45,6 @@ void cmTestGenerator::GenerateScriptConfigs(std::ostream& os, this->cmScriptGenerator::GenerateScriptConfigs(os, indent); } -//---------------------------------------------------------------------------- void cmTestGenerator::GenerateScriptActions(std::ostream& os, Indent const& indent) { @@ -67,7 +63,6 @@ void cmTestGenerator::GenerateScriptActions(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, const std::string& config, Indent const& indent) @@ -150,14 +145,12 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, } } -//---------------------------------------------------------------------------- void cmTestGenerator::GenerateScriptNoConfig(std::ostream& os, Indent const& indent) { os << indent << "add_test(" << this->Test->GetName() << " NOT_AVAILABLE)\n"; } -//---------------------------------------------------------------------------- bool cmTestGenerator::NeedsScriptNoConfig() const { return (this->TestGenerated && // test generated for at least one config @@ -166,7 +159,6 @@ bool cmTestGenerator::NeedsScriptNoConfig() const !this->ConfigurationTypes->empty()); // config-dependent command } -//---------------------------------------------------------------------------- void cmTestGenerator::GenerateOldStyle(std::ostream& fout, Indent const& indent) { diff --git a/Source/cmTimestamp.cxx b/Source/cmTimestamp.cxx index 1c795c4..90bc4de 100644 --- a/Source/cmTimestamp.cxx +++ b/Source/cmTimestamp.cxx @@ -11,14 +11,14 @@ ============================================================================*/ #include "cmTimestamp.h" -#include <cstring> #include <cstdlib> +#include <cstring> +#include <sstream> #include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> -#include <sstream> -//---------------------------------------------------------------------------- std::string cmTimestamp::CurrentTime( const std::string& formatString, bool utcFlag) { @@ -31,7 +31,6 @@ std::string cmTimestamp::CurrentTime( return CreateTimestampFromTimeT(currentTimeT, formatString, utcFlag); } -//---------------------------------------------------------------------------- std::string cmTimestamp::FileModificationTime(const char* path, const std::string& formatString, bool utcFlag) { @@ -44,7 +43,6 @@ std::string cmTimestamp::FileModificationTime(const char* path, return CreateTimestampFromTimeT(mtime, formatString, utcFlag); } -//---------------------------------------------------------------------------- std::string cmTimestamp::CreateTimestampFromTimeT(time_t timeT, std::string formatString, bool utcFlag) const { @@ -98,7 +96,6 @@ std::string cmTimestamp::CreateTimestampFromTimeT(time_t timeT, return result; } -//---------------------------------------------------------------------------- time_t cmTimestamp::CreateUtcTimeTFromTm(struct tm &tm) const { #if defined(_MSC_VER) && _MSC_VER >= 1400 @@ -130,7 +127,6 @@ time_t cmTimestamp::CreateUtcTimeTFromTm(struct tm &tm) const #endif } -//---------------------------------------------------------------------------- std::string cmTimestamp::AddTimestampComponent( char flag, struct tm& timeStruct, const time_t timeT) const { diff --git a/Source/cmTimestamp.h b/Source/cmTimestamp.h index 7c4b216..72d5cc2 100644 --- a/Source/cmTimestamp.h +++ b/Source/cmTimestamp.h @@ -12,6 +12,8 @@ #ifndef cmTimestamp_h #define cmTimestamp_h +#include "cmStandardIncludes.h" + #include <string> #include <time.h> diff --git a/Source/cmTryRunCommand.cxx b/Source/cmTryRunCommand.cxx index d4a36c9..3acc43c 100644 --- a/Source/cmTryRunCommand.cxx +++ b/Source/cmTryRunCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmTryRunCommand.h" + #include "cmTryCompileCommand.h" #include <cmsys/FStream.hxx> @@ -334,6 +335,7 @@ void cmTryRunCommand::DoNotRunExecutable(const std::string& runArgs, { if (firstTryRun) { + /* clang-format off */ file << "# This file was generated by CMake because it detected " "TRY_RUN() commands\n" "# in crosscompiling mode. It will be overwritten by the next " @@ -341,6 +343,7 @@ void cmTryRunCommand::DoNotRunExecutable(const std::string& runArgs, "# Copy it to a safe location, set the variables to " "appropriate values\n" "# and use it then to preset the CMake cache (using -C).\n\n"; + /* clang-format on */ } std::string comment ="\n"; diff --git a/Source/cmUseMangledMesaCommand.cxx b/Source/cmUseMangledMesaCommand.cxx index 2ee664f..f30071e 100644 --- a/Source/cmUseMangledMesaCommand.cxx +++ b/Source/cmUseMangledMesaCommand.cxx @@ -10,10 +10,11 @@ See the License for more information. ============================================================================*/ #include "cmUseMangledMesaCommand.h" + #include "cmSystemTools.h" -#include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> +#include <cmsys/RegularExpression.hxx> bool cmUseMangledMesaCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) diff --git a/Source/cmUuid.cxx b/Source/cmUuid.cxx index e2d0049..5f8935f 100644 --- a/Source/cmUuid.cxx +++ b/Source/cmUuid.cxx @@ -13,8 +13,8 @@ #include <string.h> -#include <cmsys/MD5.h> #include "cm_sha2.h" +#include <cmsys/MD5.h> cmUuid::cmUuid() { diff --git a/Source/cmVariableRequiresCommand.cxx b/Source/cmVariableRequiresCommand.cxx index 1d33db1..a830842 100644 --- a/Source/cmVariableRequiresCommand.cxx +++ b/Source/cmVariableRequiresCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmVariableRequiresCommand.h" + #include "cmState.h" // cmLibraryCommand diff --git a/Source/cmVariableWatchCommand.cxx b/Source/cmVariableWatchCommand.cxx index 98a397c..b776626 100644 --- a/Source/cmVariableWatchCommand.cxx +++ b/Source/cmVariableWatchCommand.cxx @@ -13,14 +13,12 @@ #include "cmVariableWatch.h" -//---------------------------------------------------------------------------- struct cmVariableWatchCallbackData { bool InCallback; std::string Command; }; -//---------------------------------------------------------------------------- static void cmVariableWatchCommandVariableAccessed( const std::string& variable, int access_type, void* client_data, const char* newValue, const cmMakefile* mf) @@ -88,7 +86,6 @@ static void cmVariableWatchCommandVariableAccessed( data->InCallback = false; } -//---------------------------------------------------------------------------- static void deleteVariableWatchCallbackData(void* client_data) { cmVariableWatchCallbackData* data @@ -96,12 +93,10 @@ static void deleteVariableWatchCallbackData(void* client_data) delete data; } -//---------------------------------------------------------------------------- cmVariableWatchCommand::cmVariableWatchCommand() { } -//---------------------------------------------------------------------------- cmVariableWatchCommand::~cmVariableWatchCommand() { std::set<std::string>::const_iterator it; @@ -114,7 +109,6 @@ cmVariableWatchCommand::~cmVariableWatchCommand() } } -//---------------------------------------------------------------------------- bool cmVariableWatchCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) { diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 31873b5..51e7999 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -9,37 +9,38 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include "windows.h" #include "cmVisualStudio10TargetGenerator.h" -#include "cmGlobalVisualStudio10Generator.h" -#include "cmGeneratorTarget.h" + #include "cmComputeLinkInformation.h" +#include "cmCustomCommandGenerator.h" #include "cmGeneratedFileStream.h" +#include "cmGeneratorTarget.h" +#include "cmGlobalVisualStudio10Generator.h" +#include "cmLocalVisualStudio7Generator.h" #include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmVisualStudioGeneratorOptions.h" -#include "cmLocalVisualStudio7Generator.h" -#include "cmCustomCommandGenerator.h" #include "cmVS10CLFlagTable.h" -#include "cmVS10RCFlagTable.h" -#include "cmVS10LinkFlagTable.h" #include "cmVS10LibFlagTable.h" +#include "cmVS10LinkFlagTable.h" #include "cmVS10MASMFlagTable.h" +#include "cmVS10RCFlagTable.h" #include "cmVS11CLFlagTable.h" -#include "cmVS11RCFlagTable.h" -#include "cmVS11LinkFlagTable.h" #include "cmVS11LibFlagTable.h" +#include "cmVS11LinkFlagTable.h" #include "cmVS11MASMFlagTable.h" +#include "cmVS11RCFlagTable.h" #include "cmVS12CLFlagTable.h" -#include "cmVS12RCFlagTable.h" -#include "cmVS12LinkFlagTable.h" #include "cmVS12LibFlagTable.h" +#include "cmVS12LinkFlagTable.h" #include "cmVS12MASMFlagTable.h" +#include "cmVS12RCFlagTable.h" #include "cmVS14CLFlagTable.h" -#include "cmVS14RCFlagTable.h" -#include "cmVS14LinkFlagTable.h" #include "cmVS14LibFlagTable.h" +#include "cmVS14LinkFlagTable.h" #include "cmVS14MASMFlagTable.h" +#include "cmVS14RCFlagTable.h" +#include "cmVisualStudioGeneratorOptions.h" +#include "windows.h" #include <cmsys/auto_ptr.hxx> @@ -758,7 +759,6 @@ void cmVisualStudio10TargetGenerator::WriteProjectConfigurationValues() } } -//---------------------------------------------------------------------------- void cmVisualStudio10TargetGenerator ::WriteMSToolConfigurationValues(std::string const& config) { @@ -818,7 +818,6 @@ void cmVisualStudio10TargetGenerator } } -//---------------------------------------------------------------------------- void cmVisualStudio10TargetGenerator ::WriteNsightTegraConfigurationValues(std::string const&) { @@ -872,7 +871,6 @@ void cmVisualStudio10TargetGenerator::WriteCustomCommands() } } -//---------------------------------------------------------------------------- void cmVisualStudio10TargetGenerator ::WriteCustomCommand(cmSourceFile const* sf) { @@ -1919,7 +1917,6 @@ OutputLinkIncremental(std::string const& configName) } } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeClOptions() { for(std::vector<std::string>::const_iterator @@ -1934,7 +1931,6 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions() return true; } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeClOptions( std::string const& configName) { @@ -2050,7 +2046,6 @@ bool cmVisualStudio10TargetGenerator::ComputeClOptions( return true; } -//---------------------------------------------------------------------------- void cmVisualStudio10TargetGenerator::WriteClOptions( std::string const& configName, std::vector<std::string> const& includes) @@ -2114,7 +2109,6 @@ void cmVisualStudio10TargetGenerator::WriteClOptions( this->WriteString("</ClCompile>\n", 2); } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeRcOptions() { for(std::vector<std::string>::const_iterator @@ -2129,7 +2123,6 @@ bool cmVisualStudio10TargetGenerator::ComputeRcOptions() return true; } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeRcOptions( std::string const& configName) { @@ -2175,7 +2168,6 @@ WriteRCOptions(std::string const& configName, this->WriteString("</ResourceCompile>\n", 2); } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeMasmOptions() { if(!this->GlobalGenerator->IsMasmEnabled()) @@ -2194,7 +2186,6 @@ bool cmVisualStudio10TargetGenerator::ComputeMasmOptions() return true; } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeMasmOptions( std::string const& configName) { @@ -2305,7 +2296,6 @@ void cmVisualStudio10TargetGenerator::WriteManifestOptions( } } -//---------------------------------------------------------------------------- void cmVisualStudio10TargetGenerator::WriteAntBuildOptions( std::string const& configName) { @@ -2445,7 +2435,6 @@ void cmVisualStudio10TargetGenerator::WriteAntBuildOptions( this->WriteString("</AntBuild>\n", 2); } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeLinkOptions() { if(this->GeneratorTarget->GetType() == cmState::EXECUTABLE || @@ -2465,7 +2454,6 @@ bool cmVisualStudio10TargetGenerator::ComputeLinkOptions() return true; } -//---------------------------------------------------------------------------- bool cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) { @@ -2749,7 +2737,6 @@ cmVisualStudio10TargetGenerator::ComputeLinkOptions(std::string const& config) return true; } -//---------------------------------------------------------------------------- void cmVisualStudio10TargetGenerator::WriteLinkOptions(std::string const& config) { @@ -3433,6 +3420,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80() cmGeneratedFileStream fout(manifestFile.c_str()); fout.SetCopyIfDifferent(true); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" "<Deployment" @@ -3468,6 +3456,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP80() "\t\t</ScreenResolutions>\n" "\t</App>\n" "</Deployment>\n"; + /* clang-format on */ std::string sourceFile = this->ConvertPath(manifestFile, false); this->ConvertToWindowsSlash(sourceFile); @@ -3517,6 +3506,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP81() cmGeneratedFileStream fout(manifestFile.c_str()); fout.SetCopyIfDifferent(true); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" "<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\"" @@ -3560,6 +3550,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWP81() "\t\t</Application>\n" "\t</Applications>\n" "</Package>\n"; + /* clang-format on */ this->WriteCommonMissingFiles(manifestFile); } @@ -3578,6 +3569,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS80() cmGeneratedFileStream fout(manifestFile.c_str()); fout.SetCopyIfDifferent(true); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" "<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\">\n" @@ -3613,6 +3605,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS80() "\t\t</Application>\n" "\t</Applications>\n" "</Package>\n"; + /* clang-format on */ this->WriteCommonMissingFiles(manifestFile); } @@ -3631,6 +3624,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS81() cmGeneratedFileStream fout(manifestFile.c_str()); fout.SetCopyIfDifferent(true); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" "<Package xmlns=\"http://schemas.microsoft.com/appx/2010/manifest\"" @@ -3671,6 +3665,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS81() "\t\t</Application>\n" "\t</Applications>\n" "</Package>\n"; + /* clang-format on */ this->WriteCommonMissingFiles(manifestFile); } @@ -3689,6 +3684,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS10_0() cmGeneratedFileStream fout(manifestFile.c_str()); fout.SetCopyIfDifferent(true); + /* clang-format off */ fout << "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" "<Package\n\t" @@ -3730,6 +3726,7 @@ void cmVisualStudio10TargetGenerator::WriteMissingFilesWS10_0() "\t\t</Application>\n" "\t</Applications>\n" "</Package>\n"; + /* clang-format on */ this->WriteCommonMissingFiles(manifestFile); } diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 044e0dd..6c946c9 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -11,6 +11,7 @@ ============================================================================*/ #ifndef cmVisualStudioTargetGenerator_h #define cmVisualStudioTargetGenerator_h + #include "cmStandardIncludes.h" class cmMakefile; diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx index bd4eb69..00374e8 100644 --- a/Source/cmVisualStudioGeneratorOptions.cxx +++ b/Source/cmVisualStudioGeneratorOptions.cxx @@ -1,4 +1,5 @@ #include "cmVisualStudioGeneratorOptions.h" + #include "cmOutputConverter.h" #include "cmSystemTools.h" #include "cmVisualStudio10TargetGenerator.h" @@ -24,7 +25,6 @@ std::string cmVisualStudioGeneratorOptionsEscapeForXML(std::string ret) return ret; } -//---------------------------------------------------------------------------- cmVisualStudioGeneratorOptions ::cmVisualStudioGeneratorOptions(cmLocalVisualStudioGenerator* lg, Tool tool, @@ -44,7 +44,6 @@ cmVisualStudioGeneratorOptions this->FortranRuntimeMT = false; } -//---------------------------------------------------------------------------- cmVisualStudioGeneratorOptions ::cmVisualStudioGeneratorOptions(cmLocalVisualStudioGenerator* lg, Tool tool, @@ -70,7 +69,6 @@ cmVisualStudioGeneratorOptions this->FortranRuntimeMT = false; } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::AddTable(cmVS7FlagTable const* table) { if(table) @@ -86,7 +84,6 @@ void cmVisualStudioGeneratorOptions::AddTable(cmVS7FlagTable const* table) } } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::FixExceptionHandlingDefault() { // Exception handling is on by default because the platform file has @@ -116,7 +113,6 @@ void cmVisualStudioGeneratorOptions::FixExceptionHandlingDefault() } } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::SetVerboseMakefile(bool verbose) { // If verbose makefiles have been requested and the /nologo option @@ -141,13 +137,11 @@ bool cmVisualStudioGeneratorOptions::IsDebug() const return this->FlagMap.find("DebugInformationFormat") != this->FlagMap.end(); } -//---------------------------------------------------------------------------- bool cmVisualStudioGeneratorOptions::IsWinRt() const { return this->FlagMap.find("CompileAsWinRT") != this->FlagMap.end(); } -//---------------------------------------------------------------------------- bool cmVisualStudioGeneratorOptions::UsingUnicode() const { // Look for the a _UNICODE definition. @@ -161,7 +155,6 @@ bool cmVisualStudioGeneratorOptions::UsingUnicode() const } return false; } -//---------------------------------------------------------------------------- bool cmVisualStudioGeneratorOptions::UsingSBCS() const { // Look for the a _SBCS definition. @@ -176,7 +169,6 @@ bool cmVisualStudioGeneratorOptions::UsingSBCS() const return false; } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::Parse(const char* flags) { // Parse the input string as a windows command line since the string @@ -193,7 +185,6 @@ void cmVisualStudioGeneratorOptions::Parse(const char* flags) } } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::ParseFinish() { if(this->CurrentTool == FortranCompiler) @@ -215,7 +206,6 @@ void cmVisualStudioGeneratorOptions::ParseFinish() } } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag) { // Look for Intel Fortran flags that do not map well in the flag table. @@ -252,13 +242,11 @@ void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag) cmOutputConverter::Shell_Flag_VSIDE); } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions::SetConfiguration(const char* config) { this->Configuration = config; } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions ::OutputPreprocessorDefinitions(std::ostream& fout, @@ -335,7 +323,6 @@ cmVisualStudioGeneratorOptions } } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions ::OutputFlagMap(std::ostream& fout, const char* indent) @@ -386,7 +373,6 @@ cmVisualStudioGeneratorOptions } } -//---------------------------------------------------------------------------- void cmVisualStudioGeneratorOptions ::OutputAdditionalOptions(std::ostream& fout, diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h index 0179134..e5633be 100644 --- a/Source/cmVisualStudioGeneratorOptions.h +++ b/Source/cmVisualStudioGeneratorOptions.h @@ -19,7 +19,6 @@ typedef cmIDEFlagTable cmVS7FlagTable; class cmVisualStudio10TargetGenerator; -//---------------------------------------------------------------------------- class cmVisualStudioGeneratorOptions: public cmIDEOptions { public: diff --git a/Source/cmVisualStudioSlnData.cxx b/Source/cmVisualStudioSlnData.cxx index 82b4ee8..6d7c5ce 100644 --- a/Source/cmVisualStudioSlnData.cxx +++ b/Source/cmVisualStudioSlnData.cxx @@ -11,7 +11,6 @@ ============================================================================*/ #include "cmVisualStudioSlnData.h" -//---------------------------------------------------------------------------- const cmSlnProjectEntry* cmSlnData::GetProjectByGUID(const std::string& projectGUID) const { @@ -22,7 +21,6 @@ cmSlnData::GetProjectByGUID(const std::string& projectGUID) const return NULL; } -//---------------------------------------------------------------------------- const cmSlnProjectEntry* cmSlnData::GetProjectByName(const std::string& projectName) const { @@ -33,7 +31,6 @@ cmSlnData::GetProjectByName(const std::string& projectName) const return NULL; } -//---------------------------------------------------------------------------- std::vector<cmSlnProjectEntry> cmSlnData::GetProjects() const { ProjectStringIndex::const_iterator it(this->ProjectNameIndex.begin()), @@ -44,7 +41,6 @@ std::vector<cmSlnProjectEntry> cmSlnData::GetProjects() const return result; } -//---------------------------------------------------------------------------- cmSlnProjectEntry* cmSlnData::AddProject( const std::string& projectGUID, const std::string& projectName, diff --git a/Source/cmVisualStudioSlnParser.cxx b/Source/cmVisualStudioSlnParser.cxx index d182a75..2bbea55 100644 --- a/Source/cmVisualStudioSlnParser.cxx +++ b/Source/cmVisualStudioSlnParser.cxx @@ -18,7 +18,6 @@ #include <cassert> #include <stack> -//---------------------------------------------------------------------------- namespace { enum LineFormat @@ -30,7 +29,6 @@ namespace }; } -//---------------------------------------------------------------------------- class cmVisualStudioSlnParser::ParsedLine { public: @@ -64,25 +62,21 @@ private: static const std::string Quote; }; -//---------------------------------------------------------------------------- const std::string cmVisualStudioSlnParser::ParsedLine::BadString; const std::string cmVisualStudioSlnParser::ParsedLine::Quote("\""); -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParsedLine::IsComment() const { assert(!this->Tag.empty()); return (this->Tag[0]== '#'); } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParsedLine::IsKeyValuePair() const { assert(!this->Tag.empty()); return this->Arg.first.empty() && this->Values.size() == 1; } -//---------------------------------------------------------------------------- std::string cmVisualStudioSlnParser::ParsedLine::GetArgVerbatim() const { if (this->Arg.second) @@ -91,7 +85,6 @@ std::string cmVisualStudioSlnParser::ParsedLine::GetArgVerbatim() const return this->Arg.first; } -//---------------------------------------------------------------------------- const std::string& cmVisualStudioSlnParser::ParsedLine::GetValue(size_t idxValue) const { @@ -101,7 +94,6 @@ cmVisualStudioSlnParser::ParsedLine::GetValue(size_t idxValue) const return BadString; } -//---------------------------------------------------------------------------- std::string cmVisualStudioSlnParser::ParsedLine::GetValueVerbatim(size_t idxValue) const { @@ -117,7 +109,6 @@ cmVisualStudioSlnParser::ParsedLine::GetValueVerbatim(size_t idxValue) const return BadString; } -//---------------------------------------------------------------------------- class cmVisualStudioSlnParser::State { public: @@ -156,7 +147,6 @@ private: void IgnoreUntilTag(const std::string& endTag); }; -//---------------------------------------------------------------------------- cmVisualStudioSlnParser::State::State(DataGroupSet requestedData) : RequestedData(requestedData), CurrentLine(0) @@ -166,7 +156,6 @@ cmVisualStudioSlnParser::State::State(DataGroupSet requestedData) : this->Stack.push(FileStateStart); } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::State::ReadLine(std::istream& input, std::string& line) { @@ -174,7 +163,6 @@ bool cmVisualStudioSlnParser::State::ReadLine(std::istream& input, return !std::getline(input, line).fail(); } -//---------------------------------------------------------------------------- LineFormat cmVisualStudioSlnParser::State::NextLineFormat() const { switch (this->Stack.top()) @@ -195,7 +183,6 @@ LineFormat cmVisualStudioSlnParser::State::NextLineFormat() const } } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::State::Process( const cmVisualStudioSlnParser::ParsedLine& line, cmSlnData& output, cmVisualStudioSlnParser::ResultData& result) @@ -379,7 +366,6 @@ bool cmVisualStudioSlnParser::State::Process( return true; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::State::Finished( cmVisualStudioSlnParser::ResultData& result) { @@ -392,26 +378,22 @@ bool cmVisualStudioSlnParser::State::Finished( return true; } -//---------------------------------------------------------------------------- void cmVisualStudioSlnParser::State::IgnoreUntilTag(const std::string& endTag) { this->Stack.push(FileStateIgnore); this->EndIgnoreTag = endTag; } -//---------------------------------------------------------------------------- cmVisualStudioSlnParser::ResultData::ResultData() : Result(ResultOK) , ResultLine(0) {} -//---------------------------------------------------------------------------- void cmVisualStudioSlnParser::ResultData::Clear() { *this = ResultData(); } -//---------------------------------------------------------------------------- void cmVisualStudioSlnParser::ResultData::SetError(ParseResult error, size_t line) { @@ -419,7 +401,6 @@ void cmVisualStudioSlnParser::ResultData::SetError(ParseResult error, this->ResultLine = line; } -//---------------------------------------------------------------------------- const cmVisualStudioSlnParser::DataGroupSet cmVisualStudioSlnParser::DataGroupProjects( 1 << cmVisualStudioSlnParser::DataGroupProjectsBit); @@ -447,7 +428,6 @@ cmVisualStudioSlnParser::DataGroupGenericGlobalSections( const cmVisualStudioSlnParser::DataGroupSet cmVisualStudioSlnParser::DataGroupAll(~0); -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::Parse(std::istream& input, cmSlnData& output, DataGroupSet dataGroups) @@ -462,7 +442,6 @@ bool cmVisualStudioSlnParser::Parse(std::istream& input, return this->ParseImpl(input, output, state); } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseFile(const std::string& file, cmSlnData& output, DataGroupSet dataGroups) @@ -483,26 +462,22 @@ bool cmVisualStudioSlnParser::ParseFile(const std::string& file, return this->ParseImpl(f, output, state); } -//---------------------------------------------------------------------------- cmVisualStudioSlnParser::ParseResult cmVisualStudioSlnParser::GetParseResult() const { return this->LastResult.Result; } -//---------------------------------------------------------------------------- size_t cmVisualStudioSlnParser::GetParseResultLine() const { return this->LastResult.ResultLine; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::GetParseHadBOM() const { return this->LastResult.HadBOM; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::IsDataGroupSetSupported(DataGroupSet dataGroups) const { @@ -510,7 +485,6 @@ cmVisualStudioSlnParser::IsDataGroupSetSupported(DataGroupSet dataGroups) const //only supporting DataGroupProjects for now } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseImpl(std::istream& input, cmSlnData& output, State& state) @@ -552,7 +526,6 @@ bool cmVisualStudioSlnParser::ParseImpl(std::istream& input, return state.Finished(this->LastResult); } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseBOM(std::istream& input, std::string& line, State& state) @@ -575,7 +548,6 @@ bool cmVisualStudioSlnParser::ParseBOM(std::istream& input, return true; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseMultiValueTag(const std::string& line, ParsedLine& parsedLine, State& state) @@ -626,7 +598,6 @@ bool cmVisualStudioSlnParser::ParseMultiValueTag(const std::string& line, return true; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseSingleValueTag(const std::string& line, ParsedLine& parsedLine, State& state) @@ -643,7 +614,6 @@ bool cmVisualStudioSlnParser::ParseSingleValueTag(const std::string& line, return true; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseKeyValuePair(const std::string& line, ParsedLine& parsedLine, State& /*state*/) @@ -661,7 +631,6 @@ bool cmVisualStudioSlnParser::ParseKeyValuePair(const std::string& line, return true; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseTag(const std::string& fullTag, ParsedLine& parsedLine, State& state) @@ -698,7 +667,6 @@ bool cmVisualStudioSlnParser::ParseTag(const std::string& fullTag, return true; } -//---------------------------------------------------------------------------- bool cmVisualStudioSlnParser::ParseValue(const std::string& value, ParsedLine& parsedLine) { diff --git a/Source/cmVisualStudioWCEPlatformParser.cxx b/Source/cmVisualStudioWCEPlatformParser.cxx index ca226fb..b6ee754 100644 --- a/Source/cmVisualStudioWCEPlatformParser.cxx +++ b/Source/cmVisualStudioWCEPlatformParser.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmVisualStudioWCEPlatformParser.h" + #include "cmGlobalVisualStudioGenerator.h" #include "cmXMLParser.h" diff --git a/Source/cmVisualStudioWCEPlatformParser.h b/Source/cmVisualStudioWCEPlatformParser.h index 042df01..14f8df8 100644 --- a/Source/cmVisualStudioWCEPlatformParser.h +++ b/Source/cmVisualStudioWCEPlatformParser.h @@ -11,6 +11,7 @@ ============================================================================*/ #ifndef cmVisualStudioWCEPlatformParser_h #define cmVisualStudioWCEPlatformParser_h + #include "cmStandardIncludes.h" #include "cmXMLParser.h" diff --git a/Source/cmWhileCommand.cxx b/Source/cmWhileCommand.cxx index aabbe27..5fdccaa 100644 --- a/Source/cmWhileCommand.cxx +++ b/Source/cmWhileCommand.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmWhileCommand.h" + #include "cmConditionEvaluator.h" cmWhileFunctionBlocker::cmWhileFunctionBlocker(cmMakefile* mf): @@ -55,13 +56,9 @@ IsFunctionBlocked(const cmListFileFunction& lff, cmMakefile &mf, commandContext.Line = execContext.Line; commandContext.Name = execContext.Name; - cmListFileContext conditionContext = - cmListFileContext::FromCommandContext( - commandContext, - this->GetStartingContext().FilePath); - cmConditionEvaluator conditionEvaluator( - mf, conditionContext, + mf, + this->GetStartingContext(), mf.GetBacktrace(commandContext)); bool isTrue = conditionEvaluator.IsTrue( diff --git a/Source/cmWhileCommand.h b/Source/cmWhileCommand.h index 85a0bd3..902c55a 100644 --- a/Source/cmWhileCommand.h +++ b/Source/cmWhileCommand.h @@ -13,6 +13,7 @@ #define cmWhileCommand_h #include "cmCommand.h" + #include "cmFunctionBlocker.h" #include "cmListFileCache.h" diff --git a/Source/cmWriteFileCommand.cxx b/Source/cmWriteFileCommand.cxx index cc9f220..c4468f3 100644 --- a/Source/cmWriteFileCommand.cxx +++ b/Source/cmWriteFileCommand.cxx @@ -10,9 +10,11 @@ See the License for more information. ============================================================================*/ #include "cmWriteFileCommand.h" + #include <cmsys/FStream.hxx> #include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> // cmLibraryCommand diff --git a/Source/cmXCode21Object.cxx b/Source/cmXCode21Object.cxx index 3973540..b47e302 100644 --- a/Source/cmXCode21Object.cxx +++ b/Source/cmXCode21Object.cxx @@ -10,16 +10,15 @@ See the License for more information. ============================================================================*/ #include "cmXCode21Object.h" + #include "cmSystemTools.h" -//---------------------------------------------------------------------------- cmXCode21Object::cmXCode21Object(PBXType ptype, Type type) :cmXCodeObject(ptype, type) { this->Version = 21; } -//---------------------------------------------------------------------------- void cmXCode21Object::PrintComment(std::ostream& out) { if(this->Comment.empty()) @@ -40,7 +39,6 @@ void cmXCode21Object::PrintComment(std::ostream& out) out << " */"; } -//---------------------------------------------------------------------------- void cmXCode21Object::PrintList(std::vector<cmXCodeObject*> const& v, std::ostream& out, PBXType t) { @@ -72,7 +70,6 @@ void cmXCode21Object::PrintList(std::vector<cmXCodeObject*> const& v, out << "/* End " << PBXTypeNames[t] << " section */\n"; } -//---------------------------------------------------------------------------- void cmXCode21Object::PrintList(std::vector<cmXCodeObject*> const& v, std::ostream& out) { diff --git a/Source/cmXCodeObject.cxx b/Source/cmXCodeObject.cxx index 911e154..6a6c253 100644 --- a/Source/cmXCodeObject.cxx +++ b/Source/cmXCodeObject.cxx @@ -10,12 +10,13 @@ See the License for more information. ============================================================================*/ #include "cmXCodeObject.h" + #include "cmSystemTools.h" #include <CoreFoundation/CoreFoundation.h> // CFUUIDCreate -//---------------------------------------------------------------------------- const char* cmXCodeObject::PBXTypeNames[] = { + /* clang-format needs this comment to break after the opening brace */ "PBXGroup", "PBXBuildStyle", "PBXProject", "PBXHeadersBuildPhase", "PBXSourcesBuildPhase", "PBXFrameworksBuildPhase", "PBXNativeTarget", "PBXFileReference", "PBXBuildFile", "PBXContainerItemProxy", @@ -28,13 +29,11 @@ const char* cmXCodeObject::PBXTypeNames[] = { "None" }; -//---------------------------------------------------------------------------- cmXCodeObject::~cmXCodeObject() { this->Version = 15; } -//---------------------------------------------------------------------------- cmXCodeObject::cmXCodeObject(PBXType ptype, Type type) { this->Version = 15; @@ -76,7 +75,6 @@ cmXCodeObject::cmXCodeObject(PBXType ptype, Type type) } } -//---------------------------------------------------------------------------- void cmXCodeObject::Indent(int level, std::ostream& out) { while(level) @@ -86,7 +84,6 @@ void cmXCodeObject::Indent(int level, std::ostream& out) } } -//---------------------------------------------------------------------------- void cmXCodeObject::Print(std::ostream& out) { std::string separator = "\n"; @@ -209,7 +206,6 @@ void cmXCodeObject::PrintAttribute(std::ostream& out, const int level, } } -//---------------------------------------------------------------------------- void cmXCodeObject::PrintList(std::vector<cmXCodeObject*> const& objs, std::ostream& out) { @@ -226,7 +222,6 @@ void cmXCodeObject::PrintList(std::vector<cmXCodeObject*> const& objs, out << "};\n"; } -//---------------------------------------------------------------------------- void cmXCodeObject::CopyAttributes(cmXCodeObject* copy) { this->ObjectAttributes = copy->ObjectAttributes; @@ -235,7 +230,6 @@ void cmXCodeObject::CopyAttributes(cmXCodeObject* copy) this->Object = copy->Object; } -//---------------------------------------------------------------------------- void cmXCodeObject::PrintString(std::ostream& os,std::string String) { // The string needs to be quoted if it contains any characters @@ -270,7 +264,6 @@ void cmXCodeObject::PrintString(std::ostream& os) const cmXCodeObject::PrintString(os,this->String); } -//---------------------------------------------------------------------------- void cmXCodeObject::SetString(const std::string& s) { this->String = s; diff --git a/Source/cmXCodeObject.h b/Source/cmXCodeObject.h index 2d876da..d00cf0f 100644 --- a/Source/cmXCodeObject.h +++ b/Source/cmXCodeObject.h @@ -13,6 +13,7 @@ #define cmXCodeObject_h #include "cmStandardIncludes.h" + class cmGeneratorTarget; class cmXCodeObject diff --git a/Source/cmXMLParser.cxx b/Source/cmXMLParser.cxx index 1d3e0e9..e2f7afa 100644 --- a/Source/cmXMLParser.cxx +++ b/Source/cmXMLParser.cxx @@ -10,12 +10,12 @@ See the License for more information. ============================================================================*/ #include "cmXMLParser.h" + #include <cmsys/FStream.hxx> #include <cm_expat.h> #include <ctype.h> -//---------------------------------------------------------------------------- cmXMLParser::cmXMLParser() { this->Parser = 0; @@ -24,7 +24,6 @@ cmXMLParser::cmXMLParser() this->ReportCallbackData = 0; } -//---------------------------------------------------------------------------- cmXMLParser::~cmXMLParser() { if ( this->Parser ) @@ -33,7 +32,6 @@ cmXMLParser::~cmXMLParser() } } -//---------------------------------------------------------------------------- int cmXMLParser::Parse(const char* string) { return (int)this->InitializeParser() && @@ -59,7 +57,6 @@ int cmXMLParser::ParseFile(const char* file) return this->Parse(str.str().c_str()); } -//---------------------------------------------------------------------------- int cmXMLParser::InitializeParser() { if ( this->Parser ) @@ -81,7 +78,6 @@ int cmXMLParser::InitializeParser() return 1; } -//---------------------------------------------------------------------------- int cmXMLParser::ParseChunk(const char* inputString, std::string::size_type length) { @@ -100,7 +96,6 @@ int cmXMLParser::ParseChunk(const char* inputString, return res; } -//---------------------------------------------------------------------------- int cmXMLParser::CleanupParser() { if ( !this->Parser ) @@ -127,7 +122,6 @@ int cmXMLParser::CleanupParser() return result; } -//---------------------------------------------------------------------------- int cmXMLParser::ParseBuffer(const char* buffer, std::string::size_type count) { // Pass the buffer to the expat XML parser. @@ -140,45 +134,38 @@ int cmXMLParser::ParseBuffer(const char* buffer, std::string::size_type count) return 1; } -//---------------------------------------------------------------------------- int cmXMLParser::ParseBuffer(const char* buffer) { return this->ParseBuffer(buffer, static_cast<int>(strlen(buffer))); } -//---------------------------------------------------------------------------- int cmXMLParser::ParsingComplete() { // Default behavior is to parse to end of stream. return 0; } -//---------------------------------------------------------------------------- void cmXMLParser::StartElement(const std::string& name, const char ** /*atts*/) { std::cout << "Start element: " << name << std::endl; } -//---------------------------------------------------------------------------- void cmXMLParser::EndElement(const std::string& name) { std::cout << "End element: " << name << std::endl; } -//---------------------------------------------------------------------------- void cmXMLParser::CharacterDataHandler(const char* /*inData*/, int /*inLength*/) { } -//---------------------------------------------------------------------------- int cmXMLParser::IsSpace(char c) { return isspace(c); } -//---------------------------------------------------------------------------- const char* cmXMLParser::FindAttribute(const char** atts, const char* attribute) { @@ -195,7 +182,6 @@ const char* cmXMLParser::FindAttribute(const char** atts, return 0; } -//---------------------------------------------------------------------------- void cmXMLParserStartElement(void* parser, const char *name, const char **atts) { @@ -205,7 +191,6 @@ void cmXMLParserStartElement(void* parser, const char *name, static_cast<cmXMLParser*>(parser)->StartElement(name, atts); } -//---------------------------------------------------------------------------- void cmXMLParserEndElement(void* parser, const char *name) { // End element handler that is registered with the XML_Parser. This @@ -213,7 +198,6 @@ void cmXMLParserEndElement(void* parser, const char *name) static_cast<cmXMLParser*>(parser)->EndElement(name); } -//---------------------------------------------------------------------------- void cmXMLParserCharacterDataHandler(void* parser, const char* data, int length) { @@ -223,7 +207,6 @@ void cmXMLParserCharacterDataHandler(void* parser, const char* data, static_cast<cmXMLParser*>(parser)->CharacterDataHandler(data, length); } -//---------------------------------------------------------------------------- void cmXMLParser::ReportXmlParseError() { XML_Parser parser = static_cast<XML_Parser>(this->Parser); @@ -232,7 +215,6 @@ void cmXMLParser::ReportXmlParseError() XML_ErrorString(XML_GetErrorCode(parser))); } -//---------------------------------------------------------------------------- void cmXMLParser::ReportError(int line, int, const char* msg) { if(this->ReportCallback) diff --git a/Source/cmXMLSafe.cxx b/Source/cmXMLSafe.cxx index 4ad05ca..0a76e9d 100644 --- a/Source/cmXMLSafe.cxx +++ b/Source/cmXMLSafe.cxx @@ -16,10 +16,9 @@ #include <iostream> #include <sstream> -#include <string.h> #include <stdio.h> +#include <string.h> -//---------------------------------------------------------------------------- cmXMLSafe::cmXMLSafe(const char* s): Data(s), Size(static_cast<unsigned long>(strlen(s))), @@ -27,7 +26,6 @@ cmXMLSafe::cmXMLSafe(const char* s): { } -//---------------------------------------------------------------------------- cmXMLSafe::cmXMLSafe(std::string const& s): Data(s.c_str()), Size(static_cast<unsigned long>(s.length())), @@ -35,14 +33,12 @@ cmXMLSafe::cmXMLSafe(std::string const& s): { } -//---------------------------------------------------------------------------- cmXMLSafe& cmXMLSafe::Quotes(bool b) { this->DoQuotes = b; return *this; } -//---------------------------------------------------------------------------- std::string cmXMLSafe::str() { std::ostringstream ss; @@ -50,7 +46,6 @@ std::string cmXMLSafe::str() return ss.str(); } -//---------------------------------------------------------------------------- std::ostream& operator<<(std::ostream& os, cmXMLSafe const& self) { char const* first = self.Data; diff --git a/Source/cmXMLSafe.h b/Source/cmXMLSafe.h index ead2e01..7cf34ba 100644 --- a/Source/cmXMLSafe.h +++ b/Source/cmXMLSafe.h @@ -13,8 +13,9 @@ #define cmXMLSafe_h #include <cmsys/Configure.hxx> -#include <string> + #include <iosfwd> +#include <string> /** \class cmXMLSafe * \brief Write strings to XML with proper escapes diff --git a/Source/cmXMLWriter.cxx b/Source/cmXMLWriter.cxx index 6a9172a..ec26467 100644 --- a/Source/cmXMLWriter.cxx +++ b/Source/cmXMLWriter.cxx @@ -10,6 +10,7 @@ See the License for more information. ============================================================================*/ #include "cmXMLWriter.h" + #include "cmXMLSafe.h" #include <cassert> diff --git a/Source/cmXMLWriter.h b/Source/cmXMLWriter.h index 3083059..8fedcd4 100644 --- a/Source/cmXMLWriter.h +++ b/Source/cmXMLWriter.h @@ -13,6 +13,7 @@ #define cmXMLWiter_h #include "cmStandardIncludes.h" + #include "cmXMLSafe.h" #include <ostream> diff --git a/Source/cm_utf8.c b/Source/cm_utf8.c index c9bf259..6f5fa3a 100644 --- a/Source/cm_utf8.c +++ b/Source/cm_utf8.c @@ -45,7 +45,6 @@ static unsigned int const cm_utf8_min[7] = { 0, 0, 1u<<7, 1u<<11, 1u<<16, 1u<<21, 1u<<26 /*, 1u<<31 */ }; -/*--------------------------------------------------------------------------*/ const char* cm_utf8_decode_character(const char* first, const char* last, unsigned int* pc) { diff --git a/Source/cmake.cxx b/Source/cmake.cxx index dcc95af..3fd35fb 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -10,17 +10,18 @@ See the License for more information. ============================================================================*/ #include "cmake.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" -#include "cmExternalMakefileProjectGenerator.h" -#include "cmCommands.h" + +#include "cmAlgorithms.h" #include "cmCommand.h" +#include "cmCommands.h" +#include "cmDocumentationFormatter.h" +#include "cmExternalMakefileProjectGenerator.h" #include "cmFileTimeComparison.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" #include "cmSourceFile.h" -#include "cmTest.h" -#include "cmDocumentationFormatter.h" -#include "cmAlgorithms.h" #include "cmState.h" +#include "cmTest.h" #if defined(CMAKE_BUILD_WITH_CMAKE) # include "cmGraphVizWriter.h" @@ -28,9 +29,9 @@ # include <cmsys/SystemInformation.hxx> #endif +#include <cmsys/FStream.hxx> #include <cmsys/Glob.hxx> #include <cmsys/RegularExpression.hxx> -#include <cmsys/FStream.hxx> // only build kdevelop generator on non-windows platforms // when not bootstrapping cmake @@ -51,17 +52,17 @@ // include the generator #if defined(_WIN32) && !defined(__CYGWIN__) # if !defined(CMAKE_BOOT_MINGW) -# include "cmGlobalVisualStudio71Generator.h" -# include "cmGlobalVisualStudio8Generator.h" -# include "cmGlobalVisualStudio9Generator.h" +# include "cmGlobalBorlandMakefileGenerator.h" +# include "cmGlobalGhsMultiGenerator.h" +# include "cmGlobalJOMMakefileGenerator.h" +# include "cmGlobalNMakeMakefileGenerator.h" # include "cmGlobalVisualStudio10Generator.h" # include "cmGlobalVisualStudio11Generator.h" # include "cmGlobalVisualStudio12Generator.h" # include "cmGlobalVisualStudio14Generator.h" -# include "cmGlobalBorlandMakefileGenerator.h" -# include "cmGlobalNMakeMakefileGenerator.h" -# include "cmGlobalJOMMakefileGenerator.h" -# include "cmGlobalGhsMultiGenerator.h" +# include "cmGlobalVisualStudio71Generator.h" +# include "cmGlobalVisualStudio8Generator.h" +# include "cmGlobalVisualStudio9Generator.h" # define CMAKE_HAVE_VS_GENERATORS # endif # include "cmGlobalMSYSMakefileGenerator.h" @@ -80,8 +81,8 @@ #if !defined(CMAKE_BOOT_MINGW) # include "cmExtraCodeBlocksGenerator.h" #endif -#include "cmExtraSublimeTextGenerator.h" #include "cmExtraKateGenerator.h" +#include "cmExtraSublimeTextGenerator.h" #ifdef CMAKE_USE_KDEVELOP # include "cmGlobalKdevelopGenerator.h" @@ -98,11 +99,12 @@ # include "cmGlobalXCodeGenerator.h" # define CMAKE_USE_XCODE 1 # endif -# include <sys/types.h> -# include <sys/time.h> # include <sys/resource.h> +# include <sys/time.h> #endif +#include <sys/types.h> +// include sys/stat.h after sys/types.h #include <sys/stat.h> // struct stat #include <list> @@ -812,7 +814,6 @@ void cmake::SetArgs(const std::vector<std::string>& args, } } -//---------------------------------------------------------------------------- void cmake::SetDirectoriesFromFile(const char* arg) { // Check if the argument refers to a CMakeCache.txt or @@ -1002,7 +1003,6 @@ void cmake::AddDefaultExtraGenerators() } -//---------------------------------------------------------------------------- void cmake::GetRegisteredGenerators(std::vector<GeneratorInfo>& generators) { for (RegisteredGeneratorsVector::const_iterator @@ -1227,10 +1227,12 @@ int cmake::HandleDeleteCacheVariables(const std::string& var) } std::vector<SaveCacheEntry> saved; std::ostringstream warning; + /* clang-format off */ warning << "You have changed variables that require your cache to be deleted.\n" << "Configure will be re-run and you may have to reset some variables.\n" << "The following variables have changed:\n"; + /* clang-format on */ for(std::vector<std::string>::iterator i = argsSplit.begin(); i != argsSplit.end(); ++i) { @@ -1427,6 +1429,7 @@ int cmake::ActualConfigure() const char* GeneratorName; }; VSRegistryEntryName version[] = { + /* clang-format needs this comment to break after the opening brace */ {"7.1", "Visual Studio 7 .NET 2003"}, {"8.0", "Visual Studio 8 2005"}, {"9.0", "Visual Studio 9 2008"}, @@ -2024,7 +2027,6 @@ void cmake::UpdateConversionPathTable() } } -//---------------------------------------------------------------------------- int cmake::CheckBuildSystem() { // We do not need to rerun CMake. Check dependency integrity. Use @@ -2228,7 +2230,6 @@ int cmake::CheckBuildSystem() return 0; } -//---------------------------------------------------------------------------- void cmake::TruncateOutputLog(const char* fname) { std::string fullPath = this->GetHomeOutputDirectory(); @@ -2476,7 +2477,6 @@ int cmake::GetSystemInformation(std::vector<std::string>& args) return 0; } -//---------------------------------------------------------------------------- static bool cmakeCheckStampFile(const char* stampName) { // The stamp file does not exist. Use the stamp dependencies to @@ -2550,7 +2550,6 @@ static bool cmakeCheckStampFile(const char* stampName) } } -//---------------------------------------------------------------------------- static bool cmakeCheckStampList(const char* stampList) { // If the stamp list does not exist CMake must rerun to generate it. @@ -2744,7 +2743,6 @@ void displayMessage(cmake::MessageType t, std::ostringstream& msg) } } -//---------------------------------------------------------------------------- void cmake::IssueMessage(cmake::MessageType t, std::string const& text, cmListFileBacktrace const& bt, bool force) @@ -2784,42 +2782,6 @@ void cmake::IssueMessage(cmake::MessageType t, std::string const& text, displayMessage(t, msg); } -//---------------------------------------------------------------------------- -void cmake::IssueMessage(cmake::MessageType t, std::string const& text, - cmListFileContext const& lfc, - bool force) -{ - if (!force) - { - // override the message type, if needed, for warnings and errors - cmake::MessageType override = this->ConvertMessageType(t); - if (override != t) - { - t = override; - force = true; - } - } - - if (!force && !this->IsMessageTypeVisible(t)) - { - return; - } - - std::ostringstream msg; - if (!this->PrintMessagePreamble(t, msg)) - { - return; - } - - // Add the immediate context. - msg << (lfc.Line ? " at " : " in ") << lfc; - - printMessageText(msg, text); - - displayMessage(t, msg); -} - -//---------------------------------------------------------------------------- std::vector<std::string> cmake::GetDebugConfigs() { std::vector<std::string> configs; diff --git a/Source/cmake.h b/Source/cmake.h index 8496705..e41ba56 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -13,11 +13,13 @@ #ifndef cmake_h #define cmake_h -#include "cmListFileCache.h" -#include "cmSystemTools.h" -#include "cmInstalledFile.h" +#include "cmStandardIncludes.h" + #include "cmCacheManager.h" +#include "cmInstalledFile.h" +#include "cmListFileCache.h" #include "cmState.h" +#include "cmSystemTools.h" class cmGlobalGeneratorFactory; class cmGlobalGenerator; @@ -358,9 +360,6 @@ class cmake void IssueMessage(cmake::MessageType t, std::string const& text, cmListFileBacktrace const& backtrace = cmListFileBacktrace(), bool force = false); - void IssueMessage(cmake::MessageType t, std::string const& text, - cmListFileContext const& lfc, - bool force = false); ///! run the --build option int Build(const std::string& dir, diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 600cc1a..5f086d5 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -12,23 +12,22 @@ // include these first, otherwise there will be problems on Windows // with GetCurrentDirectory() being redefined #ifdef CMAKE_BUILD_WITH_CMAKE -#include "cmDynamicLoader.h" #include "cmDocumentation.h" +#include "cmDynamicLoader.h" #endif -#include "cmake.h" -#include "cmcmd.h" -#include "cmState.h" -#include "cmListFileCache.h" -#include "cmSourceFile.h" +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" +#include "cmListFileCache.h" #include "cmLocalGenerator.h" #include "cmMakefile.h" -#include "cmAlgorithms.h" +#include "cmSourceFile.h" +#include "cmState.h" +#include "cmake.h" +#include "cmcmd.h" #include <cmsys/Encoding.hxx> #ifdef CMAKE_BUILD_WITH_CMAKE -//---------------------------------------------------------------------------- static const char * cmDocumentationName[][2] = { {0, @@ -36,7 +35,6 @@ static const char * cmDocumentationName[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsage[][2] = { {0, @@ -49,7 +47,6 @@ static const char * cmDocumentationUsage[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsageNote[][2] = { {0, @@ -67,7 +64,6 @@ static const char * cmDocumentationUsageNote[][2] = " --use-stderr = Ignored. Behavior is default in CMake >= 3.0.\n" \ " -- = Pass remaining options to the native tool.\n" -//---------------------------------------------------------------------------- static const char * cmDocumentationOptions[][2] = { CMAKE_STANDARD_OPTIONS_TABLE, @@ -257,10 +253,12 @@ int do_cmake(int ac, char const* const* av) { if(strcmp(av[i], "-i") == 0) { + /* clang-format off */ std::cerr << "The \"cmake -i\" wizard mode is no longer supported.\n" "Use the -D option to set cache values on the command line.\n" "Use cmake-gui or ccmake for an interactive dialog.\n"; + /* clang-format on */ return 1; } else if(strcmp(av[i], "--system-information") == 0) @@ -375,7 +373,6 @@ int do_cmake(int ac, char const* const* av) } } -//---------------------------------------------------------------------------- static int do_build(int ac, char const* const* av) { #ifndef CMAKE_BUILD_WITH_CMAKE @@ -453,11 +450,13 @@ static int do_build(int ac, char const* const* av) } if(dir.empty()) { + /* clang-format off */ std::cerr << "Usage: cmake --build <dir> [options] [-- [native-options]]\n" "Options:\n" CMAKE_BUILD_OPTIONS ; + /* clang-format on */ return 1; } diff --git a/Source/cmakexbuild.cxx b/Source/cmakexbuild.cxx index 9aaeeaa..1385ff7 100644 --- a/Source/cmakexbuild.cxx +++ b/Source/cmakexbuild.cxx @@ -9,9 +9,10 @@ implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ -#include <cmsys/Process.h> #include "cmStandardIncludes.h" + #include "cmSystemTools.h" +#include <cmsys/Process.h> // This is a wrapper program for xcodebuild // it calls xcodebuild, and does two things diff --git a/Source/cmcldeps.cxx b/Source/cmcldeps.cxx index f3c6059..644da1d 100644 --- a/Source/cmcldeps.cxx +++ b/Source/cmcldeps.cxx @@ -19,12 +19,12 @@ // /showIncludes is equivalent to -MD, not -MMD, that is, system headers are // included. - -#include <windows.h> -#include <sstream> #include <cmSystemTools.h> #include <cmsys/Encoding.hxx> +#include <sstream> +#include <windows.h> + // We don't want any wildcard expansion. // See http://msdn.microsoft.com/en-us/library/zay8tzh6(v=vs.85).aspx void _setargv() {} diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index e9d77b2..7c07131 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -10,20 +10,21 @@ See the License for more information. ============================================================================*/ #include "cmcmd.h" -#include "cmMakefile.h" -#include "cmLocalGenerator.h" + +#include "cmAlgorithms.h" #include "cmGlobalGenerator.h" +#include "cmLocalGenerator.h" +#include "cmMakefile.h" #include "cmQtAutoGenerators.h" #include "cmVersion.h" -#include "cmAlgorithms.h" #if defined(CMAKE_BUILD_WITH_CMAKE) # include "cmDependsFortran.h" // For -E cmake_copy_f90_mod callback. #endif #include <cmsys/Directory.hxx> -#include <cmsys/Process.h> #include <cmsys/FStream.hxx> +#include <cmsys/Process.h> #include <cmsys/Terminal.h> #if defined(CMAKE_HAVE_VS_GENERATORS) @@ -43,14 +44,19 @@ void CMakeCommandUsage(const char* program) std::ostringstream errorStream; #ifdef CMAKE_BUILD_WITH_CMAKE + /* clang-format off */ errorStream << "cmake version " << cmVersion::GetCMakeVersion() << "\n"; + /* clang-format on */ #else + /* clang-format off */ errorStream << "cmake bootstrap\n"; + /* clang-format on */ #endif // If you add new commands, change here, // and in cmakemain.cxx in the options table + /* clang-format off */ errorStream << "Usage: " << program << " -E <command> [arguments...]\n" << "Available commands: \n" @@ -69,7 +75,7 @@ void CMakeCommandUsage(const char* program) << " - run command in a modified environment\n" << " environment - display the current environment\n" << " make_directory <dir>... - create parent and <dir> directories\n" - << " md5sum <file>... - compute md5sum of files\n" + << " md5sum <file>... - create MD5 checksum of files\n" << " remove [-f] <file>... - remove the file(s), use -f to force " "it\n" << " remove_directory dir - remove a directory and its contents\n" @@ -94,6 +100,7 @@ void CMakeCommandUsage(const char* program) << " create_symlink old new - create a symbolic link new -> old\n" #endif ; + /* clang-format on */ cmSystemTools::Error(errorStream.str().c_str()); } @@ -297,12 +304,14 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) if (args.size() < 3) { std::cerr << "__run_iwyu Usage: -E __run_iwyu [--iwyu=/path/iwyu]" - " -- compile command\n"; + " [--tidy=/path/tidy] -- compile command\n"; return 1; } bool doing_options = true; std::vector<std::string> orig_cmd; std::string iwyu; + std::string tidy; + std::string sourceFile; for (std::string::size_type cc = 2; cc < args.size(); cc ++) { std::string const& arg = args[cc]; @@ -314,6 +323,14 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) { iwyu = arg.substr(7); } + else if (doing_options && cmHasLiteralPrefix(arg, "--tidy=")) + { + tidy = arg.substr(7); + } + else if (doing_options && cmHasLiteralPrefix(arg, "--source=")) + { + sourceFile = arg.substr(9); + } else if (doing_options) { std::cerr << "__run_iwyu given unknown argument: " << arg << "\n"; @@ -324,9 +341,14 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) orig_cmd.push_back(arg); } } - if (iwyu.empty()) + if (tidy.empty() && iwyu.empty()) { - std::cerr << "__run_iwyu missing --iwyu=\n"; + std::cerr << "__run_iwyu missing --tidy= or --iwyu=\n"; + return 1; + } + if (!tidy.empty() && sourceFile.empty()) + { + std::cerr << "__run_iwyu --tidy= requires --source=\n"; return 1; } if (orig_cmd.empty()) @@ -335,29 +357,58 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) return 1; } - // Construct the iwyu command line by taking what was given - // and adding all the arguments we give to the compiler. - std::vector<std::string> iwyu_cmd; - cmSystemTools::ExpandListArgument(iwyu, iwyu_cmd, true); - iwyu_cmd.insert(iwyu_cmd.end(), orig_cmd.begin()+1, orig_cmd.end()); - - // Run the iwyu command line. Capture its stderr and hide its stdout. int ret = 0; - std::string stdErr; - if(!cmSystemTools::RunSingleCommand(iwyu_cmd, 0, &stdErr, &ret, - 0, cmSystemTools::OUTPUT_NONE)) + + if (!iwyu.empty()) { - std::cerr << "Error running '" << iwyu_cmd[0] << "': " - << stdErr << "\n"; - return 1; + // Construct the iwyu command line by taking what was given + // and adding all the arguments we give to the compiler. + std::vector<std::string> iwyu_cmd; + cmSystemTools::ExpandListArgument(iwyu, iwyu_cmd, true); + iwyu_cmd.insert(iwyu_cmd.end(), orig_cmd.begin()+1, orig_cmd.end()); + + // Run the iwyu command line. Capture its stderr and hide its stdout. + std::string stdErr; + if(!cmSystemTools::RunSingleCommand(iwyu_cmd, 0, &stdErr, &ret, + 0, cmSystemTools::OUTPUT_NONE)) + { + std::cerr << "Error running '" << iwyu_cmd[0] << "': " + << stdErr << "\n"; + return 1; + } + + // Warn if iwyu reported anything. + if(stdErr.find("should remove these lines:") != stdErr.npos + || stdErr.find("should add these lines:") != stdErr.npos) + { + std::cerr << "Warning: include-what-you-use reported diagnostics:\n" + << stdErr << "\n"; + } } - // Warn if iwyu reported anything. - if(stdErr.find("should remove these lines:") != stdErr.npos - || stdErr.find("should add these lines:") != stdErr.npos) + if (!tidy.empty()) { - std::cerr << "Warning: include-what-you-use reported diagnostics:\n" - << stdErr << "\n"; + // Construct the clang-tidy command line by taking what was given + // and adding our compiler command line. The clang-tidy tool will + // automatically skip over the compiler itself and extract the + // options. + std::vector<std::string> tidy_cmd; + cmSystemTools::ExpandListArgument(tidy, tidy_cmd, true); + tidy_cmd.push_back(sourceFile); + tidy_cmd.push_back("--"); + tidy_cmd.insert(tidy_cmd.end(), orig_cmd.begin(), orig_cmd.end()); + + // Run the tidy command line. Capture its stdout and hide its stderr. + std::string stdOut; + if(!cmSystemTools::RunSingleCommand(tidy_cmd, &stdOut, 0, &ret, 0, + cmSystemTools::OUTPUT_NONE)) + { + std::cerr << "Error running '" << tidy_cmd[0] << "'\n"; + return 1; + } + + // Output the stdout from clang-tidy to stderr + std::cerr << stdOut; } // Now run the real compiler command and return its result value. @@ -1054,7 +1105,6 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string>& args) return 1; } -//---------------------------------------------------------------------------- int cmcmd::SymlinkLibrary(std::vector<std::string>& args) { int result = 0; @@ -1080,7 +1130,6 @@ int cmcmd::SymlinkLibrary(std::vector<std::string>& args) return result; } -//---------------------------------------------------------------------------- int cmcmd::SymlinkExecutable(std::vector<std::string>& args) { int result = 0; @@ -1097,7 +1146,6 @@ int cmcmd::SymlinkExecutable(std::vector<std::string>& args) return result; } -//---------------------------------------------------------------------------- bool cmcmd::SymlinkInternal(std::string const& file, std::string const& link) { if(cmSystemTools::FileExists(link.c_str()) || @@ -1113,7 +1161,6 @@ bool cmcmd::SymlinkInternal(std::string const& file, std::string const& link) #endif } -//---------------------------------------------------------------------------- static void cmcmdProgressReport(std::string const& dir, std::string const& num) { @@ -1172,7 +1219,6 @@ static void cmcmdProgressReport(std::string const& dir, } } -//---------------------------------------------------------------------------- int cmcmd::ExecuteEchoColor(std::vector<std::string>& args) { // The arguments are @@ -1272,7 +1318,6 @@ int cmcmd::ExecuteEchoColor(std::vector<std::string>& args) return 0; } -//---------------------------------------------------------------------------- int cmcmd::ExecuteLinkScript(std::vector<std::string>& args) { // The arguments are @@ -1376,7 +1421,6 @@ int cmcmd::ExecuteLinkScript(std::vector<std::string>& args) return result; } -//---------------------------------------------------------------------------- int cmcmd::WindowsCEEnvironment(const char* version, const std::string& name) { #if defined(CMAKE_HAVE_VS_GENERATORS) diff --git a/Source/ctest.cxx b/Source/ctest.cxx index 7fa6aed..23b9ec4 100644 --- a/Source/ctest.cxx +++ b/Source/ctest.cxx @@ -13,14 +13,13 @@ #include "cmSystemTools.h" // Need these for documentation support. -#include "cmake.h" #include "cmDocumentation.h" +#include "cmake.h" -#include "CTest/cmCTestScriptHandler.h" #include "CTest/cmCTestLaunch.h" +#include "CTest/cmCTestScriptHandler.h" #include "cmsys/Encoding.hxx" -//---------------------------------------------------------------------------- static const char * cmDocumentationName[][2] = { {0, @@ -28,7 +27,6 @@ static const char * cmDocumentationName[][2] = {0,0} }; -//---------------------------------------------------------------------------- static const char * cmDocumentationUsage[][2] = { {0, @@ -36,8 +34,6 @@ static const char * cmDocumentationUsage[][2] = {0,0} }; -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- static const char * cmDocumentationOptions[][2] = { {"-C <cfg>, --build-config <cfg>", "Choose configuration to test."}, diff --git a/Tests/AliasTarget/subdir/CMakeLists.txt b/Tests/AliasTarget/subdir/CMakeLists.txt index 8c84aea..05a7d86 100644 --- a/Tests/AliasTarget/subdir/CMakeLists.txt +++ b/Tests/AliasTarget/subdir/CMakeLists.txt @@ -1,3 +1,8 @@ add_library(tgt STATIC empty.cpp) add_library(Sub::tgt ALIAS tgt) + +# foo comes from the top-level CMakeLists.txt +add_library(Top::foo ALIAS foo) +get_target_property(some_prop Top::foo SOME_PROP) +target_link_libraries(tgt Top::foo) diff --git a/Tests/BuildDepends/Project/bar.cxx b/Tests/BuildDepends/Project/bar.cxx index dadf93d..c4adbf8 100644 --- a/Tests/BuildDepends/Project/bar.cxx +++ b/Tests/BuildDepends/Project/bar.cxx @@ -1,7 +1,7 @@ +#include <noregen.h> +#include <regen.h> #include <stdio.h> #include <string.h> -#include <regen.h> -#include <noregen.h> int main(int argc, char** argv) { diff --git a/Tests/BuildDepends/Project/ninjadep.cpp b/Tests/BuildDepends/Project/ninjadep.cpp index 8d61336..5498b17 100644 --- a/Tests/BuildDepends/Project/ninjadep.cpp +++ b/Tests/BuildDepends/Project/ninjadep.cpp @@ -1,5 +1,5 @@ -#include <stdio.h> #include "dir/header.h" +#include <stdio.h> int main() { printf("HEADER_STRING: %s\n", HEADER_STRING); diff --git a/Tests/BuildDepends/Project/zot.cxx b/Tests/BuildDepends/Project/zot.cxx index 775fd3b..186554b 100644 --- a/Tests/BuildDepends/Project/zot.cxx +++ b/Tests/BuildDepends/Project/zot.cxx @@ -1,6 +1,6 @@ +#include <stdio.h> #include <zot.hxx> #include <zot_custom.hxx> -#include <stdio.h> const char* zot_macro_dir_f(); const char* zot_macro_tgt_f(); diff --git a/Tests/BundleTest/BundleLib.cxx b/Tests/BundleTest/BundleLib.cxx index 37bc178..54f9534 100644 --- a/Tests/BundleTest/BundleLib.cxx +++ b/Tests/BundleTest/BundleLib.cxx @@ -1,6 +1,6 @@ #include <stdio.h> -#include <string.h> #include <stdlib.h> +#include <string.h> #include <unistd.h> #include <CoreFoundation/CoreFoundation.h> diff --git a/Tests/BundleUtilities/module.cpp b/Tests/BundleUtilities/module.cpp index ee1b542..51730d9 100644 --- a/Tests/BundleUtilities/module.cpp +++ b/Tests/BundleUtilities/module.cpp @@ -1,7 +1,7 @@ #include "module.h" -#include "stdio.h" #include "shared2.h" +#include "stdio.h" void module() { diff --git a/Tests/CFBundleTest/Localized.rsrc b/Tests/CFBundleTest/Localized.rsrc Binary files differindex cbf3523..7973c1f 100644 --- a/Tests/CFBundleTest/Localized.rsrc +++ b/Tests/CFBundleTest/Localized.rsrc diff --git a/Tests/CMakeCommands/target_include_directories/consumer.cpp b/Tests/CMakeCommands/target_include_directories/consumer.cpp index 649510c..9e1656a 100644 --- a/Tests/CMakeCommands/target_include_directories/consumer.cpp +++ b/Tests/CMakeCommands/target_include_directories/consumer.cpp @@ -1,9 +1,9 @@ +#include "consumer.h" #include "common.h" -#include "publicinclude.h" #include "interfaceinclude.h" +#include "publicinclude.h" #include "relative_dir.h" -#include "consumer.h" #ifdef TEST_LANG_DEFINES #include "cxx_only.h" #endif diff --git a/Tests/CMakeCommands/target_link_libraries/targetC.cpp b/Tests/CMakeCommands/target_link_libraries/targetC.cpp index a4ef636..3542660 100644 --- a/Tests/CMakeCommands/target_link_libraries/targetC.cpp +++ b/Tests/CMakeCommands/target_link_libraries/targetC.cpp @@ -1,8 +1,8 @@ #include "depG.h" -#include "foo.h" #include "bar.h" +#include "foo.h" #ifndef TEST_DEF #error Expected TEST_DEF definition diff --git a/Tests/CMakeLib/testUTF8.cxx b/Tests/CMakeLib/testUTF8.cxx index 4ab96cf..204a717 100644 --- a/Tests/CMakeLib/testUTF8.cxx +++ b/Tests/CMakeLib/testUTF8.cxx @@ -11,8 +11,8 @@ ============================================================================*/ #include <cm_utf8.h> -#include <string.h> #include <stdio.h> +#include <string.h> typedef char test_utf8_char[5]; diff --git a/Tests/CMakeLib/testVisualStudioSlnParser.cxx b/Tests/CMakeLib/testVisualStudioSlnParser.cxx index 5007ab8..b31cc47 100644 --- a/Tests/CMakeLib/testVisualStudioSlnParser.cxx +++ b/Tests/CMakeLib/testVisualStudioSlnParser.cxx @@ -5,7 +5,6 @@ #include <iostream> -//---------------------------------------------------------------------------- static bool parsedRight(cmVisualStudioSlnParser& parser, const std::string& file, cmSlnData& data, cmVisualStudioSlnParser::ParseResult expected = @@ -34,7 +33,6 @@ static bool parsedRight(cmVisualStudioSlnParser& parser, return false; } -//---------------------------------------------------------------------------- int testVisualStudioSlnParser(int, char*[]) { cmVisualStudioSlnParser parser; @@ -69,6 +67,7 @@ int testVisualStudioSlnParser(int, char*[]) "cmsysTestsCxx", "cmsys_c", "cmw9xcom", "cmzlib", "cpack", "ctest", "documentation", "memcheck_fail", "pseudo_BC", "pseudo_purify", "pseudo_valgrind", "test_clean", "uninstall" + /* clang-format needs this comment to break after the opening brace */ }; const size_t expectedProjectCount = sizeof(names) / sizeof(*names); if (projects.size() != expectedProjectCount) @@ -160,6 +159,7 @@ int testVisualStudioSlnParser(int, char*[]) { "header", "projectArgs", "topLevel", "projectContents", "projectSection", "global", "unclosed", "strayQuote", "strayParen", "strayQuote2" + /* clang-format needs this comment to break after the opening brace */ }; for (size_t idx = 0; idx < sizeof(files) / sizeof(files[0]); ++idx) { diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 8a256bf..2db5ded 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2103,6 +2103,17 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release endmacro () add_test_GhsMulti("arm_integrity_simarm" "arm_integrity.tgt" "simarm") add_test_GhsMulti("arm64_integrity_simarm" "arm64_integrity.tgt" "simarm") + add_test(NAME GhsMulti.duplicate_source_filenames + COMMAND ${CMAKE_CTEST_COMMAND} + --build-and-test + "${CMake_SOURCE_DIR}/Tests/GhsMultiDuplicateSourceFilenames" + "${CMake_BINARY_DIR}/Tests/GhsMultiDuplicateSourceFilenames" + --build-generator "Green Hills MULTI" + --build-project ReturnNum + --build-config $<CONFIGURATION> + --build-options -DGHS_PRIMARY_TARGET="arm_integrity.tgt" + -DGHS_BSP_NAME="simarm" + ) endif () if(tegra AND NOT "${CMake_SOURCE_DIR};${CMake_BINARY_DIR}" MATCHES " ") diff --git a/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON.cmake b/Tests/CTestCoverageCollectGCOV/TestProject/extra/uncovered1.cpp index e69de29..e69de29 100644 --- a/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON.cmake +++ b/Tests/CTestCoverageCollectGCOV/TestProject/extra/uncovered1.cpp diff --git a/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-OFF.cmake b/Tests/CTestCoverageCollectGCOV/TestProject/uncovered2.cpp index e69de29..e69de29 100644 --- a/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-OFF.cmake +++ b/Tests/CTestCoverageCollectGCOV/TestProject/uncovered2.cpp diff --git a/Tests/CTestCoverageCollectGCOV/test.cmake.in b/Tests/CTestCoverageCollectGCOV/test.cmake.in index b2e6d6d..d48ef61 100644 --- a/Tests/CTestCoverageCollectGCOV/test.cmake.in +++ b/Tests/CTestCoverageCollectGCOV/test.cmake.in @@ -15,7 +15,9 @@ list(APPEND CTEST_CUSTOM_COVERAGE_EXCLUDE "/foo/something" "/3rdparty/" "/bar/somethingelse" + "/CMakeFiles/" ) +list(APPEND CTEST_EXTRA_COVERAGE_GLOB "*.cpp") include(CTestCoverageCollectGCOV) set(tar_file ${CTEST_BINARY_DIRECTORY}/gcov.tar) @@ -41,6 +43,8 @@ set(expected_out Testing/CoverageInfo/data.json Testing/CoverageInfo/extra.cpp.gcov Testing/CoverageInfo/main.cpp.gcov + uncovered/extra/uncovered1.cpp + uncovered/uncovered2.cpp ) if("${out}" STREQUAL "${expected_out}") diff --git a/Tests/CompileDefinitions/runtest.c b/Tests/CompileDefinitions/runtest.c index 02d2cad..c2d51aa 100644 --- a/Tests/CompileDefinitions/runtest.c +++ b/Tests/CompileDefinitions/runtest.c @@ -1,6 +1,6 @@ -#include <string.h> -#include <stdio.h> #include <ctype.h> +#include <stdio.h> +#include <string.h> #ifndef BUILD_CONFIG_NAME # error "BUILD_CONFIG_NAME not defined!" diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index a32138d..9f08523 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -119,6 +119,55 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") endif() endif() +if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0) + if (CMAKE_CXX_COMIPLER_VERSION VERSION_EQUAL 15.0) + list(REMOVE_ITEM CXX_non_features + # The cxx_contextual_conversions feature happens to work + # (for *this* testcase) with Intel 13/14/15, but they do not + # document support until 16. + cxx_contextual_conversions + ) + + elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14.0) + list(REMOVE_ITEM CXX_non_features + cxx_alignof + + # not supposed to work until 15 + cxx_attribute_deprecated + + # The cxx_contextual_conversions feature happens to work + # (for *this* testcase) with Intel 13/14/15, but they do not + # document support until 16. + cxx_contextual_conversions + ) + + elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1) + list(REMOVE_ITEM CXX_non_features + # These features happen to work but aren't documented to + # do so until 14.0 + cxx_constexpr + cxx_enum_forward_declarations + cxx_sizeof_member + cxx_strong_enums + cxx_unicode_literals + + # not supposed to work until 15 + cxx_attribute_deprecated + cxx_nonstatic_member_init + + # The cxx_contextual_conversions feature happens to work + # (for *this* testcase) with Intel 13/14/15, but they do not + # document support until 16. + cxx_contextual_conversions + + # This is an undocumented feature; it does not work in future versions + cxx_aggregate_default_initializers + ) + endif() + endif() +endif() + set(C_ext c) set(C_standard_flag 11) set(CXX_ext cpp) @@ -177,6 +226,16 @@ if (CMAKE_C_COMPILE_FEATURES) list(APPEND expected_defs EXPECT_C_STATIC_ASSERT=1 ) + elseif (CMAKE_C_COMPILER_ID STREQUAL "Intel") + if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15) + list(APPEND expected_defs + EXPECT_C_STATIC_ASSERT=1 + ) + else() + list(APPEND expected_defs + EXPECT_C_STATIC_ASSERT=0 + ) + endif() endif() list(APPEND expected_defs @@ -301,6 +360,29 @@ if (CMAKE_CXX_COMPILE_FEATURES) -DEXPECT_FINAL=1 -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1 ) + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") + if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15) + add_definitions( + -DEXPECT_OVERRIDE_CONTROL=1 + -DEXPECT_INHERITING_CONSTRUCTORS=1 + -DEXPECT_FINAL=1 + -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1 + ) + elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 14) + add_definitions( + -DEXPECT_OVERRIDE_CONTROL=1 + -DEXPECT_INHERITING_CONSTRUCTORS=0 + -DEXPECT_FINAL=1 + -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0 + ) + else() + add_definitions( + -DEXPECT_OVERRIDE_CONTROL=0 + -DEXPECT_INHERITING_CONSTRUCTORS=0 + -DEXPECT_FINAL=0 + -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0 + ) + endif() endif() add_executable(CompileFeaturesGenex genex_test.cpp) diff --git a/Tests/Complex/Executable/complex.cxx b/Tests/Complex/Executable/complex.cxx index ec222a5..8d538db 100644 --- a/Tests/Complex/Executable/complex.cxx +++ b/Tests/Complex/Executable/complex.cxx @@ -1,18 +1,18 @@ +#include "Aout.h" +#include "ExtraSources/file1.h" #include "cmTestConfigure.h" #include "cmTestConfigureEscape.h" #include "cmTestGeneratedHeader.h" #include "cmVersion.h" -#include "ExtraSources/file1.h" -#include "Aout.h" #include "file2.h" #include "sharedFile.h" extern "C" { #include "testConly.h" } -#include <vector> -#include <string> #include <iostream> #include <string.h> +#include <string> +#include <vector> #include <stdio.h> #include <sys/stat.h> diff --git a/Tests/ComplexOneConfig/Executable/complex.cxx b/Tests/ComplexOneConfig/Executable/complex.cxx index ec222a5..8d538db 100644 --- a/Tests/ComplexOneConfig/Executable/complex.cxx +++ b/Tests/ComplexOneConfig/Executable/complex.cxx @@ -1,18 +1,18 @@ +#include "Aout.h" +#include "ExtraSources/file1.h" #include "cmTestConfigure.h" #include "cmTestConfigureEscape.h" #include "cmTestGeneratedHeader.h" #include "cmVersion.h" -#include "ExtraSources/file1.h" -#include "Aout.h" #include "file2.h" #include "sharedFile.h" extern "C" { #include "testConly.h" } -#include <vector> -#include <string> #include <iostream> #include <string.h> +#include <string> +#include <vector> #include <stdio.h> #include <sys/stat.h> diff --git a/Tests/ExportImport/Export/testSharedLibDepends.h b/Tests/ExportImport/Export/testSharedLibDepends.h index 8b2f84e..e84fb54 100644 --- a/Tests/ExportImport/Export/testSharedLibDepends.h +++ b/Tests/ExportImport/Export/testSharedLibDepends.h @@ -4,8 +4,8 @@ #include "testsharedlibdepends_export.h" -#include "testSharedLibRequired.h" #include "renamed.h" +#include "testSharedLibRequired.h" struct TESTSHAREDLIBDEPENDS_EXPORT TestSharedLibDepends { diff --git a/Tests/ExportImport/Import/A/deps_shared_iface.cpp b/Tests/ExportImport/Import/A/deps_shared_iface.cpp index d5e4de3..0c5cb7f 100644 --- a/Tests/ExportImport/Import/A/deps_shared_iface.cpp +++ b/Tests/ExportImport/Import/A/deps_shared_iface.cpp @@ -21,8 +21,8 @@ #endif #ifdef TEST_SUBDIR_LIB -#include "subdir.h" #include "renamed.h" +#include "subdir.h" #endif #ifdef DO_GNU_TESTS diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt index b5041c7..ca6462d 100644 --- a/Tests/ExternalProject/CMakeLists.txt +++ b/Tests/ExternalProject/CMakeLists.txt @@ -349,6 +349,20 @@ if(do_git_tests) ) set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + # Live git / master (no GIT_TAG), but shallow + # + set(proj TutorialStep1-GIT-shallow-master) + ExternalProject_Add(${proj} + GIT_REPOSITORY "${local_git_repo}" + GIT_SHALLOW 1 + CMAKE_GENERATOR "${CMAKE_GENERATOR}" + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> + INSTALL_COMMAND "" + DEPENDS "SetupLocalGITRepository" + LOG_UPDATE 1 + ) + set_property(TARGET ${proj} PROPERTY FOLDER "GIT") + # git by explicit branch/tag with empty submodule list # set(proj TutorialStep1-GIT-bytag-withsubmodules) @@ -543,6 +557,9 @@ if(do_git_tests) add_test(TutorialStep1-GIT-bytag "${binary_base}/TutorialStep1-GIT-bytag/Tutorial" 99) + add_test(TutorialStep1-GIT-shallow-master + "${binary_base}/TutorialStep1-GIT-shallow-master/Tutorial" 98) + add_test(TutorialStep1-GIT-master "${binary_base}/TutorialStep1-GIT-master/Tutorial" 98) endif() diff --git a/Tests/FindBoost/CMakeLists.txt b/Tests/FindBoost/CMakeLists.txt index 259ee26..0e9527d 100644 --- a/Tests/FindBoost/CMakeLists.txt +++ b/Tests/FindBoost/CMakeLists.txt @@ -8,3 +8,14 @@ add_test(NAME FindBoost.Test COMMAND --build-options ${build_options} --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> ) + +add_test(NAME FindBoost.TestHeaders COMMAND + ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION> + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindBoost/TestHeaders" + "${CMake_BINARY_DIR}/Tests/FindBoost/TestHeaders" + ${build_generator_args} + --build-project TestFindBoostHeaders + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION> + ) diff --git a/Tests/FindBoost/TestHeaders/CMakeLists.txt b/Tests/FindBoost/TestHeaders/CMakeLists.txt new file mode 100644 index 0000000..d7be327 --- /dev/null +++ b/Tests/FindBoost/TestHeaders/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.1) +project(TestFindBoostHeaders CXX) +include(CTest) + +find_package(Boost REQUIRED) + +add_executable(test_boost_headers_tgt main.cxx) +target_link_libraries(test_boost_headers_tgt + Boost::boost) +add_test(NAME test_boost_headers_tgt COMMAND test_boost_headers_tgt) diff --git a/Tests/FindBoost/TestHeaders/main.cxx b/Tests/FindBoost/TestHeaders/main.cxx new file mode 100644 index 0000000..0400d6d --- /dev/null +++ b/Tests/FindBoost/TestHeaders/main.cxx @@ -0,0 +1,9 @@ +#include <boost/any.hpp> + +int main() { + boost::any a; + a = 5; + a = std::string("A string"); + + return 0; +} diff --git a/Tests/FindGSL/rng/main.cc b/Tests/FindGSL/rng/main.cc index 72543be..e1e0a47 100644 --- a/Tests/FindGSL/rng/main.cc +++ b/Tests/FindGSL/rng/main.cc @@ -1,5 +1,5 @@ -#include <math.h> #include "gsl/gsl_rng.h" +#include <math.h> int main() { diff --git a/Tests/FindGTK2/cairomm/main.cpp b/Tests/FindGTK2/cairomm/main.cpp index ea8f106..0db3a04 100644 --- a/Tests/FindGTK2/cairomm/main.cpp +++ b/Tests/FindGTK2/cairomm/main.cpp @@ -8,11 +8,11 @@ #define _USE_MATH_DEFINES #endif -#include <string> -#include <iostream> -#include <cairommconfig.h> #include <cairomm/context.h> #include <cairomm/surface.h> +#include <cairommconfig.h> +#include <iostream> +#include <string> #include <cmath> diff --git a/Tests/FindGTK2/gtkmm/main.cpp b/Tests/FindGTK2/gtkmm/main.cpp index 5ff64d1..566a4bd 100644 --- a/Tests/FindGTK2/gtkmm/main.cpp +++ b/Tests/FindGTK2/gtkmm/main.cpp @@ -1,5 +1,5 @@ -#include <gtkmm.h> #include "helloworld.h" +#include <gtkmm.h> int main(int argc, char *argv[]) { diff --git a/Tests/FindGTK2/sigc++/main.cpp b/Tests/FindGTK2/sigc++/main.cpp index 78428e7..ccf415e 100644 --- a/Tests/FindGTK2/sigc++/main.cpp +++ b/Tests/FindGTK2/sigc++/main.cpp @@ -1,8 +1,7 @@ // Taken from https://developer.gnome.org/libsigc++-tutorial/stable/ch02.html - -#include <sigc++/sigc++.h> #include <iostream> +#include <sigc++/sigc++.h> class AlienDetector { diff --git a/Tests/FindLTTngUST/Test/main.c b/Tests/FindLTTngUST/Test/main.c index ac775a0..1f313c1 100644 --- a/Tests/FindLTTngUST/Test/main.c +++ b/Tests/FindLTTngUST/Test/main.c @@ -1,7 +1,7 @@ #include <assert.h> -#include <string.h> -#include <stdio.h> #include <lttng/ust-version.h> +#include <stdio.h> +#include <string.h> #ifdef CMAKE_LTTNGUST_HAS_TRACEF #include <lttng/tracef.h> diff --git a/Tests/FindPNG/Test/main.c b/Tests/FindPNG/Test/main.c index 27e1478..06d943d 100644 --- a/Tests/FindPNG/Test/main.c +++ b/Tests/FindPNG/Test/main.c @@ -1,6 +1,6 @@ #include <assert.h> -#include <string.h> #include <png.h> +#include <string.h> int main() { diff --git a/Tests/FindPackageModeMakefileTest/main.cpp b/Tests/FindPackageModeMakefileTest/main.cpp index e5f9134..db1ffb1 100644 --- a/Tests/FindPackageModeMakefileTest/main.cpp +++ b/Tests/FindPackageModeMakefileTest/main.cpp @@ -1,5 +1,5 @@ -#include <stdio.h> #include <foo.h> +#include <stdio.h> int main() { diff --git a/Tests/FindXalanC/Test/main.cxx b/Tests/FindXalanC/Test/main.cxx index 3b4a2df..7d0f42c 100644 --- a/Tests/FindXalanC/Test/main.cxx +++ b/Tests/FindXalanC/Test/main.cxx @@ -1,5 +1,5 @@ -#include <xercesc/util/PlatformUtils.hpp> #include <xalanc/XalanTransformer/XalanTransformer.hpp> +#include <xercesc/util/PlatformUtils.hpp> int main() { diff --git a/Tests/GhsMultiDuplicateSourceFilenames/CMakeLists.txt b/Tests/GhsMultiDuplicateSourceFilenames/CMakeLists.txt new file mode 100644 index 0000000..ffdb582 --- /dev/null +++ b/Tests/GhsMultiDuplicateSourceFilenames/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.5) +project(demo C) + +add_library(libdemo test.c subfolder/test.c) + +add_executable(demo main.c) +target_link_libraries(demo libdemo) +if(GHSMULTI) + target_compile_options(demo PUBLIC "-non_shared") +endif() diff --git a/Tests/GhsMultiDuplicateSourceFilenames/main.c b/Tests/GhsMultiDuplicateSourceFilenames/main.c new file mode 100644 index 0000000..2779d68 --- /dev/null +++ b/Tests/GhsMultiDuplicateSourceFilenames/main.c @@ -0,0 +1,9 @@ +int test_a(void); +int test_b(void); + +int main(int argc, char *argv[]) +{ + test_a(); + test_b(); + return 0; +} diff --git a/Tests/GhsMultiDuplicateSourceFilenames/subfolder/test.c b/Tests/GhsMultiDuplicateSourceFilenames/subfolder/test.c new file mode 100644 index 0000000..e1372b9 --- /dev/null +++ b/Tests/GhsMultiDuplicateSourceFilenames/subfolder/test.c @@ -0,0 +1,5 @@ + +int test_b() +{ + return 2; +} diff --git a/Tests/GhsMultiDuplicateSourceFilenames/test.c b/Tests/GhsMultiDuplicateSourceFilenames/test.c new file mode 100644 index 0000000..60286dd --- /dev/null +++ b/Tests/GhsMultiDuplicateSourceFilenames/test.c @@ -0,0 +1,5 @@ + +int test_a() +{ + return 1; +} diff --git a/Tests/IncludeDirectories/TargetIncludeDirectories/main.cpp b/Tests/IncludeDirectories/TargetIncludeDirectories/main.cpp index aed0bde..2ee05e2 100644 --- a/Tests/IncludeDirectories/TargetIncludeDirectories/main.cpp +++ b/Tests/IncludeDirectories/TargetIncludeDirectories/main.cpp @@ -1,17 +1,17 @@ +#include "arguments.h" +#include "bang.h" #include "bar.h" #include "bat.h" -#include "foo.h" #include "baz.h" -#include "bang.h" #include "bing.h" #include "bung.h" -#include "ting.h" -#include "arguments.h" +#include "common.h" +#include "foo.h" #include "list.h" -#include "target.h" #include "prefix_foo_bar_bat.h" -#include "common.h" +#include "target.h" +#include "ting.h" int main(int, char**) { diff --git a/Tests/LoadCommand/CMakeCommands/cmTestCommand.c b/Tests/LoadCommand/CMakeCommands/cmTestCommand.c index fc04934..eac121d 100644 --- a/Tests/LoadCommand/CMakeCommands/cmTestCommand.c +++ b/Tests/LoadCommand/CMakeCommands/cmTestCommand.c @@ -1,7 +1,7 @@ #include "cmCPluginAPI.h" -#include <string.h> -#include <stdlib.h> #include <stdio.h> +#include <stdlib.h> +#include <string.h> typedef struct { diff --git a/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c b/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c index fc04934..eac121d 100644 --- a/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c +++ b/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c @@ -1,7 +1,7 @@ #include "cmCPluginAPI.h" -#include <string.h> -#include <stdlib.h> #include <stdio.h> +#include <stdlib.h> +#include <string.h> typedef struct { diff --git a/Tests/MFC/mfc1/ChildFrm.cpp b/Tests/MFC/mfc1/ChildFrm.cpp index b04c4f2..889cceb 100644 --- a/Tests/MFC/mfc1/ChildFrm.cpp +++ b/Tests/MFC/mfc1/ChildFrm.cpp @@ -1,6 +1,8 @@ // ChildFrm.cpp : implementation of the CChildFrame class // + #include "stdafx.h" + #include "mfc1.h" #include "ChildFrm.h" diff --git a/Tests/MFC/mfc1/MainFrm.cpp b/Tests/MFC/mfc1/MainFrm.cpp index 44554bf..222c3da 100644 --- a/Tests/MFC/mfc1/MainFrm.cpp +++ b/Tests/MFC/mfc1/MainFrm.cpp @@ -2,6 +2,7 @@ // #include "stdafx.h" + #include "mfc1.h" #include "MainFrm.h" diff --git a/Tests/MFC/mfc1/mfc1.cpp b/Tests/MFC/mfc1/mfc1.cpp index 9530cd2..1777d7f 100644 --- a/Tests/MFC/mfc1/mfc1.cpp +++ b/Tests/MFC/mfc1/mfc1.cpp @@ -2,8 +2,9 @@ // #include "stdafx.h" -#include "mfc1.h" + #include "MainFrm.h" +#include "mfc1.h" #include "ChildFrm.h" #include "mfc1Doc.h" diff --git a/Tests/MFC/mfc1/mfc1Doc.cpp b/Tests/MFC/mfc1/mfc1Doc.cpp index 8767052..db76b06 100644 --- a/Tests/MFC/mfc1/mfc1Doc.cpp +++ b/Tests/MFC/mfc1/mfc1Doc.cpp @@ -2,6 +2,7 @@ // #include "stdafx.h" + #include "mfc1.h" #include "mfc1Doc.h" diff --git a/Tests/MFC/mfc1/mfc1View.cpp b/Tests/MFC/mfc1/mfc1View.cpp index 06c7652..8000302 100644 --- a/Tests/MFC/mfc1/mfc1View.cpp +++ b/Tests/MFC/mfc1/mfc1View.cpp @@ -2,6 +2,7 @@ // #include "stdafx.h" + #include "mfc1.h" #include "mfc1Doc.h" diff --git a/Tests/MFC/mfc1/stdafx.h b/Tests/MFC/mfc1/stdafx.h index 35a678d..654a23f 100644 --- a/Tests/MFC/mfc1/stdafx.h +++ b/Tests/MFC/mfc1/stdafx.h @@ -46,9 +46,9 @@ // turns off MFC's hiding of some common and often safely ignored warning messages #define _AFX_ALL_WARNINGS -#include <afxwin.h> // MFC core and standard components -#include <afxext.h> // MFC extensions -#include <afxdisp.h> // MFC Automation classes +#include <afxdisp.h> // MFC Automation classes +#include <afxext.h> // MFC extensions +#include <afxwin.h> // MFC core and standard components #include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls #ifndef _AFX_NO_AFXCMN_SUPPORT diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt index c538280..8b251d7 100644 --- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt +++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt @@ -11,7 +11,7 @@ get_property(c_known_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES) write_compiler_detection_header( FILE "${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection.h" PREFIX TEST - COMPILERS GNU Clang AppleClang MSVC SunPro + COMPILERS GNU Clang AppleClang MSVC SunPro Intel VERSION 3.1 PROLOG "// something" EPILOG "// more" @@ -61,7 +61,8 @@ endmacro() if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" - OR CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") + OR CMAKE_CXX_COMPILER_ID STREQUAL "SunPro" + OR CMAKE_CXX_COMPILER_ID STREQUAL "Intel") # False for C++98 mode. list(APPEND false_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS) list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES) @@ -80,7 +81,9 @@ endif() if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang" - OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang") + OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang" + OR CMAKE_C_COMPILER_ID STREQUAL "Intel") + add_executable(C_undefined c_undefined.c) set_property(TARGET C_undefined PROPERTY C_STANDARD 90) target_compile_options(C_undefined PRIVATE -Werror=undef) @@ -104,7 +107,7 @@ write_compiler_detection_header( PREFIX MULTI OUTPUT_FILES_VAR multi_files OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files/compiler_support" - COMPILERS GNU Clang AppleClang MSVC SunPro + COMPILERS GNU Clang AppleClang MSVC SunPro Intel VERSION 3.1 FEATURES ${cxx_known_features} ${c_known_features} @@ -142,7 +145,8 @@ set_defines(multi_files_11 "${true_defs}" "${false_defs}") if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang" - OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang") + OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang" + OR CMAKE_C_COMPILER_ID STREQUAL "Intel") add_executable(WriteCompilerDetectionHeader_C11 main.c) set_property(TARGET WriteCompilerDetectionHeader_C11 PROPERTY C_STANDARD 11) set_defines(WriteCompilerDetectionHeader_C11 "EXPECTED_COMPILER_C_FUNCTION_PROTOTYPES;EXPECTED_COMPILER_C_RESTRICT" "") diff --git a/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx b/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx index d88c311..69d7c82 100644 --- a/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx +++ b/Tests/OutOfSource/OutOfSourceSubdir/simple.cxx @@ -1,8 +1,8 @@ #include <stdio.h> #include <string.h> -#include "testlib.h" #include "testdp.h" +#include "testlib.h" extern int simple(); #ifndef NO_DEEPSRC diff --git a/Tests/Plugin/src/example_exe.cxx b/Tests/Plugin/src/example_exe.cxx index 12d9204..fd23e8f 100644 --- a/Tests/Plugin/src/example_exe.cxx +++ b/Tests/Plugin/src/example_exe.cxx @@ -1,8 +1,9 @@ +#include <kwsys/DynamicLoader.hxx> + #include <example.h> #include <example_exe.h> -#include <kwsys/DynamicLoader.hxx> #include <iostream> #include <string> diff --git a/Tests/Preprocess/preprocess.c b/Tests/Preprocess/preprocess.c index 16209ac..af5eae6 100644 --- a/Tests/Preprocess/preprocess.c +++ b/Tests/Preprocess/preprocess.c @@ -3,8 +3,8 @@ #include FILE_PATH #include TARGET_PATH -#include <string.h> #include <stdio.h> +#include <string.h> int check_defines_C(void) { diff --git a/Tests/Preprocess/preprocess.cxx b/Tests/Preprocess/preprocess.cxx index 27b6ac8..d168103 100644 --- a/Tests/Preprocess/preprocess.cxx +++ b/Tests/Preprocess/preprocess.cxx @@ -3,8 +3,8 @@ #include FILE_PATH #include TARGET_PATH -#include <string.h> #include <stdio.h> +#include <string.h> extern "C" int check_defines_C(void); diff --git a/Tests/Qt4Deploy/testdeploy.cpp b/Tests/Qt4Deploy/testdeploy.cpp index 8b9c8d6..255453a 100644 --- a/Tests/Qt4Deploy/testdeploy.cpp +++ b/Tests/Qt4Deploy/testdeploy.cpp @@ -1,7 +1,7 @@ #include <QCoreApplication> -#include <QSqlDatabase> -#include <QLibraryInfo> #include <QDebug> +#include <QLibraryInfo> +#include <QSqlDatabase> #include <QStringList> int main(int argc, char** argv) diff --git a/Tests/QtAutogen/Bdir/libB.h b/Tests/QtAutogen/Bdir/libB.h index 510c17f..746b67a 100644 --- a/Tests/QtAutogen/Bdir/libB.h +++ b/Tests/QtAutogen/Bdir/libB.h @@ -4,8 +4,8 @@ #include "libb_export.h" -#include <QObject> #include "libA.h" +#include <QObject> class LIBB_EXPORT LibB : public QObject { diff --git a/Tests/QtAutogen/CMakeLists.txt b/Tests/QtAutogen/CMakeLists.txt index d5aca55..4875165 100644 --- a/Tests/QtAutogen/CMakeLists.txt +++ b/Tests/QtAutogen/CMakeLists.txt @@ -110,6 +110,10 @@ set_target_properties( AUTOMOC TRUE ) +# Test AUTOMOC and AUTORCC on source files with the same name +# but in different subdirectories +add_subdirectory(same_name) + include(GenerateExportHeader) # The order is relevant here. B depends on A, and B headers depend on A # headers both subdirectories use CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE and we diff --git a/Tests/QtAutogen/calwidget.cpp b/Tests/QtAutogen/calwidget.cpp index 5f59994..0e314cd 100644 --- a/Tests/QtAutogen/calwidget.cpp +++ b/Tests/QtAutogen/calwidget.cpp @@ -38,13 +38,13 @@ ** ****************************************************************************/ + #include <QCalendarWidget> + #include <QCheckBox> #include <QComboBox> + #include <QDateEdit> #include <QGridLayout> - #include <QLabel> #include <QGroupBox> - #include <QCheckBox> - #include <QDateEdit> - #include <QCalendarWidget> + #include <QLabel> #include <QTextCharFormat> #include "calwidget.h" diff --git a/Tests/QtAutogen/codeeditor.h b/Tests/QtAutogen/codeeditor.h index 56e9e792..fd79a2a 100644 --- a/Tests/QtAutogen/codeeditor.h +++ b/Tests/QtAutogen/codeeditor.h @@ -41,8 +41,8 @@ #ifndef CODEEDITOR_H #define CODEEDITOR_H - #include <QPlainTextEdit> #include <QObject> + #include <QPlainTextEdit> class QPaintEvent; class QResizeEvent; diff --git a/Tests/QtAutogen/libC.h b/Tests/QtAutogen/libC.h index 4fb4a2c..6682576 100644 --- a/Tests/QtAutogen/libC.h +++ b/Tests/QtAutogen/libC.h @@ -4,8 +4,8 @@ #include "libc_export.h" -#include <QObject> #include "libB.h" +#include <QObject> class LIBC_EXPORT LibC : public QObject { diff --git a/Tests/QtAutogen/main.cpp b/Tests/QtAutogen/main.cpp index eb59665..1636cd4 100644 --- a/Tests/QtAutogen/main.cpp +++ b/Tests/QtAutogen/main.cpp @@ -41,16 +41,16 @@ #include <QCoreApplication> #include <QTimer> -#include "codeeditor.h" +#include "abc.h" +#include "blub.h" #include "calwidget.h" +#include "codeeditor.h" #include "foo.h" -#include "blub.h" +#include "libC.h" +#include "resourcetester.h" #include "sub/bar.h" -#include "abc.h" #include "xyz.h" #include "yaf.h" -#include "libC.h" -#include "resourcetester.h" #ifdef TEST_DEBUG_CLASS #include "debug_class.h" #include <iostream> diff --git a/Tests/QtAutogen/resourcetester.cpp b/Tests/QtAutogen/resourcetester.cpp index 043ec75..75ae28f 100644 --- a/Tests/QtAutogen/resourcetester.cpp +++ b/Tests/QtAutogen/resourcetester.cpp @@ -1,8 +1,8 @@ #include "resourcetester.h" -#include <QDebug> #include <QApplication> +#include <QDebug> #include <QFile> #include <QTimer> diff --git a/Tests/QtAutogen/same_name/CMakeLists.txt b/Tests/QtAutogen/same_name/CMakeLists.txt new file mode 100644 index 0000000..54bf048 --- /dev/null +++ b/Tests/QtAutogen/same_name/CMakeLists.txt @@ -0,0 +1,20 @@ +# Test AUTOMOC and AUTORCC on source files with the same name +# but in different subdirectories + +add_executable(same_name + aaa/bbb/item.cpp + aaa/bbb/data.qrc + aaa/item.cpp + aaa/data.qrc + bbb/aaa/item.cpp + bbb/aaa/data.qrc + bbb/item.cpp + bbb/data.qrc + ccc/item.cpp + ccc/data.qrc + main.cpp + data.qrc +) +target_include_directories(same_name PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +target_link_libraries(same_name ${QT_LIBRARIES}) +set_target_properties( same_name PROPERTIES AUTOMOC TRUE AUTORCC TRUE ) diff --git a/Tests/QtAutogen/same_name/aaa/bbb/data.qrc b/Tests/QtAutogen/same_name/aaa/bbb/data.qrc new file mode 100644 index 0000000..0ea3537 --- /dev/null +++ b/Tests/QtAutogen/same_name/aaa/bbb/data.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="aaa/bbb"> + <file>item.hpp</file> + <file>item.cpp</file> +</qresource> +</RCC> diff --git a/Tests/QtAutogen/same_name/aaa/bbb/item.cpp b/Tests/QtAutogen/same_name/aaa/bbb/item.cpp new file mode 100644 index 0000000..d715116 --- /dev/null +++ b/Tests/QtAutogen/same_name/aaa/bbb/item.cpp @@ -0,0 +1,12 @@ +#include "item.hpp" + +namespace aaa { +namespace bbb { + +void +Item::go ( ) +{ +} + +} +} diff --git a/Tests/QtAutogen/same_name/aaa/bbb/item.hpp b/Tests/QtAutogen/same_name/aaa/bbb/item.hpp new file mode 100644 index 0000000..c82309d --- /dev/null +++ b/Tests/QtAutogen/same_name/aaa/bbb/item.hpp @@ -0,0 +1,19 @@ +#ifndef SDA_SDB_ITEM_HPP +#define SDA_SDB_ITEM_HPP + +#include <QObject> + +namespace aaa { +namespace bbb { + +class Item : public QObject +{ + Q_OBJECT + Q_SLOT + void go ( ); +}; + +} +} + +#endif diff --git a/Tests/QtAutogen/same_name/aaa/data.qrc b/Tests/QtAutogen/same_name/aaa/data.qrc new file mode 100644 index 0000000..379af60 --- /dev/null +++ b/Tests/QtAutogen/same_name/aaa/data.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="aaa/"> + <file>item.hpp</file> + <file>item.cpp</file> +</qresource> +</RCC> diff --git a/Tests/QtAutogen/same_name/aaa/item.cpp b/Tests/QtAutogen/same_name/aaa/item.cpp new file mode 100644 index 0000000..7887d76 --- /dev/null +++ b/Tests/QtAutogen/same_name/aaa/item.cpp @@ -0,0 +1,10 @@ +#include "item.hpp" + +namespace aaa { + +void +Item::go ( ) +{ +} + +} diff --git a/Tests/QtAutogen/same_name/aaa/item.hpp b/Tests/QtAutogen/same_name/aaa/item.hpp new file mode 100644 index 0000000..3c24275 --- /dev/null +++ b/Tests/QtAutogen/same_name/aaa/item.hpp @@ -0,0 +1,17 @@ +#ifndef SDA_ITEM_HPP +#define SDA_ITEM_HPP + +#include <QObject> + +namespace aaa { + +class Item : public QObject +{ + Q_OBJECT + Q_SLOT + void go ( ); +}; + +} + +#endif diff --git a/Tests/QtAutogen/same_name/bbb/aaa/data.qrc b/Tests/QtAutogen/same_name/bbb/aaa/data.qrc new file mode 100644 index 0000000..da98009 --- /dev/null +++ b/Tests/QtAutogen/same_name/bbb/aaa/data.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="bbb/aaa/"> + <file>item.hpp</file> + <file>item.cpp</file> +</qresource> +</RCC> diff --git a/Tests/QtAutogen/same_name/bbb/aaa/item.cpp b/Tests/QtAutogen/same_name/bbb/aaa/item.cpp new file mode 100644 index 0000000..36d5b6d --- /dev/null +++ b/Tests/QtAutogen/same_name/bbb/aaa/item.cpp @@ -0,0 +1,12 @@ +#include "item.hpp" + +namespace bbb { +namespace aaa { + +void +Item::go ( ) +{ +} + +} +} diff --git a/Tests/QtAutogen/same_name/bbb/aaa/item.hpp b/Tests/QtAutogen/same_name/bbb/aaa/item.hpp new file mode 100644 index 0000000..35a3686 --- /dev/null +++ b/Tests/QtAutogen/same_name/bbb/aaa/item.hpp @@ -0,0 +1,19 @@ +#ifndef SDB_SDA_ITEM_HPP +#define SDB_SDA_ITEM_HPP + +#include <QObject> + +namespace bbb { +namespace aaa { + +class Item : public QObject +{ + Q_OBJECT + Q_SLOT + void go ( ); +}; + +} +} + +#endif diff --git a/Tests/QtAutogen/same_name/bbb/data.qrc b/Tests/QtAutogen/same_name/bbb/data.qrc new file mode 100644 index 0000000..5b080f5 --- /dev/null +++ b/Tests/QtAutogen/same_name/bbb/data.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="bbb/"> + <file>item.hpp</file> + <file>item.cpp</file> +</qresource> +</RCC> diff --git a/Tests/QtAutogen/same_name/bbb/item.cpp b/Tests/QtAutogen/same_name/bbb/item.cpp new file mode 100644 index 0000000..064295b --- /dev/null +++ b/Tests/QtAutogen/same_name/bbb/item.cpp @@ -0,0 +1,10 @@ +#include "item.hpp" + +namespace bbb { + +void +Item::go ( ) +{ +} + +} diff --git a/Tests/QtAutogen/same_name/bbb/item.hpp b/Tests/QtAutogen/same_name/bbb/item.hpp new file mode 100644 index 0000000..eda84a2 --- /dev/null +++ b/Tests/QtAutogen/same_name/bbb/item.hpp @@ -0,0 +1,17 @@ +#ifndef SDB_ITEM_HPP +#define SDB_ITEM_HPP + +#include <QObject> + +namespace bbb { + +class Item : public QObject +{ + Q_OBJECT + Q_SLOT + void go ( ); +}; + +} + +#endif diff --git a/Tests/QtAutogen/same_name/ccc/data.qrc b/Tests/QtAutogen/same_name/ccc/data.qrc new file mode 100644 index 0000000..f934c39 --- /dev/null +++ b/Tests/QtAutogen/same_name/ccc/data.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource prefix="ccc/"> + <file>item.hpp</file> + <file>item.cpp</file> +</qresource> +</RCC> diff --git a/Tests/QtAutogen/same_name/ccc/item.cpp b/Tests/QtAutogen/same_name/ccc/item.cpp new file mode 100644 index 0000000..12c71d0 --- /dev/null +++ b/Tests/QtAutogen/same_name/ccc/item.cpp @@ -0,0 +1,26 @@ +#include "item.hpp" + +namespace ccc { + +void +Item::go ( ) +{ +} + +class MocTest : public QObject +{ + Q_OBJECT; + Q_SLOT + void go ( ); +}; + +void +MocTest::go() +{ +} + +} + +// Include own moc files +#include "item.moc" +#include "moc_item.cpp" diff --git a/Tests/QtAutogen/same_name/ccc/item.hpp b/Tests/QtAutogen/same_name/ccc/item.hpp new file mode 100644 index 0000000..6386dc6 --- /dev/null +++ b/Tests/QtAutogen/same_name/ccc/item.hpp @@ -0,0 +1,17 @@ +#ifndef SDC_ITEM_HPP +#define SDC_ITEM_HPP + +#include <QObject> + +namespace ccc { + +class Item : public QObject +{ + Q_OBJECT + Q_SLOT + void go ( ); +}; + +} + +#endif diff --git a/Tests/QtAutogen/same_name/data.qrc b/Tests/QtAutogen/same_name/data.qrc new file mode 100644 index 0000000..4ce0b4e --- /dev/null +++ b/Tests/QtAutogen/same_name/data.qrc @@ -0,0 +1,5 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>main.cpp</file> +</qresource> +</RCC> diff --git a/Tests/QtAutogen/same_name/main.cpp b/Tests/QtAutogen/same_name/main.cpp new file mode 100644 index 0000000..fc77a99 --- /dev/null +++ b/Tests/QtAutogen/same_name/main.cpp @@ -0,0 +1,16 @@ +#include "aaa/bbb/item.hpp" +#include "aaa/item.hpp" +#include "bbb/aaa/item.hpp" +#include "bbb/item.hpp" +#include "ccc/item.hpp" + +int main(int argv, char **args) +{ + // Object instances + ::aaa::Item aaa_item; + ::aaa::bbb::Item aaa_bbb_item; + ::bbb::Item bbb_item; + ::bbb::aaa::Item bbb_aaa_item; + ::ccc::Item ccc_item; + return 0; +} diff --git a/Tests/RunCMake/AutoExportDll/hello.cxx b/Tests/RunCMake/AutoExportDll/hello.cxx index 3933fc1..4196948 100644 --- a/Tests/RunCMake/AutoExportDll/hello.cxx +++ b/Tests/RunCMake/AutoExportDll/hello.cxx @@ -1,5 +1,5 @@ -#include <stdio.h> #include "hello.h" +#include <stdio.h> int Hello::Data = 0; void Hello::real() { diff --git a/Tests/RunCMake/AutoExportDll/say.cxx b/Tests/RunCMake/AutoExportDll/say.cxx index 655b3c2..0d78d4b 100644 --- a/Tests/RunCMake/AutoExportDll/say.cxx +++ b/Tests/RunCMake/AutoExportDll/say.cxx @@ -1,5 +1,5 @@ -#include <stdio.h> #include "hello.h" +#include <stdio.h> #ifdef _MSC_VER #include "windows.h" #else diff --git a/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake b/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake new file mode 100644 index 0000000..687c827 --- /dev/null +++ b/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake @@ -0,0 +1,29 @@ +add_custom_command( + OUTPUT gen-byproduct gen-byproduct-stamp + BYPRODUCTS byproduct + COMMAND ${CMAKE_COMMAND} -E touch gen-byproduct-stamp + COMMAND ${CMAKE_COMMAND} -E copy_if_different gen-byproduct-stamp byproduct + ) +set_property(SOURCE gen-byproduct PROPERTY SYMBOLIC 1) +add_custom_target(produce DEPENDS gen-byproduct) + +add_custom_command( + OUTPUT use-byproduct + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct + COMMAND ${CMAKE_COMMAND} -E sleep 1.125 # workaround buggy filesystem timestamps + COMMAND ${CMAKE_COMMAND} -E touch use-byproduct + ) +add_custom_target(drive ALL DEPENDS use-byproduct) +add_dependencies(drive produce) + +file(GENERATE OUTPUT check-$<LOWER_CASE:$<CONFIG>>.cmake CONTENT " +if (check_step EQUAL 1) + set(check_pairs + \"${CMAKE_CURRENT_BINARY_DIR}/use-byproduct|${CMAKE_CURRENT_BINARY_DIR}/gen-byproduct-stamp\" + ) +else() + set(check_pairs + \"${CMAKE_CURRENT_BINARY_DIR}/gen-byproduct-stamp|${CMAKE_CURRENT_BINARY_DIR}/use-byproduct\" + ) +endif() +") diff --git a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake index 6b2b85a..ffd3ae1 100644 --- a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake +++ b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake @@ -1,6 +1,7 @@ include(RunCMake) -if(RunCMake_GENERATOR STREQUAL "Borland Makefiles") +if(RunCMake_GENERATOR STREQUAL "Borland Makefiles" OR + RunCMake_GENERATOR STREQUAL "Watcom WMake") set(fs_delay 3) else() set(fs_delay 1.125) @@ -39,6 +40,7 @@ if(NOT RunCMake_GENERATOR MATCHES "Visual Studio 7|Xcode") unset(run_BuildDepends_skip_step_2) endif() +run_BuildDepends(Custom-Symbolic-and-Byproduct) run_BuildDepends(Custom-Always) if(RunCMake_GENERATOR MATCHES "Make" AND diff --git a/Tests/RunCMake/CMP0059/CMP0059-WARN-stderr.txt b/Tests/RunCMake/CMP0059/CMP0059-WARN-stderr.txt index 4e04d15..06c7be3 100644 --- a/Tests/RunCMake/CMP0059/CMP0059-WARN-stderr.txt +++ b/Tests/RunCMake/CMP0059/CMP0059-WARN-stderr.txt @@ -1,5 +1,5 @@ CMake Warning \(dev\) at CMP0059-WARN.cmake:6 \(get_property\): - Policy CMP0059 is not set: Do no treat DEFINITIONS as a built-in directory + Policy CMP0059 is not set: Do not treat DEFINITIONS as a built-in directory property. Run "cmake --help-policy CMP0059" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Call Stack \(most recent call first\): @@ -8,7 +8,7 @@ This warning is for project developers. Use -Wno-dev to suppress it. DEFS: -DSOME_DEF CMake Warning \(dev\) at CMP0059-WARN.cmake:14 \(get_property\): - Policy CMP0059 is not set: Do no treat DEFINITIONS as a built-in directory + Policy CMP0059 is not set: Do not treat DEFINITIONS as a built-in directory property. Run "cmake --help-policy CMP0059" for policy details. Use the cmake_policy command to set the policy and suppress this warning. Call Stack \(most recent call first\): diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index d22c39c..d16e5e7 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -289,8 +289,10 @@ if(CMake_TEST_FindMatlab) endif() add_executable(pseudo_emulator pseudo_emulator.c) +add_executable(pseudo_emulator_custom_command pseudo_emulator_custom_command.c) add_RunCMake_test(CrosscompilingEmulator - -DPSEUDO_EMULATOR=$<TARGET_FILE:pseudo_emulator>) + -DPSEUDO_EMULATOR=$<TARGET_FILE:pseudo_emulator> + -DPSEUDO_EMULATOR_CUSTOM_COMMAND=$<TARGET_FILE:pseudo_emulator_custom_command>) # Xcode 2.x forgets to create the output directory before linking # the individual architectures. if(CMAKE_OSX_ARCHITECTURES AND XCODE AND NOT "${XCODE_VERSION}" MATCHES "^[^12]") @@ -298,10 +300,16 @@ if(CMAKE_OSX_ARCHITECTURES AND XCODE AND NOT "${XCODE_VERSION}" MATCHES "^[^12]" TARGET pseudo_emulator PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CFG_INTDIR}" ) + add_custom_command( + TARGET pseudo_emulator_custom_command + PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CFG_INTDIR}" + ) endif() if("${CMAKE_GENERATOR}" MATCHES "Make|Ninja") + add_executable(pseudo_tidy pseudo_tidy.c) add_executable(pseudo_iwyu pseudo_iwyu.c) + add_RunCMake_test(ClangTidy -DPSEUDO_TIDY=$<TARGET_FILE:pseudo_tidy>) add_RunCMake_test(IncludeWhatYouUse -DPSEUDO_IWYU=$<TARGET_FILE:pseudo_iwyu>) add_RunCMake_test(CompilerLauncher) endif() diff --git a/Tests/RunCMake/ClangTidy/C-Build-stdout.txt b/Tests/RunCMake/ClangTidy/C-Build-stdout.txt new file mode 100644 index 0000000..a47a2de --- /dev/null +++ b/Tests/RunCMake/ClangTidy/C-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.c:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/C-launch-Build-stdout.txt b/Tests/RunCMake/ClangTidy/C-launch-Build-stdout.txt new file mode 100644 index 0000000..a47a2de --- /dev/null +++ b/Tests/RunCMake/ClangTidy/C-launch-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.c:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/C-launch.cmake b/Tests/RunCMake/ClangTidy/C-launch.cmake new file mode 100644 index 0000000..e66ca20 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/C-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(C.cmake) diff --git a/Tests/RunCMake/ClangTidy/C.cmake b/Tests/RunCMake/ClangTidy/C.cmake new file mode 100644 index 0000000..b8057b0 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/C.cmake @@ -0,0 +1,3 @@ +enable_language(C) +set(CMAKE_C_CLANG_TIDY "${PSEUDO_TIDY}" -some -args) +add_executable(main main.c) diff --git a/Tests/RunCMake/ClangTidy/CMakeLists.txt b/Tests/RunCMake/ClangTidy/CMakeLists.txt new file mode 100644 index 0000000..93ee9df --- /dev/null +++ b/Tests/RunCMake/ClangTidy/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.5) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/ClangTidy/CXX-Build-stdout.txt b/Tests/RunCMake/ClangTidy/CXX-Build-stdout.txt new file mode 100644 index 0000000..47e43af --- /dev/null +++ b/Tests/RunCMake/ClangTidy/CXX-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.cxx:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/CXX-launch-Build-stdout.txt b/Tests/RunCMake/ClangTidy/CXX-launch-Build-stdout.txt new file mode 100644 index 0000000..47e43af --- /dev/null +++ b/Tests/RunCMake/ClangTidy/CXX-launch-Build-stdout.txt @@ -0,0 +1 @@ +Tests[/\]RunCMake[/\]ClangTidy[/\]main\.cxx:0:0: warning: message \[checker\] diff --git a/Tests/RunCMake/ClangTidy/CXX-launch.cmake b/Tests/RunCMake/ClangTidy/CXX-launch.cmake new file mode 100644 index 0000000..3002c9d --- /dev/null +++ b/Tests/RunCMake/ClangTidy/CXX-launch.cmake @@ -0,0 +1,3 @@ +set(CTEST_USE_LAUNCHERS 1) +include(CTestUseLaunchers) +include(CXX.cmake) diff --git a/Tests/RunCMake/ClangTidy/CXX.cmake b/Tests/RunCMake/ClangTidy/CXX.cmake new file mode 100644 index 0000000..2d22325 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/CXX.cmake @@ -0,0 +1,3 @@ +enable_language(CXX) +set(CMAKE_CXX_CLANG_TIDY "${PSEUDO_TIDY}" -some -args) +add_executable(main main.cxx) diff --git a/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake new file mode 100644 index 0000000..27cd922 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/RunCMakeTest.cmake @@ -0,0 +1,22 @@ +include(RunCMake) + +set(RunCMake_TEST_OPTIONS "-DPSEUDO_TIDY=${PSEUDO_TIDY}") + +function(run_tidy lang) + # Use a single build tree for tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-build) + set(RunCMake_TEST_NO_CLEAN 1) + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + run_cmake(${lang}) + + set(RunCMake_TEST_OUTPUT_MERGE 1) + run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build .) +endfunction() + +run_tidy(C) +run_tidy(CXX) +if (NOT RunCMake_GENERATOR STREQUAL "Watcom WMake") + run_tidy(C-launch) + run_tidy(CXX-launch) +endif() diff --git a/Tests/Wrapping/wrapFLTK.c b/Tests/RunCMake/ClangTidy/main.c index 78f2de1..78f2de1 100644 --- a/Tests/Wrapping/wrapFLTK.c +++ b/Tests/RunCMake/ClangTidy/main.c diff --git a/Tests/RunCMake/ClangTidy/main.cxx b/Tests/RunCMake/ClangTidy/main.cxx new file mode 100644 index 0000000..76e8197 --- /dev/null +++ b/Tests/RunCMake/ClangTidy/main.cxx @@ -0,0 +1 @@ +int main() { return 0; } diff --git a/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON-stderr.txt b/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON-stderr.txt deleted file mode 100644 index ea31ef3..0000000 --- a/Tests/RunCMake/CommandLine/DeprecateVS70-WARN-ON-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -^CMake Warning: - The "Visual Studio 7" generator is deprecated and will be removed in a - future version of CMake. - - Add CMAKE_WARN_VS70=OFF to the cache to disable this warning.$ diff --git a/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-OFF.cmake b/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-OFF.cmake new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-OFF.cmake diff --git a/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-ON-stderr.txt b/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-ON-stderr.txt new file mode 100644 index 0000000..2cb01ff --- /dev/null +++ b/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-ON-stderr.txt @@ -0,0 +1,5 @@ +^CMake Warning: + The "Visual Studio 7 .NET 2003" generator is deprecated and will be removed + in a future version of CMake. + + Add CMAKE_WARN_VS71=OFF to the cache to disable this warning.$ diff --git a/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-ON.cmake b/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-ON.cmake new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DeprecateVS71-WARN-ON.cmake diff --git a/Tests/RunCMake/CommandLine/E___run_iwyu-no-iwyu-stderr.txt b/Tests/RunCMake/CommandLine/E___run_iwyu-no-iwyu-stderr.txt index 0024097..0d0d899 100644 --- a/Tests/RunCMake/CommandLine/E___run_iwyu-no-iwyu-stderr.txt +++ b/Tests/RunCMake/CommandLine/E___run_iwyu-no-iwyu-stderr.txt @@ -1 +1 @@ -^__run_iwyu missing --iwyu=$ +^__run_iwyu missing --tidy= or --iwyu=$ diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index 3b5504e..f449f1d 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -72,11 +72,11 @@ if(RunCMake_GENERATOR STREQUAL "Ninja") unset(RunCMake_TEST_NO_CLEAN) endif() -if(RunCMake_GENERATOR STREQUAL "Visual Studio 7") - set(RunCMake_WARN_VS70 1) - run_cmake(DeprecateVS70-WARN-ON) - unset(RunCMake_WARN_VS70) - run_cmake(DeprecateVS70-WARN-OFF) +if(RunCMake_GENERATOR STREQUAL "Visual Studio 7 .NET 2003") + set(RunCMake_WARN_VS71 1) + run_cmake(DeprecateVS71-WARN-ON) + unset(RunCMake_WARN_VS71) + run_cmake(DeprecateVS71-WARN-OFF) endif() if(UNIX) diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddCustomCommand-build-check.cmake b/Tests/RunCMake/CrosscompilingEmulator/AddCustomCommand-build-check.cmake new file mode 100644 index 0000000..e10b161 --- /dev/null +++ b/Tests/RunCMake/CrosscompilingEmulator/AddCustomCommand-build-check.cmake @@ -0,0 +1,5 @@ +foreach(output IN ITEMS output1 output2 output3 output4) + if(NOT EXISTS "${RunCMake_TEST_BINARY_DIR}/${output}") + message(FATAL_ERROR "Failed to create output: ${RunCMake_TEST_BINARY_DIR}/${output}") + endif() +endforeach() diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddCustomCommand.cmake b/Tests/RunCMake/CrosscompilingEmulator/AddCustomCommand.cmake new file mode 100644 index 0000000..67fa30f --- /dev/null +++ b/Tests/RunCMake/CrosscompilingEmulator/AddCustomCommand.cmake @@ -0,0 +1,38 @@ +set(CMAKE_CROSSCOMPILING 1) + +# Executable: Return error code different from 0 +add_executable(generated_exe_emulator_expected simple_src_exiterror.cxx) + +# Executable: Return error code equal to 0 +add_executable(generated_exe_emulator_unexpected simple_src_exitsuccess.cxx) + +# DoesNotUseEmulator +add_custom_command(OUTPUT output1 + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output1) + +# DoesNotUseEmulator: The command will fail if emulator is prepended +add_custom_command(OUTPUT output2 + COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_FILE:generated_exe_emulator_unexpected>" + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output2 + DEPENDS generated_exe_emulator_unexpected) + +# DoesNotUseEmulator: The command will fail if emulator is prepended +add_custom_command(OUTPUT output3 + COMMAND $<TARGET_FILE:generated_exe_emulator_unexpected> + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output3 + DEPENDS generated_exe_emulator_unexpected) + +# UsesEmulator: The command only succeeds if the emulator is prepended +# to the command. +add_custom_command(OUTPUT output4 + COMMAND generated_exe_emulator_expected + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output4 + DEPENDS generated_exe_emulator_expected) + +add_custom_target(ensure_build ALL + SOURCES + ${CMAKE_CURRENT_BINARY_DIR}/output1 + ${CMAKE_CURRENT_BINARY_DIR}/output2 + ${CMAKE_CURRENT_BINARY_DIR}/output3 + ${CMAKE_CURRENT_BINARY_DIR}/output4 +) diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddCustomTarget-build-check.cmake b/Tests/RunCMake/CrosscompilingEmulator/AddCustomTarget-build-check.cmake new file mode 100644 index 0000000..c621922 --- /dev/null +++ b/Tests/RunCMake/CrosscompilingEmulator/AddCustomTarget-build-check.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/AddCustomCommand-build-check.cmake) diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddCustomTarget.cmake b/Tests/RunCMake/CrosscompilingEmulator/AddCustomTarget.cmake new file mode 100644 index 0000000..ced569f --- /dev/null +++ b/Tests/RunCMake/CrosscompilingEmulator/AddCustomTarget.cmake @@ -0,0 +1,30 @@ +set(CMAKE_CROSSCOMPILING 1) + +# Executable: Return error code different from 0 +add_executable(generated_exe_emulator_expected simple_src_exiterror.cxx) + +# Executable: Return error code equal to 0 +add_executable(generated_exe_emulator_unexpected simple_src_exitsuccess.cxx) + +# DoesNotUseEmulator +add_custom_target(generate_output1 ALL + ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output1) + +# DoesNotUseEmulator: The command will fail if emulator is prepended +add_custom_target(generate_output2 ALL + ${CMAKE_COMMAND} -E echo "$<TARGET_FILE:generated_exe_emulator_unexpected>" + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output2 + DEPENDS generated_exe_emulator_unexpected) + +# DoesNotUseEmulator: The command will fail if emulator is prepended +add_custom_target(generate_output3 ALL + $<TARGET_FILE:generated_exe_emulator_unexpected> + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output3 + DEPENDS generated_exe_emulator_unexpected) + +# UsesEmulator: The command only succeeds if the emulator is prepended +# to the command. +add_custom_target(generate_output4 ALL + generated_exe_emulator_expected + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/output4 + DEPENDS generated_exe_emulator_expected) diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddTest-check.cmake b/Tests/RunCMake/CrosscompilingEmulator/AddTest-check.cmake index 0aae06c..588b77b 100644 --- a/Tests/RunCMake/CrosscompilingEmulator/AddTest-check.cmake +++ b/Tests/RunCMake/CrosscompilingEmulator/AddTest-check.cmake @@ -4,9 +4,25 @@ if(EXISTS "${testfile}") else() message(FATAL_ERROR "Could not find expected CTestTestfile.cmake.") endif() -if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulator ^(pseudo_emulator)+$") - message(SEND_ERROR "Used emulator when it should not be used.") + +set(error_details "There is a problem with generated test file: ${testfile}") + +if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulator [^\n]+pseudo_emulator[^\n]+\n") + message(SEND_ERROR "Used emulator when it should not be used. ${error_details}") endif() -if(NOT testfile_contents MATCHES "add_test[(]UsesEmulator .+pseudo_emulator.+$") - message(SEND_ERROR "Did not use emulator when it should be used.") + +if(NOT testfile_contents MATCHES "add_test[(]UsesEmulator [^\n]+pseudo_emulator[^\n]+\n") + message(SEND_ERROR "Did not use emulator when it should be used. ${error_details}") +endif() + +if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithGenex [^\n]+pseudo_emulator[^\n]+\n") + message(SEND_ERROR "Used emulator when it should not be used. ${error_details}") +endif() + +if(NOT testfile_contents MATCHES "add_test[(]UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex [^\n]+pseudo_emulator[^\n]+\n") + message(SEND_ERROR "Did not use emulator when it should be used. ${error_details}") +endif() + +if(testfile_contents MATCHES "add_test[(]DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex [^\n]+pseudo_emulator[^\n]+\n") + message(SEND_ERROR "Used emulator when it should not be used. ${error_details}") endif() diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddTest.cmake b/Tests/RunCMake/CrosscompilingEmulator/AddTest.cmake index 41850f2..23e2e8d 100644 --- a/Tests/RunCMake/CrosscompilingEmulator/AddTest.cmake +++ b/Tests/RunCMake/CrosscompilingEmulator/AddTest.cmake @@ -3,6 +3,18 @@ enable_testing() add_test(NAME DoesNotUseEmulator COMMAND ${CMAKE_COMMAND} -E echo "Hi") -add_executable(generated_exe simple_src.cxx) +add_executable(generated_exe simple_src_exiterror.cxx) + add_test(NAME UsesEmulator COMMAND generated_exe) + +add_test(NAME DoesNotUseEmulatorWithGenex + COMMAND $<TARGET_FILE:generated_exe>) + +add_subdirectory(AddTest) + +add_test(NAME UsesEmulatorWithExecTargetFromSubdirAddedWithoutGenex + COMMAND generated_exe_in_subdir_added_to_test_without_genex) + +add_test(NAME DoesNotUseEmulatorWithExecTargetFromSubdirAddedWithGenex + COMMAND $<TARGET_FILE:generated_exe_in_subdir_added_to_test_with_genex>) diff --git a/Tests/RunCMake/CrosscompilingEmulator/AddTest/CMakeLists.txt b/Tests/RunCMake/CrosscompilingEmulator/AddTest/CMakeLists.txt new file mode 100644 index 0000000..025b54c --- /dev/null +++ b/Tests/RunCMake/CrosscompilingEmulator/AddTest/CMakeLists.txt @@ -0,0 +1,5 @@ +add_executable(generated_exe_in_subdir_added_to_test_without_genex + ${CMAKE_CURRENT_SOURCE_DIR}/../simple_src_exiterror.cxx) + +add_executable(generated_exe_in_subdir_added_to_test_with_genex + ${CMAKE_CURRENT_SOURCE_DIR}/../simple_src_exiterror.cxx) diff --git a/Tests/RunCMake/CrosscompilingEmulator/CrosscompilingEmulatorProperty.cmake b/Tests/RunCMake/CrosscompilingEmulator/CrosscompilingEmulatorProperty.cmake index 22d537c..1aeb510 100644 --- a/Tests/RunCMake/CrosscompilingEmulator/CrosscompilingEmulatorProperty.cmake +++ b/Tests/RunCMake/CrosscompilingEmulator/CrosscompilingEmulatorProperty.cmake @@ -3,7 +3,7 @@ # -DCMAKE_CROSSCOMPILING_EMULATOR=/path/to/pseudo_emulator is passed to this # test -add_executable(target_with_emulator simple_src.cxx) +add_executable(target_with_emulator simple_src_exiterror.cxx) get_property(emulator TARGET target_with_emulator PROPERTY CROSSCOMPILING_EMULATOR) if(NOT "${emulator}" MATCHES "pseudo_emulator") @@ -20,7 +20,7 @@ if(NOT "${emulator}" MATCHES "another_emulator") endif() unset(CMAKE_CROSSCOMPILING_EMULATOR CACHE) -add_executable(target_without_emulator simple_src.cxx) +add_executable(target_without_emulator simple_src_exiterror.cxx) get_property(emulator TARGET target_without_emulator PROPERTY CROSSCOMPILING_EMULATOR) if(NOT "${emulator}" STREQUAL "") diff --git a/Tests/RunCMake/CrosscompilingEmulator/RunCMakeTest.cmake b/Tests/RunCMake/CrosscompilingEmulator/RunCMakeTest.cmake index 2581cfc..71aaad1 100644 --- a/Tests/RunCMake/CrosscompilingEmulator/RunCMakeTest.cmake +++ b/Tests/RunCMake/CrosscompilingEmulator/RunCMakeTest.cmake @@ -6,3 +6,18 @@ set(RunCMake_TEST_OPTIONS run_cmake(CrosscompilingEmulatorProperty) run_cmake(TryRun) run_cmake(AddTest) + +function(CustomCommandGenerator_run_and_build case) + # Use a single build tree for a few tests without cleaning. + set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${case}-build) + set(RunCMake_TEST_NO_CLEAN 1) + set(RunCMake_TEST_OPTIONS + "-DCMAKE_CROSSCOMPILING_EMULATOR=${PSEUDO_EMULATOR_CUSTOM_COMMAND}") + file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}") + file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}") + run_cmake(${case}) + run_cmake_command(${case}-build ${CMAKE_COMMAND} --build .) +endfunction() + +CustomCommandGenerator_run_and_build(AddCustomCommand) +CustomCommandGenerator_run_and_build(AddCustomTarget) diff --git a/Tests/RunCMake/CrosscompilingEmulator/TryRun.cmake b/Tests/RunCMake/CrosscompilingEmulator/TryRun.cmake index 4851cc7..af3712c 100644 --- a/Tests/RunCMake/CrosscompilingEmulator/TryRun.cmake +++ b/Tests/RunCMake/CrosscompilingEmulator/TryRun.cmake @@ -2,7 +2,7 @@ set(CMAKE_CROSSCOMPILING 1) try_run(run_result compile_result ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/simple_src.cxx + ${CMAKE_CURRENT_SOURCE_DIR}/simple_src_exiterror.cxx RUN_OUTPUT_VARIABLE run_output) message(STATUS "run_output: ${run_output}") @@ -13,6 +13,6 @@ set(CMAKE_CROSSCOMPILING_EMULATOR ${CMAKE_CROSSCOMPILING_EMULATOR} "multi arg") try_run(run_result compile_result ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/simple_src.cxx + ${CMAKE_CURRENT_SOURCE_DIR}/simple_src_exiterror.cxx RUN_OUTPUT_VARIABLE run_output) message(STATUS "Emulator with arguments run_output: ${run_output}") diff --git a/Tests/RunCMake/CrosscompilingEmulator/simple_src.cxx b/Tests/RunCMake/CrosscompilingEmulator/simple_src_exiterror.cxx index e5e94f2..e5e94f2 100644 --- a/Tests/RunCMake/CrosscompilingEmulator/simple_src.cxx +++ b/Tests/RunCMake/CrosscompilingEmulator/simple_src_exiterror.cxx diff --git a/Tests/RunCMake/CrosscompilingEmulator/simple_src_exitsuccess.cxx b/Tests/RunCMake/CrosscompilingEmulator/simple_src_exitsuccess.cxx new file mode 100644 index 0000000..630adc6 --- /dev/null +++ b/Tests/RunCMake/CrosscompilingEmulator/simple_src_exitsuccess.cxx @@ -0,0 +1,4 @@ +int main(int, char **) +{ + return 0; +} diff --git a/Tests/RunCMake/PolicyScope/NotClosed-stderr.txt b/Tests/RunCMake/PolicyScope/NotClosed-stderr.txt index 293d161..08c42a0 100644 --- a/Tests/RunCMake/PolicyScope/NotClosed-stderr.txt +++ b/Tests/RunCMake/PolicyScope/NotClosed-stderr.txt @@ -1,4 +1,4 @@ -^CMake Error at NotClosed.cmake:[0-9]+ \(include\): +^CMake Error in NotClosed.cmake: cmake_policy PUSH without matching POP Call Stack \(most recent call first\): CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/RunCMake.cmake b/Tests/RunCMake/RunCMake.cmake index 9d44a8a..fa0c980 100644 --- a/Tests/RunCMake/RunCMake.cmake +++ b/Tests/RunCMake/RunCMake.cmake @@ -51,8 +51,8 @@ function(run_cmake test) if(APPLE) list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0025=NEW) endif() - if(RunCMake_GENERATOR STREQUAL "Visual Studio 7" AND NOT RunCMake_WARN_VS70) - list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_WARN_VS70=OFF) + if(RunCMake_GENERATOR STREQUAL "Visual Studio 7 .NET 2003" AND NOT RunCMake_WARN_VS71) + list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_WARN_VS71=OFF) endif() if(RunCMake_MAKE_PROGRAM) list(APPEND RunCMake_TEST_OPTIONS "-DCMAKE_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}") diff --git a/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt index 776a8f2..306c255 100644 --- a/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt +++ b/Tests/RunCMake/Syntax/FunctionUnmatched-stderr.txt @@ -1,6 +1,8 @@ -^CMake Error at CMakeLists.txt:[0-9]+ \(include\): +^CMake Error in FunctionUnmatched.cmake: A logical block opening on the line .*/Tests/RunCMake/Syntax/FunctionUnmatched.cmake:[0-9]+ \(function\) - is not closed.$ + is not closed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt index 1699c43..440d863 100644 --- a/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt +++ b/Tests/RunCMake/Syntax/MacroUnmatched-stderr.txt @@ -1,6 +1,8 @@ -^CMake Error at CMakeLists.txt:[0-9]+ \(include\): +^CMake Error in MacroUnmatched.cmake: A logical block opening on the line .*/Tests/RunCMake/Syntax/MacroUnmatched.cmake:[0-9]+ \(macro\) - is not closed.$ + is not closed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/TargetSources/OriginDebugIDE-stderr.txt b/Tests/RunCMake/TargetSources/OriginDebugIDE-stderr.txt index fad7073..6fdcce7 100644 --- a/Tests/RunCMake/TargetSources/OriginDebugIDE-stderr.txt +++ b/Tests/RunCMake/TargetSources/OriginDebugIDE-stderr.txt @@ -25,7 +25,7 @@ Call Stack \(most recent call first\): OriginDebugIDE.cmake:4 \(include\) CMakeLists.txt:3 \(include\) + -CMake Debug Log: +CMake Debug Log in CMakeLists.txt: Used sources for target OriginDebug: * .*CMakeLists.txt diff --git a/Tests/RunCMake/find_package/PolicyPush-stderr.txt b/Tests/RunCMake/find_package/PolicyPush-stderr.txt index 1afcb16..73cf2e6 100644 --- a/Tests/RunCMake/find_package/PolicyPush-stderr.txt +++ b/Tests/RunCMake/find_package/PolicyPush-stderr.txt @@ -1,4 +1,4 @@ -^CMake Error at PolicyPush/PolicyPushConfigVersion.cmake:1 \(find_package\): +^CMake Error in PolicyPush/PolicyPushConfigVersion.cmake: cmake_policy PUSH without matching POP Call Stack \(most recent call first\): PolicyPush.cmake:1 \(find_package\) diff --git a/Tests/RunCMake/pseudo_emulator_custom_command.c b/Tests/RunCMake/pseudo_emulator_custom_command.c new file mode 100644 index 0000000..17181c9 --- /dev/null +++ b/Tests/RunCMake/pseudo_emulator_custom_command.c @@ -0,0 +1,34 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +// Usage: +// +// /path/to/program arg1 [arg2 [...]] +// +// Return EXIT_SUCCESS if 'generated_exe_emulator_expected' +// string was found in <arg1>. +// Return EXIT_FAILURE if 'generated_exe_emulator_unexpected' +// string was found in <arg1>. + +int main(int argc, const char* argv[]) +{ + const char* substring_failure = "generated_exe_emulator_unexpected"; + const char* substring_success = "generated_exe_emulator_expected"; + const char* str = argv[1]; + if (argc < 2) + { + return EXIT_FAILURE; + } + if (strstr(str, substring_success) != 0) + { + return EXIT_SUCCESS; + } + if (strstr(str, substring_failure) != 0) + { + return EXIT_FAILURE; + } + fprintf(stderr, "Failed to find string '%s' in '%s'\n", + substring_success, str); + return EXIT_FAILURE; +} diff --git a/Tests/RunCMake/pseudo_tidy.c b/Tests/RunCMake/pseudo_tidy.c new file mode 100644 index 0000000..766c990 --- /dev/null +++ b/Tests/RunCMake/pseudo_tidy.c @@ -0,0 +1,16 @@ +#include <stdio.h> + +int main(int argc, char* argv[]) +{ + int i; + for (i = 1; i < argc; ++i) + { + if (argv[i][0] != '-') + { + fprintf(stdout, "%s:0:0: warning: message [checker]\n", argv[i]); + break; + } + } + fprintf(stderr, "1 warning generated.\n"); + return 0; +} diff --git a/Tests/RunCMake/try_compile/CompileFlags.cmake b/Tests/RunCMake/try_compile/CompileFlags.cmake new file mode 100644 index 0000000..d4dc074 --- /dev/null +++ b/Tests/RunCMake/try_compile/CompileFlags.cmake @@ -0,0 +1,17 @@ +enable_language(C) +set(CMAKE_C_FLAGS_RELEASE "-DPP_ERROR ${CMAKE_C_FLAGS_DEBUG}") + +#----------------------------------------------------------------------------- +set(CMAKE_TRY_COMPILE_CONFIGURATION Release) +try_compile(RESULT ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/src.c + OUTPUT_VARIABLE out + ) +string(REPLACE "\n" "\n " out " ${out}") +if(RESULT) + message(FATAL_ERROR "try_compile passed but should have failed:\n${out}") +elseif(NOT "x${out}" MATCHES "PP_ERROR is defined") + message(FATAL_ERROR "try_compile did not fail with PP_ERROR:\n${out}") +else() + message(STATUS "try_compile with per-config flag worked as expected") +endif() diff --git a/Tests/RunCMake/try_compile/RunCMakeTest.cmake b/Tests/RunCMake/try_compile/RunCMakeTest.cmake index 43ce998..4b1d92a 100644 --- a/Tests/RunCMake/try_compile/RunCMakeTest.cmake +++ b/Tests/RunCMake/try_compile/RunCMakeTest.cmake @@ -21,6 +21,7 @@ run_cmake(TargetTypeInvalid) run_cmake(TargetTypeStatic) run_cmake(CMP0056) +run_cmake(CompileFlags) if(RunCMake_GENERATOR MATCHES "Make|Ninja") # Use a single build tree for a few tests without cleaning. diff --git a/Tests/RunCMake/try_compile/src.c b/Tests/RunCMake/try_compile/src.c index 78f2de1..ab83eb6 100644 --- a/Tests/RunCMake/try_compile/src.c +++ b/Tests/RunCMake/try_compile/src.c @@ -1 +1,4 @@ int main(void) { return 0; } +#ifdef PP_ERROR +# error PP_ERROR is defined +#endif diff --git a/Tests/RunCMake/while/EndMismatch-stderr.txt b/Tests/RunCMake/while/EndMismatch-stderr.txt index d7439e8..54d299f 100644 --- a/Tests/RunCMake/while/EndMismatch-stderr.txt +++ b/Tests/RunCMake/while/EndMismatch-stderr.txt @@ -1,4 +1,4 @@ -^CMake Warning \(dev\) at EndMismatch.cmake:3 \(include\): +^CMake Warning \(dev\) in EndMismatch.cmake: A logical block opening on the line .*/Tests/RunCMake/while/EndMismatch.cmake:1 \(while\) diff --git a/Tests/RunCMake/while/EndMissing-stderr.txt b/Tests/RunCMake/while/EndMissing-stderr.txt index 099a8b2..964792f 100644 --- a/Tests/RunCMake/while/EndMissing-stderr.txt +++ b/Tests/RunCMake/while/EndMissing-stderr.txt @@ -1,6 +1,8 @@ -^CMake Error at CMakeLists.txt:3 \(include\): +^CMake Error in EndMissing.cmake: A logical block opening on the line .*/Tests/RunCMake/while/EndMissing.cmake:1 \(while\) - is not closed.$ + is not closed. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/StagingPrefix/Consumer/main.cpp b/Tests/StagingPrefix/Consumer/main.cpp index 612ee05..5c0202d 100644 --- a/Tests/StagingPrefix/Consumer/main.cpp +++ b/Tests/StagingPrefix/Consumer/main.cpp @@ -1,6 +1,6 @@ -#include "foo.h" #include "bar.h" +#include "foo.h" int main(int, char **) { diff --git a/Tests/StringFileTest/StringFile.cxx b/Tests/StringFileTest/StringFile.cxx index 9eba6bf..073e30c 100644 --- a/Tests/StringFileTest/StringFile.cxx +++ b/Tests/StringFileTest/StringFile.cxx @@ -1,5 +1,6 @@ #include <stdio.h> #include <string.h> + #include "OutputFile.h" int main(int, char*[]) diff --git a/Tests/TestsWorkingDirectory/main.c b/Tests/TestsWorkingDirectory/main.c index 19f2f14..d4b760c 100644 --- a/Tests/TestsWorkingDirectory/main.c +++ b/Tests/TestsWorkingDirectory/main.c @@ -5,8 +5,8 @@ #if defined(_WIN32) && (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__) || defined(__MINGW32__)) -#include <io.h> #include <direct.h> +#include <io.h> #if defined(__WATCOMC__) #include <direct.h> @@ -38,8 +38,8 @@ static const char* Getcwd(char* buf, unsigned int len) } #else -#include <sys/types.h> #include <fcntl.h> +#include <sys/types.h> #include <unistd.h> static const char* Getcwd(char* buf, unsigned int len) diff --git a/Tests/Tutorial/Step1/tutorial.cxx b/Tests/Tutorial/Step1/tutorial.cxx index 8ab6dc3..a3584c4 100644 --- a/Tests/Tutorial/Step1/tutorial.cxx +++ b/Tests/Tutorial/Step1/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" int main (int argc, char *argv[]) { diff --git a/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx index 62523f6..0f7c106 100644 --- a/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx +++ b/Tests/Tutorial/Step2/MathFunctions/mysqrt.cxx @@ -1,5 +1,5 @@ -#include <stdio.h> #include "MathFunctions.h" +#include <stdio.h> // a hack square root calculation using simple operations double mysqrt(double x) diff --git a/Tests/Tutorial/Step2/tutorial.cxx b/Tests/Tutorial/Step2/tutorial.cxx index c27da0b..af88dad 100644 --- a/Tests/Tutorial/Step2/tutorial.cxx +++ b/Tests/Tutorial/Step2/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" diff --git a/Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx index 62523f6..0f7c106 100644 --- a/Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx +++ b/Tests/Tutorial/Step3/MathFunctions/mysqrt.cxx @@ -1,5 +1,5 @@ -#include <stdio.h> #include "MathFunctions.h" +#include <stdio.h> // a hack square root calculation using simple operations double mysqrt(double x) diff --git a/Tests/Tutorial/Step3/tutorial.cxx b/Tests/Tutorial/Step3/tutorial.cxx index c27da0b..af88dad 100644 --- a/Tests/Tutorial/Step3/tutorial.cxx +++ b/Tests/Tutorial/Step3/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" diff --git a/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx index d081d11..bbd08fa 100644 --- a/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx +++ b/Tests/Tutorial/Step4/MathFunctions/mysqrt.cxx @@ -1,6 +1,6 @@ -#include <stdio.h> #include "MathFunctions.h" #include "TutorialConfig.h" +#include <stdio.h> #include <math.h> diff --git a/Tests/Tutorial/Step4/tutorial.cxx b/Tests/Tutorial/Step4/tutorial.cxx index c27da0b..af88dad 100644 --- a/Tests/Tutorial/Step4/tutorial.cxx +++ b/Tests/Tutorial/Step4/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" diff --git a/Tests/Tutorial/Step5/MathFunctions/MakeTable.cxx b/Tests/Tutorial/Step5/MathFunctions/MakeTable.cxx index ef98d5f..a23feeb 100644 --- a/Tests/Tutorial/Step5/MathFunctions/MakeTable.cxx +++ b/Tests/Tutorial/Step5/MathFunctions/MakeTable.cxx @@ -1,6 +1,6 @@ // A simple program that builds a sqrt table -#include <stdio.h> #include <math.h> +#include <stdio.h> int main (int argc, char *argv[]) { diff --git a/Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx index 1f9b887..a488af6 100644 --- a/Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx +++ b/Tests/Tutorial/Step5/MathFunctions/mysqrt.cxx @@ -1,6 +1,6 @@ -#include <stdio.h> #include "MathFunctions.h" #include "TutorialConfig.h" +#include <stdio.h> // include the generated table #include "Table.h" diff --git a/Tests/Tutorial/Step5/tutorial.cxx b/Tests/Tutorial/Step5/tutorial.cxx index c27da0b..af88dad 100644 --- a/Tests/Tutorial/Step5/tutorial.cxx +++ b/Tests/Tutorial/Step5/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" diff --git a/Tests/Tutorial/Step6/MathFunctions/MakeTable.cxx b/Tests/Tutorial/Step6/MathFunctions/MakeTable.cxx index ef98d5f..a23feeb 100644 --- a/Tests/Tutorial/Step6/MathFunctions/MakeTable.cxx +++ b/Tests/Tutorial/Step6/MathFunctions/MakeTable.cxx @@ -1,6 +1,6 @@ // A simple program that builds a sqrt table -#include <stdio.h> #include <math.h> +#include <stdio.h> int main (int argc, char *argv[]) { diff --git a/Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx index 1f9b887..a488af6 100644 --- a/Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx +++ b/Tests/Tutorial/Step6/MathFunctions/mysqrt.cxx @@ -1,6 +1,6 @@ -#include <stdio.h> #include "MathFunctions.h" #include "TutorialConfig.h" +#include <stdio.h> // include the generated table #include "Table.h" diff --git a/Tests/Tutorial/Step6/tutorial.cxx b/Tests/Tutorial/Step6/tutorial.cxx index c27da0b..af88dad 100644 --- a/Tests/Tutorial/Step6/tutorial.cxx +++ b/Tests/Tutorial/Step6/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" diff --git a/Tests/Tutorial/Step7/MathFunctions/MakeTable.cxx b/Tests/Tutorial/Step7/MathFunctions/MakeTable.cxx index ef98d5f..a23feeb 100644 --- a/Tests/Tutorial/Step7/MathFunctions/MakeTable.cxx +++ b/Tests/Tutorial/Step7/MathFunctions/MakeTable.cxx @@ -1,6 +1,6 @@ // A simple program that builds a sqrt table -#include <stdio.h> #include <math.h> +#include <stdio.h> int main (int argc, char *argv[]) { diff --git a/Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx b/Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx index 1f9b887..a488af6 100644 --- a/Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx +++ b/Tests/Tutorial/Step7/MathFunctions/mysqrt.cxx @@ -1,6 +1,6 @@ -#include <stdio.h> #include "MathFunctions.h" #include "TutorialConfig.h" +#include <stdio.h> // include the generated table #include "Table.h" diff --git a/Tests/Tutorial/Step7/tutorial.cxx b/Tests/Tutorial/Step7/tutorial.cxx index c27da0b..af88dad 100644 --- a/Tests/Tutorial/Step7/tutorial.cxx +++ b/Tests/Tutorial/Step7/tutorial.cxx @@ -1,8 +1,8 @@ // A simple program that computes the square root of a number +#include "TutorialConfig.h" +#include <math.h> #include <stdio.h> #include <stdlib.h> -#include <math.h> -#include "TutorialConfig.h" #ifdef USE_MYMATH #include "MathFunctions.h" diff --git a/Tests/VSResource/main.cpp b/Tests/VSResource/main.cpp index ccf700c..f8372b7 100644 --- a/Tests/VSResource/main.cpp +++ b/Tests/VSResource/main.cpp @@ -1,5 +1,5 @@ -#include <windows.h> #include <stdio.h> +#include <windows.h> extern int lib(); diff --git a/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp b/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp index f4827f2..7632388 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp +++ b/Tests/VSWinStorePhone/Direct3DApp1/CubeRenderer.cpp @@ -1,4 +1,5 @@ #include "pch.h" + #include "CubeRenderer.h" using namespace DirectX; diff --git a/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.cpp b/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.cpp index 3dbb97f..41ca124 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.cpp +++ b/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.cpp @@ -1,6 +1,7 @@ #include "pch.h" -#include "Direct3DApp1.h" + #include "BasicTimer.h" +#include "Direct3DApp1.h" using namespace Windows::ApplicationModel; using namespace Windows::ApplicationModel::Core; diff --git a/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.h b/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.h index 40b69a1..6861e44 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.h +++ b/Tests/VSWinStorePhone/Direct3DApp1/Direct3DApp1.h @@ -1,6 +1,7 @@ #pragma once #include "pch.h" + #include "CubeRenderer.h" ref class Direct3DApp1 sealed : public Windows::ApplicationModel::Core::IFrameworkView diff --git a/Tests/VSWinStorePhone/Direct3DApp1/Direct3DBase.cpp b/Tests/VSWinStorePhone/Direct3DApp1/Direct3DBase.cpp index 46727b5..f09c8da 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/Direct3DBase.cpp +++ b/Tests/VSWinStorePhone/Direct3DApp1/Direct3DBase.cpp @@ -1,4 +1,5 @@ #include "pch.h" + #include "Direct3DBase.h" using namespace DirectX; diff --git a/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h b/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h index d411a9b..3434ba9 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h +++ b/Tests/VSWinStorePhone/Direct3DApp1/DirectXHelper.h @@ -1,8 +1,8 @@ #pragma once -#include <wrl/client.h> #include <ppl.h> #include <ppltasks.h> +#include <wrl/client.h> namespace DX { diff --git a/Tests/VSWinStorePhone/Direct3DApp1/pch.h b/Tests/VSWinStorePhone/Direct3DApp1/pch.h index 2302e66..78ebea3 100644 --- a/Tests/VSWinStorePhone/Direct3DApp1/pch.h +++ b/Tests/VSWinStorePhone/Direct3DApp1/pch.h @@ -1,7 +1,7 @@ #pragma once -#include <wrl/client.h> -#include <d3d11_1.h> #include <DirectXMath.h> -#include <memory> #include <agile.h> +#include <d3d11_1.h> +#include <memory> +#include <wrl/client.h> diff --git a/Tests/VSXaml/App.xaml.cpp b/Tests/VSXaml/App.xaml.cpp index 334dc1f..2cb2b32 100644 --- a/Tests/VSXaml/App.xaml.cpp +++ b/Tests/VSXaml/App.xaml.cpp @@ -4,6 +4,7 @@ // #include "pch.h" + #include "MainPage.xaml.h" using namespace VSXaml; @@ -122,4 +123,4 @@ void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e) void App::OnNavigationFailed(Platform::Object ^sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^e) { throw ref new FailureException("Failed to load Page " + e->SourcePageType.Name); -}
\ No newline at end of file +} diff --git a/Tests/VSXaml/MainPage.xaml.cpp b/Tests/VSXaml/MainPage.xaml.cpp index d0a64e8..63f2dec 100644 --- a/Tests/VSXaml/MainPage.xaml.cpp +++ b/Tests/VSXaml/MainPage.xaml.cpp @@ -4,6 +4,7 @@ // #include "pch.h" + #include "MainPage.xaml.h" using namespace VSXaml; diff --git a/Tests/Wrapping/CMakeLists.txt b/Tests/Wrapping/CMakeLists.txt index aca36bc..7d9a4c6 100644 --- a/Tests/Wrapping/CMakeLists.txt +++ b/Tests/Wrapping/CMakeLists.txt @@ -93,7 +93,7 @@ add_library(wraplibFLTK ${wraplibFLTK_FLTK_UI_SRCS}) add_dependencies(wraplibFLTK fakefluid) add_dependencies(fakefluid Wrap) fltk_wrap_ui (wrapFLTK fltk2.fl) -add_executable(wrapFLTK wrapFLTK.c ${wrapFLTK_FLTK_UI_SRCS}) +add_executable(wrapFLTK wrapFLTK.cxx ${wrapFLTK_FLTK_UI_SRCS}) target_link_libraries(wrapFLTK wraplibFLTK) add_dependencies(wrapFLTK fakefluid) diff --git a/Tests/Wrapping/qtwrappingmain.cxx b/Tests/Wrapping/qtwrappingmain.cxx index fabecfc..55c7952 100644 --- a/Tests/Wrapping/qtwrappingmain.cxx +++ b/Tests/Wrapping/qtwrappingmain.cxx @@ -1,9 +1,9 @@ -#include <qapplication.h> #include "qtwrapping.h" +#include <qapplication.h> #ifndef _WIN32 -# include <stdlib.h> # include <stdio.h> +# include <stdlib.h> #endif int main(int argc, char *argv[]) diff --git a/Tests/Wrapping/wrapFLTK.cxx b/Tests/Wrapping/wrapFLTK.cxx new file mode 100644 index 0000000..78f2de1 --- /dev/null +++ b/Tests/Wrapping/wrapFLTK.cxx @@ -0,0 +1 @@ +int main(void) { return 0; } diff --git a/Tests/X11/HelloWorldX11.cxx b/Tests/X11/HelloWorldX11.cxx index f2b8bdd..27ab843 100644 --- a/Tests/X11/HelloWorldX11.cxx +++ b/Tests/X11/HelloWorldX11.cxx @@ -19,8 +19,8 @@ /* include the X library headers */ #include <X11/Xlib.h> -#include <X11/Xutil.h> #include <X11/Xos.h> +#include <X11/Xutil.h> class Main { diff --git a/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp b/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp index dad1ae5..d4f628c 100644 --- a/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp +++ b/Utilities/Release/WiX/CustomAction/detect_nsis_overwrite.cpp @@ -1,4 +1,5 @@ #include <windows.h> + #include <msi.h> #include <msiquery.h> diff --git a/Utilities/Release/linux32_release.cmake b/Utilities/Release/linux32_release.cmake index 00abcc1..6d096d1 100644 --- a/Utilities/Release/linux32_release.cmake +++ b/Utilities/Release/linux32_release.cmake @@ -12,9 +12,9 @@ CURSES_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libncurses.a CURSES_INCLUDE_PATH:PATH=/usr/i686-gcc-332s/include/ncurses FORM_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libform.a CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2f/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2f/include -OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2f/lib/libssl.a +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2h/include +OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-i386 BUILD_QtDialog:BOOL:=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE diff --git a/Utilities/Release/linux64_release.cmake b/Utilities/Release/linux64_release.cmake index 4787d69..cfe370b 100644 --- a/Utilities/Release/linux64_release.cmake +++ b/Utilities/Release/linux64_release.cmake @@ -12,9 +12,9 @@ CURSES_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libncurses.a CURSES_INCLUDE_PATH:PATH=/home/kitware/ncurses-5.9/include FORM_LIBRARY:FILEPATH=/home/kitware/ncurses-5.9/lib/libform.a CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2f/lib/libcrypto.a -OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2f/include -OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2f/lib/libssl.a +OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libcrypto.a +OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.2h/include +OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.2h/lib/libssl.a CPACK_SYSTEM_NAME:STRING=Linux-x86_64 BUILD_QtDialog:BOOL:=TRUE CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake index 568a98c..17f7df6 100644 --- a/Utilities/Release/osx_release.cmake +++ b/Utilities/Release/osx_release.cmake @@ -1,7 +1,7 @@ set(PROCESSORS 4) set(CMAKE_RELEASE_DIRECTORY /Users/kitware/CMakeReleaseDirectory) set(BOOTSTRAP_ARGS "--prefix=/ --docdir=doc/cmake") -set(HOST bigmac) +set(HOST dragnipur) set(MAKE_PROGRAM "make") set(MAKE "${MAKE_PROGRAM} -j5") set(CPACK_BINARY_GENERATORS "DragNDrop TGZ TZ") @@ -26,7 +26,7 @@ CMake_NO_CXX_STANDARD:BOOL=TRUE CMake_TEST_NO_FindPackageModeMakefileTest:BOOL=TRUE ") set(ENV [[ -export CMAKE_PREFIX_PATH='/Users/kitware/dashboards/support/Qt-5.5.1' +export CMAKE_PREFIX_PATH='/Users/kitware/SDKs/qt-5.6.0-clang-x64' ]]) get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) include(${path}/release_cmake.cmake) diff --git a/Utilities/Release/win32_release.cmake b/Utilities/Release/win32_release.cmake index 1d3ec86..ba83b26 100644 --- a/Utilities/Release/win32_release.cmake +++ b/Utilities/Release/win32_release.cmake @@ -19,7 +19,7 @@ CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x86 -subsystem:console,5.01 ") -set(ppflags "-D_WIN32_WINNT=0x501 -D_USING_V110_SDK71_") +set(ppflags "-D_WIN32_WINNT=0x501 -DNTDDI_VERSION=0x05010000 -D_USING_V110_SDK71_") set(CFLAGS "${ppflags}") set(CXXFLAGS "${ppflags}") set(ENV ". ~/rel/env") diff --git a/Utilities/Release/win64_release.cmake b/Utilities/Release/win64_release.cmake index b2d4ad1..8e207b5 100644 --- a/Utilities/Release/win64_release.cmake +++ b/Utilities/Release/win64_release.cmake @@ -20,7 +20,7 @@ CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:BOOL=TRUE CMake_INSTALL_DEPENDENCIES:BOOL=ON CMAKE_EXE_LINKER_FLAGS:STRING=-machine:x64 -subsystem:console,5.02 ") -set(ppflags "-D_WIN32_WINNT=0x502 -D_USING_V110_SDK71_") +set(ppflags "-D_WIN32_WINNT=0x502 -DNTDDI_VERSION=0x05020000 -D_USING_V110_SDK71_") set(CFLAGS "${ppflags}") set(CXXFLAGS "${ppflags}") set(ENV ". ~/rel/env64") diff --git a/Utilities/Scripts/update-expat.bash b/Utilities/Scripts/update-expat.bash new file mode 100755 index 0000000..8a2a5fe --- /dev/null +++ b/Utilities/Scripts/update-expat.bash @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +set -e +set -x +shopt -s dotglob + +readonly name="expat" +readonly ownership="Expat Upstream <kwrobot@kitware.com>" +readonly subtree="Utilities/cmexpat" +readonly repo="http://git.code.sf.net/p/expat/code_git" +readonly tag="master" +readonly shortlog=false +readonly paths=" + expat/lib/asciitab.h + expat/lib/expat.h + expat/lib/xmltok.h + expat/lib/internal.h + expat/lib/xmlrole.h + expat/lib/iasciitab.h + expat/lib/latin1tab.h + expat/lib/xmlrole.c + expat/lib/utf8tab.h + expat/lib/nametab.h + expat/lib/ascii.h + expat/lib/xmltok_impl.h + expat/lib/xmltok_ns.c + expat/lib/winconfig.h + expat/lib/expat_external.h + expat/lib/xmltok.c + expat/lib/xmlparse.c + expat/lib/xmltok_impl.c + expat/README + expat/ConfigureChecks.cmake + expat/CMakeLists.txt + expat/expat_config.h.cmake + expat/COPYING +" + +extract_source () { + git_archive + pushd "${extractdir}/${name}-reduced" + fromdos expat/ConfigureChecks.cmake expat/CMakeLists.txt expat/expat_config.h.cmake + chmod a-x expat/ConfigureChecks.cmake expat/CMakeLists.txt expat/expat_config.h.cmake + mv expat/* . + rmdir expat + popd +} + +. "${BASH_SOURCE%/*}/update-third-party.bash" diff --git a/Utilities/Scripts/update-libarchive.bash b/Utilities/Scripts/update-libarchive.bash new file mode 100755 index 0000000..3b42269 --- /dev/null +++ b/Utilities/Scripts/update-libarchive.bash @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -e +set -x +shopt -s dotglob + +readonly name="LibArchive" +readonly ownership="LibArchive Upstream <libarchive-discuss@googlegroups.com>" +readonly subtree="Utilities/cmlibarchive" +readonly repo="https://github.com/libarchive/libarchive.git" +readonly tag="master" +readonly shortlog=false +readonly paths=" + CMakeLists.txt + COPYING + CTestConfig.cmake + build/cmake + build/pkgconfig + build/utils + build/version + libarchive/*.* +" + +extract_source () { + git_archive + pushd "${extractdir}/${name}-reduced" + fromdos build/cmake/Find*.cmake + popd +} + +. "${BASH_SOURCE%/*}/update-third-party.bash" diff --git a/Utilities/cm_expat.h b/Utilities/cm_expat.h index f361541..d35e106 100644 --- a/Utilities/cm_expat.h +++ b/Utilities/cm_expat.h @@ -17,7 +17,7 @@ #ifdef CMAKE_USE_SYSTEM_EXPAT # include <expat.h> #else -# include <cmexpat/expat.h> +# include <cmexpat/lib/expat.h> #endif #endif diff --git a/Utilities/cmexpat/.NoDartCoverage b/Utilities/cmexpat/.NoDartCoverage deleted file mode 100644 index 3c99729..0000000 --- a/Utilities/cmexpat/.NoDartCoverage +++ /dev/null @@ -1 +0,0 @@ -# do not do coverage in this directory diff --git a/Utilities/cmexpat/.gitattributes b/Utilities/cmexpat/.gitattributes new file mode 100644 index 0000000..562b12e --- /dev/null +++ b/Utilities/cmexpat/.gitattributes @@ -0,0 +1 @@ +* -whitespace diff --git a/Utilities/cmexpat/CMakeLists.txt b/Utilities/cmexpat/CMakeLists.txt index 51ba413..d294165 100644 --- a/Utilities/cmexpat/CMakeLists.txt +++ b/Utilities/cmexpat/CMakeLists.txt @@ -1,34 +1,25 @@ -PROJECT(CMEXPAT) +# Disable warnings to avoid changing 3rd party code. +IF(CMAKE_C_COMPILER_ID MATCHES + "^(GNU|Clang|AppleClang|XL|VisualAge|SunPro|MIPSpro|HP|Intel)$") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w") +ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "PathScale") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -woffall") +ENDIF() -SET(expat_SRCS - xmlparse.c - xmltok.c - xmlrole.c -) +include(ConfigureChecks.cmake) +if(WIN32) + add_definitions(-DCOMPILING_FOR_WINDOWS) +endif(WIN32) -INCLUDE(${CMAKE_ROOT}/Modules/TestBigEndian.cmake) -TEST_BIG_ENDIAN(CMEXPAT_BIGENDIAN) - -INCLUDE_DIRECTORIES( - "${CMEXPAT_BINARY_DIR}/.." +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/lib ) -IF(WIN32) - IF(NOT BUILD_SHARED_LIBS) - SET (CM_EXPAT_STATIC 1) - ENDIF(NOT BUILD_SHARED_LIBS) -ENDIF(WIN32) - -CONFIGURE_FILE(${CMEXPAT_SOURCE_DIR}/expatConfig.h.in - ${CMEXPAT_BINARY_DIR}/expatConfig.h) -CONFIGURE_FILE(${CMEXPAT_SOURCE_DIR}/expatDllConfig.h.in - ${CMEXPAT_BINARY_DIR}/expatDllConfig.h) -CONFIGURE_FILE(${CMEXPAT_SOURCE_DIR}/.NoDartCoverage - ${CMEXPAT_BINARY_DIR}/.NoDartCoverage) -CONFIGURE_FILE(${CMEXPAT_SOURCE_DIR}/cm_expat_mangle.h - ${CMEXPAT_BINARY_DIR}/cm_expat_mangle.h) -CONFIGURE_FILE(${CMEXPAT_SOURCE_DIR}/expat.h - ${CMEXPAT_BINARY_DIR}/expat.h) - -ADD_LIBRARY(cmexpat ${expat_SRCS}) -INSTALL(FILES COPYING DESTINATION ${CMAKE_DOC_DIR}/cmexpat) +add_library(cmexpat STATIC + lib/xmlparse.c + lib/xmlrole.c + lib/xmltok.c + lib/xmltok_impl.c + lib/xmltok_ns.c + ) diff --git a/Utilities/cmexpat/COPYING b/Utilities/cmexpat/COPYING index fc97b02..dcb4506 100644 --- a/Utilities/cmexpat/COPYING +++ b/Utilities/cmexpat/COPYING @@ -1,5 +1,6 @@ Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd and Clark Cooper +Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/Utilities/cmexpat/ConfigureChecks.cmake b/Utilities/cmexpat/ConfigureChecks.cmake new file mode 100644 index 0000000..f03faa6 --- /dev/null +++ b/Utilities/cmexpat/ConfigureChecks.cmake @@ -0,0 +1,44 @@ +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckFunctionExists) +include(CheckSymbolExists) +include(TestBigEndian) + +check_include_file("dlfcn.h" HAVE_DLFCN_H) +check_include_file("fcntl.h" HAVE_FCNTL_H) +check_include_file("inttypes.h" HAVE_INTTYPES_H) +check_include_file("memory.h" HAVE_MEMORY_H) +check_include_file("stdint.h" HAVE_STDINT_H) +check_include_file("stdlib.h" HAVE_STDLIB_H) +check_include_file("strings.h" HAVE_STRINGS_H) +check_include_file("string.h" HAVE_STRING_H) +check_include_file("sys/stat.h" HAVE_SYS_STAT_H) +check_include_file("sys/types.h" HAVE_SYS_TYPES_H) +check_include_file("unistd.h" HAVE_UNISTD_H) + +check_function_exists("getpagesize" HAVE_GETPAGESIZE) +check_function_exists("bcopy" HAVE_BCOPY) +check_symbol_exists("memmove" "string.h" HAVE_MEMMOVE) +check_function_exists("mmap" HAVE_MMAP) + +#/* Define to 1 if you have the ANSI C header files. */ +check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) + +test_big_endian(WORDS_BIGENDIAN) +#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +if(WORDS_BIGENDIAN) + set(BYTEORDER 4321) +else(WORDS_BIGENDIAN) + set(BYTEORDER 1234) +endif(WORDS_BIGENDIAN) + +if(HAVE_SYS_TYPES_H) + check_symbol_exists("off_t" "sys/types.h" OFF_T) + check_symbol_exists("size_t" "sys/types.h" SIZE_T) +else(HAVE_SYS_TYPES_H) + set(OFF_T "long") + set(SIZE_T "unsigned") +endif(HAVE_SYS_TYPES_H) + +configure_file(expat_config.h.cmake expat_config.h) +add_definitions(-DHAVE_EXPAT_CONFIG_H) diff --git a/Utilities/cmexpat/README b/Utilities/cmexpat/README new file mode 100644 index 0000000..9ec8d0c --- /dev/null +++ b/Utilities/cmexpat/README @@ -0,0 +1,139 @@ + + Expat, Release 2.1.1 + +This is Expat, a C library for parsing XML, written by James Clark. +Expat is a stream-oriented XML parser. This means that you register +handlers with the parser before starting the parse. These handlers +are called when the parser discovers the associated structures in the +document being parsed. A start tag is an example of the kind of +structures for which you may register handlers. + +Windows users should use the expat_win32bin package, which includes +both precompiled libraries and executables, and source code for +developers. + +Expat is free software. You may copy, distribute, and modify it under +the terms of the License contained in the file COPYING distributed +with this package. This license is the same as the MIT/X Consortium +license. + +Versions of Expat that have an odd minor version (the middle number in +the release above), are development releases and should be considered +as beta software. Releases with even minor version numbers are +intended to be production grade software. + +If you are building Expat from a check-out from the CVS repository, +you need to run a script that generates the configure script using the +GNU autoconf and libtool tools. To do this, you need to have +autoconf 2.58 or newer. Run the script like this: + + ./buildconf.sh + +Once this has been done, follow the same instructions as for building +from a source distribution. + +To build Expat from a source distribution, you first run the +configuration shell script in the top level distribution directory: + + ./configure + +There are many options which you may provide to configure (which you +can discover by running configure with the --help option). But the +one of most interest is the one that sets the installation directory. +By default, the configure script will set things up to install +libexpat into /usr/local/lib, expat.h into /usr/local/include, and +xmlwf into /usr/local/bin. If, for example, you'd prefer to install +into /home/me/mystuff/lib, /home/me/mystuff/include, and +/home/me/mystuff/bin, you can tell configure about that with: + + ./configure --prefix=/home/me/mystuff + +Another interesting option is to enable 64-bit integer support for +line and column numbers and the over-all byte index: + + ./configure CPPFLAGS=-DXML_LARGE_SIZE + +However, such a modification would be a breaking change to the ABI +and is therefore not recommended for general use - e.g. as part of +a Linux distribution - but rather for builds with special requirements. + +After running the configure script, the "make" command will build +things and "make install" will install things into their proper +location. Have a look at the "Makefile" to learn about additional +"make" options. Note that you need to have write permission into +the directories into which things will be installed. + +If you are interested in building Expat to provide document +information in UTF-16 encoding rather than the default UTF-8, follow +these instructions (after having run "make distclean"): + + 1. For UTF-16 output as unsigned short (and version/error + strings as char), run: + + ./configure CPPFLAGS=-DXML_UNICODE + + For UTF-16 output as wchar_t (incl. version/error strings), + run: + + ./configure CFLAGS="-g -O2 -fshort-wchar" \ + CPPFLAGS=-DXML_UNICODE_WCHAR_T + + 2. Edit the MakeFile, changing: + + LIBRARY = libexpat.la + + to: + + LIBRARY = libexpatw.la + + (Note the additional "w" in the library name.) + + 3. Run "make buildlib" (which builds the library only). + Or, to save step 2, run "make buildlib LIBRARY=libexpatw.la". + + 4. Run "make installlib" (which installs the library only). + Or, if step 2 was omitted, run "make installlib LIBRARY=libexpatw.la". + +Using DESTDIR or INSTALL_ROOT is enabled, with INSTALL_ROOT being the default +value for DESTDIR, and the rest of the make file using only DESTDIR. +It works as follows: + $ make install DESTDIR=/path/to/image +overrides the in-makefile set DESTDIR, while both + $ INSTALL_ROOT=/path/to/image make install + $ make install INSTALL_ROOT=/path/to/image +use DESTDIR=$(INSTALL_ROOT), even if DESTDIR eventually is defined in the +environment, because variable-setting priority is +1) commandline +2) in-makefile +3) environment + +Note: This only applies to the Expat library itself, building UTF-16 versions +of xmlwf and the tests is currently not supported. + +Note for Solaris users: The "ar" command is usually located in +"/usr/ccs/bin", which is not in the default PATH. You will need to +add this to your path for the "make" command, and probably also switch +to GNU make (the "make" found in /usr/ccs/bin does not seem to work +properly -- appearantly it does not understand .PHONY directives). If +you're using ksh or bash, use this command to build: + + PATH=/usr/ccs/bin:$PATH make + +When using Expat with a project using autoconf for configuration, you +can use the probing macro in conftools/expat.m4 to determine how to +include Expat. See the comments at the top of that file for more +information. + +A reference manual is available in the file doc/reference.html in this +distribution. + +The homepage for this project is http://www.libexpat.org/. There +are links there to connect you to the bug reports page. If you need +to report a bug when you don't have access to a browser, you may also +send a bug report by email to expat-bugs@mail.libexpat.org. + +Discussion related to the direction of future expat development takes +place on expat-discuss@mail.libexpat.org. Archives of this list and +other Expat-related lists may be found at: + + http://mail.libexpat.org/mailman/listinfo/ diff --git a/Utilities/cmexpat/cm_expat_mangle.h b/Utilities/cmexpat/cm_expat_mangle.h deleted file mode 100644 index 82276a5..0000000 --- a/Utilities/cmexpat/cm_expat_mangle.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef cm_expat_mangle_h -#define cm_expat_mangle_h - -/* - -This header file mangles all symbols exported from the expat library. -It is included in all files while building the expat library. Due to -namespace pollution, no expat headers should be included in .h files in -CMake. - -The following command was used to obtain the symbol list: - -nm libcmexpat.a |grep " T " - -*/ - -#define XML_DefaultCurrent cm_expat_XML_DefaultCurrent -#define XML_ErrorString cm_expat_XML_ErrorString -#define XML_ExpatVersion cm_expat_XML_ExpatVersion -#define XML_ExpatVersionInfo cm_expat_XML_ExpatVersionInfo -#define XML_ExternalEntityParserCreate cm_expat_XML_ExternalEntityParserCreate -#define XML_GetBase cm_expat_XML_GetBase -#define XML_GetBuffer cm_expat_XML_GetBuffer -#define XML_GetCurrentByteCount cm_expat_XML_GetCurrentByteCount -#define XML_GetCurrentByteIndex cm_expat_XML_GetCurrentByteIndex -#define XML_GetCurrentColumnNumber cm_expat_XML_GetCurrentColumnNumber -#define XML_GetCurrentLineNumber cm_expat_XML_GetCurrentLineNumber -#define XML_GetErrorCode cm_expat_XML_GetErrorCode -#define XML_GetIdAttributeIndex cm_expat_XML_GetIdAttributeIndex -#define XML_GetInputContext cm_expat_XML_GetInputContext -#define XML_GetSpecifiedAttributeCount cm_expat_XML_GetSpecifiedAttributeCount -#define XML_Parse cm_expat_XML_Parse -#define XML_ParseBuffer cm_expat_XML_ParseBuffer -#define XML_ParserCreate cm_expat_XML_ParserCreate -#define XML_ParserCreateNS cm_expat_XML_ParserCreateNS -#define XML_ParserCreate_MM cm_expat_XML_ParserCreate_MM -#define XML_ParserFree cm_expat_XML_ParserFree -#define XML_SetAttlistDeclHandler cm_expat_XML_SetAttlistDeclHandler -#define XML_SetBase cm_expat_XML_SetBase -#define XML_SetCdataSectionHandler cm_expat_XML_SetCdataSectionHandler -#define XML_SetCharacterDataHandler cm_expat_XML_SetCharacterDataHandler -#define XML_SetCommentHandler cm_expat_XML_SetCommentHandler -#define XML_SetDefaultHandler cm_expat_XML_SetDefaultHandler -#define XML_SetDefaultHandlerExpand cm_expat_XML_SetDefaultHandlerExpand -#define XML_SetDoctypeDeclHandler cm_expat_XML_SetDoctypeDeclHandler -#define XML_SetElementDeclHandler cm_expat_XML_SetElementDeclHandler -#define XML_SetElementHandler cm_expat_XML_SetElementHandler -#define XML_SetEncoding cm_expat_XML_SetEncoding -#define XML_SetEndCdataSectionHandler cm_expat_XML_SetEndCdataSectionHandler -#define XML_SetEndDoctypeDeclHandler cm_expat_XML_SetEndDoctypeDeclHandler -#define XML_SetEndElementHandler cm_expat_XML_SetEndElementHandler -#define XML_SetEndNamespaceDeclHandler cm_expat_XML_SetEndNamespaceDeclHandler -#define XML_SetEntityDeclHandler cm_expat_XML_SetEntityDeclHandler -#define XML_SetExternalEntityRefHandler cm_expat_XML_SetExternalEntityRefHandler -#define XML_SetExternalEntityRefHandlerArg cm_expat_XML_SetExternalEntityRefHandlerArg -#define XML_SetNamespaceDeclHandler cm_expat_XML_SetNamespaceDeclHandler -#define XML_SetNotStandaloneHandler cm_expat_XML_SetNotStandaloneHandler -#define XML_SetNotationDeclHandler cm_expat_XML_SetNotationDeclHandler -#define XML_SetParamEntityParsing cm_expat_XML_SetParamEntityParsing -#define XML_SetProcessingInstructionHandler cm_expat_XML_SetProcessingInstructionHandler -#define XML_SetReturnNSTriplet cm_expat_XML_SetReturnNSTriplet -#define XML_SetStartCdataSectionHandler cm_expat_XML_SetStartCdataSectionHandler -#define XML_SetStartDoctypeDeclHandler cm_expat_XML_SetStartDoctypeDeclHandler -#define XML_SetStartElementHandler cm_expat_XML_SetStartElementHandler -#define XML_SetStartNamespaceDeclHandler cm_expat_XML_SetStartNamespaceDeclHandler -#define XML_SetUnknownEncodingHandler cm_expat_XML_SetUnknownEncodingHandler -#define XML_SetUnparsedEntityDeclHandler cm_expat_XML_SetUnparsedEntityDeclHandler -#define XML_SetUserData cm_expat_XML_SetUserData -#define XML_SetXmlDeclHandler cm_expat_XML_SetXmlDeclHandler -#define XML_UseParserAsHandlerArg cm_expat_XML_UseParserAsHandlerArg -#define XmlGetUtf16InternalEncoding cm_expat_XmlGetUtf16InternalEncoding -#define XmlGetUtf16InternalEncodingNS cm_expat_XmlGetUtf16InternalEncodingNS -#define XmlGetUtf8InternalEncoding cm_expat_XmlGetUtf8InternalEncoding -#define XmlGetUtf8InternalEncodingNS cm_expat_XmlGetUtf8InternalEncodingNS -#define XmlInitEncoding cm_expat_XmlInitEncoding -#define XmlInitEncodingNS cm_expat_XmlInitEncodingNS -#define XmlInitUnknownEncoding cm_expat_XmlInitUnknownEncoding -#define XmlInitUnknownEncodingNS cm_expat_XmlInitUnknownEncodingNS -#define XmlParseXmlDecl cm_expat_XmlParseXmlDecl -#define XmlParseXmlDeclNS cm_expat_XmlParseXmlDeclNS -#define XmlSizeOfUnknownEncoding cm_expat_XmlSizeOfUnknownEncoding -#define XmlUtf16Encode cm_expat_XmlUtf16Encode -#define XmlUtf8Encode cm_expat_XmlUtf8Encode -#define XmlPrologStateInit cm_expat_XmlPrologStateInit -#define XmlPrologStateInitExternalEntity cm_expat_XmlPrologStateInitExternalEntity - -#endif diff --git a/Utilities/cmexpat/expat.h b/Utilities/cmexpat/expat.h deleted file mode 100644 index 86e58a1..0000000 --- a/Utilities/cmexpat/expat.h +++ /dev/null @@ -1,740 +0,0 @@ -#include "cm_expat_mangle.h" -/* -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#ifndef XmlParse_INCLUDED -#define XmlParse_INCLUDED 1 - -#include <stdlib.h> - -#include <cmexpat/expatDllConfig.h> - -#if defined(_WIN32) && !defined(CM_EXPAT_STATIC) -# if defined(cmexpat_EXPORTS) -# define XMLPARSEAPI(type) __declspec( dllexport ) type __cdecl -# else -# define XMLPARSEAPI(type) __declspec( dllimport ) type __cdecl -# endif -#else -# define XMLPARSEAPI(type) type -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void *XML_Parser; - -/* Information is UTF-8 encoded. */ -typedef char XML_Char; -typedef char XML_LChar; - -enum XML_Content_Type { - XML_CTYPE_EMPTY = 1, - XML_CTYPE_ANY, - XML_CTYPE_MIXED, - XML_CTYPE_NAME, - XML_CTYPE_CHOICE, - XML_CTYPE_SEQ -}; - -enum XML_Content_Quant { - XML_CQUANT_NONE, - XML_CQUANT_OPT, - XML_CQUANT_REP, - XML_CQUANT_PLUS -}; - -/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be - XML_CQUANT_NONE, and the other fields will be zero or NULL. - If type == XML_CTYPE_MIXED, then quant will be NONE or REP and - numchildren will contain number of elements that may be mixed in - and children point to an array of XML_Content cells that will be - all of XML_CTYPE_NAME type with no quantification. - - If type == XML_CTYPE_NAME, then the name points to the name, and - the numchildren field will be zero and children will be NULL. The - quant fields indicates any quantifiers placed on the name. - - CHOICE and SEQ will have name NULL, the number of children in - numchildren and children will point, recursively, to an array - of XML_Content cells. - - The EMPTY, ANY, and MIXED types will only occur at top level. -*/ - -typedef struct XML_cp XML_Content; - -struct XML_cp { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - XML_Char * name; - unsigned int numchildren; - XML_Content * children; -}; - - -/* This is called for an element declaration. See above for - description of the model argument. It's the caller's responsibility - to free model when finished with it. -*/ - -typedef void (*XML_ElementDeclHandler) (void *userData, - const XML_Char *name, - XML_Content *model); - -XMLPARSEAPI(void) -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl); - -/* - The Attlist declaration handler is called for *each* attribute. So - a single Attlist declaration with multiple attributes declared will - generate multiple calls to this handler. The "default" parameter - may be NULL in the case of the "#IMPLIED" or "#REQUIRED" keyword. - The "isrequired" parameter will be true and the default value will - be NULL in the case of "#REQUIRED". If "isrequired" is true and - default is non-NULL, then this is a "#FIXED" default. - */ - -typedef void (*XML_AttlistDeclHandler) (void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired); - -XMLPARSEAPI(void) -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl); - - - /* The XML declaration handler is called for *both* XML declarations and - text declarations. The way to distinguish is that the version parameter - will be null for text declarations. The encoding parameter may be null - for XML declarations. The standalone parameter will be -1, 0, or 1 - indicating respectively that there was no standalone parameter in - the declaration, that it was given as no, or that it was given as yes. - */ - -typedef void (*XML_XmlDeclHandler) (void *userData, - const XML_Char *version, - const XML_Char *encoding, - int standalone); - -XMLPARSEAPI(void) -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler xmldecl); - - -typedef struct { - void *(*malloc_fcn)(size_t size); - void *(*realloc_fcn)(void *ptr, size_t size); - void (*free_fcn)(void *ptr); -} XML_Memory_Handling_Suite; - -/* Constructs a new parser; encoding is the encoding specified by the -external protocol or null if there is none specified. */ - -XMLPARSEAPI(XML_Parser) -XML_ParserCreate(const XML_Char *encoding); - -/* Constructs a new parser and namespace processor. Element type -names and attribute names that belong to a namespace will be expanded; -unprefixed attribute names are never expanded; unprefixed element type -names are expanded only if there is a default namespace. The expanded -name is the concatenation of the namespace URI, the namespace -separator character, and the local part of the name. If the namespace -separator is '\0' then the namespace URI and the local part will be -concatenated without any separator. When a namespace is not declared, -the name and prefix will be passed through without expansion. */ - -XMLPARSEAPI(XML_Parser) -XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); - - -/* Constructs a new parser using the memory management suit referred to - by memsuite. If memsuite is NULL, then use the standard library memory - suite. If namespaceSeparator is non-NULL it creates a parser with - namespace processing as described above. The character pointed at - will serve as the namespace separator. - - All further memory operations used for the created parser will come from - the given suite. -*/ - -XMLPARSEAPI(XML_Parser) -XML_ParserCreate_MM(const XML_Char *encoding, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *namespaceSeparator); - -/* atts is array of name/value pairs, terminated by 0; - names and values are 0 terminated. */ - -typedef void (*XML_StartElementHandler)(void *userData, - const XML_Char *name, - const XML_Char **atts); - -typedef void (*XML_EndElementHandler)(void *userData, - const XML_Char *name); - - -/* s is not 0 terminated. */ -typedef void (*XML_CharacterDataHandler)(void *userData, - const XML_Char *s, - int len); - -/* target and data are 0 terminated */ -typedef void (*XML_ProcessingInstructionHandler)(void *userData, - const XML_Char *target, - const XML_Char *data); - -/* data is 0 terminated */ -typedef void (*XML_CommentHandler)(void *userData, const XML_Char *data); - -typedef void (*XML_StartCdataSectionHandler)(void *userData); -typedef void (*XML_EndCdataSectionHandler)(void *userData); - -/* This is called for any characters in the XML document for -which there is no applicable handler. This includes both -characters that are part of markup which is of a kind that is -not reported (comments, markup declarations), or characters -that are part of a construct which could be reported but -for which no handler has been supplied. The characters are passed -exactly as they were in the XML document except that -they will be encoded in UTF-8. Line boundaries are not normalized. -Note that a byte order mark character is not passed to the default handler. -There are no guarantees about how characters are divided between calls -to the default handler: for example, a comment might be split between -multiple calls. */ - -typedef void (*XML_DefaultHandler)(void *userData, - const XML_Char *s, - int len); - -/* This is called for the start of the DOCTYPE declaration, before - any DTD or internal subset is parsed. */ - -typedef void (*XML_StartDoctypeDeclHandler)(void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset); - -/* This is called for the start of the DOCTYPE declaration when the -closing > is encountered, but after processing any external subset. */ -typedef void (*XML_EndDoctypeDeclHandler)(void *userData); - -/* This is called for entity declarations. The is_parameter_entity - argument will be non-zero if the entity is a parameter entity, zero - otherwise. - - For internal entities (<!ENTITY foo "bar">), value will - be non-null and systemId, publicID, and notationName will be null. - The value string is NOT null terminated; the length is provided in - the value_length argument. Since it is legal to have zero-length - values, do not use this argument to test for internal entities. - - For external entities, value will be null and systemId will be non-null. - The publicId argument will be null unless a public identifier was - provided. The notationName argument will have a non-null value only - for unparsed entity declarations. -*/ - -typedef void (*XML_EntityDeclHandler) (void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -XMLPARSEAPI(void) -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler); - -/* OBSOLETE -- OBSOLETE -- OBSOLETE - This handler has been superceded by the EntityDeclHandler above. - It is provided here for backward compatibility. -This is called for a declaration of an unparsed (NDATA) -entity. The base argument is whatever was set by XML_SetBase. -The entityName, systemId and notationName arguments will never be null. -The other arguments may be. */ - -typedef void (*XML_UnparsedEntityDeclHandler)(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -/* This is called for a declaration of notation. -The base argument is whatever was set by XML_SetBase. -The notationName will never be null. The other arguments can be. */ - -typedef void (*XML_NotationDeclHandler)(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* When namespace processing is enabled, these are called once for -each namespace declaration. The call to the start and end element -handlers occur between the calls to the start and end namespace -declaration handlers. For an xmlns attribute, prefix will be null. -For an xmlns="" attribute, uri will be null. */ - -typedef void (*XML_StartNamespaceDeclHandler)(void *userData, - const XML_Char *prefix, - const XML_Char *uri); - -typedef void (*XML_EndNamespaceDeclHandler)(void *userData, - const XML_Char *prefix); - -/* This is called if the document is not standalone (it has an -external subset or a reference to a parameter entity, but does not -have standalone="yes"). If this handler returns 0, then processing -will not continue, and the parser will return a -XML_ERROR_NOT_STANDALONE error. */ - -typedef int (*XML_NotStandaloneHandler)(void *userData); - -/* This is called for a reference to an external parsed general entity. -The referenced entity is not automatically parsed. -The application can parse it immediately or later using -XML_ExternalEntityParserCreate. -The parser argument is the parser parsing the entity containing the reference; -it can be passed as the parser argument to XML_ExternalEntityParserCreate. -The systemId argument is the system identifier as specified in the entity -declaration; it will not be null. -The base argument is the system identifier that should be used as the base for -resolving systemId if systemId was relative; this is set by XML_SetBase; -it may be null. -The publicId argument is the public identifier as specified in the entity -declaration, or null if none was specified; the whitespace in the public -identifier will have been normalized as required by the XML spec. -The context argument specifies the parsing context in the format -expected by the context argument to -XML_ExternalEntityParserCreate; context is valid only until the handler -returns, so if the referenced entity is to be parsed later, it must be copied. -The handler should return 0 if processing should not continue because of -a fatal error in the handling of the external entity. -In this case the calling parser will return an -XML_ERROR_EXTERNAL_ENTITY_HANDLING error. -Note that unlike other handlers the first argument is the parser, not -userData. */ - -typedef int (*XML_ExternalEntityRefHandler)(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* This structure is filled in by the XML_UnknownEncodingHandler -to provide information to the parser about encodings that are unknown -to the parser. -The map[b] member gives information about byte sequences -whose first byte is b. -If map[b] is c where c is >= 0, then b by itself encodes the Unicode scalar -value c. -If map[b] is -1, then the byte sequence is malformed. -If map[b] is -n, where n >= 2, then b is the first byte of an n-byte -sequence that encodes a single Unicode scalar value. -The data member will be passed as the first argument to the convert function. -The convert function is used to convert multibyte sequences; -s will point to a n-byte sequence where map[(unsigned char)*s] == -n. -The convert function must return the Unicode scalar value -represented by this byte sequence or -1 if the byte sequence is malformed. -The convert function may be null if the encoding is a single-byte encoding, -that is if map[b] >= -1 for all bytes b. -When the parser is finished with the encoding, then if release is not null, -it will call release passing it the data member; -once release has been called, the convert function will not be called again. - -Expat places certain restrictions on the encodings that are supported -using this mechanism. - -1. Every ASCII character that can appear in a well-formed XML document, -other than the characters - - $@\^`{}~ - -must be represented by a single byte, and that byte must be the -same byte that represents that character in ASCII. - -2. No character may require more than 4 bytes to encode. - -3. All characters encoded must have Unicode scalar values <= 0xFFFF, (i.e., -characters that would be encoded by surrogates in UTF-16 are not -allowed). Note that this restriction doesn't apply to the built-in -support for UTF-8 and UTF-16. - -4. No Unicode character may be encoded by more than one distinct sequence -of bytes. */ - -typedef struct { - int map[256]; - void *data; - int (*convert)(void *data, const char *s); - void (*release)(void *data); -} XML_Encoding; - -/* This is called for an encoding that is unknown to the parser. -The encodingHandlerData argument is that which was passed as the -second argument to XML_SetUnknownEncodingHandler. -The name argument gives the name of the encoding as specified in -the encoding declaration. -If the callback can provide information about the encoding, -it must fill in the XML_Encoding structure, and return 1. -Otherwise it must return 0. -If info does not describe a suitable encoding, -then the parser will return an XML_UNKNOWN_ENCODING error. */ - -typedef int (*XML_UnknownEncodingHandler)(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - -XMLPARSEAPI(void) -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end); - -XMLPARSEAPI(void) -XML_SetStartElementHandler(XML_Parser, XML_StartElementHandler); - -XMLPARSEAPI(void) -XML_SetEndElementHandler(XML_Parser, XML_EndElementHandler); - -XMLPARSEAPI(void) -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler); - -XMLPARSEAPI(void) -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler); -XMLPARSEAPI(void) -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler); - -XMLPARSEAPI(void) -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end); - -XMLPARSEAPI(void) -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start); - -XMLPARSEAPI(void) -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end); - -/* This sets the default handler and also inhibits expansion of -internal entities. The entity reference will be passed to the default -handler. */ - -XMLPARSEAPI(void) -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler); - -/* This sets the default handler but does not inhibit expansion of -internal entities. The entity reference will not be passed to the -default handler. */ - -XMLPARSEAPI(void) -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler); - -XMLPARSEAPI(void) -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end); - -XMLPARSEAPI(void) -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start); - -XMLPARSEAPI(void) -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end); - -XMLPARSEAPI(void) -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler); - -XMLPARSEAPI(void) -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler); - -XMLPARSEAPI(void) -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end); - -XMLPARSEAPI(void) -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start); - -XMLPARSEAPI(void) -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end); - -XMLPARSEAPI(void) -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler); - -XMLPARSEAPI(void) -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler); - -/* If a non-null value for arg is specified here, then it will be passed -as the first argument to the external entity ref handler instead -of the parser object. */ -XMLPARSEAPI(void) -XML_SetExternalEntityRefHandlerArg(XML_Parser, void *arg); - -XMLPARSEAPI(void) -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *encodingHandlerData); - -/* This can be called within a handler for a start element, end element, -processing instruction or character data. It causes the corresponding -markup to be passed to the default handler. */ -XMLPARSEAPI(void) -XML_DefaultCurrent(XML_Parser parser); - -/* If do_nst is non-zero, and namespace processing is in effect, and - a name has a prefix (i.e. an explicit namespace qualifier) then - that name is returned as a triplet in a single - string separated by the separator character specified when the parser - was created: URI + sep + local_name + sep + prefix. - - If do_nst is zero, then namespace information is returned in the - default manner (URI + sep + local_name) whether or not the names - has a prefix. -*/ - -XMLPARSEAPI(void) -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); - -/* This value is passed as the userData argument to callbacks. */ -XMLPARSEAPI(void) -XML_SetUserData(XML_Parser parser, void *userData); - -/* Returns the last value set by XML_SetUserData or null. */ -#define XML_GetUserData(parser) (*(void **)(parser)) - -/* This is equivalent to supplying an encoding argument -to XML_ParserCreate. It must not be called after XML_Parse -or XML_ParseBuffer. */ - -XMLPARSEAPI(int) -XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); - -/* If this function is called, then the parser will be passed -as the first argument to callbacks instead of userData. -The userData will still be accessible using XML_GetUserData. */ - -XMLPARSEAPI(void) -XML_UseParserAsHandlerArg(XML_Parser parser); - -/* Sets the base to be used for resolving relative URIs in system -identifiers in declarations. Resolving relative identifiers is left -to the application: this value will be passed through as the base -argument to the XML_ExternalEntityRefHandler, XML_NotationDeclHandler -and XML_UnparsedEntityDeclHandler. The base argument will be copied. -Returns zero if out of memory, non-zero otherwise. */ - -XMLPARSEAPI(int) -XML_SetBase(XML_Parser parser, const XML_Char *base); - -XMLPARSEAPI(const XML_Char *) -XML_GetBase(XML_Parser parser); - -/* Returns the number of the attribute/value pairs passed in last call -to the XML_StartElementHandler that were specified in the start-tag -rather than defaulted. Each attribute/value pair counts as 2; thus -this correspondds to an index into the atts array passed to the -XML_StartElementHandler. */ - -XMLPARSEAPI(int) -XML_GetSpecifiedAttributeCount(XML_Parser parser); - -/* Returns the index of the ID attribute passed in the last call to -XML_StartElementHandler, or -1 if there is no ID attribute. Each -attribute/value pair counts as 2; thus this correspondds to an index -into the atts array passed to the XML_StartElementHandler. */ - -XMLPARSEAPI(int) -XML_GetIdAttributeIndex(XML_Parser parser); - -/* Parses some input. Returns 0 if a fatal error is detected. -The last call to XML_Parse must have isFinal true; -len may be zero for this call (or any other). */ -XMLPARSEAPI(int) -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); - -XMLPARSEAPI(void *) -XML_GetBuffer(XML_Parser parser, int len); - -XMLPARSEAPI(int) -XML_ParseBuffer(XML_Parser parser, int len, int isFinal); - -/* Creates an XML_Parser object that can parse an external general -entity; context is a '\0'-terminated string specifying the parse -context; encoding is a '\0'-terminated string giving the name of the -externally specified encoding, or null if there is no externally -specified encoding. The context string consists of a sequence of -tokens separated by formfeeds (\f); a token consisting of a name -specifies that the general entity of the name is open; a token of the -form prefix=uri specifies the namespace for a particular prefix; a -token of the form =uri specifies the default namespace. This can be -called at any point after the first call to an -ExternalEntityRefHandler so longer as the parser has not yet been -freed. The new parser is completely independent and may safely be -used in a separate thread. The handlers and userData are initialized -from the parser argument. Returns 0 if out of memory. Otherwise -returns a new XML_Parser object. */ -XMLPARSEAPI(XML_Parser) -XML_ExternalEntityParserCreate(XML_Parser parser, - const XML_Char *context, - const XML_Char *encoding); - -enum XML_ParamEntityParsing { - XML_PARAM_ENTITY_PARSING_NEVER, - XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, - XML_PARAM_ENTITY_PARSING_ALWAYS -}; - -/* Controls parsing of parameter entities (including the external DTD -subset). If parsing of parameter entities is enabled, then references -to external parameter entities (including the external DTD subset) -will be passed to the handler set with -XML_SetExternalEntityRefHandler. The context passed will be 0. -Unlike external general entities, external parameter entities can only -be parsed synchronously. If the external parameter entity is to be -parsed, it must be parsed during the call to the external entity ref -handler: the complete sequence of XML_ExternalEntityParserCreate, -XML_Parse/XML_ParseBuffer and XML_ParserFree calls must be made during -this call. After XML_ExternalEntityParserCreate has been called to -create the parser for the external parameter entity (context must be 0 -for this call), it is illegal to make any calls on the old parser -until XML_ParserFree has been called on the newly created parser. If -the library has been compiled without support for parameter entity -parsing (ie without XML_DTD being defined), then -XML_SetParamEntityParsing will return 0 if parsing of parameter -entities is requested; otherwise it will return non-zero. */ - -XMLPARSEAPI(int) -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing); - -enum XML_Error { - XML_ERROR_NONE, - XML_ERROR_NO_MEMORY, - XML_ERROR_SYNTAX, - XML_ERROR_NO_ELEMENTS, - XML_ERROR_INVALID_TOKEN, - XML_ERROR_UNCLOSED_TOKEN, - XML_ERROR_PARTIAL_CHAR, - XML_ERROR_TAG_MISMATCH, - XML_ERROR_DUPLICATE_ATTRIBUTE, - XML_ERROR_JUNK_AFTER_DOC_ELEMENT, - XML_ERROR_PARAM_ENTITY_REF, - XML_ERROR_UNDEFINED_ENTITY, - XML_ERROR_RECURSIVE_ENTITY_REF, - XML_ERROR_ASYNC_ENTITY, - XML_ERROR_BAD_CHAR_REF, - XML_ERROR_BINARY_ENTITY_REF, - XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, - XML_ERROR_MISPLACED_XML_PI, - XML_ERROR_UNKNOWN_ENCODING, - XML_ERROR_INCORRECT_ENCODING, - XML_ERROR_UNCLOSED_CDATA_SECTION, - XML_ERROR_EXTERNAL_ENTITY_HANDLING, - XML_ERROR_NOT_STANDALONE, - XML_ERROR_UNEXPECTED_STATE -}; - -/* If XML_Parse or XML_ParseBuffer have returned 0, then XML_GetErrorCode -returns information about the error. */ - -XMLPARSEAPI(enum XML_Error) -XML_GetErrorCode(XML_Parser parser); - -/* These functions return information about the current parse location. -They may be called when XML_Parse or XML_ParseBuffer return 0; -in this case the location is the location of the character at which -the error was detected. -They may also be called from any other callback called to report -some parse event; in this the location is the location of the first -of the sequence of characters that generated the event. */ - -XMLPARSEAPI(int) XML_GetCurrentLineNumber(XML_Parser parser); -XMLPARSEAPI(int) XML_GetCurrentColumnNumber(XML_Parser parser); -XMLPARSEAPI(long) XML_GetCurrentByteIndex(XML_Parser parser); - -/* Return the number of bytes in the current event. -Returns 0 if the event is in an internal entity. */ - -XMLPARSEAPI(int) -XML_GetCurrentByteCount(XML_Parser parser); - -/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets - the integer pointed to by offset to the offset within this buffer - of the current parse position, and sets the integer pointed to by size - to the size of this buffer (the number of input bytes). Otherwise - returns a null pointer. Also returns a null pointer if a parse isn't - active. - - NOTE: The character pointer returned should not be used outside - the handler that makes the call. */ - -XMLPARSEAPI(const char *) -XML_GetInputContext(XML_Parser parser, - int *offset, - int *size); - -/* For backwards compatibility with previous versions. */ -#define XML_GetErrorLineNumber XML_GetCurrentLineNumber -#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -#define XML_GetErrorByteIndex XML_GetCurrentByteIndex - -/* Frees memory used by the parser. */ -XMLPARSEAPI(void) -XML_ParserFree(XML_Parser parser); - -/* Returns a string describing the error. */ -XMLPARSEAPI(const XML_LChar *) -XML_ErrorString(int code); - -/* Return a string containing the version number of this expat */ -XMLPARSEAPI(const XML_LChar *) -XML_ExpatVersion(void); - -typedef struct { - int major; - int minor; - int micro; -} XML_Expat_Version; - -/* Return an XML_Expat_Version structure containing numeric version - number information for this version of expat */ - -XMLPARSEAPI(XML_Expat_Version) -XML_ExpatVersionInfo(void); - -#define XML_MAJOR_VERSION 1 -#define XML_MINOR_VERSION 95 -#define XML_MICRO_VERSION 2 - -#ifdef __cplusplus -} -#endif - -#endif /* not XmlParse_INCLUDED */ diff --git a/Utilities/cmexpat/expatConfig.h.in b/Utilities/cmexpat/expatConfig.h.in deleted file mode 100644 index 8f9669a..0000000 --- a/Utilities/cmexpat/expatConfig.h.in +++ /dev/null @@ -1,43 +0,0 @@ -#include "cm_expat_mangle.h" -#if defined(_WIN32) || defined(WIN32) - -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#undef WIN32_LEAN_AND_MEAN -#include <memory.h> -#include <string.h> -#define XML_BYTE_ORDER 12 - -#else - -#cmakedefine CMEXPAT_BIGENDIAN -#ifdef CMEXPAT_BIGENDIAN -# define XML_BYTE_ORDER 21 -#else -# define XML_BYTE_ORDER 12 -#endif - -#endif - -#define XML_NS -#define XML_DTD -#define XML_CONTEXT_BYTES 1024 - -#if defined ( _MSC_VER ) -#pragma warning ( disable : 4100 ) -#pragma warning ( disable : 4127 ) -#pragma warning ( disable : 4244 ) -#pragma warning ( disable : 4251 ) -#pragma warning ( disable : 4305 ) -#pragma warning ( disable : 4309 ) -#pragma warning ( disable : 4702 ) -#pragma warning ( disable : 4706 ) -#pragma warning ( disable : 4786 ) -#pragma warning ( disable : 4057 ) -#pragma warning ( disable : 4189 ) -#pragma warning ( disable : 4505 ) -#endif - -#define VERSION "1.95.2" - -#define cmExpatUnused(x) (void)x diff --git a/Utilities/cmexpat/expatDllConfig.h.in b/Utilities/cmexpat/expatDllConfig.h.in deleted file mode 100644 index eaaf4b0..0000000 --- a/Utilities/cmexpat/expatDllConfig.h.in +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _expatDllConfig_h -#define _expatDllConfig_h - -#cmakedefine CM_EXPAT_STATIC - -#endif diff --git a/Utilities/cmexpat/expat_config.h.cmake b/Utilities/cmexpat/expat_config.h.cmake new file mode 100644 index 0000000..ad540d6 --- /dev/null +++ b/Utilities/cmexpat/expat_config.h.cmake @@ -0,0 +1,76 @@ +/* expat_config.h.in. Generated from configure.in by autoheader. */ + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#cmakedefine BYTEORDER @BYTEORDER@ + +/* Define to 1 if you have the `bcopy' function. */ +#cmakedefine HAVE_BCOPY + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the <fcntl.h> header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE + +/* Define to 1 if you have the <inttypes.h> header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the `memmove' function. */ +#cmakedefine HAVE_MEMMOVE + +/* Define to 1 if you have the <memory.h> header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#cmakedefine HAVE_MMAP + +/* Define to 1 if you have the <stdint.h> header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the <strings.h> header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the <string.h> header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the <sys/types.h> header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the <unistd.h> header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* whether byteorder is bigendian */ +#cmakedefine WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#define XML_CONTEXT_BYTES 1024 + +/* Define to make parameter entity parsing functionality available. */ +/* #undef XML_DTD */ + +/* Define to make XML Namespaces functionality available. */ +/* #undef XML_NS */ + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +#ifdef _MSC_VER +# define __func__ __FUNCTION__ +#endif + +/* Define to `long' if <sys/types.h> does not define. */ +#cmakedefine off_t @OFF_T@ + +/* Define to `unsigned' if <sys/types.h> does not define. */ +#cmakedefine size_t @SIZE_T@ diff --git a/Utilities/cmexpat/ascii.h b/Utilities/cmexpat/lib/ascii.h index 6376b1f..d10530b 100644 --- a/Utilities/cmexpat/ascii.h +++ b/Utilities/cmexpat/lib/ascii.h @@ -1,6 +1,5 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ #define ASCII_A 0x41 @@ -69,7 +68,7 @@ See the file COPYING for copying permission. #define ASCII_9 0x39 #define ASCII_TAB 0x09 -#define ASCII_SPACE 0x20 +#define ASCII_SPACE 0x20 #define ASCII_EXCL 0x21 #define ASCII_QUOT 0x22 #define ASCII_AMP 0x26 @@ -84,3 +83,10 @@ See the file COPYING for copying permission. #define ASCII_LSQB 0x5B #define ASCII_RSQB 0x5D #define ASCII_UNDERSCORE 0x5F +#define ASCII_LPAREN 0x28 +#define ASCII_RPAREN 0x29 +#define ASCII_FF 0x0C +#define ASCII_SLASH 0x2F +#define ASCII_HASH 0x23 +#define ASCII_PIPE 0x7C +#define ASCII_COMMA 0x2C diff --git a/Utilities/cmexpat/asciitab.h b/Utilities/cmexpat/lib/asciitab.h index eb445cc..79a15c2 100644 --- a/Utilities/cmexpat/asciitab.h +++ b/Utilities/cmexpat/lib/asciitab.h @@ -1,6 +1,5 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ /* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, diff --git a/Utilities/cmexpat/lib/expat.h b/Utilities/cmexpat/lib/expat.h new file mode 100644 index 0000000..ec62f14 --- /dev/null +++ b/Utilities/cmexpat/lib/expat.h @@ -0,0 +1,1047 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef Expat_INCLUDED +#define Expat_INCLUDED 1 + +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XML_SetProcessingInstructionHandler XML_SetProcessingInstrHandler +#define XML_SetUnparsedEntityDeclHandler XML_SetUnparsedEntDeclHandler +#define XML_SetStartNamespaceDeclHandler XML_SetStartNamespcDeclHandler +#define XML_SetExternalEntityRefHandlerArg XML_SetExternalEntRefHandlerArg +#endif + +#include <stdlib.h> +#include "expat_external.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct XML_ParserStruct; +typedef struct XML_ParserStruct *XML_Parser; + +/* Should this be defined using stdbool.h when C99 is available? */ +typedef unsigned char XML_Bool; +#define XML_TRUE ((XML_Bool) 1) +#define XML_FALSE ((XML_Bool) 0) + +/* The XML_Status enum gives the possible return values for several + API functions. The preprocessor #defines are included so this + stanza can be added to code that still needs to support older + versions of Expat 1.95.x: + + #ifndef XML_STATUS_OK + #define XML_STATUS_OK 1 + #define XML_STATUS_ERROR 0 + #endif + + Otherwise, the #define hackery is quite ugly and would have been + dropped. +*/ +enum XML_Status { + XML_STATUS_ERROR = 0, +#define XML_STATUS_ERROR XML_STATUS_ERROR + XML_STATUS_OK = 1, +#define XML_STATUS_OK XML_STATUS_OK + XML_STATUS_SUSPENDED = 2 +#define XML_STATUS_SUSPENDED XML_STATUS_SUSPENDED +}; + +enum XML_Error { + XML_ERROR_NONE, + XML_ERROR_NO_MEMORY, + XML_ERROR_SYNTAX, + XML_ERROR_NO_ELEMENTS, + XML_ERROR_INVALID_TOKEN, + XML_ERROR_UNCLOSED_TOKEN, + XML_ERROR_PARTIAL_CHAR, + XML_ERROR_TAG_MISMATCH, + XML_ERROR_DUPLICATE_ATTRIBUTE, + XML_ERROR_JUNK_AFTER_DOC_ELEMENT, + XML_ERROR_PARAM_ENTITY_REF, + XML_ERROR_UNDEFINED_ENTITY, + XML_ERROR_RECURSIVE_ENTITY_REF, + XML_ERROR_ASYNC_ENTITY, + XML_ERROR_BAD_CHAR_REF, + XML_ERROR_BINARY_ENTITY_REF, + XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, + XML_ERROR_MISPLACED_XML_PI, + XML_ERROR_UNKNOWN_ENCODING, + XML_ERROR_INCORRECT_ENCODING, + XML_ERROR_UNCLOSED_CDATA_SECTION, + XML_ERROR_EXTERNAL_ENTITY_HANDLING, + XML_ERROR_NOT_STANDALONE, + XML_ERROR_UNEXPECTED_STATE, + XML_ERROR_ENTITY_DECLARED_IN_PE, + XML_ERROR_FEATURE_REQUIRES_XML_DTD, + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING, + /* Added in 1.95.7. */ + XML_ERROR_UNBOUND_PREFIX, + /* Added in 1.95.8. */ + XML_ERROR_UNDECLARING_PREFIX, + XML_ERROR_INCOMPLETE_PE, + XML_ERROR_XML_DECL, + XML_ERROR_TEXT_DECL, + XML_ERROR_PUBLICID, + XML_ERROR_SUSPENDED, + XML_ERROR_NOT_SUSPENDED, + XML_ERROR_ABORTED, + XML_ERROR_FINISHED, + XML_ERROR_SUSPEND_PE, + /* Added in 2.0. */ + XML_ERROR_RESERVED_PREFIX_XML, + XML_ERROR_RESERVED_PREFIX_XMLNS, + XML_ERROR_RESERVED_NAMESPACE_URI +}; + +enum XML_Content_Type { + XML_CTYPE_EMPTY = 1, + XML_CTYPE_ANY, + XML_CTYPE_MIXED, + XML_CTYPE_NAME, + XML_CTYPE_CHOICE, + XML_CTYPE_SEQ +}; + +enum XML_Content_Quant { + XML_CQUANT_NONE, + XML_CQUANT_OPT, + XML_CQUANT_REP, + XML_CQUANT_PLUS +}; + +/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be + XML_CQUANT_NONE, and the other fields will be zero or NULL. + If type == XML_CTYPE_MIXED, then quant will be NONE or REP and + numchildren will contain number of elements that may be mixed in + and children point to an array of XML_Content cells that will be + all of XML_CTYPE_NAME type with no quantification. + + If type == XML_CTYPE_NAME, then the name points to the name, and + the numchildren field will be zero and children will be NULL. The + quant fields indicates any quantifiers placed on the name. + + CHOICE and SEQ will have name NULL, the number of children in + numchildren and children will point, recursively, to an array + of XML_Content cells. + + The EMPTY, ANY, and MIXED types will only occur at top level. +*/ + +typedef struct XML_cp XML_Content; + +struct XML_cp { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + XML_Char * name; + unsigned int numchildren; + XML_Content * children; +}; + + +/* This is called for an element declaration. See above for + description of the model argument. It's the caller's responsibility + to free model when finished with it. +*/ +typedef void (XMLCALL *XML_ElementDeclHandler) (void *userData, + const XML_Char *name, + XML_Content *model); + +XMLPARSEAPI(void) +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl); + +/* The Attlist declaration handler is called for *each* attribute. So + a single Attlist declaration with multiple attributes declared will + generate multiple calls to this handler. The "default" parameter + may be NULL in the case of the "#IMPLIED" or "#REQUIRED" + keyword. The "isrequired" parameter will be true and the default + value will be NULL in the case of "#REQUIRED". If "isrequired" is + true and default is non-NULL, then this is a "#FIXED" default. +*/ +typedef void (XMLCALL *XML_AttlistDeclHandler) ( + void *userData, + const XML_Char *elname, + const XML_Char *attname, + const XML_Char *att_type, + const XML_Char *dflt, + int isrequired); + +XMLPARSEAPI(void) +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl); + +/* The XML declaration handler is called for *both* XML declarations + and text declarations. The way to distinguish is that the version + parameter will be NULL for text declarations. The encoding + parameter may be NULL for XML declarations. The standalone + parameter will be -1, 0, or 1 indicating respectively that there + was no standalone parameter in the declaration, that it was given + as no, or that it was given as yes. +*/ +typedef void (XMLCALL *XML_XmlDeclHandler) (void *userData, + const XML_Char *version, + const XML_Char *encoding, + int standalone); + +XMLPARSEAPI(void) +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler xmldecl); + + +typedef struct { + void *(*malloc_fcn)(size_t size); + void *(*realloc_fcn)(void *ptr, size_t size); + void (*free_fcn)(void *ptr); +} XML_Memory_Handling_Suite; + +/* Constructs a new parser; encoding is the encoding specified by the + external protocol or NULL if there is none specified. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate(const XML_Char *encoding); + +/* Constructs a new parser and namespace processor. Element type + names and attribute names that belong to a namespace will be + expanded; unprefixed attribute names are never expanded; unprefixed + element type names are expanded only if there is a default + namespace. The expanded name is the concatenation of the namespace + URI, the namespace separator character, and the local part of the + name. If the namespace separator is '\0' then the namespace URI + and the local part will be concatenated without any separator. + It is a programming error to use the separator '\0' with namespace + triplets (see XML_SetReturnNSTriplet). +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); + + +/* Constructs a new parser using the memory management suite referred to + by memsuite. If memsuite is NULL, then use the standard library memory + suite. If namespaceSeparator is non-NULL it creates a parser with + namespace processing as described above. The character pointed at + will serve as the namespace separator. + + All further memory operations used for the created parser will come from + the given suite. +*/ +XMLPARSEAPI(XML_Parser) +XML_ParserCreate_MM(const XML_Char *encoding, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *namespaceSeparator); + +/* Prepare a parser object to be re-used. This is particularly + valuable when memory allocation overhead is disproportionatly high, + such as when a large number of small documnents need to be parsed. + All handlers are cleared from the parser, except for the + unknownEncodingHandler. The parser's external state is re-initialized + except for the values of ns and ns_triplets. + + Added in Expat 1.95.3. +*/ +XMLPARSEAPI(XML_Bool) +XML_ParserReset(XML_Parser parser, const XML_Char *encoding); + +/* atts is array of name/value pairs, terminated by 0; + names and values are 0 terminated. +*/ +typedef void (XMLCALL *XML_StartElementHandler) (void *userData, + const XML_Char *name, + const XML_Char **atts); + +typedef void (XMLCALL *XML_EndElementHandler) (void *userData, + const XML_Char *name); + + +/* s is not 0 terminated. */ +typedef void (XMLCALL *XML_CharacterDataHandler) (void *userData, + const XML_Char *s, + int len); + +/* target and data are 0 terminated */ +typedef void (XMLCALL *XML_ProcessingInstructionHandler) ( + void *userData, + const XML_Char *target, + const XML_Char *data); + +/* data is 0 terminated */ +typedef void (XMLCALL *XML_CommentHandler) (void *userData, + const XML_Char *data); + +typedef void (XMLCALL *XML_StartCdataSectionHandler) (void *userData); +typedef void (XMLCALL *XML_EndCdataSectionHandler) (void *userData); + +/* This is called for any characters in the XML document for which + there is no applicable handler. This includes both characters that + are part of markup which is of a kind that is not reported + (comments, markup declarations), or characters that are part of a + construct which could be reported but for which no handler has been + supplied. The characters are passed exactly as they were in the XML + document except that they will be encoded in UTF-8 or UTF-16. + Line boundaries are not normalized. Note that a byte order mark + character is not passed to the default handler. There are no + guarantees about how characters are divided between calls to the + default handler: for example, a comment might be split between + multiple calls. +*/ +typedef void (XMLCALL *XML_DefaultHandler) (void *userData, + const XML_Char *s, + int len); + +/* This is called for the start of the DOCTYPE declaration, before + any DTD or internal subset is parsed. +*/ +typedef void (XMLCALL *XML_StartDoctypeDeclHandler) ( + void *userData, + const XML_Char *doctypeName, + const XML_Char *sysid, + const XML_Char *pubid, + int has_internal_subset); + +/* This is called for the start of the DOCTYPE declaration when the + closing > is encountered, but after processing any external + subset. +*/ +typedef void (XMLCALL *XML_EndDoctypeDeclHandler)(void *userData); + +/* This is called for entity declarations. The is_parameter_entity + argument will be non-zero if the entity is a parameter entity, zero + otherwise. + + For internal entities (<!ENTITY foo "bar">), value will + be non-NULL and systemId, publicID, and notationName will be NULL. + The value string is NOT nul-terminated; the length is provided in + the value_length argument. Since it is legal to have zero-length + values, do not use this argument to test for internal entities. + + For external entities, value will be NULL and systemId will be + non-NULL. The publicId argument will be NULL unless a public + identifier was provided. The notationName argument will have a + non-NULL value only for unparsed entity declarations. + + Note that is_parameter_entity can't be changed to XML_Bool, since + that would break binary compatibility. +*/ +typedef void (XMLCALL *XML_EntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity, + const XML_Char *value, + int value_length, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +XMLPARSEAPI(void) +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler); + +/* OBSOLETE -- OBSOLETE -- OBSOLETE + This handler has been superceded by the EntityDeclHandler above. + It is provided here for backward compatibility. + + This is called for a declaration of an unparsed (NDATA) entity. + The base argument is whatever was set by XML_SetBase. The + entityName, systemId and notationName arguments will never be + NULL. The other arguments may be. +*/ +typedef void (XMLCALL *XML_UnparsedEntityDeclHandler) ( + void *userData, + const XML_Char *entityName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId, + const XML_Char *notationName); + +/* This is called for a declaration of notation. The base argument is + whatever was set by XML_SetBase. The notationName will never be + NULL. The other arguments can be. +*/ +typedef void (XMLCALL *XML_NotationDeclHandler) ( + void *userData, + const XML_Char *notationName, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* When namespace processing is enabled, these are called once for + each namespace declaration. The call to the start and end element + handlers occur between the calls to the start and end namespace + declaration handlers. For an xmlns attribute, prefix will be + NULL. For an xmlns="" attribute, uri will be NULL. +*/ +typedef void (XMLCALL *XML_StartNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix, + const XML_Char *uri); + +typedef void (XMLCALL *XML_EndNamespaceDeclHandler) ( + void *userData, + const XML_Char *prefix); + +/* This is called if the document is not standalone, that is, it has an + external subset or a reference to a parameter entity, but does not + have standalone="yes". If this handler returns XML_STATUS_ERROR, + then processing will not continue, and the parser will return a + XML_ERROR_NOT_STANDALONE error. + If parameter entity parsing is enabled, then in addition to the + conditions above this handler will only be called if the referenced + entity was actually read. +*/ +typedef int (XMLCALL *XML_NotStandaloneHandler) (void *userData); + +/* This is called for a reference to an external parsed general + entity. The referenced entity is not automatically parsed. The + application can parse it immediately or later using + XML_ExternalEntityParserCreate. + + The parser argument is the parser parsing the entity containing the + reference; it can be passed as the parser argument to + XML_ExternalEntityParserCreate. The systemId argument is the + system identifier as specified in the entity declaration; it will + not be NULL. + + The base argument is the system identifier that should be used as + the base for resolving systemId if systemId was relative; this is + set by XML_SetBase; it may be NULL. + + The publicId argument is the public identifier as specified in the + entity declaration, or NULL if none was specified; the whitespace + in the public identifier will have been normalized as required by + the XML spec. + + The context argument specifies the parsing context in the format + expected by the context argument to XML_ExternalEntityParserCreate; + context is valid only until the handler returns, so if the + referenced entity is to be parsed later, it must be copied. + context is NULL only when the entity is a parameter entity. + + The handler should return XML_STATUS_ERROR if processing should not + continue because of a fatal error in the handling of the external + entity. In this case the calling parser will return an + XML_ERROR_EXTERNAL_ENTITY_HANDLING error. + + Note that unlike other handlers the first argument is the parser, + not userData. +*/ +typedef int (XMLCALL *XML_ExternalEntityRefHandler) ( + XML_Parser parser, + const XML_Char *context, + const XML_Char *base, + const XML_Char *systemId, + const XML_Char *publicId); + +/* This is called in two situations: + 1) An entity reference is encountered for which no declaration + has been read *and* this is not an error. + 2) An internal entity reference is read, but not expanded, because + XML_SetDefaultHandler has been called. + Note: skipped parameter entities in declarations and skipped general + entities in attribute values cannot be reported, because + the event would be out of sync with the reporting of the + declarations or attribute values +*/ +typedef void (XMLCALL *XML_SkippedEntityHandler) ( + void *userData, + const XML_Char *entityName, + int is_parameter_entity); + +/* This structure is filled in by the XML_UnknownEncodingHandler to + provide information to the parser about encodings that are unknown + to the parser. + + The map[b] member gives information about byte sequences whose + first byte is b. + + If map[b] is c where c is >= 0, then b by itself encodes the + Unicode scalar value c. + + If map[b] is -1, then the byte sequence is malformed. + + If map[b] is -n, where n >= 2, then b is the first byte of an + n-byte sequence that encodes a single Unicode scalar value. + + The data member will be passed as the first argument to the convert + function. + + The convert function is used to convert multibyte sequences; s will + point to a n-byte sequence where map[(unsigned char)*s] == -n. The + convert function must return the Unicode scalar value represented + by this byte sequence or -1 if the byte sequence is malformed. + + The convert function may be NULL if the encoding is a single-byte + encoding, that is if map[b] >= -1 for all bytes b. + + When the parser is finished with the encoding, then if release is + not NULL, it will call release passing it the data member; once + release has been called, the convert function will not be called + again. + + Expat places certain restrictions on the encodings that are supported + using this mechanism. + + 1. Every ASCII character that can appear in a well-formed XML document, + other than the characters + + $@\^`{}~ + + must be represented by a single byte, and that byte must be the + same byte that represents that character in ASCII. + + 2. No character may require more than 4 bytes to encode. + + 3. All characters encoded must have Unicode scalar values <= + 0xFFFF, (i.e., characters that would be encoded by surrogates in + UTF-16 are not allowed). Note that this restriction doesn't + apply to the built-in support for UTF-8 and UTF-16. + + 4. No Unicode character may be encoded by more than one distinct + sequence of bytes. +*/ +typedef struct { + int map[256]; + void *data; + int (XMLCALL *convert)(void *data, const char *s); + void (XMLCALL *release)(void *data); +} XML_Encoding; + +/* This is called for an encoding that is unknown to the parser. + + The encodingHandlerData argument is that which was passed as the + second argument to XML_SetUnknownEncodingHandler. + + The name argument gives the name of the encoding as specified in + the encoding declaration. + + If the callback can provide information about the encoding, it must + fill in the XML_Encoding structure, and return XML_STATUS_OK. + Otherwise it must return XML_STATUS_ERROR. + + If info does not describe a suitable encoding, then the parser will + return an XML_UNKNOWN_ENCODING error. +*/ +typedef int (XMLCALL *XML_UnknownEncodingHandler) ( + void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info); + +XMLPARSEAPI(void) +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end); + +XMLPARSEAPI(void) +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler handler); + +XMLPARSEAPI(void) +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler handler); + +XMLPARSEAPI(void) +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler); + +XMLPARSEAPI(void) +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler); +XMLPARSEAPI(void) +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler); + +XMLPARSEAPI(void) +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end); + +XMLPARSEAPI(void) +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start); + +XMLPARSEAPI(void) +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end); + +/* This sets the default handler and also inhibits expansion of + internal entities. These entity references will be passed to the + default handler, or to the skipped entity handler, if one is set. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler); + +/* This sets the default handler but does not inhibit expansion of + internal entities. The entity reference will not be passed to the + default handler. +*/ +XMLPARSEAPI(void) +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler); + +XMLPARSEAPI(void) +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end); + +XMLPARSEAPI(void) +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler); + +XMLPARSEAPI(void) +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start); + +XMLPARSEAPI(void) +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end); + +XMLPARSEAPI(void) +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler); + +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler); + +/* If a non-NULL value for arg is specified here, then it will be + passed as the first argument to the external entity ref handler + instead of the parser object. +*/ +XMLPARSEAPI(void) +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, + void *arg); + +XMLPARSEAPI(void) +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler); + +XMLPARSEAPI(void) +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *encodingHandlerData); + +/* This can be called within a handler for a start element, end + element, processing instruction or character data. It causes the + corresponding markup to be passed to the default handler. +*/ +XMLPARSEAPI(void) +XML_DefaultCurrent(XML_Parser parser); + +/* If do_nst is non-zero, and namespace processing is in effect, and + a name has a prefix (i.e. an explicit namespace qualifier) then + that name is returned as a triplet in a single string separated by + the separator character specified when the parser was created: URI + + sep + local_name + sep + prefix. + + If do_nst is zero, then namespace information is returned in the + default manner (URI + sep + local_name) whether or not the name + has a prefix. + + Note: Calling XML_SetReturnNSTriplet after XML_Parse or + XML_ParseBuffer has no effect. +*/ + +XMLPARSEAPI(void) +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); + +/* This value is passed as the userData argument to callbacks. */ +XMLPARSEAPI(void) +XML_SetUserData(XML_Parser parser, void *userData); + +/* Returns the last value set by XML_SetUserData or NULL. */ +#define XML_GetUserData(parser) (*(void **)(parser)) + +/* This is equivalent to supplying an encoding argument to + XML_ParserCreate. On success XML_SetEncoding returns non-zero, + zero otherwise. + Note: Calling XML_SetEncoding after XML_Parse or XML_ParseBuffer + has no effect and returns XML_STATUS_ERROR. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); + +/* If this function is called, then the parser will be passed as the + first argument to callbacks instead of userData. The userData will + still be accessible using XML_GetUserData. +*/ +XMLPARSEAPI(void) +XML_UseParserAsHandlerArg(XML_Parser parser); + +/* If useDTD == XML_TRUE is passed to this function, then the parser + will assume that there is an external subset, even if none is + specified in the document. In such a case the parser will call the + externalEntityRefHandler with a value of NULL for the systemId + argument (the publicId and context arguments will be NULL as well). + Note: For the purpose of checking WFC: Entity Declared, passing + useDTD == XML_TRUE will make the parser behave as if the document + had a DTD with an external subset. + Note: If this function is called, then this must be done before + the first call to XML_Parse or XML_ParseBuffer, since it will + have no effect after that. Returns + XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING. + Note: If the document does not have a DOCTYPE declaration at all, + then startDoctypeDeclHandler and endDoctypeDeclHandler will not + be called, despite an external subset being parsed. + Note: If XML_DTD is not defined when Expat is compiled, returns + XML_ERROR_FEATURE_REQUIRES_XML_DTD. +*/ +XMLPARSEAPI(enum XML_Error) +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD); + + +/* Sets the base to be used for resolving relative URIs in system + identifiers in declarations. Resolving relative identifiers is + left to the application: this value will be passed through as the + base argument to the XML_ExternalEntityRefHandler, + XML_NotationDeclHandler and XML_UnparsedEntityDeclHandler. The base + argument will be copied. Returns XML_STATUS_ERROR if out of memory, + XML_STATUS_OK otherwise. +*/ +XMLPARSEAPI(enum XML_Status) +XML_SetBase(XML_Parser parser, const XML_Char *base); + +XMLPARSEAPI(const XML_Char *) +XML_GetBase(XML_Parser parser); + +/* Returns the number of the attribute/value pairs passed in last call + to the XML_StartElementHandler that were specified in the start-tag + rather than defaulted. Each attribute/value pair counts as 2; thus + this correspondds to an index into the atts array passed to the + XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetSpecifiedAttributeCount(XML_Parser parser); + +/* Returns the index of the ID attribute passed in the last call to + XML_StartElementHandler, or -1 if there is no ID attribute. Each + attribute/value pair counts as 2; thus this correspondds to an + index into the atts array passed to the XML_StartElementHandler. +*/ +XMLPARSEAPI(int) +XML_GetIdAttributeIndex(XML_Parser parser); + +#ifdef XML_ATTR_INFO +/* Source file byte offsets for the start and end of attribute names and values. + The value indices are exclusive of surrounding quotes; thus in a UTF-8 source + file an attribute value of "blah" will yield: + info->valueEnd - info->valueStart = 4 bytes. +*/ +typedef struct { + XML_Index nameStart; /* Offset to beginning of the attribute name. */ + XML_Index nameEnd; /* Offset after the attribute name's last byte. */ + XML_Index valueStart; /* Offset to beginning of the attribute value. */ + XML_Index valueEnd; /* Offset after the attribute value's last byte. */ +} XML_AttrInfo; + +/* Returns an array of XML_AttrInfo structures for the attribute/value pairs + passed in last call to the XML_StartElementHandler that were specified + in the start-tag rather than defaulted. Each attribute/value pair counts + as 1; thus the number of entries in the array is + XML_GetSpecifiedAttributeCount(parser) / 2. +*/ +XMLPARSEAPI(const XML_AttrInfo *) +XML_GetAttributeInfo(XML_Parser parser); +#endif + +/* Parses some input. Returns XML_STATUS_ERROR if a fatal error is + detected. The last call to XML_Parse must have isFinal true; len + may be zero for this call (or any other). + + Though the return values for these functions has always been + described as a Boolean value, the implementation, at least for the + 1.95.x series, has always returned exactly one of the XML_Status + values. +*/ +XMLPARSEAPI(enum XML_Status) +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); + +XMLPARSEAPI(void *) +XML_GetBuffer(XML_Parser parser, int len); + +XMLPARSEAPI(enum XML_Status) +XML_ParseBuffer(XML_Parser parser, int len, int isFinal); + +/* Stops parsing, causing XML_Parse() or XML_ParseBuffer() to return. + Must be called from within a call-back handler, except when aborting + (resumable = 0) an already suspended parser. Some call-backs may + still follow because they would otherwise get lost. Examples: + - endElementHandler() for empty elements when stopped in + startElementHandler(), + - endNameSpaceDeclHandler() when stopped in endElementHandler(), + and possibly others. + + Can be called from most handlers, including DTD related call-backs, + except when parsing an external parameter entity and resumable != 0. + Returns XML_STATUS_OK when successful, XML_STATUS_ERROR otherwise. + Possible error codes: + - XML_ERROR_SUSPENDED: when suspending an already suspended parser. + - XML_ERROR_FINISHED: when the parser has already finished. + - XML_ERROR_SUSPEND_PE: when suspending while parsing an external PE. + + When resumable != 0 (true) then parsing is suspended, that is, + XML_Parse() and XML_ParseBuffer() return XML_STATUS_SUSPENDED. + Otherwise, parsing is aborted, that is, XML_Parse() and XML_ParseBuffer() + return XML_STATUS_ERROR with error code XML_ERROR_ABORTED. + + *Note*: + This will be applied to the current parser instance only, that is, if + there is a parent parser then it will continue parsing when the + externalEntityRefHandler() returns. It is up to the implementation of + the externalEntityRefHandler() to call XML_StopParser() on the parent + parser (recursively), if one wants to stop parsing altogether. + + When suspended, parsing can be resumed by calling XML_ResumeParser(). +*/ +XMLPARSEAPI(enum XML_Status) +XML_StopParser(XML_Parser parser, XML_Bool resumable); + +/* Resumes parsing after it has been suspended with XML_StopParser(). + Must not be called from within a handler call-back. Returns same + status codes as XML_Parse() or XML_ParseBuffer(). + Additional error code XML_ERROR_NOT_SUSPENDED possible. + + *Note*: + This must be called on the most deeply nested child parser instance + first, and on its parent parser only after the child parser has finished, + to be applied recursively until the document entity's parser is restarted. + That is, the parent parser will not resume by itself and it is up to the + application to call XML_ResumeParser() on it at the appropriate moment. +*/ +XMLPARSEAPI(enum XML_Status) +XML_ResumeParser(XML_Parser parser); + +enum XML_Parsing { + XML_INITIALIZED, + XML_PARSING, + XML_FINISHED, + XML_SUSPENDED +}; + +typedef struct { + enum XML_Parsing parsing; + XML_Bool finalBuffer; +} XML_ParsingStatus; + +/* Returns status of parser with respect to being initialized, parsing, + finished, or suspended and processing the final buffer. + XXX XML_Parse() and XML_ParseBuffer() should return XML_ParsingStatus, + XXX with XML_FINISHED_OK or XML_FINISHED_ERROR replacing XML_FINISHED +*/ +XMLPARSEAPI(void) +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status); + +/* Creates an XML_Parser object that can parse an external general + entity; context is a '\0'-terminated string specifying the parse + context; encoding is a '\0'-terminated string giving the name of + the externally specified encoding, or NULL if there is no + externally specified encoding. The context string consists of a + sequence of tokens separated by formfeeds (\f); a token consisting + of a name specifies that the general entity of the name is open; a + token of the form prefix=uri specifies the namespace for a + particular prefix; a token of the form =uri specifies the default + namespace. This can be called at any point after the first call to + an ExternalEntityRefHandler so longer as the parser has not yet + been freed. The new parser is completely independent and may + safely be used in a separate thread. The handlers and userData are + initialized from the parser argument. Returns NULL if out of memory. + Otherwise returns a new XML_Parser object. +*/ +XMLPARSEAPI(XML_Parser) +XML_ExternalEntityParserCreate(XML_Parser parser, + const XML_Char *context, + const XML_Char *encoding); + +enum XML_ParamEntityParsing { + XML_PARAM_ENTITY_PARSING_NEVER, + XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, + XML_PARAM_ENTITY_PARSING_ALWAYS +}; + +/* Controls parsing of parameter entities (including the external DTD + subset). If parsing of parameter entities is enabled, then + references to external parameter entities (including the external + DTD subset) will be passed to the handler set with + XML_SetExternalEntityRefHandler. The context passed will be 0. + + Unlike external general entities, external parameter entities can + only be parsed synchronously. If the external parameter entity is + to be parsed, it must be parsed during the call to the external + entity ref handler: the complete sequence of + XML_ExternalEntityParserCreate, XML_Parse/XML_ParseBuffer and + XML_ParserFree calls must be made during this call. After + XML_ExternalEntityParserCreate has been called to create the parser + for the external parameter entity (context must be 0 for this + call), it is illegal to make any calls on the old parser until + XML_ParserFree has been called on the newly created parser. + If the library has been compiled without support for parameter + entity parsing (ie without XML_DTD being defined), then + XML_SetParamEntityParsing will return 0 if parsing of parameter + entities is requested; otherwise it will return non-zero. + Note: If XML_SetParamEntityParsing is called after XML_Parse or + XML_ParseBuffer, then it has no effect and will always return 0. +*/ +XMLPARSEAPI(int) +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing parsing); + +/* Sets the hash salt to use for internal hash calculations. + Helps in preventing DoS attacks based on predicting hash + function behavior. This must be called before parsing is started. + Returns 1 if successful, 0 when called after parsing has started. +*/ +XMLPARSEAPI(int) +XML_SetHashSalt(XML_Parser parser, + unsigned long hash_salt); + +/* If XML_Parse or XML_ParseBuffer have returned XML_STATUS_ERROR, then + XML_GetErrorCode returns information about the error. +*/ +XMLPARSEAPI(enum XML_Error) +XML_GetErrorCode(XML_Parser parser); + +/* These functions return information about the current parse + location. They may be called from any callback called to report + some parse event; in this case the location is the location of the + first of the sequence of characters that generated the event. When + called from callbacks generated by declarations in the document + prologue, the location identified isn't as neatly defined, but will + be within the relevant markup. When called outside of the callback + functions, the position indicated will be just past the last parse + event (regardless of whether there was an associated callback). + + They may also be called after returning from a call to XML_Parse + or XML_ParseBuffer. If the return value is XML_STATUS_ERROR then + the location is the location of the character at which the error + was detected; otherwise the location is the location of the last + parse event, as described above. +*/ +XMLPARSEAPI(XML_Size) XML_GetCurrentLineNumber(XML_Parser parser); +XMLPARSEAPI(XML_Size) XML_GetCurrentColumnNumber(XML_Parser parser); +XMLPARSEAPI(XML_Index) XML_GetCurrentByteIndex(XML_Parser parser); + +/* Return the number of bytes in the current event. + Returns 0 if the event is in an internal entity. +*/ +XMLPARSEAPI(int) +XML_GetCurrentByteCount(XML_Parser parser); + +/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets + the integer pointed to by offset to the offset within this buffer + of the current parse position, and sets the integer pointed to by size + to the size of this buffer (the number of input bytes). Otherwise + returns a NULL pointer. Also returns a NULL pointer if a parse isn't + active. + + NOTE: The character pointer returned should not be used outside + the handler that makes the call. +*/ +XMLPARSEAPI(const char *) +XML_GetInputContext(XML_Parser parser, + int *offset, + int *size); + +/* For backwards compatibility with previous versions. */ +#define XML_GetErrorLineNumber XML_GetCurrentLineNumber +#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber +#define XML_GetErrorByteIndex XML_GetCurrentByteIndex + +/* Frees the content model passed to the element declaration handler */ +XMLPARSEAPI(void) +XML_FreeContentModel(XML_Parser parser, XML_Content *model); + +/* Exposing the memory handling functions used in Expat */ +XMLPARSEAPI(void *) +XML_MemMalloc(XML_Parser parser, size_t size); + +XMLPARSEAPI(void *) +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size); + +XMLPARSEAPI(void) +XML_MemFree(XML_Parser parser, void *ptr); + +/* Frees memory used by the parser. */ +XMLPARSEAPI(void) +XML_ParserFree(XML_Parser parser); + +/* Returns a string describing the error. */ +XMLPARSEAPI(const XML_LChar *) +XML_ErrorString(enum XML_Error code); + +/* Return a string containing the version number of this expat */ +XMLPARSEAPI(const XML_LChar *) +XML_ExpatVersion(void); + +typedef struct { + int major; + int minor; + int micro; +} XML_Expat_Version; + +/* Return an XML_Expat_Version structure containing numeric version + number information for this version of expat. +*/ +XMLPARSEAPI(XML_Expat_Version) +XML_ExpatVersionInfo(void); + +/* Added in Expat 1.95.5. */ +enum XML_FeatureEnum { + XML_FEATURE_END = 0, + XML_FEATURE_UNICODE, + XML_FEATURE_UNICODE_WCHAR_T, + XML_FEATURE_DTD, + XML_FEATURE_CONTEXT_BYTES, + XML_FEATURE_MIN_SIZE, + XML_FEATURE_SIZEOF_XML_CHAR, + XML_FEATURE_SIZEOF_XML_LCHAR, + XML_FEATURE_NS, + XML_FEATURE_LARGE_SIZE, + XML_FEATURE_ATTR_INFO + /* Additional features must be added to the end of this enum. */ +}; + +typedef struct { + enum XML_FeatureEnum feature; + const XML_LChar *name; + long int value; +} XML_Feature; + +XMLPARSEAPI(const XML_Feature *) +XML_GetFeatureList(void); + + +/* Expat follows the GNU/Linux convention of odd number minor version for + beta/development releases and even number minor version for stable + releases. Micro is bumped with each release, and set to 0 with each + change to major or minor version. +*/ +#define XML_MAJOR_VERSION 2 +#define XML_MINOR_VERSION 1 +#define XML_MICRO_VERSION 1 + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_INCLUDED */ diff --git a/Utilities/cmexpat/lib/expat_external.h b/Utilities/cmexpat/lib/expat_external.h new file mode 100644 index 0000000..b2be17b --- /dev/null +++ b/Utilities/cmexpat/lib/expat_external.h @@ -0,0 +1,117 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef Expat_External_INCLUDED +#define Expat_External_INCLUDED 1 + +/* External API definitions */ + +#if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__) +#define XML_USE_MSC_EXTENSIONS 1 +#endif + +/* Expat tries very hard to make the API boundary very specifically + defined. There are two macros defined to control this boundary; + each of these can be defined before including this header to + achieve some different behavior, but doing so it not recommended or + tested frequently. + + XMLCALL - The calling convention to use for all calls across the + "library boundary." This will default to cdecl, and + try really hard to tell the compiler that's what we + want. + + XMLIMPORT - Whatever magic is needed to note that a function is + to be imported from a dynamically loaded library + (.dll, .so, or .sl, depending on your platform). + + The XMLCALL macro was added in Expat 1.95.7. The only one which is + expected to be directly useful in client code is XMLCALL. + + Note that on at least some Unix versions, the Expat library must be + compiled with the cdecl calling convention as the default since + system headers may assume the cdecl convention. +*/ +#ifndef XMLCALL +#if defined(_MSC_VER) +#define XMLCALL __cdecl +#elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER) +#define XMLCALL __attribute__((cdecl)) +#else +/* For any platform which uses this definition and supports more than + one calling convention, we need to extend this definition to + declare the convention used on that platform, if it's possible to + do so. + + If this is the case for your platform, please file a bug report + with information on how to identify your platform via the C + pre-processor and how to specify the same calling convention as the + platform's malloc() implementation. +*/ +#define XMLCALL +#endif +#endif /* not defined XMLCALL */ + +/* Build within CMake hard-codes use of a static library. */ +#define XML_STATIC + +#if !defined(XML_STATIC) && !defined(XMLIMPORT) +#ifndef XML_BUILDING_EXPAT +/* using Expat from an application */ + +#ifdef XML_USE_MSC_EXTENSIONS +#define XMLIMPORT __declspec(dllimport) +#endif + +#endif +#endif /* not defined XML_STATIC */ + + +/* If we didn't define it above, define it away: */ +#ifndef XMLIMPORT +#define XMLIMPORT +#endif + + +#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef XML_UNICODE_WCHAR_T +#define XML_UNICODE +#endif + +#ifdef XML_UNICODE /* Information is UTF-16 encoded. */ +#ifdef XML_UNICODE_WCHAR_T +typedef wchar_t XML_Char; +typedef wchar_t XML_LChar; +#else +typedef unsigned short XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE_WCHAR_T */ +#else /* Information is UTF-8 encoded. */ +typedef char XML_Char; +typedef char XML_LChar; +#endif /* XML_UNICODE */ + +#ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */ +#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400 +typedef __int64 XML_Index; +typedef unsigned __int64 XML_Size; +#else +typedef long long XML_Index; +typedef unsigned long long XML_Size; +#endif +#else +typedef long XML_Index; +typedef unsigned long XML_Size; +#endif /* XML_LARGE_SIZE */ + +#ifdef __cplusplus +} +#endif + +#endif /* not Expat_External_INCLUDED */ diff --git a/Utilities/cmexpat/iasciitab.h b/Utilities/cmexpat/lib/iasciitab.h index 55dbc39..24a1d5c 100644 --- a/Utilities/cmexpat/iasciitab.h +++ b/Utilities/cmexpat/lib/iasciitab.h @@ -1,6 +1,5 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ /* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ diff --git a/Utilities/cmexpat/lib/internal.h b/Utilities/cmexpat/lib/internal.h new file mode 100644 index 0000000..dd54548 --- /dev/null +++ b/Utilities/cmexpat/lib/internal.h @@ -0,0 +1,73 @@ +/* internal.h + + Internal definitions used by Expat. This is not needed to compile + client code. + + The following calling convention macros are defined for frequently + called functions: + + FASTCALL - Used for those internal functions that have a simple + body and a low number of arguments and local variables. + + PTRCALL - Used for functions called though function pointers. + + PTRFASTCALL - Like PTRCALL, but for low number of arguments. + + inline - Used for selected internal functions for which inlining + may improve performance on some platforms. + + Note: Use of these macros is based on judgement, not hard rules, + and therefore subject to change. +*/ + +#if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__) +/* We'll use this version by default only where we know it helps. + + regparm() generates warnings on Solaris boxes. See SF bug #692878. + + Instability reported with egcs on a RedHat Linux 7.3. + Let's comment out: + #define FASTCALL __attribute__((stdcall, regparm(3))) + and let's try this: +*/ +#define FASTCALL __attribute__((regparm(3))) +#define PTRFASTCALL __attribute__((regparm(3))) +#endif + +/* Using __fastcall seems to have an unexpected negative effect under + MS VC++, especially for function pointers, so we won't use it for + now on that platform. It may be reconsidered for a future release + if it can be made more effective. + Likely reason: __fastcall on Windows is like stdcall, therefore + the compiler cannot perform stack optimizations for call clusters. +*/ + +/* Make sure all of these are defined if they aren't already. */ + +#ifndef FASTCALL +#define FASTCALL +#endif + +#ifndef PTRCALL +#define PTRCALL +#endif + +#ifndef PTRFASTCALL +#define PTRFASTCALL +#endif + +#ifndef XML_MIN_SIZE +#if !defined(__cplusplus) && !defined(inline) +#ifdef __GNUC__ +#define inline __inline +#endif /* __GNUC__ */ +#endif +#endif /* XML_MIN_SIZE */ + +#ifdef __cplusplus +#define inline inline +#else +#ifndef inline +#define inline +#endif +#endif diff --git a/Utilities/cmexpat/latin1tab.h b/Utilities/cmexpat/lib/latin1tab.h index 178b1d1..53c25d7 100644 --- a/Utilities/cmexpat/latin1tab.h +++ b/Utilities/cmexpat/lib/latin1tab.h @@ -1,6 +1,5 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ /* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/Utilities/cmexpat/nametab.h b/Utilities/cmexpat/lib/nametab.h index b05e62c..b05e62c 100644 --- a/Utilities/cmexpat/nametab.h +++ b/Utilities/cmexpat/lib/nametab.h diff --git a/Utilities/cmexpat/utf8tab.h b/Utilities/cmexpat/lib/utf8tab.h index 9e3b6b8..7bb3e77 100644 --- a/Utilities/cmexpat/utf8tab.h +++ b/Utilities/cmexpat/lib/utf8tab.h @@ -1,6 +1,5 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ diff --git a/Utilities/cmexpat/lib/winconfig.h b/Utilities/cmexpat/lib/winconfig.h new file mode 100644 index 0000000..d7dad38 --- /dev/null +++ b/Utilities/cmexpat/lib/winconfig.h @@ -0,0 +1,27 @@ +/*================================================================ +** Copyright 2000, Clark Cooper +** All rights reserved. +** +** This is free software. You are permitted to copy, distribute, or modify +** it under the terms of the MIT/X license (contained in the COPYING file +** with this distribution.) +*/ + +#ifndef WINCONFIG_H +#define WINCONFIG_H + +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#undef WIN32_LEAN_AND_MEAN + +#include <memory.h> +#include <string.h> + +#include "expat_config.h" + +#if defined(_MSC_VER) +# pragma warning(push,1) +# pragma warning(disable:4311) /* pointer truncation */ +#endif + +#endif /* ndef WINCONFIG_H */ diff --git a/Utilities/cmexpat/lib/xmlparse.c b/Utilities/cmexpat/lib/xmlparse.c new file mode 100644 index 0000000..c0e8f6e --- /dev/null +++ b/Utilities/cmexpat/lib/xmlparse.c @@ -0,0 +1,6454 @@ +/* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#include <stddef.h> +#include <string.h> /* memset(), memcpy() */ +#include <assert.h> +#include <limits.h> /* UINT_MAX */ + +#ifdef COMPILING_FOR_WINDOWS +#define getpid GetCurrentProcessId +#else +#include <sys/time.h> /* gettimeofday() */ +#include <sys/types.h> /* getpid() */ +#include <unistd.h> /* getpid() */ +#endif + +#define XML_BUILDING_EXPAT 1 + +#ifdef COMPILING_FOR_WINDOWS +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#elif defined(HAVE_EXPAT_CONFIG_H) +#include <expat_config.h> +#endif /* ndef COMPILING_FOR_WINDOWS */ + +#include "ascii.h" +#include "expat.h" + +#ifdef XML_UNICODE +#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX +#define XmlConvert XmlUtf16Convert +#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding +#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS +#define XmlEncode XmlUtf16Encode +/* Using pointer subtraction to convert to integer type. */ +#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((char *)(s) - (char *)NULL) & 1)) +typedef unsigned short ICHAR; +#else +#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX +#define XmlConvert XmlUtf8Convert +#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding +#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS +#define XmlEncode XmlUtf8Encode +#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) +typedef char ICHAR; +#endif + + +#ifndef XML_NS + +#define XmlInitEncodingNS XmlInitEncoding +#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding +#undef XmlGetInternalEncodingNS +#define XmlGetInternalEncodingNS XmlGetInternalEncoding +#define XmlParseXmlDeclNS XmlParseXmlDecl + +#endif + +#ifdef XML_UNICODE + +#ifdef XML_UNICODE_WCHAR_T +#define XML_T(x) (const wchar_t)x +#define XML_L(x) L ## x +#else +#define XML_T(x) (const unsigned short)x +#define XML_L(x) x +#endif + +#else + +#define XML_T(x) x +#define XML_L(x) x + +#endif + +/* Round up n to be a multiple of sz, where sz is a power of 2. */ +#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) + +/* Handle the case where memmove() doesn't exist. */ +#ifndef HAVE_MEMMOVE +#ifdef HAVE_BCOPY +#define memmove(d,s,l) bcopy((s),(d),(l)) +#else +#error memmove does not exist on this platform, nor is a substitute available +#endif /* HAVE_BCOPY */ +#endif /* HAVE_MEMMOVE */ + +#include "internal.h" +#include "xmltok.h" +#include "xmlrole.h" + +typedef const XML_Char *KEY; + +typedef struct { + KEY name; +} NAMED; + +typedef struct { + NAMED **v; + unsigned char power; + size_t size; + size_t used; + const XML_Memory_Handling_Suite *mem; +} HASH_TABLE; + +/* Basic character hash algorithm, taken from Python's string hash: + h = h * 1000003 ^ character, the constant being a prime number. + +*/ +#ifdef XML_UNICODE +#define CHAR_HASH(h, c) \ + (((h) * 0xF4243) ^ (unsigned short)(c)) +#else +#define CHAR_HASH(h, c) \ + (((h) * 0xF4243) ^ (unsigned char)(c)) +#endif + +/* For probing (after a collision) we need a step size relative prime + to the hash table size, which is a power of 2. We use double-hashing, + since we can calculate a second hash value cheaply by taking those bits + of the first hash value that were discarded (masked out) when the table + index was calculated: index = hash & mask, where mask = table->size - 1. + We limit the maximum step size to table->size / 4 (mask >> 2) and make + it odd, since odd numbers are always relative prime to a power of 2. +*/ +#define SECOND_HASH(hash, mask, power) \ + ((((hash) & ~(mask)) >> ((power) - 1)) & ((mask) >> 2)) +#define PROBE_STEP(hash, mask, power) \ + ((unsigned char)((SECOND_HASH(hash, mask, power)) | 1)) + +typedef struct { + NAMED **p; + NAMED **end; +} HASH_TABLE_ITER; + +#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ +#define INIT_DATA_BUF_SIZE 1024 +#define INIT_ATTS_SIZE 16 +#define INIT_ATTS_VERSION 0xFFFFFFFF +#define INIT_BLOCK_SIZE 1024 +#define INIT_BUFFER_SIZE 1024 + +#define EXPAND_SPARE 24 + +typedef struct binding { + struct prefix *prefix; + struct binding *nextTagBinding; + struct binding *prevPrefixBinding; + const struct attribute_id *attId; + XML_Char *uri; + int uriLen; + int uriAlloc; +} BINDING; + +typedef struct prefix { + const XML_Char *name; + BINDING *binding; +} PREFIX; + +typedef struct { + const XML_Char *str; + const XML_Char *localPart; + const XML_Char *prefix; + int strLen; + int uriLen; + int prefixLen; +} TAG_NAME; + +/* TAG represents an open element. + The name of the element is stored in both the document and API + encodings. The memory buffer 'buf' is a separately-allocated + memory area which stores the name. During the XML_Parse()/ + XMLParseBuffer() when the element is open, the memory for the 'raw' + version of the name (in the document encoding) is shared with the + document buffer. If the element is open across calls to + XML_Parse()/XML_ParseBuffer(), the buffer is re-allocated to + contain the 'raw' name as well. + + A parser re-uses these structures, maintaining a list of allocated + TAG objects in a free list. +*/ +typedef struct tag { + struct tag *parent; /* parent of this element */ + const char *rawName; /* tagName in the original encoding */ + int rawNameLength; + TAG_NAME name; /* tagName in the API encoding */ + char *buf; /* buffer for name components */ + char *bufEnd; /* end of the buffer */ + BINDING *bindings; +} TAG; + +typedef struct { + const XML_Char *name; + const XML_Char *textPtr; + int textLen; /* length in XML_Chars */ + int processed; /* # of processed bytes - when suspended */ + const XML_Char *systemId; + const XML_Char *base; + const XML_Char *publicId; + const XML_Char *notation; + XML_Bool open; + XML_Bool is_param; + XML_Bool is_internal; /* true if declared in internal subset outside PE */ +} ENTITY; + +typedef struct { + enum XML_Content_Type type; + enum XML_Content_Quant quant; + const XML_Char * name; + int firstchild; + int lastchild; + int childcnt; + int nextsib; +} CONTENT_SCAFFOLD; + +#define INIT_SCAFFOLD_ELEMENTS 32 + +typedef struct block { + struct block *next; + int size; + XML_Char s[1]; +} BLOCK; + +typedef struct { + BLOCK *blocks; + BLOCK *freeBlocks; + const XML_Char *end; + XML_Char *ptr; + XML_Char *start; + const XML_Memory_Handling_Suite *mem; +} STRING_POOL; + +/* The XML_Char before the name is used to determine whether + an attribute has been specified. */ +typedef struct attribute_id { + XML_Char *name; + PREFIX *prefix; + XML_Bool maybeTokenized; + XML_Bool xmlns; +} ATTRIBUTE_ID; + +typedef struct { + const ATTRIBUTE_ID *id; + XML_Bool isCdata; + const XML_Char *value; +} DEFAULT_ATTRIBUTE; + +typedef struct { + unsigned long version; + unsigned long hash; + const XML_Char *uriName; +} NS_ATT; + +typedef struct { + const XML_Char *name; + PREFIX *prefix; + const ATTRIBUTE_ID *idAtt; + int nDefaultAtts; + int allocDefaultAtts; + DEFAULT_ATTRIBUTE *defaultAtts; +} ELEMENT_TYPE; + +typedef struct { + HASH_TABLE generalEntities; + HASH_TABLE elementTypes; + HASH_TABLE attributeIds; + HASH_TABLE prefixes; + STRING_POOL pool; + STRING_POOL entityValuePool; + /* false once a parameter entity reference has been skipped */ + XML_Bool keepProcessing; + /* true once an internal or external PE reference has been encountered; + this includes the reference to an external subset */ + XML_Bool hasParamEntityRefs; + XML_Bool standalone; +#ifdef XML_DTD + /* indicates if external PE has been read */ + XML_Bool paramEntityRead; + HASH_TABLE paramEntities; +#endif /* XML_DTD */ + PREFIX defaultPrefix; + /* === scaffolding for building content model === */ + XML_Bool in_eldecl; + CONTENT_SCAFFOLD *scaffold; + unsigned contentStringLen; + unsigned scaffSize; + unsigned scaffCount; + int scaffLevel; + int *scaffIndex; +} DTD; + +typedef struct open_internal_entity { + const char *internalEventPtr; + const char *internalEventEndPtr; + struct open_internal_entity *next; + ENTITY *entity; + int startTagLevel; + XML_Bool betweenDecl; /* WFC: PE Between Declarations */ +} OPEN_INTERNAL_ENTITY; + +typedef enum XML_Error PTRCALL Processor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr); + +static Processor prologProcessor; +static Processor prologInitProcessor; +static Processor contentProcessor; +static Processor cdataSectionProcessor; +#ifdef XML_DTD +static Processor ignoreSectionProcessor; +static Processor externalParEntProcessor; +static Processor externalParEntInitProcessor; +static Processor entityValueProcessor; +static Processor entityValueInitProcessor; +#endif /* XML_DTD */ +static Processor epilogProcessor; +static Processor errorProcessor; +static Processor externalEntityInitProcessor; +static Processor externalEntityInitProcessor2; +static Processor externalEntityInitProcessor3; +static Processor externalEntityContentProcessor; +static Processor internalEntityProcessor; + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next); +static enum XML_Error +initializeEncoding(XML_Parser parser); +static enum XML_Error +doProlog(XML_Parser parser, const ENCODING *enc, const char *s, + const char *end, int tok, const char *next, const char **nextPtr, + XML_Bool haveMore); +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl); +static enum XML_Error +doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, + const char *start, const char *end, const char **endPtr, + XML_Bool haveMore); +static enum XML_Error +doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore); +#ifdef XML_DTD +static enum XML_Error +doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, + const char *end, const char **nextPtr, XML_Bool haveMore); +#endif /* XML_DTD */ + +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *, const char *s, + TAG_NAME *tagNamePtr, BINDING **bindingsPtr); +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr); +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, XML_Bool isCdata, + XML_Bool isId, const XML_Char *dfltValue, XML_Parser parser); +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, + const char *, const char *, STRING_POOL *); +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *, XML_Bool isCdata, + const char *, const char *, STRING_POOL *); +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); +static enum XML_Error +storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end); +static int +reportComment(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); +static void +reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, + const char *end); + +static const XML_Char * getContext(XML_Parser parser); +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context); + +static void FASTCALL normalizePublicId(XML_Char *s); + +static DTD * dtdCreate(const XML_Memory_Handling_Suite *ms); +/* do not call if parentParser != NULL */ +static void dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms); +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms); +static int +dtdCopy(XML_Parser oldParser, + DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms); +static int +copyEntityTable(XML_Parser oldParser, + HASH_TABLE *, STRING_POOL *, const HASH_TABLE *); +static NAMED * +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize); +static void FASTCALL +hashTableInit(HASH_TABLE *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL hashTableClear(HASH_TABLE *); +static void FASTCALL hashTableDestroy(HASH_TABLE *); +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); +static NAMED * FASTCALL hashTableIterNext(HASH_TABLE_ITER *); + +static void FASTCALL +poolInit(STRING_POOL *, const XML_Memory_Handling_Suite *ms); +static void FASTCALL poolClear(STRING_POOL *); +static void FASTCALL poolDestroy(STRING_POOL *); +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end); +static XML_Bool FASTCALL poolGrow(STRING_POOL *pool); +static const XML_Char * FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s); +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); +static const XML_Char * FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s); + +static int FASTCALL nextScaffoldPart(XML_Parser parser); +static XML_Content * build_model(XML_Parser parser); +static ELEMENT_TYPE * +getElementType(XML_Parser parser, const ENCODING *enc, + const char *ptr, const char *end); + +static unsigned long generate_hash_secret_salt(XML_Parser parser); +static XML_Bool startParsing(XML_Parser parser); + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, + DTD *dtd); + +static void +parserInit(XML_Parser parser, const XML_Char *encodingName); + +#define poolStart(pool) ((pool)->start) +#define poolEnd(pool) ((pool)->ptr) +#define poolLength(pool) ((pool)->ptr - (pool)->start) +#define poolChop(pool) ((void)--(pool->ptr)) +#define poolLastChar(pool) (((pool)->ptr)[-1]) +#define poolDiscard(pool) ((pool)->ptr = (pool)->start) +#define poolFinish(pool) ((pool)->start = (pool)->ptr) +#define poolAppendChar(pool, c) \ + (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ + ? 0 \ + : ((*((pool)->ptr)++ = c), 1)) + +struct XML_ParserStruct { + /* The first member must be userData so that the XML_GetUserData + macro works. */ + void *m_userData; + void *m_handlerArg; + char *m_buffer; + const XML_Memory_Handling_Suite m_mem; + /* first character to be parsed */ + const char *m_bufferPtr; + /* past last character to be parsed */ + char *m_bufferEnd; + /* allocated end of buffer */ + const char *m_bufferLim; + XML_Index m_parseEndByteIndex; + const char *m_parseEndPtr; + XML_Char *m_dataBuf; + XML_Char *m_dataBufEnd; + XML_StartElementHandler m_startElementHandler; + XML_EndElementHandler m_endElementHandler; + XML_CharacterDataHandler m_characterDataHandler; + XML_ProcessingInstructionHandler m_processingInstructionHandler; + XML_CommentHandler m_commentHandler; + XML_StartCdataSectionHandler m_startCdataSectionHandler; + XML_EndCdataSectionHandler m_endCdataSectionHandler; + XML_DefaultHandler m_defaultHandler; + XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; + XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; + XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; + XML_NotationDeclHandler m_notationDeclHandler; + XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; + XML_NotStandaloneHandler m_notStandaloneHandler; + XML_ExternalEntityRefHandler m_externalEntityRefHandler; + XML_Parser m_externalEntityRefHandlerArg; + XML_SkippedEntityHandler m_skippedEntityHandler; + XML_UnknownEncodingHandler m_unknownEncodingHandler; + XML_ElementDeclHandler m_elementDeclHandler; + XML_AttlistDeclHandler m_attlistDeclHandler; + XML_EntityDeclHandler m_entityDeclHandler; + XML_XmlDeclHandler m_xmlDeclHandler; + const ENCODING *m_encoding; + INIT_ENCODING m_initEncoding; + const ENCODING *m_internalEncoding; + const XML_Char *m_protocolEncodingName; + XML_Bool m_ns; + XML_Bool m_ns_triplets; + void *m_unknownEncodingMem; + void *m_unknownEncodingData; + void *m_unknownEncodingHandlerData; + void (XMLCALL *m_unknownEncodingRelease)(void *); + PROLOG_STATE m_prologState; + Processor *m_processor; + enum XML_Error m_errorCode; + const char *m_eventPtr; + const char *m_eventEndPtr; + const char *m_positionPtr; + OPEN_INTERNAL_ENTITY *m_openInternalEntities; + OPEN_INTERNAL_ENTITY *m_freeInternalEntities; + XML_Bool m_defaultExpandInternalEntities; + int m_tagLevel; + ENTITY *m_declEntity; + const XML_Char *m_doctypeName; + const XML_Char *m_doctypeSysid; + const XML_Char *m_doctypePubid; + const XML_Char *m_declAttributeType; + const XML_Char *m_declNotationName; + const XML_Char *m_declNotationPublicId; + ELEMENT_TYPE *m_declElementType; + ATTRIBUTE_ID *m_declAttributeId; + XML_Bool m_declAttributeIsCdata; + XML_Bool m_declAttributeIsId; + DTD *m_dtd; + const XML_Char *m_curBase; + TAG *m_tagStack; + TAG *m_freeTagList; + BINDING *m_inheritedBindings; + BINDING *m_freeBindingList; + int m_attsSize; + int m_nSpecifiedAtts; + int m_idAttIndex; + ATTRIBUTE *m_atts; + NS_ATT *m_nsAtts; + unsigned long m_nsAttsVersion; + unsigned char m_nsAttsPower; +#ifdef XML_ATTR_INFO + XML_AttrInfo *m_attInfo; +#endif + POSITION m_position; + STRING_POOL m_tempPool; + STRING_POOL m_temp2Pool; + char *m_groupConnector; + unsigned int m_groupSize; + XML_Char m_namespaceSeparator; + XML_Parser m_parentParser; + XML_ParsingStatus m_parsingStatus; +#ifdef XML_DTD + XML_Bool m_isParamEntity; + XML_Bool m_useForeignDTD; + enum XML_ParamEntityParsing m_paramEntityParsing; +#endif + unsigned long m_hash_secret_salt; +}; + +#define MALLOC(s) (parser->m_mem.malloc_fcn((s))) +#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s))) +#define FREE(p) (parser->m_mem.free_fcn((p))) + +#define userData (parser->m_userData) +#define handlerArg (parser->m_handlerArg) +#define startElementHandler (parser->m_startElementHandler) +#define endElementHandler (parser->m_endElementHandler) +#define characterDataHandler (parser->m_characterDataHandler) +#define processingInstructionHandler \ + (parser->m_processingInstructionHandler) +#define commentHandler (parser->m_commentHandler) +#define startCdataSectionHandler \ + (parser->m_startCdataSectionHandler) +#define endCdataSectionHandler (parser->m_endCdataSectionHandler) +#define defaultHandler (parser->m_defaultHandler) +#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler) +#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler) +#define unparsedEntityDeclHandler \ + (parser->m_unparsedEntityDeclHandler) +#define notationDeclHandler (parser->m_notationDeclHandler) +#define startNamespaceDeclHandler \ + (parser->m_startNamespaceDeclHandler) +#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler) +#define notStandaloneHandler (parser->m_notStandaloneHandler) +#define externalEntityRefHandler \ + (parser->m_externalEntityRefHandler) +#define externalEntityRefHandlerArg \ + (parser->m_externalEntityRefHandlerArg) +#define internalEntityRefHandler \ + (parser->m_internalEntityRefHandler) +#define skippedEntityHandler (parser->m_skippedEntityHandler) +#define unknownEncodingHandler (parser->m_unknownEncodingHandler) +#define elementDeclHandler (parser->m_elementDeclHandler) +#define attlistDeclHandler (parser->m_attlistDeclHandler) +#define entityDeclHandler (parser->m_entityDeclHandler) +#define xmlDeclHandler (parser->m_xmlDeclHandler) +#define encoding (parser->m_encoding) +#define initEncoding (parser->m_initEncoding) +#define internalEncoding (parser->m_internalEncoding) +#define unknownEncodingMem (parser->m_unknownEncodingMem) +#define unknownEncodingData (parser->m_unknownEncodingData) +#define unknownEncodingHandlerData \ + (parser->m_unknownEncodingHandlerData) +#define unknownEncodingRelease (parser->m_unknownEncodingRelease) +#define protocolEncodingName (parser->m_protocolEncodingName) +#define ns (parser->m_ns) +#define ns_triplets (parser->m_ns_triplets) +#define prologState (parser->m_prologState) +#define processor (parser->m_processor) +#define errorCode (parser->m_errorCode) +#define eventPtr (parser->m_eventPtr) +#define eventEndPtr (parser->m_eventEndPtr) +#define positionPtr (parser->m_positionPtr) +#define position (parser->m_position) +#define openInternalEntities (parser->m_openInternalEntities) +#define freeInternalEntities (parser->m_freeInternalEntities) +#define defaultExpandInternalEntities \ + (parser->m_defaultExpandInternalEntities) +#define tagLevel (parser->m_tagLevel) +#define buffer (parser->m_buffer) +#define bufferPtr (parser->m_bufferPtr) +#define bufferEnd (parser->m_bufferEnd) +#define parseEndByteIndex (parser->m_parseEndByteIndex) +#define parseEndPtr (parser->m_parseEndPtr) +#define bufferLim (parser->m_bufferLim) +#define dataBuf (parser->m_dataBuf) +#define dataBufEnd (parser->m_dataBufEnd) +#define _dtd (parser->m_dtd) +#define curBase (parser->m_curBase) +#define declEntity (parser->m_declEntity) +#define doctypeName (parser->m_doctypeName) +#define doctypeSysid (parser->m_doctypeSysid) +#define doctypePubid (parser->m_doctypePubid) +#define declAttributeType (parser->m_declAttributeType) +#define declNotationName (parser->m_declNotationName) +#define declNotationPublicId (parser->m_declNotationPublicId) +#define declElementType (parser->m_declElementType) +#define declAttributeId (parser->m_declAttributeId) +#define declAttributeIsCdata (parser->m_declAttributeIsCdata) +#define declAttributeIsId (parser->m_declAttributeIsId) +#define freeTagList (parser->m_freeTagList) +#define freeBindingList (parser->m_freeBindingList) +#define inheritedBindings (parser->m_inheritedBindings) +#define tagStack (parser->m_tagStack) +#define atts (parser->m_atts) +#define attsSize (parser->m_attsSize) +#define nSpecifiedAtts (parser->m_nSpecifiedAtts) +#define idAttIndex (parser->m_idAttIndex) +#define nsAtts (parser->m_nsAtts) +#define nsAttsVersion (parser->m_nsAttsVersion) +#define nsAttsPower (parser->m_nsAttsPower) +#define attInfo (parser->m_attInfo) +#define tempPool (parser->m_tempPool) +#define temp2Pool (parser->m_temp2Pool) +#define groupConnector (parser->m_groupConnector) +#define groupSize (parser->m_groupSize) +#define namespaceSeparator (parser->m_namespaceSeparator) +#define parentParser (parser->m_parentParser) +#define ps_parsing (parser->m_parsingStatus.parsing) +#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer) +#ifdef XML_DTD +#define isParamEntity (parser->m_isParamEntity) +#define useForeignDTD (parser->m_useForeignDTD) +#define paramEntityParsing (parser->m_paramEntityParsing) +#endif /* XML_DTD */ +#define hash_secret_salt (parser->m_hash_secret_salt) + +XML_Parser XMLCALL +XML_ParserCreate(const XML_Char *encodingName) +{ + return XML_ParserCreate_MM(encodingName, NULL, NULL); +} + +XML_Parser XMLCALL +XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) +{ + XML_Char tmp[2]; + *tmp = nsSep; + return XML_ParserCreate_MM(encodingName, NULL, tmp); +} + +static const XML_Char implicitContext[] = { + ASCII_x, ASCII_m, ASCII_l, ASCII_EQUALS, ASCII_h, ASCII_t, ASCII_t, ASCII_p, + ASCII_COLON, ASCII_SLASH, ASCII_SLASH, ASCII_w, ASCII_w, ASCII_w, + ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, ASCII_o, ASCII_r, ASCII_g, + ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, ASCII_SLASH, ASCII_1, ASCII_9, + ASCII_9, ASCII_8, ASCII_SLASH, ASCII_n, ASCII_a, ASCII_m, ASCII_e, + ASCII_s, ASCII_p, ASCII_a, ASCII_c, ASCII_e, '\0' +}; + +static unsigned long +gather_time_entropy(void) +{ +#ifdef COMPILING_FOR_WINDOWS + FILETIME ft; + GetSystemTimeAsFileTime(&ft); /* never fails */ + return ft.dwHighDateTime ^ ft.dwLowDateTime; +#else + struct timeval tv; + int gettimeofday_res; + + gettimeofday_res = gettimeofday(&tv, NULL); + assert (gettimeofday_res == 0); + + /* Microseconds time is <20 bits entropy */ + return tv.tv_usec; +#endif +} + +static unsigned long +generate_hash_secret_salt(XML_Parser parser) +{ + /* Process ID is 0 bits entropy if attacker has local access + * XML_Parser address is few bits of entropy if attacker has local access */ + const unsigned long entropy = + gather_time_entropy() ^ getpid() ^ (unsigned long)parser; + + /* Factors are 2^31-1 and 2^61-1 (Mersenne primes M31 and M61) */ + if (sizeof(unsigned long) == 4) { + return entropy * 2147483647; + } else { + return entropy * 2305843009213693951; + } +} + +static XML_Bool /* only valid for root parser */ +startParsing(XML_Parser parser) +{ + /* hash functions must be initialized before setContext() is called */ + if (hash_secret_salt == 0) + hash_secret_salt = generate_hash_secret_salt(parser); + if (ns) { + /* implicit context only set for root parser, since child + parsers (i.e. external entity parsers) will inherit it + */ + return setContext(parser, implicitContext); + } + return XML_TRUE; +} + +XML_Parser XMLCALL +XML_ParserCreate_MM(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep) +{ + return parserCreate(encodingName, memsuite, nameSep, NULL); +} + +static XML_Parser +parserCreate(const XML_Char *encodingName, + const XML_Memory_Handling_Suite *memsuite, + const XML_Char *nameSep, + DTD *dtd) +{ + XML_Parser parser; + + if (memsuite) { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser) + memsuite->malloc_fcn(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = memsuite->malloc_fcn; + mtemp->realloc_fcn = memsuite->realloc_fcn; + mtemp->free_fcn = memsuite->free_fcn; + } + } + else { + XML_Memory_Handling_Suite *mtemp; + parser = (XML_Parser)malloc(sizeof(struct XML_ParserStruct)); + if (parser != NULL) { + mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem); + mtemp->malloc_fcn = malloc; + mtemp->realloc_fcn = realloc; + mtemp->free_fcn = free; + } + } + + if (!parser) + return parser; + + buffer = NULL; + bufferLim = NULL; + + attsSize = INIT_ATTS_SIZE; + atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE)); + if (atts == NULL) { + FREE(parser); + return NULL; + } +#ifdef XML_ATTR_INFO + attInfo = (XML_AttrInfo*)MALLOC(attsSize * sizeof(XML_AttrInfo)); + if (attInfo == NULL) { + FREE(atts); + FREE(parser); + return NULL; + } +#endif + dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); + if (dataBuf == NULL) { + FREE(atts); +#ifdef XML_ATTR_INFO + FREE(attInfo); +#endif + FREE(parser); + return NULL; + } + dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; + + if (dtd) + _dtd = dtd; + else { + _dtd = dtdCreate(&parser->m_mem); + if (_dtd == NULL) { + FREE(dataBuf); + FREE(atts); +#ifdef XML_ATTR_INFO + FREE(attInfo); +#endif + FREE(parser); + return NULL; + } + } + + freeBindingList = NULL; + freeTagList = NULL; + freeInternalEntities = NULL; + + groupSize = 0; + groupConnector = NULL; + + unknownEncodingHandler = NULL; + unknownEncodingHandlerData = NULL; + + namespaceSeparator = ASCII_EXCL; + ns = XML_FALSE; + ns_triplets = XML_FALSE; + + nsAtts = NULL; + nsAttsVersion = 0; + nsAttsPower = 0; + + poolInit(&tempPool, &(parser->m_mem)); + poolInit(&temp2Pool, &(parser->m_mem)); + parserInit(parser, encodingName); + + if (encodingName && !protocolEncodingName) { + XML_ParserFree(parser); + return NULL; + } + + if (nameSep) { + ns = XML_TRUE; + internalEncoding = XmlGetInternalEncodingNS(); + namespaceSeparator = *nameSep; + } + else { + internalEncoding = XmlGetInternalEncoding(); + } + + return parser; +} + +static void +parserInit(XML_Parser parser, const XML_Char *encodingName) +{ + processor = prologInitProcessor; + XmlPrologStateInit(&prologState); + protocolEncodingName = (encodingName != NULL + ? poolCopyString(&tempPool, encodingName) + : NULL); + curBase = NULL; + XmlInitEncoding(&initEncoding, &encoding, 0); + userData = NULL; + handlerArg = NULL; + startElementHandler = NULL; + endElementHandler = NULL; + characterDataHandler = NULL; + processingInstructionHandler = NULL; + commentHandler = NULL; + startCdataSectionHandler = NULL; + endCdataSectionHandler = NULL; + defaultHandler = NULL; + startDoctypeDeclHandler = NULL; + endDoctypeDeclHandler = NULL; + unparsedEntityDeclHandler = NULL; + notationDeclHandler = NULL; + startNamespaceDeclHandler = NULL; + endNamespaceDeclHandler = NULL; + notStandaloneHandler = NULL; + externalEntityRefHandler = NULL; + externalEntityRefHandlerArg = parser; + skippedEntityHandler = NULL; + elementDeclHandler = NULL; + attlistDeclHandler = NULL; + entityDeclHandler = NULL; + xmlDeclHandler = NULL; + bufferPtr = buffer; + bufferEnd = buffer; + parseEndByteIndex = 0; + parseEndPtr = NULL; + declElementType = NULL; + declAttributeId = NULL; + declEntity = NULL; + doctypeName = NULL; + doctypeSysid = NULL; + doctypePubid = NULL; + declAttributeType = NULL; + declNotationName = NULL; + declNotationPublicId = NULL; + declAttributeIsCdata = XML_FALSE; + declAttributeIsId = XML_FALSE; + memset(&position, 0, sizeof(POSITION)); + errorCode = XML_ERROR_NONE; + eventPtr = NULL; + eventEndPtr = NULL; + positionPtr = NULL; + openInternalEntities = NULL; + defaultExpandInternalEntities = XML_TRUE; + tagLevel = 0; + tagStack = NULL; + inheritedBindings = NULL; + nSpecifiedAtts = 0; + unknownEncodingMem = NULL; + unknownEncodingRelease = NULL; + unknownEncodingData = NULL; + parentParser = NULL; + ps_parsing = XML_INITIALIZED; +#ifdef XML_DTD + isParamEntity = XML_FALSE; + useForeignDTD = XML_FALSE; + paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif + hash_secret_salt = 0; +} + +/* moves list of bindings to freeBindingList */ +static void FASTCALL +moveToFreeBindingList(XML_Parser parser, BINDING *bindings) +{ + while (bindings) { + BINDING *b = bindings; + bindings = bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + } +} + +XML_Bool XMLCALL +XML_ParserReset(XML_Parser parser, const XML_Char *encodingName) +{ + TAG *tStk; + OPEN_INTERNAL_ENTITY *openEntityList; + if (parentParser) + return XML_FALSE; + /* move tagStack to freeTagList */ + tStk = tagStack; + while (tStk) { + TAG *tag = tStk; + tStk = tStk->parent; + tag->parent = freeTagList; + moveToFreeBindingList(parser, tag->bindings); + tag->bindings = NULL; + freeTagList = tag; + } + /* move openInternalEntities to freeInternalEntities */ + openEntityList = openInternalEntities; + while (openEntityList) { + OPEN_INTERNAL_ENTITY *openEntity = openEntityList; + openEntityList = openEntity->next; + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + moveToFreeBindingList(parser, inheritedBindings); + FREE(unknownEncodingMem); + if (unknownEncodingRelease) + unknownEncodingRelease(unknownEncodingData); + poolClear(&tempPool); + poolClear(&temp2Pool); + parserInit(parser, encodingName); + dtdReset(_dtd, &parser->m_mem); + return XML_TRUE; +} + +enum XML_Status XMLCALL +XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) +{ + /* Block after XML_Parse()/XML_ParseBuffer() has been called. + XXX There's no way for the caller to determine which of the + XXX possible error cases caused the XML_STATUS_ERROR return. + */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return XML_STATUS_ERROR; + if (encodingName == NULL) + protocolEncodingName = NULL; + else { + protocolEncodingName = poolCopyString(&tempPool, encodingName); + if (!protocolEncodingName) + return XML_STATUS_ERROR; + } + return XML_STATUS_OK; +} + +XML_Parser XMLCALL +XML_ExternalEntityParserCreate(XML_Parser oldParser, + const XML_Char *context, + const XML_Char *encodingName) +{ + XML_Parser parser = oldParser; + DTD *newDtd = NULL; + DTD *oldDtd = _dtd; + XML_StartElementHandler oldStartElementHandler = startElementHandler; + XML_EndElementHandler oldEndElementHandler = endElementHandler; + XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; + XML_ProcessingInstructionHandler oldProcessingInstructionHandler + = processingInstructionHandler; + XML_CommentHandler oldCommentHandler = commentHandler; + XML_StartCdataSectionHandler oldStartCdataSectionHandler + = startCdataSectionHandler; + XML_EndCdataSectionHandler oldEndCdataSectionHandler + = endCdataSectionHandler; + XML_DefaultHandler oldDefaultHandler = defaultHandler; + XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler + = unparsedEntityDeclHandler; + XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; + XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler + = startNamespaceDeclHandler; + XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler + = endNamespaceDeclHandler; + XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; + XML_ExternalEntityRefHandler oldExternalEntityRefHandler + = externalEntityRefHandler; + XML_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler; + XML_UnknownEncodingHandler oldUnknownEncodingHandler + = unknownEncodingHandler; + XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; + XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; + XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; + XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; + ELEMENT_TYPE * oldDeclElementType = declElementType; + + void *oldUserData = userData; + void *oldHandlerArg = handlerArg; + XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities; + XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; +#ifdef XML_DTD + enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; + int oldInEntityValue = prologState.inEntityValue; +#endif + XML_Bool oldns_triplets = ns_triplets; + /* Note that the new parser shares the same hash secret as the old + parser, so that dtdCopy and copyEntityTable can lookup values + from hash tables associated with either parser without us having + to worry which hash secrets each table has. + */ + unsigned long oldhash_secret_salt = hash_secret_salt; + +#ifdef XML_DTD + if (!context) + newDtd = oldDtd; +#endif /* XML_DTD */ + + /* Note that the magical uses of the pre-processor to make field + access look more like C++ require that `parser' be overwritten + here. This makes this function more painful to follow than it + would be otherwise. + */ + if (ns) { + XML_Char tmp[2]; + *tmp = namespaceSeparator; + parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd); + } + else { + parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd); + } + + if (!parser) + return NULL; + + startElementHandler = oldStartElementHandler; + endElementHandler = oldEndElementHandler; + characterDataHandler = oldCharacterDataHandler; + processingInstructionHandler = oldProcessingInstructionHandler; + commentHandler = oldCommentHandler; + startCdataSectionHandler = oldStartCdataSectionHandler; + endCdataSectionHandler = oldEndCdataSectionHandler; + defaultHandler = oldDefaultHandler; + unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; + notationDeclHandler = oldNotationDeclHandler; + startNamespaceDeclHandler = oldStartNamespaceDeclHandler; + endNamespaceDeclHandler = oldEndNamespaceDeclHandler; + notStandaloneHandler = oldNotStandaloneHandler; + externalEntityRefHandler = oldExternalEntityRefHandler; + skippedEntityHandler = oldSkippedEntityHandler; + unknownEncodingHandler = oldUnknownEncodingHandler; + elementDeclHandler = oldElementDeclHandler; + attlistDeclHandler = oldAttlistDeclHandler; + entityDeclHandler = oldEntityDeclHandler; + xmlDeclHandler = oldXmlDeclHandler; + declElementType = oldDeclElementType; + userData = oldUserData; + if (oldUserData == oldHandlerArg) + handlerArg = userData; + else + handlerArg = parser; + if (oldExternalEntityRefHandlerArg != oldParser) + externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; + defaultExpandInternalEntities = oldDefaultExpandInternalEntities; + ns_triplets = oldns_triplets; + hash_secret_salt = oldhash_secret_salt; + parentParser = oldParser; +#ifdef XML_DTD + paramEntityParsing = oldParamEntityParsing; + prologState.inEntityValue = oldInEntityValue; + if (context) { +#endif /* XML_DTD */ + if (!dtdCopy(oldParser, _dtd, oldDtd, &parser->m_mem) + || !setContext(parser, context)) { + XML_ParserFree(parser); + return NULL; + } + processor = externalEntityInitProcessor; +#ifdef XML_DTD + } + else { + /* The DTD instance referenced by _dtd is shared between the document's + root parser and external PE parsers, therefore one does not need to + call setContext. In addition, one also *must* not call setContext, + because this would overwrite existing prefix->binding pointers in + _dtd with ones that get destroyed with the external PE parser. + This would leave those prefixes with dangling pointers. + */ + isParamEntity = XML_TRUE; + XmlPrologStateInitExternalEntity(&prologState); + processor = externalParEntInitProcessor; + } +#endif /* XML_DTD */ + return parser; +} + +static void FASTCALL +destroyBindings(BINDING *bindings, XML_Parser parser) +{ + for (;;) { + BINDING *b = bindings; + if (!b) + break; + bindings = b->nextTagBinding; + FREE(b->uri); + FREE(b); + } +} + +void XMLCALL +XML_ParserFree(XML_Parser parser) +{ + TAG *tagList; + OPEN_INTERNAL_ENTITY *entityList; + if (parser == NULL) + return; + /* free tagStack and freeTagList */ + tagList = tagStack; + for (;;) { + TAG *p; + if (tagList == NULL) { + if (freeTagList == NULL) + break; + tagList = freeTagList; + freeTagList = NULL; + } + p = tagList; + tagList = tagList->parent; + FREE(p->buf); + destroyBindings(p->bindings, parser); + FREE(p); + } + /* free openInternalEntities and freeInternalEntities */ + entityList = openInternalEntities; + for (;;) { + OPEN_INTERNAL_ENTITY *openEntity; + if (entityList == NULL) { + if (freeInternalEntities == NULL) + break; + entityList = freeInternalEntities; + freeInternalEntities = NULL; + } + openEntity = entityList; + entityList = entityList->next; + FREE(openEntity); + } + + destroyBindings(freeBindingList, parser); + destroyBindings(inheritedBindings, parser); + poolDestroy(&tempPool); + poolDestroy(&temp2Pool); +#ifdef XML_DTD + /* external parameter entity parsers share the DTD structure + parser->m_dtd with the root parser, so we must not destroy it + */ + if (!isParamEntity && _dtd) +#else + if (_dtd) +#endif /* XML_DTD */ + dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem); + FREE((void *)atts); +#ifdef XML_ATTR_INFO + FREE((void *)attInfo); +#endif + FREE(groupConnector); + FREE(buffer); + FREE(dataBuf); + FREE(nsAtts); + FREE(unknownEncodingMem); + if (unknownEncodingRelease) + unknownEncodingRelease(unknownEncodingData); + FREE(parser); +} + +void XMLCALL +XML_UseParserAsHandlerArg(XML_Parser parser) +{ + handlerArg = parser; +} + +enum XML_Error XMLCALL +XML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD) +{ +#ifdef XML_DTD + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING; + useForeignDTD = useDTD; + return XML_ERROR_NONE; +#else + return XML_ERROR_FEATURE_REQUIRES_XML_DTD; +#endif +} + +void XMLCALL +XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return; + ns_triplets = do_nst ? XML_TRUE : XML_FALSE; +} + +void XMLCALL +XML_SetUserData(XML_Parser parser, void *p) +{ + if (handlerArg == userData) + handlerArg = userData = p; + else + userData = p; +} + +enum XML_Status XMLCALL +XML_SetBase(XML_Parser parser, const XML_Char *p) +{ + if (p) { + p = poolCopyString(&_dtd->pool, p); + if (!p) + return XML_STATUS_ERROR; + curBase = p; + } + else + curBase = NULL; + return XML_STATUS_OK; +} + +const XML_Char * XMLCALL +XML_GetBase(XML_Parser parser) +{ + return curBase; +} + +int XMLCALL +XML_GetSpecifiedAttributeCount(XML_Parser parser) +{ + return nSpecifiedAtts; +} + +int XMLCALL +XML_GetIdAttributeIndex(XML_Parser parser) +{ + return idAttIndex; +} + +#ifdef XML_ATTR_INFO +const XML_AttrInfo * XMLCALL +XML_GetAttributeInfo(XML_Parser parser) +{ + return attInfo; +} +#endif + +void XMLCALL +XML_SetElementHandler(XML_Parser parser, + XML_StartElementHandler start, + XML_EndElementHandler end) +{ + startElementHandler = start; + endElementHandler = end; +} + +void XMLCALL +XML_SetStartElementHandler(XML_Parser parser, + XML_StartElementHandler start) { + startElementHandler = start; +} + +void XMLCALL +XML_SetEndElementHandler(XML_Parser parser, + XML_EndElementHandler end) { + endElementHandler = end; +} + +void XMLCALL +XML_SetCharacterDataHandler(XML_Parser parser, + XML_CharacterDataHandler handler) +{ + characterDataHandler = handler; +} + +void XMLCALL +XML_SetProcessingInstructionHandler(XML_Parser parser, + XML_ProcessingInstructionHandler handler) +{ + processingInstructionHandler = handler; +} + +void XMLCALL +XML_SetCommentHandler(XML_Parser parser, + XML_CommentHandler handler) +{ + commentHandler = handler; +} + +void XMLCALL +XML_SetCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start, + XML_EndCdataSectionHandler end) +{ + startCdataSectionHandler = start; + endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetStartCdataSectionHandler(XML_Parser parser, + XML_StartCdataSectionHandler start) { + startCdataSectionHandler = start; +} + +void XMLCALL +XML_SetEndCdataSectionHandler(XML_Parser parser, + XML_EndCdataSectionHandler end) { + endCdataSectionHandler = end; +} + +void XMLCALL +XML_SetDefaultHandler(XML_Parser parser, + XML_DefaultHandler handler) +{ + defaultHandler = handler; + defaultExpandInternalEntities = XML_FALSE; +} + +void XMLCALL +XML_SetDefaultHandlerExpand(XML_Parser parser, + XML_DefaultHandler handler) +{ + defaultHandler = handler; + defaultExpandInternalEntities = XML_TRUE; +} + +void XMLCALL +XML_SetDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start, + XML_EndDoctypeDeclHandler end) +{ + startDoctypeDeclHandler = start; + endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetStartDoctypeDeclHandler(XML_Parser parser, + XML_StartDoctypeDeclHandler start) { + startDoctypeDeclHandler = start; +} + +void XMLCALL +XML_SetEndDoctypeDeclHandler(XML_Parser parser, + XML_EndDoctypeDeclHandler end) { + endDoctypeDeclHandler = end; +} + +void XMLCALL +XML_SetUnparsedEntityDeclHandler(XML_Parser parser, + XML_UnparsedEntityDeclHandler handler) +{ + unparsedEntityDeclHandler = handler; +} + +void XMLCALL +XML_SetNotationDeclHandler(XML_Parser parser, + XML_NotationDeclHandler handler) +{ + notationDeclHandler = handler; +} + +void XMLCALL +XML_SetNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start, + XML_EndNamespaceDeclHandler end) +{ + startNamespaceDeclHandler = start; + endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetStartNamespaceDeclHandler(XML_Parser parser, + XML_StartNamespaceDeclHandler start) { + startNamespaceDeclHandler = start; +} + +void XMLCALL +XML_SetEndNamespaceDeclHandler(XML_Parser parser, + XML_EndNamespaceDeclHandler end) { + endNamespaceDeclHandler = end; +} + +void XMLCALL +XML_SetNotStandaloneHandler(XML_Parser parser, + XML_NotStandaloneHandler handler) +{ + notStandaloneHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandler(XML_Parser parser, + XML_ExternalEntityRefHandler handler) +{ + externalEntityRefHandler = handler; +} + +void XMLCALL +XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) +{ + if (arg) + externalEntityRefHandlerArg = (XML_Parser)arg; + else + externalEntityRefHandlerArg = parser; +} + +void XMLCALL +XML_SetSkippedEntityHandler(XML_Parser parser, + XML_SkippedEntityHandler handler) +{ + skippedEntityHandler = handler; +} + +void XMLCALL +XML_SetUnknownEncodingHandler(XML_Parser parser, + XML_UnknownEncodingHandler handler, + void *data) +{ + unknownEncodingHandler = handler; + unknownEncodingHandlerData = data; +} + +void XMLCALL +XML_SetElementDeclHandler(XML_Parser parser, + XML_ElementDeclHandler eldecl) +{ + elementDeclHandler = eldecl; +} + +void XMLCALL +XML_SetAttlistDeclHandler(XML_Parser parser, + XML_AttlistDeclHandler attdecl) +{ + attlistDeclHandler = attdecl; +} + +void XMLCALL +XML_SetEntityDeclHandler(XML_Parser parser, + XML_EntityDeclHandler handler) +{ + entityDeclHandler = handler; +} + +void XMLCALL +XML_SetXmlDeclHandler(XML_Parser parser, + XML_XmlDeclHandler handler) { + xmlDeclHandler = handler; +} + +int XMLCALL +XML_SetParamEntityParsing(XML_Parser parser, + enum XML_ParamEntityParsing peParsing) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return 0; +#ifdef XML_DTD + paramEntityParsing = peParsing; + return 1; +#else + return peParsing == XML_PARAM_ENTITY_PARSING_NEVER; +#endif +} + +int XMLCALL +XML_SetHashSalt(XML_Parser parser, + unsigned long hash_salt) +{ + /* block after XML_Parse()/XML_ParseBuffer() has been called */ + if (ps_parsing == XML_PARSING || ps_parsing == XML_SUSPENDED) + return 0; + hash_secret_salt = hash_salt; + return 1; +} + +enum XML_Status XMLCALL +XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + case XML_INITIALIZED: + if (parentParser == NULL && !startParsing(parser)) { + errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + default: + ps_parsing = XML_PARSING; + } + + if (len == 0) { + ps_finalBuffer = (XML_Bool)isFinal; + if (!isFinal) + return XML_STATUS_OK; + positionPtr = bufferPtr; + parseEndPtr = bufferEnd; + + /* If data are left over from last buffer, and we now know that these + data are the final chunk of input, then we have to check them again + to detect errors based on that fact. + */ + errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + + if (errorCode == XML_ERROR_NONE) { + switch (ps_parsing) { + case XML_SUSPENDED: + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return XML_STATUS_SUSPENDED; + case XML_INITIALIZED: + case XML_PARSING: + ps_parsing = XML_FINISHED; + /* fall through */ + default: + return XML_STATUS_OK; + } + } + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } +#ifndef XML_CONTEXT_BYTES + else if (bufferPtr == bufferEnd) { + const char *end; + int nLeftOver; + enum XML_Status result; + parseEndByteIndex += len; + positionPtr = s; + ps_finalBuffer = (XML_Bool)isFinal; + + errorCode = processor(parser, s, parseEndPtr = s + len, &end); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + ps_parsing = XML_FINISHED; + return XML_STATUS_OK; + } + /* fall through */ + default: + result = XML_STATUS_OK; + } + } + + XmlUpdatePosition(encoding, positionPtr, end, &position); + nLeftOver = s + len - end; + if (nLeftOver) { + if (buffer == NULL || nLeftOver > bufferLim - buffer) { + /* FIXME avoid integer overflow */ + char *temp; + temp = (buffer == NULL + ? (char *)MALLOC(len * 2) + : (char *)REALLOC(buffer, len * 2)); + if (temp == NULL) { + errorCode = XML_ERROR_NO_MEMORY; + eventPtr = eventEndPtr = NULL; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + buffer = temp; + bufferLim = buffer + len * 2; + } + memcpy(buffer, end, nLeftOver); + } + bufferPtr = buffer; + bufferEnd = buffer + nLeftOver; + positionPtr = bufferPtr; + parseEndPtr = bufferEnd; + eventPtr = bufferPtr; + eventEndPtr = bufferPtr; + return result; + } +#endif /* not defined XML_CONTEXT_BYTES */ + else { + void *buff = XML_GetBuffer(parser, len); + if (buff == NULL) + return XML_STATUS_ERROR; + else { + memcpy(buff, s, len); + return XML_ParseBuffer(parser, len, isFinal); + } + } +} + +enum XML_Status XMLCALL +XML_ParseBuffer(XML_Parser parser, int len, int isFinal) +{ + const char *start; + enum XML_Status result = XML_STATUS_OK; + + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + case XML_INITIALIZED: + if (parentParser == NULL && !startParsing(parser)) { + errorCode = XML_ERROR_NO_MEMORY; + return XML_STATUS_ERROR; + } + default: + ps_parsing = XML_PARSING; + } + + start = bufferPtr; + positionPtr = start; + bufferEnd += len; + parseEndPtr = bufferEnd; + parseEndByteIndex += len; + ps_finalBuffer = (XML_Bool)isFinal; + + errorCode = processor(parser, start, parseEndPtr, &bufferPtr); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (isFinal) { + ps_parsing = XML_FINISHED; + return result; + } + default: ; /* should not happen */ + } + } + + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return result; +} + +void * XMLCALL +XML_GetBuffer(XML_Parser parser, int len) +{ + if (len < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + switch (ps_parsing) { + case XML_SUSPENDED: + errorCode = XML_ERROR_SUSPENDED; + return NULL; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return NULL; + default: ; + } + + if (len > bufferLim - bufferEnd) { +#ifdef XML_CONTEXT_BYTES + int keep; +#endif /* defined XML_CONTEXT_BYTES */ + int neededSize = len + (int)(bufferEnd - bufferPtr); + if (neededSize < 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } +#ifdef XML_CONTEXT_BYTES + keep = (int)(bufferPtr - buffer); + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + neededSize += keep; +#endif /* defined XML_CONTEXT_BYTES */ + if (neededSize <= bufferLim - buffer) { +#ifdef XML_CONTEXT_BYTES + if (keep < bufferPtr - buffer) { + int offset = (int)(bufferPtr - buffer) - keep; + memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); + bufferEnd -= offset; + bufferPtr -= offset; + } +#else + memmove(buffer, bufferPtr, bufferEnd - bufferPtr); + bufferEnd = buffer + (bufferEnd - bufferPtr); + bufferPtr = buffer; +#endif /* not defined XML_CONTEXT_BYTES */ + } + else { + char *newBuf; + int bufferSize = (int)(bufferLim - bufferPtr); + if (bufferSize == 0) + bufferSize = INIT_BUFFER_SIZE; + do { + bufferSize *= 2; + } while (bufferSize < neededSize && bufferSize > 0); + if (bufferSize <= 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + newBuf = (char *)MALLOC(bufferSize); + if (newBuf == 0) { + errorCode = XML_ERROR_NO_MEMORY; + return NULL; + } + bufferLim = newBuf + bufferSize; +#ifdef XML_CONTEXT_BYTES + if (bufferPtr) { + int keep = (int)(bufferPtr - buffer); + if (keep > XML_CONTEXT_BYTES) + keep = XML_CONTEXT_BYTES; + memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); + FREE(buffer); + buffer = newBuf; + bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; + bufferPtr = buffer + keep; + } + else { + bufferEnd = newBuf + (bufferEnd - bufferPtr); + bufferPtr = buffer = newBuf; + } +#else + if (bufferPtr) { + memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); + FREE(buffer); + } + bufferEnd = newBuf + (bufferEnd - bufferPtr); + bufferPtr = buffer = newBuf; +#endif /* not defined XML_CONTEXT_BYTES */ + } + eventPtr = eventEndPtr = NULL; + positionPtr = NULL; + } + return bufferEnd; +} + +enum XML_Status XMLCALL +XML_StopParser(XML_Parser parser, XML_Bool resumable) +{ + switch (ps_parsing) { + case XML_SUSPENDED: + if (resumable) { + errorCode = XML_ERROR_SUSPENDED; + return XML_STATUS_ERROR; + } + ps_parsing = XML_FINISHED; + break; + case XML_FINISHED: + errorCode = XML_ERROR_FINISHED; + return XML_STATUS_ERROR; + default: + if (resumable) { +#ifdef XML_DTD + if (isParamEntity) { + errorCode = XML_ERROR_SUSPEND_PE; + return XML_STATUS_ERROR; + } +#endif + ps_parsing = XML_SUSPENDED; + } + else + ps_parsing = XML_FINISHED; + } + return XML_STATUS_OK; +} + +enum XML_Status XMLCALL +XML_ResumeParser(XML_Parser parser) +{ + enum XML_Status result = XML_STATUS_OK; + + if (ps_parsing != XML_SUSPENDED) { + errorCode = XML_ERROR_NOT_SUSPENDED; + return XML_STATUS_ERROR; + } + ps_parsing = XML_PARSING; + + errorCode = processor(parser, bufferPtr, parseEndPtr, &bufferPtr); + + if (errorCode != XML_ERROR_NONE) { + eventEndPtr = eventPtr; + processor = errorProcessor; + return XML_STATUS_ERROR; + } + else { + switch (ps_parsing) { + case XML_SUSPENDED: + result = XML_STATUS_SUSPENDED; + break; + case XML_INITIALIZED: + case XML_PARSING: + if (ps_finalBuffer) { + ps_parsing = XML_FINISHED; + return result; + } + default: ; + } + } + + XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); + positionPtr = bufferPtr; + return result; +} + +void XMLCALL +XML_GetParsingStatus(XML_Parser parser, XML_ParsingStatus *status) +{ + assert(status != NULL); + *status = parser->m_parsingStatus; +} + +enum XML_Error XMLCALL +XML_GetErrorCode(XML_Parser parser) +{ + return errorCode; +} + +XML_Index XMLCALL +XML_GetCurrentByteIndex(XML_Parser parser) +{ + if (eventPtr) + return parseEndByteIndex - (parseEndPtr - eventPtr); + return -1; +} + +int XMLCALL +XML_GetCurrentByteCount(XML_Parser parser) +{ + if (eventEndPtr && eventPtr) + return (int)(eventEndPtr - eventPtr); + return 0; +} + +const char * XMLCALL +XML_GetInputContext(XML_Parser parser, int *offset, int *size) +{ +#ifdef XML_CONTEXT_BYTES + if (eventPtr && buffer) { + *offset = (int)(eventPtr - buffer); + *size = (int)(bufferEnd - buffer); + return buffer; + } +#endif /* defined XML_CONTEXT_BYTES */ + return (char *) 0; +} + +XML_Size XMLCALL +XML_GetCurrentLineNumber(XML_Parser parser) +{ + if (eventPtr && eventPtr >= positionPtr) { + XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); + positionPtr = eventPtr; + } + return position.lineNumber + 1; +} + +XML_Size XMLCALL +XML_GetCurrentColumnNumber(XML_Parser parser) +{ + if (eventPtr && eventPtr >= positionPtr) { + XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); + positionPtr = eventPtr; + } + return position.columnNumber; +} + +void XMLCALL +XML_FreeContentModel(XML_Parser parser, XML_Content *model) +{ + FREE(model); +} + +void * XMLCALL +XML_MemMalloc(XML_Parser parser, size_t size) +{ + return MALLOC(size); +} + +void * XMLCALL +XML_MemRealloc(XML_Parser parser, void *ptr, size_t size) +{ + return REALLOC(ptr, size); +} + +void XMLCALL +XML_MemFree(XML_Parser parser, void *ptr) +{ + FREE(ptr); +} + +void XMLCALL +XML_DefaultCurrent(XML_Parser parser) +{ + if (defaultHandler) { + if (openInternalEntities) + reportDefault(parser, + internalEncoding, + openInternalEntities->internalEventPtr, + openInternalEntities->internalEventEndPtr); + else + reportDefault(parser, encoding, eventPtr, eventEndPtr); + } +} + +const XML_LChar * XMLCALL +XML_ErrorString(enum XML_Error code) +{ + static const XML_LChar* const message[] = { + 0, + XML_L("out of memory"), + XML_L("syntax error"), + XML_L("no element found"), + XML_L("not well-formed (invalid token)"), + XML_L("unclosed token"), + XML_L("partial character"), + XML_L("mismatched tag"), + XML_L("duplicate attribute"), + XML_L("junk after document element"), + XML_L("illegal parameter entity reference"), + XML_L("undefined entity"), + XML_L("recursive entity reference"), + XML_L("asynchronous entity"), + XML_L("reference to invalid character number"), + XML_L("reference to binary entity"), + XML_L("reference to external entity in attribute"), + XML_L("XML or text declaration not at start of entity"), + XML_L("unknown encoding"), + XML_L("encoding specified in XML declaration is incorrect"), + XML_L("unclosed CDATA section"), + XML_L("error in processing external entity reference"), + XML_L("document is not standalone"), + XML_L("unexpected parser state - please send a bug report"), + XML_L("entity declared in parameter entity"), + XML_L("requested feature requires XML_DTD support in Expat"), + XML_L("cannot change setting once parsing has begun"), + XML_L("unbound prefix"), + XML_L("must not undeclare prefix"), + XML_L("incomplete markup in parameter entity"), + XML_L("XML declaration not well-formed"), + XML_L("text declaration not well-formed"), + XML_L("illegal character(s) in public id"), + XML_L("parser suspended"), + XML_L("parser not suspended"), + XML_L("parsing aborted"), + XML_L("parsing finished"), + XML_L("cannot suspend in external parameter entity"), + XML_L("reserved prefix (xml) must not be undeclared or bound to another namespace name"), + XML_L("reserved prefix (xmlns) must not be declared or undeclared"), + XML_L("prefix must not be bound to one of the reserved namespace names") + }; + if (code > 0 && code < sizeof(message)/sizeof(message[0])) + return message[code]; + return NULL; +} + +const XML_LChar * XMLCALL +XML_ExpatVersion(void) { + + /* V1 is used to string-ize the version number. However, it would + string-ize the actual version macro *names* unless we get them + substituted before being passed to V1. CPP is defined to expand + a macro, then rescan for more expansions. Thus, we use V2 to expand + the version macros, then CPP will expand the resulting V1() macro + with the correct numerals. */ + /* ### I'm assuming cpp is portable in this respect... */ + +#define V1(a,b,c) XML_L(#a)XML_L(".")XML_L(#b)XML_L(".")XML_L(#c) +#define V2(a,b,c) XML_L("expat_")V1(a,b,c) + + return V2(XML_MAJOR_VERSION, XML_MINOR_VERSION, XML_MICRO_VERSION); + +#undef V1 +#undef V2 +} + +XML_Expat_Version XMLCALL +XML_ExpatVersionInfo(void) +{ + XML_Expat_Version version; + + version.major = XML_MAJOR_VERSION; + version.minor = XML_MINOR_VERSION; + version.micro = XML_MICRO_VERSION; + + return version; +} + +const XML_Feature * XMLCALL +XML_GetFeatureList(void) +{ + static const XML_Feature features[] = { + {XML_FEATURE_SIZEOF_XML_CHAR, XML_L("sizeof(XML_Char)"), + sizeof(XML_Char)}, + {XML_FEATURE_SIZEOF_XML_LCHAR, XML_L("sizeof(XML_LChar)"), + sizeof(XML_LChar)}, +#ifdef XML_UNICODE + {XML_FEATURE_UNICODE, XML_L("XML_UNICODE"), 0}, +#endif +#ifdef XML_UNICODE_WCHAR_T + {XML_FEATURE_UNICODE_WCHAR_T, XML_L("XML_UNICODE_WCHAR_T"), 0}, +#endif +#ifdef XML_DTD + {XML_FEATURE_DTD, XML_L("XML_DTD"), 0}, +#endif +#ifdef XML_CONTEXT_BYTES + {XML_FEATURE_CONTEXT_BYTES, XML_L("XML_CONTEXT_BYTES"), + XML_CONTEXT_BYTES}, +#endif +#ifdef XML_MIN_SIZE + {XML_FEATURE_MIN_SIZE, XML_L("XML_MIN_SIZE"), 0}, +#endif +#ifdef XML_NS + {XML_FEATURE_NS, XML_L("XML_NS"), 0}, +#endif +#ifdef XML_LARGE_SIZE + {XML_FEATURE_LARGE_SIZE, XML_L("XML_LARGE_SIZE"), 0}, +#endif +#ifdef XML_ATTR_INFO + {XML_FEATURE_ATTR_INFO, XML_L("XML_ATTR_INFO"), 0}, +#endif + {XML_FEATURE_END, NULL, 0} + }; + + return features; +} + +/* Initially tag->rawName always points into the parse buffer; + for those TAG instances opened while the current parse buffer was + processed, and not yet closed, we need to store tag->rawName in a more + permanent location, since the parse buffer is about to be discarded. +*/ +static XML_Bool +storeRawNames(XML_Parser parser) +{ + TAG *tag = tagStack; + while (tag) { + int bufSize; + int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1); + char *rawNameBuf = tag->buf + nameLen; + /* Stop if already stored. Since tagStack is a stack, we can stop + at the first entry that has already been copied; everything + below it in the stack is already been accounted for in a + previous call to this function. + */ + if (tag->rawName == rawNameBuf) + break; + /* For re-use purposes we need to ensure that the + size of tag->buf is a multiple of sizeof(XML_Char). + */ + bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)); + if (bufSize > tag->bufEnd - tag->buf) { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) + return XML_FALSE; + /* if tag->name.str points to tag->buf (only when namespace + processing is off) then we have to update it + */ + if (tag->name.str == (XML_Char *)tag->buf) + tag->name.str = (XML_Char *)temp; + /* if tag->name.localPart is set (when namespace processing is on) + then update it as well, since it will always point into tag->buf + */ + if (tag->name.localPart) + tag->name.localPart = (XML_Char *)temp + (tag->name.localPart - + (XML_Char *)tag->buf); + tag->buf = temp; + tag->bufEnd = temp + bufSize; + rawNameBuf = temp + nameLen; + } + memcpy(rawNameBuf, tag->rawName, tag->rawNameLength); + tag->rawName = rawNameBuf; + tag = tag->parent; + } + return XML_TRUE; +} + +static enum XML_Error PTRCALL +contentProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doContent(parser, 0, encoding, start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result == XML_ERROR_NONE) { + if (!storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + processor = externalEntityInitProcessor2; + return externalEntityInitProcessor2(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor2(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(encoding, start, end, &next); + switch (tok) { + case XML_TOK_BOM: + /* If we are at the end of the buffer, this would cause the next stage, + i.e. externalEntityInitProcessor3, to pass control directly to + doContent (by detecting XML_TOK_NONE) without processing any xml text + declaration - causing the error XML_ERROR_MISPLACED_XML_PI in doContent. + */ + if (next == end && !ps_finalBuffer) { + *endPtr = next; + return XML_ERROR_NONE; + } + start = next; + break; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + eventPtr = start; + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + eventPtr = start; + return XML_ERROR_PARTIAL_CHAR; + } + processor = externalEntityInitProcessor3; + return externalEntityInitProcessor3(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityInitProcessor3(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + int tok; + const char *next = start; /* XmlContentTok doesn't always set the last arg */ + eventPtr = start; + tok = XmlContentTok(encoding, start, end, &next); + eventEndPtr = next; + + switch (tok) { + case XML_TOK_XML_DECL: + { + enum XML_Error result; + result = processXmlDecl(parser, 1, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (ps_parsing) { + case XML_SUSPENDED: + *endPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + start = next; + } + } + break; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *endPtr = start; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + } + processor = externalEntityContentProcessor; + tagLevel = 1; + return externalEntityContentProcessor(parser, start, end, endPtr); +} + +static enum XML_Error PTRCALL +externalEntityContentProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doContent(parser, 1, encoding, start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result == XML_ERROR_NONE) { + if (!storeRawNames(parser)) + return XML_ERROR_NO_MEMORY; + } + return result; +} + +static enum XML_Error +doContent(XML_Parser parser, + int startTagLevel, + const ENCODING *enc, + const char *s, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + /* save one level of indirection */ + DTD * const dtd = _dtd; + + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + + for (;;) { + const char *next = s; /* XmlContentTok doesn't always set the last arg */ + int tok = XmlContentTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_TRAILING_CR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + *eventEndPP = end; + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) + return XML_ERROR_NO_ELEMENTS; + if (tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (startTagLevel > 0) { + if (tagLevel != startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_NO_ELEMENTS; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_ENTITY_REF: + { + const XML_Char *name; + ENTITY *entity; + XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (ch) { + if (characterDataHandler) + characterDataHandler(handlerArg, &ch, 1); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + name = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&dtd->pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity or default handler. + */ + if (!dtd->hasParamEntityRefs || dtd->standalone) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->notation) + return XML_ERROR_BINARY_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + if (!defaultExpandInternalEntities) { + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, entity->name, 0); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + result = processInternalEntity(parser, entity, XML_FALSE); + if (result != XML_ERROR_NONE) + return result; + } + else if (externalEntityRefHandler) { + const XML_Char *context; + entity->open = XML_TRUE; + context = getContext(parser); + entity->open = XML_FALSE; + if (!context) + return XML_ERROR_NO_MEMORY; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + context, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + poolDiscard(&tempPool); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + case XML_TOK_START_TAG_NO_ATTS: + /* fall through */ + case XML_TOK_START_TAG_WITH_ATTS: + { + TAG *tag; + enum XML_Error result; + XML_Char *toPtr; + if (freeTagList) { + tag = freeTagList; + freeTagList = freeTagList->parent; + } + else { + tag = (TAG *)MALLOC(sizeof(TAG)); + if (!tag) + return XML_ERROR_NO_MEMORY; + tag->buf = (char *)MALLOC(INIT_TAG_BUF_SIZE); + if (!tag->buf) { + FREE(tag); + return XML_ERROR_NO_MEMORY; + } + tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; + } + tag->bindings = NULL; + tag->parent = tagStack; + tagStack = tag; + tag->name.localPart = NULL; + tag->name.prefix = NULL; + tag->rawName = s + enc->minBytesPerChar; + tag->rawNameLength = XmlNameLength(enc, tag->rawName); + ++tagLevel; + { + const char *rawNameEnd = tag->rawName + tag->rawNameLength; + const char *fromPtr = tag->rawName; + toPtr = (XML_Char *)tag->buf; + for (;;) { + int bufSize; + int convLen; + XmlConvert(enc, + &fromPtr, rawNameEnd, + (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); + convLen = (int)(toPtr - (XML_Char *)tag->buf); + if (fromPtr == rawNameEnd) { + tag->name.strLen = convLen; + break; + } + bufSize = (int)(tag->bufEnd - tag->buf) << 1; + { + char *temp = (char *)REALLOC(tag->buf, bufSize); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + tag->buf = temp; + tag->bufEnd = temp + bufSize; + toPtr = (XML_Char *)temp + convLen; + } + } + } + tag->name.str = (XML_Char *)tag->buf; + *toPtr = XML_T('\0'); + result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); + if (result) + return result; + if (startElementHandler) + startElementHandler(handlerArg, tag->name.str, + (const XML_Char **)atts); + else if (defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&tempPool); + break; + } + case XML_TOK_EMPTY_ELEMENT_NO_ATTS: + /* fall through */ + case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: + { + const char *rawName = s + enc->minBytesPerChar; + enum XML_Error result; + BINDING *bindings = NULL; + XML_Bool noElmHandlers = XML_TRUE; + TAG_NAME name; + name.str = poolStoreString(&tempPool, enc, rawName, + rawName + XmlNameLength(enc, rawName)); + if (!name.str) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + result = storeAtts(parser, enc, s, &name, &bindings); + if (result) + return result; + poolFinish(&tempPool); + if (startElementHandler) { + startElementHandler(handlerArg, name.str, (const XML_Char **)atts); + noElmHandlers = XML_FALSE; + } + if (endElementHandler) { + if (startElementHandler) + *eventPP = *eventEndPP; + endElementHandler(handlerArg, name.str); + noElmHandlers = XML_FALSE; + } + if (noElmHandlers && defaultHandler) + reportDefault(parser, enc, s, next); + poolClear(&tempPool); + while (bindings) { + BINDING *b = bindings; + if (endNamespaceDeclHandler) + endNamespaceDeclHandler(handlerArg, b->prefix->name); + bindings = bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + } + if (tagLevel == 0) + return epilogProcessor(parser, next, end, nextPtr); + break; + case XML_TOK_END_TAG: + if (tagLevel == startTagLevel) + return XML_ERROR_ASYNC_ENTITY; + else { + int len; + const char *rawName; + TAG *tag = tagStack; + tagStack = tag->parent; + tag->parent = freeTagList; + freeTagList = tag; + rawName = s + enc->minBytesPerChar*2; + len = XmlNameLength(enc, rawName); + if (len != tag->rawNameLength + || memcmp(tag->rawName, rawName, len) != 0) { + *eventPP = rawName; + return XML_ERROR_TAG_MISMATCH; + } + --tagLevel; + if (endElementHandler) { + const XML_Char *localPart; + const XML_Char *prefix; + XML_Char *uri; + localPart = tag->name.localPart; + if (ns && localPart) { + /* localPart and prefix may have been overwritten in + tag->name.str, since this points to the binding->uri + buffer which gets re-used; so we have to add them again + */ + uri = (XML_Char *)tag->name.str + tag->name.uriLen; + /* don't need to check for space - already done in storeAtts() */ + while (*localPart) *uri++ = *localPart++; + prefix = (XML_Char *)tag->name.prefix; + if (ns_triplets && prefix) { + *uri++ = namespaceSeparator; + while (*prefix) *uri++ = *prefix++; + } + *uri = XML_T('\0'); + } + endElementHandler(handlerArg, tag->name.str); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + while (tag->bindings) { + BINDING *b = tag->bindings; + if (endNamespaceDeclHandler) + endNamespaceDeclHandler(handlerArg, b->prefix->name); + tag->bindings = tag->bindings->nextTagBinding; + b->nextTagBinding = freeBindingList; + freeBindingList = b; + b->prefix->binding = b->prevPrefixBinding; + } + if (tagLevel == 0) + return epilogProcessor(parser, next, end, nextPtr); + } + break; + case XML_TOK_CHAR_REF: + { + int n = XmlCharRefNumber(enc, s); + if (n < 0) + return XML_ERROR_BAD_CHAR_REF; + if (characterDataHandler) { + XML_Char buf[XML_ENCODE_MAX]; + characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + case XML_TOK_DATA_NEWLINE: + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_CDATA_SECT_OPEN: + { + enum XML_Error result; + if (startCdataSectionHandler) + startCdataSectionHandler(handlerArg); +#if 0 + /* Suppose you doing a transformation on a document that involves + changing only the character data. You set up a defaultHandler + and a characterDataHandler. The defaultHandler simply copies + characters through. The characterDataHandler does the + transformation and writes the characters out escaping them as + necessary. This case will fail to work if we leave out the + following two lines (because & and < inside CDATA sections will + be incorrectly escaped). + + However, now we have a start/endCdataSectionHandler, so it seems + easier to let the user deal with this. + */ + else if (characterDataHandler) + characterDataHandler(handlerArg, dataBuf, 0); +#endif + else if (defaultHandler) + reportDefault(parser, enc, s, next); + result = doCdataSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (!next) { + processor = cdataSectionProcessor; + return result; + } + } + break; + case XML_TOK_TRAILING_RSQB: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + if (characterDataHandler) { + if (MUST_CONVERT(enc, s)) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + characterDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + } + else + characterDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)end - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, end); + /* We are at the end of the final buffer, should we check for + XML_SUSPENDED, XML_FINISHED? + */ + if (startTagLevel == 0) { + *eventPP = end; + return XML_ERROR_NO_ELEMENTS; + } + if (tagLevel != startTagLevel) { + *eventPP = end; + return XML_ERROR_ASYNC_ENTITY; + } + *nextPtr = end; + return XML_ERROR_NONE; + case XML_TOK_DATA_CHARS: + { + XML_CharacterDataHandler charDataHandler = characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + if (s == next) + break; + *eventPP = s; + } + } + else + charDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_PI: + if (!reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (!reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + break; + default: + if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + } + *eventPP = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } + /* not reached */ +} + +/* Precondition: all arguments must be non-NULL; + Purpose: + - normalize attributes + - check attributes for well-formedness + - generate namespace aware attribute names (URI, prefix) + - build list of attributes for startElementHandler + - default attributes + - process namespace declarations (check and report them) + - generate namespace aware element name (URI, prefix) +*/ +static enum XML_Error +storeAtts(XML_Parser parser, const ENCODING *enc, + const char *attStr, TAG_NAME *tagNamePtr, + BINDING **bindingsPtr) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + ELEMENT_TYPE *elementType; + int nDefaultAtts; + const XML_Char **appAtts; /* the attribute list for the application */ + int attIndex = 0; + int prefixLen; + int i; + int n; + XML_Char *uri; + int nPrefixes = 0; + BINDING *binding; + const XML_Char *localPart; + + /* lookup the element type name */ + elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, tagNamePtr->str,0); + if (!elementType) { + const XML_Char *name = poolCopyString(&dtd->pool, tagNamePtr->str); + if (!name) + return XML_ERROR_NO_MEMORY; + elementType = (ELEMENT_TYPE *)lookup(parser, &dtd->elementTypes, name, + sizeof(ELEMENT_TYPE)); + if (!elementType) + return XML_ERROR_NO_MEMORY; + if (ns && !setElementTypePrefix(parser, elementType)) + return XML_ERROR_NO_MEMORY; + } + nDefaultAtts = elementType->nDefaultAtts; + + /* get the attributes from the tokenizer */ + n = XmlGetAttributes(enc, attStr, attsSize, atts); + if (n + nDefaultAtts > attsSize) { + int oldAttsSize = attsSize; + ATTRIBUTE *temp; +#ifdef XML_ATTR_INFO + XML_AttrInfo *temp2; +#endif + attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; + temp = (ATTRIBUTE *)REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + atts = temp; +#ifdef XML_ATTR_INFO + temp2 = (XML_AttrInfo *)REALLOC((void *)attInfo, attsSize * sizeof(XML_AttrInfo)); + if (temp2 == NULL) + return XML_ERROR_NO_MEMORY; + attInfo = temp2; +#endif + if (n > oldAttsSize) + XmlGetAttributes(enc, attStr, n, atts); + } + + appAtts = (const XML_Char **)atts; + for (i = 0; i < n; i++) { + ATTRIBUTE *currAtt = &atts[i]; +#ifdef XML_ATTR_INFO + XML_AttrInfo *currAttInfo = &attInfo[i]; +#endif + /* add the name and value to the attribute list */ + ATTRIBUTE_ID *attId = getAttributeId(parser, enc, currAtt->name, + currAtt->name + + XmlNameLength(enc, currAtt->name)); + if (!attId) + return XML_ERROR_NO_MEMORY; +#ifdef XML_ATTR_INFO + currAttInfo->nameStart = parseEndByteIndex - (parseEndPtr - currAtt->name); + currAttInfo->nameEnd = currAttInfo->nameStart + + XmlNameLength(enc, currAtt->name); + currAttInfo->valueStart = parseEndByteIndex - + (parseEndPtr - currAtt->valuePtr); + currAttInfo->valueEnd = parseEndByteIndex - (parseEndPtr - currAtt->valueEnd); +#endif + /* Detect duplicate attributes by their QNames. This does not work when + namespace processing is turned on and different prefixes for the same + namespace are used. For this case we have a check further down. + */ + if ((attId->name)[-1]) { + if (enc == encoding) + eventPtr = atts[i].name; + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + (attId->name)[-1] = 1; + appAtts[attIndex++] = attId->name; + if (!atts[i].normalized) { + enum XML_Error result; + XML_Bool isCdata = XML_TRUE; + + /* figure out whether declared as other than CDATA */ + if (attId->maybeTokenized) { + int j; + for (j = 0; j < nDefaultAtts; j++) { + if (attId == elementType->defaultAtts[j].id) { + isCdata = elementType->defaultAtts[j].isCdata; + break; + } + } + } + + /* normalize the attribute value */ + result = storeAttributeValue(parser, enc, isCdata, + atts[i].valuePtr, atts[i].valueEnd, + &tempPool); + if (result) + return result; + appAtts[attIndex] = poolStart(&tempPool); + poolFinish(&tempPool); + } + else { + /* the value did not need normalizing */ + appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, + atts[i].valueEnd); + if (appAtts[attIndex] == 0) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + } + /* handle prefixed attribute names */ + if (attId->prefix) { + if (attId->xmlns) { + /* deal with namespace declarations here */ + enum XML_Error result = addBinding(parser, attId->prefix, attId, + appAtts[attIndex], bindingsPtr); + if (result) + return result; + --attIndex; + } + else { + /* deal with other prefixed names later */ + attIndex++; + nPrefixes++; + (attId->name)[-1] = 2; + } + } + else + attIndex++; + } + + /* set-up for XML_GetSpecifiedAttributeCount and XML_GetIdAttributeIndex */ + nSpecifiedAtts = attIndex; + if (elementType->idAtt && (elementType->idAtt->name)[-1]) { + for (i = 0; i < attIndex; i += 2) + if (appAtts[i] == elementType->idAtt->name) { + idAttIndex = i; + break; + } + } + else + idAttIndex = -1; + + /* do attribute defaulting */ + for (i = 0; i < nDefaultAtts; i++) { + const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + i; + if (!(da->id->name)[-1] && da->value) { + if (da->id->prefix) { + if (da->id->xmlns) { + enum XML_Error result = addBinding(parser, da->id->prefix, da->id, + da->value, bindingsPtr); + if (result) + return result; + } + else { + (da->id->name)[-1] = 2; + nPrefixes++; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + else { + (da->id->name)[-1] = 1; + appAtts[attIndex++] = da->id->name; + appAtts[attIndex++] = da->value; + } + } + } + appAtts[attIndex] = 0; + + /* expand prefixed attribute names, check for duplicates, + and clear flags that say whether attributes were specified */ + i = 0; + if (nPrefixes) { + int j; /* hash table index */ + unsigned long version = nsAttsVersion; + int nsAttsSize = (int)1 << nsAttsPower; + /* size of hash table must be at least 2 * (# of prefixed attributes) */ + if ((nPrefixes << 1) >> nsAttsPower) { /* true for nsAttsPower = 0 */ + NS_ATT *temp; + /* hash table size must also be a power of 2 and >= 8 */ + while (nPrefixes >> nsAttsPower++); + if (nsAttsPower < 3) + nsAttsPower = 3; + nsAttsSize = (int)1 << nsAttsPower; + temp = (NS_ATT *)REALLOC(nsAtts, nsAttsSize * sizeof(NS_ATT)); + if (!temp) + return XML_ERROR_NO_MEMORY; + nsAtts = temp; + version = 0; /* force re-initialization of nsAtts hash table */ + } + /* using a version flag saves us from initializing nsAtts every time */ + if (!version) { /* initialize version flags when version wraps around */ + version = INIT_ATTS_VERSION; + for (j = nsAttsSize; j != 0; ) + nsAtts[--j].version = version; + } + nsAttsVersion = --version; + + /* expand prefixed names and check for duplicates */ + for (; i < attIndex; i += 2) { + const XML_Char *s = appAtts[i]; + if (s[-1] == 2) { /* prefixed */ + ATTRIBUTE_ID *id; + const BINDING *b; + unsigned long uriHash = hash_secret_salt; + ((XML_Char *)s)[-1] = 0; /* clear flag */ + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, s, 0); + if (!id || !id->prefix) + return XML_ERROR_NO_MEMORY; + b = id->prefix->binding; + if (!b) + return XML_ERROR_UNBOUND_PREFIX; + + /* as we expand the name we also calculate its hash value */ + for (j = 0; j < b->uriLen; j++) { + const XML_Char c = b->uri[j]; + if (!poolAppendChar(&tempPool, c)) + return XML_ERROR_NO_MEMORY; + uriHash = CHAR_HASH(uriHash, c); + } + while (*s++ != XML_T(ASCII_COLON)) + ; + do { /* copies null terminator */ + const XML_Char c = *s; + if (!poolAppendChar(&tempPool, *s)) + return XML_ERROR_NO_MEMORY; + uriHash = CHAR_HASH(uriHash, c); + } while (*s++); + + { /* Check hash table for duplicate of expanded name (uriName). + Derived from code in lookup(parser, HASH_TABLE *table, ...). + */ + unsigned char step = 0; + unsigned long mask = nsAttsSize - 1; + j = uriHash & mask; /* index into hash table */ + while (nsAtts[j].version == version) { + /* for speed we compare stored hash values first */ + if (uriHash == nsAtts[j].hash) { + const XML_Char *s1 = poolStart(&tempPool); + const XML_Char *s2 = nsAtts[j].uriName; + /* s1 is null terminated, but not s2 */ + for (; *s1 == *s2 && *s1 != 0; s1++, s2++); + if (*s1 == 0) + return XML_ERROR_DUPLICATE_ATTRIBUTE; + } + if (!step) + step = PROBE_STEP(uriHash, mask, nsAttsPower); + j < step ? (j += nsAttsSize - step) : (j -= step); + } + } + + if (ns_triplets) { /* append namespace separator and prefix */ + tempPool.ptr[-1] = namespaceSeparator; + s = b->prefix->name; + do { + if (!poolAppendChar(&tempPool, *s)) + return XML_ERROR_NO_MEMORY; + } while (*s++); + } + + /* store expanded name in attribute list */ + s = poolStart(&tempPool); + poolFinish(&tempPool); + appAtts[i] = s; + + /* fill empty slot with new version, uriName and hash value */ + nsAtts[j].version = version; + nsAtts[j].hash = uriHash; + nsAtts[j].uriName = s; + + if (!--nPrefixes) { + i += 2; + break; + } + } + else /* not prefixed */ + ((XML_Char *)s)[-1] = 0; /* clear flag */ + } + } + /* clear flags for the remaining attributes */ + for (; i < attIndex; i += 2) + ((XML_Char *)(appAtts[i]))[-1] = 0; + for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) + binding->attId->name[-1] = 0; + + if (!ns) + return XML_ERROR_NONE; + + /* expand the element type name */ + if (elementType->prefix) { + binding = elementType->prefix->binding; + if (!binding) + return XML_ERROR_UNBOUND_PREFIX; + localPart = tagNamePtr->str; + while (*localPart++ != XML_T(ASCII_COLON)) + ; + } + else if (dtd->defaultPrefix.binding) { + binding = dtd->defaultPrefix.binding; + localPart = tagNamePtr->str; + } + else + return XML_ERROR_NONE; + prefixLen = 0; + if (ns_triplets && binding->prefix->name) { + for (; binding->prefix->name[prefixLen++];) + ; /* prefixLen includes null terminator */ + } + tagNamePtr->localPart = localPart; + tagNamePtr->uriLen = binding->uriLen; + tagNamePtr->prefix = binding->prefix->name; + tagNamePtr->prefixLen = prefixLen; + for (i = 0; localPart[i++];) + ; /* i includes null terminator */ + n = i + binding->uriLen + prefixLen; + if (n > binding->uriAlloc) { + TAG *p; + uri = (XML_Char *)MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); + if (!uri) + return XML_ERROR_NO_MEMORY; + binding->uriAlloc = n + EXPAND_SPARE; + memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); + for (p = tagStack; p; p = p->parent) + if (p->name.str == binding->uri) + p->name.str = uri; + FREE(binding->uri); + binding->uri = uri; + } + /* if namespaceSeparator != '\0' then uri includes it already */ + uri = binding->uri + binding->uriLen; + memcpy(uri, localPart, i * sizeof(XML_Char)); + /* we always have a namespace separator between localPart and prefix */ + if (prefixLen) { + uri += i - 1; + *uri = namespaceSeparator; /* replace null terminator */ + memcpy(uri + 1, binding->prefix->name, prefixLen * sizeof(XML_Char)); + } + tagNamePtr->str = binding->uri; + return XML_ERROR_NONE; +} + +/* addBinding() overwrites the value of prefix->binding without checking. + Therefore one must keep track of the old value outside of addBinding(). +*/ +static enum XML_Error +addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, + const XML_Char *uri, BINDING **bindingsPtr) +{ + static const XML_Char xmlNamespace[] = { + ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, + ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, + ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_X, ASCII_M, ASCII_L, + ASCII_SLASH, ASCII_1, ASCII_9, ASCII_9, ASCII_8, ASCII_SLASH, + ASCII_n, ASCII_a, ASCII_m, ASCII_e, ASCII_s, ASCII_p, ASCII_a, ASCII_c, + ASCII_e, '\0' + }; + static const int xmlLen = + (int)sizeof(xmlNamespace)/sizeof(XML_Char) - 1; + static const XML_Char xmlnsNamespace[] = { + ASCII_h, ASCII_t, ASCII_t, ASCII_p, ASCII_COLON, ASCII_SLASH, ASCII_SLASH, + ASCII_w, ASCII_w, ASCII_w, ASCII_PERIOD, ASCII_w, ASCII_3, ASCII_PERIOD, + ASCII_o, ASCII_r, ASCII_g, ASCII_SLASH, ASCII_2, ASCII_0, ASCII_0, + ASCII_0, ASCII_SLASH, ASCII_x, ASCII_m, ASCII_l, ASCII_n, ASCII_s, + ASCII_SLASH, '\0' + }; + static const int xmlnsLen = + (int)sizeof(xmlnsNamespace)/sizeof(XML_Char) - 1; + + XML_Bool mustBeXML = XML_FALSE; + XML_Bool isXML = XML_TRUE; + XML_Bool isXMLNS = XML_TRUE; + + BINDING *b; + int len; + + /* empty URI is only valid for default namespace per XML NS 1.0 (not 1.1) */ + if (*uri == XML_T('\0') && prefix->name) + return XML_ERROR_UNDECLARING_PREFIX; + + if (prefix->name + && prefix->name[0] == XML_T(ASCII_x) + && prefix->name[1] == XML_T(ASCII_m) + && prefix->name[2] == XML_T(ASCII_l)) { + + /* Not allowed to bind xmlns */ + if (prefix->name[3] == XML_T(ASCII_n) + && prefix->name[4] == XML_T(ASCII_s) + && prefix->name[5] == XML_T('\0')) + return XML_ERROR_RESERVED_PREFIX_XMLNS; + + if (prefix->name[3] == XML_T('\0')) + mustBeXML = XML_TRUE; + } + + for (len = 0; uri[len]; len++) { + if (isXML && (len > xmlLen || uri[len] != xmlNamespace[len])) + isXML = XML_FALSE; + + if (!mustBeXML && isXMLNS + && (len > xmlnsLen || uri[len] != xmlnsNamespace[len])) + isXMLNS = XML_FALSE; + } + isXML = isXML && len == xmlLen; + isXMLNS = isXMLNS && len == xmlnsLen; + + if (mustBeXML != isXML) + return mustBeXML ? XML_ERROR_RESERVED_PREFIX_XML + : XML_ERROR_RESERVED_NAMESPACE_URI; + + if (isXMLNS) + return XML_ERROR_RESERVED_NAMESPACE_URI; + + if (namespaceSeparator) + len++; + if (freeBindingList) { + b = freeBindingList; + if (len > b->uriAlloc) { + XML_Char *temp = (XML_Char *)REALLOC(b->uri, + sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + b->uri = temp; + b->uriAlloc = len + EXPAND_SPARE; + } + freeBindingList = b->nextTagBinding; + } + else { + b = (BINDING *)MALLOC(sizeof(BINDING)); + if (!b) + return XML_ERROR_NO_MEMORY; + b->uri = (XML_Char *)MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); + if (!b->uri) { + FREE(b); + return XML_ERROR_NO_MEMORY; + } + b->uriAlloc = len + EXPAND_SPARE; + } + b->uriLen = len; + memcpy(b->uri, uri, len * sizeof(XML_Char)); + if (namespaceSeparator) + b->uri[len - 1] = namespaceSeparator; + b->prefix = prefix; + b->attId = attId; + b->prevPrefixBinding = prefix->binding; + /* NULL binding when default namespace undeclared */ + if (*uri == XML_T('\0') && prefix == &_dtd->defaultPrefix) + prefix->binding = NULL; + else + prefix->binding = b; + b->nextTagBinding = *bindingsPtr; + *bindingsPtr = b; + /* if attId == NULL then we are not starting a namespace scope */ + if (attId && startNamespaceDeclHandler) + startNamespaceDeclHandler(handlerArg, prefix->name, + prefix->binding ? uri : 0); + return XML_ERROR_NONE; +} + +/* The idea here is to avoid using stack for each CDATA section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +cdataSectionProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doCdataSection(parser, encoding, &start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + if (parentParser) { /* we are parsing an external entity */ + processor = externalEntityContentProcessor; + return externalEntityContentProcessor(parser, start, end, endPtr); + } + else { + processor = contentProcessor; + return contentProcessor(parser, start, end, endPtr); + } + } + return result; +} + +/* startPtr gets set to non-null if the section is closed, and to null if + the section is not yet closed. +*/ +static enum XML_Error +doCdataSection(XML_Parser parser, + const ENCODING *enc, + const char **startPtr, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + *eventPP = s; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + + for (;;) { + const char *next; + int tok = XmlCdataSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_CDATA_SECT_CLOSE: + if (endCdataSectionHandler) + endCdataSectionHandler(handlerArg); +#if 0 + /* see comment under XML_TOK_CDATA_SECT_OPEN */ + else if (characterDataHandler) + characterDataHandler(handlerArg, dataBuf, 0); +#endif + else if (defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_DATA_NEWLINE: + if (characterDataHandler) { + XML_Char c = 0xA; + characterDataHandler(handlerArg, &c, 1); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + break; + case XML_TOK_DATA_CHARS: + { + XML_CharacterDataHandler charDataHandler = characterDataHandler; + if (charDataHandler) { + if (MUST_CONVERT(enc, s)) { + for (;;) { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = next; + charDataHandler(handlerArg, dataBuf, + (int)(dataPtr - (ICHAR *)dataBuf)); + if (s == next) + break; + *eventPP = s; + } + } + else + charDataHandler(handlerArg, + (XML_Char *)s, + (int)((XML_Char *)next - (XML_Char *)s)); + } + else if (defaultHandler) + reportDefault(parser, enc, s, next); + } + break; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_CDATA_SECTION; + default: + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + } + + *eventPP = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } + /* not reached */ +} + +#ifdef XML_DTD + +/* The idea here is to avoid using stack for each IGNORE section when + the whole file is parsed with one call. +*/ +static enum XML_Error PTRCALL +ignoreSectionProcessor(XML_Parser parser, + const char *start, + const char *end, + const char **endPtr) +{ + enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, + endPtr, (XML_Bool)!ps_finalBuffer); + if (result != XML_ERROR_NONE) + return result; + if (start) { + processor = prologProcessor; + return prologProcessor(parser, start, end, endPtr); + } + return result; +} + +/* startPtr gets set to non-null is the section is closed, and to null + if the section is not yet closed. +*/ +static enum XML_Error +doIgnoreSection(XML_Parser parser, + const ENCODING *enc, + const char **startPtr, + const char *end, + const char **nextPtr, + XML_Bool haveMore) +{ + const char *next; + int tok; + const char *s = *startPtr; + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + *eventPP = s; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + *eventPP = s; + *startPtr = NULL; + tok = XmlIgnoreSectionTok(enc, s, end, &next); + *eventEndPP = next; + switch (tok) { + case XML_TOK_IGNORE_SECT: + if (defaultHandler) + reportDefault(parser, enc, s, next); + *startPtr = next; + *nextPtr = next; + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + else + return XML_ERROR_NONE; + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_PARTIAL: + case XML_TOK_NONE: + if (haveMore) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ + default: + *eventPP = next; + return XML_ERROR_UNEXPECTED_STATE; + } + /* not reached */ +} + +#endif /* XML_DTD */ + +static enum XML_Error +initializeEncoding(XML_Parser parser) +{ + const char *s; +#ifdef XML_UNICODE + char encodingBuf[128]; + if (!protocolEncodingName) + s = NULL; + else { + int i; + for (i = 0; protocolEncodingName[i]; i++) { + if (i == sizeof(encodingBuf) - 1 + || (protocolEncodingName[i] & ~0x7f) != 0) { + encodingBuf[0] = '\0'; + break; + } + encodingBuf[i] = (char)protocolEncodingName[i]; + } + encodingBuf[i] = '\0'; + s = encodingBuf; + } +#else + s = protocolEncodingName; +#endif + if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) + return XML_ERROR_NONE; + return handleUnknownEncoding(parser, protocolEncodingName); +} + +static enum XML_Error +processXmlDecl(XML_Parser parser, int isGeneralTextEntity, + const char *s, const char *next) +{ + const char *encodingName = NULL; + const XML_Char *storedEncName = NULL; + const ENCODING *newEncoding = NULL; + const char *version = NULL; + const char *versionend; + const XML_Char *storedversion = NULL; + int standalone = -1; + if (!(ns + ? XmlParseXmlDeclNS + : XmlParseXmlDecl)(isGeneralTextEntity, + encoding, + s, + next, + &eventPtr, + &version, + &versionend, + &encodingName, + &newEncoding, + &standalone)) { + if (isGeneralTextEntity) + return XML_ERROR_TEXT_DECL; + else + return XML_ERROR_XML_DECL; + } + if (!isGeneralTextEntity && standalone == 1) { + _dtd->standalone = XML_TRUE; +#ifdef XML_DTD + if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) + paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; +#endif /* XML_DTD */ + } + if (xmlDeclHandler) { + if (encodingName != NULL) { + storedEncName = poolStoreString(&temp2Pool, + encoding, + encodingName, + encodingName + + XmlNameLength(encoding, encodingName)); + if (!storedEncName) + return XML_ERROR_NO_MEMORY; + poolFinish(&temp2Pool); + } + if (version) { + storedversion = poolStoreString(&temp2Pool, + encoding, + version, + versionend - encoding->minBytesPerChar); + if (!storedversion) + return XML_ERROR_NO_MEMORY; + } + xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); + } + else if (defaultHandler) + reportDefault(parser, encoding, s, next); + if (protocolEncodingName == NULL) { + if (newEncoding) { + if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { + eventPtr = encodingName; + return XML_ERROR_INCORRECT_ENCODING; + } + encoding = newEncoding; + } + else if (encodingName) { + enum XML_Error result; + if (!storedEncName) { + storedEncName = poolStoreString( + &temp2Pool, encoding, encodingName, + encodingName + XmlNameLength(encoding, encodingName)); + if (!storedEncName) + return XML_ERROR_NO_MEMORY; + } + result = handleUnknownEncoding(parser, storedEncName); + poolClear(&temp2Pool); + if (result == XML_ERROR_UNKNOWN_ENCODING) + eventPtr = encodingName; + return result; + } + } + + if (storedEncName || storedversion) + poolClear(&temp2Pool); + + return XML_ERROR_NONE; +} + +static enum XML_Error +handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) +{ + if (unknownEncodingHandler) { + XML_Encoding info; + int i; + for (i = 0; i < 256; i++) + info.map[i] = -1; + info.convert = NULL; + info.data = NULL; + info.release = NULL; + if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, + &info)) { + ENCODING *enc; + unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); + if (!unknownEncodingMem) { + if (info.release) + info.release(info.data); + return XML_ERROR_NO_MEMORY; + } + enc = (ns + ? XmlInitUnknownEncodingNS + : XmlInitUnknownEncoding)(unknownEncodingMem, + info.map, + info.convert, + info.data); + if (enc) { + unknownEncodingData = info.data; + unknownEncodingRelease = info.release; + encoding = enc; + return XML_ERROR_NONE; + } + } + if (info.release != NULL) + info.release(info.data); + } + return XML_ERROR_UNKNOWN_ENCODING; +} + +static enum XML_Error PTRCALL +prologInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + processor = prologProcessor; + return prologProcessor(parser, s, end, nextPtr); +} + +#ifdef XML_DTD + +static enum XML_Error PTRCALL +externalParEntInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + enum XML_Error result = initializeEncoding(parser); + if (result != XML_ERROR_NONE) + return result; + + /* we know now that XML_Parse(Buffer) has been called, + so we consider the external parameter entity read */ + _dtd->paramEntityRead = XML_TRUE; + + if (prologState.inEntityValue) { + processor = entityValueInitProcessor; + return entityValueInitProcessor(parser, s, end, nextPtr); + } + else { + processor = externalParEntProcessor; + return externalParEntProcessor(parser, s, end, nextPtr); + } +} + +static enum XML_Error PTRCALL +entityValueInitProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + int tok; + const char *start = s; + const char *next = start; + eventPtr = start; + + for (;;) { + tok = XmlPrologTok(encoding, start, end, &next); + eventEndPtr = next; + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, encoding, s, end); + } + else if (tok == XML_TOK_XML_DECL) { + enum XML_Error result; + result = processXmlDecl(parser, 0, start, next); + if (result != XML_ERROR_NONE) + return result; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + *nextPtr = next; + } + /* stop scanning for text declaration - we found one */ + processor = entityValueProcessor; + return entityValueProcessor(parser, next, end, nextPtr); + } + /* If we are at the end of the buffer, this would cause XmlPrologTok to + return XML_TOK_NONE on the next call, which would then cause the + function to exit with *nextPtr set to s - that is what we want for other + tokens, but not for the BOM - we would rather like to skip it; + then, when this routine is entered the next time, XmlPrologTok will + return XML_TOK_INVALID, since the BOM is still in the buffer + */ + else if (tok == XML_TOK_BOM && next == end && !ps_finalBuffer) { + *nextPtr = next; + return XML_ERROR_NONE; + } + start = next; + eventPtr = start; + } +} + +static enum XML_Error PTRCALL +externalParEntProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *next = s; + int tok; + + tok = XmlPrologTok(encoding, s, end, &next); + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + } + /* This would cause the next stage, i.e. doProlog to be passed XML_TOK_BOM. + However, when parsing an external subset, doProlog will not accept a BOM + as valid, and report a syntax error, so we have to skip the BOM + */ + else if (tok == XML_TOK_BOM) { + s = next; + tok = XmlPrologTok(encoding, s, end, &next); + } + + processor = prologProcessor; + return doProlog(parser, encoding, s, end, tok, next, + nextPtr, (XML_Bool)!ps_finalBuffer); +} + +static enum XML_Error PTRCALL +entityValueProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *start = s; + const char *next = s; + const ENCODING *enc = encoding; + int tok; + + for (;;) { + tok = XmlPrologTok(enc, start, end, &next); + if (tok <= 0) { + if (!ps_finalBuffer && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case XML_TOK_NONE: /* start == end */ + default: + break; + } + /* found end of entity value - can store it now */ + return storeEntityValue(parser, enc, s, end); + } + start = next; + } +} + +#endif /* XML_DTD */ + +static enum XML_Error PTRCALL +prologProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + const char *next = s; + int tok = XmlPrologTok(encoding, s, end, &next); + return doProlog(parser, encoding, s, end, tok, next, + nextPtr, (XML_Bool)!ps_finalBuffer); +} + +static enum XML_Error +doProlog(XML_Parser parser, + const ENCODING *enc, + const char *s, + const char *end, + int tok, + const char *next, + const char **nextPtr, + XML_Bool haveMore) +{ +#ifdef XML_DTD + static const XML_Char externalSubsetName[] = { ASCII_HASH , '\0' }; +#endif /* XML_DTD */ + static const XML_Char atypeCDATA[] = + { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; + static const XML_Char atypeID[] = { ASCII_I, ASCII_D, '\0' }; + static const XML_Char atypeIDREF[] = + { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; + static const XML_Char atypeIDREFS[] = + { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; + static const XML_Char atypeENTITY[] = + { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; + static const XML_Char atypeENTITIES[] = { ASCII_E, ASCII_N, + ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; + static const XML_Char atypeNMTOKEN[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; + static const XML_Char atypeNMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, + ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; + static const XML_Char notationPrefix[] = { ASCII_N, ASCII_O, ASCII_T, + ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, ASCII_LPAREN, '\0' }; + static const XML_Char enumValueSep[] = { ASCII_PIPE, '\0' }; + static const XML_Char enumValueStart[] = { ASCII_LPAREN, '\0' }; + + /* save one level of indirection */ + DTD * const dtd = _dtd; + + const char **eventPP; + const char **eventEndPP; + enum XML_Content_Quant quant; + + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + + for (;;) { + int role; + XML_Bool handleDefault = XML_TRUE; + *eventPP = s; + *eventEndPP = next; + if (tok <= 0) { + if (haveMore && tok != XML_TOK_INVALID) { + *nextPtr = s; + return XML_ERROR_NONE; + } + switch (tok) { + case XML_TOK_INVALID: + *eventPP = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + return XML_ERROR_PARTIAL_CHAR; + case -XML_TOK_PROLOG_S: + tok = -tok; + break; + case XML_TOK_NONE: +#ifdef XML_DTD + /* for internal PE NOT referenced between declarations */ + if (enc != encoding && !openInternalEntities->betweenDecl) { + *nextPtr = s; + return XML_ERROR_NONE; + } + /* WFC: PE Between Declarations - must check that PE contains + complete markup, not only for external PEs, but also for + internal PEs if the reference occurs between declarations. + */ + if (isParamEntity || enc != encoding) { + if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) + == XML_ROLE_ERROR) + return XML_ERROR_INCOMPLETE_PE; + *nextPtr = s; + return XML_ERROR_NONE; + } +#endif /* XML_DTD */ + return XML_ERROR_NO_ELEMENTS; + default: + tok = -tok; + next = end; + break; + } + } + role = XmlTokenRole(&prologState, tok, s, next, enc); + switch (role) { + case XML_ROLE_XML_DECL: + { + enum XML_Error result = processXmlDecl(parser, 0, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = encoding; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_NAME: + if (startDoctypeDeclHandler) { + doctypeName = poolStoreString(&tempPool, enc, s, next); + if (!doctypeName) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + doctypePubid = NULL; + handleDefault = XML_FALSE; + } + doctypeSysid = NULL; /* always initialize to NULL */ + break; + case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: + if (startDoctypeDeclHandler) { + startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, + doctypePubid, 1); + doctypeName = NULL; + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + break; +#ifdef XML_DTD + case XML_ROLE_TEXT_DECL: + { + enum XML_Error result = processXmlDecl(parser, 1, s, next); + if (result != XML_ERROR_NONE) + return result; + enc = encoding; + handleDefault = XML_FALSE; + } + break; +#endif /* XML_DTD */ + case XML_ROLE_DOCTYPE_PUBLIC_ID: +#ifdef XML_DTD + useForeignDTD = XML_FALSE; + declEntity = (ENTITY *)lookup(parser, + &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (startDoctypeDeclHandler) { + XML_Char *pubId; + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + pubId = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!pubId) + return XML_ERROR_NO_MEMORY; + normalizePublicId(pubId); + poolFinish(&tempPool); + doctypePubid = pubId; + handleDefault = XML_FALSE; + goto alreadyChecked; + } + /* fall through */ + case XML_ROLE_ENTITY_PUBLIC_ID: + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + alreadyChecked: + if (dtd->keepProcessing && declEntity) { + XML_Char *tem = poolStoreString(&dtd->pool, + enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + declEntity->publicId = tem; + poolFinish(&dtd->pool); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_DOCTYPE_CLOSE: + if (doctypeName) { + startDoctypeDeclHandler(handlerArg, doctypeName, + doctypeSysid, doctypePubid, 0); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + /* doctypeSysid will be non-NULL in the case of a previous + XML_ROLE_DOCTYPE_SYSTEM_ID, even if startDoctypeDeclHandler + was not set, indicating an external subset + */ +#ifdef XML_DTD + if (doctypeSysid || useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (paramEntityParsing && externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, + &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!entity) + return XML_ERROR_NO_MEMORY; + if (useForeignDTD) + entity->base = curBase; + dtd->paramEntityRead = XML_FALSE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else if (!doctypeSysid) + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + useForeignDTD = XML_FALSE; + } +#endif /* XML_DTD */ + if (endDoctypeDeclHandler) { + endDoctypeDeclHandler(handlerArg); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_INSTANCE_START: +#ifdef XML_DTD + /* if there is no DOCTYPE declaration then now is the + last chance to read the foreign DTD + */ + if (useForeignDTD) { + XML_Bool hadParamEntityRefs = dtd->hasParamEntityRefs; + dtd->hasParamEntityRefs = XML_TRUE; + if (paramEntityParsing && externalEntityRefHandler) { + ENTITY *entity = (ENTITY *)lookup(parser, &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!entity) + return XML_ERROR_NO_MEMORY; + entity->base = curBase; + dtd->paramEntityRead = XML_FALSE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + if (dtd->paramEntityRead) { + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + } + /* if we didn't read the foreign DTD then this means that there + is no external subset and we must reset dtd->hasParamEntityRefs + */ + else + dtd->hasParamEntityRefs = hadParamEntityRefs; + /* end of DTD - no need to update dtd->keepProcessing */ + } + } +#endif /* XML_DTD */ + processor = contentProcessor; + return contentProcessor(parser, s, end, nextPtr); + case XML_ROLE_ATTLIST_ELEMENT_NAME: + declElementType = getElementType(parser, enc, s, next); + if (!declElementType) + return XML_ERROR_NO_MEMORY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_NAME: + declAttributeId = getAttributeId(parser, enc, s, next); + if (!declAttributeId) + return XML_ERROR_NO_MEMORY; + declAttributeIsCdata = XML_FALSE; + declAttributeType = NULL; + declAttributeIsId = XML_FALSE; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_CDATA: + declAttributeIsCdata = XML_TRUE; + declAttributeType = atypeCDATA; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ID: + declAttributeIsId = XML_TRUE; + declAttributeType = atypeID; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREF: + declAttributeType = atypeIDREF; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: + declAttributeType = atypeIDREFS; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: + declAttributeType = atypeENTITY; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: + declAttributeType = atypeENTITIES; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: + declAttributeType = atypeNMTOKEN; + goto checkAttListDeclHandler; + case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: + declAttributeType = atypeNMTOKENS; + checkAttListDeclHandler: + if (dtd->keepProcessing && attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTRIBUTE_ENUM_VALUE: + case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: + if (dtd->keepProcessing && attlistDeclHandler) { + const XML_Char *prefix; + if (declAttributeType) { + prefix = enumValueSep; + } + else { + prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE + ? notationPrefix + : enumValueStart); + } + if (!poolAppendString(&tempPool, prefix)) + return XML_ERROR_NO_MEMORY; + if (!poolAppend(&tempPool, enc, s, next)) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: + case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + if (!defineAttribute(declElementType, declAttributeId, + declAttributeIsCdata, declAttributeIsId, + 0, parser)) + return XML_ERROR_NO_MEMORY; + if (attlistDeclHandler && declAttributeType) { + if (*declAttributeType == XML_T(ASCII_LPAREN) + || (*declAttributeType == XML_T(ASCII_N) + && declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) + || !poolAppendChar(&tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + poolFinish(&tempPool); + } + *eventEndPP = s; + attlistDeclHandler(handlerArg, declElementType->name, + declAttributeId->name, declAttributeType, + 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: + case XML_ROLE_FIXED_ATTRIBUTE_VALUE: + if (dtd->keepProcessing) { + const XML_Char *attVal; + enum XML_Error result = + storeAttributeValue(parser, enc, declAttributeIsCdata, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar, + &dtd->pool); + if (result) + return result; + attVal = poolStart(&dtd->pool); + poolFinish(&dtd->pool); + /* ID attributes aren't allowed to have a default */ + if (!defineAttribute(declElementType, declAttributeId, + declAttributeIsCdata, XML_FALSE, attVal, parser)) + return XML_ERROR_NO_MEMORY; + if (attlistDeclHandler && declAttributeType) { + if (*declAttributeType == XML_T(ASCII_LPAREN) + || (*declAttributeType == XML_T(ASCII_N) + && declAttributeType[1] == XML_T(ASCII_O))) { + /* Enumerated or Notation type */ + if (!poolAppendChar(&tempPool, XML_T(ASCII_RPAREN)) + || !poolAppendChar(&tempPool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + declAttributeType = tempPool.start; + poolFinish(&tempPool); + } + *eventEndPP = s; + attlistDeclHandler(handlerArg, declElementType->name, + declAttributeId->name, declAttributeType, + attVal, + role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); + poolClear(&tempPool); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_ENTITY_VALUE: + if (dtd->keepProcessing) { + enum XML_Error result = storeEntityValue(parser, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (declEntity) { + declEntity->textPtr = poolStart(&dtd->entityValuePool); + declEntity->textLen = (int)(poolLength(&dtd->entityValuePool)); + poolFinish(&dtd->entityValuePool); + if (entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + declEntity->is_param, + declEntity->textPtr, + declEntity->textLen, + curBase, 0, 0, 0); + handleDefault = XML_FALSE; + } + } + else + poolDiscard(&dtd->entityValuePool); + if (result != XML_ERROR_NONE) + return result; + } + break; + case XML_ROLE_DOCTYPE_SYSTEM_ID: +#ifdef XML_DTD + useForeignDTD = XML_FALSE; +#endif /* XML_DTD */ + dtd->hasParamEntityRefs = XML_TRUE; + if (startDoctypeDeclHandler) { + doctypeSysid = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (doctypeSysid == NULL) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } +#ifdef XML_DTD + else + /* use externalSubsetName to make doctypeSysid non-NULL + for the case where no startDoctypeDeclHandler is set */ + doctypeSysid = externalSubsetName; +#endif /* XML_DTD */ + if (!dtd->standalone +#ifdef XML_DTD + && !paramEntityParsing +#endif /* XML_DTD */ + && notStandaloneHandler + && !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; +#ifndef XML_DTD + break; +#else /* XML_DTD */ + if (!declEntity) { + declEntity = (ENTITY *)lookup(parser, + &dtd->paramEntities, + externalSubsetName, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + declEntity->publicId = NULL; + } + /* fall through */ +#endif /* XML_DTD */ + case XML_ROLE_ENTITY_SYSTEM_ID: + if (dtd->keepProcessing && declEntity) { + declEntity->systemId = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!declEntity->systemId) + return XML_ERROR_NO_MEMORY; + declEntity->base = curBase; + poolFinish(&dtd->pool); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_COMPLETE: + if (dtd->keepProcessing && declEntity && entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + declEntity->is_param, + 0,0, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + 0); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_ENTITY_NOTATION_NAME: + if (dtd->keepProcessing && declEntity) { + declEntity->notation = poolStoreString(&dtd->pool, enc, s, next); + if (!declEntity->notation) + return XML_ERROR_NO_MEMORY; + poolFinish(&dtd->pool); + if (unparsedEntityDeclHandler) { + *eventEndPP = s; + unparsedEntityDeclHandler(handlerArg, + declEntity->name, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + declEntity->notation); + handleDefault = XML_FALSE; + } + else if (entityDeclHandler) { + *eventEndPP = s; + entityDeclHandler(handlerArg, + declEntity->name, + 0,0,0, + declEntity->base, + declEntity->systemId, + declEntity->publicId, + declEntity->notation); + handleDefault = XML_FALSE; + } + } + break; + case XML_ROLE_GENERAL_ENTITY_NAME: + { + if (XmlPredefinedEntityName(enc, s, next)) { + declEntity = NULL; + break; + } + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (!name) + return XML_ERROR_NO_MEMORY; + declEntity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, + sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + if (declEntity->name != name) { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + else { + poolFinish(&dtd->pool); + declEntity->publicId = NULL; + declEntity->is_param = XML_FALSE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + declEntity->is_internal = !(parentParser || openInternalEntities); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + } + else { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + } + break; + case XML_ROLE_PARAM_ENTITY_NAME: +#ifdef XML_DTD + if (dtd->keepProcessing) { + const XML_Char *name = poolStoreString(&dtd->pool, enc, s, next); + if (!name) + return XML_ERROR_NO_MEMORY; + declEntity = (ENTITY *)lookup(parser, &dtd->paramEntities, + name, sizeof(ENTITY)); + if (!declEntity) + return XML_ERROR_NO_MEMORY; + if (declEntity->name != name) { + poolDiscard(&dtd->pool); + declEntity = NULL; + } + else { + poolFinish(&dtd->pool); + declEntity->publicId = NULL; + declEntity->is_param = XML_TRUE; + /* if we have a parent parser or are reading an internal parameter + entity, then the entity declaration is not considered "internal" + */ + declEntity->is_internal = !(parentParser || openInternalEntities); + if (entityDeclHandler) + handleDefault = XML_FALSE; + } + } + else { + poolDiscard(&dtd->pool); + declEntity = NULL; + } +#else /* not XML_DTD */ + declEntity = NULL; +#endif /* XML_DTD */ + break; + case XML_ROLE_NOTATION_NAME: + declNotationPublicId = NULL; + declNotationName = NULL; + if (notationDeclHandler) { + declNotationName = poolStoreString(&tempPool, enc, s, next); + if (!declNotationName) + return XML_ERROR_NO_MEMORY; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_PUBLIC_ID: + if (!XmlIsPublicId(enc, s, next, eventPP)) + return XML_ERROR_PUBLICID; + if (declNotationName) { /* means notationDeclHandler != NULL */ + XML_Char *tem = poolStoreString(&tempPool, + enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!tem) + return XML_ERROR_NO_MEMORY; + normalizePublicId(tem); + declNotationPublicId = tem; + poolFinish(&tempPool); + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_NOTATION_SYSTEM_ID: + if (declNotationName && notationDeclHandler) { + const XML_Char *systemId + = poolStoreString(&tempPool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!systemId) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + notationDeclHandler(handlerArg, + declNotationName, + curBase, + systemId, + declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&tempPool); + break; + case XML_ROLE_NOTATION_NO_SYSTEM_ID: + if (declNotationPublicId && notationDeclHandler) { + *eventEndPP = s; + notationDeclHandler(handlerArg, + declNotationName, + curBase, + 0, + declNotationPublicId); + handleDefault = XML_FALSE; + } + poolClear(&tempPool); + break; + case XML_ROLE_ERROR: + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: + /* PE references in internal subset are + not allowed within declarations. */ + return XML_ERROR_PARAM_ENTITY_REF; + case XML_TOK_XML_DECL: + return XML_ERROR_MISPLACED_XML_PI; + default: + return XML_ERROR_SYNTAX; + } +#ifdef XML_DTD + case XML_ROLE_IGNORE_SECT: + { + enum XML_Error result; + if (defaultHandler) + reportDefault(parser, enc, s, next); + handleDefault = XML_FALSE; + result = doIgnoreSection(parser, enc, &next, end, nextPtr, haveMore); + if (result != XML_ERROR_NONE) + return result; + else if (!next) { + processor = ignoreSectionProcessor; + return result; + } + } + break; +#endif /* XML_DTD */ + case XML_ROLE_GROUP_OPEN: + if (prologState.level >= groupSize) { + if (groupSize) { + char *temp = (char *)REALLOC(groupConnector, groupSize *= 2); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + groupConnector = temp; + if (dtd->scaffIndex) { + int *temp = (int *)REALLOC(dtd->scaffIndex, + groupSize * sizeof(int)); + if (temp == NULL) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex = temp; + } + } + else { + groupConnector = (char *)MALLOC(groupSize = 32); + if (!groupConnector) + return XML_ERROR_NO_MEMORY; + } + } + groupConnector[prologState.level] = 0; + if (dtd->in_eldecl) { + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffIndex[dtd->scaffLevel] = myindex; + dtd->scaffLevel++; + dtd->scaffold[myindex].type = XML_CTYPE_SEQ; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + case XML_ROLE_GROUP_SEQUENCE: + if (groupConnector[prologState.level] == ASCII_PIPE) + return XML_ERROR_SYNTAX; + groupConnector[prologState.level] = ASCII_COMMA; + if (dtd->in_eldecl && elementDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_GROUP_CHOICE: + if (groupConnector[prologState.level] == ASCII_COMMA) + return XML_ERROR_SYNTAX; + if (dtd->in_eldecl + && !groupConnector[prologState.level] + && (dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + != XML_CTYPE_MIXED) + ) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_CHOICE; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + groupConnector[prologState.level] = ASCII_PIPE; + break; + case XML_ROLE_PARAM_ENTITY_REF: +#ifdef XML_DTD + case XML_ROLE_INNER_PARAM_ENTITY_REF: + dtd->hasParamEntityRefs = XML_TRUE; + if (!paramEntityParsing) + dtd->keepProcessing = dtd->standalone; + else { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&dtd->pool, enc, + s + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); + poolDiscard(&dtd->pool); + /* first, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal, + otherwise call the skipped entity handler + */ + if (prologState.documentEntity && + (dtd->standalone + ? !openInternalEntities + : !dtd->hasParamEntityRefs)) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + dtd->keepProcessing = dtd->standalone; + /* cannot report skipped entities in declarations */ + if ((role == XML_ROLE_PARAM_ENTITY_REF) && skippedEntityHandler) { + skippedEntityHandler(handlerArg, name, 1); + handleDefault = XML_FALSE; + } + break; + } + if (entity->open) + return XML_ERROR_RECURSIVE_ENTITY_REF; + if (entity->textPtr) { + enum XML_Error result; + XML_Bool betweenDecl = + (role == XML_ROLE_PARAM_ENTITY_REF ? XML_TRUE : XML_FALSE); + result = processInternalEntity(parser, entity, betweenDecl); + if (result != XML_ERROR_NONE) + return result; + handleDefault = XML_FALSE; + break; + } + if (externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) { + entity->open = XML_FALSE; + return XML_ERROR_EXTERNAL_ENTITY_HANDLING; + } + entity->open = XML_FALSE; + handleDefault = XML_FALSE; + if (!dtd->paramEntityRead) { + dtd->keepProcessing = dtd->standalone; + break; + } + } + else { + dtd->keepProcessing = dtd->standalone; + break; + } + } +#endif /* XML_DTD */ + if (!dtd->standalone && + notStandaloneHandler && + !notStandaloneHandler(handlerArg)) + return XML_ERROR_NOT_STANDALONE; + break; + + /* Element declaration stuff */ + + case XML_ROLE_ELEMENT_NAME: + if (elementDeclHandler) { + declElementType = getElementType(parser, enc, s, next); + if (!declElementType) + return XML_ERROR_NO_MEMORY; + dtd->scaffLevel = 0; + dtd->scaffCount = 0; + dtd->in_eldecl = XML_TRUE; + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ANY: + case XML_ROLE_CONTENT_EMPTY: + if (dtd->in_eldecl) { + if (elementDeclHandler) { + XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); + if (!content) + return XML_ERROR_NO_MEMORY; + content->quant = XML_CQUANT_NONE; + content->name = NULL; + content->numchildren = 0; + content->children = NULL; + content->type = ((role == XML_ROLE_CONTENT_ANY) ? + XML_CTYPE_ANY : + XML_CTYPE_EMPTY); + *eventEndPP = s; + elementDeclHandler(handlerArg, declElementType->name, content); + handleDefault = XML_FALSE; + } + dtd->in_eldecl = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_PCDATA: + if (dtd->in_eldecl) { + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel - 1]].type + = XML_CTYPE_MIXED; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_CONTENT_ELEMENT: + quant = XML_CQUANT_NONE; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_OPT: + quant = XML_CQUANT_OPT; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_REP: + quant = XML_CQUANT_REP; + goto elementContent; + case XML_ROLE_CONTENT_ELEMENT_PLUS: + quant = XML_CQUANT_PLUS; + elementContent: + if (dtd->in_eldecl) { + ELEMENT_TYPE *el; + const XML_Char *name; + int nameLen; + const char *nxt = (quant == XML_CQUANT_NONE + ? next + : next - enc->minBytesPerChar); + int myindex = nextScaffoldPart(parser); + if (myindex < 0) + return XML_ERROR_NO_MEMORY; + dtd->scaffold[myindex].type = XML_CTYPE_NAME; + dtd->scaffold[myindex].quant = quant; + el = getElementType(parser, enc, s, nxt); + if (!el) + return XML_ERROR_NO_MEMORY; + name = el->name; + dtd->scaffold[myindex].name = name; + nameLen = 0; + for (; name[nameLen++]; ); + dtd->contentStringLen += nameLen; + if (elementDeclHandler) + handleDefault = XML_FALSE; + } + break; + + case XML_ROLE_GROUP_CLOSE: + quant = XML_CQUANT_NONE; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_OPT: + quant = XML_CQUANT_OPT; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_REP: + quant = XML_CQUANT_REP; + goto closeGroup; + case XML_ROLE_GROUP_CLOSE_PLUS: + quant = XML_CQUANT_PLUS; + closeGroup: + if (dtd->in_eldecl) { + if (elementDeclHandler) + handleDefault = XML_FALSE; + dtd->scaffLevel--; + dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel]].quant = quant; + if (dtd->scaffLevel == 0) { + if (!handleDefault) { + XML_Content *model = build_model(parser); + if (!model) + return XML_ERROR_NO_MEMORY; + *eventEndPP = s; + elementDeclHandler(handlerArg, declElementType->name, model); + } + dtd->in_eldecl = XML_FALSE; + dtd->contentStringLen = 0; + } + } + break; + /* End element declaration stuff */ + + case XML_ROLE_PI: + if (!reportProcessingInstruction(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_COMMENT: + if (!reportComment(parser, enc, s, next)) + return XML_ERROR_NO_MEMORY; + handleDefault = XML_FALSE; + break; + case XML_ROLE_NONE: + switch (tok) { + case XML_TOK_BOM: + handleDefault = XML_FALSE; + break; + } + break; + case XML_ROLE_DOCTYPE_NONE: + if (startDoctypeDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ENTITY_NONE: + if (dtd->keepProcessing && entityDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_NOTATION_NONE: + if (notationDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ATTLIST_NONE: + if (dtd->keepProcessing && attlistDeclHandler) + handleDefault = XML_FALSE; + break; + case XML_ROLE_ELEMENT_NONE: + if (elementDeclHandler) + handleDefault = XML_FALSE; + break; + } /* end of big switch */ + + if (handleDefault && defaultHandler) + reportDefault(parser, enc, s, next); + + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: + s = next; + tok = XmlPrologTok(enc, s, end, &next); + } + } + /* not reached */ +} + +static enum XML_Error PTRCALL +epilogProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + processor = epilogProcessor; + eventPtr = s; + for (;;) { + const char *next = NULL; + int tok = XmlPrologTok(encoding, s, end, &next); + eventEndPtr = next; + switch (tok) { + /* report partial linebreak - it might be the last token */ + case -XML_TOK_PROLOG_S: + if (defaultHandler) { + reportDefault(parser, encoding, s, next); + if (ps_parsing == XML_FINISHED) + return XML_ERROR_ABORTED; + } + *nextPtr = next; + return XML_ERROR_NONE; + case XML_TOK_NONE: + *nextPtr = s; + return XML_ERROR_NONE; + case XML_TOK_PROLOG_S: + if (defaultHandler) + reportDefault(parser, encoding, s, next); + break; + case XML_TOK_PI: + if (!reportProcessingInstruction(parser, encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_COMMENT: + if (!reportComment(parser, encoding, s, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_INVALID: + eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (!ps_finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_UNCLOSED_TOKEN; + case XML_TOK_PARTIAL_CHAR: + if (!ps_finalBuffer) { + *nextPtr = s; + return XML_ERROR_NONE; + } + return XML_ERROR_PARTIAL_CHAR; + default: + return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; + } + eventPtr = s = next; + switch (ps_parsing) { + case XML_SUSPENDED: + *nextPtr = next; + return XML_ERROR_NONE; + case XML_FINISHED: + return XML_ERROR_ABORTED; + default: ; + } + } +} + +static enum XML_Error +processInternalEntity(XML_Parser parser, ENTITY *entity, + XML_Bool betweenDecl) +{ + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity; + + if (freeInternalEntities) { + openEntity = freeInternalEntities; + freeInternalEntities = openEntity->next; + } + else { + openEntity = (OPEN_INTERNAL_ENTITY *)MALLOC(sizeof(OPEN_INTERNAL_ENTITY)); + if (!openEntity) + return XML_ERROR_NO_MEMORY; + } + entity->open = XML_TRUE; + entity->processed = 0; + openEntity->next = openInternalEntities; + openInternalEntities = openEntity; + openEntity->entity = entity; + openEntity->startTagLevel = tagLevel; + openEntity->betweenDecl = betweenDecl; + openEntity->internalEventPtr = NULL; + openEntity->internalEventEndPtr = NULL; + textStart = (char *)entity->textPtr; + textEnd = (char *)(entity->textPtr + entity->textLen); + +#ifdef XML_DTD + if (entity->is_param) { + int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, internalEncoding, textStart, textEnd, tok, + next, &next, XML_FALSE); + } + else +#endif /* XML_DTD */ + result = doContent(parser, tagLevel, internalEncoding, textStart, + textEnd, &next, XML_FALSE); + + if (result == XML_ERROR_NONE) { + if (textEnd != next && ps_parsing == XML_SUSPENDED) { + entity->processed = (int)(next - textStart); + processor = internalEntityProcessor; + } + else { + entity->open = XML_FALSE; + openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + } + return result; +} + +static enum XML_Error PTRCALL +internalEntityProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + ENTITY *entity; + const char *textStart, *textEnd; + const char *next; + enum XML_Error result; + OPEN_INTERNAL_ENTITY *openEntity = openInternalEntities; + if (!openEntity) + return XML_ERROR_UNEXPECTED_STATE; + + entity = openEntity->entity; + textStart = ((char *)entity->textPtr) + entity->processed; + textEnd = (char *)(entity->textPtr + entity->textLen); + +#ifdef XML_DTD + if (entity->is_param) { + int tok = XmlPrologTok(internalEncoding, textStart, textEnd, &next); + result = doProlog(parser, internalEncoding, textStart, textEnd, tok, + next, &next, XML_FALSE); + } + else +#endif /* XML_DTD */ + result = doContent(parser, openEntity->startTagLevel, internalEncoding, + textStart, textEnd, &next, XML_FALSE); + + if (result != XML_ERROR_NONE) + return result; + else if (textEnd != next && ps_parsing == XML_SUSPENDED) { + entity->processed = (int)(next - (char *)entity->textPtr); + return result; + } + else { + entity->open = XML_FALSE; + openInternalEntities = openEntity->next; + /* put openEntity back in list of free instances */ + openEntity->next = freeInternalEntities; + freeInternalEntities = openEntity; + } + +#ifdef XML_DTD + if (entity->is_param) { + int tok; + processor = prologProcessor; + tok = XmlPrologTok(encoding, s, end, &next); + return doProlog(parser, encoding, s, end, tok, next, nextPtr, + (XML_Bool)!ps_finalBuffer); + } + else +#endif /* XML_DTD */ + { + processor = contentProcessor; + /* see externalEntityContentProcessor vs contentProcessor */ + return doContent(parser, parentParser ? 1 : 0, encoding, s, end, + nextPtr, (XML_Bool)!ps_finalBuffer); + } +} + +static enum XML_Error PTRCALL +errorProcessor(XML_Parser parser, + const char *s, + const char *end, + const char **nextPtr) +{ + return errorCode; +} + +static enum XML_Error +storeAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, + STRING_POOL *pool) +{ + enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, + end, pool); + if (result) + return result; + if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) + poolChop(pool); + if (!poolAppendChar(pool, XML_T('\0'))) + return XML_ERROR_NO_MEMORY; + return XML_ERROR_NONE; +} + +static enum XML_Error +appendAttributeValue(XML_Parser parser, const ENCODING *enc, XML_Bool isCdata, + const char *ptr, const char *end, + STRING_POOL *pool) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + for (;;) { + const char *next; + int tok = XmlAttributeValueTok(enc, ptr, end, &next); + switch (tok) { + case XML_TOK_NONE: + return XML_ERROR_NONE; + case XML_TOK_INVALID: + if (enc == encoding) + eventPtr = next; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_PARTIAL: + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_INVALID_TOKEN; + case XML_TOK_CHAR_REF: + { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, ptr); + if (n < 0) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + if (!isCdata + && n == 0x20 /* space */ + && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + n = XmlEncode(n, (ICHAR *)buf); + if (!n) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BAD_CHAR_REF; + } + for (i = 0; i < n; i++) { + if (!poolAppendChar(pool, buf[i])) + return XML_ERROR_NO_MEMORY; + } + } + break; + case XML_TOK_DATA_CHARS: + if (!poolAppend(pool, enc, ptr, next)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_TRAILING_CR: + next = ptr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_ATTRIBUTE_VALUE_S: + case XML_TOK_DATA_NEWLINE: + if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) + break; + if (!poolAppendChar(pool, 0x20)) + return XML_ERROR_NO_MEMORY; + break; + case XML_TOK_ENTITY_REF: + { + const XML_Char *name; + ENTITY *entity; + char checkEntityDecl; + XML_Char ch = (XML_Char) XmlPredefinedEntityName(enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (ch) { + if (!poolAppendChar(pool, ch)) + return XML_ERROR_NO_MEMORY; + break; + } + name = poolStoreString(&temp2Pool, enc, + ptr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) + return XML_ERROR_NO_MEMORY; + entity = (ENTITY *)lookup(parser, &dtd->generalEntities, name, 0); + poolDiscard(&temp2Pool); + /* First, determine if a check for an existing declaration is needed; + if yes, check that the entity exists, and that it is internal. + */ + if (pool == &dtd->pool) /* are we called from prolog? */ + checkEntityDecl = +#ifdef XML_DTD + prologState.documentEntity && +#endif /* XML_DTD */ + (dtd->standalone + ? !openInternalEntities + : !dtd->hasParamEntityRefs); + else /* if (pool == &tempPool): we are called from content */ + checkEntityDecl = !dtd->hasParamEntityRefs || dtd->standalone; + if (checkEntityDecl) { + if (!entity) + return XML_ERROR_UNDEFINED_ENTITY; + else if (!entity->is_internal) + return XML_ERROR_ENTITY_DECLARED_IN_PE; + } + else if (!entity) { + /* Cannot report skipped entity here - see comments on + skippedEntityHandler. + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + */ + /* Cannot call the default handler because this would be + out of sync with the call to the startElementHandler. + if ((pool == &tempPool) && defaultHandler) + reportDefault(parser, enc, ptr, next); + */ + break; + } + if (entity->open) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_RECURSIVE_ENTITY_REF; + } + if (entity->notation) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_BINARY_ENTITY_REF; + } + if (!entity->textPtr) { + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; + } + else { + enum XML_Error result; + const XML_Char *textEnd = entity->textPtr + entity->textLen; + entity->open = XML_TRUE; + result = appendAttributeValue(parser, internalEncoding, isCdata, + (char *)entity->textPtr, + (char *)textEnd, pool); + entity->open = XML_FALSE; + if (result) + return result; + } + } + break; + default: + if (enc == encoding) + eventPtr = ptr; + return XML_ERROR_UNEXPECTED_STATE; + } + ptr = next; + } + /* not reached */ +} + +static enum XML_Error +storeEntityValue(XML_Parser parser, + const ENCODING *enc, + const char *entityTextPtr, + const char *entityTextEnd) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + STRING_POOL *pool = &(dtd->entityValuePool); + enum XML_Error result = XML_ERROR_NONE; +#ifdef XML_DTD + int oldInEntityValue = prologState.inEntityValue; + prologState.inEntityValue = 1; +#endif /* XML_DTD */ + /* never return Null for the value argument in EntityDeclHandler, + since this would indicate an external entity; therefore we + have to make sure that entityValuePool.start is not null */ + if (!pool->blocks) { + if (!poolGrow(pool)) + return XML_ERROR_NO_MEMORY; + } + + for (;;) { + const char *next; + int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); + switch (tok) { + case XML_TOK_PARAM_ENTITY_REF: +#ifdef XML_DTD + if (isParamEntity || enc != encoding) { + const XML_Char *name; + ENTITY *entity; + name = poolStoreString(&tempPool, enc, + entityTextPtr + enc->minBytesPerChar, + next - enc->minBytesPerChar); + if (!name) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + entity = (ENTITY *)lookup(parser, &dtd->paramEntities, name, 0); + poolDiscard(&tempPool); + if (!entity) { + /* not a well-formedness error - see XML 1.0: WFC Entity Declared */ + /* cannot report skipped entity here - see comments on + skippedEntityHandler + if (skippedEntityHandler) + skippedEntityHandler(handlerArg, name, 0); + */ + dtd->keepProcessing = dtd->standalone; + goto endEntityValue; + } + if (entity->open) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_RECURSIVE_ENTITY_REF; + goto endEntityValue; + } + if (entity->systemId) { + if (externalEntityRefHandler) { + dtd->paramEntityRead = XML_FALSE; + entity->open = XML_TRUE; + if (!externalEntityRefHandler(externalEntityRefHandlerArg, + 0, + entity->base, + entity->systemId, + entity->publicId)) { + entity->open = XML_FALSE; + result = XML_ERROR_EXTERNAL_ENTITY_HANDLING; + goto endEntityValue; + } + entity->open = XML_FALSE; + if (!dtd->paramEntityRead) + dtd->keepProcessing = dtd->standalone; + } + else + dtd->keepProcessing = dtd->standalone; + } + else { + entity->open = XML_TRUE; + result = storeEntityValue(parser, + internalEncoding, + (char *)entity->textPtr, + (char *)(entity->textPtr + + entity->textLen)); + entity->open = XML_FALSE; + if (result) + goto endEntityValue; + } + break; + } +#endif /* XML_DTD */ + /* In the internal subset, PE references are not legal + within markup declarations, e.g entity values in this case. */ + eventPtr = entityTextPtr; + result = XML_ERROR_PARAM_ENTITY_REF; + goto endEntityValue; + case XML_TOK_NONE: + result = XML_ERROR_NONE; + goto endEntityValue; + case XML_TOK_ENTITY_REF: + case XML_TOK_DATA_CHARS: + if (!poolAppend(pool, enc, entityTextPtr, next)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + break; + case XML_TOK_TRAILING_CR: + next = entityTextPtr + enc->minBytesPerChar; + /* fall through */ + case XML_TOK_DATA_NEWLINE: + if (pool->end == pool->ptr && !poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = 0xA; + break; + case XML_TOK_CHAR_REF: + { + XML_Char buf[XML_ENCODE_MAX]; + int i; + int n = XmlCharRefNumber(enc, entityTextPtr); + if (n < 0) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + n = XmlEncode(n, (ICHAR *)buf); + if (!n) { + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_BAD_CHAR_REF; + goto endEntityValue; + } + for (i = 0; i < n; i++) { + if (pool->end == pool->ptr && !poolGrow(pool)) { + result = XML_ERROR_NO_MEMORY; + goto endEntityValue; + } + *(pool->ptr)++ = buf[i]; + } + } + break; + case XML_TOK_PARTIAL: + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + case XML_TOK_INVALID: + if (enc == encoding) + eventPtr = next; + result = XML_ERROR_INVALID_TOKEN; + goto endEntityValue; + default: + if (enc == encoding) + eventPtr = entityTextPtr; + result = XML_ERROR_UNEXPECTED_STATE; + goto endEntityValue; + } + entityTextPtr = next; + } +endEntityValue: +#ifdef XML_DTD + prologState.inEntityValue = oldInEntityValue; +#endif /* XML_DTD */ + return result; +} + +static void FASTCALL +normalizeLines(XML_Char *s) +{ + XML_Char *p; + for (;; s++) { + if (*s == XML_T('\0')) + return; + if (*s == 0xD) + break; + } + p = s; + do { + if (*s == 0xD) { + *p++ = 0xA; + if (*++s == 0xA) + s++; + } + else + *p++ = *s++; + } while (*s); + *p = XML_T('\0'); +} + +static int +reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + const XML_Char *target; + XML_Char *data; + const char *tem; + if (!processingInstructionHandler) { + if (defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + start += enc->minBytesPerChar * 2; + tem = start + XmlNameLength(enc, start); + target = poolStoreString(&tempPool, enc, start, tem); + if (!target) + return 0; + poolFinish(&tempPool); + data = poolStoreString(&tempPool, enc, + XmlSkipS(enc, tem), + end - enc->minBytesPerChar*2); + if (!data) + return 0; + normalizeLines(data); + processingInstructionHandler(handlerArg, target, data); + poolClear(&tempPool); + return 1; +} + +static int +reportComment(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + XML_Char *data; + if (!commentHandler) { + if (defaultHandler) + reportDefault(parser, enc, start, end); + return 1; + } + data = poolStoreString(&tempPool, + enc, + start + enc->minBytesPerChar * 4, + end - enc->minBytesPerChar * 3); + if (!data) + return 0; + normalizeLines(data); + commentHandler(handlerArg, data); + poolClear(&tempPool); + return 1; +} + +static void +reportDefault(XML_Parser parser, const ENCODING *enc, + const char *s, const char *end) +{ + if (MUST_CONVERT(enc, s)) { + const char **eventPP; + const char **eventEndPP; + if (enc == encoding) { + eventPP = &eventPtr; + eventEndPP = &eventEndPtr; + } + else { + eventPP = &(openInternalEntities->internalEventPtr); + eventEndPP = &(openInternalEntities->internalEventEndPtr); + } + do { + ICHAR *dataPtr = (ICHAR *)dataBuf; + XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); + *eventEndPP = s; + defaultHandler(handlerArg, dataBuf, (int)(dataPtr - (ICHAR *)dataBuf)); + *eventPP = s; + } while (s != end); + } + else + defaultHandler(handlerArg, (XML_Char *)s, (int)((XML_Char *)end - (XML_Char *)s)); +} + + +static int +defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, XML_Bool isCdata, + XML_Bool isId, const XML_Char *value, XML_Parser parser) +{ + DEFAULT_ATTRIBUTE *att; + if (value || isId) { + /* The handling of default attributes gets messed up if we have + a default which duplicates a non-default. */ + int i; + for (i = 0; i < type->nDefaultAtts; i++) + if (attId == type->defaultAtts[i].id) + return 1; + if (isId && !type->idAtt && !attId->xmlns) + type->idAtt = attId; + } + if (type->nDefaultAtts == type->allocDefaultAtts) { + if (type->allocDefaultAtts == 0) { + type->allocDefaultAtts = 8; + type->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(type->allocDefaultAtts + * sizeof(DEFAULT_ATTRIBUTE)); + if (!type->defaultAtts) + return 0; + } + else { + DEFAULT_ATTRIBUTE *temp; + int count = type->allocDefaultAtts * 2; + temp = (DEFAULT_ATTRIBUTE *) + REALLOC(type->defaultAtts, (count * sizeof(DEFAULT_ATTRIBUTE))); + if (temp == NULL) + return 0; + type->allocDefaultAtts = count; + type->defaultAtts = temp; + } + } + att = type->defaultAtts + type->nDefaultAtts; + att->id = attId; + att->value = value; + att->isCdata = isCdata; + if (!isCdata) + attId->maybeTokenized = XML_TRUE; + type->nDefaultAtts += 1; + return 1; +} + +static int +setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name; + for (name = elementType->name; *name; name++) { + if (*name == XML_T(ASCII_COLON)) { + PREFIX *prefix; + const XML_Char *s; + for (s = elementType->name; s != name; s++) { + if (!poolAppendChar(&dtd->pool, *s)) + return 0; + } + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return 0; + prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (!prefix) + return 0; + if (prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + elementType->prefix = prefix; + + } + } + return 1; +} + +static ATTRIBUTE_ID * +getAttributeId(XML_Parser parser, const ENCODING *enc, + const char *start, const char *end) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + ATTRIBUTE_ID *id; + const XML_Char *name; + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + name = poolStoreString(&dtd->pool, enc, start, end); + if (!name) + return NULL; + /* skip quotation mark - its storage will be re-used (like in name[-1]) */ + ++name; + id = (ATTRIBUTE_ID *)lookup(parser, &dtd->attributeIds, name, sizeof(ATTRIBUTE_ID)); + if (!id) + return NULL; + if (id->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (!ns) + ; + else if (name[0] == XML_T(ASCII_x) + && name[1] == XML_T(ASCII_m) + && name[2] == XML_T(ASCII_l) + && name[3] == XML_T(ASCII_n) + && name[4] == XML_T(ASCII_s) + && (name[5] == XML_T('\0') || name[5] == XML_T(ASCII_COLON))) { + if (name[5] == XML_T('\0')) + id->prefix = &dtd->defaultPrefix; + else + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, name + 6, sizeof(PREFIX)); + id->xmlns = XML_TRUE; + } + else { + int i; + for (i = 0; name[i]; i++) { + /* attributes without prefix are *not* in the default namespace */ + if (name[i] == XML_T(ASCII_COLON)) { + int j; + for (j = 0; j < i; j++) { + if (!poolAppendChar(&dtd->pool, name[j])) + return NULL; + } + if (!poolAppendChar(&dtd->pool, XML_T('\0'))) + return NULL; + id->prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&dtd->pool), + sizeof(PREFIX)); + if (!id->prefix) + return NULL; + if (id->prefix->name == poolStart(&dtd->pool)) + poolFinish(&dtd->pool); + else + poolDiscard(&dtd->pool); + break; + } + } + } + } + return id; +} + +#define CONTEXT_SEP XML_T(ASCII_FF) + +static const XML_Char * +getContext(XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + HASH_TABLE_ITER iter; + XML_Bool needSep = XML_FALSE; + + if (dtd->defaultPrefix.binding) { + int i; + int len; + if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = dtd->defaultPrefix.binding->uriLen; + if (namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (!poolAppendChar(&tempPool, dtd->defaultPrefix.binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + hashTableIterInit(&iter, &(dtd->prefixes)); + for (;;) { + int i; + int len; + const XML_Char *s; + PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); + if (!prefix) + break; + if (!prefix->binding) + continue; + if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + return NULL; + for (s = prefix->name; *s; s++) + if (!poolAppendChar(&tempPool, *s)) + return NULL; + if (!poolAppendChar(&tempPool, XML_T(ASCII_EQUALS))) + return NULL; + len = prefix->binding->uriLen; + if (namespaceSeparator) + len--; + for (i = 0; i < len; i++) + if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) + return NULL; + needSep = XML_TRUE; + } + + + hashTableIterInit(&iter, &(dtd->generalEntities)); + for (;;) { + const XML_Char *s; + ENTITY *e = (ENTITY *)hashTableIterNext(&iter); + if (!e) + break; + if (!e->open) + continue; + if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) + return NULL; + for (s = e->name; *s; s++) + if (!poolAppendChar(&tempPool, *s)) + return 0; + needSep = XML_TRUE; + } + + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return NULL; + return tempPool.start; +} + +static XML_Bool +setContext(XML_Parser parser, const XML_Char *context) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *s = context; + + while (*context != XML_T('\0')) { + if (*s == CONTEXT_SEP || *s == XML_T('\0')) { + ENTITY *e; + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + e = (ENTITY *)lookup(parser, &dtd->generalEntities, poolStart(&tempPool), 0); + if (e) + e->open = XML_TRUE; + if (*s != XML_T('\0')) + s++; + context = s; + poolDiscard(&tempPool); + } + else if (*s == XML_T(ASCII_EQUALS)) { + PREFIX *prefix; + if (poolLength(&tempPool) == 0) + prefix = &dtd->defaultPrefix; + else { + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + prefix = (PREFIX *)lookup(parser, &dtd->prefixes, poolStart(&tempPool), + sizeof(PREFIX)); + if (!prefix) + return XML_FALSE; + if (prefix->name == poolStart(&tempPool)) { + prefix->name = poolCopyString(&dtd->pool, prefix->name); + if (!prefix->name) + return XML_FALSE; + } + poolDiscard(&tempPool); + } + for (context = s + 1; + *context != CONTEXT_SEP && *context != XML_T('\0'); + context++) + if (!poolAppendChar(&tempPool, *context)) + return XML_FALSE; + if (!poolAppendChar(&tempPool, XML_T('\0'))) + return XML_FALSE; + if (addBinding(parser, prefix, NULL, poolStart(&tempPool), + &inheritedBindings) != XML_ERROR_NONE) + return XML_FALSE; + poolDiscard(&tempPool); + if (*context != XML_T('\0')) + ++context; + s = context; + } + else { + if (!poolAppendChar(&tempPool, *s)) + return XML_FALSE; + s++; + } + } + return XML_TRUE; +} + +static void FASTCALL +normalizePublicId(XML_Char *publicId) +{ + XML_Char *p = publicId; + XML_Char *s; + for (s = publicId; *s; s++) { + switch (*s) { + case 0x20: + case 0xD: + case 0xA: + if (p != publicId && p[-1] != 0x20) + *p++ = 0x20; + break; + default: + *p++ = *s; + } + } + if (p != publicId && p[-1] == 0x20) + --p; + *p = XML_T('\0'); +} + +static DTD * +dtdCreate(const XML_Memory_Handling_Suite *ms) +{ + DTD *p = (DTD *)ms->malloc_fcn(sizeof(DTD)); + if (p == NULL) + return p; + poolInit(&(p->pool), ms); + poolInit(&(p->entityValuePool), ms); + hashTableInit(&(p->generalEntities), ms); + hashTableInit(&(p->elementTypes), ms); + hashTableInit(&(p->attributeIds), ms); + hashTableInit(&(p->prefixes), ms); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableInit(&(p->paramEntities), ms); +#endif /* XML_DTD */ + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + p->scaffIndex = NULL; + p->scaffold = NULL; + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; + return p; +} + +static void +dtdReset(DTD *p, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableClear(&(p->generalEntities)); +#ifdef XML_DTD + p->paramEntityRead = XML_FALSE; + hashTableClear(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableClear(&(p->elementTypes)); + hashTableClear(&(p->attributeIds)); + hashTableClear(&(p->prefixes)); + poolClear(&(p->pool)); + poolClear(&(p->entityValuePool)); + p->defaultPrefix.name = NULL; + p->defaultPrefix.binding = NULL; + + p->in_eldecl = XML_FALSE; + + ms->free_fcn(p->scaffIndex); + p->scaffIndex = NULL; + ms->free_fcn(p->scaffold); + p->scaffold = NULL; + + p->scaffLevel = 0; + p->scaffSize = 0; + p->scaffCount = 0; + p->contentStringLen = 0; + + p->keepProcessing = XML_TRUE; + p->hasParamEntityRefs = XML_FALSE; + p->standalone = XML_FALSE; +} + +static void +dtdDestroy(DTD *p, XML_Bool isDocEntity, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + hashTableIterInit(&iter, &(p->elementTypes)); + for (;;) { + ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!e) + break; + if (e->allocDefaultAtts != 0) + ms->free_fcn(e->defaultAtts); + } + hashTableDestroy(&(p->generalEntities)); +#ifdef XML_DTD + hashTableDestroy(&(p->paramEntities)); +#endif /* XML_DTD */ + hashTableDestroy(&(p->elementTypes)); + hashTableDestroy(&(p->attributeIds)); + hashTableDestroy(&(p->prefixes)); + poolDestroy(&(p->pool)); + poolDestroy(&(p->entityValuePool)); + if (isDocEntity) { + ms->free_fcn(p->scaffIndex); + ms->free_fcn(p->scaffold); + } + ms->free_fcn(p); +} + +/* Do a deep copy of the DTD. Return 0 for out of memory, non-zero otherwise. + The new DTD has already been initialized. +*/ +static int +dtdCopy(XML_Parser oldParser, DTD *newDtd, const DTD *oldDtd, const XML_Memory_Handling_Suite *ms) +{ + HASH_TABLE_ITER iter; + + /* Copy the prefix table. */ + + hashTableIterInit(&iter, &(oldDtd->prefixes)); + for (;;) { + const XML_Char *name; + const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); + if (!oldP) + break; + name = poolCopyString(&(newDtd->pool), oldP->name); + if (!name) + return 0; + if (!lookup(oldParser, &(newDtd->prefixes), name, sizeof(PREFIX))) + return 0; + } + + hashTableIterInit(&iter, &(oldDtd->attributeIds)); + + /* Copy the attribute id table. */ + + for (;;) { + ATTRIBUTE_ID *newA; + const XML_Char *name; + const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); + + if (!oldA) + break; + /* Remember to allocate the scratch byte before the name. */ + if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) + return 0; + name = poolCopyString(&(newDtd->pool), oldA->name); + if (!name) + return 0; + ++name; + newA = (ATTRIBUTE_ID *)lookup(oldParser, &(newDtd->attributeIds), name, + sizeof(ATTRIBUTE_ID)); + if (!newA) + return 0; + newA->maybeTokenized = oldA->maybeTokenized; + if (oldA->prefix) { + newA->xmlns = oldA->xmlns; + if (oldA->prefix == &oldDtd->defaultPrefix) + newA->prefix = &newDtd->defaultPrefix; + else + newA->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), + oldA->prefix->name, 0); + } + } + + /* Copy the element type table. */ + + hashTableIterInit(&iter, &(oldDtd->elementTypes)); + + for (;;) { + int i; + ELEMENT_TYPE *newE; + const XML_Char *name; + const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(&(newDtd->pool), oldE->name); + if (!name) + return 0; + newE = (ELEMENT_TYPE *)lookup(oldParser, &(newDtd->elementTypes), name, + sizeof(ELEMENT_TYPE)); + if (!newE) + return 0; + if (oldE->nDefaultAtts) { + newE->defaultAtts = (DEFAULT_ATTRIBUTE *) + ms->malloc_fcn(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); + if (!newE->defaultAtts) { + ms->free_fcn(newE); + return 0; + } + } + if (oldE->idAtt) + newE->idAtt = (ATTRIBUTE_ID *) + lookup(oldParser, &(newDtd->attributeIds), oldE->idAtt->name, 0); + newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; + if (oldE->prefix) + newE->prefix = (PREFIX *)lookup(oldParser, &(newDtd->prefixes), + oldE->prefix->name, 0); + for (i = 0; i < newE->nDefaultAtts; i++) { + newE->defaultAtts[i].id = (ATTRIBUTE_ID *) + lookup(oldParser, &(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); + newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; + if (oldE->defaultAtts[i].value) { + newE->defaultAtts[i].value + = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); + if (!newE->defaultAtts[i].value) + return 0; + } + else + newE->defaultAtts[i].value = NULL; + } + } + + /* Copy the entity tables. */ + if (!copyEntityTable(oldParser, + &(newDtd->generalEntities), + &(newDtd->pool), + &(oldDtd->generalEntities))) + return 0; + +#ifdef XML_DTD + if (!copyEntityTable(oldParser, + &(newDtd->paramEntities), + &(newDtd->pool), + &(oldDtd->paramEntities))) + return 0; + newDtd->paramEntityRead = oldDtd->paramEntityRead; +#endif /* XML_DTD */ + + newDtd->keepProcessing = oldDtd->keepProcessing; + newDtd->hasParamEntityRefs = oldDtd->hasParamEntityRefs; + newDtd->standalone = oldDtd->standalone; + + /* Don't want deep copying for scaffolding */ + newDtd->in_eldecl = oldDtd->in_eldecl; + newDtd->scaffold = oldDtd->scaffold; + newDtd->contentStringLen = oldDtd->contentStringLen; + newDtd->scaffSize = oldDtd->scaffSize; + newDtd->scaffLevel = oldDtd->scaffLevel; + newDtd->scaffIndex = oldDtd->scaffIndex; + + return 1; +} /* End dtdCopy */ + +static int +copyEntityTable(XML_Parser oldParser, + HASH_TABLE *newTable, + STRING_POOL *newPool, + const HASH_TABLE *oldTable) +{ + HASH_TABLE_ITER iter; + const XML_Char *cachedOldBase = NULL; + const XML_Char *cachedNewBase = NULL; + + hashTableIterInit(&iter, oldTable); + + for (;;) { + ENTITY *newE; + const XML_Char *name; + const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); + if (!oldE) + break; + name = poolCopyString(newPool, oldE->name); + if (!name) + return 0; + newE = (ENTITY *)lookup(oldParser, newTable, name, sizeof(ENTITY)); + if (!newE) + return 0; + if (oldE->systemId) { + const XML_Char *tem = poolCopyString(newPool, oldE->systemId); + if (!tem) + return 0; + newE->systemId = tem; + if (oldE->base) { + if (oldE->base == cachedOldBase) + newE->base = cachedNewBase; + else { + cachedOldBase = oldE->base; + tem = poolCopyString(newPool, cachedOldBase); + if (!tem) + return 0; + cachedNewBase = newE->base = tem; + } + } + if (oldE->publicId) { + tem = poolCopyString(newPool, oldE->publicId); + if (!tem) + return 0; + newE->publicId = tem; + } + } + else { + const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, + oldE->textLen); + if (!tem) + return 0; + newE->textPtr = tem; + newE->textLen = oldE->textLen; + } + if (oldE->notation) { + const XML_Char *tem = poolCopyString(newPool, oldE->notation); + if (!tem) + return 0; + newE->notation = tem; + } + newE->is_param = oldE->is_param; + newE->is_internal = oldE->is_internal; + } + return 1; +} + +#define INIT_POWER 6 + +static XML_Bool FASTCALL +keyeq(KEY s1, KEY s2) +{ + for (; *s1 == *s2; s1++, s2++) + if (*s1 == 0) + return XML_TRUE; + return XML_FALSE; +} + +static unsigned long FASTCALL +hash(XML_Parser parser, KEY s) +{ + unsigned long h = hash_secret_salt; + while (*s) + h = CHAR_HASH(h, *s++); + return h; +} + +static NAMED * +lookup(XML_Parser parser, HASH_TABLE *table, KEY name, size_t createSize) +{ + size_t i; + if (table->size == 0) { + size_t tsize; + if (!createSize) + return NULL; + table->power = INIT_POWER; + /* table->size is a power of 2 */ + table->size = (size_t)1 << INIT_POWER; + tsize = table->size * sizeof(NAMED *); + table->v = (NAMED **)table->mem->malloc_fcn(tsize); + if (!table->v) { + table->size = 0; + return NULL; + } + memset(table->v, 0, tsize); + i = hash(parser, name) & ((unsigned long)table->size - 1); + } + else { + unsigned long h = hash(parser, name); + unsigned long mask = (unsigned long)table->size - 1; + unsigned char step = 0; + i = h & mask; + while (table->v[i]) { + if (keyeq(name, table->v[i]->name)) + return table->v[i]; + if (!step) + step = PROBE_STEP(h, mask, table->power); + i < step ? (i += table->size - step) : (i -= step); + } + if (!createSize) + return NULL; + + /* check for overflow (table is half full) */ + if (table->used >> (table->power - 1)) { + unsigned char newPower = table->power + 1; + size_t newSize = (size_t)1 << newPower; + unsigned long newMask = (unsigned long)newSize - 1; + size_t tsize = newSize * sizeof(NAMED *); + NAMED **newV = (NAMED **)table->mem->malloc_fcn(tsize); + if (!newV) + return NULL; + memset(newV, 0, tsize); + for (i = 0; i < table->size; i++) + if (table->v[i]) { + unsigned long newHash = hash(parser, table->v[i]->name); + size_t j = newHash & newMask; + step = 0; + while (newV[j]) { + if (!step) + step = PROBE_STEP(newHash, newMask, newPower); + j < step ? (j += newSize - step) : (j -= step); + } + newV[j] = table->v[i]; + } + table->mem->free_fcn(table->v); + table->v = newV; + table->power = newPower; + table->size = newSize; + i = h & newMask; + step = 0; + while (table->v[i]) { + if (!step) + step = PROBE_STEP(h, newMask, newPower); + i < step ? (i += newSize - step) : (i -= step); + } + } + } + table->v[i] = (NAMED *)table->mem->malloc_fcn(createSize); + if (!table->v[i]) + return NULL; + memset(table->v[i], 0, createSize); + table->v[i]->name = name; + (table->used)++; + return table->v[i]; +} + +static void FASTCALL +hashTableClear(HASH_TABLE *table) +{ + size_t i; + for (i = 0; i < table->size; i++) { + table->mem->free_fcn(table->v[i]); + table->v[i] = NULL; + } + table->used = 0; +} + +static void FASTCALL +hashTableDestroy(HASH_TABLE *table) +{ + size_t i; + for (i = 0; i < table->size; i++) + table->mem->free_fcn(table->v[i]); + table->mem->free_fcn(table->v); +} + +static void FASTCALL +hashTableInit(HASH_TABLE *p, const XML_Memory_Handling_Suite *ms) +{ + p->power = 0; + p->size = 0; + p->used = 0; + p->v = NULL; + p->mem = ms; +} + +static void FASTCALL +hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) +{ + iter->p = table->v; + iter->end = iter->p + table->size; +} + +static NAMED * FASTCALL +hashTableIterNext(HASH_TABLE_ITER *iter) +{ + while (iter->p != iter->end) { + NAMED *tem = *(iter->p)++; + if (tem) + return tem; + } + return NULL; +} + +static void FASTCALL +poolInit(STRING_POOL *pool, const XML_Memory_Handling_Suite *ms) +{ + pool->blocks = NULL; + pool->freeBlocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; + pool->mem = ms; +} + +static void FASTCALL +poolClear(STRING_POOL *pool) +{ + if (!pool->freeBlocks) + pool->freeBlocks = pool->blocks; + else { + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + p->next = pool->freeBlocks; + pool->freeBlocks = p; + p = tem; + } + } + pool->blocks = NULL; + pool->start = NULL; + pool->ptr = NULL; + pool->end = NULL; +} + +static void FASTCALL +poolDestroy(STRING_POOL *pool) +{ + BLOCK *p = pool->blocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } + p = pool->freeBlocks; + while (p) { + BLOCK *tem = p->next; + pool->mem->free_fcn(p); + p = tem; + } +} + +static XML_Char * +poolAppend(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end) +{ + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (;;) { + XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); + if (ptr == end) + break; + if (!poolGrow(pool)) + return NULL; + } + return pool->start; +} + +static const XML_Char * FASTCALL +poolCopyString(STRING_POOL *pool, const XML_Char *s) +{ + do { + if (!poolAppendChar(pool, *s)) + return NULL; + } while (*s++); + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * +poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) +{ + if (!pool->ptr && !poolGrow(pool)) + return NULL; + for (; n > 0; --n, s++) { + if (!poolAppendChar(pool, *s)) + return NULL; + } + s = pool->start; + poolFinish(pool); + return s; +} + +static const XML_Char * FASTCALL +poolAppendString(STRING_POOL *pool, const XML_Char *s) +{ + while (*s) { + if (!poolAppendChar(pool, *s)) + return NULL; + s++; + } + return pool->start; +} + +static XML_Char * +poolStoreString(STRING_POOL *pool, const ENCODING *enc, + const char *ptr, const char *end) +{ + if (!poolAppend(pool, enc, ptr, end)) + return NULL; + if (pool->ptr == pool->end && !poolGrow(pool)) + return NULL; + *(pool->ptr)++ = 0; + return pool->start; +} + +static XML_Bool FASTCALL +poolGrow(STRING_POOL *pool) +{ + if (pool->freeBlocks) { + if (pool->start == 0) { + pool->blocks = pool->freeBlocks; + pool->freeBlocks = pool->freeBlocks->next; + pool->blocks->next = NULL; + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + pool->ptr = pool->start; + return XML_TRUE; + } + if (pool->end - pool->start < pool->freeBlocks->size) { + BLOCK *tem = pool->freeBlocks->next; + pool->freeBlocks->next = pool->blocks; + pool->blocks = pool->freeBlocks; + pool->freeBlocks = tem; + memcpy(pool->blocks->s, pool->start, + (pool->end - pool->start) * sizeof(XML_Char)); + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + pool->blocks->size; + return XML_TRUE; + } + } + if (pool->blocks && pool->start == pool->blocks->s) { + int blockSize = (int)(pool->end - pool->start)*2; + BLOCK *temp = (BLOCK *) + pool->mem->realloc_fcn(pool->blocks, + (offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char))); + if (temp == NULL) + return XML_FALSE; + pool->blocks = temp; + pool->blocks->size = blockSize; + pool->ptr = pool->blocks->s + (pool->ptr - pool->start); + pool->start = pool->blocks->s; + pool->end = pool->start + blockSize; + } + else { + BLOCK *tem; + int blockSize = (int)(pool->end - pool->start); + if (blockSize < INIT_BLOCK_SIZE) + blockSize = INIT_BLOCK_SIZE; + else + blockSize *= 2; + tem = (BLOCK *)pool->mem->malloc_fcn(offsetof(BLOCK, s) + + blockSize * sizeof(XML_Char)); + if (!tem) + return XML_FALSE; + tem->size = blockSize; + tem->next = pool->blocks; + pool->blocks = tem; + if (pool->ptr != pool->start) + memcpy(tem->s, pool->start, + (pool->ptr - pool->start) * sizeof(XML_Char)); + pool->ptr = tem->s + (pool->ptr - pool->start); + pool->start = tem->s; + pool->end = tem->s + blockSize; + } + return XML_TRUE; +} + +static int FASTCALL +nextScaffoldPart(XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + CONTENT_SCAFFOLD * me; + int next; + + if (!dtd->scaffIndex) { + dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); + if (!dtd->scaffIndex) + return -1; + dtd->scaffIndex[0] = 0; + } + + if (dtd->scaffCount >= dtd->scaffSize) { + CONTENT_SCAFFOLD *temp; + if (dtd->scaffold) { + temp = (CONTENT_SCAFFOLD *) + REALLOC(dtd->scaffold, dtd->scaffSize * 2 * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize *= 2; + } + else { + temp = (CONTENT_SCAFFOLD *)MALLOC(INIT_SCAFFOLD_ELEMENTS + * sizeof(CONTENT_SCAFFOLD)); + if (temp == NULL) + return -1; + dtd->scaffSize = INIT_SCAFFOLD_ELEMENTS; + } + dtd->scaffold = temp; + } + next = dtd->scaffCount++; + me = &dtd->scaffold[next]; + if (dtd->scaffLevel) { + CONTENT_SCAFFOLD *parent = &dtd->scaffold[dtd->scaffIndex[dtd->scaffLevel-1]]; + if (parent->lastchild) { + dtd->scaffold[parent->lastchild].nextsib = next; + } + if (!parent->childcnt) + parent->firstchild = next; + parent->lastchild = next; + parent->childcnt++; + } + me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; + return next; +} + +static void +build_node(XML_Parser parser, + int src_node, + XML_Content *dest, + XML_Content **contpos, + XML_Char **strpos) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + dest->type = dtd->scaffold[src_node].type; + dest->quant = dtd->scaffold[src_node].quant; + if (dest->type == XML_CTYPE_NAME) { + const XML_Char *src; + dest->name = *strpos; + src = dtd->scaffold[src_node].name; + for (;;) { + *(*strpos)++ = *src; + if (!*src) + break; + src++; + } + dest->numchildren = 0; + dest->children = NULL; + } + else { + unsigned int i; + int cn; + dest->numchildren = dtd->scaffold[src_node].childcnt; + dest->children = *contpos; + *contpos += dest->numchildren; + for (i = 0, cn = dtd->scaffold[src_node].firstchild; + i < dest->numchildren; + i++, cn = dtd->scaffold[cn].nextsib) { + build_node(parser, cn, &(dest->children[i]), contpos, strpos); + } + dest->name = NULL; + } +} + +static XML_Content * +build_model (XML_Parser parser) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + XML_Content *ret; + XML_Content *cpos; + XML_Char * str; + int allocsize = (dtd->scaffCount * sizeof(XML_Content) + + (dtd->contentStringLen * sizeof(XML_Char))); + + ret = (XML_Content *)MALLOC(allocsize); + if (!ret) + return NULL; + + str = (XML_Char *) (&ret[dtd->scaffCount]); + cpos = &ret[1]; + + build_node(parser, 0, ret, &cpos, &str); + return ret; +} + +static ELEMENT_TYPE * +getElementType(XML_Parser parser, + const ENCODING *enc, + const char *ptr, + const char *end) +{ + DTD * const dtd = _dtd; /* save one level of indirection */ + const XML_Char *name = poolStoreString(&dtd->pool, enc, ptr, end); + ELEMENT_TYPE *ret; + + if (!name) + return NULL; + ret = (ELEMENT_TYPE *) lookup(parser, &dtd->elementTypes, name, sizeof(ELEMENT_TYPE)); + if (!ret) + return NULL; + if (ret->name != name) + poolDiscard(&dtd->pool); + else { + poolFinish(&dtd->pool); + if (!setElementTypePrefix(parser, ret)) + return NULL; + } + return ret; +} diff --git a/Utilities/cmexpat/xmlrole.c b/Utilities/cmexpat/lib/xmlrole.c index 289964c..f6e66ab 100644 --- a/Utilities/cmexpat/xmlrole.c +++ b/Utilities/cmexpat/lib/xmlrole.c @@ -1,18 +1,25 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ -static char RCSId[] - = "$Header$"; -const char* cm_expat_GetXMLRole_RCSId() -{ - /* Avoid warning about unused static without removing RCSId from original. */ - return RCSId; -} - -#include <cmexpat/expatConfig.h> +#include <stddef.h> + +#ifdef COMPILING_FOR_WINDOWS +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include <expat_config.h> +#endif +#endif /* ndef COMPILING_FOR_WINDOWS */ +#include "expat_external.h" +#include "internal.h" #include "xmlrole.h" #include "ascii.h" @@ -23,29 +30,60 @@ const char* cm_expat_GetXMLRole_RCSId() */ -static const char KW_ANY[] = { ASCII_A, ASCII_N, ASCII_Y, '\0' }; -static const char KW_ATTLIST[] = { ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; -static const char KW_CDATA[] = { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_DOCTYPE[] = { ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; -static const char KW_ELEMENT[] = { ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; -static const char KW_EMPTY[] = { ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; -static const char KW_ENTITIES[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; -static const char KW_ENTITY[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; -static const char KW_FIXED[] = { ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; -static const char KW_ID[] = { ASCII_I, ASCII_D, '\0' }; -static const char KW_IDREF[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; -static const char KW_IDREFS[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; -static const char KW_IGNORE[] = { ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; -static const char KW_IMPLIED[] = { ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; -static const char KW_INCLUDE[] = { ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; -static const char KW_NDATA[] = { ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_NMTOKEN[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; -static const char KW_NMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; -static const char KW_NOTATION[] = { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, '\0' }; -static const char KW_PCDATA[] = { ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_PUBLIC[] = { ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; -static const char KW_REQUIRED[] = { ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, '\0' }; -static const char KW_SYSTEM[] = { ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; +static const char KW_ANY[] = { + ASCII_A, ASCII_N, ASCII_Y, '\0' }; +static const char KW_ATTLIST[] = { + ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; +static const char KW_CDATA[] = { + ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_DOCTYPE[] = { + ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; +static const char KW_ELEMENT[] = { + ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; +static const char KW_EMPTY[] = { + ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; +static const char KW_ENTITIES[] = { + ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, + '\0' }; +static const char KW_ENTITY[] = { + ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; +static const char KW_FIXED[] = { + ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; +static const char KW_ID[] = { + ASCII_I, ASCII_D, '\0' }; +static const char KW_IDREF[] = { + ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; +static const char KW_IDREFS[] = { + ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; +#ifdef XML_DTD +static const char KW_IGNORE[] = { + ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; +#endif +static const char KW_IMPLIED[] = { + ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; +#ifdef XML_DTD +static const char KW_INCLUDE[] = { + ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; +#endif +static const char KW_NDATA[] = { + ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_NMTOKEN[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; +static const char KW_NMTOKENS[] = { + ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, + '\0' }; +static const char KW_NOTATION[] = + { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, + '\0' }; +static const char KW_PCDATA[] = { + ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; +static const char KW_PUBLIC[] = { + ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; +static const char KW_REQUIRED[] = { + ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, + '\0' }; +static const char KW_SYSTEM[] = { + ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; #ifndef MIN_BYTES_PER_CHAR #define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) @@ -60,18 +98,18 @@ static const char KW_SYSTEM[] = { ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, A #define setTopLevel(state) ((state)->handler = internalSubset) #endif /* not XML_DTD */ -typedef int PROLOG_HANDLER(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); +typedef int PTRCALL PROLOG_HANDLER(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc); static PROLOG_HANDLER prolog0, prolog1, prolog2, doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, internalSubset, entity0, entity1, entity2, entity3, entity4, entity5, entity6, - entity7, entity8, entity9, + entity7, entity8, entity9, entity10, notation0, notation1, notation2, notation3, notation4, attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, attlist7, attlist8, attlist9, @@ -84,15 +122,14 @@ static PROLOG_HANDLER declClose, error; -static -int common(PROLOG_STATE *state, int tok); +static int FASTCALL common(PROLOG_STATE *state, int tok); -static -int prolog0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +prolog0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: @@ -103,9 +140,10 @@ int prolog0(PROLOG_STATE *state, return XML_ROLE_XML_DECL; case XML_TOK_PI: state->handler = prolog1; - return XML_ROLE_NONE; + return XML_ROLE_PI; case XML_TOK_COMMENT: state->handler = prolog1; + return XML_ROLE_COMMENT; case XML_TOK_BOM: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: @@ -115,7 +153,7 @@ int prolog0(PROLOG_STATE *state, KW_DOCTYPE)) break; state->handler = doctype0; - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_INSTANCE_START: state->handler = error; return XML_ROLE_INSTANCE_START; @@ -123,18 +161,20 @@ int prolog0(PROLOG_STATE *state, return common(state, tok); } -static -int prolog1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +prolog1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_PI: + return XML_ROLE_PI; case XML_TOK_COMMENT: + return XML_ROLE_COMMENT; case XML_TOK_BOM: return XML_ROLE_NONE; case XML_TOK_DECL_OPEN: @@ -144,7 +184,7 @@ int prolog1(PROLOG_STATE *state, KW_DOCTYPE)) break; state->handler = doctype0; - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_INSTANCE_START: state->handler = error; return XML_ROLE_INSTANCE_START; @@ -152,22 +192,20 @@ int prolog1(PROLOG_STATE *state, return common(state, tok); } -static -int prolog2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +prolog2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; case XML_TOK_PI: + return XML_ROLE_PI; case XML_TOK_COMMENT: - return XML_ROLE_NONE; + return XML_ROLE_COMMENT; case XML_TOK_INSTANCE_START: state->handler = error; return XML_ROLE_INSTANCE_START; @@ -175,19 +213,16 @@ int prolog2(PROLOG_STATE *state, return common(state, tok); } -static -int doctype0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +doctype0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = doctype1; @@ -196,16 +231,16 @@ int doctype0(PROLOG_STATE *state, return common(state, tok); } -static -int doctype1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +doctype1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_OPEN_BRACKET: state->handler = internalSubset; return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; @@ -215,30 +250,27 @@ int doctype1(PROLOG_STATE *state, case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = doctype3; - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = doctype2; - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; } break; } return common(state, tok); } -static -int doctype2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +doctype2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_LITERAL: state->handler = doctype3; return XML_ROLE_DOCTYPE_PUBLIC_ID; @@ -246,19 +278,16 @@ int doctype2(PROLOG_STATE *state, return common(state, tok); } -static -int doctype3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +doctype3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_LITERAL: state->handler = doctype4; return XML_ROLE_DOCTYPE_SYSTEM_ID; @@ -266,19 +295,16 @@ int doctype3(PROLOG_STATE *state, return common(state, tok); } -static -int doctype4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +doctype4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_OPEN_BRACKET: state->handler = internalSubset; return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; @@ -289,19 +315,16 @@ int doctype4(PROLOG_STATE *state, return common(state, tok); } -static -int doctype5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +doctype5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_DOCTYPE_NONE; case XML_TOK_DECL_CLOSE: state->handler = prolog2; return XML_ROLE_DOCTYPE_CLOSE; @@ -309,12 +332,12 @@ int doctype5(PROLOG_STATE *state, return common(state, tok); } -static -int internalSubset(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +internalSubset(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: @@ -325,37 +348,40 @@ int internalSubset(PROLOG_STATE *state, end, KW_ENTITY)) { state->handler = entity0; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; } if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ATTLIST)) { state->handler = attlist0; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_ELEMENT)) { state->handler = element0; - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; } if (XmlNameMatchesAscii(enc, ptr + 2 * MIN_BYTES_PER_CHAR(enc), end, KW_NOTATION)) { state->handler = notation0; - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; } break; case XML_TOK_PI: + return XML_ROLE_PI; case XML_TOK_COMMENT: - return XML_ROLE_NONE; + return XML_ROLE_COMMENT; case XML_TOK_PARAM_ENTITY_REF: return XML_ROLE_PARAM_ENTITY_REF; case XML_TOK_CLOSE_BRACKET: state->handler = doctype5; + return XML_ROLE_DOCTYPE_NONE; + case XML_TOK_NONE: return XML_ROLE_NONE; } return common(state, tok); @@ -363,12 +389,12 @@ int internalSubset(PROLOG_STATE *state, #ifdef XML_DTD -static -int externalSubset0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +externalSubset0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { state->handler = externalSubset1; if (tok == XML_TOK_XML_DECL) @@ -376,12 +402,12 @@ int externalSubset0(PROLOG_STATE *state, return externalSubset1(state, tok, ptr, end, enc); } -static -int externalSubset1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +externalSubset1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_COND_SECT_OPEN: @@ -408,22 +434,19 @@ int externalSubset1(PROLOG_STATE *state, #endif /* XML_DTD */ -static -int entity0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_PERCENT: state->handler = entity1; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: state->handler = entity2; return XML_ROLE_GENERAL_ENTITY_NAME; @@ -431,19 +454,16 @@ int entity0(PROLOG_STATE *state, return common(state, tok); } -static -int entity1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: state->handler = entity7; return XML_ROLE_PARAM_ENTITY_NAME; @@ -451,46 +471,44 @@ int entity1(PROLOG_STATE *state, return common(state, tok); } -static -int entity2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = entity4; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = entity3; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; } break; case XML_TOK_LITERAL: state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; return XML_ROLE_ENTITY_VALUE; } return common(state, tok); } -static -int entity3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity4; return XML_ROLE_ENTITY_PUBLIC_ID; @@ -498,20 +516,16 @@ int entity3(PROLOG_STATE *state, return common(state, tok); } - -static -int entity4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity5; return XML_ROLE_ENTITY_SYSTEM_ID; @@ -519,89 +533,85 @@ int entity4(PROLOG_STATE *state, return common(state, tok); } -static -int entity5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_DECL_CLOSE: setTopLevel(state); return XML_ROLE_ENTITY_COMPLETE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { state->handler = entity6; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; } break; } return common(state, tok); } -static -int entity6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity6(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; return XML_ROLE_ENTITY_NOTATION_NAME; } return common(state, tok); } -static -int entity7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = entity9; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = entity8; - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; } break; case XML_TOK_LITERAL: state->handler = declClose; + state->role_none = XML_ROLE_ENTITY_NONE; return XML_ROLE_ENTITY_VALUE; } return common(state, tok); } -static -int entity8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity8(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: state->handler = entity9; return XML_ROLE_ENTITY_PUBLIC_ID; @@ -609,39 +619,50 @@ int entity8(PROLOG_STATE *state, return common(state, tok); } -static -int entity9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity9(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; case XML_TOK_LITERAL: - state->handler = declClose; + state->handler = entity10; return XML_ROLE_ENTITY_SYSTEM_ID; } return common(state, tok); } -static -int notation0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +entity10(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ENTITY_NONE; + case XML_TOK_DECL_CLOSE: + setTopLevel(state); + return XML_ROLE_ENTITY_COMPLETE; + } + return common(state, tok); +} + +static int PTRCALL +notation0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) +{ + switch (tok) { + case XML_TOK_PROLOG_S: + return XML_ROLE_NOTATION_NONE; case XML_TOK_NAME: state->handler = notation1; return XML_ROLE_NOTATION_NAME; @@ -649,43 +670,40 @@ int notation0(PROLOG_STATE *state, return common(state, tok); } -static -int notation1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +notation1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { state->handler = notation3; - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; } if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { state->handler = notation2; - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; } break; } return common(state, tok); } -static -int notation2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +notation2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; case XML_TOK_LITERAL: state->handler = notation4; return XML_ROLE_NOTATION_PUBLIC_ID; @@ -693,41 +711,37 @@ int notation2(PROLOG_STATE *state, return common(state, tok); } -static -int notation3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +notation3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; case XML_TOK_LITERAL: state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; return XML_ROLE_NOTATION_SYSTEM_ID; } return common(state, tok); } -static -int notation4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +notation4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_NOTATION_NONE; case XML_TOK_LITERAL: state->handler = declClose; + state->role_none = XML_ROLE_NOTATION_NONE; return XML_ROLE_NOTATION_SYSTEM_ID; case XML_TOK_DECL_CLOSE: setTopLevel(state); @@ -736,19 +750,16 @@ int notation4(PROLOG_STATE *state, return common(state, tok); } -static -int attlist0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = attlist1; @@ -757,22 +768,19 @@ int attlist0(PROLOG_STATE *state, return common(state, tok); } -static -int attlist1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_DECL_CLOSE: setTopLevel(state); - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = attlist2; @@ -781,22 +789,19 @@ int attlist1(PROLOG_STATE *state, return common(state, tok); } -static -int attlist2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: { - static const char *types[] = { + static const char * const types[] = { KW_CDATA, KW_ID, KW_IDREF, @@ -815,29 +820,26 @@ int attlist2(PROLOG_STATE *state, } if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { state->handler = attlist5; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } break; case XML_TOK_OPEN_PAREN: state->handler = attlist3; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } -static -int attlist3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_NMTOKEN: case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: @@ -847,63 +849,53 @@ int attlist3(PROLOG_STATE *state, return common(state, tok); } -static -int attlist4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_CLOSE_PAREN: state->handler = attlist8; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_OR: state->handler = attlist3; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } -static -int attlist5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_OPEN_PAREN: state->handler = attlist6; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } - -static -int attlist6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist6(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_NAME: state->handler = attlist7; return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; @@ -911,43 +903,37 @@ int attlist6(PROLOG_STATE *state, return common(state, tok); } -static -int attlist7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_CLOSE_PAREN: state->handler = attlist8; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_OR: state->handler = attlist6; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } return common(state, tok); } /* default value */ -static -int attlist8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist8(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_POUND_NAME: if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), @@ -968,7 +954,7 @@ int attlist8(PROLOG_STATE *state, end, KW_FIXED)) { state->handler = attlist9; - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; } break; case XML_TOK_LITERAL: @@ -978,19 +964,16 @@ int attlist8(PROLOG_STATE *state, return common(state, tok); } -static -int attlist9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +attlist9(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ATTLIST_NONE; case XML_TOK_LITERAL: state->handler = attlist1; return XML_ROLE_FIXED_ATTRIBUTE_VALUE; @@ -998,19 +981,16 @@ int attlist9(PROLOG_STATE *state, return common(state, tok); } -static -int element0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = element1; @@ -1019,26 +999,25 @@ int element0(PROLOG_STATE *state, return common(state, tok); } -static -int element1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_NAME: if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_CONTENT_EMPTY; } if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_CONTENT_ANY; } break; @@ -1050,19 +1029,16 @@ int element1(PROLOG_STATE *state, return common(state, tok); } -static -int element2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_POUND_NAME: if (XmlNameMatchesAscii(enc, ptr + MIN_BYTES_PER_CHAR(enc), @@ -1093,45 +1069,41 @@ int element2(PROLOG_STATE *state, return common(state, tok); } -static -int element3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element3(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_CLOSE_PAREN: state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_GROUP_CLOSE; case XML_TOK_CLOSE_PAREN_ASTERISK: state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_GROUP_CLOSE_REP; case XML_TOK_OR: state->handler = element4; - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; } return common(state, tok); } -static -int element4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element4(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_NAME: case XML_TOK_PREFIXED_NAME: state->handler = element5; @@ -1140,42 +1112,37 @@ int element4(PROLOG_STATE *state, return common(state, tok); } -static -int element5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element5(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_CLOSE_PAREN_ASTERISK: state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; return XML_ROLE_GROUP_CLOSE_REP; case XML_TOK_OR: state->handler = element4; - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; } return common(state, tok); } -static -int element6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element6(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_OPEN_PAREN: state->level += 1; return XML_ROLE_GROUP_OPEN; @@ -1196,38 +1163,43 @@ int element6(PROLOG_STATE *state, return common(state, tok); } -static -int element7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +element7(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return XML_ROLE_ELEMENT_NONE; case XML_TOK_CLOSE_PAREN: state->level -= 1; - if (state->level == 0) + if (state->level == 0) { state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } return XML_ROLE_GROUP_CLOSE; case XML_TOK_CLOSE_PAREN_ASTERISK: state->level -= 1; - if (state->level == 0) + if (state->level == 0) { state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } return XML_ROLE_GROUP_CLOSE_REP; case XML_TOK_CLOSE_PAREN_QUESTION: state->level -= 1; - if (state->level == 0) + if (state->level == 0) { state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } return XML_ROLE_GROUP_CLOSE_OPT; case XML_TOK_CLOSE_PAREN_PLUS: state->level -= 1; - if (state->level == 0) + if (state->level == 0) { state->handler = declClose; + state->role_none = XML_ROLE_ELEMENT_NONE; + } return XML_ROLE_GROUP_CLOSE_PLUS; case XML_TOK_COMMA: state->handler = element6; @@ -1241,16 +1213,13 @@ int element7(PROLOG_STATE *state, #ifdef XML_DTD -static -int condSect0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +condSect0(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -1268,16 +1237,13 @@ int condSect0(PROLOG_STATE *state, return common(state, tok); } -static -int condSect1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +condSect1(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -1289,16 +1255,13 @@ int condSect1(PROLOG_STATE *state, return common(state, tok); } -static -int condSect2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +condSect2(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: return XML_ROLE_NONE; @@ -1311,66 +1274,35 @@ int condSect2(PROLOG_STATE *state, #endif /* XML_DTD */ -static -int declClose(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +declClose(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); switch (tok) { case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; + return state->role_none; case XML_TOK_DECL_CLOSE: setTopLevel(state); - return XML_ROLE_NONE; - } - return common(state, tok); -} - -#if 0 - -static -int ignore(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); - switch (tok) { - case XML_TOK_DECL_CLOSE: - state->handler = internalSubset; - return 0; - default: - return XML_ROLE_NONE; + return state->role_none; } return common(state, tok); } -#endif -static -int error(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) +static int PTRCALL +error(PROLOG_STATE *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc) { - cmExpatUnused(state); - cmExpatUnused(tok); - cmExpatUnused(ptr); - cmExpatUnused(end); - cmExpatUnused(enc); return XML_ROLE_NONE; } -static -int common(PROLOG_STATE *state, int tok) +static int FASTCALL +common(PROLOG_STATE *state, int tok) { #ifdef XML_DTD if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) @@ -1380,18 +1312,21 @@ int common(PROLOG_STATE *state, int tok) return XML_ROLE_ERROR; } -void XmlPrologStateInit(PROLOG_STATE *state) +void +XmlPrologStateInit(PROLOG_STATE *state) { state->handler = prolog0; #ifdef XML_DTD state->documentEntity = 1; state->includeLevel = 0; + state->inEntityValue = 0; #endif /* XML_DTD */ } #ifdef XML_DTD -void XmlPrologStateInitExternalEntity(PROLOG_STATE *state) +void +XmlPrologStateInitExternalEntity(PROLOG_STATE *state) { state->handler = externalSubset0; state->documentEntity = 0; diff --git a/Utilities/cmexpat/xmlrole.h b/Utilities/cmexpat/lib/xmlrole.h index 6f25793..4dd9f06 100644 --- a/Utilities/cmexpat/xmlrole.h +++ b/Utilities/cmexpat/lib/xmlrole.h @@ -1,11 +1,16 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ #ifndef XmlRole_INCLUDED #define XmlRole_INCLUDED 1 +#ifdef __VMS +/* 0 1 2 3 0 1 2 3 + 1234567890123456789012345678901 1234567890123456789012345678901 */ +#define XmlPrologStateInitExternalEntity XmlPrologStateInitExternalEnt +#endif + #include "xmltok.h" #ifdef __cplusplus @@ -17,6 +22,7 @@ enum { XML_ROLE_NONE = 0, XML_ROLE_XML_DECL, XML_ROLE_INSTANCE_START, + XML_ROLE_DOCTYPE_NONE, XML_ROLE_DOCTYPE_NAME, XML_ROLE_DOCTYPE_SYSTEM_ID, XML_ROLE_DOCTYPE_PUBLIC_ID, @@ -24,11 +30,13 @@ enum { XML_ROLE_DOCTYPE_CLOSE, XML_ROLE_GENERAL_ENTITY_NAME, XML_ROLE_PARAM_ENTITY_NAME, + XML_ROLE_ENTITY_NONE, XML_ROLE_ENTITY_VALUE, XML_ROLE_ENTITY_SYSTEM_ID, XML_ROLE_ENTITY_PUBLIC_ID, XML_ROLE_ENTITY_COMPLETE, XML_ROLE_ENTITY_NOTATION_NAME, + XML_ROLE_NOTATION_NONE, XML_ROLE_NOTATION_NAME, XML_ROLE_NOTATION_SYSTEM_ID, XML_ROLE_NOTATION_NO_SYSTEM_ID, @@ -44,11 +52,13 @@ enum { XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, XML_ROLE_ATTRIBUTE_ENUM_VALUE, XML_ROLE_ATTRIBUTE_NOTATION_VALUE, + XML_ROLE_ATTLIST_NONE, XML_ROLE_ATTLIST_ELEMENT_NAME, XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, XML_ROLE_FIXED_ATTRIBUTE_VALUE, + XML_ROLE_ELEMENT_NONE, XML_ROLE_ELEMENT_NAME, XML_ROLE_CONTENT_ANY, XML_ROLE_CONTENT_EMPTY, @@ -64,6 +74,8 @@ enum { XML_ROLE_CONTENT_ELEMENT_REP, XML_ROLE_CONTENT_ELEMENT_OPT, XML_ROLE_CONTENT_ELEMENT_PLUS, + XML_ROLE_PI, + XML_ROLE_COMMENT, #ifdef XML_DTD XML_ROLE_TEXT_DECL, XML_ROLE_IGNORE_SECT, @@ -73,15 +85,17 @@ enum { }; typedef struct prolog_state { - int (*handler)(struct prolog_state *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); + int (PTRCALL *handler) (struct prolog_state *state, + int tok, + const char *ptr, + const char *end, + const ENCODING *enc); unsigned level; + int role_none; #ifdef XML_DTD unsigned includeLevel; int documentEntity; + int inEntityValue; #endif /* XML_DTD */ } PROLOG_STATE; diff --git a/Utilities/cmexpat/xmltok.c b/Utilities/cmexpat/lib/xmltok.c index 8ee9c75..814fe92 100644 --- a/Utilities/cmexpat/xmltok.c +++ b/Utilities/cmexpat/lib/xmltok.c @@ -1,18 +1,28 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ -#include <cmexpat/expatConfig.h> +#include <stddef.h> +#ifdef COMPILING_FOR_WINDOWS +#include "winconfig.h" +#elif defined(MACOS_CLASSIC) +#include "macconfig.h" +#elif defined(__amigaos__) +#include "amigaconfig.h" +#elif defined(__WATCOMC__) +#include "watcomconfig.h" +#else +#ifdef HAVE_EXPAT_CONFIG_H +#include <expat_config.h> +#endif +#endif /* ndef COMPILING_FOR_WINDOWS */ + +#include "expat_external.h" +#include "internal.h" #include "xmltok.h" #include "nametab.h" -#if defined(__BORLANDC__) -#pragma warn -8008 // Disable "condition is always true" warning. -#pragma warn -8066 // Disable "unreachable code" warning. -#endif - #ifdef XML_DTD #define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) #else @@ -38,20 +48,21 @@ See the file COPYING for copying permission. #define UCS2_GET_NAMING(pages, hi, lo) \ (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) -/* A 2 byte UTF-8 representation splits the characters 11 bits -between the bottom 5 and 6 bits of the bytes. -We need 8 bits to index into pages, 3 bits to add to that index and -5 bits to generate the mask. */ +/* A 2 byte UTF-8 representation splits the characters 11 bits between + the bottom 5 and 6 bits of the bytes. We need 8 bits to index into + pages, 3 bits to add to that index and 5 bits to generate the mask. +*/ #define UTF8_GET_NAMING2(pages, byte) \ (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ + ((((byte)[0]) & 3) << 1) \ + ((((byte)[1]) >> 5) & 1)] \ & (1 << (((byte)[1]) & 0x1F))) -/* A 3 byte UTF-8 representation splits the characters 16 bits -between the bottom 4, 6 and 6 bits of the bytes. -We need 8 bits to index into pages, 3 bits to add to that index and -5 bits to generate the mask. */ +/* A 3 byte UTF-8 representation splits the characters 16 bits between + the bottom 4, 6 and 6 bits of the bytes. We need 8 bits to index + into pages, 3 bits to add to that index and 5 bits to generate the + mask. +*/ #define UTF8_GET_NAMING3(pages, byte) \ (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ + ((((byte)[1]) >> 2) & 0xF)] \ @@ -67,68 +78,98 @@ We need 8 bits to index into pages, 3 bits to add to that index and ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ : 0)) -#define UTF8_INVALID3(p) \ - ((*p) == 0xED \ - ? (((p)[1] & 0x20) != 0) \ - : ((*p) == 0xEF \ - ? ((p)[1] == 0xBF && ((p)[2] == 0xBF || (p)[2] == 0xBE)) \ - : 0)) +/* Detection of invalid UTF-8 sequences is based on Table 3.1B + of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/ + with the additional restriction of not allowing the Unicode + code points 0xFFFF and 0xFFFE (sequences EF,BF,BF and EF,BF,BE). + Implementation details: + (A & 0x80) == 0 means A < 0x80 + and + (A & 0xC0) == 0xC0 means A > 0xBF +*/ -#define UTF8_INVALID4(p) ((*p) == 0xF4 && ((p)[1] & 0x30) != 0) +#define UTF8_INVALID2(p) \ + ((*p) < 0xC2 || ((p)[1] & 0x80) == 0 || ((p)[1] & 0xC0) == 0xC0) -static -int isNever(const ENCODING *enc, const char *p) +#define UTF8_INVALID3(p) \ + (((p)[2] & 0x80) == 0 \ + || \ + ((*p) == 0xEF && (p)[1] == 0xBF \ + ? \ + (p)[2] > 0xBD \ + : \ + ((p)[2] & 0xC0) == 0xC0) \ + || \ + ((*p) == 0xE0 \ + ? \ + (p)[1] < 0xA0 || ((p)[1] & 0xC0) == 0xC0 \ + : \ + ((p)[1] & 0x80) == 0 \ + || \ + ((*p) == 0xED ? (p)[1] > 0x9F : ((p)[1] & 0xC0) == 0xC0))) + +#define UTF8_INVALID4(p) \ + (((p)[3] & 0x80) == 0 || ((p)[3] & 0xC0) == 0xC0 \ + || \ + ((p)[2] & 0x80) == 0 || ((p)[2] & 0xC0) == 0xC0 \ + || \ + ((*p) == 0xF0 \ + ? \ + (p)[1] < 0x90 || ((p)[1] & 0xC0) == 0xC0 \ + : \ + ((p)[1] & 0x80) == 0 \ + || \ + ((*p) == 0xF4 ? (p)[1] > 0x8F : ((p)[1] & 0xC0) == 0xC0))) + +static int PTRFASTCALL +isNever(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); - cmExpatUnused(p); return 0; } -static -int utf8_isName2(const ENCODING *enc, const char *p) +static int PTRFASTCALL +utf8_isName2(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); } -static -int utf8_isName3(const ENCODING *enc, const char *p) +static int PTRFASTCALL +utf8_isName3(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); } #define utf8_isName4 isNever -static -int utf8_isNmstrt2(const ENCODING *enc, const char *p) +static int PTRFASTCALL +utf8_isNmstrt2(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); } -static -int utf8_isNmstrt3(const ENCODING *enc, const char *p) +static int PTRFASTCALL +utf8_isNmstrt3(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); } #define utf8_isNmstrt4 isNever -#define utf8_isInvalid2 isNever +static int PTRFASTCALL +utf8_isInvalid2(const ENCODING *enc, const char *p) +{ + return UTF8_INVALID2((const unsigned char *)p); +} -static -int utf8_isInvalid3(const ENCODING *enc, const char *p) +static int PTRFASTCALL +utf8_isInvalid3(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); return UTF8_INVALID3((const unsigned char *)p); } -static -int utf8_isInvalid4(const ENCODING *enc, const char *p) +static int PTRFASTCALL +utf8_isInvalid4(const ENCODING *enc, const char *p) { - cmExpatUnused(enc); return UTF8_INVALID4((const unsigned char *)p); } @@ -136,23 +177,25 @@ struct normal_encoding { ENCODING enc; unsigned char type[256]; #ifdef XML_MIN_SIZE - int (*byteType)(const ENCODING *, const char *); - int (*isNameMin)(const ENCODING *, const char *); - int (*isNmstrtMin)(const ENCODING *, const char *); - int (*byteToAscii)(const ENCODING *, const char *); - int (*charMatches)(const ENCODING *, const char *, int); + int (PTRFASTCALL *byteType)(const ENCODING *, const char *); + int (PTRFASTCALL *isNameMin)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrtMin)(const ENCODING *, const char *); + int (PTRFASTCALL *byteToAscii)(const ENCODING *, const char *); + int (PTRCALL *charMatches)(const ENCODING *, const char *, int); #endif /* XML_MIN_SIZE */ - int (*isName2)(const ENCODING *, const char *); - int (*isName3)(const ENCODING *, const char *); - int (*isName4)(const ENCODING *, const char *); - int (*isNmstrt2)(const ENCODING *, const char *); - int (*isNmstrt3)(const ENCODING *, const char *); - int (*isNmstrt4)(const ENCODING *, const char *); - int (*isInvalid2)(const ENCODING *, const char *); - int (*isInvalid3)(const ENCODING *, const char *); - int (*isInvalid4)(const ENCODING *, const char *); + int (PTRFASTCALL *isName2)(const ENCODING *, const char *); + int (PTRFASTCALL *isName3)(const ENCODING *, const char *); + int (PTRFASTCALL *isName4)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt2)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt3)(const ENCODING *, const char *); + int (PTRFASTCALL *isNmstrt4)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid2)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid3)(const ENCODING *, const char *); + int (PTRFASTCALL *isInvalid4)(const ENCODING *, const char *); }; +#define AS_NORMAL_ENCODING(enc) ((const struct normal_encoding *) (enc)) + #ifdef XML_MIN_SIZE #define STANDARD_VTABLE(E) \ @@ -179,9 +222,18 @@ struct normal_encoding { E ## isInvalid3, \ E ## isInvalid4 -#define EMPTY_VTABLE(E) 0, 0, 0, 0, 0, 0, 0, 0, 0 +#define NULL_VTABLE \ + /* isName2 */ NULL, \ + /* isName3 */ NULL, \ + /* isName4 */ NULL, \ + /* isNmstrt2 */ NULL, \ + /* isNmstrt3 */ NULL, \ + /* isNmstrt4 */ NULL, \ + /* isInvalid2 */ NULL, \ + /* isInvalid3 */ NULL, \ + /* isInvalid4 */ NULL -static int checkCharRefNumber(int); +static int FASTCALL checkCharRefNumber(int); #include "xmltok_impl.h" #include "ascii.h" @@ -202,22 +254,22 @@ static int checkCharRefNumber(int); (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) #ifdef XML_MIN_SIZE -static -int sb_byteType(const ENCODING *enc, const char *p) +static int PTRFASTCALL +sb_byteType(const ENCODING *enc, const char *p) { return SB_BYTE_TYPE(enc, p); } #define BYTE_TYPE(enc, p) \ - (((const struct normal_encoding *)(enc))->byteType(enc, p)) + (AS_NORMAL_ENCODING(enc)->byteType(enc, p)) #else #define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) #endif #ifdef XML_MIN_SIZE #define BYTE_TO_ASCII(enc, p) \ - (((const struct normal_encoding *)(enc))->byteToAscii(enc, p)) -static -int sb_byteToAscii(const ENCODING *enc, const char *p) + (AS_NORMAL_ENCODING(enc)->byteToAscii(enc, p)) +static int PTRFASTCALL +sb_byteToAscii(const ENCODING *enc, const char *p) { return *p; } @@ -226,17 +278,17 @@ int sb_byteToAscii(const ENCODING *enc, const char *p) #endif #define IS_NAME_CHAR(enc, p, n) \ - (((const struct normal_encoding *)(enc))->isName ## n(enc, p)) + (AS_NORMAL_ENCODING(enc)->isName ## n(enc, p)) #define IS_NMSTRT_CHAR(enc, p, n) \ - (((const struct normal_encoding *)(enc))->isNmstrt ## n(enc, p)) + (AS_NORMAL_ENCODING(enc)->isNmstrt ## n(enc, p)) #define IS_INVALID_CHAR(enc, p, n) \ - (((const struct normal_encoding *)(enc))->isInvalid ## n(enc, p)) + (AS_NORMAL_ENCODING(enc)->isInvalid ## n(enc, p)) #ifdef XML_MIN_SIZE #define IS_NAME_CHAR_MINBPC(enc, p) \ - (((const struct normal_encoding *)(enc))->isNameMin(enc, p)) + (AS_NORMAL_ENCODING(enc)->isNameMin(enc, p)) #define IS_NMSTRT_CHAR_MINBPC(enc, p) \ - (((const struct normal_encoding *)(enc))->isNmstrtMin(enc, p)) + (AS_NORMAL_ENCODING(enc)->isNmstrtMin(enc, p)) #else #define IS_NAME_CHAR_MINBPC(enc, p) (0) #define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) @@ -244,9 +296,9 @@ int sb_byteToAscii(const ENCODING *enc, const char *p) #ifdef XML_MIN_SIZE #define CHAR_MATCHES(enc, p, c) \ - (((const struct normal_encoding *)(enc))->charMatches(enc, p, c)) -static -int sb_charMatches(const ENCODING *enc, const char *p, int c) + (AS_NORMAL_ENCODING(enc)->charMatches(enc, p, c)) +static int PTRCALL +sb_charMatches(const ENCODING *enc, const char *p, int c) { return *p == c; } @@ -256,7 +308,9 @@ int sb_charMatches(const ENCODING *enc, const char *p, int c) #endif #define PREFIX(ident) normal_ ## ident +#define XML_TOK_IMPL_C #include "xmltok_impl.c" +#undef XML_TOK_IMPL_C #undef MINBPC #undef BYTE_TYPE @@ -275,14 +329,13 @@ enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ UTF8_cval4 = 0xf0 }; -static -void utf8_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) +static void PTRCALL +utf8_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) { char *to; const char *from; - cmExpatUnused(enc); if (fromLim - *fromP > toLim - *toP) { /* Avoid copying partial characters. */ for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) @@ -295,29 +348,31 @@ void utf8_toUtf8(const ENCODING *enc, *toP = to; } -static -void utf8_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) +static void PTRCALL +utf8_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { unsigned short *to = *toP; const char *from = *fromP; while (from != fromLim && to != toLim) { switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { case BT_LEAD2: - *to++ = ((from[0] & 0x1f) << 6) | (from[1] & 0x3f); + *to++ = (unsigned short)(((from[0] & 0x1f) << 6) | (from[1] & 0x3f)); from += 2; break; case BT_LEAD3: - *to++ = ((from[0] & 0xf) << 12) | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f); + *to++ = (unsigned short)(((from[0] & 0xf) << 12) + | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f)); from += 3; break; case BT_LEAD4: { unsigned long n; if (to + 1 == toLim) - break; - n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); + goto after; + n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) + | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); n -= 0x10000; to[0] = (unsigned short)((n >> 10) | 0xD800); to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); @@ -330,6 +385,7 @@ void utf8_toUtf16(const ENCODING *enc, break; } } +after: *fromP = from; *toP = to; } @@ -380,12 +436,11 @@ static const struct normal_encoding internal_utf8_encoding = { STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) }; -static -void latin1_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) +static void PTRCALL +latin1_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) { - cmExpatUnused(enc); for (;;) { unsigned char c; if (*fromP == fromLim) @@ -394,8 +449,8 @@ void latin1_toUtf8(const ENCODING *enc, if (c & 0x80) { if (toLim - *toP < 2) break; - *(*toP)++ = ((c >> 6) | UTF8_cval2); - *(*toP)++ = ((c & 0x3f) | 0x80); + *(*toP)++ = (char)((c >> 6) | UTF8_cval2); + *(*toP)++ = (char)((c & 0x3f) | 0x80); (*fromP)++; } else { @@ -406,12 +461,11 @@ void latin1_toUtf8(const ENCODING *enc, } } -static -void latin1_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) +static void PTRCALL +latin1_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { - cmExpatUnused(enc); while (*fromP != fromLim && *toP != toLim) *(*toP)++ = (unsigned char)*(*fromP)++; } @@ -424,7 +478,7 @@ static const struct normal_encoding latin1_encoding_ns = { #include "asciitab.h" #include "latin1tab.h" }, - STANDARD_VTABLE(sb_) EMPTY_VTABLE(sb_) + STANDARD_VTABLE(sb_) NULL_VTABLE }; #endif @@ -437,15 +491,14 @@ static const struct normal_encoding latin1_encoding = { #undef BT_COLON #include "latin1tab.h" }, - STANDARD_VTABLE(sb_) EMPTY_VTABLE(sb_) + STANDARD_VTABLE(sb_) NULL_VTABLE }; -static -void ascii_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) +static void PTRCALL +ascii_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) { - cmExpatUnused(enc); while (*fromP != fromLim && *toP != toLim) *(*toP)++ = *(*fromP)++; } @@ -458,7 +511,7 @@ static const struct normal_encoding ascii_encoding_ns = { #include "asciitab.h" /* BT_NONXML == 0 */ }, - STANDARD_VTABLE(sb_) EMPTY_VTABLE(sb_) + STANDARD_VTABLE(sb_) NULL_VTABLE }; #endif @@ -471,10 +524,11 @@ static const struct normal_encoding ascii_encoding = { #undef BT_COLON /* BT_NONXML == 0 */ }, - STANDARD_VTABLE(sb_) EMPTY_VTABLE(sb_) + STANDARD_VTABLE(sb_) NULL_VTABLE }; -static int unicode_byte_type(char hi, char lo) +static int PTRFASTCALL +unicode_byte_type(char hi, char lo) { switch ((unsigned char)hi) { case 0xD8: case 0xD9: case 0xDA: case 0xDB: @@ -493,13 +547,12 @@ static int unicode_byte_type(char hi, char lo) } #define DEFINE_UTF16_TO_UTF8(E) \ -static \ -void E ## toUtf8(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - char **toP, const char *toLim) \ +static void PTRCALL \ +E ## toUtf8(const ENCODING *enc, \ + const char **fromP, const char *fromLim, \ + char **toP, const char *toLim) \ { \ const char *from; \ - cmExpatUnused(enc);\ for (from = *fromP; from != fromLim; from += 2) { \ int plane; \ unsigned char lo2; \ @@ -557,12 +610,11 @@ void E ## toUtf8(const ENCODING *enc, \ } #define DEFINE_UTF16_TO_UTF16(E) \ -static \ -void E ## toUtf16(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - unsigned short **toP, const unsigned short *toLim) \ +static void PTRCALL \ +E ## toUtf16(const ENCODING *enc, \ + const char **fromP, const char *fromLim, \ + unsigned short **toP, const unsigned short *toLim) \ { \ - cmExpatUnused(enc);\ /* Avoid copying first half only of surrogate */ \ if (fromLim - *fromP > ((toLim - *toP) << 1) \ && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ @@ -608,32 +660,32 @@ DEFINE_UTF16_TO_UTF16(big2_) #ifdef XML_MIN_SIZE -static -int little2_byteType(const ENCODING *enc, const char *p) +static int PTRFASTCALL +little2_byteType(const ENCODING *enc, const char *p) { return LITTLE2_BYTE_TYPE(enc, p); } -static -int little2_byteToAscii(const ENCODING *enc, const char *p) +static int PTRFASTCALL +little2_byteToAscii(const ENCODING *enc, const char *p) { return LITTLE2_BYTE_TO_ASCII(enc, p); } -static -int little2_charMatches(const ENCODING *enc, const char *p, int c) +static int PTRCALL +little2_charMatches(const ENCODING *enc, const char *p, int c) { return LITTLE2_CHAR_MATCHES(enc, p, c); } -static -int little2_isNameMin(const ENCODING *enc, const char *p) +static int PTRFASTCALL +little2_isNameMin(const ENCODING *enc, const char *p) { return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); } -static -int little2_isNmstrtMin(const ENCODING *enc, const char *p) +static int PTRFASTCALL +little2_isNmstrtMin(const ENCODING *enc, const char *p) { return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); } @@ -648,14 +700,16 @@ int little2_isNmstrtMin(const ENCODING *enc, const char *p) #define MINBPC(enc) 2 /* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ #define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) +#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) #define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) #define IS_NAME_CHAR(enc, p, n) 0 #define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) #define IS_NMSTRT_CHAR(enc, p, n) (0) #define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) +#define XML_TOK_IMPL_C #include "xmltok_impl.c" +#undef XML_TOK_IMPL_C #undef MINBPC #undef BYTE_TYPE @@ -671,9 +725,9 @@ int little2_isNmstrtMin(const ENCODING *enc, const char *p) #ifdef XML_NS -static const struct normal_encoding little2_encoding_ns = { +static const struct normal_encoding little2_encoding_ns = { { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 12 +#if BYTEORDER == 1234 1 #else 0 @@ -683,14 +737,14 @@ static const struct normal_encoding little2_encoding_ns = { #include "asciitab.h" #include "latin1tab.h" }, - STANDARD_VTABLE(little2_) EMPTY_VTABLE(little2_) + STANDARD_VTABLE(little2_) NULL_VTABLE }; #endif -static const struct normal_encoding little2_encoding = { +static const struct normal_encoding little2_encoding = { { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 12 +#if BYTEORDER == 1234 1 #else 0 @@ -702,25 +756,25 @@ static const struct normal_encoding little2_encoding = { #undef BT_COLON #include "latin1tab.h" }, - STANDARD_VTABLE(little2_) EMPTY_VTABLE(little2_) + STANDARD_VTABLE(little2_) NULL_VTABLE }; -#if XML_BYTE_ORDER != 21 +#if BYTEORDER != 4321 #ifdef XML_NS -static const struct normal_encoding internal_little2_encoding_ns = { +static const struct normal_encoding internal_little2_encoding_ns = { { VTABLE, 2, 0, 1 }, { #include "iasciitab.h" #include "latin1tab.h" }, - STANDARD_VTABLE(little2_) EMPTY_VTABLE(little2_) + STANDARD_VTABLE(little2_) NULL_VTABLE }; #endif -static const struct normal_encoding internal_little2_encoding = { +static const struct normal_encoding internal_little2_encoding = { { VTABLE, 2, 0, 1 }, { #define BT_COLON BT_NMSTRT @@ -728,7 +782,7 @@ static const struct normal_encoding internal_little2_encoding = { #undef BT_COLON #include "latin1tab.h" }, - STANDARD_VTABLE(little2_) EMPTY_VTABLE(little2_) + STANDARD_VTABLE(little2_) NULL_VTABLE }; #endif @@ -747,32 +801,32 @@ static const struct normal_encoding internal_little2_encoding = { #ifdef XML_MIN_SIZE -static -int big2_byteType(const ENCODING *enc, const char *p) +static int PTRFASTCALL +big2_byteType(const ENCODING *enc, const char *p) { return BIG2_BYTE_TYPE(enc, p); } -static -int big2_byteToAscii(const ENCODING *enc, const char *p) +static int PTRFASTCALL +big2_byteToAscii(const ENCODING *enc, const char *p) { return BIG2_BYTE_TO_ASCII(enc, p); } -static -int big2_charMatches(const ENCODING *enc, const char *p, int c) +static int PTRCALL +big2_charMatches(const ENCODING *enc, const char *p, int c) { return BIG2_CHAR_MATCHES(enc, p, c); } -static -int big2_isNameMin(const ENCODING *enc, const char *p) +static int PTRFASTCALL +big2_isNameMin(const ENCODING *enc, const char *p) { return BIG2_IS_NAME_CHAR_MINBPC(enc, p); } -static -int big2_isNmstrtMin(const ENCODING *enc, const char *p) +static int PTRFASTCALL +big2_isNmstrtMin(const ENCODING *enc, const char *p) { return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); } @@ -787,14 +841,16 @@ int big2_isNmstrtMin(const ENCODING *enc, const char *p) #define MINBPC(enc) 2 /* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ #define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) +#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) #define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) #define IS_NAME_CHAR(enc, p, n) 0 #define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) #define IS_NMSTRT_CHAR(enc, p, n) (0) #define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) +#define XML_TOK_IMPL_C #include "xmltok_impl.c" +#undef XML_TOK_IMPL_C #undef MINBPC #undef BYTE_TYPE @@ -812,7 +868,7 @@ int big2_isNmstrtMin(const ENCODING *enc, const char *p) static const struct normal_encoding big2_encoding_ns = { { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 21 +#if BYTEORDER == 4321 1 #else 0 @@ -822,14 +878,14 @@ static const struct normal_encoding big2_encoding_ns = { #include "asciitab.h" #include "latin1tab.h" }, - STANDARD_VTABLE(big2_) EMPTY_VTABLE(big2_) + STANDARD_VTABLE(big2_) NULL_VTABLE }; #endif static const struct normal_encoding big2_encoding = { { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 21 +#if BYTEORDER == 4321 1 #else 0 @@ -841,10 +897,10 @@ static const struct normal_encoding big2_encoding = { #undef BT_COLON #include "latin1tab.h" }, - STANDARD_VTABLE(big2_) EMPTY_VTABLE(big2_) + STANDARD_VTABLE(big2_) NULL_VTABLE }; -#if XML_BYTE_ORDER != 12 +#if BYTEORDER != 1234 #ifdef XML_NS @@ -854,7 +910,7 @@ static const struct normal_encoding internal_big2_encoding_ns = { #include "iasciitab.h" #include "latin1tab.h" }, - STANDARD_VTABLE(big2_) EMPTY_VTABLE(big2_) + STANDARD_VTABLE(big2_) NULL_VTABLE }; #endif @@ -867,15 +923,15 @@ static const struct normal_encoding internal_big2_encoding = { #undef BT_COLON #include "latin1tab.h" }, - STANDARD_VTABLE(big2_) EMPTY_VTABLE(big2_) + STANDARD_VTABLE(big2_) NULL_VTABLE }; #endif #undef PREFIX -static -int streqci(const char *s1, const char *s2) +static int FASTCALL +streqci(const char *s1, const char *s2) { for (;;) { char c1 = *s1++; @@ -892,16 +948,15 @@ int streqci(const char *s1, const char *s2) return 1; } -static -void initUpdatePosition(const ENCODING *enc, const char *ptr, - const char *end, POSITION *pos) +static void PTRCALL +initUpdatePosition(const ENCODING *enc, const char *ptr, + const char *end, POSITION *pos) { - cmExpatUnused(enc); normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); } -static -int toAscii(const ENCODING *enc, const char *ptr, const char *end) +static int +toAscii(const ENCODING *enc, const char *ptr, const char *end) { char buf[1]; char *p = buf; @@ -912,34 +967,35 @@ int toAscii(const ENCODING *enc, const char *ptr, const char *end) return buf[0]; } -static -int isSpace(int c) +static int FASTCALL +isSpace(int c) { switch (c) { case 0x20: case 0xD: case 0xA: - case 0x9: + case 0x9: return 1; } return 0; } -/* Return 1 if there's just optional white space -or there's an S followed by name=val. */ -static -int parsePseudoAttribute(const ENCODING *enc, - const char *ptr, - const char *end, - const char **namePtr, - const char **nameEndPtr, - const char **valPtr, - const char **nextTokPtr) +/* Return 1 if there's just optional white space or there's an S + followed by name=val. +*/ +static int +parsePseudoAttribute(const ENCODING *enc, + const char *ptr, + const char *end, + const char **namePtr, + const char **nameEndPtr, + const char **valPtr, + const char **nextTokPtr) { int c; char open; if (ptr == end) { - *namePtr = 0; + *namePtr = NULL; return 1; } if (!isSpace(toAscii(enc, ptr, end))) { @@ -950,7 +1006,7 @@ int parsePseudoAttribute(const ENCODING *enc, ptr += enc->minBytesPerChar; } while (isSpace(toAscii(enc, ptr, end))); if (ptr == end) { - *namePtr = 0; + *namePtr = NULL; return 1; } *namePtr = ptr; @@ -991,7 +1047,7 @@ int parsePseudoAttribute(const ENCODING *enc, *nextTokPtr = ptr; return 0; } - open = c; + open = (char)c; ptr += enc->minBytesPerChar; *valPtr = ptr; for (;; ptr += enc->minBytesPerChar) { @@ -1021,7 +1077,8 @@ static const char KW_encoding[] = { }; static const char KW_standalone[] = { - ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, ASCII_n, ASCII_e, '\0' + ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, + ASCII_n, ASCII_e, '\0' }; static const char KW_yes[] = { @@ -1032,27 +1089,28 @@ static const char KW_no[] = { ASCII_n, ASCII_o, '\0' }; -static -int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, - const char *, - const char *), - int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) +static int +doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, + const char *, + const char *), + int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingName, + const ENCODING **encoding, + int *standalone) { - const char *val = 0; - const char *name = 0; - const char *nameEnd = 0; + const char *val = NULL; + const char *name = NULL; + const char *nameEnd = NULL; ptr += 5 * enc->minBytesPerChar; end -= 2 * enc->minBytesPerChar; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) || !name) { + if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) + || !name) { *badPtr = ptr; return 0; } @@ -1097,7 +1155,8 @@ int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, if (!name) return 1; } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) || isGeneralTextEntity) { + if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) + || isGeneralTextEntity) { *badPtr = name; return 0; } @@ -1122,8 +1181,8 @@ int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, return 1; } -static -int checkCharRefNumber(int result) +static int FASTCALL +checkCharRefNumber(int result) { switch (result >> 8) { case 0xD8: case 0xD9: case 0xDA: case 0xDB: @@ -1141,7 +1200,8 @@ int checkCharRefNumber(int result) return result; } -int XmlUtf8Encode(int c, char *buf) +int FASTCALL +XmlUtf8Encode(int c, char *buf) { enum { /* minN is minimum legal resulting value for N byte sequence */ @@ -1153,42 +1213,43 @@ int XmlUtf8Encode(int c, char *buf) if (c < 0) return 0; if (c < min2) { - buf[0] = (c | UTF8_cval1); + buf[0] = (char)(c | UTF8_cval1); return 1; } if (c < min3) { - buf[0] = ((c >> 6) | UTF8_cval2); - buf[1] = ((c & 0x3f) | 0x80); + buf[0] = (char)((c >> 6) | UTF8_cval2); + buf[1] = (char)((c & 0x3f) | 0x80); return 2; } if (c < min4) { - buf[0] = ((c >> 12) | UTF8_cval3); - buf[1] = (((c >> 6) & 0x3f) | 0x80); - buf[2] = ((c & 0x3f) | 0x80); + buf[0] = (char)((c >> 12) | UTF8_cval3); + buf[1] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[2] = (char)((c & 0x3f) | 0x80); return 3; } if (c < 0x110000) { - buf[0] = ((c >> 18) | UTF8_cval4); - buf[1] = (((c >> 12) & 0x3f) | 0x80); - buf[2] = (((c >> 6) & 0x3f) | 0x80); - buf[3] = ((c & 0x3f) | 0x80); + buf[0] = (char)((c >> 18) | UTF8_cval4); + buf[1] = (char)(((c >> 12) & 0x3f) | 0x80); + buf[2] = (char)(((c >> 6) & 0x3f) | 0x80); + buf[3] = (char)((c & 0x3f) | 0x80); return 4; } return 0; } -int XmlUtf16Encode(int charNum, unsigned short *buf) +int FASTCALL +XmlUtf16Encode(int charNum, unsigned short *buf) { if (charNum < 0) return 0; if (charNum < 0x10000) { - buf[0] = charNum; + buf[0] = (unsigned short)charNum; return 1; } if (charNum < 0x110000) { charNum -= 0x10000; - buf[0] = (charNum >> 10) + 0xD800; - buf[1] = (charNum & 0x3FF) + 0xDC00; + buf[0] = (unsigned short)((charNum >> 10) + 0xD800); + buf[1] = (unsigned short)((charNum & 0x3FF) + 0xDC00); return 2; } return 0; @@ -1196,67 +1257,70 @@ int XmlUtf16Encode(int charNum, unsigned short *buf) struct unknown_encoding { struct normal_encoding normal; - int (*convert)(void *userData, const char *p); + CONVERTER convert; void *userData; unsigned short utf16[256]; char utf8[256][4]; }; -int XmlSizeOfUnknownEncoding(void) +#define AS_UNKNOWN_ENCODING(enc) ((const struct unknown_encoding *) (enc)) + +int +XmlSizeOfUnknownEncoding(void) { return sizeof(struct unknown_encoding); } -static -int unknown_isName(const ENCODING *enc, const char *p) +static int PTRFASTCALL +unknown_isName(const ENCODING *enc, const char *p) { - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, p); + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); if (c & ~0xFFFF) return 0; return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); } -static -int unknown_isNmstrt(const ENCODING *enc, const char *p) +static int PTRFASTCALL +unknown_isNmstrt(const ENCODING *enc, const char *p) { - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, p); + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); if (c & ~0xFFFF) return 0; return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); } -static -int unknown_isInvalid(const ENCODING *enc, const char *p) +static int PTRFASTCALL +unknown_isInvalid(const ENCODING *enc, const char *p) { - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, p); + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); + int c = uenc->convert(uenc->userData, p); return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; } -static -void unknown_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) +static void PTRCALL +unknown_toUtf8(const ENCODING *enc, + const char **fromP, const char *fromLim, + char **toP, const char *toLim) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); char buf[XML_UTF8_ENCODE_MAX]; for (;;) { const char *utf8; int n; if (*fromP == fromLim) break; - utf8 = ((const struct unknown_encoding *)enc)->utf8[(unsigned char)**fromP]; + utf8 = uenc->utf8[(unsigned char)**fromP]; n = *utf8++; if (n == 0) { - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, *fromP); + int c = uenc->convert(uenc->userData, *fromP); n = XmlUtf8Encode(c, buf); if (n > toLim - *toP) break; utf8 = buf; - *fromP += ((const struct normal_encoding *)enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2); + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); } else { if (n > toLim - *toP) @@ -1269,19 +1333,19 @@ void unknown_toUtf8(const ENCODING *enc, } } -static -void unknown_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) +static void PTRCALL +unknown_toUtf16(const ENCODING *enc, + const char **fromP, const char *fromLim, + unsigned short **toP, const unsigned short *toLim) { + const struct unknown_encoding *uenc = AS_UNKNOWN_ENCODING(enc); while (*fromP != fromLim && *toP != toLim) { - unsigned short c - = ((const struct unknown_encoding *)enc)->utf16[(unsigned char)**fromP]; + unsigned short c = uenc->utf16[(unsigned char)**fromP]; if (c == 0) { - c = (unsigned short)((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, *fromP); - *fromP += ((const struct normal_encoding *)enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2); + c = (unsigned short) + uenc->convert(uenc->userData, *fromP); + *fromP += (AS_NORMAL_ENCODING(enc)->type[(unsigned char)**fromP] + - (BT_LEAD2 - 2)); } else (*fromP)++; @@ -1292,11 +1356,11 @@ void unknown_toUtf16(const ENCODING *enc, ENCODING * XmlInitUnknownEncoding(void *mem, int *table, - int (*convert)(void *userData, const char *p), + CONVERTER convert, void *userData) { int i; - struct unknown_encoding *e = mem; + struct unknown_encoding *e = (struct unknown_encoding *)mem; for (i = 0; i < (int)sizeof(struct normal_encoding); i++) ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; for (i = 0; i < 128; i++) @@ -1316,7 +1380,7 @@ XmlInitUnknownEncoding(void *mem, else if (c < 0) { if (c < -4) return 0; - e->normal.type[i] = BT_LEAD2 - (c + 2); + e->normal.type[i] = (unsigned char)(BT_LEAD2 - (c + 2)); e->utf8[i][0] = 0; e->utf16[i] = 0; } @@ -1328,7 +1392,7 @@ XmlInitUnknownEncoding(void *mem, e->normal.type[i] = latin1_encoding.type[c]; e->utf8[i][0] = 1; e->utf8[i][1] = (char)c; - e->utf16[i] = c == 0 ? 0xFFFF : c; + e->utf16[i] = (unsigned short)(c == 0 ? 0xFFFF : c); } else if (checkCharRefNumber(c) < 0) { e->normal.type[i] = BT_NONXML; @@ -1347,7 +1411,7 @@ XmlInitUnknownEncoding(void *mem, else e->normal.type[i] = BT_OTHER; e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); - e->utf16[i] = c; + e->utf16[i] = (unsigned short)c; } } e->userData = userData; @@ -1383,10 +1447,12 @@ enum { }; static const char KW_ISO_8859_1[] = { - ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, ASCII_MINUS, ASCII_1, '\0' + ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, + ASCII_MINUS, ASCII_1, '\0' }; static const char KW_US_ASCII[] = { - ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, '\0' + ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, + '\0' }; static const char KW_UTF_8[] = { ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' @@ -1395,16 +1461,18 @@ static const char KW_UTF_16[] = { ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' }; static const char KW_UTF_16BE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, '\0' + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, + '\0' }; static const char KW_UTF_16LE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, '\0' + ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, + '\0' }; -static -int getEncodingIndex(const char *name) +static int FASTCALL +getEncodingIndex(const char *name) { - static const char *encodingNames[] = { + static const char * const encodingNames[] = { KW_ISO_8859_1, KW_US_ASCII, KW_UTF_8, @@ -1413,7 +1481,7 @@ int getEncodingIndex(const char *name) KW_UTF_16LE, }; int i; - if (name == 0) + if (name == NULL) return NO_ENC; for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) if (streqci(name, encodingNames[i])) @@ -1421,27 +1489,28 @@ int getEncodingIndex(const char *name) return UNKNOWN_ENC; } -/* For binary compatibility, we store the index of the encoding specified -at initialization in the isUtf16 member. */ +/* For binary compatibility, we store the index of the encoding + specified at initialization in the isUtf16 member. +*/ #define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) #define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) -/* This is what detects the encoding. -encodingTable maps from encoding indices to encodings; -INIT_ENC_INDEX(enc) is the index of the external (protocol) specified encoding; -state is XML_CONTENT_STATE if we're parsing an external text entity, -and XML_PROLOG_STATE otherwise. +/* This is what detects the encoding. encodingTable maps from + encoding indices to encodings; INIT_ENC_INDEX(enc) is the index of + the external (protocol) specified encoding; state is + XML_CONTENT_STATE if we're parsing an external text entity, and + XML_PROLOG_STATE otherwise. */ -static -int initScan(const ENCODING **encodingTable, - const INIT_ENCODING *enc, - int state, - const char *ptr, - const char *end, - const char **nextTokPtr) +static int +initScan(const ENCODING * const *encodingTable, + const INIT_ENCODING *enc, + int state, + const char *ptr, + const char *end, + const char **nextTokPtr) { const ENCODING **encPtr; @@ -1506,10 +1575,12 @@ int initScan(const ENCODING **encodingTable, of ISO-8859-1 or some flavour of UTF-16 and this is an external text entity, don't look for the BOM, - because it might be a legal data. */ + because it might be a legal data. + */ if (state == XML_CONTENT_STATE) { int e = INIT_ENC_INDEX(enc); - if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC || e == UTF_16LE_ENC || e == UTF_16_ENC) + if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC + || e == UTF_16LE_ENC || e == UTF_16_ENC) break; } if (ptr + 2 == end) @@ -1522,10 +1593,12 @@ int initScan(const ENCODING **encodingTable, break; default: if (ptr[0] == '\0') { - /* 0 isn't a legal data character. Furthermore a document entity can only - start with ASCII characters. So the only way this can fail to be big-endian - UTF-16 if it it's an external parsed general entity that's labelled as - UTF-16LE. */ + /* 0 isn't a legal data character. Furthermore a document + entity can only start with ASCII characters. So the only + way this can fail to be big-endian UTF-16 if it it's an + external parsed general entity that's labelled as + UTF-16LE. + */ if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) break; *encPtr = encodingTable[UTF_16BE_ENC]; @@ -1539,7 +1612,8 @@ int initScan(const ENCODING **encodingTable, - no encoding declaration by assuming UTF-16LE. But we don't, because this would mean when presented just with a single byte, we couldn't reliably determine - whether we needed further bytes. */ + whether we needed further bytes. + */ if (state == XML_CONTENT_STATE) break; *encPtr = encodingTable[UTF_16LE_ENC]; @@ -1555,7 +1629,9 @@ int initScan(const ENCODING **encodingTable, #define NS(x) x #define ns(x) x +#define XML_TOK_NS_C #include "xmltok_ns.c" +#undef XML_TOK_NS_C #undef NS #undef ns @@ -1564,7 +1640,9 @@ int initScan(const ENCODING **encodingTable, #define NS(x) x ## NS #define ns(x) x ## _ns +#define XML_TOK_NS_C #include "xmltok_ns.c" +#undef XML_TOK_NS_C #undef NS #undef ns @@ -1572,7 +1650,7 @@ int initScan(const ENCODING **encodingTable, ENCODING * XmlInitUnknownEncodingNS(void *mem, int *table, - int (*convert)(void *userData, const char *p), + CONVERTER convert, void *userData) { ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); diff --git a/Utilities/cmexpat/lib/xmltok.h b/Utilities/cmexpat/lib/xmltok.h new file mode 100644 index 0000000..ca867aa --- /dev/null +++ b/Utilities/cmexpat/lib/xmltok.h @@ -0,0 +1,316 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +#ifndef XmlTok_INCLUDED +#define XmlTok_INCLUDED 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* The following token may be returned by XmlContentTok */ +#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be + start of illegal ]]> sequence */ +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_NONE -4 /* The string to be scanned is empty */ +#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; + might be part of CRLF sequence */ +#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ +#define XML_TOK_PARTIAL -1 /* only part of a token */ +#define XML_TOK_INVALID 0 + +/* The following tokens are returned by XmlContentTok; some are also + returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok. +*/ +#define XML_TOK_START_TAG_WITH_ATTS 1 +#define XML_TOK_START_TAG_NO_ATTS 2 +#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */ +#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 +#define XML_TOK_END_TAG 5 +#define XML_TOK_DATA_CHARS 6 +#define XML_TOK_DATA_NEWLINE 7 +#define XML_TOK_CDATA_SECT_OPEN 8 +#define XML_TOK_ENTITY_REF 9 +#define XML_TOK_CHAR_REF 10 /* numeric character reference */ + +/* The following tokens may be returned by both XmlPrologTok and + XmlContentTok. +*/ +#define XML_TOK_PI 11 /* processing instruction */ +#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ +#define XML_TOK_COMMENT 13 +#define XML_TOK_BOM 14 /* Byte order mark */ + +/* The following tokens are returned only by XmlPrologTok */ +#define XML_TOK_PROLOG_S 15 +#define XML_TOK_DECL_OPEN 16 /* <!foo */ +#define XML_TOK_DECL_CLOSE 17 /* > */ +#define XML_TOK_NAME 18 +#define XML_TOK_NMTOKEN 19 +#define XML_TOK_POUND_NAME 20 /* #name */ +#define XML_TOK_OR 21 /* | */ +#define XML_TOK_PERCENT 22 +#define XML_TOK_OPEN_PAREN 23 +#define XML_TOK_CLOSE_PAREN 24 +#define XML_TOK_OPEN_BRACKET 25 +#define XML_TOK_CLOSE_BRACKET 26 +#define XML_TOK_LITERAL 27 +#define XML_TOK_PARAM_ENTITY_REF 28 +#define XML_TOK_INSTANCE_START 29 + +/* The following occur only in element type declarations */ +#define XML_TOK_NAME_QUESTION 30 /* name? */ +#define XML_TOK_NAME_ASTERISK 31 /* name* */ +#define XML_TOK_NAME_PLUS 32 /* name+ */ +#define XML_TOK_COND_SECT_OPEN 33 /* <![ */ +#define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */ +#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ +#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ +#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ +#define XML_TOK_COMMA 38 + +/* The following token is returned only by XmlAttributeValueTok */ +#define XML_TOK_ATTRIBUTE_VALUE_S 39 + +/* The following token is returned only by XmlCdataSectionTok */ +#define XML_TOK_CDATA_SECT_CLOSE 40 + +/* With namespace processing this is returned by XmlPrologTok for a + name with a colon. +*/ +#define XML_TOK_PREFIXED_NAME 41 + +#ifdef XML_DTD +#define XML_TOK_IGNORE_SECT 42 +#endif /* XML_DTD */ + +#ifdef XML_DTD +#define XML_N_STATES 4 +#else /* not XML_DTD */ +#define XML_N_STATES 3 +#endif /* not XML_DTD */ + +#define XML_PROLOG_STATE 0 +#define XML_CONTENT_STATE 1 +#define XML_CDATA_SECTION_STATE 2 +#ifdef XML_DTD +#define XML_IGNORE_SECTION_STATE 3 +#endif /* XML_DTD */ + +#define XML_N_LITERAL_TYPES 2 +#define XML_ATTRIBUTE_VALUE_LITERAL 0 +#define XML_ENTITY_VALUE_LITERAL 1 + +/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ +#define XML_UTF8_ENCODE_MAX 4 +/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ +#define XML_UTF16_ENCODE_MAX 2 + +typedef struct position { + /* first line and first column are 0 not 1 */ + XML_Size lineNumber; + XML_Size columnNumber; +} POSITION; + +typedef struct { + const char *name; + const char *valuePtr; + const char *valueEnd; + char normalized; +} ATTRIBUTE; + +struct encoding; +typedef struct encoding ENCODING; + +typedef int (PTRCALL *SCANNER)(const ENCODING *, + const char *, + const char *, + const char **); + +struct encoding { + SCANNER scanners[XML_N_STATES]; + SCANNER literalScanners[XML_N_LITERAL_TYPES]; + int (PTRCALL *sameName)(const ENCODING *, + const char *, + const char *); + int (PTRCALL *nameMatchesAscii)(const ENCODING *, + const char *, + const char *, + const char *); + int (PTRFASTCALL *nameLength)(const ENCODING *, const char *); + const char *(PTRFASTCALL *skipS)(const ENCODING *, const char *); + int (PTRCALL *getAtts)(const ENCODING *enc, + const char *ptr, + int attsMax, + ATTRIBUTE *atts); + int (PTRFASTCALL *charRefNumber)(const ENCODING *enc, const char *ptr); + int (PTRCALL *predefinedEntityName)(const ENCODING *, + const char *, + const char *); + void (PTRCALL *updatePosition)(const ENCODING *, + const char *ptr, + const char *end, + POSITION *); + int (PTRCALL *isPublicId)(const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr); + void (PTRCALL *utf8Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + char **toP, + const char *toLim); + void (PTRCALL *utf16Convert)(const ENCODING *enc, + const char **fromP, + const char *fromLim, + unsigned short **toP, + const unsigned short *toLim); + int minBytesPerChar; + char isUtf8; + char isUtf16; +}; + +/* Scan the string starting at ptr until the end of the next complete + token, but do not scan past eptr. Return an integer giving the + type of token. + + Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. + + Return XML_TOK_PARTIAL when the string does not contain a complete + token; nextTokPtr will not be set. + + Return XML_TOK_INVALID when the string does not start a valid + token; nextTokPtr will be set to point to the character which made + the token invalid. + + Otherwise the string starts with a valid token; nextTokPtr will be + set to point to the character following the end of that token. + + Each data character counts as a single token, but adjacent data + characters may be returned together. Similarly for characters in + the prolog outside literals, comments and processing instructions. +*/ + + +#define XmlTok(enc, state, ptr, end, nextTokPtr) \ + (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) + +#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) + +#define XmlContentTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) + +#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) + +#ifdef XML_DTD + +#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ + XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) + +#endif /* XML_DTD */ + +/* This is used for performing a 2nd-level tokenization on the content + of a literal that has already been returned by XmlTok. +*/ +#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ + (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) + +#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ + XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) + +#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) + +#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ + (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) + +#define XmlNameLength(enc, ptr) \ + (((enc)->nameLength)(enc, ptr)) + +#define XmlSkipS(enc, ptr) \ + (((enc)->skipS)(enc, ptr)) + +#define XmlGetAttributes(enc, ptr, attsMax, atts) \ + (((enc)->getAtts)(enc, ptr, attsMax, atts)) + +#define XmlCharRefNumber(enc, ptr) \ + (((enc)->charRefNumber)(enc, ptr)) + +#define XmlPredefinedEntityName(enc, ptr, end) \ + (((enc)->predefinedEntityName)(enc, ptr, end)) + +#define XmlUpdatePosition(enc, ptr, end, pos) \ + (((enc)->updatePosition)(enc, ptr, end, pos)) + +#define XmlIsPublicId(enc, ptr, end, badPtr) \ + (((enc)->isPublicId)(enc, ptr, end, badPtr)) + +#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) + +#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ + (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) + +typedef struct { + ENCODING initEnc; + const ENCODING **encPtr; +} INIT_ENCODING; + +int XmlParseXmlDecl(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, + int *standalonePtr); + +int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncoding(void); +const ENCODING *XmlGetUtf16InternalEncoding(void); +int FASTCALL XmlUtf8Encode(int charNumber, char *buf); +int FASTCALL XmlUtf16Encode(int charNumber, unsigned short *buf); +int XmlSizeOfUnknownEncoding(void); + + +typedef int (XMLCALL *CONVERTER) (void *userData, const char *p); + +ENCODING * +XmlInitUnknownEncoding(void *mem, + int *table, + CONVERTER convert, + void *userData); + +int XmlParseXmlDeclNS(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingNamePtr, + const ENCODING **namedEncodingPtr, + int *standalonePtr); + +int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); +const ENCODING *XmlGetUtf8InternalEncodingNS(void); +const ENCODING *XmlGetUtf16InternalEncodingNS(void); +ENCODING * +XmlInitUnknownEncodingNS(void *mem, + int *table, + CONVERTER convert, + void *userData); +#ifdef __cplusplus +} +#endif + +#endif /* not XmlTok_INCLUDED */ diff --git a/Utilities/cmexpat/xmltok_impl.c b/Utilities/cmexpat/lib/xmltok_impl.c index 6e0be95..9c2895b 100644 --- a/Utilities/cmexpat/xmltok_impl.c +++ b/Utilities/cmexpat/lib/xmltok_impl.c @@ -1,13 +1,14 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. */ +/* This file is included! */ +#ifdef XML_TOK_IMPL_C + #ifndef IS_INVALID_CHAR #define IS_INVALID_CHAR(enc, ptr, n) (0) #endif -#ifndef INVALID_LEAD_CASE #define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ case BT_LEAD ## n: \ if (end - ptr < n) \ @@ -18,7 +19,6 @@ See the file COPYING for copying permission. } \ ptr += n; \ break; -#endif #define INVALID_CASES(ptr, nextTokPtr) \ INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ @@ -89,9 +89,9 @@ See the file COPYING for copying permission. /* ptr points to character following "<!-" */ -static -int PREFIX(scanComment)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanComment)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { if (ptr != end) { if (!CHAR_MATCHES(enc, ptr, ASCII_MINUS)) { @@ -127,9 +127,9 @@ int PREFIX(scanComment)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following "<!" */ -static -int PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; @@ -174,11 +174,11 @@ int PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_PARTIAL; } -static -int PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, int *tokPtr) +static int PTRCALL +PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, + const char *end, int *tokPtr) { int upper = 0; - cmExpatUnused(enc); *tokPtr = XML_TOK_PI; if (end - ptr != MINBPC(enc)*3) return 1; @@ -219,9 +219,9 @@ int PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following "<?" */ -static -int PREFIX(scanPi)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanPi)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { int tok; const char *target = ptr; @@ -281,14 +281,13 @@ int PREFIX(scanPi)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_PARTIAL; } - -static -int PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { - static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, ASCII_LSQB }; + static const char CDATA_LSQB[] = { ASCII_C, ASCII_D, ASCII_A, + ASCII_T, ASCII_A, ASCII_LSQB }; int i; - cmExpatUnused(enc); /* CDATA[ */ if (end - ptr < 6 * MINBPC(enc)) return XML_TOK_PARTIAL; @@ -302,9 +301,9 @@ int PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr, const char *e return XML_TOK_CDATA_SECT_OPEN; } -static -int PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { if (ptr == end) return XML_TOK_NONE; @@ -380,9 +379,9 @@ int PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, const char *en /* ptr points to character following "</" */ -static -int PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; @@ -411,7 +410,8 @@ int PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_PARTIAL; #ifdef XML_NS case BT_COLON: - /* no need to check qname syntax here, since end-tag must match exactly */ + /* no need to check qname syntax here, + since end-tag must match exactly */ ptr += MINBPC(enc); break; #endif @@ -428,9 +428,9 @@ int PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following "&#X" */ -static -int PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { if (ptr != end) { switch (BYTE_TYPE(enc, ptr)) { @@ -460,9 +460,9 @@ int PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, const char *end /* ptr points to character following "&#" */ -static -int PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { if (ptr != end) { if (CHAR_MATCHES(enc, ptr, ASCII_x)) @@ -492,9 +492,9 @@ int PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following "&" */ -static -int PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; @@ -522,9 +522,9 @@ int PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following first character of attribute name */ -static -int PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { #ifdef XML_NS int hadColon = 0; @@ -578,7 +578,6 @@ int PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end, hadColon = 0; #endif for (;;) { - ptr += MINBPC(enc); if (ptr == end) return XML_TOK_PARTIAL; @@ -682,9 +681,9 @@ int PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following "<" */ -static -int PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { #ifdef XML_NS int hadColon; @@ -700,7 +699,8 @@ int PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, case BT_MINUS: return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr); case BT_LSQB: - return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc), end, nextTokPtr); + return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc), + end, nextTokPtr); } *nextTokPtr = ptr; return XML_TOK_INVALID; @@ -781,9 +781,9 @@ int PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_PARTIAL; } -static -int PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { if (ptr == end) return XML_TOK_NONE; @@ -880,9 +880,9 @@ int PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, /* ptr points to character following "%" */ -static -int PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; @@ -909,9 +909,9 @@ int PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_PARTIAL; } -static -int PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { if (ptr == end) return XML_TOK_PARTIAL; @@ -936,10 +936,10 @@ int PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, return -XML_TOK_POUND_NAME; } -static -int PREFIX(scanLit)(int open, const ENCODING *enc, - const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(scanLit)(int open, const ENCODING *enc, + const char *ptr, const char *end, + const char **nextTokPtr) { while (ptr != end) { int t = BYTE_TYPE(enc, ptr); @@ -968,9 +968,9 @@ int PREFIX(scanLit)(int open, const ENCODING *enc, return XML_TOK_PARTIAL; } -static -int PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) { int tok; if (ptr == end) @@ -1012,8 +1012,11 @@ int PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, return XML_TOK_INVALID; } case BT_CR: - if (ptr + MINBPC(enc) == end) + if (ptr + MINBPC(enc) == end) { + *nextTokPtr = end; + /* indicate that this might be part of a CR/LF pair */ return -XML_TOK_PROLOG_S; + } /* fall through */ case BT_S: case BT_LF: for (;;) { @@ -1196,9 +1199,9 @@ int PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, return -tok; } -static -int PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { const char *start; if (ptr == end) @@ -1254,9 +1257,9 @@ int PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char * return XML_TOK_DATA_CHARS; } -static -int PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { const char *start; if (ptr == end) @@ -1311,9 +1314,9 @@ int PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end #ifdef XML_DTD -static -int PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) +static int PTRCALL +PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, + const char *end, const char **nextTokPtr) { int level = 0; if (MINBPC(enc) > 1) { @@ -1364,9 +1367,9 @@ int PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *e #endif /* XML_DTD */ -static -int PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr) +static int PTRCALL +PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, + const char **badPtr) { ptr += MINBPC(enc); end -= MINBPC(enc); @@ -1419,13 +1422,14 @@ int PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, return 1; } -/* This must only be called for a well-formed start-tag or empty element tag. -Returns the number of attributes. Pointers to the first attsMax attributes -are stored in atts. */ +/* This must only be called for a well-formed start-tag or empty + element tag. Returns the number of attributes. Pointers to the + first attsMax attributes are stored in atts. +*/ -static -int PREFIX(getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts) +static int PTRCALL +PREFIX(getAtts)(const ENCODING *enc, const char *ptr, + int attsMax, ATTRIBUTE *atts) { enum { other, inName, inValue } state = inName; int nAtts = 0; @@ -1516,15 +1520,16 @@ int PREFIX(getAtts)(const ENCODING *enc, const char *ptr, /* not reached */ } -static -int PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) +static int PTRFASTCALL +PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) { int result = 0; - cmExpatUnused(enc); /* skip &# */ ptr += 2*MINBPC(enc); if (CHAR_MATCHES(enc, ptr, ASCII_x)) { - for (ptr += MINBPC(enc); !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { + for (ptr += MINBPC(enc); + !CHAR_MATCHES(enc, ptr, ASCII_SEMI); + ptr += MINBPC(enc)) { int c = BYTE_TO_ASCII(enc, ptr); switch (c) { case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: @@ -1532,11 +1537,13 @@ int PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) result <<= 4; result |= (c - ASCII_0); break; - case ASCII_A: case ASCII_B: case ASCII_C: case ASCII_D: case ASCII_E: case ASCII_F: + case ASCII_A: case ASCII_B: case ASCII_C: + case ASCII_D: case ASCII_E: case ASCII_F: result <<= 4; result += 10 + (c - ASCII_A); break; - case ASCII_a: case ASCII_b: case ASCII_c: case ASCII_d: case ASCII_e: case ASCII_f: + case ASCII_a: case ASCII_b: case ASCII_c: + case ASCII_d: case ASCII_e: case ASCII_f: result <<= 4; result += 10 + (c - ASCII_a); break; @@ -1557,10 +1564,10 @@ int PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) return checkCharRefNumber(result); } -static -int PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, const char *end) +static int PTRCALL +PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, + const char *end) { - cmExpatUnused(enc); switch ((end - ptr)/MINBPC(enc)) { case 2: if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { @@ -1611,8 +1618,8 @@ int PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, const cha return 0; } -static -int PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) +static int PTRCALL +PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) { for (;;) { switch (BYTE_TYPE(enc, ptr1)) { @@ -1675,11 +1682,10 @@ int PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) /* not reached */ } -static -int PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, - const char *end1, const char *ptr2) +static int PTRCALL +PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, + const char *end1, const char *ptr2) { - cmExpatUnused(enc); for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { if (ptr1 == end1) return 0; @@ -1689,8 +1695,8 @@ int PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, return ptr1 == end1; } -static -int PREFIX(nameLength)(const ENCODING *enc, const char *ptr) +static int PTRFASTCALL +PREFIX(nameLength)(const ENCODING *enc, const char *ptr) { const char *start = ptr; for (;;) { @@ -1711,13 +1717,13 @@ int PREFIX(nameLength)(const ENCODING *enc, const char *ptr) ptr += MINBPC(enc); break; default: - return ptr - start; + return (int)(ptr - start); } } } -static -const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr) +static const char * PTRFASTCALL +PREFIX(skipS)(const ENCODING *enc, const char *ptr) { for (;;) { switch (BYTE_TYPE(enc, ptr)) { @@ -1732,13 +1738,13 @@ const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr) } } -static -void PREFIX(updatePosition)(const ENCODING *enc, - const char *ptr, - const char *end, - POSITION *pos) +static void PTRCALL +PREFIX(updatePosition)(const ENCODING *enc, + const char *ptr, + const char *end, + POSITION *pos) { - while (ptr != end) { + while (ptr < end) { switch (BYTE_TYPE(enc, ptr)) { #define LEAD_CASE(n) \ case BT_LEAD ## n: \ @@ -1747,7 +1753,7 @@ void PREFIX(updatePosition)(const ENCODING *enc, LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) #undef LEAD_CASE case BT_LF: - pos->columnNumber = (unsigned)-1; + pos->columnNumber = (XML_Size)-1; pos->lineNumber++; ptr += MINBPC(enc); break; @@ -1756,7 +1762,7 @@ void PREFIX(updatePosition)(const ENCODING *enc, ptr += MINBPC(enc); if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) ptr += MINBPC(enc); - pos->columnNumber = (unsigned)-1; + pos->columnNumber = (XML_Size)-1; break; default: ptr += MINBPC(enc); @@ -1773,3 +1779,5 @@ void PREFIX(updatePosition)(const ENCODING *enc, #undef CHECK_NAME_CASES #undef CHECK_NMSTRT_CASE #undef CHECK_NMSTRT_CASES + +#endif /* XML_TOK_IMPL_C */ diff --git a/Utilities/cmexpat/xmltok_impl.h b/Utilities/cmexpat/lib/xmltok_impl.h index da0ea60..da0ea60 100644 --- a/Utilities/cmexpat/xmltok_impl.h +++ b/Utilities/cmexpat/lib/xmltok_impl.h diff --git a/Utilities/cmexpat/lib/xmltok_ns.c b/Utilities/cmexpat/lib/xmltok_ns.c new file mode 100644 index 0000000..c3b88fd --- /dev/null +++ b/Utilities/cmexpat/lib/xmltok_ns.c @@ -0,0 +1,115 @@ +/* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd + See the file COPYING for copying permission. +*/ + +/* This file is included! */ +#ifdef XML_TOK_NS_C + +const ENCODING * +NS(XmlGetUtf8InternalEncoding)(void) +{ + return &ns(internal_utf8_encoding).enc; +} + +const ENCODING * +NS(XmlGetUtf16InternalEncoding)(void) +{ +#if BYTEORDER == 1234 + return &ns(internal_little2_encoding).enc; +#elif BYTEORDER == 4321 + return &ns(internal_big2_encoding).enc; +#else + const short n = 1; + return (*(const char *)&n + ? &ns(internal_little2_encoding).enc + : &ns(internal_big2_encoding).enc); +#endif +} + +static const ENCODING * const NS(encodings)[] = { + &ns(latin1_encoding).enc, + &ns(ascii_encoding).enc, + &ns(utf8_encoding).enc, + &ns(big2_encoding).enc, + &ns(big2_encoding).enc, + &ns(little2_encoding).enc, + &ns(utf8_encoding).enc /* NO_ENC */ +}; + +static int PTRCALL +NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + return initScan(NS(encodings), (const INIT_ENCODING *)enc, + XML_PROLOG_STATE, ptr, end, nextTokPtr); +} + +static int PTRCALL +NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, + const char **nextTokPtr) +{ + return initScan(NS(encodings), (const INIT_ENCODING *)enc, + XML_CONTENT_STATE, ptr, end, nextTokPtr); +} + +int +NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, + const char *name) +{ + int i = getEncodingIndex(name); + if (i == UNKNOWN_ENC) + return 0; + SET_INIT_ENC_INDEX(p, i); + p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); + p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); + p->initEnc.updatePosition = initUpdatePosition; + p->encPtr = encPtr; + *encPtr = &(p->initEnc); + return 1; +} + +static const ENCODING * +NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) +{ +#define ENCODING_MAX 128 + char buf[ENCODING_MAX]; + char *p = buf; + int i; + XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); + if (ptr != end) + return 0; + *p = 0; + if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) + return enc; + i = getEncodingIndex(buf); + if (i == UNKNOWN_ENC) + return 0; + return NS(encodings)[i]; +} + +int +NS(XmlParseXmlDecl)(int isGeneralTextEntity, + const ENCODING *enc, + const char *ptr, + const char *end, + const char **badPtr, + const char **versionPtr, + const char **versionEndPtr, + const char **encodingName, + const ENCODING **encoding, + int *standalone) +{ + return doParseXmlDecl(NS(findEncoding), + isGeneralTextEntity, + enc, + ptr, + end, + badPtr, + versionPtr, + versionEndPtr, + encodingName, + encoding, + standalone); +} + +#endif /* XML_TOK_NS_C */ diff --git a/Utilities/cmexpat/xmlparse.c b/Utilities/cmexpat/xmlparse.c deleted file mode 100644 index 29ea3d3..0000000 --- a/Utilities/cmexpat/xmlparse.c +++ /dev/null @@ -1,4622 +0,0 @@ -/* -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#include <cmexpat/expatConfig.h> -#include <cmexpat/expat.h> - -#include <stddef.h> -#include <string.h> - -#ifdef XML_UNICODE -#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX -#define XmlConvert XmlUtf16Convert -#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS -#define XmlEncode XmlUtf16Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1)) -typedef unsigned short ICHAR; -#else -#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX -#define XmlConvert XmlUtf8Convert -#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS -#define XmlEncode XmlUtf8Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) -typedef char ICHAR; -#endif - - -#ifndef XML_NS - -#define XmlInitEncodingNS XmlInitEncoding -#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding -#undef XmlGetInternalEncodingNS -#define XmlGetInternalEncodingNS XmlGetInternalEncoding -#define XmlParseXmlDeclNS XmlParseXmlDecl - -#endif - -#ifdef XML_UNICODE_WCHAR_T -#define XML_T(x) L ## x -#else -#define XML_T(x) x -#endif - -/* Round up n to be a multiple of sz, where sz is a power of 2. */ -#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) - -#include "xmltok.h" -#include "xmlrole.h" - -typedef const XML_Char *KEY; - -typedef struct { - KEY name; -} NAMED; - -typedef struct { - NAMED **v; - size_t size; - size_t used; - size_t usedLim; - XML_Memory_Handling_Suite *mem; -} HASH_TABLE; - -typedef struct { - NAMED **p; - NAMED **end; -} HASH_TABLE_ITER; - -#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ -#define INIT_DATA_BUF_SIZE 1024 -#define INIT_ATTS_SIZE 16 -#define INIT_BLOCK_SIZE 1024 -#define INIT_BUFFER_SIZE 1024 - -#define EXPAND_SPARE 24 - -typedef struct binding { - struct prefix *prefix; - struct binding *nextTagBinding; - struct binding *prevPrefixBinding; - const struct attribute_id *attId; - XML_Char *uri; - int uriLen; - int uriAlloc; -} BINDING; - -typedef struct prefix { - const XML_Char *name; - BINDING *binding; -} PREFIX; - -typedef struct { - const XML_Char *str; - const XML_Char *localPart; - int uriLen; -} TAG_NAME; - -typedef struct tag { - struct tag *parent; - const char *rawName; - int rawNameLength; - TAG_NAME name; - char *buf; - char *bufEnd; - BINDING *bindings; -} TAG; - -typedef struct { - const XML_Char *name; - const XML_Char *textPtr; - int textLen; - const XML_Char *systemId; - const XML_Char *base; - const XML_Char *publicId; - const XML_Char *notation; - char open; - char is_param; -} ENTITY; - -typedef struct { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - const XML_Char * name; - int firstchild; - int lastchild; - int childcnt; - int nextsib; -} CONTENT_SCAFFOLD; - -typedef struct block { - struct block *next; - int size; - XML_Char s[1]; -} BLOCK; - -typedef struct { - BLOCK *blocks; - BLOCK *freeBlocks; - const XML_Char *end; - XML_Char *ptr; - XML_Char *start; - XML_Memory_Handling_Suite *mem; -} STRING_POOL; - -/* The XML_Char before the name is used to determine whether -an attribute has been specified. */ -typedef struct attribute_id { - XML_Char *name; - PREFIX *prefix; - char maybeTokenized; - char xmlns; -} ATTRIBUTE_ID; - -typedef struct { - const ATTRIBUTE_ID *id; - char isCdata; - const XML_Char *value; -} DEFAULT_ATTRIBUTE; - -typedef struct { - const XML_Char *name; - PREFIX *prefix; - const ATTRIBUTE_ID *idAtt; - int nDefaultAtts; - int allocDefaultAtts; - DEFAULT_ATTRIBUTE *defaultAtts; -} ELEMENT_TYPE; - -typedef struct { - HASH_TABLE generalEntities; - HASH_TABLE elementTypes; - HASH_TABLE attributeIds; - HASH_TABLE prefixes; - STRING_POOL pool; - int complete; - int standalone; -#ifdef XML_DTD - HASH_TABLE paramEntities; -#endif /* XML_DTD */ - PREFIX defaultPrefix; - /* === scaffolding for building content model === */ - int in_eldecl; - CONTENT_SCAFFOLD *scaffold; - unsigned contentStringLen; - unsigned scaffSize; - unsigned scaffCount; - int scaffLevel; - int *scaffIndex; -} DTD; - -typedef struct open_internal_entity { - const char *internalEventPtr; - const char *internalEventEndPtr; - struct open_internal_entity *next; - ENTITY *entity; -} OPEN_INTERNAL_ENTITY; - -typedef enum XML_Error Processor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr); - -static Processor prologProcessor; -static Processor prologInitProcessor; -static Processor contentProcessor; -static Processor cdataSectionProcessor; -#ifdef XML_DTD -static Processor ignoreSectionProcessor; -#endif /* XML_DTD */ -static Processor epilogProcessor; -static Processor errorProcessor; -static Processor externalEntityInitProcessor; -static Processor externalEntityInitProcessor2; -static Processor externalEntityInitProcessor3; -static Processor externalEntityContentProcessor; - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *, const char *); -static enum XML_Error -initializeEncoding(XML_Parser parser); -static enum XML_Error -doProlog(XML_Parser parser, const ENCODING *enc, const char *s, - const char *end, int tok, const char *next, const char **nextPtr); -static enum XML_Error -processInternalParamEntity(XML_Parser parser, ENTITY *entity); -static enum XML_Error -doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, - const char *start, const char *end, const char **endPtr); -static enum XML_Error -doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, const char *end, const char **nextPtr); -#ifdef XML_DTD -static enum XML_Error -doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, const char *end, const char **nextPtr); -#endif /* XML_DTD */ -static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *, const char *s, - TAG_NAME *tagNamePtr, BINDING **bindingsPtr); -static -int addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, const XML_Char *uri, BINDING **bindingsPtr); - -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, - int isCdata, int isId, const XML_Char *dfltValue, - XML_Parser parser); - -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *, int isCdata, const char *, const char *, - STRING_POOL *); -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *, int isCdata, const char *, const char *, - STRING_POOL *); -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); -static enum XML_Error -storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); - -static const XML_Char *getContext(XML_Parser parser); -static int setContext(XML_Parser parser, const XML_Char *context); -static void normalizePublicId(XML_Char *s); -static int dtdInit(DTD *, XML_Parser parser); - -static void dtdDestroy(DTD *, XML_Parser parser); - -static int dtdCopy(DTD *newDtd, const DTD *oldDtd, XML_Parser parser); - -static int copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *, - XML_Parser parser); - -#ifdef XML_DTD -static void dtdSwap(DTD *, DTD *); -#endif /* XML_DTD */ - -static NAMED *lookup(HASH_TABLE *table, KEY name, size_t createSize); - -static void hashTableInit(HASH_TABLE *, XML_Memory_Handling_Suite *ms); - -static void hashTableDestroy(HASH_TABLE *); -static void hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); -static NAMED *hashTableIterNext(HASH_TABLE_ITER *); -static void poolInit(STRING_POOL *, XML_Memory_Handling_Suite *ms); -static void poolClear(STRING_POOL *); -static void poolDestroy(STRING_POOL *); -static XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Char *poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); - -static int poolGrow(STRING_POOL *pool); - -static int nextScaffoldPart(XML_Parser parser); -static XML_Content *build_model(XML_Parser parser); - -static const XML_Char *poolCopyString(STRING_POOL *pool, const XML_Char *s); -static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); -static const XML_Char *poolAppendString(STRING_POOL *pool, const XML_Char *s); -static ELEMENT_TYPE * getElementType(XML_Parser Paraser, - const ENCODING *enc, - const char *ptr, - const char *end); - -#define poolStart(pool) ((pool)->start) -#define poolEnd(pool) ((pool)->ptr) -#define poolLength(pool) ((pool)->ptr - (pool)->start) -#define poolChop(pool) ((void)--(pool->ptr)) -#define poolLastChar(pool) (((pool)->ptr)[-1]) -#define poolDiscard(pool) ((pool)->ptr = (pool)->start) -#define poolFinish(pool) ((pool)->start = (pool)->ptr) -#define poolAppendChar(pool, c) \ - (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ - ? 0 \ - : ((*((pool)->ptr)++ = c), 1)) - -typedef struct { - /* The first member must be userData so that the XML_GetUserData macro works. */ - void *m_userData; - void *m_handlerArg; - char *m_buffer; - XML_Memory_Handling_Suite m_mem; - /* first character to be parsed */ - const char *m_bufferPtr; - /* past last character to be parsed */ - char *m_bufferEnd; - /* allocated end of buffer */ - const char *m_bufferLim; - long m_parseEndByteIndex; - const char *m_parseEndPtr; - XML_Char *m_dataBuf; - XML_Char *m_dataBufEnd; - XML_StartElementHandler m_startElementHandler; - XML_EndElementHandler m_endElementHandler; - XML_CharacterDataHandler m_characterDataHandler; - XML_ProcessingInstructionHandler m_processingInstructionHandler; - XML_CommentHandler m_commentHandler; - XML_StartCdataSectionHandler m_startCdataSectionHandler; - XML_EndCdataSectionHandler m_endCdataSectionHandler; - XML_DefaultHandler m_defaultHandler; - XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; - XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; - XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; - XML_NotationDeclHandler m_notationDeclHandler; - XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; - XML_NotStandaloneHandler m_notStandaloneHandler; - XML_ExternalEntityRefHandler m_externalEntityRefHandler; - void *m_externalEntityRefHandlerArg; - XML_UnknownEncodingHandler m_unknownEncodingHandler; - XML_ElementDeclHandler m_elementDeclHandler; - XML_AttlistDeclHandler m_attlistDeclHandler; - XML_EntityDeclHandler m_entityDeclHandler; - XML_XmlDeclHandler m_xmlDeclHandler; - const ENCODING *m_encoding; - INIT_ENCODING m_initEncoding; - const ENCODING *m_internalEncoding; - const XML_Char *m_protocolEncodingName; - int m_ns; - int m_ns_triplets; - void *m_unknownEncodingMem; - void *m_unknownEncodingData; - void *m_unknownEncodingHandlerData; - void (*m_unknownEncodingRelease)(void *); - PROLOG_STATE m_prologState; - Processor *m_processor; - enum XML_Error m_errorCode; - const char *m_eventPtr; - const char *m_eventEndPtr; - const char *m_positionPtr; - OPEN_INTERNAL_ENTITY *m_openInternalEntities; - int m_defaultExpandInternalEntities; - int m_tagLevel; - ENTITY *m_declEntity; - const XML_Char *m_doctypeName; - const XML_Char *m_doctypeSysid; - const XML_Char *m_doctypePubid; - const XML_Char *m_declAttributeType; - const XML_Char *m_declNotationName; - const XML_Char *m_declNotationPublicId; - ELEMENT_TYPE *m_declElementType; - ATTRIBUTE_ID *m_declAttributeId; - char m_declAttributeIsCdata; - char m_declAttributeIsId; - DTD m_dtd; - const XML_Char *m_curBase; - TAG *m_tagStack; - TAG *m_freeTagList; - BINDING *m_inheritedBindings; - BINDING *m_freeBindingList; - int m_attsSize; - int m_nSpecifiedAtts; - int m_idAttIndex; - ATTRIBUTE *m_atts; - POSITION m_position; - STRING_POOL m_tempPool; - STRING_POOL m_temp2Pool; - char *m_groupConnector; - unsigned m_groupSize; - int m_hadExternalDoctype; - XML_Char m_namespaceSeparator; -#ifdef XML_DTD - enum XML_ParamEntityParsing m_paramEntityParsing; - XML_Parser m_parentParser; -#endif -} Parser; - -#define MALLOC(s) (((Parser *)parser)->m_mem.malloc_fcn((s))) -#define REALLOC(p,s) (((Parser *)parser)->m_mem.realloc_fcn((p),(s))) -#define FREE(p) (((Parser *)parser)->m_mem.free_fcn((p))) - -#define userData (((Parser *)parser)->m_userData) -#define handlerArg (((Parser *)parser)->m_handlerArg) -#define startElementHandler (((Parser *)parser)->m_startElementHandler) -#define endElementHandler (((Parser *)parser)->m_endElementHandler) -#define characterDataHandler (((Parser *)parser)->m_characterDataHandler) -#define processingInstructionHandler (((Parser *)parser)->m_processingInstructionHandler) -#define commentHandler (((Parser *)parser)->m_commentHandler) -#define startCdataSectionHandler (((Parser *)parser)->m_startCdataSectionHandler) -#define endCdataSectionHandler (((Parser *)parser)->m_endCdataSectionHandler) -#define defaultHandler (((Parser *)parser)->m_defaultHandler) -#define startDoctypeDeclHandler (((Parser *)parser)->m_startDoctypeDeclHandler) -#define endDoctypeDeclHandler (((Parser *)parser)->m_endDoctypeDeclHandler) -#define unparsedEntityDeclHandler (((Parser *)parser)->m_unparsedEntityDeclHandler) -#define notationDeclHandler (((Parser *)parser)->m_notationDeclHandler) -#define startNamespaceDeclHandler (((Parser *)parser)->m_startNamespaceDeclHandler) -#define endNamespaceDeclHandler (((Parser *)parser)->m_endNamespaceDeclHandler) -#define notStandaloneHandler (((Parser *)parser)->m_notStandaloneHandler) -#define externalEntityRefHandler (((Parser *)parser)->m_externalEntityRefHandler) -#define externalEntityRefHandlerArg (((Parser *)parser)->m_externalEntityRefHandlerArg) -#define internalEntityRefHandler (((Parser *)parser)->m_internalEntityRefHandler) -#define unknownEncodingHandler (((Parser *)parser)->m_unknownEncodingHandler) -#define elementDeclHandler (((Parser *)parser)->m_elementDeclHandler) -#define attlistDeclHandler (((Parser *)parser)->m_attlistDeclHandler) -#define entityDeclHandler (((Parser *)parser)->m_entityDeclHandler) -#define xmlDeclHandler (((Parser *)parser)->m_xmlDeclHandler) -#define encoding (((Parser *)parser)->m_encoding) -#define initEncoding (((Parser *)parser)->m_initEncoding) -#define internalEncoding (((Parser *)parser)->m_internalEncoding) -#define unknownEncodingMem (((Parser *)parser)->m_unknownEncodingMem) -#define unknownEncodingData (((Parser *)parser)->m_unknownEncodingData) -#define unknownEncodingHandlerData \ - (((Parser *)parser)->m_unknownEncodingHandlerData) -#define unknownEncodingRelease (((Parser *)parser)->m_unknownEncodingRelease) -#define protocolEncodingName (((Parser *)parser)->m_protocolEncodingName) -#define ns (((Parser *)parser)->m_ns) -#define ns_triplets (((Parser *)parser)->m_ns_triplets) -#define prologState (((Parser *)parser)->m_prologState) -#define processor (((Parser *)parser)->m_processor) -#define errorCode (((Parser *)parser)->m_errorCode) -#define eventPtr (((Parser *)parser)->m_eventPtr) -#define eventEndPtr (((Parser *)parser)->m_eventEndPtr) -#define positionPtr (((Parser *)parser)->m_positionPtr) -#define position (((Parser *)parser)->m_position) -#define openInternalEntities (((Parser *)parser)->m_openInternalEntities) -#define defaultExpandInternalEntities (((Parser *)parser)->m_defaultExpandInternalEntities) -#define tagLevel (((Parser *)parser)->m_tagLevel) -#define buffer (((Parser *)parser)->m_buffer) -#define bufferPtr (((Parser *)parser)->m_bufferPtr) -#define bufferEnd (((Parser *)parser)->m_bufferEnd) -#define parseEndByteIndex (((Parser *)parser)->m_parseEndByteIndex) -#define parseEndPtr (((Parser *)parser)->m_parseEndPtr) -#define bufferLim (((Parser *)parser)->m_bufferLim) -#define dataBuf (((Parser *)parser)->m_dataBuf) -#define dataBufEnd (((Parser *)parser)->m_dataBufEnd) -#define dtd (((Parser *)parser)->m_dtd) -#define curBase (((Parser *)parser)->m_curBase) -#define declEntity (((Parser *)parser)->m_declEntity) -#define doctypeName (((Parser *)parser)->m_doctypeName) -#define doctypeSysid (((Parser *)parser)->m_doctypeSysid) -#define doctypePubid (((Parser *)parser)->m_doctypePubid) -#define declAttributeType (((Parser *)parser)->m_declAttributeType) -#define declNotationName (((Parser *)parser)->m_declNotationName) -#define declNotationPublicId (((Parser *)parser)->m_declNotationPublicId) -#define declElementType (((Parser *)parser)->m_declElementType) -#define declAttributeId (((Parser *)parser)->m_declAttributeId) -#define declAttributeIsCdata (((Parser *)parser)->m_declAttributeIsCdata) -#define declAttributeIsId (((Parser *)parser)->m_declAttributeIsId) -#define freeTagList (((Parser *)parser)->m_freeTagList) -#define freeBindingList (((Parser *)parser)->m_freeBindingList) -#define inheritedBindings (((Parser *)parser)->m_inheritedBindings) -#define tagStack (((Parser *)parser)->m_tagStack) -#define atts (((Parser *)parser)->m_atts) -#define attsSize (((Parser *)parser)->m_attsSize) -#define nSpecifiedAtts (((Parser *)parser)->m_nSpecifiedAtts) -#define idAttIndex (((Parser *)parser)->m_idAttIndex) -#define tempPool (((Parser *)parser)->m_tempPool) -#define temp2Pool (((Parser *)parser)->m_temp2Pool) -#define groupConnector (((Parser *)parser)->m_groupConnector) -#define groupSize (((Parser *)parser)->m_groupSize) -#define hadExternalDoctype (((Parser *)parser)->m_hadExternalDoctype) -#define namespaceSeparator (((Parser *)parser)->m_namespaceSeparator) -#ifdef XML_DTD -#define parentParser (((Parser *)parser)->m_parentParser) -#define paramEntityParsing (((Parser *)parser)->m_paramEntityParsing) -#endif /* XML_DTD */ - -#ifdef COMPILED_FROM_DSP -BOOL WINAPI DllMain(HINSTANCE h, DWORD r, LPVOID p) { - return TRUE; -} -#endif /* def COMPILED_FROM_DSP */ - -#ifdef _MSC_VER -#ifdef _DEBUG -Parser *asParser(XML_Parser parser) -{ - return parser; -} -#endif -#endif - -XML_Parser XML_ParserCreate(const XML_Char *encodingName) -{ - return XML_ParserCreate_MM(encodingName, NULL, NULL); -} - -XML_Parser XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) -{ - XML_Char tmp[2]; - *tmp = nsSep; - return XML_ParserCreate_MM(encodingName, NULL, tmp); -} - -XML_Parser -XML_ParserCreate_MM(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep) { - - XML_Parser parser; - static - const XML_Char implicitContext[] = { - XML_T('x'), XML_T('m'), XML_T('l'), XML_T('='), - XML_T('h'), XML_T('t'), XML_T('t'), XML_T('p'), XML_T(':'), - XML_T('/'), XML_T('/'), XML_T('w'), XML_T('w'), XML_T('w'), - XML_T('.'), XML_T('w'), XML_T('3'), - XML_T('.'), XML_T('o'), XML_T('r'), XML_T('g'), - XML_T('/'), XML_T('X'), XML_T('M'), XML_T('L'), - XML_T('/'), XML_T('1'), XML_T('9'), XML_T('9'), XML_T('8'), - XML_T('/'), XML_T('n'), XML_T('a'), XML_T('m'), XML_T('e'), - XML_T('s'), XML_T('p'), XML_T('a'), XML_T('c'), XML_T('e'), - XML_T('\0') - }; - - - if (memsuite) { - XML_Memory_Handling_Suite *mtemp; - parser = memsuite->malloc_fcn(sizeof(Parser)); - mtemp = &(((Parser *) parser)->m_mem); - mtemp->malloc_fcn = memsuite->malloc_fcn; - mtemp->realloc_fcn = memsuite->realloc_fcn; - mtemp->free_fcn = memsuite->free_fcn; - } - else { - XML_Memory_Handling_Suite *mtemp; - parser = malloc(sizeof(Parser)); - mtemp = &(((Parser *) parser)->m_mem); - mtemp->malloc_fcn = malloc; - mtemp->realloc_fcn = realloc; - mtemp->free_fcn = free; - } - - if (!parser) - return parser; - processor = prologInitProcessor; - XmlPrologStateInit(&prologState); - userData = 0; - handlerArg = 0; - startElementHandler = 0; - endElementHandler = 0; - characterDataHandler = 0; - processingInstructionHandler = 0; - commentHandler = 0; - startCdataSectionHandler = 0; - endCdataSectionHandler = 0; - defaultHandler = 0; - startDoctypeDeclHandler = 0; - endDoctypeDeclHandler = 0; - unparsedEntityDeclHandler = 0; - notationDeclHandler = 0; - startNamespaceDeclHandler = 0; - endNamespaceDeclHandler = 0; - notStandaloneHandler = 0; - externalEntityRefHandler = 0; - externalEntityRefHandlerArg = parser; - unknownEncodingHandler = 0; - elementDeclHandler = 0; - attlistDeclHandler = 0; - entityDeclHandler = 0; - xmlDeclHandler = 0; - buffer = 0; - bufferPtr = 0; - bufferEnd = 0; - parseEndByteIndex = 0; - parseEndPtr = 0; - bufferLim = 0; - declElementType = 0; - declAttributeId = 0; - declEntity = 0; - doctypeName = 0; - doctypeSysid = 0; - doctypePubid = 0; - declAttributeType = 0; - declNotationName = 0; - declNotationPublicId = 0; - memset(&position, 0, sizeof(POSITION)); - errorCode = XML_ERROR_NONE; - eventPtr = 0; - eventEndPtr = 0; - positionPtr = 0; - openInternalEntities = 0; - tagLevel = 0; - tagStack = 0; - freeTagList = 0; - freeBindingList = 0; - inheritedBindings = 0; - attsSize = INIT_ATTS_SIZE; - atts = MALLOC(attsSize * sizeof(ATTRIBUTE)); - nSpecifiedAtts = 0; - dataBuf = MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); - groupSize = 0; - groupConnector = 0; - hadExternalDoctype = 0; - unknownEncodingMem = 0; - unknownEncodingRelease = 0; - unknownEncodingData = 0; - unknownEncodingHandlerData = 0; - namespaceSeparator = '!'; -#ifdef XML_DTD - parentParser = 0; - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif - ns = 0; - ns_triplets = 0; - poolInit(&tempPool, &(((Parser *) parser)->m_mem)); - poolInit(&temp2Pool, &(((Parser *) parser)->m_mem)); - protocolEncodingName = encodingName ? poolCopyString(&tempPool, encodingName) : 0; - curBase = 0; - if (!dtdInit(&dtd, parser) || !atts || !dataBuf - || (encodingName && !protocolEncodingName)) { - XML_ParserFree(parser); - return 0; - } - dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; - - if (nameSep) { - XmlInitEncodingNS(&initEncoding, &encoding, 0); - ns = 1; - internalEncoding = XmlGetInternalEncodingNS(); - namespaceSeparator = *nameSep; - - if (! setContext(parser, implicitContext)) { - XML_ParserFree(parser); - return 0; - } - } - else { - XmlInitEncoding(&initEncoding, &encoding, 0); - internalEncoding = XmlGetInternalEncoding(); - } - - return parser; -} /* End XML_ParserCreate_MM */ - -int XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (!encodingName) - protocolEncodingName = 0; - else { - protocolEncodingName = poolCopyString(&tempPool, encodingName); - if (!protocolEncodingName) - return 0; - } - return 1; -} - -XML_Parser XML_ExternalEntityParserCreate(XML_Parser oldParser, - const XML_Char *context, - const XML_Char *encodingName) -{ - XML_Parser parser = oldParser; - DTD *oldDtd = &dtd; - XML_StartElementHandler oldStartElementHandler = startElementHandler; - XML_EndElementHandler oldEndElementHandler = endElementHandler; - XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; - XML_ProcessingInstructionHandler oldProcessingInstructionHandler = processingInstructionHandler; - XML_CommentHandler oldCommentHandler = commentHandler; - XML_StartCdataSectionHandler oldStartCdataSectionHandler = startCdataSectionHandler; - XML_EndCdataSectionHandler oldEndCdataSectionHandler = endCdataSectionHandler; - XML_DefaultHandler oldDefaultHandler = defaultHandler; - XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler = unparsedEntityDeclHandler; - XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; - XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler = startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler = endNamespaceDeclHandler; - XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; - XML_ExternalEntityRefHandler oldExternalEntityRefHandler = externalEntityRefHandler; - XML_UnknownEncodingHandler oldUnknownEncodingHandler = unknownEncodingHandler; - XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; - XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; - XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; - XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; - ELEMENT_TYPE * oldDeclElementType = declElementType; - - void *oldUserData = userData; - void *oldHandlerArg = handlerArg; - int oldDefaultExpandInternalEntities = defaultExpandInternalEntities; - void *oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; -#ifdef XML_DTD - enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing; -#endif - int oldns_triplets = ns_triplets; - - if (ns) { - XML_Char tmp[2]; - - *tmp = namespaceSeparator; - parser = XML_ParserCreate_MM(encodingName, &((Parser *)parser)->m_mem, - tmp); - } - else { - parser = XML_ParserCreate_MM(encodingName, &((Parser *)parser)->m_mem, - NULL); - } - - if (!parser) - return 0; - - startElementHandler = oldStartElementHandler; - endElementHandler = oldEndElementHandler; - characterDataHandler = oldCharacterDataHandler; - processingInstructionHandler = oldProcessingInstructionHandler; - commentHandler = oldCommentHandler; - startCdataSectionHandler = oldStartCdataSectionHandler; - endCdataSectionHandler = oldEndCdataSectionHandler; - defaultHandler = oldDefaultHandler; - unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; - notationDeclHandler = oldNotationDeclHandler; - startNamespaceDeclHandler = oldStartNamespaceDeclHandler; - endNamespaceDeclHandler = oldEndNamespaceDeclHandler; - notStandaloneHandler = oldNotStandaloneHandler; - externalEntityRefHandler = oldExternalEntityRefHandler; - unknownEncodingHandler = oldUnknownEncodingHandler; - elementDeclHandler = oldElementDeclHandler; - attlistDeclHandler = oldAttlistDeclHandler; - entityDeclHandler = oldEntityDeclHandler; - xmlDeclHandler = oldXmlDeclHandler; - declElementType = oldDeclElementType; - userData = oldUserData; - if (oldUserData == oldHandlerArg) - handlerArg = userData; - else - handlerArg = parser; - if (oldExternalEntityRefHandlerArg != oldParser) - externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; - defaultExpandInternalEntities = oldDefaultExpandInternalEntities; - ns_triplets = oldns_triplets; -#ifdef XML_DTD - paramEntityParsing = oldParamEntityParsing; - if (context) { -#endif /* XML_DTD */ - if (!dtdCopy(&dtd, oldDtd, parser) || !setContext(parser, context)) { - XML_ParserFree(parser); - return 0; - } - processor = externalEntityInitProcessor; -#ifdef XML_DTD - } - else { - dtdSwap(&dtd, oldDtd); - parentParser = oldParser; - XmlPrologStateInitExternalEntity(&prologState); - dtd.complete = 1; - hadExternalDoctype = 1; - } -#endif /* XML_DTD */ - return parser; -} - -static -void destroyBindings(BINDING *bindings, XML_Parser parser) -{ - for (;;) { - BINDING *b = bindings; - if (!b) - break; - bindings = b->nextTagBinding; - FREE(b->uri); - FREE(b); - } -} - -void XML_ParserFree(XML_Parser parser) -{ - for (;;) { - TAG *p; - if (tagStack == 0) { - if (freeTagList == 0) - break; - tagStack = freeTagList; - freeTagList = 0; - } - p = tagStack; - tagStack = tagStack->parent; - FREE(p->buf); - destroyBindings(p->bindings, parser); - FREE(p); - } - destroyBindings(freeBindingList, parser); - destroyBindings(inheritedBindings, parser); - poolDestroy(&tempPool); - poolDestroy(&temp2Pool); -#ifdef XML_DTD - if (parentParser) { - if (hadExternalDoctype) - dtd.complete = 0; - dtdSwap(&dtd, &((Parser *)parentParser)->m_dtd); - } -#endif /* XML_DTD */ - dtdDestroy(&dtd, parser); - FREE((void *)atts); - if (groupConnector) - FREE(groupConnector); - if (buffer) - FREE(buffer); - FREE(dataBuf); - if (unknownEncodingMem) - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - FREE(parser); -} - -void XML_UseParserAsHandlerArg(XML_Parser parser) -{ - handlerArg = parser; -} - -void -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { - ns_triplets = do_nst; -} - -void XML_SetUserData(XML_Parser parser, void *p) -{ - if (handlerArg == userData) - handlerArg = userData = p; - else - userData = p; -} - -int XML_SetBase(XML_Parser parser, const XML_Char *p) -{ - if (p) { - p = poolCopyString(&dtd.pool, p); - if (!p) - return 0; - curBase = p; - } - else - curBase = 0; - return 1; -} - -const XML_Char *XML_GetBase(XML_Parser parser) -{ - return curBase; -} - -int XML_GetSpecifiedAttributeCount(XML_Parser parser) -{ - return nSpecifiedAtts; -} - -int XML_GetIdAttributeIndex(XML_Parser parser) -{ - return idAttIndex; -} - -void XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end) -{ - startElementHandler = start; - endElementHandler = end; -} - -void XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler start) { - startElementHandler = start; -} - -void XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler end) { - endElementHandler = end; -} - -void XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler) -{ - characterDataHandler = handler; -} - -void XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler) -{ - processingInstructionHandler = handler; -} - -void XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler) -{ - commentHandler = handler; -} - -void XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end) -{ - startCdataSectionHandler = start; - endCdataSectionHandler = end; -} - -void XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start) { - startCdataSectionHandler = start; -} - -void XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end) { - endCdataSectionHandler = end; -} - -void XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = 0; -} - -void XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = 1; -} - -void XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end) -{ - startDoctypeDeclHandler = start; - endDoctypeDeclHandler = end; -} - -void XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start) { - startDoctypeDeclHandler = start; -} - -void XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end) { - endDoctypeDeclHandler = end; -} - -void XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler) -{ - unparsedEntityDeclHandler = handler; -} - -void XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler) -{ - notationDeclHandler = handler; -} - -void XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end) -{ - startNamespaceDeclHandler = start; - endNamespaceDeclHandler = end; -} - -void XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start) { - startNamespaceDeclHandler = start; -} - -void XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end) { - endNamespaceDeclHandler = end; -} - - -void XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler) -{ - notStandaloneHandler = handler; -} - -void XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler) -{ - externalEntityRefHandler = handler; -} - -void XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) -{ - if (arg) - externalEntityRefHandlerArg = arg; - else - externalEntityRefHandlerArg = parser; -} - -void XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *data) -{ - unknownEncodingHandler = handler; - unknownEncodingHandlerData = data; -} - -void XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl) -{ - elementDeclHandler = eldecl; -} - -void XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl) -{ - attlistDeclHandler = attdecl; -} - -void XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler) -{ - entityDeclHandler = handler; -} - -void XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler handler) { - xmlDeclHandler = handler; -} - -int XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing) -{ -#ifdef XML_DTD - paramEntityParsing = parsing; - return 1; -#else - return parsing == XML_PARAM_ENTITY_PARSING_NEVER; -#endif -} - -int XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) -{ - if (len == 0) { - if (!isFinal) - return 1; - positionPtr = bufferPtr; - errorCode = processor(parser, bufferPtr, parseEndPtr = bufferEnd, 0); - if (errorCode == XML_ERROR_NONE) - return 1; - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } -#ifndef XML_CONTEXT_BYTES - else if (bufferPtr == bufferEnd) { - const char *end; - int nLeftOver; - parseEndByteIndex += len; - positionPtr = s; - if (isFinal) { - errorCode = processor(parser, s, parseEndPtr = s + len, 0); - if (errorCode == XML_ERROR_NONE) - return 1; - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } - errorCode = processor(parser, s, parseEndPtr = s + len, &end); - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } - XmlUpdatePosition(encoding, positionPtr, end, &position); - nLeftOver = s + len - end; - if (nLeftOver) { - if (buffer == 0 || nLeftOver > bufferLim - buffer) { - /* FIXME avoid integer overflow */ - buffer = buffer == 0 ? MALLOC(len * 2) : REALLOC(buffer, len * 2); - /* FIXME storage leak if realloc fails */ - if (!buffer) { - errorCode = XML_ERROR_NO_MEMORY; - eventPtr = eventEndPtr = 0; - processor = errorProcessor; - return 0; - } - bufferLim = buffer + len * 2; - } - memcpy(buffer, end, nLeftOver); - bufferPtr = buffer; - bufferEnd = buffer + nLeftOver; - } - return 1; - } -#endif /* not defined XML_CONTEXT_BYTES */ - else { - memcpy(XML_GetBuffer(parser, len), s, len); - return XML_ParseBuffer(parser, len, isFinal); - } -} - -int XML_ParseBuffer(XML_Parser parser, int len, int isFinal) -{ - const char *start = bufferPtr; - positionPtr = start; - bufferEnd += len; - parseEndByteIndex += len; - errorCode = processor(parser, start, parseEndPtr = bufferEnd, - isFinal ? (const char **)0 : &bufferPtr); - if (errorCode == XML_ERROR_NONE) { - if (!isFinal) - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - return 1; - } - else { - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } -} - -void *XML_GetBuffer(XML_Parser parser, int len) -{ - if (len > bufferLim - bufferEnd) { - /* FIXME avoid integer overflow */ - int neededSize = len + (bufferEnd - bufferPtr); -#ifdef XML_CONTEXT_BYTES - int keep = bufferPtr - buffer; - - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - neededSize += keep; -#endif /* defined XML_CONTEXT_BYTES */ - if (neededSize <= bufferLim - buffer) { -#ifdef XML_CONTEXT_BYTES - if (keep < bufferPtr - buffer) { - int offset = (bufferPtr - buffer) - keep; - memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); - bufferEnd -= offset; - bufferPtr -= offset; - } -#else - memmove(buffer, bufferPtr, bufferEnd - bufferPtr); - bufferEnd = buffer + (bufferEnd - bufferPtr); - bufferPtr = buffer; -#endif /* not defined XML_CONTEXT_BYTES */ - } - else { - char *newBuf; - int bufferSize = bufferLim - bufferPtr; - if (bufferSize == 0) - bufferSize = INIT_BUFFER_SIZE; - do { - bufferSize *= 2; - } while (bufferSize < neededSize); - newBuf = MALLOC(bufferSize); - if (newBuf == 0) { - errorCode = XML_ERROR_NO_MEMORY; - return 0; - } - bufferLim = newBuf + bufferSize; -#ifdef XML_CONTEXT_BYTES - if (bufferPtr) { - int xmKeep = bufferPtr - buffer; - if (xmKeep > XML_CONTEXT_BYTES) - xmKeep = XML_CONTEXT_BYTES; - memcpy(newBuf, &bufferPtr[-xmKeep], bufferEnd - bufferPtr + xmKeep); - FREE(buffer); - buffer = newBuf; - bufferEnd = buffer + (bufferEnd - bufferPtr) + xmKeep; - bufferPtr = buffer + xmKeep; - } - else { - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; - } -#else - if (bufferPtr) { - memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); - FREE(buffer); - } - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; -#endif /* not defined XML_CONTEXT_BYTES */ - } - } - return bufferEnd; -} - -enum XML_Error XML_GetErrorCode(XML_Parser parser) -{ - return errorCode; -} - -long XML_GetCurrentByteIndex(XML_Parser parser) -{ - if (eventPtr) - return parseEndByteIndex - (parseEndPtr - eventPtr); - return -1; -} - -int XML_GetCurrentByteCount(XML_Parser parser) -{ - if (eventEndPtr && eventPtr) - return eventEndPtr - eventPtr; - return 0; -} - -const char * XML_GetInputContext(XML_Parser parser, int *offset, int *size) -{ -#ifdef XML_CONTEXT_BYTES - if (eventPtr && buffer) { - *offset = eventPtr - buffer; - *size = bufferEnd - buffer; - return buffer; - } -#endif /* defined XML_CONTEXT_BYTES */ - return (char *) 0; -} - -int XML_GetCurrentLineNumber(XML_Parser parser) -{ - if (eventPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.lineNumber + 1; -} - -int XML_GetCurrentColumnNumber(XML_Parser parser) -{ - if (eventPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.columnNumber; -} - -void XML_DefaultCurrent(XML_Parser parser) -{ - if (defaultHandler) { - if (openInternalEntities) - reportDefault(parser, - internalEncoding, - openInternalEntities->internalEventPtr, - openInternalEntities->internalEventEndPtr); - else - reportDefault(parser, encoding, eventPtr, eventEndPtr); - } -} - -const XML_LChar *XML_ErrorString(int code) -{ - static const XML_LChar *message[] = { - 0, - XML_T("out of memory"), - XML_T("syntax error"), - XML_T("no element found"), - XML_T("not well-formed (invalid token)"), - XML_T("unclosed token"), - XML_T("unclosed token"), - XML_T("mismatched tag"), - XML_T("duplicate attribute"), - XML_T("junk after document element"), - XML_T("illegal parameter entity reference"), - XML_T("undefined entity"), - XML_T("recursive entity reference"), - XML_T("asynchronous entity"), - XML_T("reference to invalid character number"), - XML_T("reference to binary entity"), - XML_T("reference to external entity in attribute"), - XML_T("xml processing instruction not at start of external entity"), - XML_T("unknown encoding"), - XML_T("encoding specified in XML declaration is incorrect"), - XML_T("unclosed CDATA section"), - XML_T("error in processing external entity reference"), - XML_T("document is not standalone"), - XML_T("unexpected parser state - please send a bug report") - }; - if (code > 0 && code < (int)(sizeof(message)/sizeof(message[0]))) - return message[code]; - return 0; -} - -const XML_LChar * -XML_ExpatVersion(void) { - return VERSION; -} - -XML_Expat_Version -XML_ExpatVersionInfo(void) { - XML_Expat_Version version; - - version.major = XML_MAJOR_VERSION; - version.minor = XML_MINOR_VERSION; - version.micro = XML_MICRO_VERSION; - - return version; -} - -static -enum XML_Error contentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - return doContent(parser, 0, encoding, start, end, endPtr); -} - -static -enum XML_Error externalEntityInitProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = externalEntityInitProcessor2; - return externalEntityInitProcessor2(parser, start, end, endPtr); -} - -static -enum XML_Error externalEntityInitProcessor2(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - const char *next; - int tok = XmlContentTok(encoding, start, end, &next); - switch (tok) { - case XML_TOK_BOM: - start = next; - break; - case XML_TOK_PARTIAL: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityInitProcessor3; - return externalEntityInitProcessor3(parser, start, end, endPtr); -} - -static -enum XML_Error externalEntityInitProcessor3(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - const char *next; - int tok = XmlContentTok(encoding, start, end, &next); - switch (tok) { - case XML_TOK_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, start, next); - if (result != XML_ERROR_NONE) - return result; - start = next; - } - break; - case XML_TOK_PARTIAL: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityContentProcessor; - tagLevel = 1; - return doContent(parser, 1, encoding, start, end, endPtr); -} - -static -enum XML_Error externalEntityContentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - return doContent(parser, 1, encoding, start, end, endPtr); -} - -static enum XML_Error -doContent(XML_Parser parser, - int startTagLevel, - const ENCODING *enc, - const char *s, - const char *end, - const char **nextPtr) -{ - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - for (;;) { - const char *next = s; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_TRAILING_CR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - *eventEndPP = end; - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - if (startTagLevel == 0) - return XML_ERROR_NO_ELEMENTS; - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - return XML_ERROR_NONE; - case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (startTagLevel > 0) { - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - return XML_ERROR_NONE; - } - return XML_ERROR_NO_ELEMENTS; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = XmlPredefinedEntityName(enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (characterDataHandler) - characterDataHandler(handlerArg, &ch, 1); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - name = poolStoreString(&dtd.pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.generalEntities, name, 0); - poolDiscard(&dtd.pool); - if (!entity) { - if (dtd.complete || dtd.standalone) - return XML_ERROR_UNDEFINED_ENTITY; - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->notation) - return XML_ERROR_BINARY_ENTITY_REF; - if (entity) { - if (entity->textPtr) { - enum XML_Error result; - OPEN_INTERNAL_ENTITY openEntity; - if (defaultHandler && !defaultExpandInternalEntities) { - reportDefault(parser, enc, s, next); - break; - } - entity->open = 1; - openEntity.next = openInternalEntities; - openInternalEntities = &openEntity; - openEntity.entity = entity; - openEntity.internalEventPtr = 0; - openEntity.internalEventEndPtr = 0; - result = doContent(parser, - tagLevel, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr + entity->textLen), - 0); - entity->open = 0; - openInternalEntities = openEntity.next; - if (result) - return result; - } - else if (externalEntityRefHandler) { - const XML_Char *context; - entity->open = 1; - context = getContext(parser); - entity->open = 0; - if (!context) - return XML_ERROR_NO_MEMORY; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - context, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - poolDiscard(&tempPool); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - } - case XML_TOK_START_TAG_WITH_ATTS: - if (!startElementHandler) { - enum XML_Error result = storeAtts(parser, enc, s, 0, 0); - if (result) - return result; - } - /* fall through */ - case XML_TOK_START_TAG_NO_ATTS: - { - TAG *tag; - if (freeTagList) { - tag = freeTagList; - freeTagList = freeTagList->parent; - } - else { - tag = MALLOC(sizeof(TAG)); - if (!tag) - return XML_ERROR_NO_MEMORY; - tag->buf = MALLOC(INIT_TAG_BUF_SIZE); - if (!tag->buf) - return XML_ERROR_NO_MEMORY; - tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; - } - tag->bindings = 0; - tag->parent = tagStack; - tagStack = tag; - tag->name.localPart = 0; - tag->rawName = s + enc->minBytesPerChar; - tag->rawNameLength = XmlNameLength(enc, tag->rawName); - if (nextPtr) { - /* Need to guarantee that: - tag->buf + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)) <= tag->bufEnd - sizeof(XML_Char) */ - if (tag->rawNameLength + (int)(sizeof(XML_Char) - 1) + (int)sizeof(XML_Char) > tag->bufEnd - tag->buf) { - int bufSize = tag->rawNameLength * 4; - bufSize = ROUND_UP(bufSize, sizeof(XML_Char)); - tag->buf = REALLOC(tag->buf, bufSize); - if (!tag->buf) - return XML_ERROR_NO_MEMORY; - tag->bufEnd = tag->buf + bufSize; - } - memcpy(tag->buf, tag->rawName, tag->rawNameLength); - tag->rawName = tag->buf; - } - ++tagLevel; - if (startElementHandler) { - enum XML_Error result; - XML_Char *toPtr; - for (;;) { - const char *rawNameEnd = tag->rawName + tag->rawNameLength; - const char *fromPtr = tag->rawName; - int bufSize; - if (nextPtr) - toPtr = (XML_Char *)(tag->buf + ROUND_UP(tag->rawNameLength, sizeof(XML_Char))); - else - toPtr = (XML_Char *)tag->buf; - tag->name.str = toPtr; - XmlConvert(enc, - &fromPtr, rawNameEnd, - (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); - if (fromPtr == rawNameEnd) - break; - bufSize = (tag->bufEnd - tag->buf) << 1; - tag->buf = REALLOC(tag->buf, bufSize); - if (!tag->buf) - return XML_ERROR_NO_MEMORY; - tag->bufEnd = tag->buf + bufSize; - if (nextPtr) - tag->rawName = tag->buf; - } - *toPtr = XML_T('\0'); - result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); - if (result) - return result; - startElementHandler(handlerArg, tag->name.str, (const XML_Char **)atts); - poolClear(&tempPool); - } - else { - tag->name.str = 0; - if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - } - case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: - if (!startElementHandler) { - enum XML_Error result = storeAtts(parser, enc, s, 0, 0); - if (result) - return result; - } - /* fall through */ - case XML_TOK_EMPTY_ELEMENT_NO_ATTS: - if (startElementHandler || endElementHandler) { - const char *rawName = s + enc->minBytesPerChar; - enum XML_Error result; - BINDING *bindings = 0; - TAG_NAME name; - name.str = poolStoreString(&tempPool, enc, rawName, - rawName + XmlNameLength(enc, rawName)); - if (!name.str) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - result = storeAtts(parser, enc, s, &name, &bindings); - if (result) - return result; - poolFinish(&tempPool); - if (startElementHandler) - startElementHandler(handlerArg, name.str, (const XML_Char **)atts); - if (endElementHandler) { - if (startElementHandler) - *eventPP = *eventEndPP; - endElementHandler(handlerArg, name.str); - } - poolClear(&tempPool); - while (bindings) { - BINDING *b = bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - break; - case XML_TOK_END_TAG: - if (tagLevel == startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - else { - int len; - const char *rawName; - TAG *tag = tagStack; - tagStack = tag->parent; - tag->parent = freeTagList; - freeTagList = tag; - rawName = s + enc->minBytesPerChar*2; - len = XmlNameLength(enc, rawName); - if (len != tag->rawNameLength - || memcmp(tag->rawName, rawName, len) != 0) { - *eventPP = rawName; - return XML_ERROR_TAG_MISMATCH; - } - --tagLevel; - if (endElementHandler && tag->name.str) { - if (tag->name.localPart) { - XML_Char *to = (XML_Char *)tag->name.str + tag->name.uriLen; - const XML_Char *from = tag->name.localPart; - while ((*to++ = *from++) != 0) - ; - } - endElementHandler(handlerArg, tag->name.str); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - while (tag->bindings) { - BINDING *b = tag->bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - tag->bindings = tag->bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - } - break; - case XML_TOK_CHAR_REF: - { - int n = XmlCharRefNumber(enc, s); - if (n < 0) - return XML_ERROR_BAD_CHAR_REF; - if (characterDataHandler) { - XML_Char buf[XML_ENCODE_MAX]; - characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_CDATA_SECT_OPEN: - { - enum XML_Error result; - if (startCdataSectionHandler) - startCdataSectionHandler(handlerArg); -#if 0 - /* Suppose you doing a transformation on a document that involves - changing only the character data. You set up a defaultHandler - and a characterDataHandler. The defaultHandler simply copies - characters through. The characterDataHandler does the transformation - and writes the characters out escaping them as necessary. This case - will fail to work if we leave out the following two lines (because & - and < inside CDATA sections will be incorrectly escaped). - - However, now we have a start/endCdataSectionHandler, so it seems - easier to let the user deal with this. */ - - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doCdataSection(parser, enc, &next, end, nextPtr); - if (!next) { - processor = cdataSectionProcessor; - return result; - } - } - break; - case XML_TOK_TRAILING_RSQB: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (XML_Char *)end - (XML_Char *)s); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - if (startTagLevel == 0) { - *eventPP = end; - return XML_ERROR_NO_ELEMENTS; - } - if (tagLevel != startTagLevel) { - *eventPP = end; - return XML_ERROR_ASYNC_ENTITY; - } - return XML_ERROR_NONE; - case XML_TOK_DATA_CHARS: - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - if (s == next) - break; - *eventPP = s; - } - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (XML_Char *)next - (XML_Char *)s); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - default: - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - *eventPP = s = next; - } - /* not reached */ -} - -/* If tagNamePtr is non-null, build a real list of attributes, -otherwise just check the attributes for well-formedness. */ - -static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *enc, - const char *attStr, TAG_NAME *tagNamePtr, - BINDING **bindingsPtr) -{ - ELEMENT_TYPE *elementType = 0; - int nDefaultAtts = 0; - const XML_Char **appAtts; /* the attribute list to pass to the application */ - int attIndex = 0; - int i; - int n; - int nPrefixes = 0; - BINDING *binding; - const XML_Char *localPart; - - /* lookup the element type name */ - if (tagNamePtr) { - elementType = (ELEMENT_TYPE *)lookup(&dtd.elementTypes, tagNamePtr->str,0); - if (!elementType) { - tagNamePtr->str = poolCopyString(&dtd.pool, tagNamePtr->str); - if (!tagNamePtr->str) - return XML_ERROR_NO_MEMORY; - elementType = (ELEMENT_TYPE *)lookup(&dtd.elementTypes, tagNamePtr->str, sizeof(ELEMENT_TYPE)); - if (!elementType) - return XML_ERROR_NO_MEMORY; - if (ns && !setElementTypePrefix(parser, elementType)) - return XML_ERROR_NO_MEMORY; - } - nDefaultAtts = elementType->nDefaultAtts; - } - /* get the attributes from the tokenizer */ - n = XmlGetAttributes(enc, attStr, attsSize, atts); - if (n + nDefaultAtts > attsSize) { - int oldAttsSize = attsSize; - attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; - atts = REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); - if (!atts) - return XML_ERROR_NO_MEMORY; - if (n > oldAttsSize) - XmlGetAttributes(enc, attStr, n, atts); - } - appAtts = (const XML_Char **)atts; - for (i = 0; i < n; i++) { - /* add the name and value to the attribute list */ - ATTRIBUTE_ID *attId = getAttributeId(parser, enc, atts[i].name, - atts[i].name - + XmlNameLength(enc, atts[i].name)); - if (!attId) - return XML_ERROR_NO_MEMORY; - /* detect duplicate attributes */ - if ((attId->name)[-1]) { - if (enc == encoding) - eventPtr = atts[i].name; - return XML_ERROR_DUPLICATE_ATTRIBUTE; - } - (attId->name)[-1] = 1; - appAtts[attIndex++] = attId->name; - if (!atts[i].normalized) { - enum XML_Error result; - int isCdata = 1; - - /* figure out whether declared as other than CDATA */ - if (attId->maybeTokenized) { - int j; - for (j = 0; j < nDefaultAtts; j++) { - if (attId == elementType->defaultAtts[j].id) { - isCdata = elementType->defaultAtts[j].isCdata; - break; - } - } - } - - /* normalize the attribute value */ - result = storeAttributeValue(parser, enc, isCdata, - atts[i].valuePtr, atts[i].valueEnd, - &tempPool); - if (result) - return result; - if (tagNamePtr) { - appAtts[attIndex] = poolStart(&tempPool); - poolFinish(&tempPool); - } - else - poolDiscard(&tempPool); - } - else if (tagNamePtr) { - /* the value did not need normalizing */ - appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, atts[i].valueEnd); - if (appAtts[attIndex] == 0) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - /* handle prefixed attribute names */ - if (attId->prefix && tagNamePtr) { - if (attId->xmlns) { - /* deal with namespace declarations here */ - if (!addBinding(parser, attId->prefix, attId, appAtts[attIndex], bindingsPtr)) - return XML_ERROR_NO_MEMORY; - --attIndex; - } - else { - /* deal with other prefixed names later */ - attIndex++; - nPrefixes++; - (attId->name)[-1] = 2; - } - } - else - attIndex++; - } - if (tagNamePtr) { - int j; - nSpecifiedAtts = attIndex; - if (elementType->idAtt && (elementType->idAtt->name)[-1]) { - for (i = 0; i < attIndex; i += 2) - if (appAtts[i] == elementType->idAtt->name) { - idAttIndex = i; - break; - } - } - else - idAttIndex = -1; - /* do attribute defaulting */ - for (j = 0; j < nDefaultAtts; j++) { - const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + j; - if (!(da->id->name)[-1] && da->value) { - if (da->id->prefix) { - if (da->id->xmlns) { - if (!addBinding(parser, da->id->prefix, da->id, da->value, bindingsPtr)) - return XML_ERROR_NO_MEMORY; - } - else { - (da->id->name)[-1] = 2; - nPrefixes++; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - else { - (da->id->name)[-1] = 1; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - } - appAtts[attIndex] = 0; - } - i = 0; - if (nPrefixes) { - /* expand prefixed attribute names */ - for (; i < attIndex; i += 2) { - if (appAtts[i][-1] == 2) { - ATTRIBUTE_ID *id; - ((XML_Char *)(appAtts[i]))[-1] = 0; - id = (ATTRIBUTE_ID *)lookup(&dtd.attributeIds, appAtts[i], 0); - if (id->prefix->binding) { - int j; - const BINDING *b = id->prefix->binding; - const XML_Char *s = appAtts[i]; - for (j = 0; j < b->uriLen; j++) { - if (!poolAppendChar(&tempPool, b->uri[j])) - return XML_ERROR_NO_MEMORY; - } - while (*s++ != ':') - ; - do { - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - } while (*s++); - if (ns_triplets) { - tempPool.ptr[-1] = namespaceSeparator; - s = b->prefix->name; - do { - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - } while (*s++); - } - - appAtts[i] = poolStart(&tempPool); - poolFinish(&tempPool); - } - if (!--nPrefixes) - break; - } - else - ((XML_Char *)(appAtts[i]))[-1] = 0; - } - } - /* clear the flags that say whether attributes were specified */ - for (; i < attIndex; i += 2) - ((XML_Char *)(appAtts[i]))[-1] = 0; - if (!tagNamePtr) - return XML_ERROR_NONE; - for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) - binding->attId->name[-1] = 0; - /* expand the element type name */ - if (elementType->prefix) { - binding = elementType->prefix->binding; - if (!binding) - return XML_ERROR_NONE; - localPart = tagNamePtr->str; - while (*localPart++ != XML_T(':')) - ; - } - else if (dtd.defaultPrefix.binding) { - binding = dtd.defaultPrefix.binding; - localPart = tagNamePtr->str; - } - else - return XML_ERROR_NONE; - tagNamePtr->localPart = localPart; - tagNamePtr->uriLen = binding->uriLen; - for (i = 0; localPart[i++];) - ; - n = i + binding->uriLen; - if (n > binding->uriAlloc) { - TAG *p; - XML_Char *uri = MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); - if (!uri) - return XML_ERROR_NO_MEMORY; - binding->uriAlloc = n + EXPAND_SPARE; - memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); - for (p = tagStack; p; p = p->parent) - if (p->name.str == binding->uri) - p->name.str = uri; - FREE(binding->uri); - binding->uri = uri; - } - memcpy(binding->uri + binding->uriLen, localPart, i * sizeof(XML_Char)); - tagNamePtr->str = binding->uri; - return XML_ERROR_NONE; -} - -static -int addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, const XML_Char *uri, BINDING **bindingsPtr) -{ - BINDING *b; - int len; - for (len = 0; uri[len]; len++) - ; - if (namespaceSeparator) - len++; - if (freeBindingList) { - b = freeBindingList; - if (len > b->uriAlloc) { - b->uri = REALLOC(b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) - return 0; - b->uriAlloc = len + EXPAND_SPARE; - } - freeBindingList = b->nextTagBinding; - } - else { - b = MALLOC(sizeof(BINDING)); - if (!b) - return 0; - b->uri = MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) { - FREE(b); - return 0; - } - b->uriAlloc = len + EXPAND_SPARE; - } - b->uriLen = len; - memcpy(b->uri, uri, len * sizeof(XML_Char)); - if (namespaceSeparator) - b->uri[len - 1] = namespaceSeparator; - b->prefix = prefix; - b->attId = attId; - b->prevPrefixBinding = prefix->binding; - if (*uri == XML_T('\0') && prefix == &dtd.defaultPrefix) - prefix->binding = 0; - else - prefix->binding = b; - b->nextTagBinding = *bindingsPtr; - *bindingsPtr = b; - if (startNamespaceDeclHandler) - startNamespaceDeclHandler(handlerArg, prefix->name, - prefix->binding ? uri : 0); - return 1; -} - -/* The idea here is to avoid using stack for each CDATA section when -the whole file is parsed with one call. */ - -static -enum XML_Error cdataSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doCdataSection(parser, encoding, &start, end, endPtr); - if (start) { - processor = contentProcessor; - return contentProcessor(parser, start, end, endPtr); - } - return result; -} - -/* startPtr gets set to non-null is the section is closed, and to null if -the section is not yet closed. */ - -static -enum XML_Error doCdataSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr) -{ - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = 0; - for (;;) { - const char *next; - int tok = XmlCdataSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_CDATA_SECT_CLOSE: - if (endCdataSectionHandler) - endCdataSectionHandler(handlerArg); -#if 0 - /* see comment under XML_TOK_CDATA_SECT_OPEN */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - return XML_ERROR_NONE; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_DATA_CHARS: - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = next; - characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - if (s == next) - break; - *eventPP = s; - } - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (XML_Char *)next - (XML_Char *)s); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_CDATA_SECTION; - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - *eventPP = s = next; - } - /* not reached */ -} - -#ifdef XML_DTD - -/* The idea here is to avoid using stack for each IGNORE section when -the whole file is parsed with one call. */ - -static -enum XML_Error ignoreSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, endPtr); - if (start) { - processor = prologProcessor; - return prologProcessor(parser, start, end, endPtr); - } - return result; -} - -/* startPtr gets set to non-null is the section is closed, and to null if -the section is not yet closed. */ - -static -enum XML_Error doIgnoreSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr) -{ - const char *next; - int tok; - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = 0; - tok = XmlIgnoreSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_IGNORE_SECT: - if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - return XML_ERROR_NONE; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - /* not reached */ -} - -#endif /* XML_DTD */ - -static enum XML_Error -initializeEncoding(XML_Parser parser) -{ - const char *s; -#ifdef XML_UNICODE - char encodingBuf[128]; - if (!protocolEncodingName) - s = 0; - else { - int i; - for (i = 0; protocolEncodingName[i]; i++) { - if (i == sizeof(encodingBuf) - 1 - || (protocolEncodingName[i] & ~0x7f) != 0) { - encodingBuf[0] = '\0'; - break; - } - encodingBuf[i] = (char)protocolEncodingName[i]; - } - encodingBuf[i] = '\0'; - s = encodingBuf; - } -#else - s = protocolEncodingName; -#endif - if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) - return XML_ERROR_NONE; - return handleUnknownEncoding(parser, protocolEncodingName); -} - -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next) -{ - const char *encodingName = 0; - const char *storedEncName = 0; - const ENCODING *newEncoding = 0; - const char *version = 0; - const char *versionend; - const char *storedversion = 0; - int standalone = -1; - if (!(ns - ? XmlParseXmlDeclNS - : XmlParseXmlDecl)(isGeneralTextEntity, - encoding, - s, - next, - &eventPtr, - &version, - &versionend, - &encodingName, - &newEncoding, - &standalone)) - return XML_ERROR_SYNTAX; - if (!isGeneralTextEntity && standalone == 1) { - dtd.standalone = 1; -#ifdef XML_DTD - if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif /* XML_DTD */ - } - if (xmlDeclHandler) { - if (encodingName) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (! storedEncName) - return XML_ERROR_NO_MEMORY; - poolFinish(&temp2Pool); - } - if (version) { - storedversion = poolStoreString(&temp2Pool, - encoding, - version, - versionend - encoding->minBytesPerChar); - if (! storedversion) - return XML_ERROR_NO_MEMORY; - } - xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); - } - else if (defaultHandler) - reportDefault(parser, encoding, s, next); - if (!protocolEncodingName) { - if (newEncoding) { - if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { - eventPtr = encodingName; - return XML_ERROR_INCORRECT_ENCODING; - } - encoding = newEncoding; - } - else if (encodingName) { - enum XML_Error result; - if (! storedEncName) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (! storedEncName) - return XML_ERROR_NO_MEMORY; - } - result = handleUnknownEncoding(parser, storedEncName); - poolClear(&tempPool); - if (result == XML_ERROR_UNKNOWN_ENCODING) - eventPtr = encodingName; - return result; - } - } - - if (storedEncName || storedversion) - poolClear(&temp2Pool); - - return XML_ERROR_NONE; -} - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (unknownEncodingHandler) { - XML_Encoding info; - int i; - for (i = 0; i < 256; i++) - info.map[i] = -1; - info.convert = 0; - info.data = 0; - info.release = 0; - if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, &info)) { - ENCODING *enc; - unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); - if (!unknownEncodingMem) { - if (info.release) - info.release(info.data); - return XML_ERROR_NO_MEMORY; - } - enc = (ns - ? XmlInitUnknownEncodingNS - : XmlInitUnknownEncoding)(unknownEncodingMem, - info.map, - info.convert, - info.data); - if (enc) { - unknownEncodingData = info.data; - unknownEncodingRelease = info.release; - encoding = enc; - return XML_ERROR_NONE; - } - } - if (info.release) - info.release(info.data); - } - return XML_ERROR_UNKNOWN_ENCODING; -} - -static enum XML_Error -prologInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = prologProcessor; - return prologProcessor(parser, s, end, nextPtr); -} - -static enum XML_Error -prologProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *next; - int tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, nextPtr); -} - -static enum XML_Error -doProlog(XML_Parser parser, - const ENCODING *enc, - const char *s, - const char *end, - int tok, - const char *next, - const char **nextPtr) -{ -#ifdef XML_DTD - static const XML_Char externalSubsetName[] = { '#' , '\0' }; -#endif /* XML_DTD */ - - const char **eventPP; - const char **eventEndPP; - enum XML_Content_Quant quant; - - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - for (;;) { - int role; - *eventPP = s; - *eventEndPP = next; - if (tok <= 0) { - if (nextPtr != 0 && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: -#ifdef XML_DTD - if (enc != encoding) - return XML_ERROR_NONE; - if (parentParser) { - if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) - == XML_ROLE_ERROR) - return XML_ERROR_SYNTAX; - hadExternalDoctype = 0; - return XML_ERROR_NONE; - } -#endif /* XML_DTD */ - return XML_ERROR_NO_ELEMENTS; - default: - tok = -tok; - next = end; - break; - } - } - role = XmlTokenRole(&prologState, tok, s, next, enc); - switch (role) { - case XML_ROLE_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 0, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - } - break; - case XML_ROLE_DOCTYPE_NAME: - if (startDoctypeDeclHandler) { - doctypeName = poolStoreString(&tempPool, enc, s, next); - if (! doctypeName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - doctypeSysid = 0; - doctypePubid = 0; - } - break; - case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: - if (startDoctypeDeclHandler) { - startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, - doctypePubid, 1); - doctypeName = 0; - poolClear(&tempPool); - } - break; -#ifdef XML_DTD - case XML_ROLE_TEXT_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - } - break; -#endif /* XML_DTD */ - case XML_ROLE_DOCTYPE_PUBLIC_ID: - if (startDoctypeDeclHandler) { - doctypePubid = poolStoreString(&tempPool, enc, s + 1, next - 1); - if (! doctypePubid) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } -#ifdef XML_DTD - declEntity = (ENTITY *)lookup(&dtd.paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; -#endif /* XML_DTD */ - /* fall through */ - case XML_ROLE_ENTITY_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_SYNTAX; - if (declEntity) { - XML_Char *tem = poolStoreString(&dtd.pool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declEntity->publicId = tem; - poolFinish(&dtd.pool); - } - break; - case XML_ROLE_DOCTYPE_CLOSE: - if (doctypeName) { - startDoctypeDeclHandler(handlerArg, doctypeName, - doctypeSysid, doctypePubid, 0); - poolClear(&tempPool); - } - if (dtd.complete && hadExternalDoctype) { - dtd.complete = 0; -#ifdef XML_DTD - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(&dtd.paramEntities, - externalSubsetName, - 0); - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - } -#endif /* XML_DTD */ - if (!dtd.complete - && !dtd.standalone - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - } - if (endDoctypeDeclHandler) - endDoctypeDeclHandler(handlerArg); - break; - case XML_ROLE_INSTANCE_START: - processor = contentProcessor; - return contentProcessor(parser, s, end, nextPtr); - case XML_ROLE_ATTLIST_ELEMENT_NAME: - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) - return XML_ERROR_NO_MEMORY; - break; - case XML_ROLE_ATTRIBUTE_NAME: - declAttributeId = getAttributeId(parser, enc, s, next); - if (!declAttributeId) - return XML_ERROR_NO_MEMORY; - declAttributeIsCdata = 0; - declAttributeType = 0; - declAttributeIsId = 0; - break; - case XML_ROLE_ATTRIBUTE_TYPE_CDATA: - declAttributeIsCdata = 1; - declAttributeType = "CDATA"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_ID: - declAttributeIsId = 1; - declAttributeType = "ID"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_IDREF: - declAttributeType = "IDREF"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: - declAttributeType = "IDREFS"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: - declAttributeType = "ENTITY"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: - declAttributeType = "ENTITIES"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: - declAttributeType = "NMTOKEN"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: - declAttributeType = "NMTOKENS"; - break; - - case XML_ROLE_ATTRIBUTE_ENUM_VALUE: - case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: - if (attlistDeclHandler) - { - char *prefix; - if (declAttributeType) { - prefix = "|"; - } - else { - prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE - ? "NOTATION(" - : "("); - } - if (! poolAppendString(&tempPool, prefix)) - return XML_ERROR_NO_MEMORY; - if (! poolAppend(&tempPool, enc, s, next)) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - } - break; - case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: - case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: - if (dtd.complete - && !defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, declAttributeIsId, 0, - parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == '(' - || (*declAttributeType == 'N' && declAttributeType[1] == 'O')) { - /* Enumerated or Notation type */ - if (! poolAppendChar(&tempPool, ')') - || ! poolAppendChar(&tempPool, '\0')) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - } - break; - case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: - case XML_ROLE_FIXED_ATTRIBUTE_VALUE: - { - const XML_Char *attVal; - enum XML_Error result - = storeAttributeValue(parser, enc, declAttributeIsCdata, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar, - &dtd.pool); - if (result) - return result; - attVal = poolStart(&dtd.pool); - poolFinish(&dtd.pool); - if (dtd.complete - /* ID attributes aren't allowed to have a default */ - && !defineAttribute(declElementType, declAttributeId, declAttributeIsCdata, 0, attVal, parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == '(' - || (*declAttributeType == 'N' && declAttributeType[1] == 'O')) { - /* Enumerated or Notation type */ - if (! poolAppendChar(&tempPool, ')') - || ! poolAppendChar(&tempPool, '\0')) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - attVal, - role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - } - break; - } - case XML_ROLE_ENTITY_VALUE: - { - enum XML_Error result = storeEntityValue(parser, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (declEntity) { - declEntity->textPtr = poolStart(&dtd.pool); - declEntity->textLen = poolLength(&dtd.pool); - poolFinish(&dtd.pool); - if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - declEntity->textPtr, - declEntity->textLen, - curBase, 0, 0, 0); - } - } - else - poolDiscard(&dtd.pool); - if (result != XML_ERROR_NONE) - return result; - } - break; - case XML_ROLE_DOCTYPE_SYSTEM_ID: - if (startDoctypeDeclHandler) { - doctypeSysid = poolStoreString(&tempPool, enc, s + 1, next - 1); - if (! doctypeSysid) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - if (!dtd.standalone -#ifdef XML_DTD - && !paramEntityParsing -#endif /* XML_DTD */ - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - hadExternalDoctype = 1; -#ifndef XML_DTD - break; -#else /* XML_DTD */ - if (!declEntity) { - declEntity = (ENTITY *)lookup(&dtd.paramEntities, - externalSubsetName, - sizeof(ENTITY)); - declEntity->publicId = 0; - if (!declEntity) - return XML_ERROR_NO_MEMORY; - } - /* fall through */ -#endif /* XML_DTD */ - case XML_ROLE_ENTITY_SYSTEM_ID: - if (declEntity) { - declEntity->systemId = poolStoreString(&dtd.pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!declEntity->systemId) - return XML_ERROR_NO_MEMORY; - declEntity->base = curBase; - poolFinish(&dtd.pool); - } - break; - case XML_ROLE_ENTITY_COMPLETE: - if (declEntity && entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - 0); - } - break; - case XML_ROLE_ENTITY_NOTATION_NAME: - if (declEntity) { - declEntity->notation = poolStoreString(&dtd.pool, enc, s, next); - if (!declEntity->notation) - return XML_ERROR_NO_MEMORY; - poolFinish(&dtd.pool); - if (unparsedEntityDeclHandler) { - *eventEndPP = s; - unparsedEntityDeclHandler(handlerArg, - declEntity->name, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - } - else if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - } - } - break; - case XML_ROLE_GENERAL_ENTITY_NAME: - { - const XML_Char *name; - if (XmlPredefinedEntityName(enc, s, next)) { - declEntity = 0; - break; - } - name = poolStoreString(&dtd.pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - if (dtd.complete) { - declEntity = (ENTITY *)lookup(&dtd.generalEntities, name, sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd.pool); - declEntity = 0; - } - else { - poolFinish(&dtd.pool); - declEntity->publicId = 0; - declEntity->is_param = 0; - } - } - else { - poolDiscard(&dtd.pool); - declEntity = 0; - } - } - break; - case XML_ROLE_PARAM_ENTITY_NAME: -#ifdef XML_DTD - if (dtd.complete) { - const XML_Char *name = poolStoreString(&dtd.pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(&dtd.paramEntities, - name, sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd.pool); - declEntity = 0; - } - else { - poolFinish(&dtd.pool); - declEntity->publicId = 0; - declEntity->is_param = 1; - } - } -#else /* not XML_DTD */ - declEntity = 0; -#endif /* not XML_DTD */ - break; - case XML_ROLE_NOTATION_NAME: - declNotationPublicId = 0; - declNotationName = 0; - if (notationDeclHandler) { - declNotationName = poolStoreString(&tempPool, enc, s, next); - if (!declNotationName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - break; - case XML_ROLE_NOTATION_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_SYNTAX; - if (declNotationName) { - XML_Char *tem = poolStoreString(&tempPool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declNotationPublicId = tem; - poolFinish(&tempPool); - } - break; - case XML_ROLE_NOTATION_SYSTEM_ID: - if (declNotationName && notationDeclHandler) { - const XML_Char *systemId - = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!systemId) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - systemId, - declNotationPublicId); - } - poolClear(&tempPool); - break; - case XML_ROLE_NOTATION_NO_SYSTEM_ID: - if (declNotationPublicId && notationDeclHandler) { - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - 0, - declNotationPublicId); - } - poolClear(&tempPool); - break; - case XML_ROLE_ERROR: - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: - return XML_ERROR_PARAM_ENTITY_REF; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - default: - return XML_ERROR_SYNTAX; - } -#ifdef XML_DTD - case XML_ROLE_IGNORE_SECT: - { - enum XML_Error result; - if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doIgnoreSection(parser, enc, &next, end, nextPtr); - if (!next) { - processor = ignoreSectionProcessor; - return result; - } - } - break; -#endif /* XML_DTD */ - case XML_ROLE_GROUP_OPEN: - if (prologState.level >= groupSize) { - if (groupSize) { - groupConnector = REALLOC(groupConnector, groupSize *= 2); - if (dtd.scaffIndex) - dtd.scaffIndex = REALLOC(dtd.scaffIndex, groupSize * sizeof(int)); - } - else - groupConnector = MALLOC(groupSize = 32); - if (!groupConnector) - return XML_ERROR_NO_MEMORY; - } - groupConnector[prologState.level] = 0; - if (dtd.in_eldecl) { - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd.scaffIndex[dtd.scaffLevel] = myindex; - dtd.scaffLevel++; - dtd.scaffold[myindex].type = XML_CTYPE_SEQ; - } - break; - case XML_ROLE_GROUP_SEQUENCE: - if (groupConnector[prologState.level] == '|') - return XML_ERROR_SYNTAX; - groupConnector[prologState.level] = ','; - break; - case XML_ROLE_GROUP_CHOICE: - if (groupConnector[prologState.level] == ',') - return XML_ERROR_SYNTAX; - if (dtd.in_eldecl - && ! groupConnector[prologState.level] - && dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type != XML_CTYPE_MIXED - ) { - dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type = XML_CTYPE_CHOICE; - } - groupConnector[prologState.level] = '|'; - break; - case XML_ROLE_PARAM_ENTITY_REF: -#ifdef XML_DTD - case XML_ROLE_INNER_PARAM_ENTITY_REF: - if (paramEntityParsing - && (dtd.complete || role == XML_ROLE_INNER_PARAM_ENTITY_REF)) { - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&dtd.pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.paramEntities, name, 0); - poolDiscard(&dtd.pool); - if (!entity) { - /* FIXME what to do if !dtd.complete? */ - return XML_ERROR_UNDEFINED_ENTITY; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - result = processInternalParamEntity(parser, entity); - if (result != XML_ERROR_NONE) - return result; - break; - } - if (role == XML_ROLE_INNER_PARAM_ENTITY_REF) - return XML_ERROR_PARAM_ENTITY_REF; - if (externalEntityRefHandler) { - dtd.complete = 0; - entity->open = 1; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { - entity->open = 0; - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - } - entity->open = 0; - if (dtd.complete) - break; - } - } -#endif /* XML_DTD */ - if (!dtd.standalone - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - dtd.complete = 0; - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - - /* Element declaration stuff */ - - case XML_ROLE_ELEMENT_NAME: - if (elementDeclHandler) { - declElementType = getElementType(parser, enc, s, next); - if (! declElementType) - return XML_ERROR_NO_MEMORY; - dtd.scaffLevel = 0; - dtd.scaffCount = 0; - dtd.in_eldecl = 1; - } - break; - - case XML_ROLE_CONTENT_ANY: - case XML_ROLE_CONTENT_EMPTY: - if (dtd.in_eldecl) { - if (elementDeclHandler) { - XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); - if (! content) - return XML_ERROR_NO_MEMORY; - content->quant = XML_CQUANT_NONE; - content->name = 0; - content->numchildren = 0; - content->children = 0; - content->type = ((role == XML_ROLE_CONTENT_ANY) ? - XML_CTYPE_ANY : - XML_CTYPE_EMPTY); - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, content); - } - dtd.in_eldecl = 0; - } - break; - - case XML_ROLE_CONTENT_PCDATA: - if (dtd.in_eldecl) { - dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type = XML_CTYPE_MIXED; - } - break; - - case XML_ROLE_CONTENT_ELEMENT: - quant = XML_CQUANT_NONE; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_OPT: - quant = XML_CQUANT_OPT; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_REP: - quant = XML_CQUANT_REP; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_PLUS: - quant = XML_CQUANT_PLUS; - elementContent: - if (dtd.in_eldecl) - { - ELEMENT_TYPE *el; - const char *nxt = quant == XML_CQUANT_NONE ? next : next - 1; - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd.scaffold[myindex].type = XML_CTYPE_NAME; - dtd.scaffold[myindex].quant = quant; - el = getElementType(parser, enc, s, nxt); - if (! el) - return XML_ERROR_NO_MEMORY; - dtd.scaffold[myindex].name = el->name; - dtd.contentStringLen += nxt - s + 1; - } - break; - - case XML_ROLE_GROUP_CLOSE: - quant = XML_CQUANT_NONE; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_OPT: - quant = XML_CQUANT_OPT; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_REP: - quant = XML_CQUANT_REP; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_PLUS: - quant = XML_CQUANT_PLUS; - closeGroup: - if (dtd.in_eldecl) { - dtd.scaffLevel--; - dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel]].quant = quant; - if (dtd.scaffLevel == 0) { - if (elementDeclHandler) { - XML_Content *model = build_model(parser); - if (! model) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, model); - } - dtd.in_eldecl = 0; - dtd.contentStringLen = 0; - } - } - break; - /* End element declaration stuff */ - - case XML_ROLE_NONE: - switch (tok) { - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - } - break; - } - if (defaultHandler) { - switch (tok) { - case XML_TOK_PI: - case XML_TOK_COMMENT: - case XML_TOK_BOM: - case XML_TOK_XML_DECL: -#ifdef XML_DTD - case XML_TOK_IGNORE_SECT: -#endif /* XML_DTD */ - case XML_TOK_PARAM_ENTITY_REF: - break; - default: -#ifdef XML_DTD - if (role != XML_ROLE_IGNORE_SECT) -#endif /* XML_DTD */ - reportDefault(parser, enc, s, next); - } - } - s = next; - tok = XmlPrologTok(enc, s, end, &next); - } - /* not reached */ -} - -static -enum XML_Error epilogProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - processor = epilogProcessor; - eventPtr = s; - for (;;) { - const char *next; - int tok = XmlPrologTok(encoding, s, end, &next); - eventEndPtr = next; - switch (tok) { - case -XML_TOK_PROLOG_S: - if (defaultHandler) { - eventEndPtr = end; - reportDefault(parser, encoding, s, end); - } - /* fall through */ - case XML_TOK_NONE: - if (nextPtr) - *nextPtr = end; - return XML_ERROR_NONE; - case XML_TOK_PROLOG_S: - if (defaultHandler) - reportDefault(parser, encoding, s, next); - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_INVALID: - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - default: - return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; - } - eventPtr = s = next; - } -} - -#ifdef XML_DTD - -static enum XML_Error -processInternalParamEntity(XML_Parser parser, ENTITY *entity) -{ - const char *s, *end, *next; - int tok; - enum XML_Error result; - OPEN_INTERNAL_ENTITY openEntity; - entity->open = 1; - openEntity.next = openInternalEntities; - openInternalEntities = &openEntity; - openEntity.entity = entity; - openEntity.internalEventPtr = 0; - openEntity.internalEventEndPtr = 0; - s = (char *)entity->textPtr; - end = (char *)(entity->textPtr + entity->textLen); - tok = XmlPrologTok(internalEncoding, s, end, &next); - result = doProlog(parser, internalEncoding, s, end, tok, next, 0); - entity->open = 0; - openInternalEntities = openEntity.next; - return result; -} - -#endif /* XML_DTD */ - -static -enum XML_Error errorProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - cmExpatUnused(s); - cmExpatUnused(end); - cmExpatUnused(nextPtr); - return errorCode; -} - -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *enc, int isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, end, pool); - if (result) - return result; - if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) - poolChop(pool); - if (!poolAppendChar(pool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - return XML_ERROR_NONE; -} - -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *enc, int isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - for (;;) { - const char *next; - int tok = XmlAttributeValueTok(enc, ptr, end, &next); - switch (tok) { - case XML_TOK_NONE: - return XML_ERROR_NONE; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, ptr); - if (n < 0) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - if (!isCdata - && n == 0x20 /* space */ - && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (!poolAppendChar(pool, buf[i])) - return XML_ERROR_NO_MEMORY; - } - } - break; - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, ptr, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_TRAILING_CR: - next = ptr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_ATTRIBUTE_VALUE_S: - case XML_TOK_DATA_NEWLINE: - if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - if (!poolAppendChar(pool, 0x20)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = XmlPredefinedEntityName(enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (!poolAppendChar(pool, ch)) - return XML_ERROR_NO_MEMORY; - break; - } - name = poolStoreString(&temp2Pool, enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.generalEntities, name, 0); - poolDiscard(&temp2Pool); - if (!entity) { - if (dtd.complete) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_UNDEFINED_ENTITY; - } - } - else if (entity->open) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - else if (entity->notation) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BINARY_ENTITY_REF; - } - else if (!entity->textPtr) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; - } - else { - enum XML_Error result; - const XML_Char *textEnd = entity->textPtr + entity->textLen; - entity->open = 1; - result = appendAttributeValue(parser, internalEncoding, isCdata, (char *)entity->textPtr, (char *)textEnd, pool); - entity->open = 0; - if (result) - return result; - } - } - break; - default: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_UNEXPECTED_STATE; - } - ptr = next; - } - /* not reached */ -} - -static -enum XML_Error storeEntityValue(XML_Parser parser, - const ENCODING *enc, - const char *entityTextPtr, - const char *entityTextEnd) -{ - STRING_POOL *pool = &(dtd.pool); - for (;;) { - const char *next; - int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: -#ifdef XML_DTD - if (parentParser || enc != encoding) { - enum XML_Error result; - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&tempPool, enc, - entityTextPtr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.paramEntities, name, 0); - poolDiscard(&tempPool); - if (!entity) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_UNDEFINED_ENTITY; - } - if (entity->open) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - if (entity->systemId) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_PARAM_ENTITY_REF; - } - entity->open = 1; - result = storeEntityValue(parser, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr + entity->textLen)); - entity->open = 0; - if (result) - return result; - break; - } -#endif /* XML_DTD */ - eventPtr = entityTextPtr; - return XML_ERROR_SYNTAX; - case XML_TOK_NONE: - return XML_ERROR_NONE; - case XML_TOK_ENTITY_REF: - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, entityTextPtr, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_TRAILING_CR: - next = entityTextPtr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_DATA_NEWLINE: - if (pool->end == pool->ptr && !poolGrow(pool)) - return XML_ERROR_NO_MEMORY; - *(pool->ptr)++ = 0xA; - break; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, entityTextPtr); - if (n < 0) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_BAD_CHAR_REF; - } - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (pool->end == pool->ptr && !poolGrow(pool)) - return XML_ERROR_NO_MEMORY; - *(pool->ptr)++ = buf[i]; - } - } - break; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - default: - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_UNEXPECTED_STATE; - } - entityTextPtr = next; - } - /* not reached */ -} - -static void -normalizeLines(XML_Char *s) -{ - XML_Char *p; - for (;; s++) { - if (*s == XML_T('\0')) - return; - if (*s == 0xD) - break; - } - p = s; - do { - if (*s == 0xD) { - *p++ = 0xA; - if (*++s == 0xA) - s++; - } - else - *p++ = *s++; - } while (*s); - *p = XML_T('\0'); -} - -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) -{ - const XML_Char *target; - XML_Char *data; - const char *tem; - if (!processingInstructionHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - start += enc->minBytesPerChar * 2; - tem = start + XmlNameLength(enc, start); - target = poolStoreString(&tempPool, enc, start, tem); - if (!target) - return 0; - poolFinish(&tempPool); - data = poolStoreString(&tempPool, enc, - XmlSkipS(enc, tem), - end - enc->minBytesPerChar*2); - if (!data) - return 0; - normalizeLines(data); - processingInstructionHandler(handlerArg, target, data); - poolClear(&tempPool); - return 1; -} - -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) -{ - XML_Char *data; - if (!commentHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - data = poolStoreString(&tempPool, - enc, - start + enc->minBytesPerChar * 4, - end - enc->minBytesPerChar * 3); - if (!data) - return 0; - normalizeLines(data); - commentHandler(handlerArg, data); - poolClear(&tempPool); - return 1; -} - -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, const char *end) -{ - if (MUST_CONVERT(enc, s)) { - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - do { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - defaultHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - *eventPP = s; - } while (s != end); - } - else - defaultHandler(handlerArg, (XML_Char *)s, (XML_Char *)end - (XML_Char *)s); -} - - -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, int isCdata, - int isId, const XML_Char *value, XML_Parser parser) -{ - DEFAULT_ATTRIBUTE *att; - if (value || isId) { - /* The handling of default attributes gets messed up if we have - a default which duplicates a non-default. */ - int i; - for (i = 0; i < type->nDefaultAtts; i++) - if (attId == type->defaultAtts[i].id) - return 1; - if (isId && !type->idAtt && !attId->xmlns) - type->idAtt = attId; - } - if (type->nDefaultAtts == type->allocDefaultAtts) { - if (type->allocDefaultAtts == 0) { - type->allocDefaultAtts = 8; - type->defaultAtts = MALLOC(type->allocDefaultAtts*sizeof(DEFAULT_ATTRIBUTE)); - } - else { - type->allocDefaultAtts *= 2; - type->defaultAtts = REALLOC(type->defaultAtts, - type->allocDefaultAtts*sizeof(DEFAULT_ATTRIBUTE)); - } - if (!type->defaultAtts) - return 0; - } - att = type->defaultAtts + type->nDefaultAtts; - att->id = attId; - att->value = value; - att->isCdata = isCdata; - if (!isCdata) - attId->maybeTokenized = 1; - type->nDefaultAtts += 1; - return 1; -} - -static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) -{ - const XML_Char *name; - for (name = elementType->name; *name; name++) { - if (*name == XML_T(':')) { - PREFIX *prefix; - const XML_Char *s; - for (s = elementType->name; s != name; s++) { - if (!poolAppendChar(&dtd.pool, *s)) - return 0; - } - if (!poolAppendChar(&dtd.pool, XML_T('\0'))) - return 0; - prefix = (PREFIX *)lookup(&dtd.prefixes, poolStart(&dtd.pool), sizeof(PREFIX)); - if (!prefix) - return 0; - if (prefix->name == poolStart(&dtd.pool)) - poolFinish(&dtd.pool); - else - poolDiscard(&dtd.pool); - elementType->prefix = prefix; - - } - } - return 1; -} - -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) -{ - ATTRIBUTE_ID *id; - const XML_Char *name; - if (!poolAppendChar(&dtd.pool, XML_T('\0'))) - return 0; - name = poolStoreString(&dtd.pool, enc, start, end); - if (!name) - return 0; - ++name; - id = (ATTRIBUTE_ID *)lookup(&dtd.attributeIds, name, sizeof(ATTRIBUTE_ID)); - if (!id) - return 0; - if (id->name != name) - poolDiscard(&dtd.pool); - else { - poolFinish(&dtd.pool); - if (!ns) - ; - else if (name[0] == 'x' - && name[1] == 'm' - && name[2] == 'l' - && name[3] == 'n' - && name[4] == 's' - && (name[5] == XML_T('\0') || name[5] == XML_T(':'))) { - if (name[5] == '\0') - id->prefix = &dtd.defaultPrefix; - else - id->prefix = (PREFIX *)lookup(&dtd.prefixes, name + 6, sizeof(PREFIX)); - id->xmlns = 1; - } - else { - int i; - for (i = 0; name[i]; i++) { - if (name[i] == XML_T(':')) { - int j; - for (j = 0; j < i; j++) { - if (!poolAppendChar(&dtd.pool, name[j])) - return 0; - } - if (!poolAppendChar(&dtd.pool, XML_T('\0'))) - return 0; - id->prefix = (PREFIX *)lookup(&dtd.prefixes, poolStart(&dtd.pool), sizeof(PREFIX)); - if (id->prefix->name == poolStart(&dtd.pool)) - poolFinish(&dtd.pool); - else - poolDiscard(&dtd.pool); - break; - } - } - } - } - return id; -} - -#define CONTEXT_SEP XML_T('\f') - -static -const XML_Char *getContext(XML_Parser parser) -{ - HASH_TABLE_ITER iter; - int needSep = 0; - - if (dtd.defaultPrefix.binding) { - int i; - int len; - if (!poolAppendChar(&tempPool, XML_T('='))) - return 0; - len = dtd.defaultPrefix.binding->uriLen; - if (namespaceSeparator != XML_T('\0')) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, dtd.defaultPrefix.binding->uri[i])) - return 0; - needSep = 1; - } - - hashTableIterInit(&iter, &(dtd.prefixes)); - for (;;) { - int i; - int len; - const XML_Char *s; - PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); - if (!prefix) - break; - if (!prefix->binding) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return 0; - for (s = prefix->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return 0; - if (!poolAppendChar(&tempPool, XML_T('='))) - return 0; - len = prefix->binding->uriLen; - if (namespaceSeparator != XML_T('\0')) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) - return 0; - needSep = 1; - } - - - hashTableIterInit(&iter, &(dtd.generalEntities)); - for (;;) { - const XML_Char *s; - ENTITY *e = (ENTITY *)hashTableIterNext(&iter); - if (!e) - break; - if (!e->open) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return 0; - for (s = e->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return 0; - needSep = 1; - } - - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - return tempPool.start; -} - -static -int setContext(XML_Parser parser, const XML_Char *context) -{ - const XML_Char *s = context; - - while (*context != XML_T('\0')) { - if (*s == CONTEXT_SEP || *s == XML_T('\0')) { - ENTITY *e; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - e = (ENTITY *)lookup(&dtd.generalEntities, poolStart(&tempPool), 0); - if (e) - e->open = 1; - if (*s != XML_T('\0')) - s++; - context = s; - poolDiscard(&tempPool); - } - else if (*s == '=') { - PREFIX *prefix; - if (poolLength(&tempPool) == 0) - prefix = &dtd.defaultPrefix; - else { - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - prefix = (PREFIX *)lookup(&dtd.prefixes, poolStart(&tempPool), sizeof(PREFIX)); - if (!prefix) - return 0; - if (prefix->name == poolStart(&tempPool)) { - prefix->name = poolCopyString(&dtd.pool, prefix->name); - if (!prefix->name) - return 0; - } - poolDiscard(&tempPool); - } - for (context = s + 1; *context != CONTEXT_SEP && *context != XML_T('\0'); context++) - if (!poolAppendChar(&tempPool, *context)) - return 0; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - if (!addBinding(parser, prefix, 0, poolStart(&tempPool), &inheritedBindings)) - return 0; - poolDiscard(&tempPool); - if (*context != XML_T('\0')) - ++context; - s = context; - } - else { - if (!poolAppendChar(&tempPool, *s)) - return 0; - s++; - } - } - return 1; -} - - -static -void normalizePublicId(XML_Char *publicId) -{ - XML_Char *p = publicId; - XML_Char *s; - for (s = publicId; *s; s++) { - switch (*s) { - case 0x20: - case 0xD: - case 0xA: - if (p != publicId && p[-1] != 0x20) - *p++ = 0x20; - break; - default: - *p++ = *s; - } - } - if (p != publicId && p[-1] == 0x20) - --p; - *p = XML_T('\0'); -} - -static int dtdInit(DTD *p, XML_Parser parser) -{ - XML_Memory_Handling_Suite *ms = &((Parser *) parser)->m_mem; - poolInit(&(p->pool), ms); - hashTableInit(&(p->generalEntities), ms); - hashTableInit(&(p->elementTypes), ms); - hashTableInit(&(p->attributeIds), ms); - hashTableInit(&(p->prefixes), ms); - p->complete = 1; - p->standalone = 0; -#ifdef XML_DTD - hashTableInit(&(p->paramEntities), ms); -#endif /* XML_DTD */ - p->defaultPrefix.name = 0; - p->defaultPrefix.binding = 0; - - p->in_eldecl = 0; - p->scaffIndex = 0; - p->scaffLevel = 0; - p->scaffold = 0; - p->contentStringLen = 0; - p->scaffSize = 0; - p->scaffCount = 0; - - return 1; -} - -#ifdef XML_DTD - -static void dtdSwap(DTD *p1, DTD *p2) -{ - DTD tem; - memcpy(&tem, p1, sizeof(DTD)); - memcpy(p1, p2, sizeof(DTD)); - memcpy(p2, &tem, sizeof(DTD)); -} - -#endif /* XML_DTD */ - -static void dtdDestroy(DTD *p, XML_Parser parser) -{ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { - ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) - FREE(e->defaultAtts); - } - hashTableDestroy(&(p->generalEntities)); -#ifdef XML_DTD - hashTableDestroy(&(p->paramEntities)); -#endif /* XML_DTD */ - hashTableDestroy(&(p->elementTypes)); - hashTableDestroy(&(p->attributeIds)); - hashTableDestroy(&(p->prefixes)); - poolDestroy(&(p->pool)); - if (p->scaffIndex) - FREE(p->scaffIndex); - if (p->scaffold) - FREE(p->scaffold); -} - -/* Do a deep copy of the DTD. Return 0 for out of memory; non-zero otherwise. -The new DTD has already been initialized. */ - -static int dtdCopy(DTD *newDtd, const DTD *oldDtd, XML_Parser parser) -{ - HASH_TABLE_ITER iter; - - /* Copy the prefix table. */ - - hashTableIterInit(&iter, &(oldDtd->prefixes)); - for (;;) { - const XML_Char *name; - const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); - if (!oldP) - break; - name = poolCopyString(&(newDtd->pool), oldP->name); - if (!name) - return 0; - if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX))) - return 0; - } - - hashTableIterInit(&iter, &(oldDtd->attributeIds)); - - /* Copy the attribute id table. */ - - for (;;) { - ATTRIBUTE_ID *newA; - const XML_Char *name; - const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); - - if (!oldA) - break; - /* Remember to allocate the scratch byte before the name. */ - if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) - return 0; - name = poolCopyString(&(newDtd->pool), oldA->name); - if (!name) - return 0; - ++name; - newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name, sizeof(ATTRIBUTE_ID)); - if (!newA) - return 0; - newA->maybeTokenized = oldA->maybeTokenized; - if (oldA->prefix) { - newA->xmlns = oldA->xmlns; - if (oldA->prefix == &oldDtd->defaultPrefix) - newA->prefix = &newDtd->defaultPrefix; - else - newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes), oldA->prefix->name, 0); - } - } - - /* Copy the element type table. */ - - hashTableIterInit(&iter, &(oldDtd->elementTypes)); - - for (;;) { - int i; - ELEMENT_TYPE *newE; - const XML_Char *name; - const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(&(newDtd->pool), oldE->name); - if (!name) - return 0; - newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name, sizeof(ELEMENT_TYPE)); - if (!newE) - return 0; - if (oldE->nDefaultAtts) { - newE->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); - if (!newE->defaultAtts) - return 0; - } - if (oldE->idAtt) - newE->idAtt = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0); - newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; - if (oldE->prefix) - newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes), oldE->prefix->name, 0); - for (i = 0; i < newE->nDefaultAtts; i++) { - newE->defaultAtts[i].id = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); - newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; - if (oldE->defaultAtts[i].value) { - newE->defaultAtts[i].value = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); - if (!newE->defaultAtts[i].value) - return 0; - } - else - newE->defaultAtts[i].value = 0; - } - } - - /* Copy the entity tables. */ - if (!copyEntityTable(&(newDtd->generalEntities), - &(newDtd->pool), - &(oldDtd->generalEntities), parser)) - return 0; - -#ifdef XML_DTD - if (!copyEntityTable(&(newDtd->paramEntities), - &(newDtd->pool), - &(oldDtd->paramEntities), parser)) - return 0; -#endif /* XML_DTD */ - - newDtd->complete = oldDtd->complete; - newDtd->standalone = oldDtd->standalone; - - /* Don't want deep copying for scaffolding */ - newDtd->in_eldecl = oldDtd->in_eldecl; - newDtd->scaffold = oldDtd->scaffold; - newDtd->contentStringLen = oldDtd->contentStringLen; - newDtd->scaffSize = oldDtd->scaffSize; - newDtd->scaffLevel = oldDtd->scaffLevel; - newDtd->scaffIndex = oldDtd->scaffIndex; - - return 1; -} /* End dtdCopy */ - -static int copyEntityTable(HASH_TABLE *newTable, - STRING_POOL *newPool, - const HASH_TABLE *oldTable, - XML_Parser parser) -{ - HASH_TABLE_ITER iter; - const XML_Char *cachedOldBase = 0; - const XML_Char *cachedNewBase = 0; - cmExpatUnused(parser); - - hashTableIterInit(&iter, oldTable); - - for (;;) { - ENTITY *newE; - const XML_Char *name; - const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(newPool, oldE->name); - if (!name) - return 0; - newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY)); - if (!newE) - return 0; - if (oldE->systemId) { - const XML_Char *tem = poolCopyString(newPool, oldE->systemId); - if (!tem) - return 0; - newE->systemId = tem; - if (oldE->base) { - if (oldE->base == cachedOldBase) - newE->base = cachedNewBase; - else { - cachedOldBase = oldE->base; - tem = poolCopyString(newPool, cachedOldBase); - if (!tem) - return 0; - cachedNewBase = newE->base = tem; - } - } - } - else { - const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, oldE->textLen); - if (!tem) - return 0; - newE->textPtr = tem; - newE->textLen = oldE->textLen; - } - if (oldE->notation) { - const XML_Char *tem = poolCopyString(newPool, oldE->notation); - if (!tem) - return 0; - newE->notation = tem; - } - } - return 1; -} - -#define INIT_SIZE 64 - -static -int keyeq(KEY s1, KEY s2) -{ - for (; *s1 == *s2; s1++, s2++) - if (*s1 == 0) - return 1; - return 0; -} - -static -unsigned long hash(KEY s) -{ - unsigned long h = 0; - while (*s) - h = (h << 5) + h + (unsigned char)*s++; - return h; -} - -static -NAMED *lookup(HASH_TABLE *table, KEY name, size_t createSize) -{ - size_t i; - if (table->size == 0) { - size_t tsize; - - if (!createSize) - return 0; - tsize = INIT_SIZE * sizeof(NAMED *); - table->v = table->mem->malloc_fcn(tsize); - if (!table->v) - return 0; - memset(table->v, 0, tsize); - table->size = INIT_SIZE; - table->usedLim = INIT_SIZE / 2; - i = hash(name) & (table->size - 1); - } - else { - unsigned long h = hash(name); - for (i = h & (table->size - 1); - table->v[i]; - i == 0 ? i = table->size - 1 : --i) { - if (keyeq(name, table->v[i]->name)) - return table->v[i]; - } - if (!createSize) - return 0; - if (table->used == table->usedLim) { - /* check for overflow */ - size_t newSize = table->size * 2; - size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = table->mem->malloc_fcn(tsize); - if (!newV) - return 0; - memset(newV, 0, tsize); - for (i = 0; i < table->size; i++) - if (table->v[i]) { - size_t j; - for (j = hash(table->v[i]->name) & (newSize - 1); - newV[j]; - j == 0 ? j = newSize - 1 : --j) - ; - newV[j] = table->v[i]; - } - table->mem->free_fcn(table->v); - table->v = newV; - table->size = newSize; - table->usedLim = newSize/2; - for (i = h & (table->size - 1); - table->v[i]; - i == 0 ? i = table->size - 1 : --i) - ; - } - } - table->v[i] = table->mem->malloc_fcn(createSize); - if (!table->v[i]) - return 0; - memset(table->v[i], 0, createSize); - table->v[i]->name = name; - (table->used)++; - return table->v[i]; -} - -static -void hashTableDestroy(HASH_TABLE *table) -{ - size_t i; - for (i = 0; i < table->size; i++) { - NAMED *p = table->v[i]; - if (p) - table->mem->free_fcn(p); - } - if (table->v) - table->mem->free_fcn(table->v); -} - -static -void hashTableInit(HASH_TABLE *p, XML_Memory_Handling_Suite *ms) -{ - p->size = 0; - p->usedLim = 0; - p->used = 0; - p->v = 0; - p->mem = ms; -} - -static -void hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) -{ - iter->p = table->v; - iter->end = iter->p + table->size; -} - -static -NAMED *hashTableIterNext(HASH_TABLE_ITER *iter) -{ - while (iter->p != iter->end) { - NAMED *tem = *(iter->p)++; - if (tem) - return tem; - } - return 0; -} - - -static -void poolInit(STRING_POOL *pool, XML_Memory_Handling_Suite *ms) -{ - pool->blocks = 0; - pool->freeBlocks = 0; - pool->start = 0; - pool->ptr = 0; - pool->end = 0; - pool->mem = ms; -} - -static -void poolClear(STRING_POOL *pool) -{ - if (!pool->freeBlocks) - pool->freeBlocks = pool->blocks; - else { - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - p->next = pool->freeBlocks; - pool->freeBlocks = p; - p = tem; - } - } - pool->blocks = 0; - pool->start = 0; - pool->ptr = 0; - pool->end = 0; -} - -static -void poolDestroy(STRING_POOL *pool) -{ - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } - pool->blocks = 0; - p = pool->freeBlocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } - pool->freeBlocks = 0; - pool->ptr = 0; - pool->start = 0; - pool->end = 0; -} - -static -XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!pool->ptr && !poolGrow(pool)) - return 0; - for (;;) { - XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); - if (ptr == end) - break; - if (!poolGrow(pool)) - return 0; - } - return pool->start; -} - -static const XML_Char *poolCopyString(STRING_POOL *pool, const XML_Char *s) -{ - do { - if (!poolAppendChar(pool, *s)) - return 0; - } while (*s++); - s = pool->start; - poolFinish(pool); - return s; -} - -static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) -{ - if (!pool->ptr && !poolGrow(pool)) - return 0; - for (; n > 0; --n, s++) { - if (!poolAppendChar(pool, *s)) - return 0; - - } - s = pool->start; - poolFinish(pool); - return s; -} - -static -const XML_Char *poolAppendString(STRING_POOL *pool, const XML_Char *s) -{ - while (*s) { - if (!poolAppendChar(pool, *s)) - return 0; - s++; - } - return pool->start; -} /* End poolAppendString */ - -static -XML_Char *poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!poolAppend(pool, enc, ptr, end)) - return 0; - if (pool->ptr == pool->end && !poolGrow(pool)) - return 0; - *(pool->ptr)++ = 0; - return pool->start; -} - -static -int poolGrow(STRING_POOL *pool) -{ - if (pool->freeBlocks) { - if (pool->start == 0) { - pool->blocks = pool->freeBlocks; - pool->freeBlocks = pool->freeBlocks->next; - pool->blocks->next = 0; - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - pool->ptr = pool->start; - return 1; - } - if (pool->end - pool->start < pool->freeBlocks->size) { - BLOCK *tem = pool->freeBlocks->next; - pool->freeBlocks->next = pool->blocks; - pool->blocks = pool->freeBlocks; - pool->freeBlocks = tem; - memcpy(pool->blocks->s, pool->start, (pool->end - pool->start) * sizeof(XML_Char)); - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - return 1; - } - } - if (pool->blocks && pool->start == pool->blocks->s) { - int blockSize = (pool->end - pool->start)*2; - pool->blocks = pool->mem->realloc_fcn(pool->blocks, offsetof(BLOCK, s) + blockSize * sizeof(XML_Char)); - if (!pool->blocks) - return 0; - pool->blocks->size = blockSize; - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + blockSize; - } - else { - BLOCK *tem; - int blockSize = pool->end - pool->start; - if (blockSize < INIT_BLOCK_SIZE) - blockSize = INIT_BLOCK_SIZE; - else - blockSize *= 2; - tem = pool->mem->malloc_fcn(offsetof(BLOCK, s) + blockSize * sizeof(XML_Char)); - if (!tem) - return 0; - tem->size = blockSize; - tem->next = pool->blocks; - pool->blocks = tem; - if (pool->ptr != pool->start) - memcpy(tem->s, pool->start, (pool->ptr - pool->start) * sizeof(XML_Char)); - pool->ptr = tem->s + (pool->ptr - pool->start); - pool->start = tem->s; - pool->end = tem->s + blockSize; - } - return 1; -} - -static int -nextScaffoldPart(XML_Parser parser) -{ - CONTENT_SCAFFOLD * me; - int next; - - if (! dtd.scaffIndex) { - dtd.scaffIndex = MALLOC(groupSize * sizeof(int)); - if (! dtd.scaffIndex) - return -1; - dtd.scaffIndex[0] = 0; - } - - if (dtd.scaffCount >= dtd.scaffSize) { - if (dtd.scaffold) { - dtd.scaffSize *= 2; - dtd.scaffold = (CONTENT_SCAFFOLD *) REALLOC(dtd.scaffold, - dtd.scaffSize * sizeof(CONTENT_SCAFFOLD)); - } - else { - dtd.scaffSize = 32; - dtd.scaffold = (CONTENT_SCAFFOLD *) MALLOC(dtd.scaffSize * sizeof(CONTENT_SCAFFOLD)); - } - if (! dtd.scaffold) - return -1; - } - next = dtd.scaffCount++; - me = &dtd.scaffold[next]; - if (dtd.scaffLevel) { - CONTENT_SCAFFOLD *parent = &dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]]; - if (parent->lastchild) { - dtd.scaffold[parent->lastchild].nextsib = next; - } - if (! parent->childcnt) - parent->firstchild = next; - parent->lastchild = next; - parent->childcnt++; - } - me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; - return next; -} /* End nextScaffoldPart */ - -static void -build_node (XML_Parser parser, - int src_node, - XML_Content *dest, - XML_Content **contpos, - char **strpos) -{ - dest->type = dtd.scaffold[src_node].type; - dest->quant = dtd.scaffold[src_node].quant; - if (dest->type == XML_CTYPE_NAME) { - const char *src; - dest->name = *strpos; - src = dtd.scaffold[src_node].name; - for (;;) { - *(*strpos)++ = *src; - if (! *src) - break; - src++; - } - dest->numchildren = 0; - dest->children = 0; - } - else { - unsigned int i; - int cn; - dest->numchildren = dtd.scaffold[src_node].childcnt; - dest->children = *contpos; - *contpos += dest->numchildren; - for (i = 0, cn = dtd.scaffold[src_node].firstchild; - i < dest->numchildren; - i++, cn = dtd.scaffold[cn].nextsib) { - build_node(parser, cn, &(dest->children[i]), contpos, strpos); - } - dest->name = 0; - } -} /* End build_node */ - -static XML_Content * -build_model (XML_Parser parser) -{ - XML_Content *ret; - XML_Content *cpos; - char * str; - int allocsize = dtd.scaffCount * sizeof(XML_Content) + dtd.contentStringLen; - - ret = MALLOC(allocsize); - if (! ret) - return 0; - - str = (char *) (&ret[dtd.scaffCount]); - cpos = &ret[1]; - - build_node(parser, 0, ret, &cpos, &str); - return ret; -} /* End build_model */ - -static ELEMENT_TYPE * -getElementType(XML_Parser parser, - const ENCODING *enc, - const char *ptr, - const char *end) -{ - const XML_Char *name = poolStoreString(&dtd.pool, enc, ptr, end); - ELEMENT_TYPE *ret; - - if (! name) - return 0; - ret = (ELEMENT_TYPE *) lookup(&dtd.elementTypes, name, sizeof(ELEMENT_TYPE)); - if (! ret) - return 0; - if (ret->name != name) - poolDiscard(&dtd.pool); - else { - poolFinish(&dtd.pool); - if (!setElementTypePrefix(parser, ret)) - return 0; - } - return ret; -} /* End getElementType */ diff --git a/Utilities/cmexpat/xmltok.h b/Utilities/cmexpat/xmltok.h deleted file mode 100644 index cdf49b2..0000000 --- a/Utilities/cmexpat/xmltok.h +++ /dev/null @@ -1,299 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#ifndef XmlTok_INCLUDED -#define XmlTok_INCLUDED 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* The following token may be returned by XmlContentTok */ -#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be start of - illegal ]]> sequence */ -/* The following tokens may be returned by both XmlPrologTok and XmlContentTok */ -#define XML_TOK_NONE -4 /* The string to be scanned is empty */ -#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; - might be part of CRLF sequence */ -#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ -#define XML_TOK_PARTIAL -1 /* only part of a token */ -#define XML_TOK_INVALID 0 - -/* The following tokens are returned by XmlContentTok; some are also - returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok */ - -#define XML_TOK_START_TAG_WITH_ATTS 1 -#define XML_TOK_START_TAG_NO_ATTS 2 -#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag <e/> */ -#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 -#define XML_TOK_END_TAG 5 -#define XML_TOK_DATA_CHARS 6 -#define XML_TOK_DATA_NEWLINE 7 -#define XML_TOK_CDATA_SECT_OPEN 8 -#define XML_TOK_ENTITY_REF 9 -#define XML_TOK_CHAR_REF 10 /* numeric character reference */ - -/* The following tokens may be returned by both XmlPrologTok and XmlContentTok */ -#define XML_TOK_PI 11 /* processing instruction */ -#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ -#define XML_TOK_COMMENT 13 -#define XML_TOK_BOM 14 /* Byte order mark */ - -/* The following tokens are returned only by XmlPrologTok */ -#define XML_TOK_PROLOG_S 15 -#define XML_TOK_DECL_OPEN 16 /* <!foo */ -#define XML_TOK_DECL_CLOSE 17 /* > */ -#define XML_TOK_NAME 18 -#define XML_TOK_NMTOKEN 19 -#define XML_TOK_POUND_NAME 20 /* #name */ -#define XML_TOK_OR 21 /* | */ -#define XML_TOK_PERCENT 22 -#define XML_TOK_OPEN_PAREN 23 -#define XML_TOK_CLOSE_PAREN 24 -#define XML_TOK_OPEN_BRACKET 25 -#define XML_TOK_CLOSE_BRACKET 26 -#define XML_TOK_LITERAL 27 -#define XML_TOK_PARAM_ENTITY_REF 28 -#define XML_TOK_INSTANCE_START 29 - -/* The following occur only in element type declarations */ -#define XML_TOK_NAME_QUESTION 30 /* name? */ -#define XML_TOK_NAME_ASTERISK 31 /* name* */ -#define XML_TOK_NAME_PLUS 32 /* name+ */ -#define XML_TOK_COND_SECT_OPEN 33 /* <![ */ -#define XML_TOK_COND_SECT_CLOSE 34 /* ]]> */ -#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ -#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ -#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ -#define XML_TOK_COMMA 38 - -/* The following token is returned only by XmlAttributeValueTok */ -#define XML_TOK_ATTRIBUTE_VALUE_S 39 - -/* The following token is returned only by XmlCdataSectionTok */ -#define XML_TOK_CDATA_SECT_CLOSE 40 - -/* With namespace processing this is returned by XmlPrologTok - for a name with a colon. */ -#define XML_TOK_PREFIXED_NAME 41 - -#ifdef XML_DTD -#define XML_TOK_IGNORE_SECT 42 -#endif /* XML_DTD */ - -#ifdef XML_DTD -#define XML_N_STATES 4 -#else /* not XML_DTD */ -#define XML_N_STATES 3 -#endif /* not XML_DTD */ - -#define XML_PROLOG_STATE 0 -#define XML_CONTENT_STATE 1 -#define XML_CDATA_SECTION_STATE 2 -#ifdef XML_DTD -#define XML_IGNORE_SECTION_STATE 3 -#endif /* XML_DTD */ - -#define XML_N_LITERAL_TYPES 2 -#define XML_ATTRIBUTE_VALUE_LITERAL 0 -#define XML_ENTITY_VALUE_LITERAL 1 - -/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ -#define XML_UTF8_ENCODE_MAX 4 -/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ -#define XML_UTF16_ENCODE_MAX 2 - -typedef struct position { - /* first line and first column are 0 not 1 */ - unsigned long lineNumber; - unsigned long columnNumber; -} POSITION; - -typedef struct { - const char *name; - const char *valuePtr; - const char *valueEnd; - char normalized; -} ATTRIBUTE; - -struct encoding; -typedef struct encoding ENCODING; - -struct encoding { - int (*scanners[XML_N_STATES])(const ENCODING *, - const char *, - const char *, - const char **); - int (*literalScanners[XML_N_LITERAL_TYPES])(const ENCODING *, - const char *, - const char *, - const char **); - int (*sameName)(const ENCODING *, - const char *, const char *); - int (*nameMatchesAscii)(const ENCODING *, - const char *, const char *, const char *); - int (*nameLength)(const ENCODING *, const char *); - const char *(*skipS)(const ENCODING *, const char *); - int (*getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts); - int (*charRefNumber)(const ENCODING *enc, const char *ptr); - int (*predefinedEntityName)(const ENCODING *, const char *, const char *); - void (*updatePosition)(const ENCODING *, - const char *ptr, - const char *end, - POSITION *); - int (*isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr); - void (*utf8Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - char **toP, - const char *toLim); - void (*utf16Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - unsigned short **toP, - const unsigned short *toLim); - int minBytesPerChar; - char isUtf8; - char isUtf16; -}; - -/* -Scan the string starting at ptr until the end of the next complete token, -but do not scan past eptr. Return an integer giving the type of token. - -Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. - -Return XML_TOK_PARTIAL when the string does not contain a complete token; -nextTokPtr will not be set. - -Return XML_TOK_INVALID when the string does not start a valid token; nextTokPtr -will be set to point to the character which made the token invalid. - -Otherwise the string starts with a valid token; nextTokPtr will be set to point -to the character following the end of that token. - -Each data character counts as a single token, but adjacent data characters -may be returned together. Similarly for characters in the prolog outside -literals, comments and processing instructions. -*/ - - -#define XmlTok(enc, state, ptr, end, nextTokPtr) \ - (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) - -#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) - -#define XmlContentTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) - -#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) - -#ifdef XML_DTD - -#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) - -#endif /* XML_DTD */ - -/* This is used for performing a 2nd-level tokenization on -the content of a literal that has already been returned by XmlTok. */ - -#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ - (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) - -#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) - -#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ - (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) - -#define XmlNameLength(enc, ptr) \ - (((enc)->nameLength)(enc, ptr)) - -#define XmlSkipS(enc, ptr) \ - (((enc)->skipS)(enc, ptr)) - -#define XmlGetAttributes(enc, ptr, attsMax, atts) \ - (((enc)->getAtts)(enc, ptr, attsMax, atts)) - -#define XmlCharRefNumber(enc, ptr) \ - (((enc)->charRefNumber)(enc, ptr)) - -#define XmlPredefinedEntityName(enc, ptr, end) \ - (((enc)->predefinedEntityName)(enc, ptr, end)) - -#define XmlUpdatePosition(enc, ptr, end, pos) \ - (((enc)->updatePosition)(enc, ptr, end, pos)) - -#define XmlIsPublicId(enc, ptr, end, badPtr) \ - (((enc)->isPublicId)(enc, ptr, end, badPtr)) - -#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) - -#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) - -typedef struct { - ENCODING initEnc; - const ENCODING **encPtr; -} INIT_ENCODING; - -int XmlParseXmlDecl(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); - -int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncoding(void); -const ENCODING *XmlGetUtf16InternalEncoding(void); -int XmlUtf8Encode(int charNumber, char *buf); -int XmlUtf16Encode(int charNumber, unsigned short *buf); - -int XmlSizeOfUnknownEncoding(void); -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - int (*conv)(void *userData, const char *p), - void *userData); - -int XmlParseXmlDeclNS(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); -int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncodingNS(void); -const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - int (*conv)(void *userData, const char *p), - void *userData); -#ifdef __cplusplus -} -#endif - -#endif /* not XmlTok_INCLUDED */ diff --git a/Utilities/cmexpat/xmltok_ns.c b/Utilities/cmexpat/xmltok_ns.c deleted file mode 100644 index fa78adf..0000000 --- a/Utilities/cmexpat/xmltok_ns.c +++ /dev/null @@ -1,98 +0,0 @@ -const ENCODING *NS(XmlGetUtf8InternalEncoding)(void) -{ - return &ns(internal_utf8_encoding).enc; -} - -const ENCODING *NS(XmlGetUtf16InternalEncoding)(void) -{ -#if XML_BYTE_ORDER == 12 - return &ns(internal_little2_encoding).enc; -#elif XML_BYTE_ORDER == 21 - return &ns(internal_big2_encoding).enc; -#else - const short n = 1; - return *(const char *)&n ? &ns(internal_little2_encoding).enc : &ns(internal_big2_encoding).enc; -#endif -} - -static -const ENCODING *NS(encodings)[] = { - &ns(latin1_encoding).enc, - &ns(ascii_encoding).enc, - &ns(utf8_encoding).enc, - &ns(big2_encoding).enc, - &ns(big2_encoding).enc, - &ns(little2_encoding).enc, - &ns(utf8_encoding).enc /* NO_ENC */ -}; - -static -int NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, ptr, end, nextTokPtr); -} - -static -int NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, ptr, end, nextTokPtr); -} - -int NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, const char *name) -{ - int i = getEncodingIndex(name); - if (i == UNKNOWN_ENC) - return 0; - SET_INIT_ENC_INDEX(p, i); - p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); - p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); - p->initEnc.updatePosition = initUpdatePosition; - p->encPtr = encPtr; - *encPtr = &(p->initEnc); - return 1; -} - -static -const ENCODING *NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) -{ -#define ENCODING_MAX 128 - char buf[ENCODING_MAX]; - char *p = buf; - int i; - XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); - if (ptr != end) - return 0; - *p = 0; - if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) - return enc; - i = getEncodingIndex(buf); - if (i == UNKNOWN_ENC) - return 0; - return NS(encodings)[i]; -} - -int NS(XmlParseXmlDecl)(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - return doParseXmlDecl(NS(findEncoding), - isGeneralTextEntity, - enc, - ptr, - end, - badPtr, - versionPtr, - versionEndPtr, - encodingName, - encoding, - standalone); -} diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index 5b150b3..453a737 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -86,12 +86,10 @@ OPTION(ENABLE_ACL "Enable ACL support" ON) OPTION(ENABLE_ICONV "Enable iconv support" ON) IF(WIN32) - IF(MSVC60) - SET(WINVER 0x0400) - ELSE() - SET(WINVER 0x0500) - ENDIF() - SET(_WIN32_WINNT ${WINVER}) + #ELSEIF(WINDOWS_VERSION STREQUAL "WINXP") + SET(NTDDI_VERSION 0x05010000) + SET(_WIN32_WINNT 0x0501) + SET(WINVER 0x0501) ENDIF(WIN32) set(HAVE_PTHREAD_H 0) # no threads in CMake @@ -487,12 +485,17 @@ IF(ENABLE_NETTLE) FIND_PACKAGE(Nettle) IF(NETTLE_FOUND) SET(HAVE_LIBNETTLE 1) - SET(HAVE_NETTLE_MD5_H 1) - SET(HAVE_NETTLE_RIPEMD160_H 1) - SET(HAVE_NETTLE_SHA_H 1) - INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR}) LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES}) + INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR}) + + LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR}) + LA_CHECK_INCLUDE_FILE("nettle/aes.h" HAVE_NETTLE_AES_H) + LA_CHECK_INCLUDE_FILE("nettle/hmac.h" HAVE_NETTLE_HMAC_H) + LA_CHECK_INCLUDE_FILE("nettle/md5.h" HAVE_NETTLE_MD5_H) LA_CHECK_INCLUDE_FILE("nettle/pbkdf2.h" HAVE_NETTLE_PBKDF2_H) + LA_CHECK_INCLUDE_FILE("nettle/ripemd160.h" HAVE_NETTLE_RIPEMD160_H) + LA_CHECK_INCLUDE_FILE("nettle/sha.h" HAVE_NETTLE_SHA_H) + ENDIF(NETTLE_FOUND) MARK_AS_ADVANCED(CLEAR NETTLE_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR NETTLE_LIBRARIES) @@ -723,6 +726,9 @@ MACRO(CHECK_ICONV LIB TRY_ICONV_CONST) # SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror") ENDIF () + IF (CMAKE_C_COMPILER_ID STREQUAL "XL") + SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -qhalt=w -qflag=w:w") + ENDIF () IF (MSVC) # NOTE: /WX option is the same as gcc's -Werror option. SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} /WX") @@ -1040,10 +1046,15 @@ ENDIF(HAVE_INTTYPES_H) CHECK_SYMBOL_EXISTS(EFTYPE "errno.h" HAVE_EFTYPE) CHECK_SYMBOL_EXISTS(EILSEQ "errno.h" HAVE_EILSEQ) CHECK_SYMBOL_EXISTS(D_MD_ORDER "langinfo.h" HAVE_D_MD_ORDER) +CHECK_SYMBOL_EXISTS(INT32_MAX "${headers}" HAVE_DECL_INT32_MAX) +CHECK_SYMBOL_EXISTS(INT32_MIN "${headers}" HAVE_DECL_INT32_MIN) CHECK_SYMBOL_EXISTS(INT64_MAX "${headers}" HAVE_DECL_INT64_MAX) CHECK_SYMBOL_EXISTS(INT64_MIN "${headers}" HAVE_DECL_INT64_MIN) +CHECK_SYMBOL_EXISTS(INTMAX_MAX "${headers}" HAVE_DECL_INTMAX_MAX) +CHECK_SYMBOL_EXISTS(INTMAX_MIN "${headers}" HAVE_DECL_INTMAX_MIN) CHECK_SYMBOL_EXISTS(UINT32_MAX "${headers}" HAVE_DECL_UINT32_MAX) CHECK_SYMBOL_EXISTS(UINT64_MAX "${headers}" HAVE_DECL_UINT64_MAX) +CHECK_SYMBOL_EXISTS(UINTMAX_MAX "${headers}" HAVE_DECL_UINTMAX_MAX) CHECK_SYMBOL_EXISTS(SIZE_MAX "${headers}" HAVE_DECL_SIZE_MAX) CHECK_SYMBOL_EXISTS(SSIZE_MAX "limits.h" HAVE_DECL_SSIZE_MAX) diff --git a/Utilities/cmlibarchive/README-CMake.txt b/Utilities/cmlibarchive/README-CMake.txt deleted file mode 100644 index 0a3e34a..0000000 --- a/Utilities/cmlibarchive/README-CMake.txt +++ /dev/null @@ -1,66 +0,0 @@ -The Utilities/cmlibarchive directory contains a reduced distribution -of the libarchive source tree with only the library source code and -CMake build system. It is not a submodule; the actual content is part -of our source tree and changes can be made and committed directly. - -We update from upstream using Git's "subtree" merge strategy. A -special branch contains commits of upstream libarchive snapshots and -nothing else. No Git ref points explicitly to the head of this -branch, but it is merged into our history. - -Update libarchive from upstream as follows. Create a local branch to -explicitly reference the upstream snapshot branch head: - - git branch libarchive-upstream 1a8c7bc2 - -Use a temporary directory to checkout the branch: - - mkdir libarchive-tmp - cd libarchive-tmp - git init - git pull .. libarchive-upstream - rm -rf * - -Now place the (reduced) libarchive content in this directory. See -instructions shown by - - git log 1a8c7bc2 - -for help extracting the content from the upstream svn repo. Then run -the following commands to commit the new version. Substitute the -appropriate date and version number: - - git add --all - - GIT_AUTHOR_NAME='LibArchive Upstream' \ - GIT_AUTHOR_EMAIL='libarchive-discuss@googlegroups.com' \ - GIT_AUTHOR_DATE='Wed Oct 21 01:47:34 2015 -0700' \ - git commit -m 'libarchive 3.1.2-601-g3bfe5f1 (reduced)' && - git commit --amend - -Edit the commit message to describe the procedure used to obtain the -content. Then push the changes back up to the main local repository: - - git push .. HEAD:libarchive-upstream - cd .. - rm -rf libarchive-tmp - -Create a topic in the main repository on which to perform the update: - - git checkout -b update-libarchive master - -Merge the libarchive-upstream branch as a subtree: - - git merge -s recursive -X subtree=Utilities/cmlibarchive \ - libarchive-upstream - -If there are conflicts, resolve them and commit. Build and test the -tree. Commit any additional changes needed to succeed. - -Finally, run - - git rev-parse --short=8 libarchive-upstream - -to get the commit from which the libarchive-upstream branch must be started -on the next update. Edit the "git branch libarchive-upstream" line above to -record it, and commit this file. diff --git a/Utilities/cmlibarchive/build/cmake/config.h.in b/Utilities/cmlibarchive/build/cmake/config.h.in index 1abeaaa..9843875 100644 --- a/Utilities/cmlibarchive/build/cmake/config.h.in +++ b/Utilities/cmlibarchive/build/cmake/config.h.in @@ -173,8 +173,6 @@ typedef unsigned char uint8_t; /* Define intmax_t and uintmax_t if they are not already defined. */ #if !defined(HAVE_INTMAX_T) typedef int64_t intmax_t; -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX #endif #if !defined(HAVE_UINTMAX_T) @@ -367,6 +365,14 @@ typedef uint64_t uintmax_t; /* Define to 1 if you have the `cygwin_conv_path' function. */ #cmakedefine HAVE_CYGWIN_CONV_PATH 1 +/* Define to 1 if you have the declaration of `INT32_MAX', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_INT32_MAX 1 + +/* Define to 1 if you have the declaration of `INT32_MIN', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_INT32_MIN 1 + /* Define to 1 if you have the declaration of `INT64_MAX', and to 0 if you don't. */ #cmakedefine HAVE_DECL_INT64_MAX 1 @@ -375,6 +381,14 @@ typedef uint64_t uintmax_t; don't. */ #cmakedefine HAVE_DECL_INT64_MIN 1 +/* Define to 1 if you have the declaration of `INTMAX_MAX', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_INTMAX_MAX 1 + +/* Define to 1 if you have the declaration of `INTMAX_MIN', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_INTMAX_MIN 1 + /* Define to 1 if you have the declaration of `SIZE_MAX', and to 0 if you don't. */ #cmakedefine HAVE_DECL_SIZE_MAX 1 @@ -395,6 +409,10 @@ typedef uint64_t uintmax_t; don't. */ #cmakedefine HAVE_DECL_UINT64_MAX 1 +/* Define to 1 if you have the declaration of `UINTMAX_MAX', and to 0 if you + don't. */ +#cmakedefine HAVE_DECL_UINTMAX_MAX 1 + /* Define to 1 if you have the <direct.h> header file. */ #cmakedefine HAVE_DIRECT_H 1 @@ -739,6 +757,12 @@ typedef uint64_t uintmax_t; /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ #cmakedefine HAVE_NDIR_H 1 +/* Define to 1 if you have the <nettle/aes.h> header file. */ +#cmakedefine HAVE_NETTLE_AES_H 1 + +/* Define to 1 if you have the <nettle/hmac.h> header file. */ +#cmakedefine HAVE_NETTLE_HMAC_H 1 + /* Define to 1 if you have the <nettle/md5.h> header file. */ #cmakedefine HAVE_NETTLE_MD5_H 1 @@ -1153,7 +1177,11 @@ typedef uint64_t uintmax_t; /* Define for large files, on AIX-style hosts. */ #cmakedefine _LARGE_FILES ${_LARGE_FILES} -/* Define for Windows to use Windows 2000+ APIs. */ +/* Define to control Windows SDK version */ +#ifndef NTDDI_VERSION +#cmakedefine NTDDI_VERSION ${NTDDI_VERSION} +#endif // NTDDI_VERSION + #ifndef _WIN32_WINNT #cmakedefine _WIN32_WINNT ${_WIN32_WINNT} #endif // _WIN32_WINNT diff --git a/Utilities/cmlibarchive/build/version b/Utilities/cmlibarchive/build/version index 937b126..595378f 100644 --- a/Utilities/cmlibarchive/build/version +++ b/Utilities/cmlibarchive/build/version @@ -1 +1 @@ -3001002 +3002000 diff --git a/Utilities/cmlibarchive/libarchive/CMakeLists.txt b/Utilities/cmlibarchive/libarchive/CMakeLists.txt index 891c728..4eeb5e3 100644 --- a/Utilities/cmlibarchive/libarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/libarchive/CMakeLists.txt @@ -34,6 +34,7 @@ SET(libarchive_SOURCES archive_entry_strmode.c archive_entry_xattr.c archive_getdate.c + archive_getdate.h archive_hmac.c archive_hmac_private.h archive_match.c diff --git a/Utilities/cmlibarchive/libarchive/archive.h b/Utilities/cmlibarchive/libarchive/archive.h index a8d4c6c..a8aa704 100644 --- a/Utilities/cmlibarchive/libarchive/archive.h +++ b/Utilities/cmlibarchive/libarchive/archive.h @@ -36,11 +36,12 @@ * assert that ARCHIVE_VERSION_NUMBER >= 2012108. */ /* Note: Compiler will complain if this does not match archive_entry.h! */ -#define ARCHIVE_VERSION_NUMBER 3001002 +#define ARCHIVE_VERSION_NUMBER 3002000 #include <sys/stat.h> #include <stddef.h> /* for wchar_t */ #include <stdio.h> /* For FILE * */ +#include <time.h> /* For time_t */ /* * Note: archive.h is for use outside of libarchive; the configuration @@ -95,6 +96,11 @@ typedef ssize_t la_ssize_t; # endif #endif +/* Large file support for Android */ +#ifdef __ANDROID__ +#include "android_lf.h" +#endif + /* * On Windows, define LIBARCHIVE_STATIC if you're building or using a * .lib. The default here assumes you're building a DLL. Only @@ -146,7 +152,7 @@ __LA_DECL int archive_version_number(void); /* * Textual name/version of the library, useful for version displays. */ -#define ARCHIVE_VERSION_ONLY_STRING "3.1.2" +#define ARCHIVE_VERSION_ONLY_STRING "3.2.0" #define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING __LA_DECL const char * archive_version_string(void); @@ -159,6 +165,16 @@ __LA_DECL const char * archive_version_string(void); */ __LA_DECL const char * archive_version_details(void); +/* + * Returns NULL if libarchive was compiled without the associated library. + * Otherwise, returns the version number that libarchive was compiled + * against. + */ +__LA_DECL const char * archive_zlib_version(void); +__LA_DECL const char * archive_liblzma_version(void); +__LA_DECL const char * archive_bzlib_version(void); +__LA_DECL const char * archive_liblz4_version(void); + /* Declare our basic types. */ struct archive; struct archive_entry; diff --git a/Utilities/cmlibarchive/libarchive/archive_cryptor.c b/Utilities/cmlibarchive/libarchive/archive_cryptor.c index efd350d..0be30c6 100644 --- a/Utilities/cmlibarchive/libarchive/archive_cryptor.c +++ b/Utilities/cmlibarchive/libarchive/archive_cryptor.c @@ -31,6 +31,19 @@ #include "archive.h" #include "archive_cryptor_private.h" +/* + * On systems that do not support any recognized crypto libraries, + * this file will normally define no usable symbols. + * + * But some compilers and linkers choke on empty object files, so + * define a public symbol that will always exist. This could + * be removed someday if this file gains another always-present + * symbol definition. + */ +int __libarchive_cryptor_build_hack(void) { + return 0; +} + #ifdef ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto static int @@ -256,7 +269,7 @@ aes_ctr_release(archive_crypto_ctx *ctx) return 0; } -#elif defined(HAVE_LIBNETTLE) +#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_AES_H) static int aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len) diff --git a/Utilities/cmlibarchive/libarchive/archive_cryptor_private.h b/Utilities/cmlibarchive/libarchive/archive_cryptor_private.h index 9a96aee..37eaad3 100644 --- a/Utilities/cmlibarchive/libarchive/archive_cryptor_private.h +++ b/Utilities/cmlibarchive/libarchive/archive_cryptor_private.h @@ -30,6 +30,17 @@ #ifndef ARCHIVE_CRYPTOR_PRIVATE_H_INCLUDED #define ARCHIVE_CRYPTOR_PRIVATE_H_INCLUDED +/* + * On systems that do not support any recognized crypto libraries, + * the archive_cryptor.c file will normally define no usable symbols. + * + * But some compilers and linkers choke on empty object files, so + * define a public symbol that will always exist. This could + * be removed someday if this file gains another always-present + * symbol definition. + */ +int __libarchive_cryptor_build_hack(void); + #ifdef __APPLE__ # include <AvailabilityMacros.h> # if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080 @@ -72,7 +83,7 @@ typedef struct { unsigned encr_pos; } archive_crypto_ctx; -#elif defined(HAVE_LIBNETTLE) +#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_AES_H) #if defined(HAVE_NETTLE_PBKDF2_H) #include <nettle/pbkdf2.h> #endif diff --git a/Utilities/cmlibarchive/libarchive/archive_entry.h b/Utilities/cmlibarchive/libarchive/archive_entry.h index 68d8ab9..2bc2928 100644 --- a/Utilities/cmlibarchive/libarchive/archive_entry.h +++ b/Utilities/cmlibarchive/libarchive/archive_entry.h @@ -29,7 +29,7 @@ #define ARCHIVE_ENTRY_H_INCLUDED /* Note: Compiler will complain if this does not match archive.h! */ -#define ARCHIVE_VERSION_NUMBER 3001002 +#define ARCHIVE_VERSION_NUMBER 3002000 /* * Note: archive_entry.h is for use outside of libarchive; the @@ -75,6 +75,11 @@ typedef int64_t la_int64_t; # define __LA_MODE_T mode_t #endif +/* Large file support for Android */ +#ifdef __ANDROID__ +#include "android_lf.h" +#endif + /* * On Windows, define LIBARCHIVE_STATIC if you're building or using a * .lib. The default here assumes you're building a DLL. Only diff --git a/Utilities/cmlibarchive/libarchive/archive_entry_copy_stat.c b/Utilities/cmlibarchive/libarchive/archive_entry_copy_stat.c index 37d4d6e..ac83868 100644 --- a/Utilities/cmlibarchive/libarchive/archive_entry_copy_stat.c +++ b/Utilities/cmlibarchive/libarchive/archive_entry_copy_stat.c @@ -44,6 +44,10 @@ archive_entry_copy_stat(struct archive_entry *entry, const struct stat *st) archive_entry_set_atime(entry, st->st_atime, st->st_atim.tv_nsec); archive_entry_set_ctime(entry, st->st_ctime, st->st_ctim.tv_nsec); archive_entry_set_mtime(entry, st->st_mtime, st->st_mtim.tv_nsec); +#elif HAVE_STRUCT_STAT_ST_MTIME_NSEC + archive_entry_set_atime(entry, st->st_atime, st->st_atime_nsec); + archive_entry_set_ctime(entry, st->st_ctime, st->st_ctime_nsec); + archive_entry_set_mtime(entry, st->st_mtime, st->st_mtime_nsec); #elif HAVE_STRUCT_STAT_ST_MTIME_N archive_entry_set_atime(entry, st->st_atime, st->st_atime_n); archive_entry_set_ctime(entry, st->st_ctime, st->st_ctime_n); diff --git a/Utilities/cmlibarchive/libarchive/archive_getdate.c b/Utilities/cmlibarchive/libarchive/archive_getdate.c index f665e2d..beb0cba 100644 --- a/Utilities/cmlibarchive/libarchive/archive_getdate.c +++ b/Utilities/cmlibarchive/libarchive/archive_getdate.c @@ -38,8 +38,8 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include <time.h> -/* This file defines a single public function. */ -time_t __archive_get_date(time_t now, const char *); +#define __LIBARCHIVE_BUILD 1 +#include "archive_getdate.h" /* Basic time units. */ #define EPOCH 1970 diff --git a/Utilities/cmlibarchive/libarchive/archive_getdate.h b/Utilities/cmlibarchive/libarchive/archive_getdate.h new file mode 100644 index 0000000..666ff5f --- /dev/null +++ b/Utilities/cmlibarchive/libarchive/archive_getdate.h @@ -0,0 +1,39 @@ +/*- + * Copyright (c) 2003-2015 Tim Kientzle + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef __LIBARCHIVE_BUILD +#error This header is only to be used internally to libarchive. +#endif + +#ifndef ARCHIVE_GETDATE_H_INCLUDED +#define ARCHIVE_GETDATE_H_INCLUDED + +#include <time.h> + +time_t __archive_get_date(time_t now, const char *); + +#endif diff --git a/Utilities/cmlibarchive/libarchive/archive_hmac.c b/Utilities/cmlibarchive/libarchive/archive_hmac.c index 36e3e1c..7857c0f 100644 --- a/Utilities/cmlibarchive/libarchive/archive_hmac.c +++ b/Utilities/cmlibarchive/libarchive/archive_hmac.c @@ -31,6 +31,20 @@ #include "archive.h" #include "archive_hmac_private.h" +/* + * On systems that do not support any recognized crypto libraries, + * the archive_hmac.c file is expected to define no usable symbols. + * + * But some compilers and linkers choke on empty object files, so + * define a public symbol that will always exist. This could + * be removed someday if this file gains another always-present + * symbol definition. + */ +int __libarchive_hmac_build_hack(void) { + return 0; +} + + #ifdef ARCHIVE_HMAC_USE_Apple_CommonCrypto static int @@ -129,7 +143,7 @@ __hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx) } } -#elif defined(HAVE_LIBNETTLE) +#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_HMAC_H) static int __hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len) diff --git a/Utilities/cmlibarchive/libarchive/archive_hmac_private.h b/Utilities/cmlibarchive/libarchive/archive_hmac_private.h index a9fb8ec..64de743 100644 --- a/Utilities/cmlibarchive/libarchive/archive_hmac_private.h +++ b/Utilities/cmlibarchive/libarchive/archive_hmac_private.h @@ -30,6 +30,17 @@ #ifndef ARCHIVE_HMAC_PRIVATE_H_INCLUDED #define ARCHIVE_HMAC_PRIVATE_H_INCLUDED +/* + * On systems that do not support any recognized crypto libraries, + * the archive_hmac.c file is expected to define no usable symbols. + * + * But some compilers and linkers choke on empty object files, so + * define a public symbol that will always exist. This could + * be removed someday if this file gains another always-present + * symbol definition. + */ +int __libarchive_hmac_build_hack(void); + #ifdef __APPLE__ # include <AvailabilityMacros.h> # if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 @@ -53,7 +64,7 @@ typedef struct { } archive_hmac_sha1_ctx; -#elif defined(HAVE_LIBNETTLE) +#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_HMAC_H) #include <nettle/hmac.h> typedef struct hmac_sha1_ctx archive_hmac_sha1_ctx; diff --git a/Utilities/cmlibarchive/libarchive/archive_match.c b/Utilities/cmlibarchive/libarchive/archive_match.c index 74aaacb..4c41bad 100644 --- a/Utilities/cmlibarchive/libarchive/archive_match.c +++ b/Utilities/cmlibarchive/libarchive/archive_match.c @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include "archive.h" #include "archive_private.h" #include "archive_entry.h" +#include "archive_getdate.h" #include "archive_pathmatch.h" #include "archive_rb.h" #include "archive_string.h" @@ -184,7 +185,6 @@ static int time_excluded(struct archive_match *, struct archive_entry *); static int validate_time_flag(struct archive *, int, const char *); -time_t __archive_get_date(time_t now, const char *); #define get_date __archive_get_date static const struct archive_rb_tree_ops rb_ops_mbs = { diff --git a/Utilities/cmlibarchive/libarchive/archive_options.c b/Utilities/cmlibarchive/libarchive/archive_options.c index 220ebd4..dbf3e80 100644 --- a/Utilities/cmlibarchive/libarchive/archive_options.c +++ b/Utilities/cmlibarchive/libarchive/archive_options.c @@ -42,9 +42,9 @@ _archive_set_option(struct archive *a, archive_check_magic(a, magic, ARCHIVE_STATE_NEW, fn); - mp = m != NULL && m[0] != '\0' ? m : NULL; - op = o != NULL && o[0] != '\0' ? o : NULL; - vp = v != NULL && v[0] != '\0' ? v : NULL; + mp = (m != NULL && m[0] != '\0') ? m : NULL; + op = (o != NULL && o[0] != '\0') ? o : NULL; + vp = (v != NULL && v[0] != '\0') ? v : NULL; if (op == NULL && vp == NULL) return (ARCHIVE_OK); diff --git a/Utilities/cmlibarchive/libarchive/archive_platform.h b/Utilities/cmlibarchive/libarchive/archive_platform.h index cbe08ec..08a384c 100644 --- a/Utilities/cmlibarchive/libarchive/archive_platform.h +++ b/Utilities/cmlibarchive/libarchive/archive_platform.h @@ -122,6 +122,12 @@ #if !HAVE_DECL_UINT32_MAX #define UINT32_MAX (~(uint32_t)0) #endif +#if !HAVE_DECL_INT32_MAX +#define INT32_MAX ((int32_t)(UINT32_MAX >> 1)) +#endif +#if !HAVE_DECL_INT32_MIN +#define INT32_MIN ((int32_t)(~INT32_MAX)) +#endif #if !HAVE_DECL_UINT64_MAX #define UINT64_MAX (~(uint64_t)0) #endif @@ -131,6 +137,15 @@ #if !HAVE_DECL_INT64_MIN #define INT64_MIN ((int64_t)(~INT64_MAX)) #endif +#if !HAVE_DECL_UINTMAX_MAX +#define UINTMAX_MAX (~(uintmax_t)0) +#endif +#if !HAVE_DECL_INTMAX_MAX +#define INTMAX_MAX ((intmax_t)(UINTMAX_MAX >> 1)) +#endif +#if !HAVE_DECL_INTMAX_MIN +#define INTMAX_MIN ((intmax_t)(~INTMAX_MAX)) +#endif /* * If this platform has <sys/acl.h>, acl_create(), acl_init(), diff --git a/Utilities/cmlibarchive/libarchive/archive_read.c b/Utilities/cmlibarchive/libarchive/archive_read.c index 033ed8b..0bbacc8 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read.c +++ b/Utilities/cmlibarchive/libarchive/archive_read.c @@ -547,16 +547,20 @@ archive_read_open1(struct archive *_a) * it wants to handle this stream. Repeat until we've finished * building the pipeline. */ + +/* We won't build a filter pipeline with more stages than this. */ +#define MAX_NUMBER_FILTERS 25 + static int choose_filters(struct archive_read *a) { - int number_bidders, i, bid, best_bid, n; + int number_bidders, i, bid, best_bid, number_filters; struct archive_read_filter_bidder *bidder, *best_bidder; struct archive_read_filter *filter; ssize_t avail; int r; - for (n = 0; n < 25; ++n) { + for (number_filters = 0; number_filters < MAX_NUMBER_FILTERS; ++number_filters) { number_bidders = sizeof(a->bidders) / sizeof(a->bidders[0]); best_bid = 0; diff --git a/Utilities/cmlibarchive/libarchive/archive_read_disk_entry_from_file.c b/Utilities/cmlibarchive/libarchive/archive_read_disk_entry_from_file.c index 38303aa..74fe353 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_disk_entry_from_file.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_disk_entry_from_file.c @@ -1046,7 +1046,7 @@ setup_sparse(struct archive_read_disk *a, struct fiemap *fm; struct fiemap_extent *fe; int64_t size; - int count, do_fiemap; + int count, do_fiemap, iters; int exit_sts = ARCHIVE_OK; if (archive_entry_filetype(entry) != AE_IFREG @@ -1083,7 +1083,7 @@ setup_sparse(struct archive_read_disk *a, fm->fm_extent_count = count; do_fiemap = 1; size = archive_entry_size(entry); - for (;;) { + for (iters = 0; ; ++iters) { int i, r; r = ioctl(*fd, FS_IOC_FIEMAP, fm); @@ -1093,8 +1093,13 @@ setup_sparse(struct archive_read_disk *a, * version(<2.6.28) cannot perfom FS_IOC_FIEMAP. */ goto exit_setup_sparse; } - if (fm->fm_mapped_extents == 0) + if (fm->fm_mapped_extents == 0) { + if (iters == 0) { + /* Fully sparse file; insert a zero-length "data" entry */ + archive_entry_sparse_add_entry(entry, 0, 0); + } break; + } fe = fm->fm_extents; for (i = 0; i < (int)fm->fm_mapped_extents; i++, fe++) { if (!(fe->fe_flags & FIEMAP_EXTENT_UNWRITTEN)) { @@ -1139,6 +1144,7 @@ setup_sparse(struct archive_read_disk *a, off_t initial_off; /* FreeBSD/Solaris only, so off_t okay here */ off_t off_s, off_e; /* FreeBSD/Solaris only, so off_t okay here */ int exit_sts = ARCHIVE_OK; + int check_fully_sparse = 0; if (archive_entry_filetype(entry) != AE_IFREG || archive_entry_size(entry) <= 0 @@ -1191,8 +1197,14 @@ setup_sparse(struct archive_read_disk *a, while (off_s < size) { off_s = lseek(*fd, off_s, SEEK_DATA); if (off_s == (off_t)-1) { - if (errno == ENXIO) - break;/* no more hole */ + if (errno == ENXIO) { + /* no more hole */ + if (archive_entry_sparse_count(entry) == 0) { + /* Potentially a fully-sparse file. */ + check_fully_sparse = 1; + } + break; + } archive_set_error(&a->archive, errno, "lseek(SEEK_HOLE) failed"); exit_sts = ARCHIVE_FAILED; @@ -1216,6 +1228,14 @@ setup_sparse(struct archive_read_disk *a, off_e - off_s); off_s = off_e; } + + if (check_fully_sparse) { + if (lseek(*fd, 0, SEEK_HOLE) == 0 && + lseek(*fd, 0, SEEK_END) == size) { + /* Fully sparse file; insert a zero-length "data" entry */ + archive_entry_sparse_add_entry(entry, 0, 0); + } + } exit_setup_sparse: lseek(*fd, initial_off, SEEK_SET); return (exit_sts); diff --git a/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c b/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c index f480539..22a1f14 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_disk_posix.c @@ -717,6 +717,7 @@ _archive_read_data_block(struct archive *_a, const void **buff, int r; ssize_t bytes; size_t buffbytes; + int empty_sparse_region = 0; archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, ARCHIVE_STATE_DATA, "archive_read_data_block"); @@ -798,6 +799,9 @@ _archive_read_data_block(struct archive *_a, const void **buff, if ((int64_t)buffbytes > t->current_sparse->length) buffbytes = t->current_sparse->length; + if (t->current_sparse->length == 0) + empty_sparse_region = 1; + /* * Skip hole. * TODO: Should we consider t->current_filesystem->xfer_align? @@ -828,7 +832,11 @@ _archive_read_data_block(struct archive *_a, const void **buff, } } else bytes = 0; - if (bytes == 0) { + /* + * Return an EOF unless we've read a leading empty sparse region, which + * is used to represent fully-sparse files. + */ + if (bytes == 0 && !empty_sparse_region) { /* Get EOF */ t->entry_eof = 1; r = ARCHIVE_EOF; @@ -1576,6 +1584,7 @@ setup_current_filesystem(struct archive_read_disk *a) #if defined(HAVE_STRUCT_STATFS_F_NAMEMAX) t->current_filesystem->name_max = sfs.f_namemax; #else +# if defined(_PC_NAME_MAX) /* Mac OS X does not have f_namemax in struct statfs. */ if (tree_current_is_symblic_link_target(t)) { if (tree_enter_working_dir(t) != 0) { @@ -1585,6 +1594,9 @@ setup_current_filesystem(struct archive_read_disk *a) nm = pathconf(tree_current_access_path(t), _PC_NAME_MAX); } else nm = fpathconf(tree_current_dir_fd(t), _PC_NAME_MAX); +# else + nm = -1; +# endif if (nm == -1) t->current_filesystem->name_max = NAME_MAX; else @@ -1681,7 +1693,9 @@ setup_current_filesystem(struct archive_read_disk *a) { struct tree *t = a->tree; struct statfs sfs; +#if defined(HAVE_STATVFS) struct statvfs svfs; +#endif int r, vr = 0, xr = 0; if (tree_current_is_symblic_link_target(t)) { @@ -1698,7 +1712,9 @@ setup_current_filesystem(struct archive_read_disk *a) "openat failed"); return (ARCHIVE_FAILED); } +#if defined(HAVE_FSTATVFS) vr = fstatvfs(fd, &svfs);/* for f_flag, mount flags */ +#endif r = fstatfs(fd, &sfs); if (r == 0) xr = get_xfer_size(t, fd, NULL); @@ -1708,14 +1724,18 @@ setup_current_filesystem(struct archive_read_disk *a) archive_set_error(&a->archive, errno, "fchdir failed"); return (ARCHIVE_FAILED); } +#if defined(HAVE_STATVFS) vr = statvfs(tree_current_access_path(t), &svfs); +#endif r = statfs(tree_current_access_path(t), &sfs); if (r == 0) xr = get_xfer_size(t, -1, tree_current_access_path(t)); #endif } else { #ifdef HAVE_FSTATFS +#if defined(HAVE_FSTATVFS) vr = fstatvfs(tree_current_dir_fd(t), &svfs); +#endif r = fstatfs(tree_current_dir_fd(t), &sfs); if (r == 0) xr = get_xfer_size(t, tree_current_dir_fd(t), NULL); @@ -1724,7 +1744,9 @@ setup_current_filesystem(struct archive_read_disk *a) archive_set_error(&a->archive, errno, "fchdir failed"); return (ARCHIVE_FAILED); } +#if defined(HAVE_STATVFS) vr = statvfs(".", &svfs); +#endif r = statfs(".", &sfs); if (r == 0) xr = get_xfer_size(t, -1, "."); @@ -1737,10 +1759,17 @@ setup_current_filesystem(struct archive_read_disk *a) return (ARCHIVE_FAILED); } else if (xr == 1) { /* pathconf(_PC_REX_*) operations are not supported. */ +#if defined(HAVE_STATVFS) t->current_filesystem->xfer_align = svfs.f_frsize; t->current_filesystem->max_xfer_size = -1; t->current_filesystem->min_xfer_size = svfs.f_bsize; t->current_filesystem->incr_xfer_size = svfs.f_bsize; +#else + t->current_filesystem->xfer_align = sfs.f_frsize; + t->current_filesystem->max_xfer_size = -1; + t->current_filesystem->min_xfer_size = sfs.f_bsize; + t->current_filesystem->incr_xfer_size = sfs.f_bsize; +#endif } switch (sfs.f_type) { case AFS_SUPER_MAGIC: @@ -1765,7 +1794,11 @@ setup_current_filesystem(struct archive_read_disk *a) } #if defined(ST_NOATIME) +#if defined(HAVE_STATVFS) if (svfs.f_flag & ST_NOATIME) +#else + if (sfs.f_flag & ST_NOATIME) +#endif t->current_filesystem->noatime = 1; else #endif diff --git a/Utilities/cmlibarchive/libarchive/archive_read_filter.3 b/Utilities/cmlibarchive/libarchive/archive_read_filter.3 index 47effac..7f020e3 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_filter.3 +++ b/Utilities/cmlibarchive/libarchive/archive_read_filter.3 @@ -53,8 +53,12 @@ Streaming Archive Library (libarchive, -larchive) .Ft int .Fn archive_read_support_filter_compress "struct archive *" .Ft int +.Fn archive_read_support_filter_grzip "struct archive *" +.Ft int .Fn archive_read_support_filter_gzip "struct archive *" .Ft int +.Fn archive_read_support_filter_lrzip "struct archive *" +.Ft int .Fn archive_read_support_filter_lz4 "struct archive *" .Ft int .Fn archive_read_support_filter_lzma "struct archive *" @@ -86,7 +90,9 @@ Streaming Archive Library (libarchive, -larchive) .It Xo .Fn archive_read_support_filter_bzip2 , .Fn archive_read_support_filter_compress , +.Fn archive_read_support_filter_grzip , .Fn archive_read_support_filter_gzip , +.Fn archive_read_support_filter_lrzip , .Fn archive_read_support_filter_lz4 , .Fn archive_read_support_filter_lzma , .Fn archive_read_support_filter_lzop , diff --git a/Utilities/cmlibarchive/libarchive/archive_read_open_file.c b/Utilities/cmlibarchive/libarchive/archive_read_open_file.c index 3a33c25..bfe933b 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_open_file.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_open_file.c @@ -83,8 +83,9 @@ archive_read_open_FILE(struct archive *a, FILE *f) mine->f = f; /* * If we can't fstat() the file, it may just be that it's not - * a file. (FILE * objects can wrap many kinds of I/O - * streams, some of which don't support fileno()).) + * a file. (On some platforms, FILE * objects can wrap I/O + * streams that don't support fileno()). As a result, fileno() + * should be used cautiously.) */ if (fstat(fileno(mine->f), &st) == 0 && S_ISREG(st.st_mode)) { archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino); @@ -150,7 +151,10 @@ file_skip(struct archive *a, void *client_data, int64_t request) skip = max_skip; } -#if HAVE_FSEEKO +#ifdef __ANDROID__ + /* fileno() isn't safe on all platforms ... see above. */ + if (lseek(fileno(mine->f), skip, SEEK_CUR) < 0) +#elif HAVE_FSEEKO if (fseeko(mine->f, skip, SEEK_CUR) != 0) #elif HAVE__FSEEKI64 if (_fseeki64(mine->f, skip, SEEK_CUR) != 0) diff --git a/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c b/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c index 622c960..5611aa8 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_open_filename.c @@ -178,7 +178,7 @@ archive_read_open_filename_w(struct archive *a, const wchar_t *wfilename, #else /* * POSIX system does not support a wchar_t interface for - * open() system call, so we have to translate a whcar_t + * open() system call, so we have to translate a wchar_t * filename to multi-byte one and use it. */ struct archive_string fn; diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_filter_lz4.c b/Utilities/cmlibarchive/libarchive/archive_read_support_filter_lz4.c index db62cb3..e877917 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_filter_lz4.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_filter_lz4.c @@ -580,10 +580,19 @@ lz4_filter_read_data_block(struct archive_read_filter *self, const void **p) prefix64k); } } +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + uncompressed_size = LZ4_decompress_safe_usingDict( + read_buf + 4, + state->out_block + prefix64k, (int)compressed_size, + state->flags.block_maximum_size, + state->out_block, + prefix64k); +#else uncompressed_size = LZ4_decompress_safe_withPrefix64k( read_buf + 4, state->out_block + prefix64k, (int)compressed_size, state->flags.block_maximum_size); +#endif } /* Check if an error happend in decompression process. */ diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_mtree.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_mtree.c index b5f8e30..81d9652 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_mtree.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_mtree.c @@ -148,9 +148,12 @@ get_time_t_max(void) return (~(time_t)0); } else { /* Time_t is signed. */ - const uintmax_t max_unsigned_time_t = (uintmax_t)(~(time_t)0); - const uintmax_t max_signed_time_t = max_unsigned_time_t >> 1; - return (time_t)max_signed_time_t; + /* Assume it's the same as int64_t or int32_t */ + if (sizeof(time_t) == sizeof(int64_t)) { + return (time_t)INT64_MAX; + } else { + return (time_t)INT32_MAX; + } } #endif } @@ -166,10 +169,11 @@ get_time_t_min(void) return (time_t)0; } else { /* Time_t is signed. */ - const uintmax_t max_unsigned_time_t = (uintmax_t)(~(time_t)0); - const uintmax_t max_signed_time_t = max_unsigned_time_t >> 1; - const intmax_t min_signed_time_t = (intmax_t)~max_signed_time_t; - return (time_t)min_signed_time_t; + if (sizeof(time_t) == sizeof(int64_t)) { + return (time_t)INT64_MIN; + } else { + return (time_t)INT32_MIN; + } } #endif } @@ -852,8 +856,8 @@ process_add_entry(struct archive_read *a, struct mtree *mtree, struct mtree_entry *entry; struct mtree_option *iter; const char *next, *eq, *name, *end; - size_t len; - int r; + size_t name_len, len; + int r, i; if ((entry = malloc(sizeof(*entry))) == NULL) { archive_set_error(&a->archive, errno, "Can't allocate memory"); @@ -873,43 +877,48 @@ process_add_entry(struct archive_read *a, struct mtree *mtree, *last_entry = entry; if (is_form_d) { - /* - * This form places the file name as last parameter. - */ - name = line + line_len -1; + /* Filename is last item on line. */ + /* Adjust line_len to trim trailing whitespace */ while (line_len > 0) { - if (*name != '\r' && *name != '\n' && - *name != '\t' && *name != ' ') + char last_character = line[line_len - 1]; + if (last_character == '\r' + || last_character == '\n' + || last_character == '\t' + || last_character == ' ') { + line_len--; + } else { break; - name--; - line_len--; + } } - len = 0; - while (line_len > 0) { - if (*name == '\r' || *name == '\n' || - *name == '\t' || *name == ' ') { - name++; - break; + /* Name starts after the last whitespace separator */ + name = line; + for (i = 0; i < line_len; i++) { + if (line[i] == '\r' + || line[i] == '\n' + || line[i] == '\t' + || line[i] == ' ') { + name = line + i + 1; } - name--; - line_len--; - len++; } + name_len = line + line_len - name; end = name; } else { - len = strcspn(line, " \t\r\n"); + /* Filename is first item on line */ + name_len = strcspn(line, " \t\r\n"); name = line; - line += len; + line += name_len; end = line + line_len; } + /* name/name_len is the name within the line. */ + /* line..end brackets the entire line except the name */ - if ((entry->name = malloc(len + 1)) == NULL) { + if ((entry->name = malloc(name_len + 1)) == NULL) { archive_set_error(&a->archive, errno, "Can't allocate memory"); return (ARCHIVE_FATAL); } - memcpy(entry->name, name, len); - entry->name[len] = '\0'; + memcpy(entry->name, name, name_len); + entry->name[name_len] = '\0'; parse_escapes(entry->name, entry); for (iter = *global; iter != NULL; iter = iter->next) { @@ -1561,7 +1570,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, int64_t m; int64_t my_time_t_max = get_time_t_max(); int64_t my_time_t_min = get_time_t_min(); - long ns; + long ns = 0; *parsed_kws |= MTREE_HAS_MTIME; m = mtree_atol10(&val); diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_rar.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_rar.c index 35ac7cf..c52c429 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_rar.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_rar.c @@ -828,6 +828,7 @@ archive_read_format_rar_read_header(struct archive_read *a, char head_type; int ret; unsigned flags; + unsigned long crc32_expected; a->archive.archive_format = ARCHIVE_FORMAT_RAR; if (a->archive.archive_format_name == NULL) @@ -940,36 +941,50 @@ archive_read_format_rar_read_header(struct archive_read *a, skip = archive_le16dec(p + 5); if (skip < 7) { archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, - "Invalid header size"); + "Invalid header size too small"); return (ARCHIVE_FATAL); } - if (skip > 7) { - if ((h = __archive_read_ahead(a, skip, NULL)) == NULL) - return (ARCHIVE_FATAL); - p = h; - } if (flags & HD_ADD_SIZE_PRESENT) { if (skip < 7 + 4) { archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, - "Invalid header size"); + "Invalid header size too small"); return (ARCHIVE_FATAL); } - skip += archive_le32dec(p + 7); if ((h = __archive_read_ahead(a, skip, NULL)) == NULL) return (ARCHIVE_FATAL); p = h; + skip += archive_le32dec(p + 7); } - crc32_val = crc32(0, (const unsigned char *)p + 2, (unsigned)skip - 2); - if ((crc32_val & 0xffff) != archive_le16dec(p)) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, - "Header CRC error"); - return (ARCHIVE_FATAL); + /* Skip over the 2-byte CRC at the beginning of the header. */ + crc32_expected = archive_le16dec(p); + __archive_read_consume(a, 2); + skip -= 2; + + /* Skim the entire header and compute the CRC. */ + crc32_val = 0; + while (skip > 0) { + size_t to_read = skip; + ssize_t did_read; + if (to_read > 32 * 1024) { + to_read = 32 * 1024; + } + if ((h = __archive_read_ahead(a, to_read, &did_read)) == NULL) { + return (ARCHIVE_FATAL); + } + p = h; + crc32_val = crc32(crc32_val, (const unsigned char *)p, (unsigned)did_read); + __archive_read_consume(a, did_read); + skip -= did_read; + } + if ((crc32_val & 0xffff) != crc32_expected) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Header CRC error"); + return (ARCHIVE_FATAL); } - __archive_read_consume(a, skip); if (head_type == ENDARC_HEAD) - return (ARCHIVE_EOF); + return (ARCHIVE_EOF); break; case NEWSUB_HEAD: diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c index 57534f3..46a59ea 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_warc.c @@ -418,10 +418,11 @@ deconst(const void *c) } static char* -xmemmem(const char *hay, const size_t hz_, const char *ndl, const size_t nz) +xmemmem(const char *hay, const size_t haysize, + const char *needle, const size_t needlesize) { - const char *const eoh = hay + hz_; - const char *const eon = ndl + nz; + const char *const eoh = hay + haysize; + const char *const eon = needle + needlesize; const char *hp; const char *np; const char *cand; @@ -433,9 +434,9 @@ xmemmem(const char *hay, const size_t hz_, const char *ndl, const size_t nz) * a 0-sized needle is defined to be found anywhere in haystack * then run strchr() to find a candidate in HAYSTACK (i.e. a portion * that happens to begin with *NEEDLE) */ - if (nz == 0UL) { + if (needlesize == 0UL) { return deconst(hay); - } else if ((hay = memchr(hay, *ndl, hz_)) == NULL) { + } else if ((hay = memchr(hay, *needle, haysize)) == NULL) { /* trivial */ return NULL; } @@ -444,11 +445,11 @@ xmemmem(const char *hay, const size_t hz_, const char *ndl, const size_t nz) * guaranteed to be at least one character long. Now computes the sum * of characters values of needle together with the sum of the first * needle_len characters of haystack. */ - for (hp = hay + 1U, np = ndl + 1U, hsum = *hay, nsum = *hay, eqp = 1U; + for (hp = hay + 1U, np = needle + 1U, hsum = *hay, nsum = *hay, eqp = 1U; hp < eoh && np < eon; hsum ^= *hp, nsum ^= *np, eqp &= *hp == *np, hp++, np++); - /* HP now references the (NZ + 1)-th character. */ + /* HP now references the (NEEDLESIZE + 1)-th character. */ if (np < eon) { /* haystack is smaller than needle, :O */ return NULL; @@ -464,10 +465,10 @@ xmemmem(const char *hay, const size_t hz_, const char *ndl, const size_t nz) hsum ^= *hp; /* Since the sum of the characters is already known to be - * equal at that point, it is enough to check just NZ - 1 + * equal at that point, it is enough to check just NEEDLESIZE - 1 * characters for equality, * also CAND is by design < HP, so no need for range checks */ - if (hsum == nsum && memcmp(cand, ndl, nz - 1U) == 0) { + if (hsum == nsum && memcmp(cand, needle, needlesize - 1U) == 0) { return deconst(cand); } } diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_xar.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_xar.c index bbef99f..ec623c6 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_xar.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_xar.c @@ -1939,9 +1939,6 @@ unknowntag_start(struct archive_read *a, struct xar *xar, const char *name) { struct unknown_tag *tag; -#if DEBUG - fprintf(stderr, "unknowntag_start:%s\n", name); -#endif tag = malloc(sizeof(*tag)); if (tag == NULL) { archive_set_error(&a->archive, ENOMEM, "Out of memory"); @@ -1951,6 +1948,9 @@ unknowntag_start(struct archive_read *a, struct xar *xar, const char *name) archive_string_init(&(tag->name)); archive_strcpy(&(tag->name), name); if (xar->unknowntags == NULL) { +#if DEBUG + fprintf(stderr, "UNKNOWNTAG_START:%s\n", name); +#endif xar->xmlsts_unknown = xar->xmlsts; xar->xmlsts = UNKNOWN; } @@ -1963,9 +1963,6 @@ unknowntag_end(struct xar *xar, const char *name) { struct unknown_tag *tag; -#if DEBUG - fprintf(stderr, "unknowntag_end:%s\n", name); -#endif tag = xar->unknowntags; if (tag == NULL || name == NULL) return; @@ -1973,8 +1970,12 @@ unknowntag_end(struct xar *xar, const char *name) xar->unknowntags = tag->next; archive_string_free(&(tag->name)); free(tag); - if (xar->unknowntags == NULL) + if (xar->unknowntags == NULL) { +#if DEBUG + fprintf(stderr, "UNKNOWNTAG_END:%s\n", name); +#endif xar->xmlsts = xar->xmlsts_unknown; + } } } @@ -2168,7 +2169,7 @@ xml_start(struct archive_read *a, const char *name, struct xmlattr_list *list) case FILE_ACL: if (strcmp(name, "appleextended") == 0) xar->xmlsts = FILE_ACL_APPLEEXTENDED; - if (strcmp(name, "default") == 0) + else if (strcmp(name, "default") == 0) xar->xmlsts = FILE_ACL_DEFAULT; else if (strcmp(name, "access") == 0) xar->xmlsts = FILE_ACL_ACCESS; @@ -2690,9 +2691,9 @@ xml_data(void *userData, const char *s, int len) #if DEBUG { char buff[1024]; - if (len > sizeof(buff)-1) - len = sizeof(buff)-1; - memcpy(buff, s, len); + if (len > (int)(sizeof(buff)-1)) + len = (int)(sizeof(buff)-1); + strncpy(buff, s, len); buff[len] = 0; fprintf(stderr, "\tlen=%d:\"%s\"\n", len, buff); } diff --git a/Utilities/cmlibarchive/libarchive/archive_read_support_format_zip.c b/Utilities/cmlibarchive/libarchive/archive_read_support_format_zip.c index 62bf5e3..1399e07 100644 --- a/Utilities/cmlibarchive/libarchive/archive_read_support_format_zip.c +++ b/Utilities/cmlibarchive/libarchive/archive_read_support_format_zip.c @@ -39,7 +39,8 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_zip.c 201102 * * History of this code: The streaming Zip reader was first added to * libarchive in January 2005. Support for seekable input sources was - * added in Nov 2011. + * added in Nov 2011. Zip64 support (including a significant code + * refactoring) was added in 2014. */ #ifdef HAVE_ERRNO_H @@ -419,8 +420,9 @@ process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry) unsigned short datasize = archive_le16dec(p + offset + 2); offset += 4; - if (offset + datasize > extra_length) + if (offset + datasize > extra_length) { break; + } #ifdef DEBUG fprintf(stderr, "Header id 0x%04x, length %d\n", headerid, datasize); @@ -555,7 +557,7 @@ process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry) * if bitmap & 1, 2 byte "version made by" * if bitmap & 2, 2 byte "internal file attributes" * if bitmap & 4, 4 byte "external file attributes" - * if bitmap * 7, 2 byte comment length + n byte comment + * if bitmap & 8, 2 byte comment length + n byte comment */ int bitmap, bitmap_last; @@ -604,6 +606,19 @@ process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry) if (zip_entry->system == 3) { zip_entry->mode = external_attributes >> 16; + } else if (zip_entry->system == 0) { + // Interpret MSDOS directory bit + if (0x10 == (external_attributes & 0x10)) { + zip_entry->mode = AE_IFDIR | 0775; + } else { + zip_entry->mode = AE_IFREG | 0664; + } + if (0x01 == (external_attributes & 0x01)) { + // Read-only bit; strip write permissions + zip_entry->mode &= 0555; + } + } else { + zip_entry->mode = 0; } offset += 4; datasize -= 4; @@ -810,6 +825,16 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, } __archive_read_consume(a, filename_length); + /* Read the extra data. */ + if ((h = __archive_read_ahead(a, extra_length, NULL)) == NULL) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Truncated ZIP file header"); + return (ARCHIVE_FATAL); + } + + process_extra(h, extra_length, zip_entry); + __archive_read_consume(a, extra_length); + /* Work around a bug in Info-Zip: When reading from a pipe, it * stats the pipe instead of synthesizing a file entry. */ if ((zip_entry->mode & AE_IFMT) == AE_IFIFO) { @@ -843,16 +868,31 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, } } - /* Read the extra data. */ - if ((h = __archive_read_ahead(a, extra_length, NULL)) == NULL) { - archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, - "Truncated ZIP file header"); - return (ARCHIVE_FATAL); + /* Make sure directories end in '/' */ + if ((zip_entry->mode & AE_IFMT) == AE_IFDIR) { + wp = archive_entry_pathname_w(entry); + if (wp != NULL) { + len = wcslen(wp); + if (len > 0 && wp[len - 1] != L'/') { + struct archive_wstring s; + archive_string_init(&s); + archive_wstrcat(&s, wp); + archive_wstrappend_wchar(&s, L'/'); + archive_entry_copy_pathname_w(entry, s.s); + } + } else { + cp = archive_entry_pathname(entry); + len = (cp != NULL)?strlen(cp):0; + if (len > 0 && cp[len - 1] != '/') { + struct archive_string s; + archive_string_init(&s); + archive_strcat(&s, cp); + archive_strappend_char(&s, '/'); + archive_entry_set_pathname(entry, s.s); + } + } } - process_extra(h, extra_length, zip_entry); - __archive_read_consume(a, extra_length); - if (zip_entry->flags & LA_FROM_CENTRAL_DIRECTORY) { /* If this came from the central dir, it's size info * is definitive, so ignore the length-at-end flag. */ @@ -2614,9 +2654,21 @@ slurp_central_directory(struct archive_read *a, struct zip *zip) /* If we can't guess the mode, leave it zero here; when we read the local file header we might get more information. */ - zip_entry->mode = 0; if (zip_entry->system == 3) { zip_entry->mode = external_attributes >> 16; + } else if (zip_entry->system == 0) { + // Interpret MSDOS directory bit + if (0x10 == (external_attributes & 0x10)) { + zip_entry->mode = AE_IFDIR | 0775; + } else { + zip_entry->mode = AE_IFREG | 0664; + } + if (0x01 == (external_attributes & 0x01)) { + // Read-only bit; strip write permissions + zip_entry->mode &= 0555; + } + } else { + zip_entry->mode = 0; } /* We're done with the regular data; get the filename and @@ -2726,6 +2778,11 @@ zip_read_mac_metadata(struct archive_read *a, struct archive_entry *entry, switch(rsrc->compression) { case 0: /* No compression. */ + if (rsrc->uncompressed_size != rsrc->compressed_size) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Malformed OS X metadata entry: inconsistent size"); + return (ARCHIVE_FATAL); + } #ifdef HAVE_ZLIB_H case 8: /* Deflate compression. */ #endif @@ -2746,6 +2803,12 @@ zip_read_mac_metadata(struct archive_read *a, struct archive_entry *entry, (intmax_t)rsrc->uncompressed_size); return (ARCHIVE_WARN); } + if (rsrc->compressed_size > (4 * 1024 * 1024)) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Mac metadata is too large: %jd > 4M bytes", + (intmax_t)rsrc->compressed_size); + return (ARCHIVE_WARN); + } metadata = malloc((size_t)rsrc->uncompressed_size); if (metadata == NULL) { @@ -2784,6 +2847,8 @@ zip_read_mac_metadata(struct archive_read *a, struct archive_entry *entry, bytes_avail = remaining_bytes; switch(rsrc->compression) { case 0: /* No compression. */ + if ((size_t)bytes_avail > metadata_bytes) + bytes_avail = metadata_bytes; memcpy(mp, p, bytes_avail); bytes_used = (size_t)bytes_avail; metadata_bytes -= bytes_used; diff --git a/Utilities/cmlibarchive/libarchive/archive_string.c b/Utilities/cmlibarchive/libarchive/archive_string.c index 3d4be82..282c58e 100644 --- a/Utilities/cmlibarchive/libarchive/archive_string.c +++ b/Utilities/cmlibarchive/libarchive/archive_string.c @@ -737,7 +737,8 @@ archive_string_append_from_wcs_in_codepage(struct archive_string *as, } if (count == 0) ret = -1; - } while (0); + break; + } while (1); } as->length += count; as->s[as->length] = '\0'; diff --git a/Utilities/cmlibarchive/libarchive/archive_util.c b/Utilities/cmlibarchive/libarchive/archive_util.c index 5f31edf..f89df1d 100644 --- a/Utilities/cmlibarchive/libarchive/archive_util.c +++ b/Utilities/cmlibarchive/libarchive/archive_util.c @@ -94,35 +94,81 @@ archive_version_details(void) { static struct archive_string str; static int init = 0; + const char *zlib = archive_zlib_version(); + const char *liblzma = archive_liblzma_version(); + const char *bzlib = archive_bzlib_version(); + const char *liblz4 = archive_liblz4_version(); if (!init) { archive_string_init(&str); archive_strcat(&str, ARCHIVE_VERSION_STRING); -#ifdef HAVE_ZLIB_H - archive_strcat(&str, " zlib/"); - archive_strcat(&str, ZLIB_VERSION); -#endif -#ifdef HAVE_LZMA_H - archive_strcat(&str, " liblzma/"); - archive_strcat(&str, LZMA_VERSION_STRING); -#endif -#ifdef HAVE_BZLIB_H - { - const char *p = BZ2_bzlibVersion(); + if (zlib != NULL) { + archive_strcat(&str, " zlib/"); + archive_strcat(&str, zlib); + } + if (liblzma) { + archive_strcat(&str, " liblzma/"); + archive_strcat(&str, liblzma); + } + if (bzlib) { + const char *p = bzlib; const char *sep = strchr(p, ','); if (sep == NULL) sep = p + strlen(p); archive_strcat(&str, " bz2lib/"); archive_strncat(&str, p, sep - p); } + if (liblz4) { + archive_strcat(&str, " liblz4/"); + archive_strcat(&str, liblz4); + } + } + return str.s; +} + +const char * +archive_zlib_version(void) +{ +#ifdef HAVE_ZLIB_H + return ZLIB_VERSION; +#else + return NULL; +#endif +} + +const char * +archive_liblzma_version(void) +{ +#ifdef HAVE_LZMA_H + return LZMA_VERSION_STRING; +#else + return NULL; #endif +} + +const char * +archive_bzlib_version(void) +{ +#ifdef HAVE_BZLIB_H + return BZ2_bzlibVersion(); +#else + return NULL; +#endif +} + +const char * +archive_liblz4_version(void) +{ #if defined(HAVE_LZ4_H) && defined(HAVE_LIBLZ4) - archive_string_sprintf(&str, " liblz4/%d.%d.%d", - LZ4_VERSION_MAJOR, LZ4_VERSION_MINOR, LZ4_VERSION_RELEASE); +#define str(s) #s +#define NUMBER(x) str(x) + return NUMBER(LZ4_VERSION_MAJOR) "." NUMBER(LZ4_VERSION_MINOR) "." NUMBER(LZ4_VERSION_RELEASE); +#undef NUMBER +#undef str +#else + return NULL; #endif - } - return str.s; } int diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_bzip2.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_bzip2.c index 6526f51..6bd0d1d 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_bzip2.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_bzip2.c @@ -105,7 +105,7 @@ archive_write_add_filter_bzip2(struct archive *_a) #if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR) return (ARCHIVE_OK); #else - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate("bzip2"); if (data->pdata == NULL) { free(data); archive_set_error(&a->archive, ENOMEM, "Out of memory"); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_grzip.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_grzip.c index 8dc287e..371102d 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_grzip.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_grzip.c @@ -63,7 +63,7 @@ archive_write_add_filter_grzip(struct archive *_a) archive_set_error(_a, ENOMEM, "Can't allocate memory"); return (ARCHIVE_FATAL); } - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate("grzip"); if (data->pdata == NULL) { free(data); archive_set_error(_a, ENOMEM, "Can't allocate memory"); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_gzip.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_gzip.c index db18fd9..bbcc178 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_gzip.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_gzip.c @@ -119,7 +119,7 @@ archive_write_add_filter_gzip(struct archive *_a) data->compression_level = Z_DEFAULT_COMPRESSION; return (ARCHIVE_OK); #else - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate("gzip"); if (data->pdata == NULL) { free(data); archive_set_error(&a->archive, ENOMEM, "Out of memory"); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lrzip.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lrzip.c index da1cf5e..e215f89 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lrzip.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lrzip.c @@ -69,7 +69,7 @@ archive_write_add_filter_lrzip(struct archive *_a) archive_set_error(_a, ENOMEM, "Can't allocate memory"); return (ARCHIVE_FATAL); } - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate("lrzip"); if (data->pdata == NULL) { free(data); archive_set_error(_a, ENOMEM, "Can't allocate memory"); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lz4.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lz4.c index e23e5e9..1d0ab8c 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lz4.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lz4.c @@ -137,7 +137,7 @@ archive_write_add_filter_lz4(struct archive *_a) * We don't have lz4 library, and execute external lz4 program * instead. */ - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate("lz4"); if (data->pdata == NULL) { free(data); archive_set_error(&a->archive, ENOMEM, "Out of memory"); @@ -160,10 +160,20 @@ archive_filter_lz4_options(struct archive_write_filter *f, struct private_data *data = (struct private_data *)f->data; if (strcmp(key, "compression-level") == 0) { - if (value == NULL || !(value[0] >= '1' && value[0] <= '9') || + int val; + if (value == NULL || !((val = value[0] - '0') >= 1 && val <= 9) || value[1] != '\0') return (ARCHIVE_WARN); - data->compression_level = value[0] - '0'; + +#ifndef HAVE_LZ4HC_H + if(val >= 3) + { + archive_set_error(f->archive, ARCHIVE_ERRNO_PROGRAMMER, + "High compression not included in this build"); + return (ARCHIVE_FATAL); + } +#endif + data->compression_level = val; return (ARCHIVE_OK); } if (strcmp(key, "stream-checksum") == 0) { @@ -367,14 +377,20 @@ archive_filter_lz4_free(struct archive_write_filter *f) struct private_data *data = (struct private_data *)f->data; if (data->lz4_stream != NULL) { - if (data->compression_level < 3) +#ifdef HAVE_LZ4HC_H + if (data->compression_level >= 3) +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + LZ4_freeStreamHC(data->lz4_stream); +#else + LZ4_freeHC(data->lz4_stream); +#endif + else +#endif #if LZ4_VERSION_MINOR >= 3 LZ4_freeStream(data->lz4_stream); #else LZ4_free(data->lz4_stream); #endif - else - LZ4_freeHC(data->lz4_stream); } free(data->out_buffer); free(data->in_buffer_allocated); @@ -481,13 +497,26 @@ drive_compressor_independence(struct archive_write_filter *f, const char *p, struct private_data *data = (struct private_data *)f->data; unsigned int outsize; - if (data->compression_level < 4) - outsize = LZ4_compress_limitedOutput(p, data->out + 4, - (int)length, (int)data->block_size); - else +#ifdef HAVE_LZ4HC_H + if (data->compression_level >= 3) +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + outsize = LZ4_compress_HC(p, data->out + 4, + (int)length, (int)data->block_size, + data->compression_level); +#else outsize = LZ4_compressHC2_limitedOutput(p, data->out + 4, (int)length, (int)data->block_size, data->compression_level); +#endif + else +#endif +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + outsize = LZ4_compress_default(p, data->out + 4, + (int)length, (int)data->block_size); +#else + outsize = LZ4_compress_limitedOutput(p, data->out + 4, + (int)length, (int)data->block_size); +#endif if (outsize) { /* The buffer is compressed. */ @@ -518,9 +547,17 @@ drive_compressor_dependence(struct archive_write_filter *f, const char *p, struct private_data *data = (struct private_data *)f->data; int outsize; - if (data->compression_level < 3) { +#define DICT_SIZE (64 * 1024) +#ifdef HAVE_LZ4HC_H + if (data->compression_level >= 3) { if (data->lz4_stream == NULL) { - data->lz4_stream = LZ4_createStream(); +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + data->lz4_stream = LZ4_createStreamHC(); + LZ4_resetStreamHC(data->lz4_stream, data->compression_level); +#else + data->lz4_stream = + LZ4_createHC(data->in_buffer_allocated); +#endif if (data->lz4_stream == NULL) { archive_set_error(f->archive, ENOMEM, "Can't allocate data for compression" @@ -528,13 +565,23 @@ drive_compressor_dependence(struct archive_write_filter *f, const char *p, return (ARCHIVE_FATAL); } } - outsize = LZ4_compress_limitedOutput_continue( + else + LZ4_loadDictHC(data->lz4_stream, data->in_buffer_allocated, DICT_SIZE); + +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + outsize = LZ4_compress_HC_continue( data->lz4_stream, p, data->out + 4, (int)length, (int)data->block_size); - } else { +#else + outsize = LZ4_compressHC2_limitedOutput_continue( + data->lz4_stream, p, data->out + 4, (int)length, + (int)data->block_size, data->compression_level); +#endif + } else +#endif + { if (data->lz4_stream == NULL) { - data->lz4_stream = - LZ4_createHC(data->in_buffer_allocated); + data->lz4_stream = LZ4_createStream(); if (data->lz4_stream == NULL) { archive_set_error(f->archive, ENOMEM, "Can't allocate data for compression" @@ -542,9 +589,18 @@ drive_compressor_dependence(struct archive_write_filter *f, const char *p, return (ARCHIVE_FATAL); } } - outsize = LZ4_compressHC2_limitedOutput_continue( + else + LZ4_loadDict(data->lz4_stream, data->in_buffer_allocated, DICT_SIZE); + +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + outsize = LZ4_compress_fast_continue( data->lz4_stream, p, data->out + 4, (int)length, - (int)data->block_size, data->compression_level); + (int)data->block_size, 1); +#else + outsize = LZ4_compress_limitedOutput_continue( + data->lz4_stream, p, data->out + 4, (int)length, + (int)data->block_size); +#endif } if (outsize) { @@ -568,14 +624,19 @@ drive_compressor_dependence(struct archive_write_filter *f, const char *p, } if (length == data->block_size) { -#define DICT_SIZE (64 * 1024) - if (data->compression_level < 3) - LZ4_saveDict(data->lz4_stream, - data->in_buffer_allocated, DICT_SIZE); - else { +#ifdef HAVE_LZ4HC_H + if (data->compression_level >= 3) { +#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7 + LZ4_saveDictHC(data->lz4_stream, data->in_buffer_allocated, DICT_SIZE); +#else LZ4_slideInputBufferHC(data->lz4_stream); +#endif data->in_buffer = data->in_buffer_allocated + DICT_SIZE; } + else +#endif + LZ4_saveDict(data->lz4_stream, + data->in_buffer_allocated, DICT_SIZE); #undef DICT_SIZE } return (ARCHIVE_OK); @@ -605,7 +666,7 @@ archive_filter_lz4_open(struct archive_write_filter *f) if (data->block_checksum) archive_strcat(&as, " -BX"); if (data->stream_checksum == 0) - archive_strcat(&as, " -Sx"); + archive_strcat(&as, " --no-frame-crc"); if (data->block_independence == 0) archive_strcat(&as, " -BD"); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lzop.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lzop.c index c666551..ad705c4 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lzop.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_lzop.c @@ -173,7 +173,7 @@ archive_write_add_filter_lzop(struct archive *_a) data->compression_level = 5; return (ARCHIVE_OK); #else - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate("lzop"); if (data->pdata == NULL) { free(data); archive_set_error(_a, ENOMEM, "Can't allocate memory"); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_program.c b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_program.c index fc232da..31a1b6f 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_add_filter_program.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_add_filter_program.c @@ -68,6 +68,7 @@ struct archive_write_program_data { char *child_buf; size_t child_buf_len, child_buf_avail; + char *program_name; }; struct private_data { @@ -105,7 +106,7 @@ archive_write_add_filter_program(struct archive *_a, const char *cmd) if (data->cmd == NULL) goto memerr; - data->pdata = __archive_write_program_allocate(); + data->pdata = __archive_write_program_allocate(cmd); if (data->pdata == NULL) goto memerr; @@ -174,7 +175,7 @@ archive_compressor_program_free(struct archive_write_filter *f) * Allocate resources for executing an external program. */ struct archive_write_program_data * -__archive_write_program_allocate(void) +__archive_write_program_allocate(const char *program) { struct archive_write_program_data *data; @@ -183,6 +184,7 @@ __archive_write_program_allocate(void) return (data); data->child_stdin = -1; data->child_stdout = -1; + data->program_name = strdup(program); return (data); } @@ -231,7 +233,7 @@ __archive_write_program_open(struct archive_write_filter *f, &data->child_stdout); if (child == -1) { archive_set_error(f->archive, EINVAL, - "Can't initialise filter"); + "Can't launch external program: %s", cmd); return (ARCHIVE_FATAL); } #if defined(_WIN32) && !defined(__CYGWIN__) @@ -242,7 +244,7 @@ __archive_write_program_open(struct archive_write_filter *f, close(data->child_stdout); data->child_stdout = -1; archive_set_error(f->archive, EINVAL, - "Can't initialise filter"); + "Can't launch external program: %s", cmd); return (ARCHIVE_FATAL); } #else @@ -334,7 +336,7 @@ __archive_write_program_write(struct archive_write_filter *f, ret = child_write(f, data, buf, length); if (ret == -1 || ret == 0) { archive_set_error(f->archive, EIO, - "Can't write to filter"); + "Can't write to program: %s", data->program_name); return (ARCHIVE_FATAL); } length -= ret; @@ -373,7 +375,7 @@ __archive_write_program_close(struct archive_write_filter *f, if (bytes_read == -1) { archive_set_error(f->archive, errno, - "Read from filter failed unexpectedly."); + "Error reading from program: %s", data->program_name); ret = ARCHIVE_FATAL; goto cleanup; } @@ -403,7 +405,7 @@ cleanup: if (status != 0) { archive_set_error(f->archive, EIO, - "Filter exited with failure."); + "Error closing program: %s", data->program_name); ret = ARCHIVE_FATAL; } r1 = __archive_write_close_filter(f->next_filter); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_disk_posix.c b/Utilities/cmlibarchive/libarchive/archive_write_disk_posix.c index 450ac75..5946683 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_disk_posix.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_disk_posix.c @@ -2386,6 +2386,9 @@ check_symlinks(struct archive_write_disk *a) while ((*pn != '\0') && (*p == *pn)) ++p, ++pn; } + /* Skip the root directory if the path is absolute. */ + if(pn == a->name && pn[0] == '/') + ++pn; c = pn[0]; /* Keep going until we've checked the entire name. */ while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) { @@ -2447,6 +2450,9 @@ check_symlinks(struct archive_write_disk *a) return (ARCHIVE_FAILED); } } + pn[0] = c; + if (pn[0] != '\0') + pn++; /* Advance to the next segment. */ } pn[0] = c; /* We've checked and/or cleaned the whole path, so remember it. */ diff --git a/Utilities/cmlibarchive/libarchive/archive_write_filter.3 b/Utilities/cmlibarchive/libarchive/archive_write_filter.3 index 83bd2c6..869dc46 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_filter.3 +++ b/Utilities/cmlibarchive/libarchive/archive_write_filter.3 @@ -29,9 +29,12 @@ .Os .Sh NAME .Nm archive_write_add_filter_b64encode , +.Nm archive_write_add_filter_by_name , .Nm archive_write_add_filter_bzip2 , .Nm archive_write_add_filter_compress , +.Nm archive_write_add_filter_grzip , .Nm archive_write_add_filter_gzip , +.Nm archive_write_add_filter_lrzip , .Nm archive_write_add_filter_lz4 , .Nm archive_write_add_filter_lzip , .Nm archive_write_add_filter_lzma , @@ -51,8 +54,12 @@ Streaming Archive Library (libarchive, -larchive) .Ft int .Fn archive_write_add_filter_compress "struct archive *" .Ft int +.Fn archive_write_add_filter_grzip "struct archive *" +.Ft int .Fn archive_write_add_filter_gzip "struct archive *" .Ft int +.Fn archive_write_add_filter_lrzip "struct archive *" +.Ft int .Fn archive_write_add_filter_lz4 "struct archive *" .Ft int .Fn archive_write_add_filter_lzip "struct archive *" @@ -71,19 +78,25 @@ Streaming Archive Library (libarchive, -larchive) .Sh DESCRIPTION .Bl -tag -width indent .It Xo -.Fn archive_write_add_filter_b64encode , .Fn archive_write_add_filter_bzip2 , .Fn archive_write_add_filter_compress , +.Fn archive_write_add_filter_grzip , .Fn archive_write_add_filter_gzip , +.Fn archive_write_add_filter_lrzip , .Fn archive_write_add_filter_lz4 , .Fn archive_write_add_filter_lzip , .Fn archive_write_add_filter_lzma , .Fn archive_write_add_filter_lzop , -.Fn archive_write_add_filter_uuencode , .Fn archive_write_add_filter_xz , .Xc The resulting archive will be compressed as specified. Note that the compressed output is always properly blocked. +.It Xo +.Fn archive_write_add_filter_b64encode , +.Fn archive_write_add_filter_uuencode , +.Xc +The output will be encoded as specified. +The encoded output is always properly blocked. .It Fn archive_write_add_filter_none This is never necessary. It is provided only for backwards compatibility. diff --git a/Utilities/cmlibarchive/libarchive/archive_write_format.3 b/Utilities/cmlibarchive/libarchive/archive_write_format.3 index 4bd1163..d4ba6ab 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_format.3 +++ b/Utilities/cmlibarchive/libarchive/archive_write_format.3 @@ -28,23 +28,63 @@ .Dt ARCHIVE_WRITE_FORMAT 3 .Os .Sh NAME +.Nm archive_write_set_format , +.Nm archive_write_set_format_7zip , +.Nm archive_write_set_format_ar , +.Nm archive_write_set_format_ar_bsd , +.Nm archive_write_set_format_ar_svr4 , +.Nm archive_write_set_format_by_name , .Nm archive_write_set_format_cpio , +.Nm archive_write_set_format_cpio_newc , +.Nm archive_write_set_format_filter_by_ext , +.Nm archive_write_set_format_filter_by_ext_def , +.Nm archive_write_set_format_gnutar , +.Nm archive_write_set_format_iso9660 , +.Nm archive_write_set_format_mtree , +.Nm archive_write_set_format_mtree_classic , +.Nm archive_write_set_format_mtree_default , .Nm archive_write_set_format_pax , .Nm archive_write_set_format_pax_restricted , .Nm archive_write_set_format_raw , .Nm archive_write_set_format_shar , .Nm archive_write_set_format_shar_dump , .Nm archive_write_set_format_ustar , -.Nm archive_write_set_format_filter_by_ext , -.Nm archive_write_set_format_filter_by_ext_def +.Nm archive_write_set_format_v7tar , +.Nm archive_write_set_format_warc , +.Nm archive_write_set_format_xar , +.Nm archive_write_set_format_zip , .Nd functions for creating archives .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) .Sh SYNOPSIS .In archive.h .Ft int +.Fn archive_write_set_format "struct archive *" "int code" +.Ft int +.Fn archive_write_set_format_7zip "struct archive *" +.Ft int +.Fn archive_write_set_format_ar "struct archive *" +.Ft int +.Fn archive_write_set_format_ar_bsd "struct archive *" +.Ft int +.Fn archive_write_set_format_ar_svr4 "struct archive *" +.Ft int +.Fn archive_write_set_format_by_name "struct archive *" "const char *name" +.Ft int .Fn archive_write_set_format_cpio "struct archive *" .Ft int +.Fn archive_write_set_format_cpio_newc "struct archive *" +.Ft int +.Fn archive_write_set_format_filter_by_ext "struct archive *" "const char *filename" +.Ft int +.Fn archive_write_set_format_filter_by_ext_def "struct archive *" "const char *filename" "const char *def_ext" +.Ft int +.Fn archive_write_set_format_gnutar "struct archive *" +.Ft int +.Fn archive_write_set_format_iso9660 "struct archive *" +.Ft int +.Fn archive_write_set_format_mtree "struct archive *" +.Ft int .Fn archive_write_set_format_pax "struct archive *" .Ft int .Fn archive_write_set_format_pax_restricted "struct archive *" @@ -57,42 +97,60 @@ Streaming Archive Library (libarchive, -larchive) .Ft int .Fn archive_write_set_format_ustar "struct archive *" .Ft int -.Fn archive_write_set_format_filter_by_ext "struct archive *" "const char *" +.Fn archive_write_set_format_v7tar "struct archive *" +.Ft int +.Fn archive_write_set_format_warc "struct archive *" .Ft int -.Fn archive_write_set_format_filter_by_ext_def "struct archive *" "const char *" "const char *" +.Fn archive_write_set_format_xar "struct archive *" +.Ft int +.Fn archive_write_set_format_zip "struct archive *" .Sh DESCRIPTION These functions set the format that will be used for the archive. .Pp -The library can write -POSIX octet-oriented cpio format archives, -POSIX-standard -.Dq pax interchange -format archives, -traditional -.Dq shar -archives, -enhanced -.Dq dump -shar archives that store a variety of file attributes and handle binary files, -and -POSIX-standard -.Dq ustar -archives. -The pax interchange format is a backwards-compatible tar format that -adds key/value attributes to each entry and supports arbitrary -filenames, linknames, uids, sizes, etc. -.Dq Restricted pax interchange format -is the library default; this is the same as pax format, but suppresses -the pax extended header for most normal files. -In most cases, this will result in ordinary ustar archives. +The library can write a variety of common archive formats. + .Bl -tag -width indent +.It Fn archive_write_set_format +Sets the format based on the format code (see +.Pa archive.h +for the full list of format codes). +In particular, this can be used in conjunction with +.Fn archive_format +to create a new archive with the same format as an existing archive. +.It Fn archive_write_set_format_by_name +Sets the corresponding format based on the common name. .It Xo .Fn archive_write_set_format_filter_by_ext , .Fn archive_write_set_format_filter_by_ext_def .Xc -Format and filter for archive can be set automatically, based on output file name extension. -The functions are platform dependent. +Sets both filters and format based on the output filename. Supported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar, .tgz, .tar.gz, .tar.bz2, .tar.xz +.It Xo +.Fn archive_write_set_format_7zip +.Fn archive_write_set_format_ar_bsd , +.Fn archive_write_set_format_ar_svr4 , +.Fn archive_write_set_format_cpio +.Fn archive_write_set_format_cpio_newc +.Fn archive_write_set_format_gnutar +.Fn archive_write_set_format_iso9660 +.Fn archive_write_set_format_mtree +.Fn archive_write_set_format_mtree_classic +.Fn archive_write_set_format_pax +.Fn archive_write_set_format_pax_restricted +.Fn archive_write_set_format_raw +.Fn archive_write_set_format_shar +.Fn archive_write_set_format_shar_dump +.Fn archive_write_set_format_ustar +.Fn archive_write_set_format_v7tar +.Fn archive_write_set_format_warc +.Fn archive_write_set_format_xar +.Fn archive_write_set_format_zip +.Xc +Set the format as specified. +More details on the formats supported by libarchive can be found in the +.Xr libarchive-formats 5 +manual page. +.El .\" .Sh RETURN VALUES These functions return @@ -113,5 +171,6 @@ functions. .Xr archive_write 3 , .Xr archive_write_set_options 3 , .Xr cpio 5 , +.Xr libarchive-formats 5 , .Xr mtree 5 , .Xr tar 5 diff --git a/Utilities/cmlibarchive/libarchive/archive_write_private.h b/Utilities/cmlibarchive/libarchive/archive_write_private.h index 0c3cc0c..0dfd1b1 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_private.h +++ b/Utilities/cmlibarchive/libarchive/archive_write_private.h @@ -144,7 +144,7 @@ __archive_write_format_header_ustar(struct archive_write *, char buff[512], struct archive_string_conv *); struct archive_write_program_data; -struct archive_write_program_data * __archive_write_program_allocate(void); +struct archive_write_program_data * __archive_write_program_allocate(const char *program_name); int __archive_write_program_free(struct archive_write_program_data *); int __archive_write_program_open(struct archive_write_filter *, struct archive_write_program_data *, const char *); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_7zip.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_7zip.c index 5158854..8718d25 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_7zip.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_7zip.c @@ -1450,6 +1450,10 @@ _7z_free(struct archive_write *a) { struct _7zip *zip = (struct _7zip *)a->format_data; + /* Close the temporary file. */ + if (zip->temp_fd >= 0) + close(zip->temp_fd); + file_free_register(zip); compression_end(&(a->archive), &(zip->stream)); free(zip->coder.props); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c index 687f8e4..6f7fe78 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_pax.c @@ -1036,22 +1036,12 @@ archive_write_pax_header(struct archive_write *a, need_extension = 1; /* - * The following items are handled differently in "pax - * restricted" format. In particular, in "pax restricted" - * format they won't be added unless need_extension is - * already set (we're already generating an extended header, so - * may as well include these). + * Libarchive used to include these in extended headers for + * restricted pax format, but that confused people who + * expected ustar-like time semantics. So now we only include + * them in full pax format. */ - if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED || - need_extension) { - - if (archive_entry_mtime(entry_main) < 0 || - archive_entry_mtime(entry_main) >= 0x7fffffff || - archive_entry_mtime_nsec(entry_main) != 0) - add_pax_attr_time(&(pax->pax_header), "mtime", - archive_entry_mtime(entry_main), - archive_entry_mtime_nsec(entry_main)); - + if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED) { if (archive_entry_ctime(entry_main) != 0 || archive_entry_ctime_nsec(entry_main) != 0) add_pax_attr_time(&(pax->pax_header), "ctime", @@ -1072,6 +1062,23 @@ archive_write_pax_header(struct archive_write *a, "LIBARCHIVE.creationtime", archive_entry_birthtime(entry_main), archive_entry_birthtime_nsec(entry_main)); + } + + /* + * The following items are handled differently in "pax + * restricted" format. In particular, in "pax restricted" + * format they won't be added unless need_extension is + * already set (we're already generating an extended header, so + * may as well include these). + */ + if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED || + need_extension) { + if (archive_entry_mtime(entry_main) < 0 || + archive_entry_mtime(entry_main) >= 0x7fffffff || + archive_entry_mtime_nsec(entry_main) != 0) + add_pax_attr_time(&(pax->pax_header), "mtime", + archive_entry_mtime(entry_main), + archive_entry_mtime_nsec(entry_main)); /* I use a star-compatible file flag attribute. */ p = archive_entry_fflags_text(entry_main); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_warc.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_warc.c index 80abc6f..ea66929 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_warc.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_warc.c @@ -186,16 +186,18 @@ _warc_header(struct archive_write *a, struct archive_entry *entry) /* check whether warcinfo record needs outputting */ if (!w->omit_warcinfo) { + ssize_t r; warc_essential_hdr_t wi = { WT_INFO, /*uri*/NULL, /*urn*/NULL, - /*rtm*/w->now, - /*mtm*/w->now, + /*rtm*/0, + /*mtm*/0, /*cty*/"application/warc-fields", /*len*/sizeof(warcinfo) - 1U, }; - ssize_t r; + wi.rtime = w->now; + wi.mtime = w->now; archive_string_init(&hdr); r = _popul_ehdr(&hdr, MAX_HDR_SIZE, wi); @@ -226,14 +228,18 @@ _warc_header(struct archive_write *a, struct archive_entry *entry) if (w->typ == AE_IFREG) { warc_essential_hdr_t rh = { WT_RSRC, - /*uri*/archive_entry_pathname(entry), + /*uri*/NULL, /*urn*/NULL, - /*rtm*/w->now, - /*mtm*/archive_entry_mtime(entry), + /*rtm*/0, + /*mtm*/0, /*cty*/NULL, - /*len*/(size_t)archive_entry_size(entry), + /*len*/0, }; ssize_t r; + rh.tgturi = archive_entry_pathname(entry); + rh.rtime = w->now; + rh.mtime = archive_entry_mtime(entry); + rh.cntlen = (size_t)archive_entry_size(entry); archive_string_init(&hdr); r = _popul_ehdr(&hdr, MAX_HDR_SIZE, rh); @@ -325,16 +331,16 @@ xstrftime(struct archive_string *as, const char *fmt, time_t t) /** like strftime(3) but for time_t objects */ struct tm *rt; #if defined(HAVE_GMTIME_R) || defined(HAVE__GMTIME64_S) - struct tm time; + struct tm timeHere; #endif char strtime[100]; size_t len; #ifdef HAVE_GMTIME_R - if ((rt = gmtime_r(&t, &time)) == NULL) + if ((rt = gmtime_r(&t, &timeHere)) == NULL) return; #elif defined(HAVE__GMTIME64_S) - _gmtime64_s(&time, &t); + _gmtime64_s(&timeHere, &t); #else if ((rt = gmtime(&t)) == NULL) return; @@ -396,7 +402,7 @@ _popul_ehdr(struct archive_string *tgt, size_t tsz, warc_essential_hdr_t hdr) * handle the minimum number following '%'. * So we have to use snprintf function here instead * of archive_string_snprintf function. */ -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(__CYGWIN__) && !( defined(_MSC_VER) && _MSC_VER >= 1900) #define snprintf _snprintf #endif snprintf( diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_xar.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_xar.c index a47c53c..58ad9e0 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_xar.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_xar.c @@ -1877,6 +1877,11 @@ xar_free(struct archive_write *a) struct xar *xar; xar = (struct xar *)a->format_data; + + /* Close the temporary file. */ + if (xar->temp_fd >= 0) + close(xar->temp_fd); + archive_string_free(&(xar->cur_dirstr)); archive_string_free(&(xar->tstr)); archive_string_free(&(xar->vstr)); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_format_zip.c b/Utilities/cmlibarchive/libarchive/archive_write_set_format_zip.c index 0636f46..0b2c69b 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_format_zip.c +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_format_zip.c @@ -66,6 +66,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_zip.c 201168 20 #define ZIP_ENTRY_FLAG_LENGTH_AT_END (1<<3) #define ZIP_ENTRY_FLAG_UTF8_NAME (1 << 11) +#define ZIP_4GB_MAX ARCHIVE_LITERAL_LL(0xffffffff) +#define ZIP_4GB_MAX_UNCOMPRESSED ARCHIVE_LITERAL_LL(0xff000000) + enum compression { COMPRESSION_UNSPECIFIED = -1, COMPRESSION_STORE = 0, @@ -532,14 +535,13 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) if (zip->flags & ZIP_FLAG_AVOID_ZIP64) { /* Reject entries over 4GB. */ if (archive_entry_size_is_set(entry) - && (archive_entry_size(entry) > - ARCHIVE_LITERAL_LL(0xffffffff))) { + && (archive_entry_size(entry) > ZIP_4GB_MAX)) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Files > 4GB require Zip64 extensions"); return ARCHIVE_FAILED; } /* Reject entries if archive is > 4GB. */ - if (zip->written_bytes > ARCHIVE_LITERAL_LL(0xffffffff)) { + if (zip->written_bytes > ZIP_4GB_MAX) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Archives > 4GB require Zip64 extensions"); return ARCHIVE_FAILED; @@ -727,10 +729,8 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) * (compression might make file larger) */ if ((zip->flags & ZIP_FLAG_FORCE_ZIP64) - || (zip->entry_uncompressed_size + additional_size > - ARCHIVE_LITERAL_LL(0xffffffff)) - || (zip->entry_uncompressed_size > - ARCHIVE_LITERAL_LL(0xff000000) + || (zip->entry_uncompressed_size + additional_size > ZIP_4GB_MAX) + || (zip->entry_uncompressed_size > ZIP_4GB_MAX_UNCOMPRESSED && zip->entry_compression != COMPRESSION_STORE)) { zip->entry_uses_zip64 = 1; version_needed = 45; @@ -788,8 +788,8 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry) * are included only if these are 0xffffffff; * THEREFORE these must be set this way, even if we * know one of them is smaller. */ - archive_le32enc(local_header + 18, ARCHIVE_LITERAL_LL(0xffffffff)); - archive_le32enc(local_header + 22, ARCHIVE_LITERAL_LL(0xffffffff)); + archive_le32enc(local_header + 18, ZIP_4GB_MAX); + archive_le32enc(local_header + 22, ZIP_4GB_MAX); } else { archive_le32enc(local_header + 18, (uint32_t)zip->entry_compressed_size); archive_le32enc(local_header + 22, (uint32_t)zip->entry_uncompressed_size); @@ -1217,22 +1217,22 @@ archive_write_zip_finish_entry(struct archive_write *a) } /* Append Zip64 extra data to central directory information. */ - if (zip->entry_compressed_written > ARCHIVE_LITERAL_LL(0xffffffff) - || zip->entry_uncompressed_written > ARCHIVE_LITERAL_LL(0xffffffff) - || zip->entry_offset > ARCHIVE_LITERAL_LL(0xffffffff)) { + if (zip->entry_compressed_written > ZIP_4GB_MAX + || zip->entry_uncompressed_written > ZIP_4GB_MAX + || zip->entry_offset > ZIP_4GB_MAX) { unsigned char zip64[32]; unsigned char *z = zip64, *zd; memcpy(z, "\001\000\000\000", 4); z += 4; - if (zip->entry_uncompressed_written >= ARCHIVE_LITERAL_LL(0xffffffff)) { + if (zip->entry_uncompressed_written >= ZIP_4GB_MAX) { archive_le64enc(z, zip->entry_uncompressed_written); z += 8; } - if (zip->entry_compressed_written >= ARCHIVE_LITERAL_LL(0xffffffff)) { + if (zip->entry_compressed_written >= ZIP_4GB_MAX) { archive_le64enc(z, zip->entry_compressed_written); z += 8; } - if (zip->entry_offset >= ARCHIVE_LITERAL_LL(0xffffffff)) { + if (zip->entry_offset >= ZIP_4GB_MAX) { archive_le64enc(z, zip->entry_offset); z += 8; } @@ -1256,15 +1256,15 @@ archive_write_zip_finish_entry(struct archive_write *a) archive_le32enc(zip->file_header + 16, zip->entry_crc32); archive_le32enc(zip->file_header + 20, (uint32_t)zipmin(zip->entry_compressed_written, - ARCHIVE_LITERAL_LL(0xffffffff))); + ZIP_4GB_MAX)); archive_le32enc(zip->file_header + 24, (uint32_t)zipmin(zip->entry_uncompressed_written, - ARCHIVE_LITERAL_LL(0xffffffff))); + ZIP_4GB_MAX)); archive_le16enc(zip->file_header + 30, (uint16_t)(zip->central_directory_bytes - zip->file_header_extra_offset)); archive_le32enc(zip->file_header + 42, (uint32_t)zipmin(zip->entry_offset, - ARCHIVE_LITERAL_LL(0xffffffff))); + ZIP_4GB_MAX)); return (ARCHIVE_OK); } @@ -1291,8 +1291,8 @@ archive_write_zip_close(struct archive_write *a) offset_end = zip->written_bytes; /* If central dir info is too large, write Zip64 end-of-cd */ - if (offset_end - offset_start > ARCHIVE_LITERAL_LL(0xffffffff) - || offset_start > ARCHIVE_LITERAL_LL(0xffffffff) + if (offset_end - offset_start > ZIP_4GB_MAX + || offset_start > ZIP_4GB_MAX || zip->central_directory_entries > 0xffffUL || (zip->flags & ZIP_FLAG_FORCE_ZIP64)) { /* Zip64 end-of-cd record */ @@ -1332,11 +1332,9 @@ archive_write_zip_close(struct archive_write *a) archive_le16enc(buff + 10, (uint16_t)zipmin(0xffffU, zip->central_directory_entries)); archive_le32enc(buff + 12, - (uint32_t)zipmin(ARCHIVE_LITERAL_LL(0xffffffff), - (offset_end - offset_start))); + (uint32_t)zipmin(ZIP_4GB_MAX, (offset_end - offset_start))); archive_le32enc(buff + 16, - (uint32_t)zipmin(ARCHIVE_LITERAL_LL(0xffffffff), - offset_start)); + (uint32_t)zipmin(ZIP_4GB_MAX, offset_start)); ret = __archive_write_output(a, buff, 22); if (ret != ARCHIVE_OK) return (ARCHIVE_FATAL); diff --git a/Utilities/cmlibarchive/libarchive/archive_write_set_options.3 b/Utilities/cmlibarchive/libarchive/archive_write_set_options.3 index a2f4b57..ce7ed89 100644 --- a/Utilities/cmlibarchive/libarchive/archive_write_set_options.3 +++ b/Utilities/cmlibarchive/libarchive/archive_write_set_options.3 @@ -101,7 +101,12 @@ and .Ar value will be provided to the filter or reader named .Ar module . -The return value will be that of the module. +The return value will be either +.Cm ARCHIVE_OK +if the option was successfully handled or +.Cm ARCHIVE_WARN +if the option was unrecognized by the module or could otherwise +not be handled. If there is no such module, .Cm ARCHIVE_FAILED will be returned. @@ -123,9 +128,7 @@ will be returned if any module accepts the option, and .Cm ARCHIVE_FAILED in all other cases. .\" -.It Xo -.Fn archive_write_set_option -.Xc +.It Fn archive_write_set_option Calls .Fn archive_write_set_format_option , then @@ -137,9 +140,7 @@ will be returned immediately. Otherwise, greater of the two values will be returned. .\" -.It Xo -.Fn archive_write_set_options -.Xc +.It Fn archive_write_set_options .Ar options is a comma-separated list of options. If @@ -456,7 +457,7 @@ archive_write_open_filename(a, filename, blocksize); .Ed .\" .Sh ERRORS -Detailed error codes and textual descriptions are available from the +More detailed error codes and textual descriptions are available from the .Fn archive_errno and .Fn archive_error_string diff --git a/Utilities/cmlibarchive/libarchive/libarchive-formats.5 b/Utilities/cmlibarchive/libarchive/libarchive-formats.5 index 4a709b3..e619fe5 100644 --- a/Utilities/cmlibarchive/libarchive/libarchive-formats.5 +++ b/Utilities/cmlibarchive/libarchive/libarchive-formats.5 @@ -55,7 +55,7 @@ It can write POSIX-standard .Dq ustar and .Dq pax interchange -formats and a subset of the legacy GNU tar format. +formats as well as v7 tar format and a subset of the legacy GNU tar format. .Pp All tar formats store each entry in one or more 512-byte records. The first record is used for file metadata, including filename, @@ -150,6 +150,30 @@ Archive entries are limited to 8 gigabytes in size. Note that the pax interchange format has none of these restrictions. The ustar format is old and widely supported. It is recommended when compatibility is the primary concern. +.It Cm v7 +The libarchive library can read and write the legacy v7 tar format. +This format has the following limitations: +.Bl -bullet -compact +.It +Only regular files, directories, and symbolic links can be archived. +Block and character device nodes, FIFOs, and sockets cannot be archived. +.It +Path names in the archive are limited to 100 bytes. +.It +Symbolic links and hard links are stored in the archive with +the name of the referenced file. +This name is limited to 100 bytes. +.It +User and group information are stored as numeric IDs; there +is no provision for storing user or group names. +.It +Extended attributes, file flags, and other extended +security information cannot be stored. +.It +Archive entries are limited to 8 gigabytes in size. +.El +Generally, users should prefer the ustar format for portability +as the v7 tar format is both less useful and less portable. .El .Pp The libarchive library also reads a variety of commonly-used extensions to @@ -211,7 +235,7 @@ This format stores the header contents as octal values in ASCII. It is standard, portable, and immune from byte-order confusion. File sizes and mtime are limited to 33 bits (8GB file size), other fields are limited to 18 bits. -.It Cm SVR4 +.It Cm SVR4/newc The libarchive library can read both CRC and non-CRC variants of this format. The SVR4 format uses eight-digit hexadecimal values for @@ -364,8 +388,10 @@ area adjacent to the entry. Libarchive can read both extensions, including archives that may include both types of long filenames. Programs using libarchive can write GNU/SVR4 format -if they provide a filename table to be written into -the archive before any of the entries. +if they provide an entry called +.Pa // +containing a filename table to be written into the archive +before any of the entries. Any entries whose names are not in the filename table will be written using BSD-style long filenames. This can cause problems for programs such as @@ -406,18 +432,29 @@ using libarchive. If it cannot locate and open the file on disk, libarchive will return an error for any attempt to read the entry body. -.Ss LHA -XXX Information about libarchive's LHA support XXX +.Ss 7-Zip +Libarchive can read and write 7-Zip format archives. +TODO: Need more information .Ss CAB -XXX Information about libarchive's CAB support XXX -.Ss XAR -XXX Information about libarchive's XAR support XXX +Libarchive can read Microsoft Cabinet ( +.Dq CAB ) +format archives. +TODO: Need more information. +.Ss LHA +TODO: Information about libarchive's LHA support .Ss RAR Libarchive has limited support for reading RAR format archives. Currently, libarchive can read RARv3 format archives which have been either created uncompressed, or compressed using any of the compression methods supported by the RARv3 format. Libarchive can also read self-extracting RAR archives. +.Ss Warc +Libarchive can read and write +.Dq web archives . +TODO: Need more information +.Ss XAR +Libarchive can read and write the XAR format used by many Apple tools. +TODO: Need more information .Sh SEE ALSO .Xr ar 1 , .Xr cpio 1 , diff --git a/Utilities/cmlibarchive/libarchive/xxhash.c b/Utilities/cmlibarchive/libarchive/xxhash.c index e4f03ba..d7f8e96 100644 --- a/Utilities/cmlibarchive/libarchive/xxhash.c +++ b/Utilities/cmlibarchive/libarchive/xxhash.c @@ -29,8 +29,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. You can contact the author at : - xxHash source repository : http://code.google.com/p/xxhash/ */ +#include <stdlib.h> +#include <string.h> #include "archive_platform.h" +#include "archive_xxhash.h" + #ifdef HAVE_LIBLZ4 /*************************************** @@ -83,11 +87,8 @@ You can contact the author at : /*************************************** ** Includes & Memory related functions ****************************************/ -#include "archive_xxhash.h" -#include <stdlib.h> #define XXH_malloc malloc #define XXH_free free -#include <string.h> #define XXH_memcpy memcpy @@ -497,4 +498,17 @@ struct archive_xxhash __archive_xxhash = { XXH32_update, XXH32_digest }; +#else + +/* + * Define an empty version of the struct if we aren't using the LZ4 library. + */ +const +struct archive_xxhash __archive_xxhash = { + NULL, + NULL, + NULL, + NULL +}; + #endif /* HAVE_LIBLZ4 */ |