$OpenBSD: patch-Makefile,v 1.12 2014/06/02 22:01:02 brad Exp $
--- Makefile.orig	Sun May 25 16:45:05 2014
+++ Makefile	Mon May 26 15:16:54 2014
@@ -101,7 +101,9 @@ ifdef ARCH_X86
 ASFLAGS += -I$(SRCPATH)/common/x86/
 SRCS   += common/x86/mc-c.c common/x86/predict-c.c
 OBJASM  = $(ASMSRC:%.asm=%.o)
+SOBJASM = $(ASMSRC:%.asm=%.so)
 $(OBJASM): common/x86/x86inc.asm common/x86/x86util.asm
+$(SOBJASM): common/x86/x86inc.asm common/x86/x86util.asm
 OBJCHK += tools/checkasm-a.o
 endif
 endif
@@ -154,8 +156,10 @@ SRCS += common/opencl.c encoder/slicetype-cl.c
 endif
 
 OBJS   += $(SRCS:%.c=%.o)
+SOBJS  += $(SRCS:%.c=%.so)
 OBJCLI += $(SRCCLI:%.c=%.o)
 OBJSO  += $(SRCSO:%.c=%.o)
+SOBJSO += $(SRCSO:%.c=%.so)
 
 .PHONY: all default fprofiled clean distclean install uninstall lib-static lib-shared cli install-lib-dev install-lib-static install-lib-shared install-cli
 
@@ -168,8 +172,8 @@ $(LIBX264): $(GENERATED) .depend $(OBJS) $(OBJASM)
 	$(AR)$@ $(OBJS) $(OBJASM)
 	$(if $(RANLIB), $(RANLIB) $@)
 
-$(SONAME): $(GENERATED) .depend $(OBJS) $(OBJASM) $(OBJSO)
-	$(LD)$@ $(OBJS) $(OBJASM) $(OBJSO) $(SOFLAGS) $(LDFLAGS)
+$(SONAME): $(GENERATED) .depend $(SOBJS) $(SOBJASM) $(SOBJSO)
+	$(LD)$@ $(SOBJS) $(SOBJASM) $(SOBJSO) $(SOFLAGS) $(LDFLAGS)
 
 ifneq ($(EXE),)
 .PHONY: x264 checkasm
@@ -178,7 +182,7 @@ checkasm: checkasm$(EXE)
 endif
 
 x264$(EXE): $(GENERATED) .depend $(OBJCLI) $(CLI_LIBX264)
-	$(LD)$@ $(OBJCLI) $(CLI_LIBX264) $(LDFLAGSCLI) $(LDFLAGS)
+	$(LD)$@ $(OBJCLI) -L. -lx264 $(LDFLAGSCLI) $(LDFLAGS)
 
 checkasm$(EXE): $(GENERATED) .depend $(OBJCHK) $(LIBX264)
 	$(LD)$@ $(OBJCHK) $(LIBX264) $(LDFLAGS)
@@ -189,10 +193,21 @@ $(OBJS) $(OBJASM) $(OBJSO) $(OBJCLI) $(OBJCHK): .depen
 	$(AS) $(ASFLAGS) -o $@ $<
 	-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile
 
+%.so: %.asm
+	$(AS) $(ASFLAGS) -DPIC -o $@ $<
+	-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile
+
 %.o: %.S
 	$(AS) $(ASFLAGS) -o $@ $<
 	-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile
 
+%.so: %.S
+	$(AS) $(ASFLAGS) -DPIC -o $@ $<
+	-@ $(if $(STRIP), $(STRIP) -x $@) # delete local/anonymous symbols, so they don't show up in oprofile
+
+%.so: %.c
+	$(CC) $(CFLAGS) -fPIC -c -o $@ $<
+
 %.dll.o: %.rc x264.h
 	$(RC) $(RCFLAGS)$@ -DDLL $<
 
@@ -238,7 +253,7 @@ fprofiled:
 endif
 
 clean:
-	rm -f $(OBJS) $(OBJASM) $(OBJCLI) $(OBJSO) $(SONAME) *.a *.lib *.exp *.pdb x264 x264.exe .depend TAGS
+	rm -f $(OBJS) $(SOBJS) $(OBJASM) $(SOBJASM) $(OBJCLI) $(OBJSO) $(SOBJSO) $(SOBJSO) $(SONAME) *.a *.lib *.exp *.pdb x264 x264.exe .depend TAGS
 	rm -f checkasm checkasm.exe $(OBJCHK) $(GENERATED) x264_lookahead.clbin
 	rm -f $(SRC2:%.c=%.gcda) $(SRC2:%.c=%.gcno) *.dyn pgopti.dpi pgopti.dpi.lock
 
@@ -267,7 +282,6 @@ ifneq ($(IMPLIBNAME),)
 	$(INSTALL) -m 755 $(SONAME) $(DESTDIR)$(bindir)
 	$(INSTALL) -m 644 $(IMPLIBNAME) $(DESTDIR)$(libdir)
 else ifneq ($(SONAME),)
-	ln -f -s $(SONAME) $(DESTDIR)$(libdir)/libx264.$(SOSUFFIX)
 	$(INSTALL) -m 755 $(SONAME) $(DESTDIR)$(libdir)
 endif
 
