Kernel - Standardised kernel build tag (placed in gsBuildInfo)
authorJohn Hodge <[email protected]>
Thu, 19 Jul 2012 06:58:55 +0000 (14:58 +0800)
committerJohn Hodge <[email protected]>
Thu, 19 Jul 2012 06:58:55 +0000 (14:58 +0800)
KernelLand/Kernel/Makefile
KernelLand/Kernel/arch/x86/main.c
KernelLand/Kernel/bin/elf.c
KernelLand/Kernel/drv/proc.c
KernelLand/Kernel/include/acess.h
KernelLand/Kernel/include/init.h

index 7562079..40fb4a1 100644 (file)
@@ -96,14 +96,12 @@ apidoc:
 # Output binary
 # - Links kernel
 # - Disassembles it
-# - Gets a line count
 # - Increments the build count
 # - Does whatever architecture defined rules
 $(BIN): $(OBJ) $(MODS) arch/$(ARCHDIR)/link.ld Makefile ../../BuildConf/$(ARCH)/Makefile.cfg ../../BuildConf/$(ARCH)/$(PLATFORM).mk
        @echo --- LD -o $(BIN)
        @$(LD) $(LDFLAGS) -o $(BIN) $(OBJ) $(MODS) --defsym __buildnum=$$(( $(BUILD_NUM) + 1 )) -Map ../Map.$(ARCH).txt
        @$(DISASM) -S $(BIN) > $(BIN).dsm
-       @wc -l $(SRCFILES) include/*.h > LineCounts.$(ARCH).txt
        @echo BUILD_NUM = $$(( $(BUILD_NUM) + 1 )) > Makefile.BuildNum.$(ARCH)
        $(POSTBUILD)
        @cp $(BIN) $(BIN)_
@@ -135,14 +133,18 @@ $(OBJDIR)%.o$(OBJSUFFIX): %.c Makefile
 include/syscalls.h include/syscalls.inc.asm:   syscalls.lst Makefile GenSyscalls.pl
        perl GenSyscalls.pl
 
-# Rules based on the makefile
-Makefile:      ../../Makefile.cfg arch/$(ARCHDIR)/Makefile
+# Differences for the makefile
+Makefile:      ../../Makefile.cfg ../../BuildConf/$(ARCH)/Makefile.cfg ../../BuildConf/$(ARCH)/$(PLATFORM).mk arch/$(ARCHDIR)/Makefile
 
 # Build-time information (git hash and build number)
 $(BUILDINFO_SRC): $(filter-out $(BUILDINFO_OBJ), $(OBJ)) $(MODS) arch/$(ARCHDIR)/link.ld Makefile
+       $(eval _GITHASH=$(shell git log -n 1 | head -n 1 | awk '{print $$2}'))
+       $(eval _GITCHANGED=$(shell git status --porcelain | grep -c '^ M '))
        @echo "#include <acess.h>" > $@
-       @echo "const char gsGitHash[] = \""`git log -n 1 | head -n 1 | awk '{print $$2}'`"\";" >> $@
+       @echo "const char gsGitHash[] = \"$(_GITHASH)\";" >> $@
        @echo "const int giBuildNumber = $(BUILD_NUM);" >> $@
+       @echo "const char gsBuildInfo[] = \"Acess2 v$(KERNEL_VERSION) $(ARCH)-$(PLATFORM)\\\\r\\\\n\"" >> $@
+       @echo "                           \"Build $(shell hostname --fqdn):$(BUILD_NUM) Git $(_GITHASH) - $(_GITCHANGED) modified\";" >> $@
 # Compile rule for buildinfo (needs a special one because it's not a general source file)
 $(BUILDINFO_OBJ): $(BUILDINFO_SRC)
        @echo --- CC -o $@
@@ -151,4 +153,3 @@ $(BUILDINFO_OBJ): $(BUILDINFO_SRC)
 # Dependency Files
 -include $(DEPFILES)
 
-%.h:
index 466b61e..b6ac974 100644 (file)
 // === IMPORTS ===
 extern char    gKernelEnd[];
 extern void    Heap_Install(void);
-extern void    Desctab_Install(void);
 extern void    MM_PreinitVirtual(void);
 extern void    MM_Install(int NPMemRanges, tPMemMapEnt *PMemRanges);
 extern void    MM_InstallVirtual(void);
-extern void    Threads_Init(void);
 extern int     Time_Setup(void);
-// --- Core ---
-extern void    System_Init(char *Commandline);
 
 // === PROTOTYPES ===
  int   kmain(Uint MbMagic, void *MbInfoPtr);
@@ -50,8 +46,7 @@ int kmain(Uint MbMagic, void *MbInfoPtr)
        tPMemMapEnt     pmemmap[MAX_PMEMMAP_ENTS];
         int    nPMemMapEnts;
 
-       LogF("Acess2 x86-"PLATFORM" v"EXPAND_STR(KERNEL_VERSION)"\r\n");
-       LogF(" Build %i, Git Hash %s\r\n", BUILD_NUM, gsGitHash);
+       LogF("%s\r\n", gsBuildInfo);
        
        MM_PreinitVirtual();    // Initialise virtual mappings
 
index 83dfa8a..b0d96ca 100644 (file)
@@ -12,7 +12,7 @@
 void   *GetSymbol(const char *Name, size_t *Size);\r
 void   *GetSymbol(const char *Name, size_t *Size) { Uint val; Binary_GetSymbol(Name, &val); if(Size)*Size=0; return (void*)val; };\r
 #define AddLoaded(a,b) do{}while(0)\r
-#define LoadLibrary(a,b,c)     0\r
+#define LoadLibrary(a,b,c)     (Log_Debug("ELF", "Module requested lib '%s'",a),0)\r
 #include "../../../Usermode/Libraries/ld-acess.so_src/elf.c"\r
 \r
 #define DEBUG_WARN     1\r
index 954cab6..cbf2565 100644 (file)
@@ -109,12 +109,8 @@ tSysFS_Ent *gSysFS_FileList;
  */
 int SysFS_Install(char **Options)
 {
-       {
-               const char      *fmt = "Acess2 "EXPAND_STR(KERNEL_VERSION)" "EXPAND_STR(ARCHDIR)" build %i, hash %s";
-               gSysFS_Version_Kernel.Node.Size = snprintf(NULL, 0, fmt, BUILD_NUM, gsGitHash);
-               gSysFS_Version_Kernel.Node.ImplPtr = malloc( gSysFS_Version_Kernel.Node.Size + 1 );
-               sprintf(gSysFS_Version_Kernel.Node.ImplPtr, fmt, BUILD_NUM, gsGitHash);
-       }
+       gSysFS_Version_Kernel.Node.Size = strlen(gsBuildInfo);
+       gSysFS_Version_Kernel.Node.ImplPtr = gsBuildInfo;
 
        DevFS_AddDevice( &gSysFS_DriverInfo );
        return MODULE_ERR_OK;
index 87aef6e..51ae771 100644 (file)
@@ -60,7 +60,8 @@ typedef Uint64        off_t;  //!< VFS Offset
 
 extern char    __buildnum[];
 #define BUILD_NUM      ((int)(Uint)&__buildnum)
-extern const char gsGitHash[];
+extern const char      gsGitHash[];
+extern const char      gsBuildInfo[];
 
 #define VER2(major,minor)      ((((major)&0xFF)<<8)|((minor)&0xFF))
 /**
index 9f2fc10..6af177d 100644 (file)
@@ -7,5 +7,7 @@
 
 extern void    Arch_LoadBootModules(void);
 extern void    StartupPrint(const char *String);
+extern void    System_Init(char *Commandline);
+extern void    Threads_Init(void);
 
 #endif

UCC git Repository :: git.ucc.asn.au