$gInputFile = $argv[1];
$gOutputFile = $argv[2];
-$gDepFile = ($argc > 3 ? $argv[3] : false);
+$gOutputLDOptsFile = $argv[3];
+$gDepFile = ($argc > 4 ? $argv[4] : false);
$gDependencies = array();
}
$inode = 0;
+$gSymFiles = array();
function ProcessFolder($prefix, $items)
{
global $gOutput, $gDependencies;
global $ACESSDIR, $ARCH;
global $inode;
+ global $gSymFiles;
foreach($items as $i=>$item)
{
$inode ++;
exit(1);
}
$size = filesize($path);
-
+
+/*
+ $_sym = $prefix."_".$i."_data";
$fp = fopen($path, "rb");
- $gOutput .= "Uint8 {$prefix}_{$i}_data[] = {\n";
+ $gOutput .= "Uint8 $_sym[] = {\n";
for( $j = 0; $j + 16 < $size; $j += 16 ) {
$gOutput .= "\t";
$gOutput .= hd8($fp).",".hd8($fp).",";
}
fclose($fp);
$gOutput .= "\n};\n";
+*/
+
+//*
+ $_sym = "_binary_".str_replace(array("/","-","."), "_", $path)."_start";
+ $gOutput .= "extern Uint8 {$_sym}[];";
+ $gSymFiles[] = $path;
+//*/
$gOutput .= <<<EOF
tVFS_Node {$prefix}_{$i} = {
.NumACLs = 1,
.Flags = 0,
.Size = $size,
.Inode = {$inode},
- .ImplPtr = {$prefix}_{$i}_data,
+ .ImplPtr = $_sym,
.Read = InitRD_ReadFile
};
fputs($fp, $gOutput);
fclose($fp);
+// - Create options call
+$fp = fopen($gOutputLDOptsFile, "w");
+fputs($fp, "--format binary\n");
+foreach($gSymFiles as $sym=>$file)
+{
+ fputs($fp, "$file\n");
+// fputs($fp, "--defsym $sym=_binary_".$sym_filename."_start\n");
+}
+fclose($fp);
if($gDepFile !== false)
{
EXTRA = files.c
NAME = InitRD
EXTRA = files.$(ARCH).c files.$(ARCH).c.dep
+LDFLAGS += @files.$(ARCH).c.ldopts
-include ../Makefile.tpl
files.$(ARCH).c: GenerateInitRD.php files.lst
- ARCH=$(ARCH) ACESSDIR=$(ACESSDIR) php GenerateInitRD.php files.lst $@
[email protected]
+ ARCH=$(ARCH) ACESSDIR=$(ACESSDIR) php GenerateInitRD.php files.lst $@ $@.ldopts $@.dep
-include files.$(ARCH).c.dep
ifneq ($(BUILDTYPE),static)
$(BIN): %.kmd.$(ARCH): $(OBJ)
@echo --- $(LD) -o $@
- @$(LD) --allow-shlib-undefined -shared -nostdlib -o $@ $(OBJ) -defsym=DriverInfo=_DriverInfo_$(FULLNAME)
+ @$(LD) --allow-shlib-undefined -shared -nostdlib -o $@ $(OBJ) -defsym=DriverInfo=_DriverInfo_$(FULLNAME) $(LDFLAGS)
@$(DISASM) $(BIN) > $(BIN).dsm
else
$(BIN): %.xo.$(ARCH): $(OBJ)
@echo --- $(LD) -o $@
- @$(LD) -r -o $@ $(OBJ)
+ @$(LD) -r -o $@ $(OBJ) $(LDFLAGS)
endif
obj-$(_SUFFIX)/%.o: %.c Makefile $(CFGFILES)