$(M)LD $@
$(Q)$(CC) $(LSHARED) $(LDFLAGS) -o $@ $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" $(BUILDSYS)/lib-flags $^) $(LIBS)
$(Q)$(call symlink-alias,$@,run/$(SO_RUNDIR),$(*F)$(SONAME_INFIX).so$(SONAME_SUFFIX))
+# On Darwin, gcc expects shared libraries in *.dylib instead of *.so.
+# Surprisingly, when a program is run, it suffices to have *.so files.
+# We don't want to mess up the whole build system with configurable
+# suffices and we also don't want to incur an overhead on Linux, so we
+# just create symbolic links on Darwin, if requested.
+%.dylib: %.so
+ cd $(dir $<) && ln -fs $(notdir $<) $(notdir $@)
$(o)/%.pc: $(s)/%.pc $(o)/%.$(LS)
$(M)PC $<
# Various files whose type does not fit into PROGS
DATAFILES=
-ifdef CONFIG_SHARED
-LS=so
-OS=oo
-else
-LS=a
-OS=o
-endif
-
ifdef CONFIG_DARWIN
+DYNAMIC_LIBRARIES=dylib
SOEXT=bundle
HOST_PREFIX=/sw
else
+DYNAMIC_LIBRARIES=so
SOEXT=so
HOST_PREFIX=
endif
+
+ifdef CONFIG_SHARED
+LS=$(DYNAMIC_LIBRARIES)
+OS=oo
+else
+LS=a
+OS=o
+endif
+
SO_RUNDIR=lib
# Whenever "make -s" (silent) is run, turn on verbose mode (paradoxical, but gives the right result)