-# common flags
-CFLAGS += -Wno-sign-compare -g -Wunused -Wundef -W
-CFLAGS += -Wredundant-decls
-CFLAGS += -Os
-CFLAGS += -Wall
-CFLAGS += -Wuninitialized
-CFLAGS += -Wchar-subscripts
-CFLAGS += -Wformat-security
-CFLAGS += -Werror-implicit-function-declaration
-CFLAGS += -Wmissing-format-attribute
-CFLAGS += -Wunused-macros
-CFLAGS += -Wbad-function-cast
-
-# cflags used only for building library objects
-LIBCFLAGS += -fPIC
-LIBCFLAGS += -fvisibility=hidden
-
-uname_s := $(shell uname -s 2>/dev/null || echo "UNKNOWN_OS")
-
+OSL_CPPFLAGS += -DOSL_VERSION='"$(VERSION)"'
+
+OSL_CFLAGS += -g -Wunused -Wundef -W
+OSL_CFLAGS += -Wredundant-decls
+OSL_CFLAGS += -Os
+OSL_CFLAGS += -Wall
+OSL_CFLAGS += -Wuninitialized
+OSL_CFLAGS += -Wchar-subscripts
+OSL_CFLAGS += -Wformat-security
+OSL_CFLAGS += -Werror-implicit-function-declaration
+OSL_CFLAGS += -Wmissing-format-attribute
+OSL_CFLAGS += -Wunused-macros
+OSL_CFLAGS += -Wbad-function-cast
+OSL_CFLAGS += -fPIC
+OSL_CFLAGS += -fvisibility=hidden
+
+OSL_LDFLAGS += -Wl,-soname,$(soname)
+OSL_LDFLAGS += -Wl,-z,defs
+OSL_LDFLAGS += --shared
+
+# On ELf-based systems, the following conventions apply (see dhweeler's
+# Program Library HOWTO):
+#
+# The soname has the prefix ``lib'', the name of the library, the
+# phrase ``.so'', followed by a period and a version number that is
+# incremented whenever the interface changes.