sim: add preliminary support for --enable-targets
[deliverable/binutils-gdb.git] / sim / ppc / Makefile.in
index ff9efee2be608bd6c275229a9b8bf62ea0e447de..d2bd1d317754d25022f4860bbecc98ff74e9af9f 100644 (file)
@@ -5,7 +5,7 @@
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
-#   the Free Software Foundation; either version 2 of the License, or
+#   the Free Software Foundation; either version 3 of the License, or
 #   (at your option) any later version.
 #
 #   This program is distributed in the hope that it will be useful,
 #   GNU General Public License for more details.
 #
 #   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.
+#   along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 
 default: all
 
 VPATH = @srcdir@
 srcdir = @srcdir@
+srccom = $(srcdir)/../common
 srcroot = $(srcdir)/../..
+srcsim = $(srcdir)/..
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@
@@ -34,6 +35,7 @@ bindir = @bindir@
 libdir = @libdir@
 tooldir = $(libdir)/$(target_alias)
 
+datarootdir = @datarootdir@
 datadir = @datadir@
 mandir = @mandir@
 man1dir = $(mandir)/man1
@@ -63,62 +65,53 @@ AR_FLAGS = rc
 CC = @CC@
 CFLAGS = @CFLAGS@
 CC_FOR_BUILD = @CC_FOR_BUILD@
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
 BISON = bison
 MAKEINFO = makeinfo
 RANLIB = @RANLIB@
 
-SIM_CFLAGS = @sim_cflags@
 INLINE_CFLAGS = @sim_inline@
-BSWAP_CFLAGS = @sim_bswap@
 ENDIAN_CFLAGS = @sim_endian@
-REGPARM_CFLAGS = @sim_regparm@
-STDCALL_CFLAGS = @sim_stdcall@
 HOSTENDIAN_CFLAGS = @sim_hostendian@
 SMP_CFLAGS = @sim_smp@
 XOR_ENDIAN_CFLAGS = @sim_xor_endian@
 BITSIZE_CFLAGS = @sim_bitsize@
 HOSTBITSIZE_CFLAGS = @sim_hostbitsize@
-ENV_CFLAGS = @sim_env@
 TIMEBASE_CFLAGS = @sim_timebase@
 ALIGNMENT_CFLAGS = @sim_alignment@
 FLOAT_CFLAGS = @sim_float@
-TRACE_CFLAGS = @sim_trace@
-ASSERT_CFLAGS = @sim_assert@
 RESERVED_CFLAGS = @sim_reserved@
 MONITOR_CFLAGS = @sim_monitor@
 MODEL_CFLAGS = @sim_model@ @sim_default_model@ @sim_model_issue@
-STDIO_CFLAGS = @sim_stdio@
 TERMIO_CFLAGS = @sim_termio@
 WARNING_CFLAGS = @sim_warnings@
 DEVZERO_CFLAGS = @sim_devzero@
-CONFIG_CFLAGS = $(BSWAP_CFLAGS) \
+CONFIG_CFLAGS = \
   $(ENDIAN_CFLAGS) \
-  $(REGPARM_CFLAGS) \
-  $(STDCALL_CFLAGS) \
   $(HOSTENDIAN_CFLAGS) \
   $(SMP_CFLAGS) \
   $(XOR_ENDIAN_CFLAGS) \
   $(BITSIZE_CFLAGS) \
   $(HOSTBITSIZE_CFLAGS) \
-  $(ENV_CFLAGS) \
   $(TIMEBASE_CFLAGS) \
   $(ALIGNMENT_CFLAGS) \
   $(FLOAT_CFLAGS) \
-  $(TRACE_CFLAGS) \
-  $(ASSERT_CFLAGS) \
   $(RESERVED_CFLAGS) \
   $(MONITOR_CFLAGS) \
   $(MODEL_CFLAGS) \
-  $(STDIO_CFLAGS) \
   $(TERMIO_CFLAGS) \
   $(DEVZERO_CFLAGS)
 SIM_FPU_CFLAGS = @sim_fpu_cflags@
 
-STD_CFLAGS     = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
-NOWARN_CFLAGS  = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(SIM_CFLAGS) $(HDEFINES) $(TDEFINES) $(INCLUDES)  $(SIM_FPU_CFLAGS)
-BUILD_CFLAGS   = -g -O $(INCLUDES) $(WARNING_CFLAGS)
+STD_CFLAGS     = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(WARNING_CFLAGS) $(INCLUDES) $(INTL_CFLAGS) $(SIM_FPU_CFLAGS)
+NOWARN_CFLAGS  = $(CFLAGS) $(INLINE_CFLAGS) $(CONFIG_CFLAGS) $(INCLUDES) $(SIM_FPU_CFLAGS)
+BUILD_CFLAGS   = $(CFLAGS_FOR_BUILD) $(INCLUDES) $(WARNING_CFLAGS)
 
-BUILD_LDFLAGS  =
+LDFLAGS_FOR_BUILD      =
+LIBS = @LIBS@
+
+COMPILE_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS)
+LINK_FOR_BUILD = $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(LDFLAGS_FOR_BUILD) -o $@
 
 CONFIG_FILE = @sim_config@
 IGEN_OPCODE_RULES = @sim_opcode@
@@ -131,8 +124,6 @@ IGEN_SMP = @sim_igen_smp@
 IGEN_LINE_NR = @sim_line_nr@
 DGEN_FLAGS = @sim_switch@
 
-HDEFINES = @HDEFINES@
-TDEFINES =
 IGEN_FLAGS = \
        $(IGEN_DECODE_MECHANISM) \
        $(IGEN_DUPLICATE) \
@@ -153,12 +144,11 @@ INCLUDES  = -I. -I$(srcdir) $(LIB_INCLUDES) $(BFD_INCLUDES) $(GDB_INCLUDES)
 
 LIBIBERTY_LIB  = ../../libiberty/libiberty.a
 BFD_LIB                = ../../bfd/libbfd.a
+ZLIB           = @zlibdir@ -lz
 
-INTLLIBS = @INTLLIBS@
-INTLDEPS = @INTLDEPS@
-INTL_DIR = ../../intl
-INTL_SRC = $(srcdir)/$(INTL_DIR)
-INTL_CFLAGS = -I$(INTL_DIR) -I$(INTL_SRC)
+LIBINTL = @LIBINTL@
+LIBINTL_DEP = @LIBINTL_DEP@
+INTL_CFLAGS = @INCINTL@
 
 
 TARGETLIB      = libsim.a
@@ -443,9 +433,6 @@ SUPPORT_H = \
 TARG_VALS_H = \
         targ-vals.h
 
-TCONFIG_H = \
-        tconfig.h
-
 INLINE = \
        inline.h \
        inline.c
@@ -535,6 +522,7 @@ LIB_OBJ = \
        support.o \
        @sim_fpu@ \
        psim.o \
+       version.o \
        $(PACKAGE_OBJ) \
        $(HW_OBJ) \
        options.o
@@ -549,8 +537,8 @@ PACKAGE_SRC = @sim_pk_src@
 PACKAGE_OBJ = @sim_pk_obj@
 
 
-psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBS) $(INTLDEPS)
-       $(CC) $(CFLAGS) $(SIM_CFLAGS) $(LDFLAGS) -o psim$(EXEEXT) main.o $(TARGETLIB) $(BFD_LIB) $(INTLLIBS) $(LIBIBERTY_LIB) $(LIBS)
+psim: $(TARGETLIB) main.o $(LIBIBERTY_LIB) $(BFD_LIB) $(LIBINTL_DEP)
+       $(CC) $(CFLAGS) $(LDFLAGS) -o psim$(EXEEXT) main.o $(TARGETLIB) $(BFD_LIB) $(ZLIB) $(LIBINTL) $(LIBIBERTY_LIB) $(LIBS)
 
 run: psim
        rm -f run$(EXEEXT)
@@ -561,6 +549,12 @@ $(TARGETLIB): tmp-igen tmp-dgen tmp-hw tmp-pk tmp-defines $(LIB_OBJ) $(GDB_OBJ)
        $(AR) $(AR_FLAGS) $(TARGETLIB) $(LIB_OBJ) $(GDB_OBJ)
        $(RANLIB) $(TARGETLIB)
 
+version.c: Makefile $(srcroot)/gdb/version.in $(srcroot)/bfd/version.h $(srcroot)/sim/common/create-version.sh
+       $(SHELL) $(srcroot)/sim/common/create-version.sh $(srcroot)/gdb $@.tmp
+       $(SHELL) $(srcroot)/move-if-change $@.tmp $@
+       touch $@
+version.o: version.c $(version_h)
+
 psim.o: psim.c $(CPU_H) $(IDECODE_H) $(OPTIONS_H) $(TREE_H) $(BFD_H)
 
 bits.o: bits.c $(BASICS_H)
@@ -626,8 +620,9 @@ mon.o: mon.c $(BASICS_H) $(CPU_H) $(MON_H)
 
 # GDB after 4.16 expects the default_callback structure to be setup.
 # As a kludge, build the common stuff here for now.
-gentmap: ../common/gentmap.c Makefile targ-vals.def
-       $(CC_FOR_BUILD) $(BUILD_FLAGS) -I. -I../common -I$(srcdir)/../common -o gentmap $< $(BUILD_LIBS)
+gentmap: $(srcdir)/../common/gentmap.c Makefile targ-vals.def
+       $(LINK_FOR_BUILD) -I. -I../common -I$(srcdir)/../common \
+               $(srcdir)/../common/gentmap.c
 
 targ-vals.def: $(srcdir)/../common/nltvals.def
        rm -f targ-vals.def tmp-def
@@ -644,21 +639,17 @@ targ-map.c: Makefile gentmap $(srcdir)/../../move-if-change
        ./gentmap -c > tmp-map.c
        $(SHELL) $(srcdir)/../../move-if-change tmp-map.c targ-map.c
 
-callback.o: ../common/callback.c $(TARG_VALS_H) $(CONFIG_H)
-       $(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $<
+callback.o: $(srcdir)/../common/callback.c $(TARG_VALS_H) $(CONFIG_H)
+       $(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/callback.c
 
 targ-map.o: targ-map.c $(ANSIDECL_H) $(GDB_CALLBACK_H) $(TARG_VALS_H)
 
-sim-fpu.o: $(srcdir)/../common/sim-fpu.c $(CONFIG_H) $(TCONFIG_H)
+sim-fpu.o: $(srcdir)/../common/sim-fpu.c $(CONFIG_H)
        $(CC) -c $(STD_CFLAGS) -DHAVE_CONFIG_H $(srcdir)/../common/sim-fpu.c 
 
-tconfig.h:
-       rm -f tconfig.h
-       echo > tconfig.h
-
 # Rebuild options whenever something changes so the date/time is up to date.
 options.o: options.c $(CPU_H) $(OPTIONS_H) $(DEFINES_H) $(BASICS_H) $(IDECODE_H) $(INLINE) $(LIB_SRC) $(BUILT_SRC) config.status Makefile
-       $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' '-DDGEN_FLAGS="$(DGEN_FLAGS)"' $<
+       $(CC) -c $(STD_CFLAGS) '-DOPCODE_RULES="@sim_opcode@"' '-DIGEN_FLAGS="$(IGEN_FLAGS)"' '-DDGEN_FLAGS="$(DGEN_FLAGS)"' $(srcdir)/options.c
 
 defines.h: tmp-defines; @true
 tmp-defines: config.h Makefile
@@ -721,69 +712,69 @@ itable.h itable.c icache.h icache.c idecode.h idecode.c semantics.h semantics.c
 spreg.h spreg.c: tmp-dgen
 
 dgen: dgen.o table.o lf.o misc.o filter_host.o
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -o dgen dgen.o table.o lf.o misc.o filter_host.o $(BUILD_LIBS)
+       $(LINK_FOR_BUILD) dgen.o table.o lf.o misc.o filter_host.o
 
 igen: igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o igen igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o $(BUILD_LIBS)
+       $(LINK_FOR_BUILD) igen.o table.o lf.o misc.o filter_host.o ld-decode.o ld-cache.o filter.o ld-insn.o gen-model.o gen-itable.o gen-icache.o gen-semantics.o gen-idecode.o gen-support.o
 
 filter_host.c: filter_filename.c
        cat $(srcdir)/filter_filename.c > filter_host.c
 
 filter_host.o: filter_host.c $(CONFIG_H) $(PPC_CONFIG_H) $(FILTER_FILENAME_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c filter_host.c
+       $(COMPILE_FOR_BUILD) -c filter_host.c
 
 table.o: table.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/table.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/table.c
 
 lf.o: lf.c $(CONFIG_H) $(MISC_H) $(LF_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/lf.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/lf.c
 
 filter.o: filter.c $(CONFIG_H) $(MISC_H) $(FILTER_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/filter.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/filter.c
 tmp-filter: filter.c $(MISC_H) misc.o
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-filter -DMAIN $(srcdir)/filter.c misc.o $(BUILD_LIBS)
+       $(LINK_FOR_BUILD) -DMAIN $(srcdir)/filter.c misc.o
 
 ld-decode.o: ld-decode.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_DECODE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-decode.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-decode.c
 tmp-ld-decode: ld-decode.c misc.o lf.o table.o filter_host.o 
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-ld-decode -DMAIN $(srcdir)/ld-decode.c misc.o lf.o table.o filter_host.o $(BUILD_LIBS)
+       $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-decode.c misc.o lf.o table.o filter_host.o
 
 ld-cache.o: ld-cache.c $(MISC_H) $(LF_H) $(TABLE_H) $(LD_CACHE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-cache.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-cache.c
 tmp-ld-cache: ld-cache.c misc.o lf.o table.o filter_host.o 
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-ld-cache -DMAIN $(srcdir)/ld-cache.c misc.o lf.o table.o filter_host.o $(BUILD_LIBS)
+       $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-cache.c misc.o lf.o table.o filter_host.o
 
 ld-insn.o: ld-insn.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/ld-insn.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/ld-insn.c
 tmp-ld-insn: ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o tmp-ld-insn -DMAIN $(srcdir)/ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o $(BUILD_LIBS)
+       $(LINK_FOR_BUILD) -DMAIN $(srcdir)/ld-insn.c ld-cache.o misc.o lf.o table.o ld-decode.o filter_host.o filter.o
 
 gen-model.o: gen-model.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(GEN_MODEL_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-model.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-model.c
 
 gen-itable.o: gen-itable.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_ITABLE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-itable.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-itable.c
 
 gen-icache.o: gen-icache.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-icache.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-icache.c
 
 gen-semantics.o: gen-semantics.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_ICACHE_H) $(GEN_IDECODE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-semantics.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-semantics.c
 
 gen-idecode.o: gen-idecode.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_IDECODE_H) $(GEN_ICACHE_H) $(GEN_SEMANTICS_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-idecode.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-idecode.c
 
 gen-support.o: gen-support.c $(MISC_H) $(LF_H) $(TABLE_H) $(FILTER_H) $(LD_DECODE_H) $(LD_CACHE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/gen-support.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/gen-support.c
 
 dgen.o: dgen.c $(CONFIG_H) $(MISC_H) $(LF_H) $(TABLE_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/dgen.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/dgen.c
 
 igen.o: igen.c $(MISC_H) $(LF_H) $(TABLE_H) $(CONFIG_H) $(FILTER_H) $(LD_CACHE_H) $(LD_DECODE_H) $(LD_INSN_H) $(IGEN_H) $(GEN_MODEL_H) $(GEN_ICACHE_H) $(GEN_ITABLE_H) $(GEN_IDECODE_H) $(GEN_SEMANTICS_H) $(GEN_SUPPORT_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/igen.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/igen.c
 
 misc.o: misc.c $(CONFIG_H) $(MISC_H)
-       $(CC_FOR_BUILD) $(BUILD_CFLAGS) -c $(srcdir)/misc.c
+       $(COMPILE_FOR_BUILD) -c $(srcdir)/misc.c
 
 
 
@@ -835,6 +826,8 @@ hw_opic.o: hw_opic.c $(DEVICE_TABLE_H)
 hw_pal.o: hw_pal.c $(DEVICE_TABLE_H) $(CPU_H)
 hw_phb.o: hw_phb.c $(DEVICE_TABLE_H) $(HW_PHB_H) $(COREFILE_H)
 hw_register.o: hw_register.c $(DEVICE_TABLE_H) $(PSIM_H)
+hw_sem.o: hw_sem.c $(DEVICE_TABLE_H) $(PSIM_H)
+hw_shm.o: hw_shm.c $(DEVICE_TABLE_H) $(PSIM_H)
 hw_trace.o: hw_trace.c $(DEVICE_TABLE_H)
 hw_vm.o: hw_vm.c $(DEVICE_TABLE_H) $(CPU_H)
 # ignore this line, it stops make from getting confused
@@ -889,9 +882,20 @@ stamp-h: config.in config.status
 config.status: configure
        $(SHELL) ./config.status --recheck
 
+check:
+
 install: installdirs
+       a=`basename "$$(pwd)"`; \
+       n=`echo run | sed '$(program_transform_name)'`; \
+       [ "$(SIM_PRIMARY_TARGET)" = "$$a" ] || n="$$n-$$a"; \
+       $(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
+
+install-strip: installdirs
+       a=`basename "$$(pwd)"`; \
        n=`echo run | sed '$(program_transform_name)'`; \
+       [ "$(SIM_PRIMARY_TARGET)" = "$$a" ] || n="$$n-$$a"; \
        $(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
+       $(STRIP) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
 
 installdirs:
        $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir)
This page took 0.027907 seconds and 4 git commands to generate.