#-*-makefile-*- ; force emacs to enter makefile-mode # ---------------------------------------------------- # Make include file for otp # # Copyright (C) 1996, Ericsson Telecommunications # Author: Lars Thorsen # ---------------------------------------------------- .SUFFIXES: .erl .beam .yrl .xrl .bin .mib .hrl .sgml .xml .html .ps \ .3 .1 .fig .dvi .tex .class .java .pdf .psframe .pscrop .el .elc # ---------------------------------------------------- # Common macros # ---------------------------------------------------- DEFAULT_TARGETS = opt debug release release_docs clean docs # Slash separated list of return values from $(origin VAR) # that are untrusted - set default in this file instead. # The list is not space separated since some return values # contain space, and we want to use $(findstring ...) to # search the list. DUBIOUS_ORIGINS = /undefined/environment/ # ---------------------------------------------------- # Application section # ---------------------------------------------------- # # Some applications need special support libraries or might only be # applicable on certain platforms. These definitions are blank if # the application should not be compiled or contain the name of # the application if it should be compiled. # TSP_APP = @TSP_APP@ SSL_APP = @SSL_APP@ CRYPTO_APP = @CRYPTO_APP@ # ---------------------------------------------------- # HiPE # ---------------------------------------------------- HIPE_ENABLED=@HIPE_ENABLED@ # ---------------------------------------------------- # Command macros # ---------------------------------------------------- INSTALL = @INSTALL@ INSTALL_DIR = @INSTALL_DIR@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_DATA = @INSTALL_DATA@ CC = @CC@ HCC = @HCC@ CC32 = @CC32@ CFLAGS32 = @CFLAGS32@ BASIC_CFLAGS = @CFLAGS@ DEBUG_FLAGS = @DEBUG_FLAGS@ LD = @LD@ RANLIB = @RANLIB@ AR = @AR@ PERL = @PERL@ BITS64 = @BITS64@ OTP_RELEASE = @OTP_RELEASE@ # ---------------------------------------------------- # Erlang language section # ---------------------------------------------------- EMULATOR = beam ifeq ($(findstring vxworks,$(TARGET)),vxworks) # VxWorks object files should be compressed. # Other object files should have debug_info. ERL_COMPILE_FLAGS += +compressed else ifeq ($(findstring ose_ppc750,$(TARGET)),ose_ppc750) ERL_COMPILE_FLAGS += +compressed else ifdef BOOTSTRAP ERL_COMPILE_FLAGS += +slim else ERL_COMPILE_FLAGS += +debug_info endif endif endif ERLC_WFLAGS = -W ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS) ERL = erl -boot start_clean ifneq (,$(findstring $(origin EBIN),$(DUBIOUS_ORIGINS))) EBIN = ../ebin endif # Generated (non ebin) files... ifneq (,$(findstring $(origin EGEN),$(DUBIOUS_ORIGINS))) EGEN = . endif ifneq (,$(findstring $(origin ESRC),$(DUBIOUS_ORIGINS))) ESRC = . endif $(EBIN)/%.beam: $(EGEN)/%.erl $(ERLC) $(ERL_COMPILE_FLAGS) -o$(EBIN) $< $(EBIN)/%.beam: $(ESRC)/%.erl $(ERLC) $(ERL_COMPILE_FLAGS) -o$(EBIN) $< .erl.beam: $(ERLC) $(ERL_COMPILE_FLAGS) -o$(dir $@) $< # # When .erl files are automatically created GNU make removes them if # they were the result of a chain of implicit rules. To prevent this # we say that all .erl files are "precious". # .PRECIOUS: %.erl ## Uncomment these lines and add .idl to suffixes above to have erlc ## eat IDL files ##$(EGEN)/%.erl: $(ESRC)/%.idl ## $(ERLC) $(IDL_FLAGS) $< $(EGEN)/%.erl: $(ESRC)/%.yrl $(ERLC) $(YRL_FLAGS) -o$(EGEN) $< $(EGEN)/%.erl: $(ESRC)/%.xrl $(ERLC) $(XRL_FLAGS) -o$(EGEN) $< # ---------------------------------------------------- # SNMP language section # ---------------------------------------------------- SNMP_TOOLKIT = $(ERL_TOP)/lib/snmp ifeq ($(SNMP_BIN_TARGET_DIR),) SNMP_BIN_TARGET_DIR = ../priv/mibs endif ifeq ($(SNMP_HRL_TARGET_DIR),) SNMP_HRL_TARGET_DIR = ../include endif $(SNMP_BIN_TARGET_DIR)/%.bin: %.mib $(ERLC) -pa $(SNMP_TOOLKIT)/ebin -I $(SNMP_TOOLKIT)/priv/mibs $(SNMP_FLAGS) -o $(SNMP_BIN_TARGET_DIR) $< $(SNMP_HRL_TARGET_DIR)/%.hrl: $(SNMP_BIN_TARGET_DIR)/%.bin $(ERLC) -pa $(SNMP_TOOLKIT)/ebin -o $(SNMP_HRL_TARGET_DIR) $< .mib.bin: $(ERLC) -pa $(SNMP_TOOLKIT)/ebin -I $(SNMP_TOOLKIT)/priv/mibs $(SNMP_FLAGS) $< .bin.hrl: $(ERLC) -pa $(SNMP_TOOLKIT)/ebin $< # ---------------------------------------------------- # Java language section # ---------------------------------------------------- JAVA= @JAVAC@ ifneq (,$(findstring $(origin JAVA_DEST_ROOT),$(DUBIOUS_ORIGINS))) JAVA_DEST_ROOT = ../priv/ endif .java.class: CLASSPATH=$(CLASSPATH) $(JAVA) $(JAVA_OPTIONS) $< $(JAVA_DEST_ROOT)$(JAVA_CLASS_SUBDIR)%.class: %.java CLASSPATH=$(CLASSPATH) $(JAVA) $(JAVA_OPTIONS) -d $(JAVA_DEST_ROOT) $< # ---------------------------------------------------- # Emacs byte code compiling # ---------------------------------------------------- EMACS_COMPILER=emacs-20 EMACS_COMPILE_OPTIONS=-q --no-site-file -batch -f batch-byte-compile .el.elc: $(EMACS_COMPILER) $(EMACS_COMPILE_OPTIONS) $< # ---------------------------------------------------- # Documentation section # ---------------------------------------------------- export VSN DOCDIR = .. HTMLDIR = $(DOCDIR)/html MAN1DIR = $(DOCDIR)/man1 MAN2DIR = $(DOCDIR)/man2 MAN3DIR = $(DOCDIR)/man3 MAN4DIR = $(DOCDIR)/man4 MAN6DIR = $(DOCDIR)/man6 MAN9DIR = $(DOCDIR)/man9 TEXDIR = . # HTML & GIF files that always are generated and must be delivered SGML_COLL_FILES = $(SGML_APPLICATION_FILES) $(SGML_PART_FILES) XML_COLL_FILES = $(XML_APPLICATION_FILES) $(XML_PART_FILES) FASCICULES = $(wildcard fascicules.sgml) $(wildcard fascicules.xml) DEFAULT_HTML_FILES = \ $(SGML_COLL_FILES:%.sgml=$(HTMLDIR)/%_frame.html) \ $(SGML_COLL_FILES:%.sgml=$(HTMLDIR)/%_first.html) \ $(SGML_COLL_FILES:%.sgml=$(HTMLDIR)/%_term.html) \ $(SGML_COLL_FILES:%.sgml=$(HTMLDIR)/%_cite.html) \ $(SGML_APPLICATION_FILES:%.sgml=$(HTMLDIR)/%_index.html) \ $(SGML_APPLICATION_FILES:%.sgml=$(HTMLDIR)/%.kwc) \ $(FASCICULES:%.sgml=$(HTMLDIR)/index.html) \ $(XML_COLL_FILES:%.xml=$(HTMLDIR)/%_frame.html) \ $(XML_COLL_FILES:%.xml=$(HTMLDIR)/%_first.html) \ $(XML_COLL_FILES:%.xml=$(HTMLDIR)/%_term.html) \ $(XML_COLL_FILES:%.xml=$(HTMLDIR)/%_cite.html) \ $(XML_APPLICATION_FILES:%.xml=$(HTMLDIR)/%_index.html) \ $(XML_APPLICATION_FILES:%.xml=$(HTMLDIR)/%.kwc) \ $(FASCICULES:%.xml=$(HTMLDIR)/index.html) DEFAULT_GIF_FILES = $(HTMLDIR)/min_head.gif # # Flags & Commands # # docbuilder DOCBTRANSFORM = docb_transform SGML_FLAG_term = -ptype unix -ptype windows \ -defs term $(ERL_TOP)/system/doc/definitions/term.defs \ -defs cite $(ERL_TOP)/system/doc/definitions/cite.defs -- SGML_FLAG_booksty = -booksty otpA4 SGML_FLAGS = -s $(SGML_FLAG_term) $(SGML_FLAG_booksty) # latex DOCBTEX2DVI = docb_tex2dvi # dvips DOCBDVI2PS = docb_dvi2ps DVI2PS = docb_dvi2ps ## XXX Some Makefiles need this. # Acrobat distill DISTILL = distill DISTILL_FLAGS = -quiet -noprefs -compatlevel 3.0 -colordownsample off -graydownsample off -monodownsample off # LaTeX files to be rm'd when doing 'clearmake clean' LATEX_CLEAN = *.aux *.cites *.citeshd *.dvi *.idx *.ilg *.ind \ *.indhd *.lof *.lofhd *.log *.lot *.lothd *.otpdef \ *.otpuse *.terms *.termshd *.toc *.makeindexlog *.dvipslog \ *.bib *.bbl *.blg *.bibhd # # Rules # %.html:: %.sgml $(DOCBTRANSFORM) -ent html -html -outdir . $(SGML_FLAGS) $* @$(RM) $*.html.sgmls_errs $*.html.sgmls_output %.html:: %.xml $(DOCBTRANSFORM) -ent html -html -outdir . $(SGML_FLAGS) $* $(HTMLDIR)/%.html:: %.sgml $(DOCBTRANSFORM) -ent html -html -outdir $(HTMLDIR) $(SGML_FLAGS) $* @$(RM) $*.html.sgmls_errs $*.html.sgmls_output $(HTMLDIR)/%.html:: %.xml $(DOCBTRANSFORM) -ent html -html -outdir $(HTMLDIR) $(SGML_FLAGS) $* $(MAN1DIR)/%.1:: %.sgml $(DOCBTRANSFORM) -ent man -m 1 -outdir $(MAN1DIR) $(SGML_FLAGS) $* @$(RM) $*.man1.sgmls_errs $*.man1.sgmls_output $(MAN1DIR)/%.1:: %.xml $(DOCBTRANSFORM) -ent man -m 1 -outdir $(MAN1DIR) $(SGML_FLAGS) $* $(MAN2DIR)/%.2:: %.sgml $(DOCBTRANSFORM) -ent man -m 2 -outdir $(MAN2DIR) $(SGML_FLAGS) $* @$(RM) $*.man2.sgmls_errs $*.man2.sgmls_output $(MAN2DIR)/%.2:: %.xml $(DOCBTRANSFORM) -ent man -m 2 -outdir $(MAN2DIR) $(SGML_FLAGS) $* $(MAN3DIR)/%.3:: %.sgml $(DOCBTRANSFORM) -ent man -m 3 -outdir $(MAN3DIR) $(SGML_FLAGS) $* @$(RM) $*.man3.sgmls_errs $*.man3.sgmls_output $(MAN3DIR)/%.3:: %.xml $(DOCBTRANSFORM) -ent man -m 3 -outdir $(MAN3DIR) $(SGML_FLAGS) $* $(MAN4DIR)/%.4:: %.sgml $(DOCBTRANSFORM) -ent man -m 4 -outdir $(MAN4DIR) $(SGML_FLAGS) $* @$(RM) $*.man4.sgmls_errs $*.man4.sgmls_output $(MAN4DIR)/%.4:: %.xml $(DOCBTRANSFORM) -ent man -m 4 -outdir $(MAN4DIR) $(SGML_FLAGS) $* $(MAN6DIR)/%.6:: %_app.sgml $(DOCBTRANSFORM) -ent man -m 6 -outdir $(MAN6DIR) $(SGML_FLAGS) $*_app @$(RM) $*_app.man6.sgmls_errs $*_app.man6.sgmls_output mv $(MAN6DIR)/$*_app.6 $@ $(MAN6DIR)/%.6:: %_app.xml $(DOCBTRANSFORM) -ent man -m 6 -outdir $(MAN6DIR) $(SGML_FLAGS) $*_app mv $(MAN6DIR)/$*_app.6 $@ $(MAN9DIR)/%.9:: %.sgml $(DOCBTRANSFORM) -ent man -m 9 -outdir $(MAN9DIR) $(SGML_FLAGS) $* @$(RM) $*.man9.sgmls_errs $*.man9.sgmls_output $(MAN9DIR)/%.9:: %.xml $(DOCBTRANSFORM) -ent man -m 9 -outdir $(MAN9DIR) $(SGML_FLAGS) $* %.tex:: %.sgml (cd `dirname $*`; \ $(DOCBTRANSFORM) -includepath `pwd` \ -ent latex -latex $(SGML_FLAGS) `basename $*`; \ $(RM) `basename $*`.latex.sgmls_errs \ `basename $*`.latex.sgmls_output) %.tex:: %.xml (cd `dirname $*`; \ $(DOCBTRANSFORM) -includepath `pwd` \ -ent latex -latex $(SGML_FLAGS) `basename $*`) %.dvi: %.tex $(DOCBTEX2DVI) $* %.ps: %.dvi $(DOCBDVI2PS) -o $@ $< %.psframe: %.dvi $(DOCBDVI2PS) -frame -o $@ $< %.pscrop: %.dvi $(DOCBDVI2PS) -crop -o $@ $< %.pdf: %.ps $(DISTILL) $(DISTILL_FLAGS) < $< > $@