diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d458155..29fa8183 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -63,6 +63,7 @@ Developers may need to change their code ### Minor changes +* Support for building static lib: `LINKAGE=static configure` * Change comment character to be active anywhere to beginning of _word_ only. * See [Change CLIgen comments](https://github.com/clicon/cligen/issues/55) * Improved performance of parsing files as described in [Bytewise read() of files is slow #146](https://github.com/clicon/clixon/issues/146), thanks: @hjelmeland diff --git a/apps/backend/Makefile.in b/apps/backend/Makefile.in index fdcfabee..a745c031 100644 --- a/apps/backend/Makefile.in +++ b/apps/backend/Makefile.in @@ -38,6 +38,14 @@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ +LINKAGE = @LINKAGE@ +ifeq ($(LINKAGE),dynamic) + CPPFLAGS = @CPPFLAGS@ -fPIC + SH_SUFFIX = @SH_SUFFIX@ +else + CPPFLAGS = @CPPFLAGS@ + SH_SUFFIX = a +endif INSTALLFLAGS = @INSTALLFLAGS@ LDFLAGS = @LDFLAGS@ @@ -52,19 +60,21 @@ sysconfdir = @sysconfdir@ includedir = @includedir@ HOST_VENDOR = @host_vendor@ -SH_SUFFIX = @SH_SUFFIX@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@ # Use this clixon lib for linking -CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +ifeq ($(LINKAGE),dynamic) + CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +else + CLIXON_LIB = libclixon.a +endif # For dependency. A little strange that we rely on it being built in the src dir # even though it may exist in $(libdir). But the new version may not have been installed yet. LIBDEPS = $(top_srcdir)/lib/src/$(CLIXON_LIB) -LIBS = -L$(top_srcdir)/lib/src @LIBS@ $(top_srcdir)/lib/src/$(CLIXON_LIB) -CPPFLAGS = @CPPFLAGS@ -fPIC +LIBS = -L$(top_srcdir)/lib/src $(top_srcdir)/lib/src/$(CLIXON_LIB) @LIBS@ INCLUDES = -I. -I$(top_srcdir)/lib/src -I$(top_srcdir)/lib -I$(top_srcdir)/include -I$(top_srcdir) @INCLUDES@ # Name of application @@ -85,9 +95,16 @@ LIBOBJ = $(LIBSRC:.c=.o) # Name of lib MYNAME = clixon_backend +MYLIBDYNAMIC = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +MYLIBSO = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR) MYLIBLINK = lib$(MYNAME)$(SH_SUFFIX) -MYLIB = $(MYLIBLINK).$(CLIXON_MAJOR).$(CLIXON_MINOR) -MYLIBSO = $(MYLIBLINK).$(CLIXON_MAJOR) +MYLIBSTATIC = lib$(MYNAME).a + +ifeq ($(LINKAGE),dynamic) + MYLIB = $(MYLIBDYNAMIC) +else + MYLIB = $(MYLIBSTATIC) +endif all: $(MYLIB) $(APPL) test @@ -112,9 +129,11 @@ install: install-lib $(APPL) install-lib: $(MYLIB) install -d -m 0755 $(DESTDIR)$(libdir) install -m 0644 $(INSTALLFLAGS) $(MYLIB) $(DESTDIR)$(libdir) + install -d -m 0755 $(DESTDIR)$(libdir)/clixon/plugins/backend +ifeq ($(LINKAGE),dynamic) ln -sf $(MYLIB) $(DESTDIR)$(libdir)/$(MYLIBSO) # -l:libclixon_config.so.2 ln -sf $(MYLIBSO) $(DESTDIR)$(libdir)/$(MYLIBLINK) # -l:libclixon_config.so - install -d -m 0755 $(DESTDIR)$(libdir)/clixon/plugins/backend +endif uninstall: rm -f $(DESTDIR)$(sbindir)/$(APPL) @@ -138,10 +157,10 @@ test.c : test: test.c $(LIBOBJ) $(MYLIB) $(CC) $(INCLUDES) $(LDFLAGS) $< $(LIBOBJ) -L. $(MYLIB) $(LIBS) -o $@ -$(APPL) : $(APPOBJ) $(MYLIBLINK) $(LIBDEPS) +$(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS) $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ -$(MYLIB): $(LIBOBJ) $(LIBDEPS) +$(MYLIBDYNAMIC): $(LIBOBJ) $(LIBDEPS) ifeq ($(HOST_VENDOR),apple) $(CC) $(LDFLAGS) -shared -undefined dynamic_lookup -o $@ -lc $(LIBOBJ) else @@ -153,6 +172,9 @@ $(MYLIBLINK) : $(MYLIB) # ln -sf $(MYLIB) $(MYLIBSO) # ln -sf $(MYLIB) $@ +$(MYLIBSTATIC) : $(LIBOBJ) $(LIBDEPS) + ar -crs $@ $(LIBOBJ) $(LIBDEPS) + TAGS: find . -name '*.[chyl]' -print | etags - diff --git a/apps/cli/Makefile.in b/apps/cli/Makefile.in index 33587a86..cc2bed8a 100644 --- a/apps/cli/Makefile.in +++ b/apps/cli/Makefile.in @@ -38,6 +38,13 @@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ +LINKAGE = @LINKAGE@ +ifeq ($(LINKAGE),dynamic) + CPPFLAGS = @CPPFLAGS@ -fPIC +else + CPPFLAGS = @CPPFLAGS@ +endif +SH_SUFFIX = @SH_SUFFIX@ INSTALLFLAGS = @INSTALLFLAGS@ LDFLAGS = @LDFLAGS@ @@ -53,20 +60,23 @@ sysconfdir = @sysconfdir@ includedir = @includedir@ HOST_VENDOR = @host_vendor@ -SH_SUFFIX = @SH_SUFFIX@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@ # Use this clixon lib for linking -CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +ifeq ($(LINKAGE),dynamic) + CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +else + CLIXON_LIB = libclixon.a +endif # For dependency. A little strange that we rely on it being built in the src dir # even though it may exist in $(libdir). But the new version may not have been installed yet. LIBDEPS = $(top_srcdir)/lib/src/$(CLIXON_LIB) -LIBS = -L$(top_srcdir)/lib/src @LIBS@ $(top_srcdir)/lib/src/$(CLIXON_LIB) #-lpthread +LIBS = -L$(top_srcdir)/lib/src $(top_srcdir)/lib/src/$(CLIXON_LIB) @LIBS@ #-lpthread + -CPPFLAGS = @CPPFLAGS@ -fPIC INCLUDES = -I. -I$(top_srcdir)/lib -I$(top_srcdir)/include -I$(top_srcdir) @INCLUDES@ # Name of application @@ -87,9 +97,16 @@ LIBOBJ = $(LIBSRC:.c=.o) # Name of lib MYNAME = clixon_cli +MYLIBDYNAMIC = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +MYLIBSO = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR) MYLIBLINK = lib$(MYNAME)$(SH_SUFFIX) -MYLIB = $(MYLIBLINK).$(CLIXON_MAJOR).$(CLIXON_MINOR) -MYLIBSO = $(MYLIBLINK).$(CLIXON_MAJOR) +MYLIBSTATIC = lib$(MYNAME).a + +ifeq ($(LINKAGE),dynamic) + MYLIB = $(MYLIBDYNAMIC) +else + MYLIB = $(MYLIBSTATIC) +endif all: $(MYLIB) $(APPL) test @@ -114,9 +131,11 @@ install: install-lib $(APPL) install-lib: $(MYLIB) install -d -m 0755 $(DESTDIR)$(libdir) install -m 0644 $(INSTALLFLAGS) $(MYLIB) $(DESTDIR)$(libdir) + install -d -m 0755 $(DESTDIR)$(libdir)/clixon/plugins/cli +ifeq ($(LINKAGE),dynamic) ln -sf $(MYLIB) $(DESTDIR)$(libdir)/$(MYLIBSO) # -l:libclixon_cli.so.2 ln -sf $(MYLIBSO) $(DESTDIR)$(libdir)/$(MYLIBLINK) # -l:libclixon_cli.so - install -d -m 0755 $(DESTDIR)$(libdir)/clixon/plugins/cli +endif install-include: clixon_cli.h clixon_cli_api.h cli_generate.h install -d -m 0755 $(DESTDIR)$(includedir)/clixon @@ -140,10 +159,10 @@ test.c : test: test.c $(LIBOBJ) $(MYLIB) $(CC) $(INCLUDES) $(LDFLAGS) $< $(LIBOBJ) -L. $(MYLIB) $(LIBS) -o $@ -$(APPL): $(APPOBJ) $(MYLIBLINK) $(LIBDEPS) +$(APPL): $(APPOBJ) $(MYLIB) $(LIBDEPS) $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ -$(MYLIB) : $(LIBOBJ) $(LIBDEPS) +$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS) ifeq ($(HOST_VENDOR),apple) $(CC) $(LDFLAGS) -shared -undefined dynamic_lookup -o $@ $(LIBOBJ) $(LIBS) else @@ -155,6 +174,9 @@ $(MYLIBLINK) : $(MYLIB) # ln -sf $(MYLIB) $(MYLIBSO) # ln -sf $(MYLIB) $@ +$(MYLIBSTATIC) : $(LIBOBJ) $(LIBDEPS) + ar -crs $@ $(LIBOBJ) $(LIBDEPS) + TAGS: find . -name '*.[chyl]' -print | etags - diff --git a/apps/netconf/Makefile.in b/apps/netconf/Makefile.in index 08926bd8..605ad796 100644 --- a/apps/netconf/Makefile.in +++ b/apps/netconf/Makefile.in @@ -37,6 +37,7 @@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ +LINKAGE = @LINKAGE@ INSTALLFLAGS = @INSTALLFLAGS@ LDFLAGS = @LDFLAGS@ @@ -57,14 +58,22 @@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@ # Use this clixon lib for linking -CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +ifeq ($(LINKAGE),dynamic) + CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +else + CLIXON_LIB = libclixon.a +endif # For dependency LIBDEPS = $(top_srcdir)/lib/src/$(CLIXON_LIB) -LIBS = -L$(top_srcdir)/lib/src @LIBS@ $(top_srcdir)/lib/src/$(CLIXON_LIB) +LIBS = -L$(top_srcdir)/lib/src $(top_srcdir)/lib/src/$(CLIXON_LIB) @LIBS@ -CPPFLAGS = @CPPFLAGS@ -fPIC +ifeq ($(LINKAGE),dynamic) + CPPFLAGS = @CPPFLAGS@ -fPIC +else + CPPFLAGS = @CPPFLAGS@ +endif INCLUDES = -I. -I$(top_srcdir)/lib/src -I$(top_srcdir)/lib -I$(top_srcdir)/include -I$(top_srcdir) @INCLUDES@ # Name of application @@ -84,9 +93,15 @@ LIBOBJ = $(LIBSRC:.c=.o) # Name of lib MYNAME = clixon_netconf +MYLIBDYNAMIC = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +MYLIBSO = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR) MYLIBLINK = lib$(MYNAME)$(SH_SUFFIX) -MYLIB = $(MYLIBLINK).$(CLIXON_MAJOR).$(CLIXON_MINOR) -MYLIBSO = $(MYLIBLINK).$(CLIXON_MAJOR) +MYLIBSTATIC = lib$(MYNAME).a +ifeq ($(LINKAGE),dynamic) + MYLIB = $(MYLIBDYNAMIC) +else + MYLIB = $(MYLIBSTATIC) +endif all: $(MYLIB) $(APPL) @@ -111,8 +126,10 @@ install: install-lib $(APPL) install-lib: $(MYLIB) install -d -m 0755 $(DESTDIR)$(libdir) install -m 0644 $(INSTALLFLAGS) $(MYLIB) $(DESTDIR)$(libdir) +ifeq ($(LINKAGE),dynamic) ln -sf $(MYLIB) $(DESTDIR)$(libdir)/$(MYLIBSO) # -l:libclixon_netconf.so.2 ln -sf $(MYLIBSO) $(DESTDIR)$(libdir)/$(MYLIBLINK) # -l:libclixon_netconf.so +endif install-include: clixon_netconf.h install -d -m 0755 $(DESTDIR)$(includedir)/clixon @@ -129,10 +146,10 @@ uninstall: .c.o: $(CC) $(INCLUDES) $(CPPFLAGS) -D__PROGRAM__=\"$(APPL)\" $(CFLAGS) -c $< -$(APPL) : $(APPOBJ) $(MYLIBLINK) $(LIBDEPS) +$(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS) $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ -$(MYLIB) : $(LIBOBJ) $(LIBDEPS) +$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS) ifeq ($(HOST_VENDOR),apple) $(CC) $(LDFLAGS) -shared -undefined dynamic_lookup -o $@ $(LIBOBJ) $(LIBS) else @@ -144,6 +161,9 @@ $(MYLIBLINK) : $(MYLIB) # ln -sf $(MYLIB) $(MYLIBSO) # ln -sf $(MYLIB) $@ +$(MYLIBSTATIC) : $(LIBOBJ) $(LIBDEPS) + ar -crs $@ $(LIBOBJ) $(LIBDEPS) + TAGS: find . -name '*.[chyl]' -print | etags - diff --git a/apps/restconf/Makefile.in b/apps/restconf/Makefile.in index 5f24e50e..53976700 100644 --- a/apps/restconf/Makefile.in +++ b/apps/restconf/Makefile.in @@ -40,6 +40,7 @@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ +LINKAGE = @LINKAGE@ INSTALLFLAGS = @INSTALLFLAGS@ LDFLAGS = @LDFLAGS@ @@ -66,15 +67,23 @@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@ # Use this clixon lib for linking -CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +ifeq ($(LINKAGE),dynamic) + CLIXON_LIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +else + CLIXON_LIB = libclixon.a +endif # For dependency LIBDEPS = $(top_srcdir)/lib/src/$(CLIXON_LIB) -LIBS = -L$(top_srcdir)/lib/src @LIBS@ $(top_srcdir)/lib/src/$(CLIXON_LIB) +LIBS = -L$(top_srcdir)/lib/src $(top_srcdir)/lib/src/$(CLIXON_LIB) @LIBS@ #LIBS += -lpthread -levent -levent_openssl -lssl -lcrypto -CPPFLAGS = @CPPFLAGS@ -fPIC +ifeq ($(LINKAGE),dynamic) + CPPFLAGS = @CPPFLAGS@ -fPIC +else + CPPFLAGS = @CPPFLAGS@ +endif INCLUDES = -I. -I$(top_srcdir)/lib/src -I$(top_srcdir)/lib -I$(top_srcdir)/include -I$(top_srcdir) @INCLUDES@ @@ -111,10 +120,17 @@ LIBOBJ = $(LIBSRC:.c=.o) # This lib is very small but used for clixon restconf applications to access clixon restconf lib # functions. Mostly for future use -MYNAME = clixon_restconf -MYLIBLINK = lib$(MYNAME)$(SH_SUFFIX) -MYLIB = $(MYLIBLINK).$(CLIXON_MAJOR).$(CLIXON_MINOR) -MYLIBSO = $(MYLIBLINK).$(CLIXON_MAJOR) +MYNAME = clixon_restconf +MYLIBDYNAMIC = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +MYLIBSO = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR) +MYLIBLINK = lib$(MYNAME)$(SH_SUFFIX) +MYLIBSTATIC = lib$(MYNAME).a + +ifeq ($(LINKAGE),dynamic) + MYLIB = $(MYLIBDYNAMIC) +else + MYLIB = $(MYLIBSTATIC) +endif all: $(MYLIB) $(APPL) @@ -144,8 +160,10 @@ endif install-lib: $(MYLIB) install -d -m 0755 $(DESTDIR)$(libdir) install -m 0644 $(INSTALLFLAGS) $(MYLIB) $(DESTDIR)$(libdir) +ifeq ($(LINKAGE),dynamic) ln -sf $(MYLIB) $(DESTDIR)$(libdir)/$(MYLIBSO) # -l:libclixon_restconf.so.2 ln -sf $(MYLIBSO) $(DESTDIR)$(libdir)/$(MYLIBLINK) # -l:libclixon_restconf.so +endif install-include: clixon_restconf.h install -d -m 0755 $(DESTDIR)$(includedir)/clixon @@ -164,7 +182,7 @@ uninstall: $(APPL) : $(APPOBJ) $(MYLIBLINK) $(LIBDEPS) $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ -$(MYLIB) : $(LIBOBJ) $(LIBDEPS) +$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS) ifeq ($(HOST_VENDOR),apple) $(CC) $(LDFLAGS) -shared -undefined dynamic_lookup -o $@ $(LIBOBJ) $(LIBS) else @@ -174,6 +192,9 @@ endif # link-name is needed for application linking, eg for clixon_cli and clixon_config $(MYLIBLINK) : $(MYLIB) +$(MYLIBSTATIC) : $(LIBOBJ) $(LIBDEPS) + ar -crs $@ $(LIBOBJ) $(LIBDEPS) + TAGS: find . -name '*.[chyl]' -print | etags - diff --git a/configure b/configure index d9dd594a..5a64c060 100755 --- a/configure +++ b/configure @@ -639,6 +639,7 @@ wwwuser enable_optyangs with_libxml2 with_restconf +LINKAGE SH_SUFFIX CLIXON_DEFAULT_CONFIG INSTALLFLAGS @@ -2224,6 +2225,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Default CFLAGS and INSTALLFLAGS unless set by environment : ${CFLAGS="-O2 -Wall"} : ${INSTALLFLAGS="-s"} +: ${LINKAGE=dynamic} # where autotool scripts are: install-sh, config.sub, config.guess ac_aux_dir= @@ -3349,6 +3351,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + # Set to evhtp or fcgi -> compile apps/restconf diff --git a/configure.ac b/configure.ac index d5022394..9f320fbc 100644 --- a/configure.ac +++ b/configure.ac @@ -43,6 +43,7 @@ AC_INIT(lib/clixon/clixon.h.in) # Default CFLAGS and INSTALLFLAGS unless set by environment : ${CFLAGS="-O2 -Wall"} : ${INSTALLFLAGS="-s"} +: ${LINKAGE=dynamic} # where autotool scripts are: install-sh, config.sub, config.guess AC_CONFIG_AUX_DIR(aux) @@ -93,6 +94,7 @@ AC_SUBST(INSTALLFLAGS) AC_SUBST(CLIXON_DEFAULT_CONFIG) AC_SUBST(LIBS) AC_SUBST(SH_SUFFIX) +AC_SUBST(LINKAGE) AC_SUBST(with_restconf) # Set to evhtp or fcgi -> compile apps/restconf AC_SUBST(with_libxml2) AC_SUBST(enable_optyangs) diff --git a/lib/src/Makefile.in b/lib/src/Makefile.in index 0a6ddd45..ee11274d 100644 --- a/lib/src/Makefile.in +++ b/lib/src/Makefile.in @@ -46,15 +46,19 @@ localstatedir = @localstatedir@ sysconfdir = @sysconfdir@ HOST_VENDOR = @host_vendor@ -SH_SUFFIX = @SH_SUFFIX@ - CLIXON_VERSION = @CLIXON_VERSION@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@ VPATH = @srcdir@ CC = @CC@ -CFLAGS = -fPIC @CFLAGS@ +LINKAGE = @LINKAGE@ +ifeq ($(LINKAGE),dynamic) + CFLAGS = -fPIC @CFLAGS@ +else + CFLAGS = @CFLAGS@ +endif +SH_SUFFIX = @SH_SUFFIX@ INSTALL = @INSTALL@ INSTALL_LIB = @INSTALL@ INSTALLFLAGS = @INSTALLFLAGS@ @@ -97,9 +101,17 @@ GENOBJS = $(GENSRC:.c=.o) # Linker-name: libclixon.so # so-name: libclixon.so.2 # real-name: libclixon.so.2.0 -MYLIB = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) -MYLIBSO = libclixon$(SH_SUFFIX).$(CLIXON_MAJOR) -MYLIBLINK = libclixon$(SH_SUFFIX) +MYNAME = clixon +MYLIBDYNAMIC = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR).$(CLIXON_MINOR) +MYLIBSO = lib$(MYNAME)$(SH_SUFFIX).$(CLIXON_MAJOR) +MYLIBLINK = lib$(MYNAME)$(SH_SUFFIX) +MYLIBSTATIC = lib$(MYNAME).a + +ifeq ($(LINKAGE),dynamic) + MYLIB = $(MYLIBDYNAMIC) +else + MYLIB = $(MYLIBSTATIC) +endif all: $(MYLIB) $(MYLIBLINK) @@ -225,19 +237,18 @@ build.c: date +"const char CLIXON_BUILDSTR[$(DATELEN)]=\"%Y.%m.%d %H:%M by `whoami` on `hostname`"\"\; > build.c; echo "const char CLIXON_VERSION[64]=\"$(CLIXON_VERSION)\""\; >> build.c; -$(MYLIB) : $(GENOBJS) $(OBJS) +$(MYLIBDYNAMIC) : $(GENOBJS) $(OBJS) ifeq ($(HOST_VENDOR),apple) $(CC) $(LDFLAGS) -shared -o $@ $(GENOBJS) $(OBJS) $(LIBS) -undefined dynamic_lookup -o $@ else $(CC) $(LDFLAGS) -shared -Wl,-soname,$(MYLIBSO) -o $@ $(GENOBJS) $(OBJS) $(LIBS) -Wl,-soname=$(MYLIBSO) endif -# link-name is needed for application linking, eg for clixon_cli and clixon_config +# link-name is needed for application linking, eg for clixon_backend/clixon_cli $(MYLIBLINK) : $(MYLIB) -# ln -sf $(MYLIB) $@ -# ar cru $@ $^ -# ranlib $@ +$(MYLIBSTATIC) : $(GENOBJS) $(OBJS) + ar -crs $@ $(GENOBJS) $(OBJS) install: install-lib @@ -246,8 +257,10 @@ install-include: install-lib: $(MYLIB) $(INSTALL) -m 0755 -d $(DESTDIR)$(libdir) $(INSTALL_LIB) -m 0644 $(INSTALLFLAGS) $(MYLIB) $(DESTDIR)$(libdir) +ifeq ($(LINKAGE),dynamic) ln -sf $(MYLIB) $(DESTDIR)$(libdir)/$(MYLIBSO) # -l:libclixon.so.3 ln -sf $(MYLIBSO) $(DESTDIR)$(libdir)/$(MYLIBLINK) # -l:libclixon.so +endif uninstall: rm -f $(DESTDIR)$(libdir)/$(MYLIBLINK)*