Author: hyperion Date: Wed Nov 11 04:41:14 2009 New Revision: 44091
URL: http://svn.reactos.org/svn/reactos?rev=44091&view=rev Log: modified Makefile Give poor pefixup its own echo line
modified ReactOS-amd64.rbuild modified ReactOS-arm.rbuild modified ReactOS-i386.rbuild Set global linker flags globally Goodbye NTOSKRNL_SHARED
modified tools/rbuild/backend/codeblocks/codeblocks.cpp modified tools/rbuild/backend/msvc/vcprojmaker.cpp Build fixes. I really want to delete these dead backends
modified tools/rbuild/backend/mingw/linkers/ld.mak Makefile rule for the linker. Also generates the .lib and .exp for DLLs, and obsoletes a whole lot of shitty rbuild code
modified tools/rbuild/backend/mingw/mingw.cpp modified tools/rbuild/backend/mingw/mingw.h Specify module type-specific linker flags... in the specification of flags for module types, instead of wherever Fix generation of project-global linker and NASM flags Give better names to the variables that contain names of BE-provided libraries Don't put quotes around the names of BE-provided libraries, GNU make doesn't support quoting in any way, shape or form and quotes around filenames actually break shit on Windows (see http://reactos-blog.blogspot.com/2009/11/gnu-make-fails-on-windows-with-multiple.html). Just install the BE in a path without spaces in it Typo: LFLAGS is the flags for lex, flags for linker come from LDFLAGS
modified tools/rbuild/backend/mingw/modulehandler.cpp modified tools/rbuild/backend/mingw/modulehandler.h modified tools/rbuild/module.cpp modified tools/rbuild/rbuild.h Moved generation of linker and import library generation rules out of rbuild and into sub-makefiles. A lot of code deleted, nothing of value was lost More LFLAGS -> LDFLAGS Goodbye mangledsymbols and underscoresymbols attributes, they don't do shit other than complicating my life If we have to add an underscore in front of the entry point name for some architectures, how about we do it in a single place?
modified tools/rbuild/backend/mingw/rules.mak Minor cosmetic change
Modified: trunk/reactos/Makefile trunk/reactos/ReactOS-amd64.rbuild trunk/reactos/ReactOS-arm.rbuild trunk/reactos/ReactOS-i386.rbuild trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp trunk/reactos/tools/rbuild/backend/mingw/mingw.h trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h trunk/reactos/tools/rbuild/backend/mingw/rules.mak trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp trunk/reactos/tools/rbuild/module.cpp trunk/reactos/tools/rbuild/rbuild.h
Modified: trunk/reactos/Makefile URL: http://svn.reactos.org/svn/reactos/trunk/reactos/Makefile?rev=44091&r1=4... ============================================================================== --- trunk/reactos/Makefile [iso-8859-1] (original) +++ trunk/reactos/Makefile [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -242,6 +242,7 @@ ECHO_OBJDUMP =@echo $(QUOTE)[OBJDUMP] $@$(QUOTE) ECHO_RBUILD =@echo $(QUOTE)[RBUILD] $@$(QUOTE) ECHO_RSYM =@echo $(QUOTE)[RSYM] $@$(QUOTE) + ECHO_PEFIXUP =@echo $(QUOTE)[PEFIXUP] $@$(QUOTE) ECHO_WMC =@echo $(QUOTE)[WMC] $@$(QUOTE) ECHO_NCI =@echo $(QUOTE)[NCI] $@$(QUOTE) ECHO_CABMAN =@echo $(QUOTE)[CABMAN] $<$(QUOTE)
Modified: trunk/reactos/ReactOS-amd64.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ReactOS-amd64.rbuild?rev=44... ============================================================================== --- trunk/reactos/ReactOS-amd64.rbuild [iso-8859-1] (original) +++ trunk/reactos/ReactOS-amd64.rbuild [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -20,7 +20,6 @@ <property name="PLATFORM" value="PC"/> <property name="usewrc" value="false"/> <property name="WINEBUILD_FLAGS" value="--kill-at"/> - <property name="NTOSKRNL_SHARED" value="-shared"/>
<if property="OPTIMIZE" value="1"> <compilerflag>-Os</compilerflag> @@ -48,9 +47,14 @@ <compilerflag>-Wno-multichar</compilerflag> <compilerflag>-Wno-format</compilerflag> <!-- compilerflag>-H</compilerflag> enable this for header traces --> - <linkerflag>-disable-stdcall-fixup</linkerflag> - <linkerflag>-static</linkerflag> - <linkerflag>--unique=.eh_frame</linkerflag> + + <group linkerset="ld"> + <linkerflag>-disable-stdcall-fixup</linkerflag> + <linkerflag>-static</linkerflag> + <linkerflag>--unique=.eh_frame</linkerflag> + <linkerflag>-file-alignment=0x1000</linkerflag> + <linkerflag>-section-alignment=0x1000</linkerflag> + </group>
<!-- Here starts <xi:include href="ReactOS-generic.rbuild" /> -->
@@ -191,7 +195,7 @@ <directory name="storage"> <xi:include href="drivers/storage/directory.rbuild" /> </directory> - <directory name="usb"> + <directory name="usb"> <xi:include href="drivers/usb/directory.rbuild" /> </directory> <directory name="video">
Modified: trunk/reactos/ReactOS-arm.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ReactOS-arm.rbuild?rev=4409... ============================================================================== --- trunk/reactos/ReactOS-arm.rbuild [iso-8859-1] (original) +++ trunk/reactos/ReactOS-arm.rbuild [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -8,17 +8,16 @@ </xi:include>
<xi:include href="ReactOS-generic.rbuild" /> - + <!-- <define name="_M_ARM" /> Already defined by toolchain --> <define name="_ARM_" /> <define name="__arm__" /> <define name="TARGET_arm" host="true" /> - + <define name="USE_COMPILER_EXCEPTIONS" /> - - <property name="NTOSKRNL_SHARED" value="-file-alignment=0x1000 -section-alignment=0x1000 -shared"/> + <property name="WINEBUILD_FLAGS" value="--kill-at"/> - + <include>include/reactos/arm</include>
<if property="SARCH" value="versatile"> @@ -32,12 +31,14 @@ <compilerflag>-Wno-attributes</compilerflag> </group>
- + <define name="__MSVCRT__"/> <!-- DUBIOUS --> - + <group linkerset="ld"> <linkerflag>--strip-debug</linkerflag> <!-- INVESTIGATE --> <linkerflag>-static</linkerflag> <!-- INVESTIGATE --> + <linkerflag>-file-alignment=0x1000</linkerflag> + <linkerflag>-section-alignment=0x1000</linkerflag> </group>
<directory name="media">
Modified: trunk/reactos/ReactOS-i386.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ReactOS-i386.rbuild?rev=440... ============================================================================== --- trunk/reactos/ReactOS-i386.rbuild [iso-8859-1] (original) +++ trunk/reactos/ReactOS-i386.rbuild [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -16,7 +16,6 @@
<define name="USE_COMPILER_EXCEPTIONS" />
- <property name="NTOSKRNL_SHARED" value="-file-alignment=0x1000 -section-alignment=0x1000 -shared"/> <property name="PLATFORM" value="PC"/>
<group compilerset="gcc"> @@ -30,6 +29,8 @@
<group linkerset="ld"> <linkerflag>-disable-stdcall-fixup</linkerflag> + <linkerflag>-file-alignment=0x1000</linkerflag> + <linkerflag>-section-alignment=0x1000</linkerflag> </group>
<directory name="base">
Modified: trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/codebl... ============================================================================== --- trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/codeblocks/codeblocks.cpp [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -598,7 +598,7 @@
if ( sys ) { - fprintf ( OUT, "\t\t\t\t\t<Add option="-Wl,--entry,%s%s" />\r\n", "_", module.GetEntryPoint(false) == "" ? "DriverEntry@8" : module.GetEntryPoint(false).c_str ()); + fprintf ( OUT, "\t\t\t\t\t<Add option="-Wl,--entry,%s%s" />\r\n", "_", module.GetEntryPoint() == "" ? "DriverEntry@8" : module.GetEntryPoint().c_str ()); fprintf ( OUT, "\t\t\t\t\t<Add option="-Wl,--image-base,%s" />\r\n", baseaddr == "" ? "0x10000" : baseaddr.c_str () ); fprintf ( OUT, "\t\t\t\t\t<Add option="-nostartfiles -Wl,--nostdlib" />\r\n" ); } @@ -623,7 +623,7 @@ } else if ( dll ) { - fprintf ( OUT, "\t\t\t\t\t<Add option="-Wl,--entry,%s%s" />\r\n", "_", module.GetEntryPoint(false).c_str () ); + fprintf ( OUT, "\t\t\t\t\t<Add option="-Wl,--entry,%s%s" />\r\n", "_", module.GetEntryPoint().c_str () ); fprintf ( OUT, "\t\t\t\t\t<Add option="-Wl,--image-base,%s" />\r\n", baseaddr == "" ? "0x40000" : baseaddr.c_str () );
if ( module.type == Win32DLL)
Modified: trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/linkers/ld.mak [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -1,32 +1,70 @@ -#~ #(module, objs, deps, ldflags, output, libs, subsys, entry, base, falign, salign) -#~ define RBUILD_LINK +LDFLAG_DLL:=-shared +LDFLAG_DRIVER:=-shared --subsystem=native +LDFLAG_NOSTDLIB:=-nostartfiles -nostdlib +LDFLAG_CONSOLE:=--subsystem=console +LDFLAG_WINDOWS:=--subsystem=windows +LDFLAG_NATIVE:=--subsystem=native
-#~ $(5) ${call RBUILD_output_dir,$(5)}$$(SEP)$(basename $(notdir $(5))).map: $(2) $(3) $(6) | ${call RBUILD_dir,$(5)} - #~ $$(ECHO_CC) - #~ $${ld} -subsystem=$(7) -entry=$(8) -base=$(9) -file-alignment=$(10) -section-alignment=$(11) $(2) $(6) ${call RBUILD_ldflags,$(1),$(4)} -o $(5) -#~ ifeq ($(ROS_BUILDMAP),full) - #~ $$(ECHO_OBJDUMP) - #~ $${objdump} -d -S $$@ > ${call RBUILD_output_dir,$(5)}$$(SEP)$(basename $(notdir $(5))).map -#~ else -#~ ifeq ($(ROS_BUILDMAP),yes) - #~ $$(ECHO_NM) - #~ $${nm} --numeric-sort $$@ > ${call RBUILD_output_dir,$(5)}$$(SEP)$(basename $(notdir $(5))).map -#~ endif -#~ endif -#~ ifeq ($(ROS_BUILDNOSTRIP),yes) - #~ $$(ECHO_CP) - #~ $${cp} $(5) $(basename $(5)).nostrip$(suffix $(5)) 1>$(NUL) -#~ endif -#~ ifneq ($(ROS_GENERATE_RSYM),no) - #~ $$(ECHO_RSYM) - #~ $$(Q)$$(rsym_TARGET) $$@ $$@ -#~ endif -#~ ifeq ($(ROS_LEAN_AND_MEAN),yes) - #~ $$(ECHO_STRIP) - #~ $${strip} -s -x -X $$@ -#~ endif +#(module, objs, deps, ldflags, output, def, libs, entry, base) +define RBUILD_LINK
-#~ endef +ifneq ($(6),) +${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib${call RBUILD_name,$(5)}.a: $(6) | ${call RBUILD_intermediate_path,$(5)} + $$(ECHO DLLTOOL) + $${dlltool} --def $(6) --kill-at --output-lib=$$@
-#~ #(module, dependencies, ldflags, subsys, entry, base, falign, salign) -#~ RBUILD_LINK_RULE=${call RBUILD_LINK,$(1),$(1)_OBJS,$(2),$(3),$(1)_TARGET,$(1)_LIBS,$(4),$(5),$(6),$(7),$(8)} +${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib${call RBUILD_name,$(5)}.delayimp.a: $(6) | ${call RBUILD_intermediate_path,$(5)} + $$(ECHO DLLTOOL) + $${dlltool} --def $(6) --kill-at --output-delaylib=$$@ + +${call RBUILD_intermediate_path_noext,$(5)}.exp: $(6) | ${call RBUILD_intermediate_path,$(5)} + $$(ECHO DLLTOOL) + $${dlltool} --def $(6) --kill-at --output-exp=$$@ + +$(1)_CLEANFILES+=\ + ${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib$(notdir $(5)).a \ + ${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib$(notdir $(5)).delayimp.a \ + ${call RBUILD_intermediate_path_noext,$(5)}.exp +endif + +$(5): $(2) $$(if $(6),${call RBUILD_intermediate_path_noext,$(5)}.exp) $(7) $(3) $$(RSYM_TARGET) $$(PEFIXUP_TARGET) | ${call RBUILD_dir,$(5)} + $$(ECHO_LD) + $${ld} --entry=$(8) --image-base=$(9) $(2) $$(if $(6),${call RBUILD_intermediate_path_noext,$(5)}.exp) $(7) ${call RBUILD_ldflags,$(1),$(4)} -o $$@ +ifneq ($(or $(6),$$(MODULETYPE$$($(1)_TYPE)_KMODE)),) + $$(ECHO_PEFIXUP) + $$(Q)$$(PEFIXUP_TARGET) $$@ $(if $(6),-exports) $$(if $$(MODULETYPE$($(1)_TYPE)_KMODE),-sections) +endif +ifeq ($(ROS_BUILDMAP),full) + $$(ECHO_OBJDUMP) + $${objdump} -d -S $$@ > ${call RBUILD_output_path_noext,$(5)}.map +else +ifeq ($(ROS_BUILDMAP),yes) + $$(ECHO_NM) + $${nm} --numeric-sort $$@ > ${call RBUILD_output_path_noext,$(5)}.map +endif +endif +ifeq ($(ROS_BUILDNOSTRIP),yes) + $$(ECHO_CP) + $${cp} $(5) $(basename $(5)).nostrip$(suffix $(5)) 1>$(NUL) +endif +ifneq ($(ROS_GENERATE_RSYM),no) + $$(ECHO_RSYM) + $$(Q)$$(RSYM_TARGET) $$@ $$@ +endif +ifeq ($(ROS_LEAN_AND_MEAN),yes) + $$(ECHO_STRIP) + $${strip} -s -x -X $$@ +endif + +ifneq ($(ROS_BUILDMAP),) +$(1)_CLEANFILES+=${call RBUILD_output_path_noext,$(5)}.map +endif + +ifeq ($(ROS_BUILDNOSTRIP),yes) +$(1)_CLEANFILES+=$(basename $(5)).nostrip$(suffix $(5)) +endif + +endef + +#(module, def, deps, ldflags, libs, entry, base) +RBUILD_LINK_RULE=${call RBUILD_LINK,$(1),$(value $(1)_OBJS),$(3),$(4),$(value $(1)_TARGET),$(2),$(5) $(value $(1)_LIBS) $(5),$(6),$(7)}
Modified: trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/mingw.cpp [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -38,16 +38,16 @@ { HostTrue, "", "", "" }, // BuildTool { HostFalse, "", "", "" }, // StaticLibrary { HostFalse, "", "", "" }, // ObjectLibrary - { HostFalse, "", "", "" }, // Kernel - { HostFalse, "", "", "" }, // KernelModeDLL - { HostFalse, "-D__NTDRIVER__", "", "" }, // KernelModeDriver - { HostFalse, "", "", "" }, // NativeDLL - { HostFalse, "-D__NTAPP__", "", "" }, // NativeCUI - { HostFalse, "", "", "" }, // Win32DLL - { HostFalse, "", "", "" }, // Win32OCX - { HostFalse, "", "", "" }, // Win32CUI - { HostFalse, "", "", "" }, // Win32GUI - { HostFalse, "", "", "-nostartfiles -nostdlib" }, // BootLoader + { HostFalse, "", "", "$(LDFLAG_DRIVER)" }, // Kernel + { HostFalse, "", "", "$(LDFLAG_DRIVER)" }, // KernelModeDLL + { HostFalse, "-D__NTDRIVER__", "", "$(LDFLAG_DRIVER)" }, // KernelModeDriver + { HostFalse, "", "", "$(LDFLAG_DLL)" }, // NativeDLL + { HostFalse, "-D__NTAPP__", "", "$(LDFLAG_NATIVE)" }, // NativeCUI + { HostFalse, "", "", "$(LDFLAG_DLL)" }, // Win32DLL + { HostFalse, "", "", "$(LDFLAG_DLL)" }, // Win32OCX + { HostFalse, "", "", "$(LDFLAG_CONSOLE)" }, // Win32CUI + { HostFalse, "", "", "$(LDFLAG_WINDOWS)" }, // Win32GUI + { HostFalse, "", "", "" }, // BootLoader { HostFalse, "", "-f bin", "" }, // BootSector { HostFalse, "", "", "" }, // Iso { HostFalse, "", "", "" }, // LiveIso @@ -55,8 +55,8 @@ { HostFalse, "", "", "" }, // RpcServer { HostFalse, "", "", "" }, // RpcClient { HostFalse, "", "", "" }, // Alias - { HostFalse, "", "", "-nostartfiles -nostdlib" }, // BootProgram - { HostFalse, "", "", "" }, // Win32SCR + { HostFalse, "", "", "" }, // BootProgram + { HostFalse, "", "", "$(LDFLAG_WINDOWS)" }, // Win32SCR { HostFalse, "", "", "" }, // IdlHeader { HostFalse, "", "", "" }, // IdlInterface { HostFalse, "", "", "" }, // EmbeddedTypeLib @@ -64,7 +64,7 @@ { HostFalse, "", "", "" }, // RpcProxy { HostTrue, "", "", "" }, // HostStaticLibrary { HostFalse, "", "", "" }, // Cabinet - { HostFalse, "", "", "" }, // KeyboardLayout + { HostFalse, "", "", "$(LDFLAG_DLL)" }, // KeyboardLayout { HostFalse, "", "", "" }, // MessageHeader };
@@ -413,17 +413,17 @@ }
string -MingwBackend::GenerateProjectLFLAGS () const -{ - string lflags; +MingwBackend::GenerateProjectLDFLAGS () const +{ + string ldflags; for ( size_t i = 0; i < ProjectNode.linkerFlags.size (); i++ ) { LinkerFlag& linkerFlag = *ProjectNode.linkerFlags[i]; - if ( lflags.length () > 0 ) - lflags += " "; - lflags += linkerFlag.flag; - } - return lflags; + if ( ldflags.length () > 0 ) + ldflags += " "; + ldflags += linkerFlag.flag; + } + return ldflags; }
void @@ -478,24 +478,21 @@
// Would be nice to have our own C++ runtime fputs ( "BUILTIN_CXXINCLUDES+= $(TARGET_CPPFLAGS)\n", fMakefile ); - } - - // Because RosBE gcc is built to suck - fputs ( "BUILTIN_HOST_CINCLUDES+= $(HOST_CFLAGS)\n", fMakefile ); - fputs ( "BUILTIN_HOST_CPPINCLUDES+= $(HOST_CFLAGS)\n", fMakefile ); - fputs ( "BUILTIN_HOST_CXXINCLUDES+= $(HOST_CPPFLAGS)\n", fMakefile ); + + fprintf ( fMakefile, "PROJECT_CCLIBS := $(shell ${TARGET_CC} -print-libgcc-file-name)\n" ); + fprintf ( fMakefile, "PROJECT_CXXLIBS := $(shell ${TARGET_CPP} -print-file-name=libstdc++.a) $(shell ${TARGET_CPP} -print-file-name=libgcc.a) $(shell ${TARGET_CPP} -print-file-name=libmingw32.a) $(shell ${TARGET_CPP} -print-file-name=libmingwex.a) $(shell ${TARGET_CPP} -print-file-name=libcoldname.a)\n" ); + + /* hack to get libgcc_eh.a, should check mingw version or something */ + if (Environment::GetArch() == "amd64") + { + fprintf ( fMakefile, "PROJECT_LPPFLAGS += $(shell ${TARGET_CPP} -print-file-name=libgcc_eh.a)\n" ); + } + }
MingwModuleHandler::GenerateParameters ( "PROJECT", "+=", ProjectNode.non_if_data ); MingwModuleHandler::GenerateParameters ( "PROJECT_HOST", "+=", ProjectNode.host_non_if_data );
- // TODO: linker flags - fprintf ( fMakefile, "PROJECT_LFLAGS := '$(shell ${TARGET_CC} -print-libgcc-file-name)' %s\n", GenerateProjectLFLAGS ().c_str () ); - fprintf ( fMakefile, "PROJECT_LPPFLAGS := '$(shell ${TARGET_CPP} -print-file-name=libstdc++.a)' '$(shell ${TARGET_CPP} -print-file-name=libgcc.a)' '$(shell ${TARGET_CPP} -print-file-name=libmingw32.a)' '$(shell ${TARGET_CPP} -print-file-name=libmingwex.a)' '$(shell ${TARGET_CPP} -print-file-name=libcoldname.a)'\n" ); - /* hack to get libgcc_eh.a, should check mingw version or something */ - if (Environment::GetArch() == "amd64") - { - fprintf ( fMakefile, "PROJECT_LPPFLAGS += '$(shell ${TARGET_CPP} -print-file-name=libgcc_eh.a)'\n" ); - } + fprintf ( fMakefile, "PROJECT_LDFLAGS := %s\n", GenerateProjectLDFLAGS ().c_str () );
// TODO: use symbolic names for module types for ( size_t i = 0; i < sizeof(ModuleHandlerInformations) / sizeof(ModuleHandlerInformations[0]); ++ i ) @@ -509,15 +506,6 @@ ModuleHandlerInformations[i].cflags ); }
- if ( ModuleHandlerInformations[i].cflags && ModuleHandlerInformations[i].cflags[0] ) - { - fprintf ( fMakefile, - "MODULETYPE%d_%sFLAGS:=%s\n", - (int)i, - "CXX", - ModuleHandlerInformations[i].cflags ); - } - if ( ModuleHandlerInformations[i].nasmflags && ModuleHandlerInformations[i].nasmflags[0] ) { fprintf ( fMakefile, @@ -526,7 +514,28 @@ "NASM", ModuleHandlerInformations[i].nasmflags ); } - } + + if ( ModuleHandlerInformations[i].linkerflags && ModuleHandlerInformations[i].linkerflags[0] ) + { + fprintf ( fMakefile, + "MODULETYPE%d_%sFLAGS:=%s\n", + (int)i, + "LD", + ModuleHandlerInformations[i].linkerflags ); + } + } + + fprintf ( fMakefile, + "MODULETYPE%d_KMODE:=yes\n", + (int)Kernel ); + + fprintf ( fMakefile, + "MODULETYPE%d_KMODE:=yes\n", + (int)KernelModeDLL ); + + fprintf ( fMakefile, + "MODULETYPE%d_KMODE:=yes\n", + (int)KernelModeDriver );
fprintf ( fMakefile, "\n" ); }
Modified: trunk/reactos/tools/rbuild/backend/mingw/mingw.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/mingw.h [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/mingw.h [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -66,7 +66,7 @@ void GenerateHeader () const; void GenerateGlobalProperties ( const char* assignmentOperation, const IfableData& data ) const; - std::string GenerateProjectLFLAGS () const; + std::string GenerateProjectLDFLAGS () const; void GenerateDirectories (); void GenerateGlobalVariables () const; bool IncludeInAllTarget ( const Module& module ) const;
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -290,9 +290,7 @@ { if ( IsStaticLibrary ( module ) ) return GetTargetFilename ( module, NULL ); - return new FileLocation ( IntermediateDirectory, - module.output->relative_path, - ReplaceExtension ( module.name, ".temp.a" ) ); + return NULL; }
/*static*/ bool @@ -1360,25 +1358,6 @@ }
void -MingwModuleHandler::GenerateBuildNonSymbolStrippedCode () -{ - fprintf ( fMakefile, "# BUILD NO STRIP CODE\n" ); - - fprintf ( fMakefile, - "ifeq ($(ROS_BUILDNOSTRIP),yes)\n" ); - - FileLocation nostripFilename ( OutputDirectory, - module.output->relative_path, - GetBasename ( module.output->name ) + ".nostrip" + GetExtension ( *module.output ) ); - CLEAN_FILE ( nostripFilename ); - - OutputCopyCommand ( *module.output, nostripFilename ); - - fprintf ( fMakefile, - "endif\n" ); -} - -void MergeStringVector ( const Backend* backend, const vector<FileLocation>& input, vector<string>& output ) @@ -1438,158 +1417,61 @@ }
void -MingwModuleHandler::GenerateRunRsymCode () const -{ - fprintf ( fMakefile, "# RUN RSYM CODE\n" ); - fprintf ( fMakefile, - "ifneq ($(ROS_GENERATE_RSYM),no)\n" ); - fprintf ( fMakefile, - "\t$(ECHO_RSYM)\n" ); - fprintf ( fMakefile, - "\t$(Q)$(RSYM_TARGET) $@ $@\n\n" ); - fprintf ( fMakefile, - "endif\n" ); -} - -void -MingwModuleHandler::GenerateRunStripCode () const -{ - fprintf ( fMakefile, "# RUN STRIP CODE\n" ); - fprintf ( fMakefile, - "ifeq ($(ROS_LEAN_AND_MEAN),yes)\n" ); - fprintf ( fMakefile, - "\t$(ECHO_STRIP)\n" ); - fprintf ( fMakefile, - "\t${strip} -s -x -X $@\n\n" ); - fprintf ( fMakefile, - "endif\n" ); -} - -void -MingwModuleHandler::GenerateLinkerCommand ( - const string& dependencies, - const string& linkerParameters, - const string& pefixupParameters ) -{ - const FileLocation *target_file = GetTargetFilename ( module, NULL ); - const FileLocation *definitionFilename = GetDefinitionFilename (); - string linker = "${ld}"; - string objectsMacro = GetObjectsMacro ( module ); - string libsMacro = GetLibsMacro (); - - fprintf ( fMakefile, "# LINKER COMMAND\n" ); - - string target_macro ( GetTargetMacro ( module ) ); - string target_folder ( backend->GetFullPath ( *target_file ) ); +MingwModuleHandler::GenerateLinkerCommand () const +{ + string definitionFilename; + + const FileLocation *DefinitionFilename = GetDefinitionFilename (); + + if ( DefinitionFilename ) { + definitionFilename = backend->GetFullName (*DefinitionFilename); + delete DefinitionFilename; + }
string linkerScriptArgument; - if ( module.linkerScript != NULL ) + if ( module.linkerScript != NULL ) { + if ( module.project.configuration.Linker == GnuLd ) linkerScriptArgument = ssprintf ( " -T %s", backend->GetFullName ( *module.linkerScript->file ).c_str () ); else - linkerScriptArgument = ""; - - /* check if we need to add default C++ libraries, ie if we have - * a C++ user-mode module without the -nostdlib linker flag - */ - bool link_defaultlibs = module.cplusplus && - linkerParameters.find ("-nostdlib") == string::npos && - !(module.type == KernelModeDLL || module.type == KernelModeDriver); - - if ( !module.HasImportLibrary() ) - { - fprintf ( fMakefile, - "%s: %s %s $(RSYM_TARGET) $(PEFIXUP_TARGET) | %s\n", - target_macro.c_str (), - definitionFilename ? backend->GetFullName ( *definitionFilename ).c_str () : "", - dependencies.c_str (), - target_folder.c_str () ); - fprintf ( fMakefile, "\t$(ECHO_LD)\n" ); - - fprintf ( fMakefile, - "\t%s %s%s %s %s %s %s -o %s\n", - linker.c_str (), - linkerParameters.c_str (), - linkerScriptArgument.c_str (), - objectsMacro.c_str (), - link_defaultlibs ? "$(PROJECT_LPPFLAGS) " : "", - libsMacro.c_str (), - GetLinkerMacro ().c_str (), - target_macro.c_str () ); - } - else - { - FileLocation temp_exp ( IntermediateDirectory, - module.output->relative_path, - module.name + ".exp" ); - CLEAN_FILE ( temp_exp ); - - fprintf ( fMakefile, - "%s: %s | %s\n", - backend->GetFullName ( temp_exp ).c_str (), - definitionFilename ? backend->GetFullName ( *definitionFilename ).c_str () : "", - backend->GetFullPath ( temp_exp ).c_str () ); - fprintf ( fMakefile, "\t$(ECHO_DLLTOOL)\n" ); - - fprintf ( fMakefile, - "\t${dlltool} --dllname %s --def %s --output-exp $@%s%s\n", - module.GetDllName ().c_str (), - definitionFilename ? backend->GetFullName ( *definitionFilename ).c_str () : "", - module.mangledSymbols ? "" : " --kill-at", - module.underscoreSymbols ? " --add-underscore" : "" ); - - fprintf ( fMakefile, - "%s: %s %s $(RSYM_TARGET) $(PEFIXUP_TARGET) | %s\n", - target_macro.c_str (), - backend->GetFullName ( temp_exp ).c_str (), - dependencies.c_str (), - target_folder.c_str () ); - fprintf ( fMakefile, "\t$(ECHO_LD)\n" ); - - fprintf ( fMakefile, - "\t%s %s%s %s %s %s %s %s -o %s\n", - - linker.c_str (), - linkerParameters.c_str (), - linkerScriptArgument.c_str (), - backend->GetFullName ( temp_exp ).c_str (), - objectsMacro.c_str (), - link_defaultlibs ? "$(PROJECT_LPPFLAGS) " : "", - libsMacro.c_str (), - GetLinkerMacro ().c_str (), - target_macro.c_str () ); - - fprintf ( fMakefile, - "\t$(Q)$(PEFIXUP_TARGET) %s -exports%s\n", - target_macro.c_str (), - pefixupParameters.c_str() ); - } - - GenerateBuildMapCode (); - GenerateBuildNonSymbolStrippedCode (); - GenerateRunRsymCode (); - GenerateRunStripCode (); - GenerateCleanObjectsAsYouGoCode (); - - if ( definitionFilename ) - delete definitionFilename; - delete target_file; -} - -void -MingwModuleHandler::GeneratePhonyTarget() const -{ - string targetMacro ( GetTargetMacro ( module ) ); - const FileLocation *target_file = GetTargetFilename ( module, NULL ); - - fprintf ( fMakefile, "# PHONY TARGET\n" ); - fprintf ( fMakefile, - ".PHONY: %s\n\n", - targetMacro.c_str ()); - fprintf ( fMakefile, "%s: | %s\n", - targetMacro.c_str (), - backend->GetFullPath ( *target_file ).c_str () ); - - delete target_file; + fprintf ( stderr, + "Linker doesn't support linker scripts: linker script %s ignored for module %s\n", + backend->GetFullName ( *module.linkerScript->file ).c_str (), + module.name.c_str() ); + } + + string extraLibraries; + if ( ModuleHandlerInformations[module.type].DefaultHost == HostFalse ) { + if ( module.cplusplus ) { + switch ( module.type ) + { + case Win32DLL: + case Win32OCX: + case Win32CUI: + case Win32GUI: + case Win32SCR: + extraLibraries = "$$(PROJECT_CXXLIBS)"; + break; + + default: + extraLibraries = "$$(PROJECT_CCLIBS)"; + break; + } + } else + extraLibraries = "$$(PROJECT_CCLIBS)"; + } + + delete PassThruCacheDirectory ( new FileLocation ( module.output->directory, module.output->relative_path, "" ) ); + delete PassThruCacheDirectory ( new FileLocation ( IntermediateDirectory, module.output->relative_path, "" ) ); + + fprintf ( fMakefile, + "$(eval $(call RBUILD_LINK_RULE,%s,%s,%s,%s,%s,%s,%s))\n", + module.name.c_str(), + definitionFilename.c_str(), + module.xmlbuildFile.c_str(), + linkerScriptArgument.c_str(), + extraLibraries.c_str(), + module.GetEntryPoint().c_str(), + module.baseaddress.c_str() ); }
void @@ -1597,8 +1479,6 @@ { size_t i; string moduleDependencies; - - fprintf ( fMakefile, "# OBJECT FILE TARGETS\n" );
const vector<CompilationUnit*>& compilationUnits = data.compilationUnits; for ( i = 0; i < compilationUnits.size (); i++ ) @@ -1642,8 +1522,6 @@ void MingwModuleHandler::GenerateObjectFileTargets () { - fprintf ( fMakefile, "# OBJECT FILE TARGETS\n" ); - if ( module.pch && use_pch ) {
@@ -1660,12 +1538,9 @@ pchCxxRule.Execute ( fMakefile, backend, module, module.pch->file, clean_files, dependencies ); else pchRule.Execute ( fMakefile, backend, module, module.pch->file, clean_files, dependencies ); - - fprintf ( fMakefile, "\n" ); }
GenerateObjectFileTargets ( module.non_if_data ); - fprintf ( fMakefile, "\n" ); }
/* caller needs to delete the returned object */ @@ -1673,6 +1548,10 @@ MingwModuleHandler::GenerateArchiveTarget () { const FileLocation *archiveFilename = GetModuleArchiveFilename (); + + if ( archiveFilename == NULL ) + return NULL; + const FileLocation *definitionFilename = GetDefinitionFilename ();
fprintf ( fMakefile, "# ARCHIVE TARGET\n" ); @@ -1687,11 +1566,8 @@ backend->GetFullName ( *definitionFilename ).c_str () );
fprintf ( fMakefile, - "\t${dlltool} --dllname %s --def %s --output-lib $@%s%s\n", - module.GetDllName ().c_str (), - backend->GetFullName ( *definitionFilename ).c_str (), - module.mangledSymbols ? "" : " --kill-at", - module.underscoreSymbols ? " --add-underscore" : "" ); + "\t${dlltool} --def %s --kill-at --output-lib $@\n", + backend->GetFullName ( *definitionFilename ).c_str () ); } else arRule1.Execute ( fMakefile, backend, module, archiveFilename, clean_files ); @@ -1727,7 +1603,7 @@ string MingwModuleHandler::GetLinkerMacro () const { - return ssprintf ( "$(%s_LFLAGS)", + return ssprintf ( "$(%s_LDFLAGS)", module.name.c_str () ); }
@@ -1842,7 +1718,7 @@ { set<const Define *> used_defs;
- linkerflagsMacro = ssprintf ("%s_LFLAGS", module.name.c_str ()); + linkerflagsMacro = ssprintf ("%s_LDFLAGS", module.name.c_str ()); libsMacro = ssprintf("%s_LIBS", module.name.c_str ());
const FileLocation * pchPath = GetPrecompiledHeaderPath (); @@ -1896,28 +1772,6 @@ }
GenerateParameters ( module.name.c_str(), "+=", module.non_if_data ); - - const char *linkerflags = ModuleHandlerInformations[module.type].linkerflags; - if ( strlen( linkerflags ) > 0 ) - { - fprintf ( fMakefile, - "%s += %s\n\n", - linkerflagsMacro.c_str (), - linkerflags ); - } - - // FIXME: make rules for linker, move standard flags there - if ( ModuleHandlerInformations[module.type].DefaultHost == HostFalse ) - { - if ( module.cplusplus ) - fprintf ( fMakefile, - "%s+= $(PROJECT_LPPFLAGS)\n\n", - linkerflagsMacro.c_str () ); - else - fprintf ( fMakefile, - "%s+= $(PROJECT_LFLAGS)\n\n", - linkerflagsMacro.c_str () ); - }
GenerateMacros ( "+=", @@ -1957,7 +1811,9 @@ if ( !ReferenceObjects ( module ) ) { const FileLocation* ar_target = GenerateArchiveTarget (); - delete ar_target; + + if ( ar_target ) + delete ar_target; }
@@ -2159,61 +2015,6 @@ }
void -MingwModuleHandler::GenerateImportLibraryTarget ( - const FileLocation *defFilename, - const FileLocation *library_target, - bool delayimp) -{ - string empty = "tools" + sSep + "rbuild" + sSep + "empty.def"; - - fprintf ( fMakefile, "# IMPORT LIBRARY RULE\n" ); - - fprintf ( fMakefile, "%s:", - backend->GetFullName ( *library_target ).c_str () ); - - if ( defFilename ) - { - fprintf ( fMakefile, " %s", - backend->GetFullName ( *defFilename ).c_str () ); - } - - fprintf ( fMakefile, " | %s\n", - backend->GetFullPath ( *library_target ).c_str () ); - - fprintf ( fMakefile, "\t$(ECHO_DLLTOOL)\n" ); - - fprintf ( fMakefile, - "\t${dlltool} --dllname %s --def %s %s %s%s%s\n\n", - module.GetDllName ().c_str (), - defFilename ? backend->GetFullName ( *defFilename ).c_str () - : empty.c_str (), - delayimp ? "--output-delaylib" : "--output-lib", - backend->GetFullName ( *library_target ).c_str (), - module.mangledSymbols ? "" : " --kill-at", - module.underscoreSymbols ? " --add-underscore" : "" ); -} - -void -MingwModuleHandler::GenerateImportLibraryTargetIfNeeded () -{ - if ( module.importLibrary != NULL ) - { - const FileLocation *library_target = GetImportLibraryFilename ( module, &clean_files, false ); - const FileLocation *delayimp_target = GetImportLibraryFilename ( module, &clean_files, true ); - const FileLocation *defFilename = GetDefinitionFilename (); - - GenerateImportLibraryTarget(defFilename, library_target, false); - GenerateImportLibraryTarget(defFilename, delayimp_target, true); - - if ( defFilename ) - delete defFilename; - delete library_target; - delete delayimp_target; - - } -} - -void MingwModuleHandler::GetSpecObjectDependencies ( vector<FileLocation>& dependencies, const FileLocation *file ) const @@ -2402,30 +2203,8 @@ void MingwKernelModuleHandler::GenerateKernelModuleTarget () { - string targetMacro ( GetTargetMacro ( module ) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=native -entry=%s -image-base=%s", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - - GenerateLinkerCommand ( dependencies, - linkerParameters + " $(NTOSKRNL_SHARED)", - " -sections" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2453,29 +2232,8 @@ void MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget () { - string targetMacro ( GetTargetMacro ( module ) ); - string workingDirectory = GetWorkingDirectory (); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=native -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000 -shared", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - " -sections" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2502,29 +2260,8 @@ void MingwNativeDLLModuleHandler::GenerateNativeDLLModuleTarget () { - string targetMacro ( GetTargetMacro (module) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=native -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000 -shared", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2551,29 +2288,8 @@ void MingwNativeCUIModuleHandler::GenerateNativeCUIModuleTarget () { - string targetMacro ( GetTargetMacro (module) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=native -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2641,29 +2357,8 @@ void MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget () { - string targetMacro ( GetTargetMacro (module) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=console -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000 -shared", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2682,29 +2377,8 @@ void MingwWin32OCXModuleHandler::GenerateWin32OCXModuleTarget () { - string targetMacro ( GetTargetMacro (module) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=console -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000 -shared", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2730,29 +2404,8 @@ void MingwWin32CUIModuleHandler::GenerateWin32CUIModuleTarget () { - string targetMacro ( GetTargetMacro (module) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=console -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2778,29 +2431,8 @@ void MingwWin32GUIModuleHandler::GenerateWin32GUIModuleTarget () { - string targetMacro ( GetTargetMacro (module) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=windows -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
@@ -2845,7 +2477,7 @@ if (Environment::GetArch() == "arm") { fprintf ( fMakefile, - "\t${gcc} -Wl,--subsystem,native -o %s %s %s %s\n", + "\t${gcc} -Wl,--subsystem,native -o %s %s %s %s -nostartfiles -nostdlib\n", backend->GetFullName ( junk_tmp ).c_str (), objectsMacro.c_str (), libsMacro.c_str (), @@ -2854,7 +2486,7 @@ else { fprintf ( fMakefile, - "\t${gcc} -Wl,--subsystem,native -Wl,-Ttext,0x8000 -o %s %s %s %s\n", + "\t${gcc} -Wl,--subsystem,native -Wl,-Ttext,0x8000 -o %s %s %s %s -nostartfiles -nostdlib\n", backend->GetFullName ( junk_tmp ).c_str (), objectsMacro.c_str (), libsMacro.c_str (), @@ -3400,29 +3032,8 @@ void MingwTestModuleHandler::GenerateTestModuleTarget () { - string targetMacro ( GetTargetMacro ( module ) ); - string workingDirectory = GetWorkingDirectory ( ); - string libsMacro = GetLibsMacro (); - - GenerateImportLibraryTargetIfNeeded (); - - if ( module.non_if_data.compilationUnits.size () > 0 ) - { - GenerateRules (); - - string dependencies = libsMacro + " " + objectsMacro; - - string linkerParameters = ssprintf ( "-subsystem=console -entry=%s -image-base=%s -file-alignment=0x1000 -section-alignment=0x1000", - module.GetEntryPoint(!(Environment::GetArch() == "arm")).c_str (), - module.baseaddress.c_str () ); - GenerateLinkerCommand ( dependencies, - linkerParameters, - "" ); - } - else - { - GeneratePhonyTarget(); - } + GenerateRules (); + GenerateLinkerCommand (); }
Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.h [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -113,15 +113,9 @@ std::string GetLinkerMacro () const; static std::string GetDebugFormat (); void GenerateCleanObjectsAsYouGoCode () const; - void GenerateRunRsymCode () const; - void GenerateRunStripCode () const; - void GenerateLinkerCommand ( const std::string& dependencies, - const std::string& linkerParameters, - const std::string& pefixupParameters ); - void GeneratePhonyTarget() const; + void GenerateLinkerCommand () const; void GenerateBuildMapCode ( const FileLocation *mapTarget = NULL ); void GenerateRules (); - void GenerateImportLibraryTarget (const FileLocation *defFilename, const FileLocation *library_target, bool delayimp); void GenerateImportLibraryTargetIfNeeded (); void GetDefinitionDependencies ( std::vector<FileLocation>& dependencies ) const; std::string GetLinkingDependencies () const;
Modified: trunk/reactos/tools/rbuild/backend/mingw/rules.mak URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/... ============================================================================== --- trunk/reactos/tools/rbuild/backend/mingw/rules.mak [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/mingw/rules.mak [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -19,7 +19,7 @@ RBUILD_output_dir=${call RBUILD_fullpath,$(value OUTPUT)$(SEP)$(dir ${call RBUILD_strip_prefixes,$(1)})}
#(source) -RBUILD_source_name=$(basename $(notdir $(1))) +RBUILD_name=$(basename $(notdir $(1)))
#(source) RBUILD_dir=${call RBUILD_fullpath,$(dir ${call RBUILD_compress_prefixes,$(1)})}
Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/msvc/v... ============================================================================== --- trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -467,7 +467,7 @@ { fprintf ( OUT, "\t\t\t<Tool\r\n" ); fprintf ( OUT, "\t\t\t\tName="VCLinkerTool"\r\n" ); - if (module.GetEntryPoint(false) == "0" && sys == false) + if (module.GetEntryPoint() == "0" && sys == false) fprintf ( OUT, "AdditionalOptions="/noentry"" );
if (configuration.VSProjectVersion == "9.00") @@ -540,7 +540,7 @@
if ( sys ) { - if (module.GetEntryPoint(false) == "0") + if (module.GetEntryPoint() == "0") fprintf ( OUT, "\t\t\t\tAdditionalOptions=" /noentry /ALIGN:0x20 /SECTION:INIT,D /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096"\r\n" ); else fprintf ( OUT, "\t\t\t\tAdditionalOptions=" /ALIGN:0x20 /SECTION:INIT,D /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096"\r\n" ); @@ -548,7 +548,7 @@ fprintf ( OUT, "\t\t\t\tGenerateManifest="FALSE"\r\n" ); fprintf ( OUT, "\t\t\t\tSubSystem="%d"\r\n", 3 ); fprintf ( OUT, "\t\t\t\tDriver="%d"\r\n", 1 ); - fprintf ( OUT, "\t\t\t\tEntryPointSymbol="%s"\r\n", module.GetEntryPoint(false) == "" ? "DriverEntry" : module.GetEntryPoint(false).c_str ()); + fprintf ( OUT, "\t\t\t\tEntryPointSymbol="%s"\r\n", module.GetEntryPoint() == "" ? "DriverEntry" : module.GetEntryPoint().c_str ()); fprintf ( OUT, "\t\t\t\tBaseAddress="%s"\r\n", baseaddr == "" ? "0x10000" : baseaddr.c_str ()); } else if ( exe ) @@ -583,16 +583,16 @@ } else if ( dll ) { - if (module.GetEntryPoint(false) == "0") + if (module.GetEntryPoint() == "0") fprintf ( OUT, "\t\t\t\tEntryPointSymbol=""\r\n" ); else { // get rid of DllMain@12 because MSVC needs to link to _DllMainCRTStartup@12 // when using CRT - if (module.GetEntryPoint(false) == "DllMain@12") + if (module.GetEntryPoint() == "DllMain@12") fprintf ( OUT, "\t\t\t\tEntryPointSymbol=""\r\n" ); else - fprintf ( OUT, "\t\t\t\tEntryPointSymbol="%s"\r\n", module.GetEntryPoint(false).c_str ()); + fprintf ( OUT, "\t\t\t\tEntryPointSymbol="%s"\r\n", module.GetEntryPoint().c_str ()); } fprintf ( OUT, "\t\t\t\tBaseAddress="%s"\r\n", baseaddr == "" ? "0x40000" : baseaddr.c_str ()); if ( use_msvcrt_lib )
Modified: trunk/reactos/tools/rbuild/module.cpp URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/module.cpp?rev... ============================================================================== --- trunk/reactos/tools/rbuild/module.cpp [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/module.cpp [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -342,14 +342,6 @@ baseaddress = att->value; else baseaddress = GetDefaultModuleBaseaddress (); - - mangledSymbols = GetBooleanAttribute ( moduleNode, "mangledsymbols" ); - - att = moduleNode.GetAttribute ( "underscoresymbols", false ); - if ( att != NULL ) - underscoreSymbols = att->value == "true"; - else - underscoreSymbols = false;
isStartupLib = GetBooleanAttribute ( moduleNode, "isstartuplib" ); isCRT = GetBooleanAttribute ( moduleNode, "iscrt", GetDefaultModuleIsCRT () ); @@ -1359,12 +1351,13 @@ }
string -Module::GetEntryPoint(bool leadingUnderscore) const +Module::GetEntryPoint() const { string result = ""; if (entrypoint == "0" || entrypoint == "0x0") return "0"; - if (leadingUnderscore) + + if (Environment::GetArch() != "arm") result = "_";
result += entrypoint; @@ -1874,10 +1867,6 @@
if ( dllname ) this->dllname = dllname->value; - else if ( module->type == StaticLibrary || module->type == HostStaticLibrary ) - throw XMLInvalidBuildFileException ( - node.location, - "<importlibrary> dllname attribute required." );
size_t index = definition->value.find_last_of ( "/\" ); if ( index == string::npos )
Modified: trunk/reactos/tools/rbuild/rbuild.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/rbuild.h?rev=4... ============================================================================== --- trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] (original) +++ trunk/reactos/tools/rbuild/rbuild.h [iso-8859-1] Wed Nov 11 04:41:14 2009 @@ -378,8 +378,6 @@ ImportLibrary* delayImportLibrary; Metadata* metadata; Bootsector* bootSector; - bool mangledSymbols; - bool underscoreSymbols; bool isUnicode; bool isDefaultEntryPoint; Bootstrap* bootstrap; @@ -420,7 +418,7 @@ bool IsDLL () const; std::string GetPathWithPrefix ( const std::string& prefix ) const; // "path/prefixfoo.exe" std::string GetPathToBaseDir() const; // "../" offset to rootdirectory - std::string GetEntryPoint(bool leadingUnderscore) const; + std::string GetEntryPoint() const; void GetTargets ( string_list& ) const; std::string GetInvocationTarget ( const int index ) const; bool HasFileWithExtension ( const IfableData&, const std::string& extension ) const;