* ldlang.c: Fix some indentation and comments.
[deliverable/binutils-gdb.git] / Makefile.in
index 2489f1e108e75876fbdbca7148cda9c71ccb96be..0f1a8e483f47e42c48421c50ff3eb63561e5a097 100644 (file)
@@ -14,7 +14,7 @@
 # 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 #
 
 srcdir = .
@@ -86,19 +86,26 @@ CXXFLAGS_FOR_TARGET = $(CXXFLAGS)
 LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
 
 RANLIB = ranlib
+
+DLLTOOL = dlltool
+
 NM = nm
 # Not plain GZIP, since gzip looks there for extra command-line options.
 GZIPPROG = gzip
 
+# These values are substituted by configure.
+DEFAULT_YACC = yacc
+DEFAULT_LEX = lex
+
 # BISON: This line sed'ed to BISON = bison -y for FSF releases, don't remove.
 BISON = `if [ -f $$r/byacc/byacc ] ; \
            then echo $$r/byacc/byacc ; \
-           else echo byacc ; \
+           else echo ${DEFAULT_YACC} ; \
        fi`
 
 LEX = `if [ -f $$r/flex/flex ] ; \
        then echo $$r/flex/flex ; \
-       else echo flex ; fi`
+       else echo ${DEFAULT_LEX} ; fi`
 
 M4 = `if [ -f $$r/m4/m4 ] ; \
        then echo $$r/m4/m4 ; \
@@ -140,6 +147,19 @@ TARGET_SUBDIR = . # Changed by configure to $(target_alias) if cross.
 # This is set by the configure script to the arguments passed to configure.
 CONFIG_ARGUMENTS = 
 
+# This is set by configure to REALLY_SET_LIB_PATH if --enable-shared
+# was used.
+SET_LIB_PATH =
+
+# This is the name of the environment variable used for the path to
+# the libraries.  This may be changed by configure.in.
+RPATH_ENVVAR = LD_LIBRARY_PATH
+
+# configure.in sets SET_LIB_PATH to this if --enable-shared was used.
+REALLY_SET_LIB_PATH = \
+  $(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes:$$$(RPATH_ENVVAR); \
+  export $(RPATH_ENVVAR);
+
 ALL = all.normal
 INSTALL_TARGET = install-dirs \
        $(INSTALL_MODULES) \
@@ -318,8 +338,10 @@ EXTRA_HOST_FLAGS = \
        'AS=$(AS)' \
        'CC=$(CC)' \
        'CXX=$(CXX)' \
+       'DLLTOOL=$(DLLTOOL)' \
        'NM=$(NM)' \
-       'RANLIB=$(RANLIB)'
+       'RANLIB=$(RANLIB)' 
+
 
 FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS)
 
@@ -367,11 +389,20 @@ EXTRA_GCC_FLAGS = \
        'AS=$(AS)' \
        'CC=$(CC)' \
        'CXX=$(CXX)' \
+       'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
        'HOST_CC=$(CC_FOR_BUILD)' \
        'HOST_PREFIX=$(HOST_PREFIX)' \
        'HOST_PREFIX_1=$(HOST_PREFIX_1)' \
        'NM=$(NM)' \
-       'RANLIB=$$(RANLIB_FOR_TARGET)'
+       'RANLIB=$$(RANLIB_FOR_TARGET)' \
+       `if test x"$(LANGUAGES)" != x; then echo "LANGUAGES=$(LANGUAGES)"; fi` \
+       `if test x"$(STMP_FIXPROTO)" != x; then echo "STMP_FIXPROTO=$(STMP_FIXPROTO)"; fi` \
+       `if test x"$(LIMITS_H_TEST)" != x; then echo "LIMITS_H_TEST=$(LIMITS_H_TEST)"; fi` \
+       `if test x"$(LIBGCC1_TEST)" != x; then echo "LIBGCC1_TEST=$(LIBGCC1_TEST)"; fi` \
+       `if test x"$(LIBGCC2_CFLAGS)" != x; then echo "LIBGCC2_CFLAGS=$(LIBGCC2_CFLAGS)"; fi` \
+       `if test x"$(LIBGCC2_INCLUDES)" != x; then echo "LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)"; fi` \
+       `if test x"$(ENQUIRE)" != x; then echo "ENQUIRE=$(ENQUIRE)"; fi` \
+       `if test x"$(BOOT_CFLAGS)" != x; then echo "BOOT_CFLAGS=$(BOOT_CFLAGS)"; fi`
 
 GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS)
 
@@ -394,6 +425,7 @@ ALL_MODULES = \
        all-gawk \
        all-gprof \
        all-grep \
+       all-grez \
        all-gzip \
        all-hello \
        all-indent \
@@ -498,6 +530,7 @@ INSTALL_MODULES = \
        install-gawk \
        install-gprof \
        install-grep \
+       install-grez \
        install-gzip \
        install-hello \
        install-indent \
@@ -568,7 +601,8 @@ ALL_TARGET_MODULES = \
        all-target-newlib \
        all-target-winsup \
        all-target-libgloss \
-       all-target-libiberty
+       all-target-libiberty \
+       all-target-examples
 
 # This is a list of the configure targets for all of the modules which
 # are compiled using the target tools.
@@ -580,7 +614,8 @@ CONFIGURE_TARGET_MODULES = \
        configure-target-newlib \
        configure-target-winsup \
        configure-target-libgloss \
-       configure-target-libiberty
+       configure-target-libiberty \
+       configure-target-examples
 
 # This is a list of the check targets for all of the modules which are
 # compiled using $(TARGET_FLAGS_TO_PASS).
@@ -637,6 +672,7 @@ $(DO_X):
        @target=`echo $@ | sed -e 's/^do-//'`; \
        r=`pwd`; export r; \
        srcroot=`cd $(srcdir); pwd`; export srcroot; \
+       $(SET_LIB_PATH) \
        for i in $(SUBDIRS) -dummy-; do \
          if [ -f ./$$i/Makefile ]; then \
            case $$i in \
@@ -651,25 +687,31 @@ $(DO_X):
              done; \
              ;; \
            esac ; \
-           export AR AS CC CXX NM RANLIB; \
+           export AR AS CC CXX NM RANLIB DLLTOOL; \
            if (cd ./$$i; \
                $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
                        "CC=$${CC}" "CXX=$${CXX}" "NM=$${NM}" \
                        "RANLIB=$${RANLIB}" \
+                       "DLLTOOL=$${DLLTOOL}" \
                        $${target}); \
            then true; else exit 1; fi; \
          else true; fi; \
-       done;\
+       done
+       @target=`echo $@ | sed -e 's/^do-//'`; \
+       r=`pwd`; export r; \
+       srcroot=`cd $(srcdir); pwd`; export srcroot; \
+       $(SET_LIB_PATH) \
        for i in $(TARGET_CONFIGDIRS) -dummy-; do \
          if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \
            for flag in $(EXTRA_TARGET_FLAGS); do \
                eval `echo "$$flag" | sed -e "s|^\(.*\)=\(.*\)|\1='\2'|"`; \
            done; \
-           export AR AS CC CXX NM RANLIB; \
+           export AR AS CC CXX NM RANLIB DLLTOOL; \
            if (cd $(TARGET_SUBDIR)/$$i; \
                $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
                        "CC=$${CC}" "CXX=$${CXX}" "NM=$${NM}" \
                        "RANLIB=$${RANLIB}" \
+                       "DLLTOOL=$${DLLTOOL}" \
                        $${target}); \
            then true; else exit 1; fi; \
          else true; fi; \
@@ -695,6 +737,9 @@ local-clean:
 
 local-distclean:
        -rm -f Makefile config.status
+       -if [ "$(TARGET_SUBDIR)" != "." ]; then \
+         rm -rf $(TARGET_SUBDIR); \
+       else true; fi
 
 local-maintainer-clean:
        @echo "This command is intended for maintainers to use;"
@@ -742,6 +787,7 @@ vault-install:
 install.all: install-no-fixedincludes
        @if [ -f ./gcc/Makefile ] ; then \
                r=`pwd` ; export r ; \
+               $(SET_LIB_PATH) \
                (cd ./gcc; \
                $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \
        else \
@@ -772,6 +818,7 @@ gcc-no-fixedincludes:
          rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd` ; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd ./gcc; \
           $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
          rm -rf gcc/include; \
@@ -790,6 +837,7 @@ $(ALL_MODULES) all-gui all-libproc:
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) all); \
        else \
          true; \
@@ -806,6 +854,7 @@ $(NATIVE_CHECK_MODULES):
          if [ -f ./$${dir}/Makefile ] ; then \
            r=`pwd`; export r; \
            srcroot=`cd $(srcdir); pwd`; export srcroot; \
+           $(SET_LIB_PATH) \
            (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \
          else \
            true; \
@@ -817,6 +866,7 @@ $(CROSS_CHECK_MODULES):
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \
        else \
          true; \
@@ -830,6 +880,7 @@ $(INSTALL_MODULES): install-dirs
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \
        else \
          true; \
@@ -847,20 +898,56 @@ $(CONFIGURE_TARGET_MODULES):
            [ -d $(TARGET_SUBDIR)/$${dir} ] || mkdir $(TARGET_SUBDIR)/$${dir};\
            r=`pwd`; export r; \
            srcroot=`cd $(srcdir); pwd`; export srcroot; \
+           $(SET_LIB_PATH) \
            AR="$(AR_FOR_TARGET)"; export AR; \
            AS="$(AS_FOR_TARGET)"; export AS; \
            CC="$(CC_FOR_TARGET)"; export CC; \
            CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
            CXX="$(CXX_FOR_TARGET)"; export CXX; \
            CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
+           DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
            LD="$(LD_FOR_TARGET)"; export LD; \
            NM="$(NM_FOR_TARGET)"; export NM; \
            RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \
+           echo Configuring in $(TARGET_SUBDIR)/$${dir}; \
            cd $(TARGET_SUBDIR)/$${dir}; \
-           $${srcroot}/configure $(CONFIG_ARGUMENTS) --srcdir=$${srcroot}/$${dir}; \
+           case $(srcdir) in \
+           /*) \
+             topdir=$(srcdir) ;; \
+           *) \
+             case "$(TARGET_SUBDIR)" in \
+             .) topdir="../$(srcdir)" ;; \
+             *) topdir="../../$(srcdir)" ;; \
+             esac ;; \
+           esac; \
+           if [ "$(srcdir)" = "." ] ; then \
+             if [ "$(TARGET_SUBDIR)" != "." ] ; then \
+               if $(SHELL) $${srcroot}/symlink-tree $${topdir}/$${dir} "Makefile" ; then \
+                 true; \
+               else \
+                 exit 1; \
+               fi; \
+             else \
+               true; \
+             fi; \
+             srcdiroption="--srcdir=."; \
+             libsrcdir="."; \
+           else \
+             srcdiroption="--srcdir=$${topdir}/$${dir}"; \
+             libsrcdir="$${srcroot}/$${dir}"; \
+           fi; \
+           if [ -f $${libsrcdir}/configure ] ; then \
+             $(SHELL) $${libsrcdir}/configure \
+               $(CONFIG_ARGUMENTS) $${srcdiroption} \
+               --with-target-subdir="$(TARGET_SUBDIR)"; \
+           else \
+             $(SHELL) $${srcroot}/configure \
+               $(CONFIG_ARGUMENTS) $${srcdiroption} \
+               --with-target-subdir="$(TARGET_SUBDIR)"; \
+           fi; \
          else \
            true; \
-         fi \
+         fi; \
        else \
          true; \
        fi
@@ -873,6 +960,7 @@ $(ALL_TARGET_MODULES):
        if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $(TARGET_SUBDIR)/$${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) all); \
        else \
          true; \
@@ -886,6 +974,7 @@ $(CHECK_TARGET_MODULES):
        if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $(TARGET_SUBDIR)/$${dir};$(MAKE) $(TARGET_FLAGS_TO_PASS) check);\
        else \
          true; \
@@ -900,6 +989,7 @@ $(INSTALL_TARGET_MODULES): install-dirs
        if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $(TARGET_SUBDIR)/$${dir}; \
            $(MAKE) $(TARGET_FLAGS_TO_PASS) install); \
        else \
@@ -914,6 +1004,7 @@ $(ALL_X11_MODULES):
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; \
           $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all); \
        else \
@@ -928,6 +1019,7 @@ $(CHECK_X11_MODULES):
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; \
           $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check); \
        else \
@@ -942,6 +1034,7 @@ $(INSTALL_X11_MODULES):
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; \
           $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install); \
        else \
@@ -954,16 +1047,29 @@ all-gcc:
        @if [ -f ./gcc/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \
        else \
          true; \
        fi
 
+.PHONY: all-bootstrap
+all-bootstrap:
+       @if [ -f ./gcc/Makefile ] ; then \
+         r=`pwd`; export r; \
+         srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
+         (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) bootstrap); \
+       else \
+         true; \
+       fi
+
 .PHONY: check-gcc
 check-gcc:
        @if [ -f ./gcc/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) check); \
        else \
          true; \
@@ -974,6 +1080,7 @@ install-gcc:
        @if [ -f ./gcc/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) install); \
        else \
          true; \
@@ -989,6 +1096,7 @@ install-dosrel: install-dirs info
        if [ -f ./$${dir}/Makefile ] ; then \
          r=`pwd`; export r; \
          srcroot=`cd $(srcdir); pwd`; export srcroot; \
+         $(SET_LIB_PATH) \
          (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \
        else \
          true; \
@@ -1008,6 +1116,8 @@ all-diff: all-libiberty
 all-emacs:
 all-emacs19: all-byacc
 all-etc:
+configure-target-examples: $(ALL_GCC)
+all-target-examples: configure-target-examples
 all-expect: all-tcl all-tk
 all-fileutils: all-libiberty
 all-find:
@@ -1017,19 +1127,22 @@ all-gash: all-tcl
 all-gawk:
 ALL_GCC = all-gcc
 all-gcc: all-libiberty all-byacc all-binutils all-gas all-ld
-all-gdb: all-libiberty all-opcodes all-bfd all-mmalloc all-readline all-byacc all-sim $(gdbnlmrequirements)
-all-gprof: all-libiberty all-bfd
+all-bootstrap: all-libiberty all-byacc all-binutils all-gas all-ld
+GDB_TK = all-tk all-tcl
+all-gdb: all-libiberty all-opcodes all-bfd all-mmalloc all-readline all-byacc all-sim $(gdbnlmrequirements) $(GDB_TK)
+all-gprof: all-libiberty all-bfd all-opcodes
 all-grep: all-libiberty
+all-grez: all-libiberty all-bfd all-opcodes
 all-gui: all-gdb all-libproc all-target-librx
 all-gzip: all-libiberty
 all-hello: all-libiberty
 all-indent:
 all-ispell: all-emacs19
-all-ld: all-libiberty all-bfd all-byacc all-flex
-configure-target-libg++: $(ALL_GCC)
+all-ld: all-libiberty all-bfd all-opcodes all-byacc all-flex
+configure-target-libg++: $(ALL_GCC) configure-target-librx
 all-target-libg++: configure-target-libg++ all-gas all-ld all-gcc all-target-libiberty all-target-newlib all-target-libio all-target-librx all-target-libstdc++
 configure-target-libgloss: $(ALL_GCC)
-all-target-libgloss: configure-target-libgloss
+all-target-libgloss: configure-target-libgloss configure-target-newlib
 configure-target-libio: $(ALL_GCC)
 all-target-libio: configure-target-libio all-gas all-ld all-gcc all-target-libiberty all-target-newlib
 all-libiberty:
@@ -1042,7 +1155,7 @@ all-make: all-libiberty
 all-mmalloc:
 configure-target-newlib: $(ALL_GCC)
 all-target-newlib: configure-target-newlib all-binutils all-gas all-gcc
-all-opcodes: all-bfd
+all-opcodes: all-bfd all-libiberty
 all-patch: all-libiberty
 all-prms: all-libiberty
 all-rcs:
@@ -1051,17 +1164,17 @@ all-recode: all-libiberty
 all-sed: all-libiberty
 all-send-pr: all-prms
 all-shellutils:
-all-sim: all-libiberty all-bfd
+all-sim: all-libiberty all-bfd all-opcodes
 all-tar: all-libiberty
 all-tcl:
 all-tclX: all-tcl all-tk
 all-tk: all-tcl
 all-texinfo: all-libiberty
 all-textutils:
-all-tgas: all-libiberty all-bfd
+all-tgas: all-libiberty all-bfd all-opcodes
 all-time:
 all-wdiff:
-all-target-winsup: all-target-newlib  configure-target-winsup 
+all-target-winsup: all-target-newlib all-target-libiberty configure-target-winsup 
 configure-target-winsup: configure-target-newlib
 all-uudecode: all-libiberty
 configure-target-libiberty: $(ALL_GCC)
@@ -1127,7 +1240,7 @@ Makefile: Makefile.in configure.in $(host_makefile_frag) $(target_makefile_frag)
 DEVO_SUPPORT= README Makefile.in configure configure.in \
        config.guess config.sub config move-if-change \
        mpw-README mpw-build.in mpw-config.in mpw-configure \
-       COPYING COPYING.LIB install.sh cfg-ml-com.in cfg-ml-pos.in
+       COPYING COPYING.LIB install.sh config-ml.in symlink-tree
 
 # Files in devo/etc used in any net release.
 # ChangeLog omitted because it may refer to files which are not in this
@@ -1167,7 +1280,7 @@ taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) \
        ./configure sun4
        [ -z "$(CONFIGURE_TARGET_MODULES)" ] \
          || $(MAKE) $(CONFIGURE_TARGET_MODULES) ALL_GCC="" \
-           CC_FOR_TARGET="$(CC) CXX_FOR_TARGET="$(CXX)"
+           CC_FOR_TARGET="$(CC)" CXX_FOR_TARGET="$(CXX)"
        # Make links, and run "make diststuff" or "make info" when needed.
        rm -rf proto-toplev ; mkdir proto-toplev
        set -e ; dirs="$(TOOL) $(DEVO_SUPPORT) $(SUPPORT_FILES)" ; \
@@ -1260,15 +1373,12 @@ NEWLIB_SUPPORT_DIRS=libgloss
 # taz will build the .info files but since SUBDIRS won't contain newlib,
 # distclean won't be run (leaving Makefile, config.status, and the tmp files
 # used in building the .info files, eg: *.def, *.ref).
-# Compensate here by configuring newlib for a simple (no multilib support)
-# cross target (sparc64), building the info files, and doing make distclean
-# ourselves.
+# The problem isn't solvable however without a lot of extra work because
+# target libraries are built in subdir $(target_alias) which gets nuked during
+# the make distclean.  For now punt on the issue of shipping newlib info files
+# with newlib net releases and wait for a day when some native target (sun4?)
+# supports newlib (if only minimally).
 newlib.tar.gz: $(DIST_SUPPORT) $(NEWLIB_SUPPORT_DIRS) newlib
-       rootme=`pwd` ; \
-         cd newlib && ../configure --srcdir $$rootme/newlib \
-               --host sun4 --target sparc64-elf
-       cd newlib ; make info
-       cd newlib ; make distclean
        $(MAKE) -f Makefile.in taz TOOL=newlib \
                SUPPORT_FILES="$(NEWLIB_SUPPORT_DIRS)" \
                DEVO_SUPPORT="$(DEVO_SUPPORT) COPYING.NEWLIB" newlib
This page took 0.044471 seconds and 4 git commands to generate.