]> sigrok.org Git - libsigrokdecode.git/commitdiff
irmp: hook up IRMP to the build, create a separate shared object
authorGerhard Sittig <redacted>
Sat, 22 Feb 2020 08:52:39 +0000 (09:52 +0100)
committerGerhard Sittig <redacted>
Sat, 18 Jul 2020 13:32:52 +0000 (15:32 +0200)
Add the irmp/ subdirectory to the automake build instructions. Make the
feature optional, provide an enable/disable switch (on by default).

It's an essential implementation detail that the irmp.c file is required
to build, but is not a compile unit of its own. It's yet to be seen how
to most appropriately declare the dependencies of libirmp_la (can get
refined in future commits).

Create a separate shared object from the IRMP source, which shall result
in a stable filename for the DLL/.so lookup. Decoder library code would
not know the application's executable name, neither is anonymous symbol
lookup "in the current process" portable across supported platforms.

The configure.ac macros were modelled after the autobook DLL section.
https://www.sourceware.org/autobook/autobook/autobook_137.html
Symbol export is simple because the library gets implemented and built
here, but is not used from C language code in this project. That's why
we don't do the full dance of symbol import which would be needed on
Windows.

Makefile.am
configure.ac

index 97e5228517357d15a959015d11cb27ff9f98c1b0..9e15c300395c861c95e246be25672f6771135ef8 100644 (file)
@@ -54,6 +54,19 @@ pkginclude_HEADERS = libsigrokdecode.h
 nodist_pkginclude_HEADERS = version.h
 noinst_HEADERS = libsigrokdecode-internal.h
 
+if WITH_IRMP
+lib_LTLIBRARIES += libirmp.la
+libirmp_la_SOURCES = \
+       irmp/irmp-main-sharedlib.c \
+       irmp/irmp-main-sharedlib.h \
+       irmp/irmp.h \
+       irmp/irmpconfig.h \
+       irmp/irmpsystem.h \
+       irmp/irmpprotocols.h
+noinst_HEADERS += irmp/irmp.c
+libirmp_la_LDFLAGS = -no-undefined -version-info 0:0:0
+endif
+
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libsigrokdecode.pc
 
index 3a8b163da3f2a57e99216c856bd2690e28332e9f..f9958b329a14f2e7eecb6cc50813a776e6f559fb 100644 (file)
@@ -45,6 +45,11 @@ AC_C_CONST
 # Required for per-target flags or subdir-objects with C sources.
 AM_PROG_CC_C_O
 
+# Support building Windows DLLs.
+AC_LIBTOOL_WIN32_DLL
+AM_PROG_CC_STDC
+AM_PROG_LIBTOOL
+
 # Set the standard the C library headers should conform to.
 AH_VERBATIM([_POSIX_C_SOURCE], [/* The targeted POSIX standard. */
 #ifndef _POSIX_C_SOURCE
@@ -134,6 +139,17 @@ AC_SYS_LARGEFILE
 
 AC_C_BIGENDIAN
 
+#########################
+##  Optional features. ##
+#########################
+
+# Enable IRMP support by default. Accept user overrides.
+AC_ARG_ENABLE([irmp],
+       [AS_HELP_STRING([--enable-irmp], [enable IRMP shared object [default=yes]])],
+       [], [enable_irmp_so=yes])
+AM_CONDITIONAL([WITH_IRMP], [test "x$enable_irmp_so" = "xyes"])
+test -n "$enable_irmp_so" || enable_irmp_so=no
+
 ##############################
 ##  Finalize configuration  ##
 ##############################
@@ -177,4 +193,6 @@ Detected libraries (required):
 $srd_pkglibs_summary
 Detected libraries (optional):
 $srd_pkglibs_opt_summary
+Optional features:
+  - IRMP support library .......... $enable_irmp_so
 _EOF