Source File Compilation Dependency Tracking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The inefficiency in compiling source code due to unnecessary recompilation of source files when header files are updated, leading to significant time consumption in processing large projects with complex reference relationships between source files and header files.

Innovation Solution

A method and apparatus that generate an object file by creating indicators for data symbols referenced in source files, allowing for the determination of whether recompilation is necessary based on updates to header files, thereby reducing the amount of source code to be recompiled and minimizing compilation time.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a source file references multiple header files, then the source file can utilize various interfaces and data structures, but any update to any referenced header file triggers recompilation of the source file even when the updated header file is irrelevant

Engineering Contradiction:
Improveheader file reference capabilityVSAvoidcompilation time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent segments the header file reference relationship into specific data symbol dependencies. Instead of treating a header file as an indivisible unit that triggers full recompilation, the system divides it into individual data symbols (variables, functions, structures) and tracks which specific symbols the source file actually uses. This segmentation allows selective recompilation based on actual dependency changes.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by performing only the necessary recompilation work. When a header file is updated, the system identifies and recompiles only the specific data symbols that changed and are actually used by the source file, rather than recompiling the entire source file. This reduces compilation time while maintaining correctness.

Inventive Principle:
Principle #16Partial or excessive action

2Adaptability or versatility

If developers reference multiple header files in one source file, then the source file can access diverse functionality, but the source file must be re-compiled whenever any referenced header file is updated

Engineering Contradiction:
Improveinterface accessibilityVSAvoidcompilation efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent performs preliminary action by pre-analyzing and recording the data symbol dependencies between source files and header files during the initial compilation. This dependency information is stored and used during subsequent compilations to quickly determine whether recompilation is necessary, avoiding the need to re-analyze all header files from scratch.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements feedback by using the dependency analysis results from previous compilations to inform subsequent compilation decisions. The system feeds back the recorded data symbol dependencies to the compilation process, enabling intelligent determination of whether recompilation is needed based on actual usage patterns rather than conservative blanket recompilation.

Inventive Principle:
Principle #23Feedback

3Reliability

If a source file includes all referenced header files to ensure completeness, then all possible interfaces are available, but unnecessary header files increase compilation time

Engineering Contradiction:
Improveinterface completenessVSAvoidcompilation processing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent extracts only the necessary data symbol dependency information from the header file references. Instead of including or processing all header files during compilation, the system extracts and stores only the specific data symbols that the source file actually uses, separating the essential dependency information from the unnecessary header file content.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS10083017B2Processing source file
Publication Date: 2018.09.25 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10083017B2 patent drawing
  • US10083017B2 patent drawing
  • US10083017B2 patent drawing

AI summary

There is provided a method for processing a source file to generate an object file, comprising: obtaining a header file referenced by the source file; in response to the source file calling a data symbol defined in the header file, creating an indicator of a definition the data symbol, wherein definitions of different data symbols correspond to different indicators; and adding the indicator into a compiling result of compiling the source file so as to generate the object file. With the present invention, a dependency between the source file and the header file can be recorded, and the number of source files needed to be re-compiled can be reduced on the basis of the dependency.