uname_s := $(shell uname -s 2>/dev/null || echo "UNKNOWN_OS")
uname_rs := $(shell uname -rs)
-objects := osl.o fd.o rbtree.o string.o sha1.o
+objects := osl.o fd.o rbtree.o sha1.o
major_version := 0
minor_version := 1
patchlevel_version := 0
ifeq ($(uname_s),Linux)
dso_opts := --shared -Wl,-soname,libosl.so.$(major_version)
dso_filename :=lib$(libname).so.$(major_version).$(minor_version).$(patchlevel_version)
+ # disallow undefined symbols
+ LDFLAGS += -Wl,-z,defs
endif
ifeq ($(uname_s),Darwin)
- mac_major_version := $(shell expr 41 + $(major_version))
dso_opts := -dynamiclib -current_version $(major_version).$(minor_version) \
-compatibility_version $(major_version).$(minor_version) -fvisibility=hidden
- dso_filename := lib$(libname).$(shell printf "\\x"$(mac_major_version).dylib)
+ dso_filename := lib$(libname).$(major_version)
endif
ifeq ($(uname_s),SunOS)
dso_opts := --shared -z text -z defs
DEBUG_CPPFLAGS += -Wno-sign-compare -g -Wunused -Wundef -W
DEBUG_CPPFLAGS += -Wredundant-decls
-#CPPFLAGS += -Os
+CPPFLAGS += -Os
CPPFLAGS += -Wall
-#CPPFLAGS += -Wuninitialized
+CPPFLAGS += -Wuninitialized
CPPFLAGS += -Wchar-subscripts
CPPFLAGS += -Wformat-security
CPPFLAGS += -Werror-implicit-function-declaration
CPPFLAGS += -Wunused-macros
CPPFLAGS += -Wbad-function-cast
CPPFLAGS += -fPIC
+CPPFLAGS += -fvisibility=hidden
Makefile.deps: $(wildcard *.c *.h)
gcc -MM -MG *.c > $@
%.o: %.c Makefile
$(CC) -c $(CPPFLAGS) $(DEBUG_CPPFLAGS) $<
$(dso_filename): $(objects)
- $(CC) $(dso_opts) -o $@ $(objects) -lcrypto
+ $(CC) $(dso_opts) -o $@ $(objects) $(LDFLAGS) -lcrypto
+osl_errors.h: errlist
+ sed -e 's/\([A-Z_]*\) .*/ E_OSL_\1/' \
+ -e '1s/^/enum osl_errors {\n/1' \
+ -e '$$!s/$$/,/g' \
+ -e '$$s/$$/\n};/1' $< > $@
+
+errtab.h: errlist
+ sed -e 's/^\([A-Z_]*\)\s*\(.*\)/_S(E_OSL_\1, \2)/g' $< > $@
+osl.h: osl.h.in osl_errors.h
+ cat $^ > $@
clean:
- rm -f *.o $(dso_filename)
+ rm -f *.o $(dso_filename) osl.h osl_errors.h errtab.h