Fix some LINKAGE=static compile issues:

- Makefile circularity by fixing .so suffix
- simplify example/main Makefile
This commit is contained in:
Olof hagsand 2021-09-26 11:06:41 +02:00
parent c00162aec1
commit 5a875e3152
11 changed files with 34 additions and 30 deletions

View file

@ -108,6 +108,8 @@ Developers may need to change their code
### Minor features ### Minor features
* Added -H option to clixon_netconf: Do not require hello before request
* CLIXON_STATIC_PLUGIN to support statically linked plugins
* JSON errors are now labelled with JSON and not XML * JSON errors are now labelled with JSON and not XML
* Restconf native HTTP/2: * Restconf native HTTP/2:
* Added option `CLICON_RESTCONF_HTTP2_PLAIN` for non-TLS http * Added option `CLICON_RESTCONF_HTTP2_PLAIN` for non-TLS http

View file

@ -35,10 +35,6 @@
VPATH = @srcdir@ VPATH = @srcdir@
srcdir = @srcdir@ srcdir = @srcdir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
CC = @CC@
CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
with_restconf = @with_restconf@ with_restconf = @with_restconf@
SHELL = /bin/sh SHELL = /bin/sh

View file

@ -164,10 +164,12 @@ test.c :
test: test.c $(LIBOBJ) $(MYLIB) test: test.c $(LIBOBJ) $(MYLIB)
$(CC) $(INCLUDES) $(LDFLAGS) $< $(LIBOBJ) -L. $(MYLIB) $(LIBS) -o $@ $(CC) $(INCLUDES) $(LDFLAGS) $< $(LIBOBJ) -L. $(MYLIB) $(LIBS) -o $@
$(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS) # Note LIBDEPS is in lib/src and will always be remade du to a date dependency
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
$(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS)
$(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@
else else
$(APPL) : $(APPOBJ) $(LIBOBJ) $(LIBDEPS)
$(CC) $(LDFLAGS) $(APPOBJ) -L. $(LIBOBJ) $(LIBS) -o $@ $(CC) $(LDFLAGS) $(APPOBJ) -L. $(LIBOBJ) $(LIBS) -o $@
endif endif

View file

@ -533,7 +533,9 @@ get_list_pagination(clicon_handle h,
/* sort */ /* sort */
if (ret && (x = xml_find_type(xe, NULL, "sort", CX_ELMNT)) != NULL) if (ret && (x = xml_find_type(xe, NULL, "sort", CX_ELMNT)) != NULL)
sort = xml_body(x); sort = xml_body(x);
if (sort) ; /* XXX */ if (sort) {
/* XXX: nothing yet */
}
/* where */ /* where */
if (ret && (x = xml_find_type(xe, NULL, "where", CX_ELMNT)) != NULL) if (ret && (x = xml_find_type(xe, NULL, "where", CX_ELMNT)) != NULL)
where = xml_body(x); where = xml_body(x);

View file

@ -43,11 +43,11 @@ CPPFLAGS = @CPPFLAGS@
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
CPPFLAGS += -fPIC CPPFLAGS += -fPIC
endif endif
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = .so
INSTALLFLAGS = @INSTALLFLAGS@ INSTALLFLAGS = @INSTALLFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
ifneq ($(LINKAGE),dynamic) ifneq ($(LINKAGE),dynamic)
LDFLAGS += -rdynamic -L. LDFLAGS += -rdynamic -L. # -rdynamic for using -ldl
endif endif
prefix = @prefix@ prefix = @prefix@
@ -165,11 +165,13 @@ test.c :
test: test.c $(LIBOBJ) $(MYLIB) test: test.c $(LIBOBJ) $(MYLIB)
$(CC) $(INCLUDES) $(LDFLAGS) $< $(LIBOBJ) -L. $(MYLIB) $(LIBS) -o $@ $(CC) $(INCLUDES) $(LDFLAGS) $< $(LIBOBJ) -L. $(MYLIB) $(LIBS) -o $@
# Note LIBDEPS is in lib/src and will always be remade du to a date dependency
$(APPL): $(APPOBJ) $(MYLIB) $(LIBDEPS) $(APPL): $(APPOBJ) $(MYLIB) $(LIBDEPS)
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
$(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@
else else
$(CC) $(LDFLAGS) $(APPOBJ) $(EXTRAS) -L. $(LIBOBJ) $(LIBS) -o $@ # Force static libcligen.a linking
$(CC) $(LDFLAGS) $(APPOBJ) $(EXTRAS) -L. $(LIBOBJ) $(DESTDIR)$(libdir)/libcligen.a $(LIBS) -o $@
endif endif
$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS) $(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS)

View file

@ -53,7 +53,7 @@ sysconfdir = @sysconfdir@
includedir = @includedir@ includedir = @includedir@
HOST_VENDOR = @host_vendor@ HOST_VENDOR = @host_vendor@
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = .so
CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@
CLIXON_MINOR = @CLIXON_VERSION_MINOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@
@ -147,6 +147,7 @@ uninstall:
.c.o: .c.o:
$(CC) $(INCLUDES) $(CPPFLAGS) -D__PROGRAM__=\"$(APPL)\" $(CFLAGS) -c $< $(CC) $(INCLUDES) $(CPPFLAGS) -D__PROGRAM__=\"$(APPL)\" $(CFLAGS) -c $<
# Note LIBDEPS is in lib/src and will always be remade du to a date dependency
$(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS) $(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS)
$(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@

View file

@ -62,7 +62,7 @@ wwwdir = @wwwdir@
# one of fcgi or native: # one of fcgi or native:
with_restconf = @with_restconf@ with_restconf = @with_restconf@
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = .so
CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@ CLIXON_MAJOR = @CLIXON_VERSION_MAJOR@
CLIXON_MINOR = @CLIXON_VERSION_MINOR@ CLIXON_MINOR = @CLIXON_VERSION_MINOR@
@ -185,13 +185,15 @@ uninstall:
.c.o: .c.o:
$(CC) $(INCLUDES) -D__PROGRAM__=\"clixon_restconf\" $(CPPFLAGS) $(CFLAGS) -c $< $(CC) $(INCLUDES) -D__PROGRAM__=\"clixon_restconf\" $(CPPFLAGS) $(CFLAGS) -c $<
$(APPL) : $(APPOBJ) $(MYLIBLINK) $(LIBDEPS) # Note LIBDEPS is in lib/src and will always be remade du to a date dependency
$(APPL) : $(APPOBJ) $(MYLIB) $(LIBDEPS)
$(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@ $(CC) $(LDFLAGS) $(APPOBJ) -L. $(MYLIB) $(LIBS) -o $@
$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS)
ifeq ($(HOST_VENDOR),apple) ifeq ($(HOST_VENDOR),apple)
$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS)
$(CC) $(LDFLAGS) -shared -undefined dynamic_lookup -o $@ $(LIBOBJ) $(LIBS) $(CC) $(LDFLAGS) -shared -undefined dynamic_lookup -o $@ $(LIBOBJ) $(LIBS)
else else
$(MYLIBDYNAMIC) : $(LIBOBJ) $(LIBDEPS)
$(CC) $(LDFLAGS) -shared -Wl,-soname,$(MYLIBSO) -o $@ $(LIBOBJ) $(LIBS) -Wl,-soname=$(MYLIBSO) $(CC) $(LDFLAGS) -shared -Wl,-soname,$(MYLIBSO) -o $@ $(LIBOBJ) $(LIBS) -Wl,-soname=$(MYLIBSO)
endif endif

View file

@ -346,7 +346,7 @@ api_data_collection(clicon_handle h,
cxobj *xtop = NULL; cxobj *xtop = NULL;
cxobj *xbot = NULL; cxobj *xbot = NULL;
cxobj *xp; cxobj *xp;
cxobj *xpr; cxobj *xpr = NULL;
yang_stmt *y = NULL; yang_stmt *y = NULL;
cbuf *cbrpc = NULL; cbuf *cbrpc = NULL;
int32_t depth = -1; /* Nr of levels to print, -1 is all, 0 is none */ int32_t depth = -1; /* Nr of levels to print, -1 is all, 0 is none */

View file

@ -104,7 +104,7 @@ ifeq ($(LINKAGE),dynamic)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
else else
# can include -L in LDFLAGS? # can include -L in LDFLAGS?
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -L ../../apps/backend/ -lclixon_backend $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
endif endif
# Secondary NACM backend plugin # Secondary NACM backend plugin
@ -114,7 +114,7 @@ $(BE2_PLUGIN): $(BE2_OBJ)
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
else else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -L ../../apps/backend/ -lclixon_backend $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $< -lclixon -lclixon_backend
endif endif
# CLI frontend plugin # CLI frontend plugin
@ -127,12 +127,6 @@ else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/cli/ -lclixon_cli $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/cli/ -lclixon_cli
endif endif
ifeq ($(LINKAGE),dynamic)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_cli
else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/cli/ -lclixon_cli
endif
# NETCONF frontend plugin # NETCONF frontend plugin
NETCONF_SRC = $(APPNAME)_netconf.c NETCONF_SRC = $(APPNAME)_netconf.c
NETCONF_OBJ = $(NETCONF_SRC:%.c=%.o) NETCONF_OBJ = $(NETCONF_SRC:%.c=%.o)
@ -140,7 +134,7 @@ $(NETCONF_PLUGIN): $(NETCONF_OBJ)
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_netconf $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_netconf
else else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/netconf/ -lclixon_netconf $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_netconf
endif endif
# See configure.ac # See configure.ac
@ -151,7 +145,7 @@ $(RESTCONF_PLUGIN): $(RESTCONF_OBJ)
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_restconf $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_restconf
else else
$(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -L ../../apps/restconf/ -lclixon_restconf $(CC) -Wall -shared $(LDFLAGS) -o $@ -lc $^ -lclixon -lclixon_restconf
endif endif
SRC = $(BE_SRC) $(BE2_SRC) $(CLI_SRC) $(NETCONF_SRC) SRC = $(BE_SRC) $(BE2_SRC) $(CLI_SRC) $(NETCONF_SRC)

View file

@ -32,16 +32,18 @@ Below is an example of how to do this for the main example. You can replace the
``` ```
CC=/usr/bin/afl-clang-fast CFLAGS="-O2 -Wall -DCLIXON_STATIC_PLUGINS" LINKAGE=static ./configure CC=/usr/bin/afl-clang-fast CFLAGS="-O2 -Wall -DCLIXON_STATIC_PLUGINS" LINKAGE=static ./configure
make clean make clean
cd example/main # Compile and install application plugins (here main example)
make
sudo make install
cd example # Compile and install application plugins (here main example)
make clean make clean
make make
sudo make install sudo make install
cd ../..
cd lib # Compile and install clixon lib
make
sudo make install
cd .. cd ..
cd apps/cli # Compile and install clixon_cli with pre-compiled plugins cd apps/cli # Compile and install clixon_cli with pre-compiled plugins
rm clixon_cli
EXTRAS="../../example/main/example_cli.o ../../example/main/test_cli.o" make clixon_cli EXTRAS="../../example/main/example_cli.o ../../example/main/test_cli.o" make clixon_cli
sudo make install sudo make install
``` ```

View file

@ -57,7 +57,7 @@ CFLAGS = @CFLAGS@
ifeq ($(LINKAGE),dynamic) ifeq ($(LINKAGE),dynamic)
CFLAGS += -fPIC CFLAGS += -fPIC
endif endif
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = .so
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ INSTALL_LIB = @INSTALL@
INSTALLFLAGS = @INSTALLFLAGS@ INSTALLFLAGS = @INSTALLFLAGS@
@ -239,6 +239,7 @@ build.c:
date +"const char CLIXON_BUILDSTR[$(DATELEN)]=\"%Y.%m.%d %H:%M by `whoami` on `hostname`"\"\; >> 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; echo "const char CLIXON_VERSION[64]=\"$(CLIXON_VERSION)\""\; >> build.c;
# Note: will always be remade since GENOBS is date dependent
$(MYLIBDYNAMIC) : $(GENOBJS) $(OBJS) $(MYLIBDYNAMIC) : $(GENOBJS) $(OBJS)
ifeq ($(HOST_VENDOR),apple) ifeq ($(HOST_VENDOR),apple)
$(CC) $(LDFLAGS) -shared -o $@ $(GENOBJS) $(OBJS) $(LIBS) -undefined dynamic_lookup -o $@ $(CC) $(LDFLAGS) -shared -o $@ $(GENOBJS) $(OBJS) $(LIBS) -undefined dynamic_lookup -o $@