fpc/utils/sim_pasc/Makefile
2024-06-16 21:40:57 +02:00

569 lines
13 KiB
Makefile
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# This file is part of the software similarity tester SIM.
# Written by Dick Grune, Vrije Universiteit, Amsterdam.
# $Id: Makefile,v 2.17 2007/08/27 09:57:31 dick Exp $
#
# E N T R Y P O I N T S
test_sim:
help:
@echo 'Entry points:'
@echo 'test_sim: compile sim_c and run a simple test (default)'
@echo ''
@echo 'all: create all binaries'
@echo 'sim_X(.exe): create specific binary for language X'
@echo 'install_all: install all binaries'
@echo 'install.sim_X: install specific binary for language X'
@echo 'where X is one of c, java, pasc, m2, lisp, mira, text'
@echo ''
@echo 'lint: lint sim_c sources'
@echo 'lint.all: lint all sim sources'
@echo 'simsim: run sim on the sim sources'
@echo ''
@echo 'simsrc.shr: create sources shar file'
@echo 'simsrc.zip: create sources zip file'
@echo 'depend: update dependencies in Makefile'
@echo 'clean: remove created files'
@echo ''
@echo 'sim_exes: create DOS executables in MSDOS; set date; make clean'
@echo 'simexe.zip: create DOS executables package in UNIX'
@echo 'VERSION=2.X install_ftp: install in the FTP directory in UNIX'
VERSION = 2_21
#
# When you modify any of the following flags, do 'make clean'
#
include sysidf.mk
# Flags
OPTLEVEL = -O4# #
CFLAGS = $(SYSTEM) $(OPTLEVEL) $(TESTTOKEN)
LFLAGS = # # loader flags
TESTTOKEN = #-DTESTTOKEN# # define to test the token type
# T E S T P A R A M E T E R S
# Parameters for two simple test runs, sim.res and stream.res:
TEST_LANG = c# # to test sim_X for language X
TEST_OPT = -f -r 20# # options to sim_X
TEST_INP = pass3.c# # guinea pig input
TEST_OPT = -p# # options to sim_X
TEST_INP = *.l# # guinea pig input
TEST_INP = simple*# # guinea pig input
# I N T R O D U C T I O N
# Each module (set of programs that together perform some function)
# has the following sets of files defined for it:
# _FLS all files of that module, for, e.g.,
# sharring, inventory, etc.
# _SRC the source files, from which other files derive
# _CFS the C-files, from which the object files derive
# _OBJ object files
# _GRB garbage files produced by compiling the module
#
# (This is a feeble attempt at software-engineering a Makefile.)
#
test_sim: sim.res stream.res # two simple tests
# B I N A R I E S
BINARIES = sim_c$(EXE) sim_java$(EXE) sim_pasc$(EXE) \
sim_m2$(EXE) sim_lisp$(EXE) sim_mira$(EXE) \
sim_text$(EXE)
all: $(BINARIES)
# C O M P I L A T I O N R U L E S
.SUFFIXES: .o
.c.o:
$(CC) -c $(CFLAGS) $<
# A U X I L I A R Y M O D U L E S
# Common modules:
COM_CFS = token.c lex.c stream.c text.c tokenarray.c error.c
COM_OBJ = token.o lex.o stream.o text.o tokenarray.o error.o
COM_SRC = token.h lex.h stream.h text.h tokenarray.h error.h \
lang.h language.h \
sortlist.spc sortlist.bdy system.par $(COM_CFS)
COM_FLS = $(COM_SRC)
# The idf module:
IDF_CFS = idf.c
IDF_OBJ = idf.o
IDF_SRC = idf.h $(IDF_CFS)
IDF_FLS = $(IDF_SRC)
# The runs package:
RUNS_CFS = runs.c percentages.c
RUNS_OBJ = runs.o percentages.o
RUNS_SRC = runs.h percentages.h $(RUNS_CFS)
RUNS_FLS = $(RUNS_SRC) aiso.spc aiso.bdy
# The main program:
MAIN_CFS = sim.c options.c pass1.c hash.c compare.c add_run.c \
pass2.c pass3.c
MAIN_OBJ = sim.o options.o pass1.o hash.o compare.o add_run.o \
pass2.o pass3.o
MAIN_SRC = sim.h options.h pass1.h hash.h compare.h add_run.h \
pass2.h pass3.h \
debug.par settings.par $(MAIN_CFS)
MAIN_FLS = $(MAIN_SRC)
# The similarity tester without the language part:
SIM_CFS = $(COM_CFS) $(IDF_CFS) $(RUNS_CFS) $(MAIN_CFS)
SIM_OBJ = $(COM_OBJ) $(IDF_OBJ) $(RUNS_OBJ) $(MAIN_OBJ)
SIM_SRC = $(COM_SRC) $(IDF_SRC) $(RUNS_SRC) $(MAIN_SRC)
SIM_FLS = $(COM_FLS) $(IDF_FLS) $(RUNS_FLS) $(MAIN_FLS)
# L A N G U A G E S
# The algollike module:
ALG_CFS = algollike.c
ALG_OBJ = algollike.o
ALG_SRC = algollike.h $(ALG_CFS)
ALG_FLS = $(ALG_SRC)
# The C Language module: C
CLANG_CFS = clang.c
CLANG_OBJ = clang.o
CLANG_SRC = clang.l
CLANG_FLS = $(CLANG_SRC)
clang.c: clang.l
$(LEX) -t clang.l >$@
SIM_C_CFS = $(SIM_CFS) $(ALG_CFS) $(CLANG_CFS)
SIM_C_OBJ = $(SIM_OBJ) $(ALG_OBJ) $(CLANG_OBJ)
sim_c$(EXE): $(SIM_C_OBJ)
$(CC) $(LFLAGS) $(SIM_C_OBJ) -o $@
SIM_C_GRB = clang.c sim_c
install.sim_c: $(BINDIR)/sim_c$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_c$(EXE): sim_c$(EXE)
$(COPY) sim_c$(EXE) $@
# The Java Language module: Java
JAVALANG_CFS = javalang.c
JAVALANG_OBJ = javalang.o
JAVALANG_SRC = javalang.l
JAVALANG_FLS = $(JAVALANG_SRC)
javalang.c: javalang.l
$(LEX) -t javalang.l >$@
SIM_JAVA_CFS = $(SIM_CFS) $(ALG_CFS) $(JAVALANG_CFS)
SIM_JAVA_OBJ = $(SIM_OBJ) $(ALG_OBJ) $(JAVALANG_OBJ)
sim_java$(EXE): $(SIM_JAVA_OBJ)
$(CC) $(LFLAGS) $(SIM_JAVA_OBJ) -o $@
SIM_JAVA_GRB = javalang.c sim_java
install.sim_java: $(BINDIR)/sim_java$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_java$(EXE): sim_java$(EXE)
$(COPY) sim_java$(EXE) $@
# The Pascal Language module: Pascal
PASCLANG_CFS = pascallang.c
PASCLANG_OBJ = pascallang.o
PASCLANG_SRC = pascallang.l
PASCLANG_FLS = $(PASCLANG_SRC)
pascallang.c: pascallang.l
$(LEX) -t pascallang.l >pascallang.c
SIM_PASC_CFS = $(SIM_CFS) $(ALG_CFS) $(PASCLANG_CFS)
SIM_PASC_OBJ = $(SIM_OBJ) $(ALG_OBJ) $(PASCLANG_OBJ)
sim_pasc$(EXE): $(SIM_PASC_OBJ)
$(CC) $(LFLAGS) $(SIM_PASC_OBJ) -o $@
SIM_PASC_GRB = pascallang.c sim_pasc
install.sim_pasc: $(BINDIR)/sim_pasc$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_pasc$(EXE): sim_pasc$(EXE)
$(COPY) sim_pasc$(EXE) $@
# The Modula-2 Language module: Modula-2
M2LANG_CFS = m2lang.c
M2LANG_OBJ = m2lang.o
M2LANG_SRC = m2lang.l
M2LANG_FLS = $(M2LANG_SRC)
m2lang.c: m2lang.l
$(LEX) -t m2lang.l >$@
SIM_M2_CFS = $(SIM_CFS) $(ALG_CFS) $(M2LANG_CFS)
SIM_M2_OBJ = $(SIM_OBJ) $(ALG_OBJ) $(M2LANG_OBJ)
sim_m2$(EXE): $(SIM_M2_OBJ)
$(CC) $(LFLAGS) $(SIM_M2_OBJ) -o $@
SIM_M2_GRB = m2lang.c sim_m2
install.sim_m2: $(BINDIR)/sim_m2$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_m2$(EXE): sim_m2$(EXE)
$(COPY) sim_m2$(EXE) $@
# The Lisp Language module: Lisp
LISPLANG_CFS = lisplang.c
LISPLANG_OBJ = lisplang.o
LISPLANG_SRC = lisplang.l
LISPLANG_FLS = $(LISPLANG_SRC)
lisplang.c: lisplang.l
$(LEX) -t lisplang.l >$@
SIM_LISP_CFS = $(SIM_CFS) $(ALG_CFS) $(LISPLANG_CFS)
SIM_LISP_OBJ = $(SIM_OBJ) $(ALG_OBJ) $(LISPLANG_OBJ)
sim_lisp$(EXE): $(SIM_LISP_OBJ)
$(CC) $(LFLAGS) $(SIM_LISP_OBJ) -o $@
SIM_LISP_GRB = lisplang.c sim_lisp
install.sim_lisp: $(BINDIR)/sim_lisp$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_lisp$(EXE): sim_lisp$(EXE)
$(COPY) sim_lisp$(EXE) $@
# The Miranda Language module: Miranda
MIRALANG_CFS = miralang.c
MIRALANG_OBJ = miralang.o
MIRALANG_SRC = miralang.l
MIRALANG_FLS = $(MIRALANG_SRC)
miralang.c: miralang.l
$(LEX) -t miralang.l >$@
SIM_MIRA_CFS = $(SIM_CFS) $(ALG_CFS) $(MIRALANG_CFS)
SIM_MIRA_OBJ = $(SIM_OBJ) $(ALG_OBJ) $(MIRALANG_OBJ)
sim_mira$(EXE): $(SIM_MIRA_OBJ)
$(CC) $(LFLAGS) $(SIM_MIRA_OBJ) -o $@
SIM_MIRA_GRB = miralang.c sim_mira
install.sim_mira: $(BINDIR)/sim_mira$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_mira$(EXE): sim_mira$(EXE)
$(COPY) sim_mira$(EXE) $@
# The Text module: Text
TEXTLANG_CFS = textlang.c
TEXTLANG_OBJ = textlang.o
TEXTLANG_SRC = textlang.l
TEXTLANG_FLS = $(TEXTLANG_SRC)
textlang.c: textlang.l
$(LEX) -t textlang.l >$@
SIM_TEXT_CFS = $(SIM_CFS) $(TEXTLANG_CFS)
SIM_TEXT_OBJ = $(SIM_OBJ) $(TEXTLANG_OBJ)
sim_text$(EXE): $(SIM_TEXT_OBJ)
$(CC) $(LFLAGS) $(SIM_TEXT_OBJ) -o $@
SIM_TEXT_GRB = textlang.c sim_text
install.sim_text: $(BINDIR)/sim_text$(EXE) $(MANDIR)/sim.1
$(BINDIR)/sim_text$(EXE): sim_text$(EXE)
$(COPY) sim_text$(EXE) $@
# T E S T S
# Some simple tests:
sim.res: sim_$(TEST_LANG)$(EXE) $(TEST_INP)
./sim_$(TEST_LANG)$(EXE) $(TEST_OPT) $(TEST_INP)
# ./sim_$(TEST_LANG)$(EXE) -x $(TEST_OPT) $(TEST_INP)
stream.res: sim_$(TEST_LANG)$(EXE) $(TEST_INP)
./sim_$(TEST_LANG)$(EXE) -- $(TEST_INP) >stream.res
wc stream.res $(TEST_INP)
TEST_GRB = stream.res
# More simple tests, on the C version only:
simsim: sim_c$(EXE) $(SRC)
./sim_c$(EXE) -fr 20 $(SRC)
# Lint
lint: $(SIM_C_CFS)
$(LINT) $(LINTFLAGS) $(SIM_C_CFS) | grep -v yy
lint.all: $(SIM_C_CFS) $(SIM_JAVA_CFS) $(SIM_PASC_CFS) $(SIM_M2_CFS) \
$(SIM_LISP_CFS) $(SIM_MIRA_CFS) $(SIM_TEXT_CFS)
$(LINT) $(LINTFLAGS) $(SIM_C_CFS) | grep -v yy
$(LINT) $(LINTFLAGS) $(SIM_JAVA_CFS) | grep -v yy
$(LINT) $(LINTFLAGS) $(SIM_PASC_CFS) | grep -v yy
$(LINT) $(LINTFLAGS) $(SIM_M2_CFS) | grep -v yy
$(LINT) $(LINTFLAGS) $(SIM_LISP_CFS) | grep -v yy
$(LINT) $(LINTFLAGS) $(SIM_MIRA_CFS) | grep -v yy
$(LINT) $(LINTFLAGS) $(SIM_TEXT_CFS) | grep -v yy
# O T H E R E N T R I E S
# Sets of files: general, modules, main programs, languages
CFS = $(SIM_CFS) $(ALG_CFS) \
$(CLANG_CFS) $(JAVALANG_CFS) $(PASCLANG_CFS) $(M2LANG_CFS) \
$(LISPLANG_CFS) $(MIRALANG_CFS) $(TEXTLANG_CFS)
OBJ = $(SIM_OBJ) $(ALG_OBJ) \
$(CLANG_OBJ) $(JAVALANG_OBJ) $(PASCLANG_OBJ) $(M2LANG_OBJ) \
$(LISPLANG_OBJ) $(MIRALANG_OBJ) $(TEXTLANG_OBJ)
SRC = $(SIM_SRC) $(ALG_SRC) \
$(CLANG_SRC) $(JAVALANG_SRC) $(PASCLANG_SRC) $(M2LANG_SRC) \
$(LISPLANG_SRC) $(MIRALANG_SRC) $(TEXTLANG_SRC)
FLS = $(SIM_FLS) $(ALG_FLS) \
$(CLANG_FLS) $(JAVALANG_FLS) $(PASCLANG_FLS) $(M2LANG_FLS) \
$(LISPLANG_FLS) $(MIRALANG_FLS) $(TEXTLANG_FLS) \
sysidf.mk sysidf.msdos sysidf.unix
DOC = READ_ME READ.ME README.1st sim.1 sim.txt sim.html \
ChangeLog Answers TechnReport
ALL_FLS = Makefile $(FLS) $(DOC)
# Create .EXE archive for MSDOS
SIM_EXES = sim_c.exe sim_java.exe sim_pasc.exe sim_m2.exe \
sim_lisp.exe sim_mira.exe sim_text.exe
DOSZIP = READ.ME sim.txt $(SIM_EXES)
sim_exes: $(SIM_EXES)
simexe.zip: $(DOSZIP)
$(ZIP) $@ $(DOSZIP)
DOS_GRB = simexe.zip
# Install and clean scripts
install_all: install # just a synonym
install: install.sim_c install.sim_java install.sim_pasc \
install.sim_m2 install.sim_lisp install.sim_mira \
install.sim_text
$(MANDIR)/sim.1: sim.1
$(COPY) sim.1 $@
FTPFILES = README.1st READ_ME LICENSE.txt TechnReport
install_ftp: $(FTPFILES) simsrc.shr simexe.zip sim.pdf
cp -p simsrc.shr sim_$(VERSION).shar
cp -p simexe.zip sim_$(VERSION).zip
cp -p $(FTPFILES) sim_$(VERSION).shar sim_$(VERSION).zip \
README.1st READ.ME READ_ME sim.pdf \
$(FTPDIR)/.
rm -f sim_$(VERSION).shar sim_$(VERSION).zip
ls -l $(FTPDIR)/.
simsrc.shr: $(ALL_FLS)
shar $(ALL_FLS) >$@
simsrc.zip: $(ALL_FLS)
$(ZIP) $@ $(ALL_FLS)
sim.txt: sim.1
nroff -man sim.1 | sed 's/.//g' >$@
sim.pdf: sim.1
troff -man sim.1 | devps | ps2pdf -sPAPERSIZE=a4 - $@
INSTALL_GRB = simsrc.shr simsrc.zip sim.txt sim.pdf
depend: $(CFS)
makedepend -w 1 -Dlint $(CFS)
.PHONY: clean fresh distclean
clean:
-rm -f *.o
-rm -f $(SIM_C_GRB)
-rm -f $(SIM_JAVA_GRB)
-rm -f $(SIM_PASC_GRB)
-rm -f $(SIM_M2_GRB)
-rm -f $(SIM_LISP_GRB)
-rm -f $(SIM_MIRA_GRB)
-rm -f $(SIM_TEXT_GRB)
-rm -f $(TEST_GRB)
-rm -f $(INSTALL_GRB)
-rm -f a.out a.exe sim.txt core mon.out
distclean: clean
fresh: clean
-rm -f $(DOS_GRB)
-rm -f *.exe
# D E P E N D E N C I E S
# DO NOT DELETE THIS LINE -- make depend depends on it.
token.o: token.h
lex.o: token.h
lex.o: lex.h
stream.o: system.par
stream.o: token.h
stream.o: lex.h
stream.o: lang.h
stream.o: stream.h
text.o: debug.par
text.o: sim.h
text.o: token.h
text.o: stream.h
text.o: lex.h
text.o: options.h
text.o: error.h
text.o: text.h
tokenarray.o: error.h
tokenarray.o: lex.h
tokenarray.o: token.h
tokenarray.o: tokenarray.h
error.o: sim.h
error.o: error.h
idf.o: system.par
idf.o: token.h
idf.o: idf.h
runs.o: sim.h
runs.o: runs.h
runs.o: aiso.spc
runs.o: aiso.bdy
percentages.o: sim.h
percentages.o: runs.h
percentages.o: aiso.spc
percentages.o: error.h
percentages.o: percentages.h
percentages.o: sortlist.bdy
sim.o: settings.par
sim.o: sim.h
sim.o: options.h
sim.o: language.h
sim.o: token.h
sim.o: error.h
sim.o: hash.h
sim.o: compare.h
sim.o: pass1.h
sim.o: pass2.h
sim.o: pass3.h
sim.o: stream.h
sim.o: lex.h
options.o: options.h
pass1.o: debug.par
pass1.o: sim.h
pass1.o: text.h
pass1.o: tokenarray.h
pass1.o: token.h
pass1.o: lex.h
pass1.o: error.h
pass1.o: pass1.h
hash.o: system.par
hash.o: debug.par
hash.o: sim.h
hash.o: error.h
hash.o: language.h
hash.o: token.h
hash.o: tokenarray.h
hash.o: options.h
hash.o: hash.h
compare.o: sim.h
compare.o: tokenarray.h
compare.o: token.h
compare.o: hash.h
compare.o: language.h
compare.o: options.h
compare.o: add_run.h
compare.o: compare.h
add_run.o: sim.h
add_run.o: runs.h
add_run.o: aiso.spc
add_run.o: percentages.h
add_run.o: options.h
add_run.o: error.h
add_run.o: add_run.h
pass2.o: debug.par
pass2.o: sim.h
pass2.o: text.h
pass2.o: lex.h
pass2.o: token.h
pass2.o: pass2.h
pass2.o: sortlist.bdy
pass3.o: system.par
pass3.o: debug.par
pass3.o: sim.h
pass3.o: runs.h
pass3.o: aiso.spc
pass3.o: error.h
pass3.o: options.h
pass3.o: pass3.h
pass3.o: percentages.h
pass3.o: tokenarray.h
pass3.o: token.h
algollike.o: options.h
algollike.o: token.h
algollike.o: algollike.h
algollike.o: language.h
clang.o: options.h
clang.o: algollike.h
clang.o: language.h
clang.o: token.h
clang.o: idf.h
clang.o: lex.h
clang.o: lang.h
javalang.o: options.h
javalang.o: algollike.h
javalang.o: language.h
javalang.o: token.h
javalang.o: idf.h
javalang.o: lex.h
javalang.o: lang.h
pascallang.o: options.h
pascallang.o: algollike.h
pascallang.o: language.h
pascallang.o: token.h
pascallang.o: idf.h
pascallang.o: lex.h
pascallang.o: lang.h
m2lang.o: options.h
m2lang.o: algollike.h
m2lang.o: language.h
m2lang.o: token.h
m2lang.o: idf.h
m2lang.o: lex.h
m2lang.o: lang.h
lisplang.o: language.h
lisplang.o: token.h
lisplang.o: lex.h
lisplang.o: lang.h
lisplang.o: idf.h
miralang.o: language.h
miralang.o: token.h
miralang.o: lex.h
miralang.o: lang.h
miralang.o: idf.h
textlang.o: language.h
textlang.o: token.h
textlang.o: idf.h
textlang.o: lex.h
textlang.o: lang.h