# 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)_
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 $@
# Dependency Files
-include $(DEPFILES)
-%.h:
// === 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);
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
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
*/
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;
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))
/**
extern void Arch_LoadBootModules(void);
extern void StartupPrint(const char *String);
+extern void System_Init(char *Commandline);
+extern void Threads_Init(void);
#endif