[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH 3/4] build: -nc zum Ueberspringen der Kompilierung



+ build: Mit -nc kann die Kompilierung uebersprungen werden, wenn die
  Objektdateien schon vorhanden sind und nur noch Bibliotheken erstellt bzw.
  Objektdateien gelinkt werden muessen.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/c/build/build.c |   28 +++++++++++++++-------------
 src/modules/c/build/main.c  |    6 +++++-
 2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/src/modules/c/build/build.c b/src/modules/c/build/build.c
index ecf8fc4..683428b 100644
--- a/src/modules/c/build/build.c
+++ b/src/modules/c/build/build.c
@@ -228,22 +228,24 @@ static void do_build(struct build_dir* dir, const char* parent_include,
 
     // Und schliesslich noch die einzelnen Dateien
     // TODO Pruefen, ob sich Abhaengigkeiten veraendert haben
-    printf("%s: Kompilieren (C)...", dir->path);
-    fflush(stdout);
-    compile(dir->path, dir->src_files[LANG_C], c_compiler, cflags, include);
+    if (!dont_compile) {
+        printf("%s: Kompilieren (C)...", dir->path);
+        fflush(stdout);
+        compile(dir->path, dir->src_files[LANG_C], c_compiler, cflags, include);
 
-    printf("\r%s: Kompilieren (Pascal)...\033[K", dir->path);
-    fflush(stdout);
-    compile(dir->path, dir->src_files[LANG_PAS], "fpc", fpcflags, include);
+        printf("\r%s: Kompilieren (Pascal)...\033[K", dir->path);
+        fflush(stdout);
+        compile(dir->path, dir->src_files[LANG_PAS], "fpc", fpcflags, include);
 
-    printf("\r%s: Assemblieren (gas)...\033[K", dir->path);
-    fflush(stdout);
-    compile(dir->path, dir->src_files[LANG_ASM_GAS], "gcc", gasflags, include);
+        printf("\r%s: Assemblieren (gas)...\033[K", dir->path);
+        fflush(stdout);
+        compile(dir->path, dir->src_files[LANG_ASM_GAS], "gcc", gasflags, include);
 
-    printf("\r%s: Assemblieren (yasm)...\033[K", dir->path);
-    fflush(stdout);
-    for (i = 0; (file = list_get_element_at(dir->src_files[LANG_ASM_NASM], i)); i++) {
-        do_command(dir->path, "yasm", "%s %s", nasmflags, file->name);
+        printf("\r%s: Assemblieren (yasm)...\033[K", dir->path);
+        fflush(stdout);
+        for (i = 0; (file = list_get_element_at(dir->src_files[LANG_ASM_NASM], i)); i++) {
+            do_command(dir->path, "yasm", "%s %s", nasmflags, file->name);
+        }
     }
 
     // Im Wurzelverzeichnis wird gelinkt (TODO einstellbar machen)
diff --git a/src/modules/c/build/main.c b/src/modules/c/build/main.c
index 46f196f..8997abe 100644
--- a/src/modules/c/build/main.c
+++ b/src/modules/c/build/main.c
@@ -71,13 +71,15 @@ int verbose = 0;
 /// Nur Meldungen ausgeben, aber nichts wirklich aufrufen
 int dry_run= 0;
 
+/// Nur Bibliotheken sammeln und linken
+int dont_compile= 0;
 
 /// Keine Standardbibliotheken einbinden
 int standalone = 0;
 
 static void usage(char* binary)
 {
-    fprintf(stderr, "Aufruf: %s [-k] [-v] [--dry-run] [<Wurzelverzeichnis>]\n",
+    fprintf(stderr, "Aufruf: %s [-k] [-nc] [-v] [--dry-run] [<Wurzelverzeichnis>]\n",
         binary);
     exit(1);
 }
@@ -101,6 +103,8 @@ int main(int argc, char** argv)
             dry_run = 1;
         } else if (!strcmp(argv[i], "-k")) {
             standalone = 1;
+        } else if (!strcmp(argv[i], "-nc")) {
+            dont_compile = 1;
         } else if (argv[i][0] == '-') {
             usage(argv[0]);
         } else if (rootdir_path) {
-- 
1.5.6.5