From de0e36a1945ebfe28e43e1108d476c7acf86d48f Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Sat, 30 Mar 2019 17:33:49 +0100 Subject: [PATCH] adds tranche -tdir option --- doc/makefile-issue | 21 ++++ module/da/makefile | 4 +- module/da/makefile-flags | 2 - module/da/test/makefile | 6 +- module/da/test/makefile-flags | 2 - module/db/0_makefile | 2 +- module/share/bin/tranche | Bin 31808 -> 0 bytes module/share/bin/tranche-target | Bin 31928 -> 0 bytes module/share/lib/libda.a | Bin 14658 -> 14658 bytes module/subu-0/0_makefile | 2 +- module/subu-0/1_tests/0_makefile | 2 +- module/temp | 10 ++ module/tranche/deprecated/0_makefile | 2 +- module/tranche/makefile | 5 + module/tranche/makefile-flags | 17 --- module/tranche/src/tranche-make.cli.c | 33 ++--- module/tranche/src/tranche.cli.c | 88 +++++++++++-- module/tranche/src/tranche.lib.c | 46 +++---- module/tranche/src/tranche.lib.h | 4 +- module/tranche/test/try/test1.sh | 12 +- module/tranche/test/try/test2.sh | 6 +- module/tranche/test/try/test3.sh | 2 +- module/tranche/test/try/test4.sh | 2 +- tool/bin/tranche | Bin 37504 -> 38096 bytes tool/bin/tranche-make | Bin 38360 -> 38280 bytes tool/bin/tranche-target | Bin 37616 -> 37560 bytes tool/lib/{makefile_cc => makefile-cc} | 11 +- tool/lib/makefile-trc | 37 ++++++ tool/lib/makefile_trc | 175 -------------------------- 29 files changed, 206 insertions(+), 285 deletions(-) create mode 100644 doc/makefile-issue delete mode 100755 module/share/bin/tranche delete mode 100755 module/share/bin/tranche-target create mode 100644 module/temp rename tool/lib/{makefile_cc => makefile-cc} (94%) create mode 100644 tool/lib/makefile-trc delete mode 100644 tool/lib/makefile_trc diff --git a/doc/makefile-issue b/doc/makefile-issue new file mode 100644 index 0000000..859cf77 --- /dev/null +++ b/doc/makefile-issue @@ -0,0 +1,21 @@ +1. + +For the following makefile, the .PHONEY tag is ignored unless there +is an explicit target with that name. The %:: target is not enough. +So for expample, if there is an exec directory, the exec target +caught through the %:: will never fire. The commented lines must +be added that give an explicit exec target. + + +.PHONY: all version deps lib exec +all: version deps lib exec + +lib: + $(MAKE) $@ + cp src/tranche.lib.h include/tranche.h + +#exec: +# $(MAKE) $@ + +%:: + $(MAKE) $@ diff --git a/module/da/makefile b/module/da/makefile index 67fbdb9..49d84f9 100644 --- a/module/da/makefile +++ b/module/da/makefile @@ -1,7 +1,9 @@ # da/makefile + SHELL=/bin/bash -MAKE= +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile-cc +#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile-cc -include makefile-flags diff --git a/module/da/makefile-flags b/module/da/makefile-flags index 51dd4ca..cb96c22 100644 --- a/module/da/makefile-flags +++ b/module/da/makefile-flags @@ -14,7 +14,5 @@ CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror LINKFLAGS=-Llib -lda -MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile_cc -#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile_cc diff --git a/module/da/test/makefile b/module/da/test/makefile index ae31fa3..292b456 100644 --- a/module/da/test/makefile +++ b/module/da/test/makefile @@ -1,17 +1,17 @@ # da/test SHELL=/bin/bash +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile-cc +#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile-cc -include makefile-flags -.PHONY: all +.PHONY: all lib exec all: version deps lib exec -.PHONY: lib lib: $(MAKE) $@ -.PHONY: exec exec: $(MAKE) $@ diff --git a/module/da/test/makefile-flags b/module/da/test/makefile-flags index dbcffea..1904d71 100644 --- a/module/da/test/makefile-flags +++ b/module/da/test/makefile-flags @@ -15,5 +15,3 @@ CFLAGS=-std=gnu11 -fPIC -I../include -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I../include -Werror LINKFLAGS= -Llib -L../lib -ltest -lda -MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile_cc -#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile_cc diff --git a/module/db/0_makefile b/module/db/0_makefile index b8c7b9d..f0708ef 100644 --- a/module/db/0_makefile +++ b/module/db/0_makefile @@ -5,7 +5,7 @@ SHELL=/bin/bash -include 0_makefile_flags SUID_TOOL=$(TOOLSDIR)/bin/setuid_root.sh -MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile_cc +MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile-cc SOURCES=$(wildcard *.c) HFILES=$(wildcard *.h) diff --git a/module/share/bin/tranche b/module/share/bin/tranche deleted file mode 100755 index bd19f79ba48efc7fb6ebdac190adc1cddf0e0358..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31808 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 diff --git a/module/share/bin/tranche-target b/module/share/bin/tranche-target deleted file mode 100755 index bc5d9c1d651ff59a2c977098bc0a7e058089e1b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31928 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 diff --git a/module/share/lib/libda.a b/module/share/lib/libda.a index 68099263c91cbfc01f99f55f9eb7d1706ed7e0fa..595690afc816aa76b553ae3e77df90193564f9bc 100644 GIT binary patch delta 29 fcmX?9bf{>844b8afuV)jMkNnMD06cG<0W$dj#&uW delta 29 fcmX?9bf{>844Z|exq-34MkNnMD06cG<0W$dj`#@R diff --git a/module/subu-0/0_makefile b/module/subu-0/0_makefile index b8c7b9d..f0708ef 100644 --- a/module/subu-0/0_makefile +++ b/module/subu-0/0_makefile @@ -5,7 +5,7 @@ SHELL=/bin/bash -include 0_makefile_flags SUID_TOOL=$(TOOLSDIR)/bin/setuid_root.sh -MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile_cc +MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile-cc SOURCES=$(wildcard *.c) HFILES=$(wildcard *.h) diff --git a/module/subu-0/1_tests/0_makefile b/module/subu-0/1_tests/0_makefile index 67cea25..c16998b 100644 --- a/module/subu-0/1_tests/0_makefile +++ b/module/subu-0/1_tests/0_makefile @@ -4,7 +4,7 @@ SHELL=/bin/bash -include 0_makefile_flags -MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile_cc +MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile-cc SOURCES=$(wildcard *.c) HFILES=$(wildcard *.h) diff --git a/module/temp b/module/temp new file mode 100644 index 0000000..7b6ed6e --- /dev/null +++ b/module/temp @@ -0,0 +1,10 @@ +sed -i -e 's/makefile_cc/makefile-cc/g' ./db/0_makefile +sed -i -e 's/makefile_cc/makefile-cc/g' ./subu-0/1_tests/0_makefile +sed -i -e 's/makefile_cc/makefile-cc/g' ./subu-0/0_makefile +sed -i -e 's/makefile_cc/makefile-cc/g' ./tranche/deprecated/0_makefile +sed -i -e 's/makefile_cc/makefile-cc/g' ./tranche/makefile-flags +sed -i -e 's/makefile_cc/makefile-cc/g' ./tranche/makefile-flags +sed -i -e 's/makefile_cc/makefile-cc/g' ./da/test/makefile-flags +sed -i -e 's/makefile_cc/makefile-cc/g' ./da/test/makefile-flags +sed -i -e 's/makefile_cc/makefile-cc/g' ./da/makefile-flags +sed -i -e 's/makefile_cc/makefile-cc/g' ./da/makefile-flags diff --git a/module/tranche/deprecated/0_makefile b/module/tranche/deprecated/0_makefile index b8c7b9d..f0708ef 100644 --- a/module/tranche/deprecated/0_makefile +++ b/module/tranche/deprecated/0_makefile @@ -5,7 +5,7 @@ SHELL=/bin/bash -include 0_makefile_flags SUID_TOOL=$(TOOLSDIR)/bin/setuid_root.sh -MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile_cc +MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile-cc SOURCES=$(wildcard *.c) HFILES=$(wildcard *.h) diff --git a/module/tranche/makefile b/module/tranche/makefile index 4c20d5e..651e98b 100644 --- a/module/tranche/makefile +++ b/module/tranche/makefile @@ -1,6 +1,8 @@ # tranche/makefile SHELL=/bin/bash +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile-cc +#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile-cc -include makefile-flags @@ -14,6 +16,9 @@ lib: exec: $(MAKE) $@ +share: + if [ ! -z "$(wildcard $(EXECDIR)/*)" ]; then cp $(EXECDIR)/* $(PROJECT_SUBU)/tool/bin; fi + %:: $(MAKE) $@ diff --git a/module/tranche/makefile-flags b/module/tranche/makefile-flags index 1aa3d66..bb0340e 100644 --- a/module/tranche/makefile-flags +++ b/module/tranche/makefile-flags @@ -7,25 +7,8 @@ ECHO= echo # directories used by this makefile, these could all be set to dot for # the simplest source directory structure -#LIDBIR, EXECDIR, INCDIR hold the make results that might later be shared -#$(PWD) is the directory that make was called from, this is already build in -#set to dot to use the same directory as the source code -#leave blank to ommit -DEPRDIR=deprecated -DOCDIR=doc -EXECDIR=exec -INCDIR=include -LIBDIR=lib -SRCDIR=src -TESTDIR=test -TMPDIR=tmp -TOOLDIR=$(realpath $(PROJECT_SUBU)/tool) -TRYDIR=try - C=gcc CFLAGS=-std=gnu11 -fPIC -I. -I../share/include -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror LINKFLAGS=-Llib -L../share/lib/ -lda -ltranche -MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile_cc -#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile_cc diff --git a/module/tranche/src/tranche-make.cli.c b/module/tranche/src/tranche-make.cli.c index 6fe480b..5faf31f 100644 --- a/module/tranche/src/tranche-make.cli.c +++ b/module/tranche/src/tranche-make.cli.c @@ -1,11 +1,7 @@ /* -.. don't think I need sdir, just pass src_file_path through as the source, -need to add -tdir option to the tranche call, an mod tranche to take it. -sname then becomes also becomes a path to src. - usage: - argv[0] [] [-sname ] [-sdir ] [-tdir ] [-mfile ] + argv[0] [] [-sname ] [-tdir ] [-mfile ] gets the names of all the targets from the source file, then appends to the mfile a couple of lines of the form: @@ -18,8 +14,7 @@ located. options the trc file to be read --sdir prepend to in the makefile deps line that is printed --tdir prepend to each " +-tdir prepend / to each " -mfile where to send the output, defaults to stdout -sname replaces sourcename as the name to write as the source - useful for pipes @@ -29,7 +24,7 @@ If -sdir is not provided, the directory part of the is used. If user does not want this behavior, give a value of "." for -sdir. .. should modify this to allow multiple source files on the command line .. - +.. should check that tdir is an existing directory */ #include @@ -45,7 +40,6 @@ int main(int argc, char **argv, char **envp){ char *src_file_path = 0; char *sname = 0; - char *sdir = 0; char *tdir = 0; char *mfile_path = 0; @@ -77,10 +71,6 @@ int main(int argc, char **argv, char **envp){ mfile_path = value; goto endif; } - if( !strcmp(option, "sdir") ){ - sdir = value; - goto endif; - } if( !strcmp(option, "tdir") ){ tdir = value; goto endif; @@ -102,16 +92,16 @@ int main(int argc, char **argv, char **envp){ if(args_cnt > 1) src_file_path = *(char **)da_index(argsp, 1); // arg contracts - if(da_length(argsp) > 2){ + if(args_cnt > 2){ fprintf(stderr, "too many args\n"); err_cnt++; } if(!src_file_path && !sname){ - fprintf(stderr, "must specify at least one eof a src_file_path or an sname\n"); + fprintf(stderr, "must specify at least one of a src_file_path or an sname\n"); err_cnt++; } if(err_cnt > 0){ - fprintf(stderr, "usage: %s [] [-sname ] [-sdir ] [-tdir ] [-mfile ]\n", argv[0]); + fprintf(stderr, "usage: %s [] [-sname ] [-tdir ] [-mfile ]\n", argv[0]); return TRANCHE_ERR_ARG_PARSE; } da_free(argsp); // this only frees the array itself, not the things it points to @@ -143,14 +133,9 @@ int main(int argc, char **argv, char **envp){ if(err) return err; } - char *file_name_part; - if(src_file_path){ - // we are guaranteed a filename part, otherwise the fopen above would have failed - file_name_part = path_chop(src_file_path); - if(!sname) sname = file_name_part; - if(!sdir && file_name_part != src_file_path) sdir = src_file_path; // note the file name has been chopped from src_file_path - } - tranche_make(src_file, sname, mfile_fd, sdir, tdir); + if(sname)src_file_path = sname; + path_trim_slashes(tdir); + tranche_make(src_file, src_file_path, mfile_fd, tdir); { // deallocate resources instead of just existing, so as to catch any errors int err_cnt = 0; diff --git a/module/tranche/src/tranche.cli.c b/module/tranche/src/tranche.cli.c index 1e6ee60..a0fe798 100644 --- a/module/tranche/src/tranche.cli.c +++ b/module/tranche/src/tranche.cli.c @@ -18,29 +18,97 @@ the tranche output files before running tranche a second time. .. currently tranche_send will probably mess up if the user nests a tranche to the same file as one already open in the containing tranche .. + +.. should allow multiple source file args */ #include #include +#include #include #include "tranche.lib.h" int main(int argc, char **argv, char **envp){ - if(argc != 2){ - fprintf(stderr, "usage: %s \n",argv[0]); - return TRANCHE_ERR_ARG_PARSE; - } - FILE *file = fopen(argv[1], "r"); - if(!file){ - fprintf(stderr,"could not open file %s\n", argv[1]); - return TRANCHE_ERR_SRC_OPEN; + char *src_file_path = 0; + char *tdir = 0; + + { // argument parse + Da args; // we will queue the non option args here + Da *argsp = &args; + da_alloc(argsp, sizeof(char *)); + + int err_cnt = 0; + char **pt = argv; + char *option; + char *value; // currently all our tranche options have exactly one value + while(*pt){ + if( **pt == '-' ){ + option = *pt + 1; + if(!*option){ + fprintf(stderr, "Currently there is no lone '-' option.\n"); + err_cnt++; + goto endif; + } + pt++; if(!*pt || **pt == '-'){ + fprintf(stderr, "Missing value for option %s.\n", option); + err_cnt++; + if(!*pt) break; // then nothing more to parse + goto endif; + } + value = *pt; + if( !strcmp(option, "tdir") ){ + tdir = value; + goto endif; + } + fprintf(stderr, "Unrecognized option %s.", option); + err_cnt++; + goto endif; + } + // else clause + da_push(argsp, pt); + endif: + pt++; + } + int args_cnt = da_length(argsp); + if(args_cnt > 1) src_file_path = *(char **)da_index(argsp, 1); + + // arg contracts + if(args_cnt > 2){ + fprintf(stderr, "too many arguments\n"); + err_cnt++; + } + if(err_cnt > 0){ + fprintf(stderr, "usage: %s [] [-tdir ]\n", argv[0]); + return TRANCHE_ERR_ARG_PARSE; + } + da_free(argsp); // this only frees the array itself, not the things it points to + + }// end of argument parse + + FILE *src_file; + { //source and mfile open + if(!src_file_path) + src_file = stdin; + else + src_file = fopen(src_file_path, "r"); + + int err = 0; + if(!src_file){ + fprintf(stderr,"could not open tranche source file %s\n", src_file_path); + err+= TRANCHE_ERR_SRC_OPEN; + } + if(err) return err; } + Da targets; da_alloc(&targets, sizeof(int)); int fd = STDOUT_FILENO; da_push(&targets, &fd); - tranche_send(file, &targets); + if(tdir)chdir(tdir); + + tranche_send(src_file, &targets); + da_free(&targets); - fclose(file); + fclose(src_file); return 0; } diff --git a/module/tranche/src/tranche.lib.c b/module/tranche/src/tranche.lib.c index b27aaa6..aad290a 100644 --- a/module/tranche/src/tranche.lib.c +++ b/module/tranche/src/tranche.lib.c @@ -187,33 +187,23 @@ int tranche_target(FILE *src, Da *target_arrp){ return 0; } -// Inserts a zero to chop off the filename similar to the old basename. -// Returns a pointer to the first character after the inserted zero, i.e. to the filename. -char *path_chop(char *path){ - char *file = path + strlen(path); - if(file == path) return file; - file--; - if(file == path){ - if(*file == '.') file++; // lone '.' case - return file; - } - file--; - if(file == path){ - if(*file == '.' && *(file+1)=='.') file+=2; // lone '..' case - return file; - } - do{ - file--; - }while(file != path && *file != '/'); - if( *file == '/' ){ - *file = 0; - file++; +// replaces trailing slashes with zeros +void path_trim_slashes(char *path){ + if(!path || !*path) return; + char *pt = path + strlen(path) - 1; + loop: + if(*pt == '/'){ + *pt = 0; + if(pt != path){ + pt--; + goto loop; + } } - return file; + return; } // write a make file rule for making the tranche targets -void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *sdir, char *tdir){ +void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *tdir){ // target list Da ta; @@ -228,7 +218,7 @@ void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *sdir, char char tab = '\t'; char terminator = 0; - // output the dependency line ---------------------------------------- + // construct then output the dependency line ---------------------------------------- Da dla; Da *dlap=&dla; // dependency line array pointer da_alloc(dlap, sizeof(char)); @@ -244,10 +234,6 @@ void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *sdir, char } da_push(dlap, &colon); da_push(dlap, &sp); - if(sdir){ - da_push_string(dlap, sdir); - da_push(dlap, &slash); - } da_push_string(dlap, src_name); da_push(dlap, &newline); write(mfile_fd, dlap->base, dlap->end - dlap->base); @@ -258,6 +244,10 @@ void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *sdir, char da_rewind(dlap); // reuse the line buffer da_push(dlap, &tab); da_push_string(dlap, "tranche $<"); + if(tdir){ + da_push_string(dlap, " -tdir "); + da_push_string(dlap, tdir); + } da_push(dlap, &newline); da_push(dlap, &newline); write(mfile_fd, dlap->base, dlap->end - dlap->base); diff --git a/module/tranche/src/tranche.lib.h b/module/tranche/src/tranche.lib.h index 4ef4840..c847765 100644 --- a/module/tranche/src/tranche.lib.h +++ b/module/tranche/src/tranche.lib.h @@ -6,9 +6,9 @@ #define TRANCHE_ERR_DST_OPEN 4 #define TRANCHE_ERR_FCLOSE 8 -char *path_chop(char *path); +void path_trim_slashes(char *path); int tranche_send(FILE *src, Da *arg_fds); int tranche_target(FILE *src, Da *targets); -void tranche_make(FILE *src_file, char *src_file_name, int mfile_fd, char *sdir, char *tdir); +void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *tdir); #endif diff --git a/module/tranche/test/try/test1.sh b/module/tranche/test/try/test1.sh index c1140ca..0551905 100644 --- a/module/tranche/test/try/test1.sh +++ b/module/tranche/test/try/test1.sh @@ -1,10 +1,10 @@ #!/bin/bash -x ./tranche test1.dat >test1stdout.dat -diff test11.dat test11.dat.expected -diff test12.dat test12.dat.expected -diff test13.dat test13.dat.expected -diff test14.dat test14.dat.expected -diff test15.dat test15.dat.expected -diff test1stdout.dat test1stdout.dat.expected +diff -q test11.dat test11.dat.expected +diff -q test12.dat test12.dat.expected +diff -q test13.dat test13.dat.expected +diff -q test14.dat test14.dat.expected +diff -q test15.dat test15.dat.expected +diff -q test1stdout.dat test1stdout.dat.expected rm test11.dat test12.dat test13.dat test14.dat test15.dat test1stdout.dat diff --git a/module/tranche/test/try/test2.sh b/module/tranche/test/try/test2.sh index 1a4cf28..6ec2626 100644 --- a/module/tranche/test/try/test2.sh +++ b/module/tranche/test/try/test2.sh @@ -1,8 +1,8 @@ #!/bin/bash -x ./tranche test2.trc.c >test2stdout.dat -diff test2.c test2.c.expected -diff test2.h test2.h.expected -diff test2stdout.dat test2stdout.dat.expected +diff -q test2.c test2.c.expected +diff -q test2.h test2.h.expected +diff -q test2stdout.dat test2stdout.dat.expected rm test2.c test2.h diff --git a/module/tranche/test/try/test3.sh b/module/tranche/test/try/test3.sh index e655682..669739c 100644 --- a/module/tranche/test/try/test3.sh +++ b/module/tranche/test/try/test3.sh @@ -1,6 +1,6 @@ #!/bin/bash -x ./tranche-target test1.dat > test3.out -diff test3.out test3.out.expected +diff -q test3.out test3.out.expected rm test3.out diff --git a/module/tranche/test/try/test4.sh b/module/tranche/test/try/test4.sh index 49c7c4b..b40b49b 100644 --- a/module/tranche/test/try/test4.sh +++ b/module/tranche/test/try/test4.sh @@ -1,6 +1,6 @@ #!/bin/bash -x ./tranche-target test2.trc.c > test4.out -diff test4.out test4.out.expected +diff -q test4.out test4.out.expected rm test4.out diff --git a/tool/bin/tranche b/tool/bin/tranche index b105ce0cccd7aa7da717fad390101b2c0de178d3..06822653cc93c8a1adb89bf07cf673af137080b2 100755 GIT binary patch delta 12745 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 literal 37504 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 F{u6C2(oO&X delta 10413 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 diff --git a/tool/bin/tranche-target b/tool/bin/tranche-target index e9fd5ff3fd1ba8e2e3cbf264d7958c96738b498d..710e4c915fadfc106d93eec2746bfcea6a65ad99 100755 GIT binary patch delta 5242 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 delta 5515 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 diff --git a/tool/lib/makefile_cc b/tool/lib/makefile-cc similarity index 94% rename from tool/lib/makefile_cc rename to tool/lib/makefile-cc index 1fc00e6..d03d4e1 100755 --- a/tool/lib/makefile_cc +++ b/tool/lib/makefile-cc @@ -1,10 +1,9 @@ -# this makefile is usually called from via make from a local makefile +# This makefile is usually called through a local makefile rather than directly. - -#should add test that incdir is not pwd before deleting the include file in -#dist-clean currently make is looking for module.h while the include file is -#always module.lib.h so the lib include is not getting clobbered +# should add test that incdir is not pwd before deleting the include +# file. Currently it is working for us despite this problem because dist-clean is +# looking for $(module).h while the include file is always $(module).lib.h. SHELL=/bin/bash @@ -57,7 +56,7 @@ CC= -include makefile-flags -DEPFILE=$(TMPDIR)/makefile-dep +DEPFILE=$(TMPDIR)/makefile-cc.deps LIBFILE=$(LIBDIR)/lib$(MODULE).a INCFILE=$(INCDIR)/$(MODULE).h diff --git a/tool/lib/makefile-trc b/tool/lib/makefile-trc new file mode 100644 index 0000000..14b3c4f --- /dev/null +++ b/tool/lib/makefile-trc @@ -0,0 +1,37 @@ + +# This makefile is usually called through a local makefile rather than directly. +# The purpose of this makefile is to expand out the tranched C/CC sources, and +# otherwise to fall through to makefile_cc. + +SHELL=/bin/bash + +TRCDIR=trc + +# these are the sources edited by the programmer +TRC_FILE= $(wildcard $(TRCDIR)/*.trc.c) $(wildcard $(TRCDIR)/*.trc.cc) + +-include makefile-flags + +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tool/lib/makefile-cc +#MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tool/lib/makefile-cc + +DEPFILE=$(TMPDIR)/makefile-trc.deps + +all: version deps lib execs + +.PHONY: all version deps lib exec +all: version deps lib exec + +lib: + $(MAKE) $@ + +exec: + $(MAKE) $@ + +share: + if [ ! -z "$(wildcard $(EXECDIR)/*)" ]; then cp $(EXECDIR)/* $(PROJECT_SUBU)/tool/bin; fi + +%:: + $(MAKE) $@ + +dep: \ No newline at end of file diff --git a/tool/lib/makefile_trc b/tool/lib/makefile_trc deleted file mode 100644 index 7cbada4..0000000 --- a/tool/lib/makefile_trc +++ /dev/null @@ -1,175 +0,0 @@ - -# Ideally we would read the tranche sources and see what files they output, and then -# build the deps accordingly, but this makefile is more primitive approach. -# Here the programmer must have one output .c file or .cc file per input tranche -# file and it must be name .{lib,cli}.{c,cc} and the {.c,.cc} output -# tranche must be named .trc.{c,cc} - -# usually we have a bunch of source files and one target, here we have one source -# file, the tranch file, and a bunch of targets. - -# will re-orgnaize the directory structure .. will name the src-da .. etc. to the -# name of the module, then have a source dir inside that has only the stuff -# programmer's edit, then get rid of the numbers - -SHELL=/bin/bash - -TRCDIR=trc - -# these are the sources edited by the programmer -C_TRC_LIB= $(wildcard $(TRCDIR)/*.lib.c) -C_TRC_CLI= $(wildcard $(TRCDIR)/*.cli.c) -CC_TRC_LIB= $(wildcard $(TRCDIR)/*.lib.cc) -CC_TRC_CLI= $(wildcard $(TRCDIR)/*.cli.cc) - -#remove the suffix to get base name -C_BASE_LIB= $(sort $(patsubst %.lib.c, %, $(notdir $(C_SOURCE_LIB)))) -C_BASE_CLI= $(sort $(patsubst %.cli.c, %, $(notdir $(C_SOURCE_CLI)))) -CC_BASE_LIB= $(sort $(patsubst %.lib.cc, %, $(notdir $(CC_SOURCE_LIB)))) -CC_BASE_CLI= $(sort $(patsubst %.cli.cc, %, $(notdir $(CC_SOURCE_CLI)))) - -# the progreammer must name the c and cc tranches accordingly: -C_TRC_LIB= $(patasubst %, $(TMPDIR)/%.trc.c, C_BASE_LIB) -C_TRC_CLI= $(patasubst %, $(TMPDIR)/%.trc.c, C_BASE_CLI) -CC_TRC_LIB= $(patasubst %, $(TMPDIR)/%.trc.cc, CC_BASE_LIB) -CC_TRC_CLI= $(patasubst %, $(TMPDIR)/%.trc.cc, CC_BASE_CLI) - -# two sets of object files, one for the lib, and one for the command line interface progs -OBJECT_LIB= $(patsubst %, $(TMDIR)/%.o, $(C_BASE_LIB) $(CC_BASE_LIB)) -OBJECT_CLI= $(patsubst %, $(TMDIR)/%.o, $(C_BASE_CLI) $(CC_BASE_CLI)) - -# executables are made from CLI sources -EXEC= (patsubst %, $(EXECDIR)/%, $(C_BASE_CLI) $(CC_BASE_CLI)) - -#otherwise make provides default values for these -C= -CC= - --include makefile-flags - -DEPFILE=$(TMPDIR)/makefile_dep - -# a single space literal, for example if you wanted to subsitute commas to -# spaces: $(subst $(space),;,$(string)) we ran into this out of a need to send -# multiple separate command arguments to a shell script from one variable value -blank := -space :=$(blank) $(blank) - -all: version deps lib execs - -version: - @echo makefile version 3.0 - @echo "PWD: " $(PWD) - @echo "MAKEFILE_LIST: " $(MAKEFILE_LIST) - @echo "C: " $(C) - @echo "CFLAGS: " $(CFLAGS) - @echo "CC: " $(CC) - @echo "CCFLAGS: " $(CCFLAGS) - @echo "LINKFLAGS: " $(LINKFLAGS) - -info: - @echo "DEPDIR: " $(DEPDIR) - @echo "DOCDIR: " $(DOCDIR) - @echo "EXECSDIR: " $(EXECSDIR) - @echo "INCDIR: " $(INCDIR) - @echo "LIBDIR: " $(LIBDIR) - @echo "TESTDIR: " $(TESTDIR) - @echo "TMPDIR: " $(TMPDIR) - @echo "TOOLSDIR: " $(TOOLSDIR) - @echo "TRYDIR: " $(TRYDIR) - @echo "DEPSFILE: " $(DEPSFILE) - @echo "LIBFILE: " $(LIBFILE) - @echo "TRC_TRC: " $(TRC_TRC) - @echo "C_BASE_LIB: " $(C_BASE_LIB) - @echo "C_BASE_CLI: " $(C_BASE_CLI) - @echo "CC_BASE_LIB: " $(CC_BASE_LIB) - @echo "CC_BASE_CLI: " $(CC_BASE_CLI) - -# should be safe to run this in an already setup or partially setup directory -setup: - if [ ! -e $(DEPRDIR) ]; then mkdir $(DEPRDIR); fi - if [ ! -e $(DOCDIR) ]; then mkdir $(DOCDIR); fi - if [ ! -e $(EXECSDIR) ]; then mkdir $(EXECSDIR); fi - if [ ! -e $(INCDIR) ]; then mkdir $(INCDIR); fi - if [ ! -e $(LIBDIR) ]; then mkdir $(LIBDIR); fi - if [ ! -e $(SRCDIR) ]; then mkdir $(SRCDIR); fi - if [ ! -e $(TESTDIR) ]; then mkdir $(TESTDIR); fi - if [ ! -e $(TMPDIR) ]; then mkdir $(TMPDIR); fi - if [ ! -e $(TRYDIR) ]; then mkdir $(TRYDIR); fi - -dep: $(C_TRC_LIB) $(C_TRC_CLI) $(CC_TRC_LIB) $(CC_TRC_CLI) - if [ -z "$(CC)" ]; then\ - if [ -z "$C()" ]; then\ - echo "No compiler specified";\ - exit 1;\ - else\ - echo "C compiler only deps" ;\ - $(C) $(CFLAGS) -MM $(C_TRC_LIB) $(C_TRC_CLI) 1> $(DEPSFILE);\ - echo "deps for C linking";\ - for i in $(EXECS) ; do\ - $(ECHO) >> $(DEPSFILE);\ - $(ECHO) "$(EXECSDIR)/$$i : $$i.cli.o $(LIBDIR)/$(LIBFILE)" >> $(DEPSFILE);\ - $(ECHO) " $(C) -o $(EXECSDIR)/$$i $$i.cli.o $(LINKFLAGS)" >> $(DEPSFILE);\ - done;\ - fi;\ - else\ - $(CC) $(CCFLAGS) -MM $(CC_TRC_LIB) $(CC_TRC_CLI) 1> $(DEPSFILE);\ - if [ -z "$C()" ]; then\ - echo "CC compiler only deps" ;\ - else\ - echo "CC and C mixed compile deps" ;\ - $(C) $(CFLAGS) -MM $(C_TRC_LIB) $(C_TRC_CLI) 1>> $(DEPSFILE);\ - fi;\ - echo "deps for CC linking";\ - for i in $(EXECS) ; do\ - $(ECHO) >> $(DEPSFILE);\ - $(ECHO) "$(EXECSDIR)/$$i : $$i.cli.o $(LIBDIR)/$(LIBFILE)" >> $(DEPSFILE);\ - $(ECHO) " $(CC) -o $(EXECSDIR)/$$i $$i.cli.o $(LINKFLAGS)" >> $(DEPSFILE);\ - done;\ - fi - -lib: - make $(LIBDIR)/$(LIBFILE) - -$(LIBDIR)/$(LIBFILE) : $(OBJECTS_LIB) - ar rcs $(LIBDIR)/$(LIBFILE) $(OBJECTS_LIB) - -exec: $(LIBDIR)/$(LIBFILE) - make sub_exec - -sub_exec: $(patsubst %, $(EXECSDIR)/%, $(EXECS)) - -stage: - if [ -f $(LIBDIR)/$(LIBFILE) ]; then cp $(LIBDIR)/$(LIBFILE) $(PROJECT_SUBU)/stage/lib; fi - if [ -f $(INCDIR)/$(INCFILE) ]; then cp $(INCDIR)/$(INCFILE) $(PROJECT_SUBU)/stage/include; fi - -cp $(EXECSDIR)/* $(PROJECT_SUBU)/stage/bin - -clean: - for i in $(wildcard *~); do mv $$i $(TMPDIR); done - for i in $(wildcard *.lib.o) $(wildcard *.cli.o); do rm $$i; done - for i in $(EXECS); do if [ -e $(EXECSDIR)/$$i ]; then rm $(EXECSDIR)/$$i; fi; done - if [ -f $(LIBDIR)/$(LIBFILE) ]; then rm $(LIBDIR)/$(LIBFILE); fi - if [ -f $(DEPSFILE) ]; then rm $(DEPSFILE); fi - --include $(DEPSFILE) - -# recipes -# -%.trc.c : %.lib.c - $(TRANCHE) $< - -%.trc.c : %.cli.c - $(TRANCHE) $< - -%.trc.cc : %.lib.cc - $(TRANCHE) $< - -%.trc.cc : %.cli.cc - $(TRANCHE) $< - -%.o : %.c - $(C) $(CFLAGS) -c $< - -%.o : %.cc - $(CC) $(CCFLAGS) -c $< - -- 2.20.1