Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

dmake - build tool using dcc

dmake is a tool for building C++ and C programs using the dcc compiler driver as the underlying build tool. Because dcc itself does all dependency analysis dmake simply determines what is being built and invokes dcc accordingly. Compiling and linking if required.

Despite its name dmake is not a make clone and has no relation to make or tools of its ilk. The name dmake is used to match dcc.

dmake uses the dcc compiler-driver to build modules of different types. Modules are either programs, called exes, dynamic libraries or static libraries. The different module types are distinguished by requiring different commands to create the module's outputs and the file names of those outputs.

dmake uses dcc to take care of all compilation and library construction. dmake determines what and how to build and relies upon dcc's automatic, dependency-based, compilations and library generation.

So dmake is wrapper but it offers some features to the lazy programmer to reduce their workload. If not told otherwise dmake will automatically determine the name and type of thing being built, whether it is a program or a library, and then invokes dcc with appropriate options to create the program or library. The program doesn't need to do anything.

Build options are defined using dcc option files, text files that list build options for the different build steps (these files are named using the conventional make-macro name of the corresponding set of options, e.g C compiler options are read from the CFLAGS file, C++ compiler compiler options from CXXFLAGS and so on).

The dmake user-experience is typically a two step thing. The first step is where we create the options files used by dcc to define the compiler and linker options. We can create a .dcc/CXXFLAGS file for compiler options, .dcc/LDFLAGS for linker options. If we're building a program we may create another file, .dcc/LIBS, to define any required libraries.

Once the options files are in place usage is usually just typing the single word command dmake. It figures out what to do. If it can't you can tell it with commands like dmake exe and dmake lib clean.

Using dmake

dmake's actions depends upon how it in invoked. It can either infer the module type, executable or library, or can be told the type.

When invoked without arguments dmake attempts to infer the module type by reading the contents of the source files (in the current directory) and looking for a main() function (dmake is C and C++ specific).

A simple regular expresion is used to locate main() and it will fail for more complex incantations, e.g. using macros to define main(), having weird arguments (Amiga) or other such silliness.

Steps

dmake first determines the names of all the source files. By default this is the names of the C++ (.cpp or .cc) or C (.c) files in the current directory.

If a file named 'SRCS' exists in the current directory that file is used instead to obtain source file names. A SRCS file contains filenames and/or glob patterns to define the names of the source files. The file allows filenames and patterns to occur on more than one line and allows #-based line comments.

If dmake was invoked without one of the 'exe', 'lib' or 'dll' arguments, dmake reads the source files looking for a main() function. If dmake finds main() it compiles the source files to an executable. If there is no main() dmake creates a static library.

The output name defaults to the name of the current directory, or if that name is "src", the name of the parent directory. Output files are automatically prefixed and suffixed as required, e.g. on UNIX systems static libraries have a 'lib' prefix and '.a' suffix so a directory called "fred" will produce "libfred.a". If the directory already has a 'lib' prefix no extra prefix is added.

Dmake finally invokes dcc to compile the source files and create the output.

If the 'clean' argument is supplied all output files are removed instead of being built.

dmake init

dmake can be run in a mode to initialize a project and create the set of files used to control the build - the dcc options files for the project, a .dmake file if required, and a Makefile to direct everything and provide a conventional user-experience.

Invoking dmake init

The initcommand is conversational and accepts numerous keyword arguments to tell it what to do. With no arguments the standard dmake rules are used to determine the type of project and thing being inited and outputs corresponding files for dcc.

The keywords recognized by init are as follows,

  • exe | lib | dll
    Define the type of thing being built instead of inferring it.
  • c | c++ | objc | objc++
    Define the programming language being used rather than being inferred from the names of any source files.
  • c99 | c11
    Define the C language standard being used. Only valid for C language projects.
  • c++11 | c++14 | c++17 | c++20
    Define the C++ language standard being used. Only valid for C++ language projects
  • debug | release
    Define the type of build to perform, debug or release (optimized).

USAGE

dmake [<options>] [{exe | lib | dll }] [clean]
dmake dirs <pathname>...
dmake init <options>...

OPTIONS

-C dir Change to the named directory
before processing. Useful when
invoking dmake from IDEs.
-o name Use 'name' as the base name for the
build output rather than the default
based off the current directory name.
-k Keep going where possible, don't stop
upon the first error.
-v Be more verbose and issue messages.
-dll When automatically creating a library,
because no main function was found in
the sources, create a dynamic library
rather than a static library.
-quiet Pass dcc its --quiet option.

FILES

  • .dmake
    File defining user variables to define the type of thing being built, its name, sources and other build options.
  • SRCS
    Contains pathnames and glob patterns that expand to pathnames that define the source file names. Format is as per dcc "options" files - values written over multiple lines, #-style line comments and blanks ignored.

About

builder atop dcc

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages