From c12594793067899f87b2f4c04f7856bb2df91a2a Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Fri, 22 Mar 2019 01:07:07 +0100 Subject: [PATCH] fleshing out src-tranche --- .../README.txt => doc/file_extentions.txt | 0 doc/src.txt | 9 ++ makefile | 4 +- src-0/0_makefile-flags | 2 +- src-0/1_tests/0_makefile_flags | 2 +- src-da/0_makefile | 2 - src-da/0_makefile-flags | 7 +- src-da/1_include/da.h | 6 +- src-da/1_lib/libda.a | Bin 0 -> 11602 bytes src-da/1_tests/0_makefile | 2 - src-da/1_tests/0_makefile-flags | 4 +- src-da/1_tests/results | 2 +- src-da/1_tests/test.dat | 3 + src-da/1_tests/test_da.cli.c | 33 +++-- src-da/1_tests/test_da.lib.c | 65 ++++++++- src-da/1_tests/test_da.lib.h | 6 +- src-da/1_tmp/makefile_deps | 1 + src-da/da.lib.c | 39 ++++- src-da/da.lib.h | 6 +- src-da/da.lib.o | Bin 0 -> 11296 bytes src-db/0_makefile-flags | 2 +- .../1_doc/return-from-transaction.txt | 0 src-tranche/0_makefile | 30 +--- src-tranche/0_makefile-flags | 11 +- src-tranche/1_deprecated/0_makefile | 40 ++++++ src-tranche/1_deprecated/0_makefile-flags | 31 ++++ src-tranche/1_tests/0_makefile | 14 ++ src-tranche/1_tests/0_makefile-flags | 33 +++++ src-tranche/tranche.c | 26 ---- src-tranche/tranche.cli.c | 6 + src-tranche/tranche.lib.c | 135 ++++++++++++++++++ src-tranche/tranche.lib.h | 8 ++ stage/include/da.h | 6 +- stage/lib/libda.a | Bin 9896 -> 11602 bytes {src-0/1_doc => tools/doc}/makefile.txt | 0 .../doc/makeheaders-notes.txt | 0 tools/lib/makefile_cc | 62 +++----- 37 files changed, 457 insertions(+), 140 deletions(-) rename src-0/1_doc/README.txt => doc/file_extentions.txt (100%) create mode 100644 doc/src.txt create mode 100644 src-da/1_lib/libda.a create mode 100644 src-da/1_tests/test.dat create mode 100644 src-da/1_tmp/makefile_deps create mode 100644 src-da/da.lib.o rename src-0/1_doc/sqlite.txt => src-db/1_doc/return-from-transaction.txt (100%) create mode 100644 src-tranche/1_deprecated/0_makefile create mode 100644 src-tranche/1_deprecated/0_makefile-flags create mode 100644 src-tranche/1_tests/0_makefile create mode 100644 src-tranche/1_tests/0_makefile-flags delete mode 100644 src-tranche/tranche.c create mode 100644 src-tranche/tranche.cli.c create mode 100644 src-tranche/tranche.lib.c create mode 100644 src-tranche/tranche.lib.h rename {src-0/1_doc => tools/doc}/makefile.txt (100%) rename src-0/1_doc/makeheaders.txt => tools/doc/makeheaders-notes.txt (100%) diff --git a/src-0/1_doc/README.txt b/doc/file_extentions.txt similarity index 100% rename from src-0/1_doc/README.txt rename to doc/file_extentions.txt diff --git a/doc/src.txt b/doc/src.txt new file mode 100644 index 0000000..902157b --- /dev/null +++ b/doc/src.txt @@ -0,0 +1,9 @@ + + src-da a simple doubling size expanding array in C + src-tranche splits source code into multiple files. A poor man's 'makeheaders'. +src-dispatch runs a function or shell command as a separate process + src-db sqlite schema and interface for subu + src-0 The layer 0 commands for subu. Some are setuid root programs. + src-py The application layer + + diff --git a/makefile b/makefile index 3531a77..f8e38f8 100755 --- a/makefile +++ b/makefile @@ -1,10 +1,10 @@ #subdirectories=$(shell /usr/bin/find . -maxdepth 1 -printf "%f " | sed y/\./\ /) -subdirectories=src +subdirectories=$(wildcard src-*) all : # $(foreach dir, $(subdirectories), \ # if [ -f $(dir)/0_makefile ]; then \ -# make -C $(dir) all && make -C $(dir) install; \ +# make -C $(dir) all && make -C $(dir) stage; \ # fi;\ # ) diff --git a/src-0/0_makefile-flags b/src-0/0_makefile-flags index c523d61..0da8b61 100644 --- a/src-0/0_makefile-flags +++ b/src-0/0_makefile-flags @@ -27,5 +27,5 @@ CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror LINKFLAGS=-L1_lib -lsubu -lsqlite3 -LIB_FILE=$(LIBDIR)/libsubu.a +LIBFILE=$(LIBDIR)/libsubu.a diff --git a/src-0/1_tests/0_makefile_flags b/src-0/1_tests/0_makefile_flags index 80ba0ee..8818691 100644 --- a/src-0/1_tests/0_makefile_flags +++ b/src-0/1_tests/0_makefile_flags @@ -27,5 +27,5 @@ CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror LINKFLAGS=-L$(PROJECT_SUBU)/src/$(LIBDIR) -L. -lsubu -lsqlite3 -lsubutests -LIB_FILE=$(LIBDIR)/libtests.a +LIBFILE=$(LIBDIR)/libtests.a diff --git a/src-da/0_makefile b/src-da/0_makefile index 4a9fffa..9835402 100644 --- a/src-da/0_makefile +++ b/src-da/0_makefile @@ -4,8 +4,6 @@ SHELL=/bin/bash -include 0_makefile-flags -MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile_cc - all: version deps lib execs lib: diff --git a/src-da/0_makefile-flags b/src-da/0_makefile-flags index 89d12f1..daa96bb 100644 --- a/src-da/0_makefile-flags +++ b/src-da/0_makefile-flags @@ -20,12 +20,13 @@ TMPDIR=1_tmp TOOLSDIR=$(realpath $(PROJECT_SUBU)/tools) TRYDIR=1_try - # compiler and flags CC=gcc CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror LINKFLAGS=-L1_lib -lda -LIB_FILE=libda.a -INC_FILE=da.h +LIBFILE=libda.a +INCFILE=da.h + +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tools/lib/makefile_cc diff --git a/src-da/1_include/da.h b/src-da/1_include/da.h index e6a3af2..d5ba4db 100644 --- a/src-da/1_include/da.h +++ b/src-da/1_include/da.h @@ -15,13 +15,17 @@ typedef struct Da{ { da_map(dap, da_free, NULL); return r; } void da_alloc(Da *dap, size_t item_size); +void da_free(Da *dap); +void da_rewind(Da *dap); char *da_expand(Da *dap); void da_rebase(Da *dap, char *old_base, void *pta); bool da_endq(Da *dap, void *pt); bool da_boundq(Da *dap); void da_push(Da *dap, void *item); +bool da_pop(Da *dap, void *item); void da_map(Da *dap, void f(void *, void *), void *closure); -void da_free(void *pt, void *closure); +void da_free_elements(Da *dap); +char *da_fgets(Da *dap, FILE *fd); #endif diff --git a/src-da/1_lib/libda.a b/src-da/1_lib/libda.a new file mode 100644 index 0000000000000000000000000000000000000000..db52b0b9598e64bd8f47ec7d30b1bcbaf73b0838 GIT binary patch literal 11602 zcmb_i3v3+6d7i!F@RskVL{gN@lWkd2EZ*@U(V|UJC(4wLmTb|k2+OhL#X%yA|1z;m724Ui^lw1R6<#6Dw-2w zRyzL2$eYUKsWq3+%_1_FnZqg-6&0F|SV=2orR^Nz(=(Q61d@rVKt}c2-P^5$gLm}# z<-511XP^f<-rL(ZI3W5vS^d=L{yiSUfX>QduwhoD6v~)?W3e3)%@Av4Eo>rOxEx;m zS!1|x;##`&j5kVt2;|@RK;VVfB#St*DvXbo#D z0c?mEDy0P8AOX_W1lSi@yF&RWoB$*bIuj5RN{aX(Mi#yuJ&710FigS~5d#Pm8qc^= z;S5vA3=fW8X?Rv8;<`Lhy0E`*V#*xJ>qcBC>YtCr_*}`)XlR52Gv2gv8n69t5z;a2!7LLx+}OD4`dm{qD-!(jo>XMhZi~v|r2ro0_YuA;*)u1+xJ#hR$Q|P23USgMHMYgB0d?Flq`&X{Nc^vXC^)t;T3+MENC*P zM?YS?wql#2uFik|jnOMI1o*TV!jmc*op?V=>6%tbKpT{&9Z*YQ=5!{1(3aeI9Y)|KWS5U4bf zQH$e-an<2mL39`h5=#}E^UxHs&nnp#RxcC^^mt@jGpYQaE_qduH=sys;zcWnBmd011 zsF4&NJxjBzW6Vg2gnO3al9wfN67qlnw+W4?_>QpIk1r_3*&jO2qMg#&ENd66Be*vb zrHg9gY#V&jt#dXrj@*Jn56(M~XB_F4=;P^uGo;syOedoq#X%6Fix$|5z4vxrKMVdYUe39pq-D3fC*N_v(u zuy{a*Rk}u;PT;qN#W>r+mC2E2N|!V_vQA}St&kipiRlwU9S!Vr3=GrY&N8VnSfa7c z(KzjB3@Vpm2nHRGLe}VW!rkfUe(dP>si`Ex?d!t12U!PGQD*c7-C6IiMm-o@IhnSK z3G7+I$%I-m=^ILB?|H}NEQBGGzG0QjP*|F|jm(hMjWo2AlDmnxha|a~xZ{+Zu9D;w zC*+?y-nv@U^p)x8bkecLiS12Cy3EclR!jW!MiDx&VEu+bi#)TG(aaQ)Z zNkt*k+|-4OBBlPGNjx;-?32UCTM9-6^}1Hilp7&|*uhc+9exj%KixGJ^SB zHVDVO;7lwQoZmhW8Q9vLwc@i;yE~ak=jVglgNbx3nU7mch!PQ;O27&6IwWWxpR-DF z1_w%Uj*MX>IXfP=rUSEh7!^HXpMid&c&U0sy}f#TIBJG62G&nLD0~SlMhc zk+Y>5S)N79jBjRDGATfK8x7ukl{a1Bb+7P-MP6qHcvGI&+T2*=t9S643*2k-xSy_Z~Vu(=-`4xz)F zh3@JFezVQjEpR@>Z)ctg;}G{kPZq!r z-nzi+7r5_TUXRK)zX>bAWL5oBjB==-SD8Dwd7kqiuZ316#1Q5t7=Dy*+sVCGF*jYq z;MvS$^XA>W>ME}}&wa0O5C<)v8RYyGUVA5cZkKVkU^T>jhq*V;t3kln=kdUVi$pTh z(-E6R#ty*sMKm6nv$HG`n~f&YESGrP0v236Sn?JllAFzB?Wz1Uv#o3@k&fCK5C%Qu#mC4S{TKQZsm!HZ>bZ2@z!?v3wTnC-bSa zz?G{=CK<0obD(d9=x`da$T2%Qm9$if z(Y*{yI0ad}eUp<5Wd^oFOlm@aS@Ct0=3dOF$XqnOjYab5e9nsZVG87!(&9=n7Vq)I z_Y#dA&CkiP!|X`2*cY5UxR7G(^19E}pJM)0hQ-Ap+q--Bo&HTQ&YS3edH{~_XwGls)|(%~N_{sSfY_d5J1h=0TW6TjcBpDxD#D)Gf((eZy=3ZPDz zf+`j4qm?o&_*o}|8qF0=itBNs>>}(C;L@V}yT| zaCHL3xrX-NBwWS+G~xe4xcFuO!;>V+KT12lMWC@f4-eu$CtQ3Zfc*vGkI?)Pb04sm z2wx&x%z40GhNoP=VA(9c?iPOwB765A7}>Qya$wJ%KN>w4Ik;Pebrv!K)1H-*4dN7fTL7D2O-1qwq?~yDq=Qg|BwWZ+GEtJDX`d z&<-BHmHn^_ciVaY2Ka+CPI{bAy709w`=52;a6WYW{+$cQIj-XQXBUp&gu<6yxLclM zAW*P!%d4|Hu3PR^NUbD@OiHiysJ}0CY!_y!ZRHsx4db4;-JK|=L z=zt4HADAO7YCb5x4^uq%NVXHtJ4D~F;rLx)IV3Ab{v`@3qTy%B{i=*wTpd?;3uQ=t~-Y z8^!Z;4L?u#uQWVGdGk@N;>1gAEUg+oB4M^(!!Hva(D0XuzDvWi6i-;gw-P>~;pZrx zDGgWiJEP&a{$f#k8P%^4*(qr9RYX6h;U7se>@PL^L$dRA4euuTZ)*4ti2f%HUq$r0 z8vbWw=O-HeWy;S-8h)Da-)Z=LMAuNfDi6CzzFouBdb&Z!NxomhD+u4I;U|gStKmHq zPg=u&OZ`2r;r~kX=QUi-r@zwh`-uKq4Zok_{Fa7)isHGf;mY4{HGG2THnOMk`8?UV zRl|Qp@;fyA3q*&hMs*Zb`-mqr`IpH43mSe0XTtK|15gsb?~{;`_Nj;lNKTUaiP?J~t+|Oz92Ppr~ zYVvBo{0&WB&7aE}-bMZWwT9n9_A6;4qT>HH;adn-dH5W~f0u?UzxQZ(obvOKhA&V& z2@T&!_HDvdJm)B$FKY7ZNdC*3{3()uOOyX5#q+i%f0*QdsmcF{U{md1+e!E~!s#<7l(7S}-Z}s^bpKlbN1K1B z{s8FeHqn*x-{U@Pm67cQtX%(1ObnD|Iy7PbaY@ztKLS`e|4+eRDzW@nV`?Ou02v)a zy+`Ws%~+4DoVPAJ4xDoFU%FMQD1D3{W7p$P0H)hS%|9Xk_)j$MqRYmCS?-3~j17p(#pJqpZKHO$_B<)h9u$oc=p_xQEg$E9b5BR9yg$YCA&E@Td!G zH&{j%&%3CvrHPrOzpNQo{a0qc0F83_+eG;rCwEkfQwI-3$I> mk*<%^TT3w@pid6IC8**{>kh-X%IVMJ!T{w(SvhZA|9=6ya=I=6 literal 0 HcmV?d00001 diff --git a/src-da/1_tests/0_makefile b/src-da/1_tests/0_makefile index 18e886d..8b6f67c 100644 --- a/src-da/1_tests/0_makefile +++ b/src-da/1_tests/0_makefile @@ -4,8 +4,6 @@ SHELL=/bin/bash -include 0_makefile-flags -MAKE=/usr/bin/make -f $(PROJECT_SUBU)/tools/lib/makefile_cc - all: version deps lib execs %:: diff --git a/src-da/1_tests/0_makefile-flags b/src-da/1_tests/0_makefile-flags index b00890c..4b8fa2c 100644 --- a/src-da/1_tests/0_makefile-flags +++ b/src-da/1_tests/0_makefile-flags @@ -27,5 +27,7 @@ CFLAGS=-std=gnu11 -fPIC -I. -I../1_include -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -I../1_include -Werror LINKFLAGS=-L. -L../1_lib -ltests -lda -LIB_FILE=libtests.a +LIBFILE=libtests.a +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tools/lib/makefile_cc + diff --git a/src-da/1_tests/results b/src-da/1_tests/results index 313ae95..9e59b33 100644 --- a/src-da/1_tests/results +++ b/src-da/1_tests/results @@ -1 +1 @@ -passed all 2 tests +passed all 4 tests diff --git a/src-da/1_tests/test.dat b/src-da/1_tests/test.dat new file mode 100644 index 0000000..6b4b5bd --- /dev/null +++ b/src-da/1_tests/test.dat @@ -0,0 +1,3 @@ +this is a test +ends without a newline +(setq mode-require-final-newline nil) \ No newline at end of file diff --git a/src-da/1_tests/test_da.cli.c b/src-da/1_tests/test_da.cli.c index e69a73a..bee5a6c 100644 --- a/src-da/1_tests/test_da.cli.c +++ b/src-da/1_tests/test_da.cli.c @@ -9,17 +9,28 @@ int main(){ unsigned int passed = 0; unsigned int failed = 0; - if( !test_da_0() ){ - failed++; - printf("test_da_0 failed\n"); - }else - passed++; - - if( !test_da_1() ){ - failed++; - printf("test_da_1 failed\n"); - }else - passed++; + // enumeration of tests + typedef bool (*test_fun)(); + test_fun tests[] = {test_da_0, test_da_1, test_da_2, test_da_3, NULL}; + char *test_names[] = {"test_da_0", "test_da_1", "test_da_2", "test_da_3", NULL}; + + // call tests + test_fun *tfp = tests; + char **tnp = test_names; + while(*tfp){ + if( !(*tfp)() ){ + failed++; + if(*tnp) + printf("%s failed\n", *tnp); + else + fprintf(stderr, "internal error, no test_names[] entry for test\n"); + }else + passed++; + tfp++; + tnp++; + } + + // summarize results if( passed == 0 && failed == 0) printf("no tests ran\n"); diff --git a/src-da/1_tests/test_da.lib.c b/src-da/1_tests/test_da.lib.c index 490d6dd..4657c3d 100644 --- a/src-da/1_tests/test_da.lib.c +++ b/src-da/1_tests/test_da.lib.c @@ -3,13 +3,15 @@ Tests for Da. */ +#include +#include #include #include #include "test_da.lib.h" - -int test_da_0(){ +// tests push +bool test_da_0(){ Da da; da_alloc(&da, sizeof(int)); // leaves room for 4 ints int i = 0; @@ -36,7 +38,8 @@ int test_da_0(){ return f0 && f1 && f2 && f3; } -int test_da_1(){ +// tests manual expansion +bool test_da_1(){ Da da; da_alloc(&da, sizeof(int)); // leaves room for 4 ints int i = 0; @@ -68,4 +71,60 @@ int test_da_1(){ return f0 && f1 && f2 && f3; } +// da_fgets +bool test_da_2(){ + + FILE *fd = fopen("test.dat","r"); + + Da da; + da_alloc(&da, sizeof(char)); + + da_fgets(&da, fd); + bool f0 = !strcmp(da.base, "this is a test"); + + char *old_base; + da_pop(&da, NULL); // pop the prior null terminator + char *s1 = da.end; + old_base = da_fgets(&da,fd); + da_rebase(&da, old_base, &s1); + bool f1 = !strcmp(s1, "ends without a newline"); + + da_pop(&da, NULL); // pop the prior null terminator + char *s2 = da.end; + old_base = da_fgets(&da,fd); + da_rebase(&da, old_base, &s2); + bool f2 = !strcmp(s2, "(setq mode-require-final-newline nil)"); + + bool f3 = !strcmp(da.base, "this is a testends without a newline(setq mode-require-final-newline nil)"); + + fclose(fd); + return f0 && f1 && f2 && f3; +} + +// da_fgets +bool test_da_3(){ + + FILE *fd = fopen("test.dat","r"); + + Da da; + da_alloc(&da, sizeof(int)); + + int i = 5; + da_push(&da, &i); + i++; + da_push(&da, &i); + i++; + da_push(&da, &i); + + int j; + bool f0 = da_pop(&da, &j) && j == 7; + bool f1 = da_pop(&da, &j) && j == 6; + bool f2 = da_pop(&da, NULL); + bool f3 = !da_pop(&da, &j); + + return f0 && f1 && f2 && f3; +} + + + diff --git a/src-da/1_tests/test_da.lib.h b/src-da/1_tests/test_da.lib.h index 3b8975e..686b0d0 100644 --- a/src-da/1_tests/test_da.lib.h +++ b/src-da/1_tests/test_da.lib.h @@ -1,7 +1,9 @@ #ifndef DA_LIB_H #define DA_LIB_H -int test_da_0(); -int test_da_1(); +bool test_da_0(); +bool test_da_1(); +bool test_da_2(); +bool test_da_3(); #endif diff --git a/src-da/1_tmp/makefile_deps b/src-da/1_tmp/makefile_deps new file mode 100644 index 0000000..905b038 --- /dev/null +++ b/src-da/1_tmp/makefile_deps @@ -0,0 +1 @@ +da.lib.o: da.lib.c da.lib.h diff --git a/src-da/da.lib.c b/src-da/da.lib.c index 7ac3935..5e51d43 100644 --- a/src-da/da.lib.c +++ b/src-da/da.lib.c @@ -20,6 +20,17 @@ void da_alloc(Da *dap, size_t item_size){ dap->base = malloc(dap->size); dap->end = dap->base; } +void da_free(Da *dap){ + free(dap->base); + dap->size = 0; +} +void da_rewind(Da *dap){ + dap->end = dap->base; +} + +bool da_empty(Da *dap){ + return dap->end == dap->base; +} // Doubles size of of da. Returns old base, so that existing pointers into the // array can be moved to the new array @@ -58,6 +69,15 @@ void da_push(Da *dap, void *item){ dap->end += dap->item_size; } +bool da_pop(Da *dap, void *item){ + bool flag = dap->end >= dap->base + dap->item_size; + if( flag ){ + dap->end -= dap->item_size; + if(item) memcpy(item, dap->end, dap->item_size); + } + return flag; +} + // passed in f(item_pt, arg_pt) // We have no language support closures, so we pass in an argument for it. // The closure may be set to NULL if it is not needed. @@ -70,15 +90,22 @@ void da_map(Da *dap, void f(void *, void *), void *closure){ } // da_lists are sometimes used as resource managers -void da_free(void *pt, void *closure){ +static void da_free_element(void *pt, void *closure){ free(pt); } +void da_free_elements(Da *dap){ + da_map(dap, da_free_element, NULL); + da_rewind(dap); +} + + // Puts text from a line into buffer *dap. Does not push EOF or '\n' into the -// buffer. Returns the line terminator, which will either be EOF or '\n'. This -// will not work very well if the line gets very long, as da doubles in size at -// buffer overrun. items_size for dap must be sizeof(char). -int da_fgets(Da *dap, FILE *fd){ +// buffer. Returns the old_base so that external pointers can be rebased. +// It is possible that the the base hasn't changed. Use feof(FILE *stream) to +// test for EOF; +char *da_fgets(Da *dap, FILE *fd){ + char *old_base = dap->base; int c = fgetc(fd); while( c != EOF && c != '\n' ){ da_push(dap, &c); @@ -86,5 +113,5 @@ int da_fgets(Da *dap, FILE *fd){ } int terminator = 0; da_push(dap, &terminator); - return c; + return old_base; } diff --git a/src-da/da.lib.h b/src-da/da.lib.h index e6a3af2..d5ba4db 100644 --- a/src-da/da.lib.h +++ b/src-da/da.lib.h @@ -15,13 +15,17 @@ typedef struct Da{ { da_map(dap, da_free, NULL); return r; } void da_alloc(Da *dap, size_t item_size); +void da_free(Da *dap); +void da_rewind(Da *dap); char *da_expand(Da *dap); void da_rebase(Da *dap, char *old_base, void *pta); bool da_endq(Da *dap, void *pt); bool da_boundq(Da *dap); void da_push(Da *dap, void *item); +bool da_pop(Da *dap, void *item); void da_map(Da *dap, void f(void *, void *), void *closure); -void da_free(void *pt, void *closure); +void da_free_elements(Da *dap); +char *da_fgets(Da *dap, FILE *fd); #endif diff --git a/src-da/da.lib.o b/src-da/da.lib.o new file mode 100644 index 0000000000000000000000000000000000000000..979ccb8c50e62de2d9e5704a63517e4f5ab51778 GIT binary patch literal 11296 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 literal 0 HcmV?d00001 diff --git a/src-db/0_makefile-flags b/src-db/0_makefile-flags index c523d61..0da8b61 100644 --- a/src-db/0_makefile-flags +++ b/src-db/0_makefile-flags @@ -27,5 +27,5 @@ CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror LINKFLAGS=-L1_lib -lsubu -lsqlite3 -LIB_FILE=$(LIBDIR)/libsubu.a +LIBFILE=$(LIBDIR)/libsubu.a diff --git a/src-0/1_doc/sqlite.txt b/src-db/1_doc/return-from-transaction.txt similarity index 100% rename from src-0/1_doc/sqlite.txt rename to src-db/1_doc/return-from-transaction.txt diff --git a/src-tranche/0_makefile b/src-tranche/0_makefile index b8c7b9d..b30d8fb 100644 --- a/src-tranche/0_makefile +++ b/src-tranche/0_makefile @@ -1,37 +1,11 @@ -# src/0_makefile +# src-da/0_makefile 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 - -SOURCES=$(wildcard *.c) -HFILES=$(wildcard *.h) +-include 0_makefile-flags all: version deps lib execs -version: - $(MAKE) $@ - @echo "SUID_TOOL: " $(SUID_TOOL) - -deps: - makeheaders $(SOURCES) $(HFILES) - sed -i '/^ *int *main *(.*)/d' *.h - $(MAKE) $@ - -execs: - $(MAKE) $@ - @echo "-> $(SUID_TOOL) $(EXECSDIR)/subu-mk-0 $(EXECSDIR)/subu-rm-0 $(EXECSDIR)/subu-bind-all" - cat $(SUID_TOOL) - @echo -n "Are you sure? [y/N] " && read ans && [ $${ans:-N} == y ] - sudo $(SUID_TOOL) $(EXECSDIR)/subu-mk-0 $(EXECSDIR)/subu-rm-0 $(EXECSDIR)/subu-bind-all - -clean: - $(MAKE) $@ - for i in $(HFILES); do rm $$i; done - %:: $(MAKE) $@ diff --git a/src-tranche/0_makefile-flags b/src-tranche/0_makefile-flags index c523d61..2c44f58 100644 --- a/src-tranche/0_makefile-flags +++ b/src-tranche/0_makefile-flags @@ -13,19 +13,20 @@ ECHO= echo DEPRDIR=1_deprecated DOCDIR=1_doc EXECSDIR=1_execs -HDIR=1_headers +INCDIR=1_include LIBDIR=1_lib TESTDIR=1_tests TMPDIR=1_tmp TOOLSDIR=$(realpath $(PROJECT_SUBU)/tools) TRYDIR=1_try - # compiler and flags CC=gcc -CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB +CFLAGS=-std=gnu11 -fPIC -I. -I$(PROJECT_SUBU)/stage/include -ggdb -Werror -DDEBUG -DDEBUGDB #CFLAGS=-std=gnu11 -fPIC -I. -Werror -LINKFLAGS=-L1_lib -lsubu -lsqlite3 +LINKFLAGS=-L1_lib -lda -LIB_FILE=$(LIBDIR)/libsubu.a +LIBFILE=libtranche.a +INCFILE=tranche.h +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tools/lib/makefile_cc diff --git a/src-tranche/1_deprecated/0_makefile b/src-tranche/1_deprecated/0_makefile new file mode 100644 index 0000000..b8c7b9d --- /dev/null +++ b/src-tranche/1_deprecated/0_makefile @@ -0,0 +1,40 @@ +# src/0_makefile + +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 + +SOURCES=$(wildcard *.c) +HFILES=$(wildcard *.h) + +all: version deps lib execs + +version: + $(MAKE) $@ + @echo "SUID_TOOL: " $(SUID_TOOL) + +deps: + makeheaders $(SOURCES) $(HFILES) + sed -i '/^ *int *main *(.*)/d' *.h + $(MAKE) $@ + +execs: + $(MAKE) $@ + @echo "-> $(SUID_TOOL) $(EXECSDIR)/subu-mk-0 $(EXECSDIR)/subu-rm-0 $(EXECSDIR)/subu-bind-all" + cat $(SUID_TOOL) + @echo -n "Are you sure? [y/N] " && read ans && [ $${ans:-N} == y ] + sudo $(SUID_TOOL) $(EXECSDIR)/subu-mk-0 $(EXECSDIR)/subu-rm-0 $(EXECSDIR)/subu-bind-all + +clean: + $(MAKE) $@ + for i in $(HFILES); do rm $$i; done + +%:: + $(MAKE) $@ + + + + diff --git a/src-tranche/1_deprecated/0_makefile-flags b/src-tranche/1_deprecated/0_makefile-flags new file mode 100644 index 0000000..0da8b61 --- /dev/null +++ b/src-tranche/1_deprecated/0_makefile-flags @@ -0,0 +1,31 @@ + +# some versions of Linux need a -e option others complain if there is a -e .. and it isn't the binary for echo .. +ECHO= echo +#ECHO= echo -e + +# directories used by this makefile, these could all be set to dot for +# the simplest source directory structure + +#LIDBIR, EXECSDIR, HDIR hold the make results that might later be staged +#$(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=1_deprecated +DOCDIR=1_doc +EXECSDIR=1_execs +HDIR=1_headers +LIBDIR=1_lib +TESTDIR=1_tests +TMPDIR=1_tmp +TOOLSDIR=$(realpath $(PROJECT_SUBU)/tools) +TRYDIR=1_try + + +# compiler and flags +CC=gcc +CFLAGS=-std=gnu11 -fPIC -I. -ggdb -Werror -DDEBUG -DDEBUGDB +#CFLAGS=-std=gnu11 -fPIC -I. -Werror +LINKFLAGS=-L1_lib -lsubu -lsqlite3 + +LIBFILE=$(LIBDIR)/libsubu.a + diff --git a/src-tranche/1_tests/0_makefile b/src-tranche/1_tests/0_makefile new file mode 100644 index 0000000..8b6f67c --- /dev/null +++ b/src-tranche/1_tests/0_makefile @@ -0,0 +1,14 @@ +# src-da/1_tests/0_makefile + +SHELL=/bin/bash + +-include 0_makefile-flags + +all: version deps lib execs + +%:: + $(MAKE) $@ + + + + diff --git a/src-tranche/1_tests/0_makefile-flags b/src-tranche/1_tests/0_makefile-flags new file mode 100644 index 0000000..c990581 --- /dev/null +++ b/src-tranche/1_tests/0_makefile-flags @@ -0,0 +1,33 @@ + +# some versions of Linux need a -e option others complain if there is a -e .. and it isn't the binary for echo .. +ECHO= echo +#ECHO= echo -e + +# directories used by this makefile, these could all be set to dot for +# the simplest source directory structure + +#LIDBIR, EXECSDIR, HDIR hold the make results that might later be staged +#$(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= +DOCDIR= +EXECSDIR=. +INCDIR=. +LIBDIR=. +TESTDIR=. +TMPDIR=1_tmp +TOOLSDIR=$(realpath $(PROJECT_SUBU)/tools) +TRYDIR= + + +# compiler and flags +CC=gcc +CFLAGS=-std=gnu11 -fPIC -I. -I../1_include -ggdb -Werror -DDEBUG -DDEBUGDB +#CFLAGS=-std=gnu11 -fPIC -I. -I../1_include -Werror +LINKFLAGS=-L. -L../1_lib -ltests -lda + +LIBFILE=libtranche.a +MAKE=/usr/bin/make --no-print-directory -f $(PROJECT_SUBU)/tools/lib/makefile_cc + + diff --git a/src-tranche/tranche.c b/src-tranche/tranche.c deleted file mode 100644 index b61cf26..0000000 --- a/src-tranche/tranche.c +++ /dev/null @@ -1,26 +0,0 @@ -/* -The purpose of this tools is to facilitate putting prototypes (declarations) next -to implementations (definitions) in a single source file of a C/C++ programs. - -Splits a single source file into multiple files. Scans through the single -source file looking for lines of the form: - - #tranche filename ... - -With the # mandatory at column 1 (like the old C preprocessor). Upon finding -such a line, copies all following lines into the listed files, until reaching the -end marker: - - #endtranche - -A next improvement of this file would be to support variables to be passed in, -as per a make file. - -*/ - - -void tranche(FILE *file){ - - - -} diff --git a/src-tranche/tranche.cli.c b/src-tranche/tranche.cli.c new file mode 100644 index 0000000..eb0fa3e --- /dev/null +++ b/src-tranche/tranche.cli.c @@ -0,0 +1,6 @@ + + +int main(int argc, char **argv, char **envp){ + + +} diff --git a/src-tranche/tranche.lib.c b/src-tranche/tranche.lib.c new file mode 100644 index 0000000..07b0165 --- /dev/null +++ b/src-tranche/tranche.lib.c @@ -0,0 +1,135 @@ +/* +The purpose of this tools is to facilitate putting prototypes (declarations) next +to implementations (definitions) in a single source file of a C/C++ programs. + +Splits a single source file into multiple files. Scans through the single +source file looking for lines of the form: + + #tranche filename ... + +With the # as the first non-space character on the line, and only filename +following the tag. Upon finding such a line, copies all following lines into the +listed files, until reaching the end marker: + + #endtranche + +A next improvement of this file would be to support variables to be passed in +for the file names. As it stands, changing the file name requires editing +the source file. + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +//-------------------------------------------------------------------------------- +// parsing + +char tranche_begin_tag[] = "#tranche"; +size_t tranche_begin_tag_len = 8; + +char tranche_end_tag[] = "#endtranche"; +size_t tranche_end_tag_len = 11; + +// given a line +// returns beginning of file name list +static char *is_tranche_begin(char *pt){ + while( *pt && isspace(*pt) ) pt++; + if(!*pt) return NULL; + if( strncmp(pt, tranche_begin_tag, tranche_begin_tag_len) ) return NULL; + return pt + tranche_begin_tag_len; +} + +static char *is_tranche_end(char *pt){ + while( *pt && isspace(*pt) ) pt++; + if(!*pt) return NULL; + if( strncmp(pt, tranche_end_tag, tranche_end_tag_len) ) return NULL; + return pt + tranche_end_tag_len; +} + +static bool parse_file_list(Da *file_names, char *pt0){ + char *pt1; + while( *pt0 && isspace(*pt0) ) pt0++; + while( *pt0 ){ + pt1 = pt0; + while( *pt1 && !isspace(pt1) ) pt1++; + char *file_name = strndup(pt0, pt1 - pt0); + da_push(file_names, file_name); + pt0 = pt1; + while( *pt0 && isspace(*pt0) ) pt0++; + } +} + + + +//-------------------------------------------------------------------------------- +// da_map calls + +static void tranche_open_fd(void *fn, void *closure){ + char *file_name = (char *)fn; + Da *fds = (Da *)closure; + int fd = open(fn, O_CREAT | O_APPEND); + if(fd == -1){ + fprintf(stderr, "Could not open file %s\n", file_name); + return; + } + da_push(fds, &fd); + return; +} +static void tranche_open_fds(Da *fns, Da *fds){ + da_map(fns, tranche_open_fd, fds); +} + +static void tranche_close_fd(void *fd, void *closure){ + close(*(int *)fd); +} +static void tranche_close_fds(Da *fds){ + da_map(fds, tranche_close_fd, NULL); +} + +static void tranche_puts(void *fd, void *string){ + write(*(int *)fd, string, strlen(string)); +} +static void tranche_puts_all(Da *fds, char *string){ + da_map(fds, tranche_puts, string); +} + +//-------------------------------------------------------------------------------- +// + +int tranche_send(FILE *src, Da *arg_fds){ + char *pt; + Da line; + Da file_names; + Da fds; + da_alloc(&line, sizeof(char)); + da_alloc(&file_names, sizeof(char *)); + da_alloc(&fds, sizeof(int)); + + da_fgets(&line, src); + while( !feof(src) && !is_tranche_end(line.base) ){ + pt = is_tranche_begin(line.base); + if(pt){ // then this line is the start of a nested tranche block + parse_file_list(&file_names, pt); + tranche_open_fds(&file_names, &fds); + da_free_elements(&file_names); + tranche_send(src, &fds); + tranche_close_fds(&fds); + }else{ + tranche_puts_all(arg_fds, line.base); + da_rewind(&line); + da_fgets(&line, src); + } + } + + da_free(&line); + da_free(&file_names); + da_free(&fds); + return 0; +} diff --git a/src-tranche/tranche.lib.h b/src-tranche/tranche.lib.h new file mode 100644 index 0000000..27990a6 --- /dev/null +++ b/src-tranche/tranche.lib.h @@ -0,0 +1,8 @@ +#ifndef TRANCHE_LIB_H +#define TRANCHE_LIB_H + +int tranche_send(FILE *src, Da *arg_fds); + + + +#endif diff --git a/stage/include/da.h b/stage/include/da.h index e6a3af2..d5ba4db 100644 --- a/stage/include/da.h +++ b/stage/include/da.h @@ -15,13 +15,17 @@ typedef struct Da{ { da_map(dap, da_free, NULL); return r; } void da_alloc(Da *dap, size_t item_size); +void da_free(Da *dap); +void da_rewind(Da *dap); char *da_expand(Da *dap); void da_rebase(Da *dap, char *old_base, void *pta); bool da_endq(Da *dap, void *pt); bool da_boundq(Da *dap); void da_push(Da *dap, void *item); +bool da_pop(Da *dap, void *item); void da_map(Da *dap, void f(void *, void *), void *closure); -void da_free(void *pt, void *closure); +void da_free_elements(Da *dap); +char *da_fgets(Da *dap, FILE *fd); #endif diff --git a/stage/lib/libda.a b/stage/lib/libda.a index 2b84557bec2393b8407c4b1e19c9161cdd1d4427..db52b0b9598e64bd8f47ec7d30b1bcbaf73b0838 100644 GIT binary patch literal 11602 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 literal 9896 zcmbVS32a=&8J@T6@jl;oV#f(=!jYKZU0*nMaLC5N$vO$d30OEZ>1MtA>|NNy>=A54 zRAd8Uo1!MA1=?B-Dk_asQlYj|A%Ql678=?jL=Vz}+Vn^jK`RBNQlmDI{{PHByKg6s zs5;WVng9FG`Dfm|nX#7-1XH2NE#+Q!ap}D2rtZ$J&W^4gx4T2I>`%A5vrE!$_ug{G zSQ-3Y{7zoB<$q<8vH9Zwfgt3*f#)D}~V2SX3SdS;O)SAksBZ$O%;EFm~C zX=Tz35Kk;R?n$cH?J@WC_pj-4%V%dtM{fs&+uz&MCwsZK{BuLwHaQFfLYBo~x3B`G zP{v+x7ur72^sz?Pz()PKGyb{1*ZOn&FZgrWbN&NE7yJiC&-rsB&CovQf4uP#6c>1I zq*n5MApgc$f#+V8EaJ#2H)0+<`5M{o0NbZP2!11`teL; z!RGb@k_DYn2m~cXd=Mk^uSQQIMhFahc}|*xtkoXeBl}vEL!asIA39g_#0eWyBv*I` zn-~OC*x#S|`(G_cUN#(8&`4DZ3xy7YHA>F`@Q(Q@$_=uW)8>5i`cT<309|F6gb&?d z?G)q@Oi;$(z4SJ;LBI#5M4GUTeZG)=r!e@nMH7ocEwJ6dmJWqoIj3?%7e8F#e|+?! zaFF}0ZAf7Z@-hd8F3w%JlrcqJo_*_$p$lS0J}#mJt9eC`IQd##DPtulz)bOiREoCk z@qwd2h^FJz;(mafrVAM*B|MtQ0L76~m0=3XAw--dvNFIGh&Y6#Fy(x*Wivps{ZuQq zxmjvHjbc*TCEC)Juz9Ma)9eBTT#{Hxx66mMBznuf1Z`6iYXng%i9SIzOQK&8Zb_^a z#41VLEQk(C3<#o666*xvlY~zYeo1T)#E2vY1u-UxTNiDGIQL3oQ{xUGB9icnsHY?` zEQpLGwp2_*7p5g~Tm5bz9+JfEHTM89D~avqU0`ia5<6-pfp|<3yQ&@rv4fKM%;FSq zo|eS!mi<6HBZ)mCoFkI>Y}rB3c|j6^@^&Czl*C>U+X+dGn{!~`Cvvp7tK~Z&haU%4 zvbwqg>r!(Q2$Y)0sKjx@xTQ=L*fGbUk){wcc8Ux;4#gIso^cnE5$HHZxLBaW;>E${)%bv7%>N#(Pi2@f+=!#+ zI236XjNz*!xtDZ(dEK4Jhhofk!3!@V^VQ`eV}`GF5Eu}cwB+lNmi$fVM$U6^!&*>k z3G&1PhX?=}>6*MZoX1#<`A72J)=(ZO)HTagsI5Y>yYz=3s>%)2Fy;}J;dVF5a3ioh zKn@v`ik>3HWqHL<@`@hiS)|O9cf1s3jg|SR*XMO7xpKOaoQ}z~th^dm8ORct3WBcJ zo~2dgs0Ue+!`UY0jN{N=ND^wv3A4n7ZB>p^!Mk!P^e}(L|qFWOuL6V@L;NN(L+6W z$OAAE9%Frr>d?xT;RfuduldQr7WCK1ZNd&nPZRjfYa_789tZ-9iwzc;YX)=q+@Www zld)1bTEazwT8oucG*8KBmKJlRY2qzghzGrZoZN_`2|vicc&dl}gRU^FD{xg}??KBj z{!?8APqBf9U4h}vrc++njC&_TA@6iwZ=koQJ!OR>!AyHBn#fLj`@GRaD3%RdOo$TU z9go6B{xZaynVGVR@%(N-gps5(;jlH~iQtx9$U+l>OJ`EqP$sZxc-s&Fu>KWVpbdF8?)Sdo;zpFL%ixZUwo8TKF_P>c=>T|Y~|e@y!V51m->b`t{s-o*T!x zdyrS0=dNQM1VGMZdO1JFE7x*!fHzC)4Ok6u*KY32@^TO`);Sz7_<=xjVj_@Xf#L0N zhzo`TQ<)SCgd)Lcf~BJmSipia8y)ll=}0n_8P86zjFpN<6TwUpgh3OafI0xuQ81QF zOuEG*n@C3|6IR%bJ4kON8MnOgWNIp6Wz*htc03!1!68z#yy;Y^Jsbr8$*>jLmth4X zs7q!bIPf|Vjai9gA#VJxhhoWeHf2dQ)Cf$(f|Kcdh$s^XWm8~3mW?L_u3QC@u`uQ$ zZGoDqp=Ru~_lNB;j)D>}(O<8H|y>wa32Ic!x(TpWhit{xA6INss55^FSa)Wth zBDL-!3mB2eDyBFc+-DI5r|)~w4j!mC-#+Tz*xBjs^K^SU-CZ4>{T*Fh-R@O8A>aOB zM&j*VZSMAXCY!Lo5-fEa2Ix4j+?lr2+7G54BeZZlEZ-skXG71>zoDBAT3lt|4$L7m8PVIZH1f23TrpSElWS5=k1UnE@2Nx&?^U9^V~a}lr@;kyVIa}cl$;dso&BIX{{`{B1xeqeE+#iX!^ZQizh zaKpC1_D!4a7`iiX=Z3*;Lje}ouUg|)JTx_fi_8CgxoSf*|3)E>*8?XgZj2d=!rN#mXp(RqpCTIf=~z&mLJ%~*Cs@#q zefRDWXuOWG&f`R~M>PCzB>!~{SL63>4c|qy@~`|x$j(ce{2z#ZUBlHF{7S=55Pe$1|3&uy zq2Y0w5C7KiyD4ujs#Tm@$WEh%50d_J4L?J;8V6mQB-}ebDI1bbPDCLhJTIhKd0GI`+=Wp^1qa3*n1lO62<># z&5qh{G~ovjit4YjGpykclKu$cs$Xh9vrm&Bqxc`y@HK=V((I`H(lJf`QIh|$hTlj1 zdQ-Eb)}2e5{C3$*R!UoA6~9^^ZX{ggVV>-dX*k}}V@YWEH4cnh3X^f#e5n4a`K&Ie>r$K8Zu z7!-;?d>XFuvsc5_xICocYJ8v3a5aBUXtUP)n(RALa=q<8ce_n>>kR#`3^H9;@emj_&_Pz|p2I{=e$? zg05~8T`B!0Eit-mC&(_;fB6R(__HZ>82gX!ncn|Fz;v4cvGsU3fbvs~sgZ0HWONMm zO5iUSSUO~tf9kR$z*#8%vsXzKrH}Dr?0WoBz;v6a*+c$o@WrwfT{aB7h5R?uL0HWb z^p9(m?mr6{+Ej5uQq5R!r2`MkP#&Yeki?Yg l`Z!Is6axbP2S68!bAl>7wC*sBYaxBpEp?6*R7FeI|1ZntY6buR diff --git a/src-0/1_doc/makefile.txt b/tools/doc/makefile.txt similarity index 100% rename from src-0/1_doc/makefile.txt rename to tools/doc/makefile.txt diff --git a/src-0/1_doc/makeheaders.txt b/tools/doc/makeheaders-notes.txt similarity index 100% rename from src-0/1_doc/makeheaders.txt rename to tools/doc/makeheaders-notes.txt diff --git a/tools/lib/makefile_cc b/tools/lib/makefile_cc index a52f36b..ac1f960 100755 --- a/tools/lib/makefile_cc +++ b/tools/lib/makefile_cc @@ -3,7 +3,7 @@ SHELL=/bin/bash -include 0_makefile-flags -DEPS_FILE=$(TMPDIR)/makefile_deps +DEPSFILE=$(TMPDIR)/makefile_deps # 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 @@ -27,17 +27,14 @@ EXECS= $(sort $(patsubst %.cli.c, %, $(wildcard *.cli.c))) all: version deps lib execs version: - @echo '---- make $@:------------------------------------------------------------' @echo makefile version 3.0 @echo "PWD: " $(PWD) @echo "MAKEFILE_LIST: " $(MAKEFILE_LIST) @echo "CC: " $(CC) @echo "CFLAGS: " $(CFLAGS) @echo "LINKFLAGS: " $(LINKFLAGS) - @echo '______end make $@_____' info: - @echo '---- make $@:------------------------------------------------------------' @echo "DEPDIR: " $(DEPDIR) @echo "DOCDIR: " $(DOCDIR) @echo "EXECSDIR: " $(EXECSDIR) @@ -47,8 +44,8 @@ info: @echo "TMPDIR: " $(TMPDIR) @echo "TOOLSDIR: " $(TOOLSDIR) @echo "TRYDIR: " $(TRYDIR) - @echo "DEPS_FILE: " $(DEPS_FILE) - @echo "LIB_FILE: " $(LIB_FILE) + @echo "DEPSFILE: " $(DEPSFILE) + @echo "LIBFILE: " $(LIBFILE) @echo "SOURCES_LIB: " $(SOURCES_LIB) @echo "SOURCES_CLI: " $(SOURCES_CLI) @echo "SOURCES: " $(SOURCES) @@ -57,12 +54,9 @@ info: @echo "OBJECTS_CLI: " $(OBJECTS_CLI) @echo "OBJECTS: " $(OBJECTS) @echo "EXECS: " $(EXECS) - @echo '______end make $@_____' # should be safe to run this in an already setup or partially setup directory setup: - @echo '---- make $@:------------------------------------------------------------' - @echo `pwd`'>' if [ ! -e $(DEPRDIR) ]; then mkdir $(DEPRDIR); fi if [ ! -e $(DOCDIR) ]; then mkdir $(DOCDIR); fi if [ ! -e $(EXECSDIR) ]; then mkdir $(EXECSDIR); fi @@ -71,65 +65,49 @@ setup: if [ ! -e $(TESTDIR) ]; then mkdir $(TESTDIR); fi if [ ! -e $(TMPDIR) ]; then mkdir $(TMPDIR); fi if [ ! -e $(TRYDIR) ]; then mkdir $(TRYDIR); fi - @echo '______end make $@_____' deps: - @echo '---- make $@:------------------------------------------------------------' - @echo `pwd`'>' - $(CC) $(CFLAGS) -MM $(SOURCES) 1> $(DEPS_FILE) + $(CC) $(CFLAGS) -MM $(SOURCES) 1> $(DEPSFILE) for i in $(EXECS) ; do\ - $(ECHO) >> $(DEPS_FILE);\ - $(ECHO) "$(EXECSDIR)/$$i : $$i.cli.o $(LIBDIR)/$(LIB_FILE)" >> $(DEPS_FILE);\ - $(ECHO) " $(CC) -o $(EXECSDIR)/$$i $$i.cli.o $(LINKFLAGS)" >> $(DEPS_FILE);\ + $(ECHO) >> $(DEPSFILE);\ + $(ECHO) "$(EXECSDIR)/$$i : $$i.cli.o $(LIBDIR)/$(LIBFILE)" >> $(DEPSFILE);\ + $(ECHO) " $(CC) -o $(EXECSDIR)/$$i $$i.cli.o $(LINKFLAGS)" >> $(DEPSFILE);\ done - @echo '______end make $@_____' lib: - @echo '---- make $@:------------------------------------------------------------' - @echo `pwd`'>' - if [ ! -e $(DEPS_FILE) ]; then make deps; fi + if [ ! -e $(DEPSFILE) ]; then make deps; fi make sub_lib - @echo '______end make $@_____' -sub_lib: $(LIBDIR)/$(LIB_FILE) +sub_lib: $(LIBDIR)/$(LIBFILE) -execs: $(LIBDIR)/$(LIB_FILE) - @echo '---- make $@:------------------------------------------------------------' - @echo `pwd`'>' - if [ ! -e $(DEPS_FILE) ]; then make deps; fi +execs: $(LIBDIR)/$(LIBFILE) + if [ ! -e $(DEPSFILE) ]; then make deps; fi make sub_execs - @echo '______end make $@_____' sub_execs: $(patsubst %, $(EXECSDIR)/%, $(EXECS)) stage: - if [ -f $(LBIDIR)/$(LIBFILE) ]; then cp $(LIBDIR)/$(LIBFILE) $(PROJECT_SUBU)/stage/lib; fi - if [ -f $(INCDIR)/$(INC_FILE) ]; then cp $(INCDIR)/$(INC_FILE) $(PROJECT_SUBU)/stage/include; fi + 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 clean: - @echo '---- make $@:------------------------------------------------------------' - @echo `pwd`'>' 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)/$(LIB_FILE) ]; then rm $(LIBDIR)/$(LIB_FILE); fi - if [ -f $(DEPS_FILE) ]; then rm $(DEPS_FILE); fi - @echo '______end make $@_____' + if [ -f $(LIBDIR)/$(LIBFILE) ]; then rm $(LIBDIR)/$(LIBFILE); fi + if [ -f $(DEPSFILE) ]; then rm $(DEPSFILE); fi dist-clean: - @echo '---- make $@:------------------------------------------------------------' - @echo `pwd`'>' make clean - if [ -d $(TESTDIR) ]; then cd $(TESTDIR); make dist_clean; fi - if [ -d $(TRYDIR) ] ; then cd $(TRYDIR); make dist_clean; fi - @echo '______end make $@_____' + if [ -d $(TESTDIR) ]; then cd $(TESTDIR); make dist-clean; fi + if [ -d $(TRYDIR) ] ; then cd $(TRYDIR); make dist-clean; fi # -$(LIBDIR)/$(LIB_FILE) : $(OBJECTS_LIB) - ar rcs $(LIBDIR)/$(LIB_FILE) $(OBJECTS_LIB) +$(LIBDIR)/$(LIBFILE) : $(OBJECTS_LIB) + ar rcs $(LIBDIR)/$(LIBFILE) $(OBJECTS_LIB) --include $(DEPS_FILE) +-include $(DEPSFILE) # recipe for making object files: # -- 2.20.1