📄 makefile.lsp
字号:
(add-prefix "fft/" fftfiles) (add-prefix "nyqsrc/" intfiles) (add-prefix "snd/" sndfiles) '("sys/unix/osstuff" "sys/unix/term")))) (setf flist (add-suffix flist ".o")) (format outf "OBJECTS = ") (write-file-list outf flist)));; add-prefix - place string at beginning of each string in list;;(defun add-prefix (prefix lis) (mapcar #'(lambda (str) (strcat prefix str)) lis));; add-suffix - place string at end of each string in list;;(defun add-suffix (lis suffix) (mapcar #'(lambda (str) (strcat str suffix)) lis));; write-file-list - write file names to Make macro;;(defun write-file-list (outf flist) (while flist (dotimes (i 4) (format outf "~A " (car flist)) (setf flist (cdr flist)) (if (null flist) (return))) (if flist (format outf " \\~%\t"))) (format outf "~%~%"))(defun nyqheaders (outf) (let ((flist (append (list "snd/snd") (add-prefix "nyqsrc/" '("sound" "downsample" "sndread" "sndseq" "add" "multiseq" "samples" "sndwrite" "sndmax" "compose" "inverse" "resamp" "resampv" "fft" "avg")) (add-prefix "tran/" transfiles)))) (setf flist (mapcar #'(lambda (f) (strcat f ".h")) flist)) (format outf "NYQHDRS = ") (write-file-list outf flist)))(defun cmtheaders (outf) (let ((flist (append '("cmt/seqdecls" "nyqsrc/seqext" "cmt/seq" "nyqsrc/seqinterf") ; order is important here! (add-prefix "cmt/" '("seqread" "seqmread" "seqwrite" "seqmwrite"))))) (setf flist (add-suffix flist ".h")) (format outf "CMTHDRS = ") (write-file-list outf flist)))(defun dependencies (outf system-name) ;; this forces generation of sndfnintdefs.h, seqfnintdefs.h: (dolist (f (append (add-prefix "nyqsrc/" nyqfiles) (add-prefix "snd/" sndfiles) (add-prefix "fft/" fftfiles) (add-prefix "tran/" transfiles) (add-prefix "nyqsrc/" intfiles))) (let ((ex (assoc f depends-exceptions :test #'equal))) (cond ((and ex (cdr ex)) (format outf "~A.o: ~A.c ~A~%" f f (cadr ex)) (format outf "\tcc -c ~A.c -o ~A.o $(CFLAGS)~%~%" f f)) (t (format outf "~A.o: ~A.c ~A.h nyqsrc/sound.h nyqsrc/falloc.h nyqsrc/cque.h~%" f f f) (format outf "\tcc -c ~A.c -o ~A.o $(CFLAGS)~%~%" f f))))) (format outf "xlisp/xlftab.o: nyqsrc/sndfnintptrs.h nyqsrc/sndfnintdefs.h") (format outf " nyqsrc/seqfnintptrs.h nyqsrc/seqfnintdefs.h~%") (format outf "\tcc -c xlisp/xlftab.c -o xlisp/xlftab.o $(CFLAGS)~%~%") (dolist (f (append (add-prefix "xlisp/" xlfiles) (add-prefix "cmt/" cmtfiles) '("sys/unix/osstuff"))) (cond ((and (not (equal f "xlisp/xlftab")) ; special case handled above (not (and (equal f "xlisp/xljump") ; case handled below (equal system-name "next")))) (format outf "~A.o: ~A.c~%\tcc -c ~A.c -o ~A.o $(CFLAGS)~%~%" f f f f)))));; MAKESRC -- makes the Makesrc file;;(defun makesrc () (let (outf) (load "misc/transfiles.lsp") ; just to make sure we're current (format t "Writing Makesrc\n") (setf outf (open "Makesrc" :direction :output)) (format outf "## FILE: Makefile to import sources## usage: make -f Makesrc## I want to be able to keep sources separate from objects, e.g. the# MIDI sequence code comes from the CMU MIDI Toolkit, and XLisp should# be compile-able without Nyquist.## There are tools to do this, but I don't expect to find the same tool# everywhere Nyquist is ported, so I'm taking this simple path.# Source Paths:NYQ = nyqsrcCMT = cmtXLISP = xlispTRANS = tranSND = sndEVERYTHING: sources") (source-files outf) (format outf "## XLISP SOURCES#") (source-depends outf xlfiles ".c" "XLISP") (source-depends outf xlfiles-h ".h" "XLISP") (source-depends outf xlfiles-lsp ".lsp" "XLISP") (format outf "## NYQUIST SOURCES#") (source-depends outf nyqfiles ".c" "NYQ") (source-depends outf (exceptions-filter nyqfiles) ".h" "NYQ") (source-depends outf nyqfiles-h ".h" "NYQ") (source-depends outf nyqfiles-lsp ".lsp" "NYQ") (source-depends outf extrafiles "" "NYQ") (format outf "## CMT SOURCES#") (source-depends outf cmtfiles ".c" "CMT") (source-depends outf (exceptions-filter cmtfiles) ".h" "CMT") (source-depends outf cmtfiles-h ".h" "CMT") (format outf "## TRANS SOURCES#") (source-depends outf transfiles ".c" "TRANS") (source-depends outf transfiles ".h" "TRANS") (format outf "## SND SOURCES#") (source-depends outf sndfiles ".c" "SND") (source-depends outf sndfiles ".h" "SND") (close outf))) ;; SOURCE-FILES -- writes the sources: list to Makesrc;;(defun source-files (outf) (setf flist (append xlfiles nyqfiles fftfiles cmtfiles transfiles sndfiles)) (setf flist-h (append xlfiles-h nyqfiles-h cmtfiles-h transfiles)) ; Add .c files as .h files unless exceptions list indicates there is ; no .h file: (setf flist-h (append (exceptions-filter nyqfiles) (exceptions-filter cmtfiles) (exceptions-filter sndfiles) flist-h)) (setf flist-lsp (append xlfiles-lsp nyqfiles-lsp sndfiles-lsp)) (setf flist (mapcar #'(lambda (f) (strcat f ".c")) flist)) (setf flist-h (mapcar #'(lambda (f) (strcat f ".h")) flist-h)) (setf flist-lsp (mapcar #'(lambda (f) (strcat f ".lsp")) flist-lsp)) (format outf "sources: ") (write-file-list outf (append flist flist-h flist-lsp extrafiles)));; EXCEPTIONS-FILTER - remove .h files from list; the depends-exceptions tells whether a .h file exists for a .c file;; (defun exceptions-filter (files) (let (result) (dolist (f files) (let ((ex (assoc f depends-exceptions :test #'equal))) (cond (ex (if (and (cdr ex) (string-search (strcat f ".h") (cadr ex))) (push f result))) (t (push f result))))) result));; SOURCE-DEPENDS -- write dependency for source files;;(defun source-depends (outf files ext dir) (dolist (f files) (let ((fname (strcat f ext))) (format outf "~A: $(~A)/~A~%\trm -f ~A~%\tcp -p $(~A)/~A .~%\tchmod -w ~A~%~%" fname dir fname fname dir fname fname))));;===================================================;; SYSTEM DEPENDENCIES;;===================================================(setf rs6k-defs "MIDI = /afs/cs/project/music/rs6k/midilibCC = cc# change -g to -O for optimizationCFLAGS = -DCMTSTUFF -g $(INCL) -I$(MIDI)XFLAGS = $(CFLAGS) -qlanglvl=extendedLN = xlc -qattr -qlistLFLAGS = -lm -L$(MIDI) -lmidi -lbsd -lg")(setf next-defs "CC = ccCFLAGS = -DCMTSTUFF -O $(INCL)LN = ccLFLAGS = -lm")(setf next-rules "# this doesn't compile with the -O switch (a NeXT compiler bug?)xlisp/xljump.o : xlisp/xljump.c xlisp/xlisp.h\t$(CC) -DCMTSTUFF -c xlisp/xljump.c -o xlisp/xljump.o")(setf pmax-defs "CC = ccCFLAGS = -DCMTSTUFF -g $(INCL)LN = ccLFLAGS = -lm")(setf sgi-defs "CC = ccCFLAGS = -DCMTSTUFF -g $(INCL)LN = ccLFLAGS = -lm# you would need -lmd if UNIX_IRIX_MIDIFNS were defined in midifns.c")(setf sparc-defs "CC = gccCFLAGS = -DCMTSTUFF -g $(INCL)LN = $(CC)LFLAGS = -lm")(setf linux-defs "CC = gccCFLAGS = -DCMTSTUFF -O2 $(INCL)LN = $(CC)LFLAGS = -lm")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -