## Compiling and linking on Unix.

There are several ways to get necessary compilation and linking information on Unix and application can use any of these methods to do crypto engine selection either at linking or run time.

- PKG_CHECK_MODULES() macro

  Example 2. Using PKG_CHECK_MODULES() macro in a configure.in file to select crypto engine (openssl) at linking time.

      dnl
      dnl Check for xmlsec and friends
      dnl
      PKG_CHECK_MODULES(XMLSEC, xmlsec1-openssl >= 1.0.0 xml2 libxslt,,exit)
      CFLAGS="$CFLAGS $XMLSEC_CFLAGS"
      CPPFLAGS="$CPPFLAGS $XMLSEC_CFLAGS"
      LDFLAGS="$LDFLAGS $XMLSEC_LIBS"

  Example 3. Using PKG_CHECK_MODULES() macro in a configure.in file to enable dynamical loading of xmlsec-crypto library.

      dnl
      dnl Check for xmlsec and friends
      dnl
      PKG_CHECK_MODULES(XMLSEC, xmlsec1 >= 1.0.0 xml2 libxslt,,exit)
      CFLAGS="$CFLAGS $XMLSEC_CFLAGS"
      CPPFLAGS="$CPPFLAGS $XMLSEC_CFLAGS"
      LDFLAGS="$LDFLAGS $XMLSEC_LIBS"

- pkg-config script

  Example 4. Using pkg-config script in a Makefile to select crypto engine (nss) at linking time.

      PROGRAM = test
      PROGRAM_FILES = test.c

      CFLAGS	+= -g $(shell pkg-config --cflags xmlsec1-nss)
      LDFLAGS	+= -g
      LIBS 	+= $(shell pkg-config --libs xmlsec1-nss)

      all: $(PROGRAM)

      %: %.c
      	$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)

      clean:
      	@rm -rf $(PROGRAM)

  Example 5. Using pkg-config script in a Makefile to enable dynamical loading of xmlsec-crypto library.

      PROGRAM = test
      PROGRAM_FILES = test.c

      CFLAGS	+= -g $(shell pkg-config --cflags xmlsec1)
      LDFLAGS	+= -g
      LIBS 	+= $(shell pkg-config --libs xmlsec1)

      all: $(PROGRAM)

      %: %.c
      	$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)

      clean:
      	@rm -rf $(PROGRAM)

- xmlsec1-config script

  Example 6. Using xmlsec1-config script in a Makefile to select crypto engine (e.g. gnutls) at linking time.

      PROGRAM = test
      PROGRAM_FILES = test.c

      CFLAGS	+= -g $(shell xmlsec1-config --crypto gnutls --cflags)
      LDFLAGS	+= -g
      LIBS 	+= $(shell xmlsec1-config --crypto gnutls --libs)

      all: $(PROGRAM)

      %: %.c
      	$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)

      clean:
      	@rm -rf $(PROGRAM)

  Example 7. Using xmlsec1-config script in a Makefile to enable dynamical loading of xmlsec-crypto library.

      PROGRAM = test
      PROGRAM_FILES = test.c

      CFLAGS	+= -g $(shell xmlsec1-config --cflags)
      LDFLAGS	+= -g
      LIBS 	+= $(shell xmlsec1-config --libs)

      all: $(PROGRAM)

      %: %.c
      	$(cc) $(PROGRAM_FILES) $(CFLAGS) $(LDFLAGS) -o $(PROGRAM) $(LIBS)

      clean:
      	@rm -rf $(PROGRAM)