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=…
==============================================================================
--- 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=4…
==============================================================================
--- 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=440…
==============================================================================
--- 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=44…
==============================================================================
--- 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/codeb…
==============================================================================
--- 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/…
==============================================================================
--- 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?re…
==============================================================================
--- 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=…
==============================================================================
--- 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;