Revert yesterday's fix for now.
[reactos.git] / reactos / tools / rbuild / backend / mingw / linkers / ld.mak
1 LDFLAG_DLL:=-shared
2 LDFLAG_DRIVER:=-shared --subsystem=native
3 LDFLAG_NOSTDLIB:=-nostartfiles -nostdlib
4 LDFLAG_CONSOLE:=--subsystem=console
5 LDFLAG_WINDOWS:=--subsystem=windows
6 LDFLAG_NATIVE:=--subsystem=native
7
8 #(module, objs, deps, ldflags, output, def, libs, entry, base)
9 define RBUILD_LINK
10
11 ifneq ($(6),)
12 ${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib${call RBUILD_name,$(5)}.a: $(6) | ${call RBUILD_intermediate_path,$(5)}
13 $$(ECHO DLLTOOL)
14 $${dlltool} --def $(6) --kill-at --output-lib=$$@
15
16 ${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib${call RBUILD_name,$(5)}.delayimp.a: $(6) | ${call RBUILD_intermediate_path,$(5)}
17 $$(ECHO DLLTOOL)
18 $${dlltool} --def $(6) --kill-at --output-delaylib=$$@
19
20 ${call RBUILD_intermediate_path_noext,$(5)}.exp: $(6) | ${call RBUILD_intermediate_path,$(5)}
21 $$(ECHO DLLTOOL)
22 $${dlltool} --def $(6) --kill-at --output-exp=$$@
23
24 $(1)_CLEANFILES+=\
25 ${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib$(notdir $(5)).a \
26 ${call RBUILD_intermediate_dir,$(5)}$$(SEP)lib$(notdir $(5)).delayimp.a \
27 ${call RBUILD_intermediate_path_noext,$(5)}.exp
28 endif
29
30 $(5): $(2) $$(if $(6),${call RBUILD_intermediate_path_noext,$(5)}.exp) $(7) $(3) $$(RSYM_TARGET) $$(PEFIXUP_TARGET) | ${call RBUILD_dir,$(5)}
31 $$(ECHO_LD)
32 $${ld} --entry=$(8) --image-base=$(9) $(2) $$(if $(6),${call RBUILD_intermediate_path_noext,$(5)}.exp) $(7) ${call RBUILD_ldflags,$(1),$(4)} -o $$@
33 ifneq ($(or $(6),$$(MODULETYPE$$($(1)_TYPE)_KMODE)),)
34 $$(ECHO_PEFIXUP)
35 $$(Q)$$(PEFIXUP_TARGET) $$@ $(if $(6),-exports) $$(if $$(MODULETYPE$($(1)_TYPE)_KMODE),-sections)
36 endif
37 ifeq ($(ROS_BUILDMAP),full)
38 $$(ECHO_OBJDUMP)
39 $${objdump} -d -S $$@ > ${call RBUILD_output_path_noext,$(5)}.map
40 else
41 ifeq ($(ROS_BUILDMAP),yes)
42 $$(ECHO_NM)
43 $${nm} --numeric-sort $$@ > ${call RBUILD_output_path_noext,$(5)}.map
44 endif
45 endif
46 ifeq ($(ROS_BUILDNOSTRIP),yes)
47 $$(ECHO_CP)
48 $${cp} $(5) $(basename $(5)).nostrip$(suffix $(5)) 1>$(NUL)
49 endif
50 ifneq ($(ROS_GENERATE_RSYM),no)
51 $$(ECHO_RSYM)
52 $$(Q)$$(RSYM_TARGET) $$@ $$@
53 endif
54 ifeq ($(ROS_LEAN_AND_MEAN),yes)
55 $$(ECHO_STRIP)
56 $${strip} -s -x -X $$@
57 endif
58
59 ifneq ($(ROS_BUILDMAP),)
60 $(1)_CLEANFILES+=${call RBUILD_output_path_noext,$(5)}.map
61 endif
62
63 ifeq ($(ROS_BUILDNOSTRIP),yes)
64 $(1)_CLEANFILES+=$(basename $(5)).nostrip$(suffix $(5))
65 endif
66
67 endef
68
69 #(module, def, deps, ldflags, libs, entry, base)
70 RBUILD_LINK_RULE=${call RBUILD_LINK,$(1),$(value $(1)_OBJS),$(3),$(4),$(value $(1)_TARGET),$(2),$(5) $(value $(1)_LIBS) $(5),$(6),$(7)}