mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 07:11:46 +00:00
build: Link game, cgame, ui modules to $(LIBS)
All three modules call mathematical functions like atan2(). On glibc systems, when compiled to native code with an ordinary C compiler (as opposed to bytecode from q3lcc), they get the definition of those functions from libm. Until now, they were not explicitly linked to libm, and instead relied on the fact that libm is linked into the main executable. However, doing it this way defeats glibc's symbol-versioning mechanisms, and can fail in some situations, in particular binaries built with -ffast-math on a pre-2.31 version of glibc (where atan2() resolves to __atan2_finite()), and used without recompilation on a post-2.31 version of glibc (where __atan2_finite() has become a deprecated hidden symbol that is only available as a versioned symbol). When building shared libraries and loadable modules, it's most robust to link them explicitly to their dependencies, as is done here. $(LIBS) also includes -ldl, which is unnecessary but harmless.
This commit is contained in:
parent
47c9641939
commit
2688acc762
1 changed files with 6 additions and 6 deletions
12
Makefile
12
Makefile
|
@ -2503,7 +2503,7 @@ Q3CGVMOBJ = $(Q3CGOBJ_:%.o=%.asm)
|
|||
|
||||
$(B)/$(BASEGAME)/cgame$(SHLIBNAME): $(Q3CGOBJ)
|
||||
$(echo_cmd) "LD $@"
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) $(LIBS)
|
||||
|
||||
$(B)/$(BASEGAME)/vm/cgame.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM)
|
||||
$(echo_cmd) "Q3ASM $@"
|
||||
|
@ -2548,7 +2548,7 @@ MPCGVMOBJ = $(MPCGOBJ_:%.o=%.asm)
|
|||
|
||||
$(B)/$(MISSIONPACK)/cgame$(SHLIBNAME): $(MPCGOBJ)
|
||||
$(echo_cmd) "LD $@"
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ)
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ) $(LIBS)
|
||||
|
||||
$(B)/$(MISSIONPACK)/vm/cgame.qvm: $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM)
|
||||
$(echo_cmd) "Q3ASM $@"
|
||||
|
@ -2601,7 +2601,7 @@ Q3GVMOBJ = $(Q3GOBJ_:%.o=%.asm)
|
|||
|
||||
$(B)/$(BASEGAME)/qagame$(SHLIBNAME): $(Q3GOBJ)
|
||||
$(echo_cmd) "LD $@"
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) $(LIBS)
|
||||
|
||||
$(B)/$(BASEGAME)/vm/qagame.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM)
|
||||
$(echo_cmd) "Q3ASM $@"
|
||||
|
@ -2652,7 +2652,7 @@ MPGVMOBJ = $(MPGOBJ_:%.o=%.asm)
|
|||
|
||||
$(B)/$(MISSIONPACK)/qagame$(SHLIBNAME): $(MPGOBJ)
|
||||
$(echo_cmd) "LD $@"
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ)
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ) $(LIBS)
|
||||
|
||||
$(B)/$(MISSIONPACK)/vm/qagame.qvm: $(MPGVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM)
|
||||
$(echo_cmd) "Q3ASM $@"
|
||||
|
@ -2715,7 +2715,7 @@ Q3UIVMOBJ = $(Q3UIOBJ_:%.o=%.asm)
|
|||
|
||||
$(B)/$(BASEGAME)/ui$(SHLIBNAME): $(Q3UIOBJ)
|
||||
$(echo_cmd) "LD $@"
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) $(LIBS)
|
||||
|
||||
$(B)/$(BASEGAME)/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM)
|
||||
$(echo_cmd) "Q3ASM $@"
|
||||
|
@ -2743,7 +2743,7 @@ MPUIVMOBJ = $(MPUIOBJ_:%.o=%.asm)
|
|||
|
||||
$(B)/$(MISSIONPACK)/ui$(SHLIBNAME): $(MPUIOBJ)
|
||||
$(echo_cmd) "LD $@"
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ)
|
||||
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ) $(LIBS)
|
||||
|
||||
$(B)/$(MISSIONPACK)/vm/ui.qvm: $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM)
|
||||
$(echo_cmd) "Q3ASM $@"
|
||||
|
|
Loading…
Reference in a new issue