| 1 | case $PERL_CONFIG_SH in |
| 2 | '') |
| 3 | if test -f config.sh; then TOP=.; |
| 4 | elif test -f ../config.sh; then TOP=..; |
| 5 | elif test -f ../../config.sh; then TOP=../..; |
| 6 | elif test -f ../../../config.sh; then TOP=../../..; |
| 7 | elif test -f ../../../../config.sh; then TOP=../../../..; |
| 8 | else |
| 9 | echo "Can't find config.sh."; exit 1 |
| 10 | fi |
| 11 | . $TOP/config.sh |
| 12 | ;; |
| 13 | esac |
| 14 | : This forces SH files to create target in same directory as SH file. |
| 15 | : This is so that make depend always knows where to find SH derivatives. |
| 16 | case "$0" in |
| 17 | */Makefile.SH) cd `expr X$0 : 'X\(.*\)/'` ;; |
| 18 | Makefile.SH) ;; |
| 19 | *) case `pwd` in |
| 20 | */x2p) ;; |
| 21 | *) if test -d x2p; then cd x2p |
| 22 | else echo "Can't figure out where to write output."; exit 1 |
| 23 | fi;; |
| 24 | esac;; |
| 25 | esac |
| 26 | |
| 27 | echo "Extracting x2p/Makefile (with variable substitutions)" |
| 28 | rm -f Makefile |
| 29 | cat >Makefile <<!GROK!THIS! |
| 30 | # $RCSfile: Makefile.SH,v $$Revision: 4.1 $$Date: 92/08/07 18:29:07 $ |
| 31 | # |
| 32 | # $Log: Makefile.SH,v $ |
| 33 | |
| 34 | CC = $cc |
| 35 | BYACC = $byacc |
| 36 | LDFLAGS = $ldflags |
| 37 | # XXX Perl malloc temporarily unusable (declaration collisions with stdlib.h) |
| 38 | #mallocsrc = $mallocsrc |
| 39 | #mallocobj = $mallocobj |
| 40 | shellflags = $shellflags |
| 41 | |
| 42 | libs = $perllibs |
| 43 | |
| 44 | $make_set_make |
| 45 | # grrr |
| 46 | SHELL = $sh |
| 47 | |
| 48 | # These variables may need to be manually set for non-Unix systems. |
| 49 | AR = $ar |
| 50 | EXE_EXT = $_ext |
| 51 | LIB_EXT = $_a |
| 52 | OBJ_EXT = $_o |
| 53 | PATH_SEP = $p_ |
| 54 | |
| 55 | FIRSTMAKEFILE = $firstmakefile |
| 56 | |
| 57 | # how to tr(anslate) newlines |
| 58 | |
| 59 | TRNL = '$trnl' |
| 60 | |
| 61 | OPTIMIZE = $optimize |
| 62 | |
| 63 | .SUFFIXES: .c \$(OBJ_EXT) |
| 64 | |
| 65 | !GROK!THIS! |
| 66 | |
| 67 | cat >>Makefile <<'!NO!SUBS!' |
| 68 | |
| 69 | REALPERL = ../perl |
| 70 | CCCMD = `sh $(shellflags) cflags "optimize='$(OPTIMIZE)'" $@` |
| 71 | |
| 72 | public = a2p$(EXE_EXT) s2p find2perl |
| 73 | |
| 74 | private = |
| 75 | |
| 76 | manpages = a2p.man s2p.man |
| 77 | |
| 78 | util = |
| 79 | |
| 80 | sh = Makefile.SH cflags.SH |
| 81 | shextract = Makefile cflags |
| 82 | |
| 83 | pl = find2perl.PL s2p.PL |
| 84 | plextract = find2perl s2p |
| 85 | plexe = find2perl.exe s2p.exe |
| 86 | plc = find2perl.c s2p.c |
| 87 | plm = a2p.loadmap |
| 88 | |
| 89 | addedbyconf = $(shextract) $(plextract) |
| 90 | |
| 91 | h = EXTERN.h INTERN.h ../config.h ../handy.h hash.h a2p.h str.h util.h |
| 92 | |
| 93 | c = hash.c $(mallocsrc) str.c util.c walk.c |
| 94 | |
| 95 | obj = hash$(OBJ_EXT) $(mallocobj) str$(OBJ_EXT) util$(OBJ_EXT) walk$(OBJ_EXT) |
| 96 | |
| 97 | lintflags = -phbvxac |
| 98 | |
| 99 | |
| 100 | .c$(OBJ_EXT): |
| 101 | $(CCCMD) -DPERL_FOR_X2P $*.c |
| 102 | |
| 103 | all: $(public) $(private) $(util) |
| 104 | @echo " " |
| 105 | |
| 106 | a2p$(EXE_EXT): $(obj) a2p$(OBJ_EXT) |
| 107 | $(CC) -o a2p $(LDFLAGS) $(obj) a2p$(OBJ_EXT) $(libs) |
| 108 | |
| 109 | # I now supply a2p.c with the kits, so the following section is |
| 110 | # used only if you force byacc to run by saying |
| 111 | # make run_byacc |
| 112 | # byacc 1.8.2 or 1.9 are recommended. |
| 113 | |
| 114 | run_byacc: FORCE |
| 115 | @ echo Expect many shift/reduce and reduce/reduce conflicts |
| 116 | $(BYACC) a2p.y |
| 117 | rm -f a2p.c |
| 118 | sed -e 's/(yyn = yydefred\[yystate\])/((yyn = yydefred[yystate]))/' \ |
| 119 | -e 's/(yys = getenv("YYDEBUG"))/((yys = getenv("YYDEBUG")))/' \ |
| 120 | -e 's/^yyerrlab://' \ |
| 121 | -e 's/^ goto yyerrlab;//' \ |
| 122 | -e 's/^yynewerror://' \ |
| 123 | -e 's/^ goto yynewerror;//' \ |
| 124 | -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \ |
| 125 | < y.tab.c > a2p.c |
| 126 | |
| 127 | FORCE: |
| 128 | |
| 129 | # We don't want to regenerate a2p.c, but it might appear out-of-date |
| 130 | # after a patch is applied or a new distribution is made. |
| 131 | a2p.c: a2p.y |
| 132 | -@sh -c true |
| 133 | |
| 134 | a2p$(OBJ_EXT): a2p.c a2py.c a2p.h EXTERN.h util.h INTERN.h \ |
| 135 | ../handy.h ../config.h str.h hash.h |
| 136 | $(CCCMD) a2p.c |
| 137 | |
| 138 | clean: |
| 139 | rm -f a2p$(EXE_EXT) psed *$(OBJ_EXT) $(plexe) $(plc) $(plm) |
| 140 | |
| 141 | realclean: clean |
| 142 | -rmdir .depending |
| 143 | rm -f core $(addedbyconf) all malloc.c |
| 144 | rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old makefile.old |
| 145 | |
| 146 | veryclean: realclean |
| 147 | rm -f *~ *.orig |
| 148 | |
| 149 | # The following lint has practically everything turned on. Unfortunately, |
| 150 | # you have to wade through a lot of mumbo jumbo that can't be suppressed. |
| 151 | # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message |
| 152 | # for that spot. |
| 153 | |
| 154 | lint: |
| 155 | lint $(lintflags) $(defs) $(c) > a2p.fuzz |
| 156 | |
| 157 | depend: $(mallocsrc) ../makedepend |
| 158 | sh ../makedepend MAKE=$(MAKE) |
| 159 | |
| 160 | clist: |
| 161 | echo $(c) | tr ' ' $(TRNL) >.clist |
| 162 | |
| 163 | hlist: |
| 164 | echo $(h) | tr ' ' $(TRNL) >.hlist |
| 165 | |
| 166 | shlist: |
| 167 | echo $(sh) | tr ' ' $(TRNL) >.shlist |
| 168 | |
| 169 | # These should be automatically generated |
| 170 | |
| 171 | $(plextract): |
| 172 | ../miniperl -I../lib $@.PL |
| 173 | |
| 174 | find2perl: find2perl.PL |
| 175 | |
| 176 | s2p: s2p.PL |
| 177 | |
| 178 | malloc.c: ../malloc.c |
| 179 | rm -f malloc.c |
| 180 | sed <../malloc.c >malloc.c \ |
| 181 | -e 's/"EXTERN.h"/"..\/EXTERN.h"/' \ |
| 182 | -e 's/"perl.h"/"..\/perl.h"/' \ |
| 183 | -e 's/my_exit/exit/' \ |
| 184 | -e 's/MUTEX_[A-Z_]*(&PL_malloc_mutex);//' |
| 185 | |
| 186 | # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE |
| 187 | $(obj): |
| 188 | @ echo "You haven't done a "'"make depend" yet!'; exit 1 |
| 189 | makedepend: depend |
| 190 | !NO!SUBS! |
| 191 | $eunicefix Makefile |
| 192 | case `pwd` in |
| 193 | *SH) |
| 194 | $rm -f ../Makefile |
| 195 | $ln Makefile ../Makefile |
| 196 | ;; |
| 197 | esac |
| 198 | rm -f $firstmakefile |