# ``The contents of this file are subject to the Erlang Public License, # Version 1.1, (the "License"); you may not use this file except in # compliance with the License. You should have received a copy of the # Erlang Public License along with this software. If not, it can be # retrieved via the world wide web at http://www.erlang.org/. # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Initial Developer of the Original Code is Ericsson Utvecklings AB. # Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings # AB. All Rights Reserved.'' # # $Id$ # # Toplevel makefile for building the Erlang system # # ---------------------------------------------------------------------- # And you'd think that this would be obvious... :-) SHELL = /bin/sh # The top directory in which Erlang is unpacked ERL_TOP = /mnt/gmirror/ports/lang/erlang-lite/work/otp_src_R12B-0 # erts (Erlang RunTime System) version ERTS = erts-5.6 # ---------------------------------------------------------------------- # # The variables below control where Erlang is installed. They are # configurable (unless otherwise stated). Some of them are best # changed by giving special arguments to configure instead of changing # them in this file. Note: If you change them in Makefile, instead of # Makefile.in your changes will be lost the next time you run # configure. # # prefix from autoconf, default is /usr/local (must be an absolute path) prefix = exec_prefix = ${prefix} # The following can be set in case you install Erlang in a different # location from where you have configured it to run. This can be # useful e.g. when installing on a server that stores the files with a # different path from where the clients access them. Or when building # rpms. #INSTALL_PREFIX = # Naah...override `prefix' instead. # The directory in which user executables (ERL_BASE_PUB_FILES) are put BINDIR = $(INSTALL_PREFIX)${exec_prefix}/bin # # Erlang base public files # ERL_BASE_PUB_FILES=erl erlc epmd run_erl to_erl dialyzer typer escript # The directory which will contain installed Erlang version. # (ILIBDIR is supposed to be LIBDIR *without* the install prefix) ERLANG_LIBDIR = $(INSTALL_PREFIX)${exec_prefix}/lib/erlang ERLANG_ILIBDIR = ${exec_prefix}/lib/erlang # You can *not* change these two, they have to stay this way for now. ERLANG_BINDIR = $(ERLANG_LIBDIR)/bin ERLANG_ERTSBINDIR = $(ERLANG_LIBDIR)/$(ERTS)/bin # The directory in which man pages for above executables are put ERL_MAN1DIR = $(INSTALL_PREFIX)${prefix}/man/man1 ERL_MAN1EXT = 1 # The directory in which Erlang private man pages are put. In order # not to clutter up the man namespace these are by default put in the # Erlang private directory $(ERLANG_ILIBDIR)/man. If you want to # install the man pages together with the rest give the argument # "--disable-erlang-mandir" when you run configure, which will set # MAN_DIR to ${prefix}/man. # If you want a special suffix on the manpages set ERL_MANEXT to # this suffix, e.g. "erl" ERL_MANDIR = $(INSTALL_PREFIX)$(ERLANG_ILIBDIR)/man ERL_MANEXT = # ---------------------------------------------------------------------- # Must be GNU make! MAKE = gmake # This should be set to the target "arch-vendor-os" TARGET = i386-unknown-gnu # A BSD compatible install program INSTALL = /usr/bin/install -c -o root -g wheel INSTALL_PROGRAM = install -s -o root -g wheel -m 555 INSTALL_DATA = install -o root -g wheel -m 444 MKSUBDIRS = ${INSTALL} -d # Program to create symbolic links LN_S = ln -s # Ranlib program, if not needed set to e.g. ":" RANLIB = ranlib # ---------------------------------------------------------------------- # # The directory where at least the primary bootstrap is placed under. # # We need to build to view private files in case we are in clearcase; # therefore, we don't want BOOTSTRAP_TOP changed. # # PRIMARY_BOOTSTRAP_TOP would perhaps have been a better name... # override BOOTSTRAP_TOP = $(ERL_TOP)/bootstrap # BOOTSTRAP_SRC_TOP is normally the same as BOOTSTRAP_TOP but # it is allowed to be changed BOOTSTRAP_SRC_TOP = $(BOOTSTRAP_TOP) # Where to install the bootstrap directory. # # Typically one might want to set this to a fast local filesystem, or, # the default, as ERL_TOP BOOTSTRAP_ROOT = $(ERL_TOP) # Directories which you need in the path if you wish to run the # locally built system. (This can be put in front or back of the path # depending on which system is preferred.) LOCAL_PATH = $(ERL_TOP)/erts/bin/$(TARGET):$(ERL_TOP)/erts/bin ifeq ($(TARGET),win32) WIN32_WRAPPER_PATH=$(ERL_TOP)/erts/etc/win32/cygwin_tools BOOT_PREFIX=$(WIN32_WRAPPER_PATH):$(BOOTSTRAP_ROOT)/bootstrap/bin: else BOOT_PREFIX=$(BOOTSTRAP_ROOT)/bootstrap/bin: endif # ---------------------------------------------------------------------- # Fix up RELEASE_ROOT/TESTROOT havoc ifeq ($(RELEASE_ROOT),) ifneq ($(TESTROOT),) RELEASE_ROOT = $(TESTROOT) endif endif # ---------------------------------------------------------------------- # A default for the release_tests, not same target dir as release. # More TESTROOT havoc... ifeq ($(TESTSUITE_ROOT),) ifneq ($(TESTROOT),) TESTSUITE_ROOT = $(TESTROOT) else TESTSUITE_ROOT = $(ERL_TOP)/release/tests endif endif # # The steps to build a working system are: # * build an emulator # * setup the erl and erlc program in bootstrap/bin # * build additional compilers and copy them into bootstrap/lib # * use the bootstrap erl and erlc to build all the libs # all: all_bootstraps \ libs local_setup dialyzer # With all bootstraps we mean all bootstrapping that is done when # the system is delivered in open source, the primary # bootstrap is not included, it requires a pre built emulator... all_bootstraps: depend emulator \ bootstrap_setup \ secondary_bootstrap_build secondary_bootstrap_copy \ tertiary_bootstrap_build tertiary_bootstrap_copy \ fourth_bootstrap_build fourth_bootstrap_copy # # Use these targets when you want to use the erl and erlc # binaries in your PATH instead of those created from the # pre-compiled Erlang modules under bootstrap/. # ifeq ($(findstring ose,$(TARGET)),ose) noboot: $(MAKE) BOOT_PREFIX= emulator libs else noboot: $(MAKE) BOOT_PREFIX= emulator libs local_setup endif noboot_install: $(MAKE) BOOT_PREFIX= install .PHONY: release release_docs release: ifeq ($(OTP_SMALL_BUILD),true) cd $(ERL_TOP)/lib && $(MAKE) TESTROOT=$(RELEASE_ROOT) release else cd $(ERL_TOP)/lib && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release ifneq ($(findstring vxworks,$(TARGET)),vxworks) if test -f lib/dialyzer/SKIP ; then \ echo "=== Skipping dialyzer, reason:" ; \ cat lib/dialyzer/SKIP ; \ echo "===" ; \ else \ cd $(ERL_TOP)/lib/dialyzer && \ $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release ; \ fi endif endif cd $(ERL_TOP)/erts && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release # --------------------------------------------------------------- # Target only used when building commercial ERTS patches # --------------------------------------------------------------- release_docs: ifeq ($(OTP_SMALL_BUILD),true) cd $(ERL_TOP)/lib && $(MAKE) TESTROOT=$(RELEASE_ROOT) release_docs else cd $(ERL_TOP)/lib && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release_docs cd $(ERL_TOP)/lib/dialyzer && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release_docs endif cd $(ERL_TOP)/erts && $(MAKE) BUILD_ALL=1 TESTROOT=$(RELEASE_ROOT) release_docs # ---------------------------------------------------------------------- ERLANG_EARS=$(BOOTSTRAP_ROOT)/bootstrap/erts ELINK=$(BOOTSTRAP_ROOT)/bootstrap/erts/bin/elink BOOT_BINDIR=$(BOOTSTRAP_ROOT)/bootstrap/erts/bin BEAM_EVM=$(ERL_TOP)/bin/$(TARGET)/beam_evm BOOTSTRAP_COMPILER = $(BOOTSTRAP_TOP)/primary_compiler emulator: cd erts && ERL_TOP=$(ERL_TOP) $(MAKE) NO_START_SCRIPTS=true $(TYPE) FLAVOR=$(FLAVOR) libs: ifeq ($(OTP_SMALL_BUILD),true) cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt else cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt BUILD_ALL=true endif kernel: cd lib/kernel && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt BUILD_ALL=true hlib: cd lib/hipe && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt BUILD_ALL=true dialyzer: ifneq ($(OTP_SMALL_BUILD),true) if test -f lib/dialyzer/SKIP ; then \ echo "=== Skipping dialyzer, reason:" ; \ cat lib/dialyzer/SKIP ; \ echo "===" ; \ else \ cd lib/dialyzer && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt BUILD_ALL=true ; \ fi endif typer: cd lib/typer && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt BUILD_ALL=true dep depend: cd erts/emulator && ERL_TOP=$(ERL_TOP) $(MAKE) generate depend cd erts/lib_src && ERL_TOP=$(ERL_TOP) $(MAKE) depend # Creates "erl" and "erlc" in bootstrap/bin which uses the precompiled # libraries in the bootstrap directory # ---------------------------------------------------------------------- # Bootstraps... # ---------------------------------------------------------------------- bootstrap_setup: check_recreate_primary_bootstrap ifeq ($(TARGET),win32) @rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/erl.exe \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc.exe \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl.ini \ $(BOOTSTRAP_ROOT)/bootstrap/bin/beam.dll make_bootstrap_ini.sh $(BOOTSTRAP_ROOT)/bootstrap \ $(ERL_TOP)/bin/$(TARGET) @cp $(ERL_TOP)/bin/$(TARGET)/erlc.exe \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc.exe @cp $(ERL_TOP)/bin/$(TARGET)/erl.exe \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl.exe else @rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/erl \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc @sed -e "s;%FINAL_ROOTDIR%;$(BOOTSTRAP_ROOT)/bootstrap;" \ -e "s;\$$ROOTDIR/erts-.*/bin;$(ERL_TOP)/bin/$(TARGET);" \ -e "s;EMU=.*;EMU=beam$(TYPEMARKER);" \ $(ERL_TOP)/erts/etc/unix/erl.src.src > \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erl @cp $(ERL_TOP)/bin/$(TARGET)/erlc $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc @chmod 755 $(BOOTSTRAP_ROOT)/bootstrap/bin/erl \ $(BOOTSTRAP_ROOT)/bootstrap/bin/erlc endif secondary_bootstrap_build: cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt SECONDARY_BOOTSTRAP=true secondary_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/hipe ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/hipe ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/hipe/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/hipe/ebin ; fi if test -f lib/hipe/ebin/hipe.beam ; then cp lib/hipe/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/hipe/ebin; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include ; fi cp lib/parsetools/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/ebin cp -f lib/parsetools/include/*.hrl $(BOOTSTRAP_ROOT)/bootstrap/lib/parsetools/include if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1 ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1 ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/src ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/src ; fi cp lib/asn1/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/ebin cp -f lib/asn1/src/*.erl lib/asn1/src/*.hrl $(BOOTSTRAP_ROOT)/bootstrap/lib/asn1/src tertiary_bootstrap_build: cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt TERTIARY_BOOTSTRAP=true tertiary_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/include ; fi cp lib/snmp/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/snmp/ebin fourth_bootstrap_build: cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) opt FOURTH_BOOTSTRAP=true fourth_bootstrap_copy: if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/include ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/ic ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/ic ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/ic/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/ic/ebin ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/ic/include ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/ic/include ; fi cp lib/ic/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/ic/ebin cp -f lib/ic/include/*.idl lib/ic/include/*.h $(BOOTSTRAP_ROOT)/bootstrap/lib/ic/include cp lib/sasl/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/sasl/ebin if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools ; fi if test ! -d $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools/ebin ; then mkdir $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools/ebin ; fi cp lib/syntax_tools/ebin/*.beam $(BOOTSTRAP_ROOT)/bootstrap/lib/syntax_tools/ebin .PHONY: check_recreate_primary_bootstrap recreate_primary_bootstrap # # If the source is a prebuilt delivery, no $(ERL_TOP)/bootstrap/lib # directory will exist. All applications part of the primary bootstrap # are delivered prebuilt though. If it is a prebuilt delivery we need # to recreate the primary bootstrap, from the prebuilt result. # # A prebuild delivery always contain a $(ERL_TOP)/prebuilt.files file. # If no such file exists, we wont try to recreate the primary bootstrap, # since it will just fail producing anything useful. # check_recreate_primary_bootstrap: @if test -f $(ERL_TOP)/prebuilt.files ; then \ if test ! -d $(ERL_TOP)/bootstrap/lib ; then \ $(MAKE) ERL_TOP=$(ERL_TOP) recreate_primary_bootstrap ; \ fi ; \ fi # # recreate_primary_bootstrap assumes that if $(ERL_TOP)/prebuilt.files # exist, all build results needed already exist in the application specific # directories of all applications part of the primary bootstrap. # recreate_primary_bootstrap: @if test ! -f $(ERL_TOP)/prebuilt.files ; then \ echo "Cannot recreate bootstrap; this is not a pre-built source distribution" ; \ else \ if test -d $(ERL_TOP)/bootstrap/lib ; then \ echo "Bootstrap already exist" ; \ else \ echo "Recreating primary bootstrap" ; \ $(MAKE) ERL_TOP=$(ERL_TOP) \ BOOTSTRAP_SRC_TOP=$(ERL_TOP) \ BOOTSTRAP_ROOT=$(ERL_TOP) \ primary_bootstrap_to_bootstrap_root_copy ; \ fi ; \ fi # The first bootstrap build is rarely (never) used in open source, it's # used to build the shipped bootstrap directory. The Open source bootstrap # stages start with secondary bootstrap. # # These are the ones used, the other ones (prefixed with old_) are for BC. # These modules should stay in the kernel directory to make building # of the emulator possible KERNEL_PRELOAD = otp_ring0 init erl_prim_loader prim_inet prim_file erlang .PHONY: primary_bootstrap \ primary_bootstrap_check_make \ primary_bootstrap_build \ primary_bootstrap_compiler \ primary_bootstrap_mkdirs \ primary_bootstrap_copy \ primary_bootstrap_to_bootstrap_root_copy primary_bootstrap: primary_bootstrap_check_make @echo "=== Building a bootstrap compiler in $(BOOTSTRAP_ROOT)/bootstrap" cd $(ERL_TOP) && \ $(MAKE) TESTROOT=$(BOOTSTRAP_TOP) \ BOOTSTRAP_TOP=$(BOOTSTRAP_TOP) \ primary_bootstrap_build cd $(ERL_TOP) && \ $(MAKE) TESTROOT=$(BOOTSTRAP_TOP) \ BOOTSTRAP_TOP=$(BOOTSTRAP_TOP) \ primary_bootstrap_copy cd lib/kernel/src && \ $(MAKE) ERLC_FLAGS='-pa $(BOOTSTRAP_COMPILER)/ebin' \ $(KERNEL_PRELOAD:%=../ebin/%.beam) cd $(ERL_TOP)/erts/start_scripts && \ $(MAKE) TESTROOT=$(BOOTSTRAP_TOP) \ BOOTSTRAP_TOP=$(BOOTSTRAP_TOP) bootstrap_scripts test $(BOOTSTRAP_ROOT) = $(ERL_TOP) || \ $(MAKE) ERL_TOP=$(ERL_TOP) \ BOOTSTRAP_SRC_TOP=$(BOOTSTRAP_TOP) \ BOOTSTRAP_ROOT=$(BOOTSTRAP_ROOT) \ primary_bootstrap_to_bootstrap_root_copy # # Dependencies are not complete in all makefiles; therefore, remove bootstrap # build result and build from scratch if we are not using clearmake (which # tracks dependencies itself). # primary_bootstrap_check_make: @ case "$(MAKE)" in \ *clearmake*) \ ;; \ *) \ $(MAKE) BOOTSTRAP_ROOT=$(BOOTSTRAP_ROOT) \ ERL_TOP=$(ERL_TOP) \ bootstrap_clean \ ;; \ esac primary_bootstrap_build: primary_bootstrap_mkdirs primary_bootstrap_compiler \ primary_bootstrap_stdlib cd lib && $(MAKE) ERLC_FLAGS='-pa $(BOOTSTRAP_COMPILER)/ebin' \ BOOTSTRAP_TOP=$(BOOTSTRAP_TOP) \ BOOTSTRAP=1 opt primary_bootstrap_compiler: cd lib/compiler && $(MAKE) \ BOOTSTRAP_TOP=$(BOOTSTRAP_TOP) \ BOOTSTRAP_COMPILER=$(BOOTSTRAP_COMPILER) \ BOOTSTRAP=1 \ opt primary_bootstrap_stdlib: cd lib/stdlib/src && $(MAKE) \ BOOTSTRAP_COMPILER=$(BOOTSTRAP_COMPILER) \ primary_bootstrap_compiler primary_bootstrap_mkdirs: test -d $(BOOTSTRAP_COMPILER)/egen \ || mkdir -p $(BOOTSTRAP_COMPILER)/egen test -d $(BOOTSTRAP_COMPILER)/ebin \ || mkdir -p $(BOOTSTRAP_COMPILER)/ebin test -d $(BOOTSTRAP_TOP)/lib/kernel/egen \ || mkdir -p $(BOOTSTRAP_TOP)/lib/kernel/egen test -d $(BOOTSTRAP_TOP)/lib/kernel/ebin \ || mkdir -p $(BOOTSTRAP_TOP)/lib/kernel/ebin test -d $(BOOTSTRAP_TOP)/lib/kernel/include \ || mkdir -p $(BOOTSTRAP_TOP)/lib/kernel/include test -d $(BOOTSTRAP_TOP)/lib/stdlib/egen \ || mkdir -p $(BOOTSTRAP_TOP)/lib/stdlib/egen test -d $(BOOTSTRAP_TOP)/lib/stdlib/ebin \ || mkdir -p $(BOOTSTRAP_TOP)/lib/stdlib/ebin test -d $(BOOTSTRAP_TOP)/lib/stdlib/include \ || mkdir -p $(BOOTSTRAP_TOP)/lib/stdlib/include test -d $(BOOTSTRAP_TOP)/lib/compiler/egen \ || mkdir -p $(BOOTSTRAP_TOP)/lib/compiler/egen test -d $(BOOTSTRAP_TOP)/lib/compiler/ebin \ || mkdir -p $(BOOTSTRAP_TOP)/lib/compiler/ebin test -d $(BOOTSTRAP_TOP)/lib/orber/include \ || mkdir -p $(BOOTSTRAP_TOP)/lib/orber/include primary_bootstrap_copy: cp -f lib/kernel/include/*.hrl $(BOOTSTRAP_TOP)/lib/kernel/include cp -f lib/stdlib/include/*.hrl $(BOOTSTRAP_TOP)/lib/stdlib/include cp -f lib/orber/include/* $(BOOTSTRAP_TOP)/lib/orber/include primary_bootstrap_to_bootstrap_root_copy: test -d $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/ebin \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/ebin test -d $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/include \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/include cp -f $(BOOTSTRAP_SRC_TOP)/lib/kernel/ebin/*.beam \ $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/ebin cp -f $(BOOTSTRAP_SRC_TOP)/lib/kernel/ebin/*.app* \ $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/ebin cp -f $(BOOTSTRAP_SRC_TOP)/lib/kernel/include/*.hrl \ $(BOOTSTRAP_ROOT)/bootstrap/lib/kernel/include test -d $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/ebin \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/ebin test -d $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/include \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/include cp -f $(BOOTSTRAP_SRC_TOP)/lib/stdlib/ebin/*.beam \ $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/ebin cp -f $(BOOTSTRAP_SRC_TOP)/lib/stdlib/ebin/*.app* \ $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/ebin cp -f $(BOOTSTRAP_SRC_TOP)/lib/stdlib/include/*.hrl \ $(BOOTSTRAP_ROOT)/bootstrap/lib/stdlib/include test -d $(BOOTSTRAP_ROOT)/bootstrap/lib/compiler/ebin \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/lib/compiler/ebin cp -f $(BOOTSTRAP_SRC_TOP)/lib/compiler/ebin/*.beam \ $(BOOTSTRAP_ROOT)/bootstrap/lib/compiler/ebin cp -f $(BOOTSTRAP_SRC_TOP)/lib/compiler/ebin/*.app* \ $(BOOTSTRAP_ROOT)/bootstrap/lib/compiler/ebin test -d $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include cp -f $(BOOTSTRAP_SRC_TOP)/lib/orber/include/* \ $(BOOTSTRAP_ROOT)/bootstrap/lib/orber/include ifneq ($(BOOTSTRAP_SRC_TOP),$(ERL_TOP)) test -d $(BOOTSTRAP_ROOT)/bootstrap/bin \ || mkdir -p $(BOOTSTRAP_ROOT)/bootstrap/bin cp -f $(BOOTSTRAP_SRC_TOP)/bin/* \ $(BOOTSTRAP_ROOT)/bootstrap/bin endif # To remove modules left by the bootstrap building, but leave (restore) # the modules in kernel which are needed for an emulator build KERNEL_PRELOAD_BEAMS=$(KERNEL_PRELOAD:%=$(BOOTSTRAP_TOP)/lib/kernel/ebin/%.beam) # Creates "erl" and "erlc" scripts in bin/erl which uses the libraries in lib local_setup: @rm -f erts/bin/erl erts/bin/erlc erts/bin/cerl @cd erts && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) local_setup # ---------------------------------------------------------------------- # Build tests # --------------------------------------------------------------------- # Start with building the test server TESTS = test_server # Tests that can be run on any platform (keep alphabetic order, please) TESTS += \ asn1_test \ compiler_test \ emulator_test \ epmd_test \ erl_interface_test \ ic_test \ inets_test \ inviso_test \ jinterface_test \ kernel_test \ megaco_test \ mnesia_test \ observer_test \ orber_test \ os_mon_test \ otp_mibs_test \ percept_test \ pman_test \ sasl_test \ snmp_test \ runtime_tools_test \ stdlib_test \ system_test \ test_server_test # Tests that can *not* be run on VxWorks ifneq ($(findstring vxworks,$(TARGET)),vxworks) TESTS += \ cosTransactions_test \ cosEvent_test \ cosTime_test \ cosNotification_test \ cosProperty_test \ cosFileTransfer_test \ cosEventDomain_test \ crypto_test \ debugger_test \ edoc_test \ hipe_test \ odbc_test \ parsetools_test \ ssl_test \ ssh_test \ syntax_tools_test \ tools_test \ toolbar_test \ xmerl_test endif .PHONY: tests release_tests test_server emulator_test system_test epmd_test tests release_tests: $(TESTS) # Build the test_server test_server: cd lib/test_server && $(MAKE) TESTROOT=$(TESTSUITE_ROOT) release_tests emulator_test: cd erts/emulator/test && $(MAKE) TESTROOT=$(TESTSUITE_ROOT) release_tests system_test: cd erts/test && $(MAKE) TESTROOT=$(TESTSUITE_ROOT) release_tests epmd_test: cd erts/epmd/test && $(MAKE) TESTROOT=$(TESTSUITE_ROOT) release_tests %_test: @dir="`echo $@ | sed 's/_test$$//'`"; \ cd lib/$$dir/test && $(MAKE) TESTROOT=$(TESTSUITE_ROOT) release_tests # Should I also set TESTROOT_DIR=$(TESTSUITE_ROOT) ? # ---------------------------------------------------------------------- # ---------------------------------------------------------------------- # Obsolete type of bootstrap where all stages where built with installed sytem # shuld no longer be used and is soon to be removed. # Abbreviations: OC = Old Compiler, NC = New Compiler, # OE = Old Emulator, NE = New Emulator old_com_bootstrap: old_bootstrap_nc_for_ne_all_stages old_bootstrap_ne old_bootstrap_scripts # # Builds the New Compiler for the New Emulator (using existing erlc # and possibly new compiler) then copy everything to the release area. # Use to create the commerciall bootstrap version, which should be obsolete. # old_bootstrap_nc_for_ne_all_stages: test -d $(TESTROOT) || mkdir -p $(TESTROOT) cd lib && $(MAKE) BOOTSTRAP=1 TYPE=release release cd lib && $(MAKE) SECONDARY_BOOTSTRAP=1 TYPE=release release cd lib && $(MAKE) TERTIARY_BOOTSTRAP=1 TYPE=release release cd lib && $(MAKE) FOURTH_BOOTSTRAP=1 TYPE=release release old_bootstrap_ne: cd erts && $(MAKE) release old_bootstrap_scripts: cd erts/start_scripts && $(MAKE) release # This is one strange name for a target, this actually builds and strips only # the primary bootstrap, a minimal set of beam files to be able to continue # bootstrap builds. It's used by other makefiles, so I refrain from # changing the name right now... bootstrap_nc_for_ne_no_debug_sym: test -d $(TESTROOT) || mkdir -p $(TESTROOT) cd lib && $(MAKE) ERLC_FLAGS='-pa $(BOOTSTRAP_COMPILER)/ebin' \ BOOTSTRAP_TOP=$(BOOTSTRAP_TOP) BOOTSTRAP=1 TYPE=release release $(ERL_TOP)/erts/emulator/utils/beam_strip $(TESTROOT)/lib/*/ebin/*.beam # ---------------------------------------------------------------------- # # Install # # Order is important here, don't change it! # install: install.dirs install.emulator install.libs install.Install install.bin install.emulator: cd erts && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) TESTROOT=$(ERLANG_LIBDIR) release install.libs: ifeq ($(OTP_SMALL_BUILD),true) cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) TESTROOT=$(ERLANG_LIBDIR) release else cd lib && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) TESTROOT=$(ERLANG_LIBDIR) BUILD_ALL=true release if test -f lib/dialyzer/SKIP ; then \ echo "=== Skipping dialyzer, reason:" ; \ cat lib/dialyzer/SKIP ; \ echo "===" ; \ else \ cd lib/dialyzer && \ ERL_TOP=$(ERL_TOP) PATH=$(BOOT_PREFIX)$${PATH} \ $(MAKE) TESTROOT=$(ERLANG_LIBDIR) BUILD_ALL=true release ; \ fi endif install.Install: cd $(ERLANG_LIBDIR) && ./Install -minimal $(ERLANG_LIBDIR) # # Install erlang base public files # install.bin: for file in $(ERL_BASE_PUB_FILES); do \ rm -f $(BINDIR)/$$file; \ ${LN_S} $(ERLANG_BINDIR)/$$file $(BINDIR)/$$file; \ done # # Directories needed before we can install # install.dirs: test -d $(BINDIR) || ${MKSUBDIRS} $(BINDIR) ${MKSUBDIRS} $(ERLANG_LIBDIR) ${MKSUBDIRS} $(ERLANG_LIBDIR)/usr/lib # ---------------------------------------------------------------------- .PHONY: clean eclean bootstrap_root_clean bootstrap_clean # # Clean targets # clean: check_recreate_primary_bootstrap rm -f *~ *.bak config.log config.status prebuilt.files find . -type f -name SKIP -print | xargs $(RM) cd erts && ERL_TOP=$(ERL_TOP) $(MAKE) clean cd lib && ERL_TOP=$(ERL_TOP) $(MAKE) clean BUILD_ALL=true cd lib/dialyzer && ERL_TOP=$(ERL_TOP) $(MAKE) clean # # Just wipe out emulator, not libraries # eclean: cd erts && ERL_TOP=$(ERL_TOP) $(MAKE) clean # # Clean up bootstrap # bootstrap_root_clean: rm -f $(BOOTSTRAP_ROOT)/bootstrap/lib/*/ebin/*.beam rm -f $(BOOTSTRAP_ROOT)/bootstrap/lib/*/include/*.hrl rm -f $(BOOTSTRAP_ROOT)/bootstrap/bin/*.* # $(ERL_TOP)/bootstrap *should* equal $(BOOTSTRAP_TOP) # # We use $(ERL_TOP)/bootstrap instead of $(BOOTSTRAP_TOP) here as an # extra safety precaution (we would really make a mess if # $(BOOTSTRAP_TOP) for some reason should be empty). bootstrap_clean: rm -f $(ERL_TOP)/bootstrap/lib/*/ebin/*.beam rm -f $(ERL_TOP)/bootstrap/lib/*/egen/* rm -f $(ERL_TOP)/bootstrap/lib/*/include/*.hrl rm -f $(ERL_TOP)/bootstrap/primary_compiler/ebin/* rm -f $(ERL_TOP)/bootstrap/primary_compiler/egen/* rm -f $(ERL_TOP)/bootstrap/bin/*.* rm -f $(KERNEL_PRELOAD:%=$(ERL_TOP)/lib/kernel/ebin/%.beam) test $(BOOTSTRAP_ROOT) = $(ERL_TOP) \ || $(MAKE) BOOTSTRAP_ROOT=$(BOOTSTRAP_ROOT) bootstrap_root_clean # ----------------------------------------------------------------------