Fix and simplify C examples makefiles

Make "make check-c-examples" perform the correct build commands, e.g. not link
the proxy code into the shared library as this can't work because it defines
the same functions that are already present in it.

Also fix the c_xxx targets to work when SWIG is built in a separate build
directory.

Finally, simplify them by removing the unnecessary variables.

Notice that std_vector example still doesn't build, but at least now it is due
to a real problem in the C module and not makefile bugs.
This commit is contained in:
Vadim Zeitlin 2016-04-09 00:56:44 +02:00
commit 19ed0b531d
5 changed files with 71 additions and 65 deletions

View file

@ -82,10 +82,9 @@ RUNPIPE=
RUNME = runme RUNME = runme
IWRAP = $(INTERFACE:.i=_wrap.i) IWRAP = $(INTERFACE:.i=_wrap.i)
IPROXYSRCS = $(INTERFACE:.i=_proxy.c)
ISRCS = $(IWRAP:.i=.c) ISRCS = $(IWRAP:.i=.c)
ICXXSRCS = $(IWRAP:.i=.cxx) ICXXSRCS = $(IWRAP:.i=.cxx)
IOBJS = $(IWRAP:.i=.o) $(IPROXYSRCS:.c=.o) IOBJS = $(IWRAP:.i=.@OBJEXT@)
################################################################## ##################################################################
# Some options for silent output # Some options for silent output
@ -1735,20 +1734,40 @@ C_LDSHARED = @C_LDSHARED@
CXX_LDSHARED = @CXX_LDSHARED@ CXX_LDSHARED = @CXX_LDSHARED@
C_SO = @C_SO@ C_SO = @C_SO@
c: $(SRCS) PROXYSRC := $(INTERFACE:.i=_proxy.c)
$(SWIG) -c $(SWIGOPT) $(INTERFACEPATH) PROXYOBJ := $(PROXYSRC:.c=.@OBJEXT@)
$(CC) -c $(CCSHARED) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES)
$(CC) -c $(CCSHARED) $(CFLAGS) $(IPROXYSRCS) $(INCLUDES) c: $(SRCDIR_SRCS)
$(SWIG) -c $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH)
$(CC) -c $(CCSHARED) -I$(SRCDIR) $(CFLAGS) $(ISRCS) $(SRCDIR_SRCS) $(INCLUDES)
$(CC) -c $(CCSHARED) $(CFLAGS) $(PROXYSRC) $(INCLUDES)
$(C_LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(CLIBPREFIX)$(TARGET)$(C_SO) $(C_LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(CLIBPREFIX)$(TARGET)$(C_SO)
c_cpp: $(SRCS) c_cpp: $(SRCDIR_SRCS)
$(SWIG) -c++ -c $(SWIGOPT) $(INTERFACEPATH) $(SWIG) -c++ -c $(SWIGOPT) -o $(ISRCS) $(INTERFACEPATH)
$(CXX) -c $(CCSHARED) $(CXXFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) $(CXX) -c $(CCSHARED) -I$(SRCDIR) $(CXXFLAGS) $(ISRCS) $(SRCDIR_CXXSRCS) $(INCLUDES)
$(CC) -c $(CCSHARED) $(CFLAGS) $(IPROXYSRCS) $(INCLUDES) $(CC) -c $(CCSHARED) $(CFLAGS) $(PROXYSRC) $(INCLUDES)
$(CXX_LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(CLIBPREFIX)$(TARGET)$(C_SO) $(CXX_LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(CLIBPREFIX)$(TARGET)$(C_SO)
c_compile: $(RUNME) $(PROXY) c_compile: $(SRCDIR)$(RUNME).c $(PROXYOBJ)
$(CC) $(RUNME) $(PROXY) -L. -l$(TARGET) -o $(RUNME:.c=) $(COMPILETOOL) $(CC) -o $(RUNME) -I. $^ -L. -l$(TARGET)
# -----------------------------------------------------------------
# Run C example
# -----------------------------------------------------------------
c_run: c_compile
$(RUNTOOL) ./$(RUNME) $(RUNPIPE)
# -----------------------------------------------------------------
# Cleaning the C examples
# -----------------------------------------------------------------
c_clean:
rm -f *_wrap.c *_proxy.[ch]
rm -f core @EXTRA_CLEAN@
rm -f *.@OBJEXT@ *@SO@
rm -f $(RUNME)
################################################################## ##################################################################
##### SCILAB ###### ##### SCILAB ######

View file

@ -1,21 +1,18 @@
TOP = ../.. TOP = ../..
SWIG = $(TOP)/../preinst-swig SWIGEXE = $(TOP)/../swig
SWIG_LIB_DIR = $(TOP)/../$(TOP_BUILDDIR_TO_TOP_SRCDIR)Lib
CXXSRCS = example.cxx CXXSRCS = example.cxx
TARGET = example TARGET = example
INTERFACE = example.i INTERFACE = example.i
RUNME = runme.c
PROXY = example_proxy.c
all:: check: build
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_cpp TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_run
$(MAKE) -f $(TOP)/Makefile RUNME='$(RUNME)' PROXY='$(PROXY)' \
TARGET='$(TARGET)' c_compile
run: build:
env LD_LIBRARY_PATH=. ./runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' CXXSRCS='$(CXXSRCS)' \
SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \
SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_cpp
clean: clean:
rm -f *.o *.out *.so *.a *.dll *.dylib *.exe *_wrap* *_proxy* *~ runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' c_clean
check: all

View file

@ -1,21 +1,18 @@
TOP = ../.. TOP = ../..
SWIG = $(TOP)/../preinst-swig SWIGEXE = $(TOP)/../swig
SWIG_LIB_DIR = $(TOP)/../$(TOP_BUILDDIR_TO_TOP_SRCDIR)Lib
CXXSRCS = example.cxx CXXSRCS = example.cxx
TARGET = example TARGET = example
INTERFACE = example.i INTERFACE = example.i
RUNME = runme.c
PROXY = example_proxy.c
all:: check: build
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_cpp TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_run
$(MAKE) -f $(TOP)/Makefile RUNME='$(RUNME)' PROXY='$(PROXY)' \
TARGET='$(TARGET)' c_compile
run: build:
env LD_LIBRARY_PATH=. ./runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' CXXSRCS='$(CXXSRCS)' \
SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \
SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_cpp
clean: clean:
rm -f *.o *.out *.so *.a *.dll *.dylib *.exe *_wrap* *_proxy* *~ runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' c_clean
check: all

View file

@ -1,21 +1,18 @@
TOP = ../.. TOP = ../..
SWIG = $(TOP)/../preinst-swig SWIGEXE = $(TOP)/../swig
SWIG_LIB_DIR = $(TOP)/../$(TOP_BUILDDIR_TO_TOP_SRCDIR)Lib
SRCS = example.c SRCS = example.c
TARGET = example TARGET = example
INTERFACE = example.i INTERFACE = example.i
RUNME = runme.c
PROXY = example_proxy.c
all:: check: build
$(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_run
$(MAKE) -f $(TOP)/Makefile RUNME='$(RUNME)' PROXY='$(PROXY)' \
TARGET='$(TARGET)' c_compile
run: build:
env LD_LIBRARY_PATH=. ./runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SRCS='$(SRCS)' \
SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \
SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c
clean: clean:
rm -f *.o *.so *.out *.a *.exe *.dll *.dylib *_wrap* *_proxy* *~ runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' c_clean
check: all

View file

@ -1,22 +1,18 @@
TOP = ../.. TOP = ../..
SWIG = $(TOP)/../preinst-swig SWIGEXE = $(TOP)/../swig
SWIG_LIB_DIR = $(TOP)/../$(TOP_BUILDDIR_TO_TOP_SRCDIR)Lib
CXXSRCS = example.cxx CXXSRCS = example.cxx
TARGET = example TARGET = example
INTERFACE = example.i INTERFACE = example.i
RUNME = runme.c
PROXY = example_proxy.c
INCLUDES =
all:: check: build
$(MAKE) -f $(TOP)/Makefile CXXSRCS='$(CXXSRCS)' SWIG='$(SWIG)' \ $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' \
TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' INCLUDES='$(INCLUDES)' c_cpp TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_run
$(MAKE) -f $(TOP)/Makefile RUNME='$(RUNME)' PROXY='$(PROXY)' \
TARGET='$(TARGET)' c_compile
run: build:
env LD_LIBRARY_PATH=. ./runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' CXXSRCS='$(CXXSRCS)' \
SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \
SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' c_cpp
clean: clean:
rm -f *.o *.out *.so *.a *.dll *.dylib *.exe *_wrap* *_proxy* *~ runme $(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' c_clean
check: all