ECHO_NCI =@echo [NCI] $@
ECHO_CABMAN =@echo [CABMAN] $<
ECHO_CDMAKE =@echo [CDMAKE] $@
+ ECHO_MKHIVE =@echo [MKHIVE] $@
ECHO_REGTESTS=@echo [REGTESTS] $@
ECHO_TEST =@echo [TEST] $@
else
ECHO_NCI =
ECHO_CABMAN =
ECHO_CDMAKE =
+ ECHO_MKHIVE =
ECHO_REGTESTS=
ECHO_TEST =
endif
objcopy = $(Q)mingw32-objcopy
dlltool = $(Q)mingw32-dlltool
windres = $(Q)mingw32-windres
- rm = rm -f
+ rm = $(Q)rm -f
cp = $(Q)cp
NUL = /dev/null
else # mingw32-windows
objcopy = $(Q)objcopy
dlltool = $(Q)dlltool
windres = $(Q)windres
- rm = del /f /q
+ rm = $(Q)del /f /q
cp = $(Q)copy /y
NUL = NUL
endif
--- /dev/null
+MKHIVE_BASE = $(TOOLS_BASE_)mkhive\r
+MKHIVE_BASE_ = $(MKHIVE_BASE)$(SEP)\r
+MKHIVE_INT = $(INTERMEDIATE_)$(MKHIVE_BASE)\r
+MKHIVE_INT_ = $(MKHIVE_INT)$(SEP)\r
+MKHIVE_OUT = $(OUTPUT_)$(MKHIVE_BASE)\r
+MKHIVE_OUT_ = $(MKHIVE_OUT)$(SEP)\r
+\r
+$(MKHIVE_INT): $(TOOLS_INT)\r
+ $(ECHO_MKDIR)\r
+ ${mkdir} $@\r
+\r
+ifneq ($(INTERMEDIATE),$(OUTPUT))\r
+$(MKHIVE_OUT): $(TOOLS_OUT)\r
+ $(ECHO_MKDIR)\r
+ ${mkdir} $@\r
+endif\r
+\r
+MKHIVE_TARGET = \\r
+ $(EXEPREFIX)$(MKHIVE_OUT_)mkhive$(EXEPOSTFIX)\r
+\r
+MKHIVE_SOURCES = $(addprefix $(MKHIVE_BASE_), \\r
+ binhive.c \\r
+ infcache.c \\r
+ mkhive.c \\r
+ reginf.c \\r
+ registry.c \\r
+ )\r
+\r
+MKHIVE_OBJECTS = \\r
+ $(addprefix $(INTERMEDIATE_), $(MKHIVE_SOURCES:.c=.o))\r
+\r
+MKHIVE_HOST_CFLAGS = -g -Werror -Wall\r
+\r
+MKHIVE_HOST_LFLAGS = -g\r
+\r
+.PHONY: mkhive\r
+mkhive: $(MKHIVE_TARGET)\r
+\r
+$(MKHIVE_TARGET): $(MKHIVE_OBJECTS) $(MKHIVE_OUT)\r
+ $(ECHO_LD)\r
+ ${host_gcc} $(MKHIVE_OBJECTS) $(MKHIVE_HOST_LFLAGS) -o $@\r
+\r
+$(MKHIVE_INT_)binhive.o: $(MKHIVE_BASE_)binhive.c $(MKHIVE_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(MKHIVE_HOST_CFLAGS) -c $< -o $@\r
+\r
+$(MKHIVE_INT_)infcache.o: $(MKHIVE_BASE_)infcache.c $(MKHIVE_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(MKHIVE_HOST_CFLAGS) -c $< -o $@\r
+\r
+$(MKHIVE_INT_)mkhive.o: $(MKHIVE_BASE_)mkhive.c $(MKHIVE_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(MKHIVE_HOST_CFLAGS) -c $< -o $@\r
+\r
+$(MKHIVE_INT_)reginf.o: $(MKHIVE_BASE_)reginf.c $(MKHIVE_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(MKHIVE_HOST_CFLAGS) -c $< -o $@\r
+\r
+$(MKHIVE_INT_)registry.o: $(MKHIVE_BASE_)registry.c $(MKHIVE_INT)\r
+ $(ECHO_CC)\r
+ ${host_gcc} $(MKHIVE_HOST_CFLAGS) -c $< -o $@\r
+\r
+.PHONY: mkhive_clean\r
+mkhive_clean: $(MKHIVE_TARGET)\r
+ -@$(rm) $(MKHIVE_TARGET) $(MKHIVE_OBJECTS) 2>$(NUL)\r
+clean: mkhive_clean\r
fprintf ( fMakefile,\r
"\t$(ECHO_CP)\n" );\r
fprintf ( fMakefile,\r
- "\t${cp} %s %s\n",\r
+ "\t${cp} %s %s 1>$(NUL)\n",\r
sourceFilename.c_str (),\r
normalizedTargetFilename.c_str () );\r
}\r
}\r
}\r
\r
+string\r
+MingwBackend::GetRegistrySourceFiles ()\r
+{\r
+ return "bootdata" SSEP "hivecls.inf "\r
+ "bootdata" SSEP "hivedef.inf "\r
+ "bootdata" SSEP "hiveinst.inf "\r
+ "bootdata" SSEP "hivesft.inf "\r
+ "bootdata" SSEP "hivesys.inf";\r
+}\r
+\r
+string\r
+MingwBackend::GetRegistryTargetFiles ( const string& installDirectory )\r
+{\r
+ string system32ConfigDirectory = MingwModuleHandler::PassThruCacheDirectory (\r
+ NormalizeFilename ( installDirectory + SSEP + "system32" + SSEP "config" ),\r
+ true );\r
+ return system32ConfigDirectory + SSEP "default " +\r
+ system32ConfigDirectory + SSEP "sam " +\r
+ system32ConfigDirectory + SSEP "security " +\r
+ system32ConfigDirectory + SSEP "software " +\r
+ system32ConfigDirectory + SSEP "system";\r
+}\r
+\r
+void\r
+MingwBackend::OutputRegistryInstallTarget ( const string& installDirectory )\r
+{\r
+ string system32ConfigDirectory = MingwModuleHandler::PassThruCacheDirectory (\r
+ NormalizeFilename ( installDirectory + SSEP + "system32" + SSEP "config" ),\r
+ true );\r
+\r
+ string registrySourceFiles = GetRegistrySourceFiles ();\r
+ string registryTargetFiles = GetRegistryTargetFiles ( installDirectory );\r
+ fprintf ( fMakefile,\r
+ "install_registry: %s\n",\r
+ registryTargetFiles.c_str () );\r
+ fprintf ( fMakefile,\r
+ "%s: %s %s $(MKHIVE_TARGET)\n",\r
+ registryTargetFiles.c_str (),\r
+ registrySourceFiles.c_str (),\r
+ system32ConfigDirectory.c_str () );\r
+ fprintf ( fMakefile,\r
+ "\t$(ECHO_MKHIVE)\n" );\r
+ fprintf ( fMakefile,\r
+ "\t$(MKHIVE_TARGET) bootdata %s bootdata" SSEP "hiveinst.inf\n",\r
+ system32ConfigDirectory.c_str () );\r
+ fprintf ( fMakefile,\r
+ "\n" );\r
+}\r
+\r
void\r
MingwBackend::GenerateInstallTarget ()\r
{\r
string installTargetFiles = v2s ( vInstallTargetFiles, 5 );\r
\r
fprintf ( fMakefile,\r
- "install: %s %s\n",\r
+ "install: %s %s install_registry\n",\r
installDirectory.c_str (),\r
installTargetFiles.c_str () );\r
OutputNonModuleInstallTargets ( installDirectoryNoFixup );\r
OutputModuleInstallTargets ( installDirectoryNoFixup );\r
+ OutputRegistryInstallTarget ( installDirectoryNoFixup );\r
fprintf ( fMakefile,\r
"\n" );\r
}\r
const std::string& targetDirectory );\r
void OutputNonModuleInstallTargets ( const std::string& installDirectory );\r
void OutputModuleInstallTargets ( const std::string& installDirectory );\r
+ std::string GetRegistrySourceFiles ();\r
+ std::string GetRegistryTargetFiles ( const std::string& installDirectory );\r
+ void OutputRegistryInstallTarget ( const std::string& installDirectory );\r
void GenerateInstallTarget ();\r
FILE* fMakefile;\r
bool use_pch;\r
fprintf ( fMakefile,\r
"\t$(ECHO_CP)\n" );\r
fprintf ( fMakefile,\r
- "\t${cp} %s %s\n",\r
+ "\t${cp} %s %s 1>$(NUL)\n",\r
m.GetPath ().c_str (),\r
targetFilename.c_str () );\r
}\r
fprintf ( fMakefile,\r
"\t$(ECHO_CP)\n" );\r
fprintf ( fMakefile,\r
- "\t${cp} %s %s\n",\r
+ "\t${cp} %s %s 1>$(NUL)\n",\r
cdfile.GetPath ().c_str (),\r
targetFilename.c_str () );\r
}\r
include tools/buildno/buildno.mak
include tools/cabman/cabman.mak
include tools/cdmake/cdmake.mak
+include tools/mkhive/mkhive.mak
include tools/nci/nci.mak
include tools/rbuild/rbuild.mak
include tools/unicode/unicode.mak