Commit e3297d0d by Maarten L. Hekkelman

with boost test, should be improved I'm afraid

parent e4ced4ca
......@@ -4,48 +4,41 @@
firstTarget: all
CXX = @CXX@
CXXFLAGS = @CXXFLAGS@
CXXFLAGS += @BOOST_CPPFLAGS@
LDFLAGS += @BOOST_LDFLAGS@
CXXFLAGS = @CXXFLAGS@ @BOOST_CPPFLAGS@ @LIBBZ2_CPPFLAGS@
LDFLAGS = @LDFLAGS@ @LIBS@ @BOOST_LDFLAGS@ @LIBBZ2_LDFLAGS@
LIBS = @LIBS@
prefix = @prefix@
exec_prefix = @exec_prefix@
libdir = @libdir@
includedir = @includedir@
# LIBTOOL_DEPS = @LIBTOOL_DEPS@
# libtool: $(LIBTOOL_DEPS)
# $(SHELL) ./config.status --recheck
LIB_NAME = @PACKAGE_NAME@
LIB_TARGET = $(LIB_NAME).la
GNUmakefile: config.status GNUmakefile.in
$(SHELL) ./config.status
LIB_NAME = libcif++
config.status: configure
$(SHELL) ./config.status --recheck
# DIST_NAME = $(LIB_NAME)$(VERSION)
# SO_NAME = $(LIB_NAME).so.$(VERSION_MAJOR)
# SHARED_LIB_NAME = $(SO_NAME).$(VERSION_MINOR)
STATIC_LIB_NAME = $(LIB_NAME).a
configure: configure.ac
autoconf
OUTPUT = ./
LIBTOOL_DEPS = @LIBTOOL_DEPS@
libtool: $(LIBTOOL_DEPS)
$(SHELL) ./config.status --recheck
# SHARED_LIB = $(OUTPUT)/$(SHARED_LIB_NAME)
STATIC_LIB = $(OUTPUT)/$(STATIC_LIB_NAME)
# libtool stuff
LIBDIR ?= $(PREFIX)/lib
INCDIR ?= $(PREFIX)/include
MANDIR ?= $(PREFIX)/man/man3
DOCDIR ?= $(PREFIX)/share/doc/libzeep-doc
LIBTOOL = $(SHELL) ./libtool
CXXCOMPILE = $(LIBTOOL) --silent --tag=CXX --mode=compile $(CXX) $(CXXFLAGS)
CXXLINK = $(LIBTOOL) --silent --tag=CXX --mode=link $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@
# main build variables
CXXFLAGS += -I. -pthread -I include/
CXXFLAGS += -Wall -Wno-multichar
PACKAGES +=
ifneq ($(PACKAGES),)
CXXFLAGS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --cflags $(PACKAGES))
LDFLAGS += $(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs $(PACKAGES) )
endif
# Use the DEBUG flag to build debug versions of the code
DEBUG = @DEBUG@
......@@ -94,7 +87,7 @@ LIBCIF_SRC = AtomShape.cpp \
TlsParser.cpp
SOURCES = $(addprefix src/,$(LIBCIF_SRC))
OBJECTS = $(addprefix $(OBJDIR)/, $(notdir $(SOURCES:%.cpp=%.o)))
OBJECTS = $(addprefix $(OBJDIR)/, $(notdir $(SOURCES:%.cpp=%.lo)))
# Special rules to generate symmetry operation number table
tools/symop-map-generator: tools/symop-map-generator.cpp
......@@ -102,78 +95,64 @@ tools/symop-map-generator: tools/symop-map-generator.cpp
src/SymOpTable_data.cpp: tools/symop-map-generator $(CLIBD)/symop.lib
tools/symop-map-generator > $@
$(OBJDIR)/Symmetry.o: src/SymOpTable_data.cpp
$(STATIC_LIB): $(OBJECTS)
ar rc $@ $(OBJECTS)
ranlib $@
$(OBJDIR)/Symmetry.lo: src/SymOpTable_data.cpp
$(SHARED_LIB): $(OBJECTS)
$(CXX) -shared -o $(SHARED_LIB) -Wl,-soname=$(SO_NAME) $(OBJECTS) $(LDFLAGS)
ln -fs $(SHARED_LIB_NAME) $(OUTPUT)/$(SO_NAME)
ln -fs $(SHARED_LIB_NAME) $(OUTPUT)/$(LIB_NAME).so
ifeq "$(BUILD_STATIC_LIB)" "1"
BUILD_LIBS = $(STATIC_LIB)
endif
$(LIB_TARGET): $(OBJECTS)
$(CXXLINK) -rpath $(libdir) $(OBJECTS) $(LIBS)
ifeq "$(BUILD_SHARED_LIB)" "1"
BUILD_LIBS += $(SHARED_LIB)
endif
libs: $(BUILD_LIBS)
libs: $(LIB_TARGET)
.PHONY: libs
all: libs
.PHONY: all
static-lib: $(STATIC_LIB)
.PHONY: static-lib
# install-libs: $(SHARED_LIB)
# install -d $(LIBDIR)
# install $(SHARED_LIB) $(LIBDIR)/$(SHARED_LIB_NAME)
# strip --strip-unneeded $(LIBDIR)/$(SHARED_LIB_NAME)
# ln -Tfs $(SHARED_LIB_NAME) $(LIBDIR)/$(SO_NAME)
# ln -Tfs $(SHARED_LIB_NAME) $(LIBDIR)/$(LIB_NAME).so
# $(LD_CONFIG) -n $(LIBDIR)
shared-lib: $(SHARED_LIB)
.PHONY: shared-lib
# install-dev: $(STATIC_LIB)
# install -d $(LIBDIR) $(INCDIR)/zeep/xml $(INCDIR)/zeep/http $(INCDIR)/zeep/http/webapp
# for f in $(HEADERS); do install ../include/$$f $(INCDIR)/$$f; done
# install $(STATIC_LIB) $(LIBDIR)/$(STATIC_LIB_NAME)
# strip -SX $(LIBDIR)/$(STATIC_LIB_NAME)
install-libs: $(SHARED_LIB)
install -d $(LIBDIR)
install $(SHARED_LIB) $(LIBDIR)/$(SHARED_LIB_NAME)
strip --strip-unneeded $(LIBDIR)/$(SHARED_LIB_NAME)
ln -Tfs $(SHARED_LIB_NAME) $(LIBDIR)/$(SO_NAME)
ln -Tfs $(SHARED_LIB_NAME) $(LIBDIR)/$(LIB_NAME).so
$(LD_CONFIG) -n $(LIBDIR)
# install: install-libs install-dev
install-dev: $(STATIC_LIB)
install -d $(LIBDIR) $(INCDIR)/zeep/xml $(INCDIR)/zeep/http $(INCDIR)/zeep/http/webapp
for f in $(HEADERS); do install ../include/$$f $(INCDIR)/$$f; done
install $(STATIC_LIB) $(LIBDIR)/$(STATIC_LIB_NAME)
strip -SX $(LIBDIR)/$(STATIC_LIB_NAME)
-include $(OBJECTS:%.lo=%.d)
install: install-libs install-dev
$(OBJECTS:.lo=.d):
-include $(OBJECTS:%.o=%.d)
$(OBJECTS:.o=.d):
$(OBJDIR)/%.lo: %.cpp | $(OBJDIR)
@ echo ">>" $<
@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(OBJDIR)/$*.d -c -o $@ $<
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)
@ echo ">>" $<
@ $(CXX) -MD -c -o $@ $< $(CFLAGS) $(CXXFLAGS)
@ $(CXX) $(CXXFLAGS) -MT $@ -MD -MP -MF $(OBJDIR)/$*.d -c -o $@ $<
.PHONY: clean
clean:
rm -rf $(OBJDIR)/* $(OUTPUT)/$(LIB_NAME)*
rm -rf .libs $(OBJDIR)/* $(LIB_TARGET)
# Test rules
BOOST_LIBS =
BOOST_LIBS = iostreams thread filesystem timer chrono regex
CLIPPER_LIBS = core ccp4
CLIPPER_LIBS := $(CLIPPER_LIBS:%=-lclipper-%)
define TEST_template =
-include $$(OBJDIR)/$(1)-test.d
$(1)_OBJECTS = $$(OBJECTS) $$(OBJDIR)/$(1)-test.o
$(1)_OBJECTS = $$(OBJDIR)/$(1)-test.o
test/$(1)-test: $$($(1)_OBJECTS)
test/$(1)-test: $(LIB_TARGET) $$($(1)_OBJECTS)
@ echo ">>> building $(1)-test"
@ $(CXX) -o $$@ $$($(1)_OBJECTS) $$(CFLAGS) $$(CXXFLAGS) $(LDFLAGS) $(BOOST_LIBS:%=-lboost_%) -lstdc++fs
$(LIBTOOL) --silent --tag=CXX --mode=link $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $$@ $$($(1)_OBJECTS) -L.libs -Wl,-rpath /srv/ccp4-7.1/lib -lbz2 -lz -lcif++ $(CLIPPER_LIBS) $(BOOST_LIBS:%=-lboost_%) $(LIBS) -lstdc++fs
.PHONY: $(1)-test
$(1)-test: test/$(1)-test
......@@ -191,216 +170,3 @@ test: $(TESTS:%=%-test)
dist-clean: clean
FORCE:
# ifeq ($(CLIB),)
# $(warning "")
# $(warning "The CCP4 environment seems to be unavailable, please source it")
# $(warning "")
# CLIBD ?= $(CLIB)/lib/data
# make.config:
# @ echo "No make.config file, writing a default one"
# @ echo "#NO_RSRC = 1 # uncomment this line to disable resources" > make.config
# @ echo "" >> make.config
# @ echo "NEWUOA_DIR = # Please specify" >> make.config
# @ echo "" >> make.config
# @ echo "INCLUDE_DIR += \$$(NEWUOA_DIR:%=%/include) $(CINCL)" >> make.config
# @ echo "LIBRARY_DIR += \$$(NEWUOA_DIR:%=%/lib) $(CLIB)" >> make.config
# @ echo
# @ echo "The default make.config now contains:"
# @ cat make.config
# @ echo
# @ echo "Please update this make.config file to include the correct paths"
# MRC ?= mrc
# ifeq ($(NO_RSRC),)
# ifeq ($(shell which $(MRC)),)
# $(warning "")
# $(warning "The executable mrc is not found in your path.")
# $(warning "Please consider installing it to enable built-in data files.")
# $(warning "See https://github.com/mhekkel/mrc")
# $(warning "")
# else
# DEFINES += USE_RSRC
# endif
# endif
# SO_NAME = libcif++.so.1
# CPU = $(shell uname -m)
# OS = $(shell uname -o)
# SYSLIBDIR = /usr/lib
# ifeq "$(OS)" "GNU/Linux"
# SYSLIBDIR := $(SYSLIBDIR)/$(CPU)-linux-gnu
# endif
# WARNINGS = all no-multichar no-unknown-pragmas no-deprecated-declarations
# RANLIB ?= ranlib
# INCLUDE_DIR += ./include
# LIBRARY_DIR +=
# CFLAGS += -std=c++17 -pthread -fPIC
# CFLAGS += -ffunction-sections -fdata-sections
# CFLAGS += $(addprefix -I, $(INCLUDE_DIR))
# # generic defines
# CFLAGS += $(addprefix -W, $(WARNINGS))
# CFLAGS += $(addprefix -D, $(DEFINES))
# LIBS += newuoa
# # LDFLAGS += $(LIBRARY_DIR:%=-L %) $(LIBS:%=-l%) -g
# OBJDIR = obj
# ifneq ($(DEBUG),1)
# CFLAGS += -O3 -ffunction-sections -fdata-sections -DNDEBUG -g
# else
# CFLAGS += -g -DDEBUG
# OBJDIR := $(OBJDIR).dbg
# endif
# ifeq ($(PROFILE),1)
# CFLAGS += -pg
# LDFLAGS += -pg
# OBJDIR := $(OBJDIR).profile
# endif
# CXXFLAGS = $(CFLAGS)
# LIBCIF_SRC = AtomShape.cpp \
# AtomType.cpp \
# BondMap.cpp \
# Cif2PDB.cpp \
# Cif++.cpp \
# CifParser.cpp \
# CifUtils.cpp \
# CifValidator.cpp \
# Compound.cpp \
# DistanceMap.cpp \
# MapMaker.cpp \
# PDB2Cif.cpp \
# PDB2CifRemark3.cpp \
# Point.cpp \
# ResolutionCalculator.cpp \
# Secondary.cpp \
# Statistics.cpp \
# Structure.cpp \
# Symmetry.cpp \
# TlsParser.cpp
# SOURCES = $(addprefix src/,$(LIBCIF_SRC))
# OBJECTS = $(addprefix $(OBJDIR)/, $(notdir $(SOURCES:%.cpp=%.o)))
# SOURCE_DIRS = $(sort $(dir $(SOURCES)))
# empty =
# space = $(empty) $(empty)
# SRC_VPATH = $(subst $(space),:,$(SOURCE_DIRS))
# VPATH += $(SRC_VPATH)
# $(OBJDIR)/%.o: %.cpp | $(OBJDIR)
# @ echo ">>" $<
# @ $(CXX) -MD -c -o $@ $< $(CFLAGS) $(CXXFLAGS)
# -include $(OBJECTS:%.o=%.d)
# $(OBJECTS:.o=.d):
# $(OBJDIR):
# @ test -d $@ || mkdir -p $@
# # Special rules to generate symmetry operation number table
# tools/symop-map-generator: tools/symop-map-generator.cpp
# src/SymOpTable_data.cpp: tools/symop-map-generator $(CLIBD)/symop.lib
# tools/symop-map-generator > $@
# $(OBJDIR)/Symmetry.o: src/SymOpTable_data.cpp
# .PHONY: clean all
# clean:
# rm -rf $(OBJDIR)/* libcif++.a
# .PHONY: static-lib
# static-lib: libcif++.a
# libcif++.a: $(OBJECTS)
# ar rc $@ $^
# $(RANLIB) $@
# .PHONY: shared-lib
# shared-lib: libcif++.a
# libcif++.so: $(OBJECTS)
# $(CXX) -shared -o $(SO_NAME) $^ $(LDFLAGS) -Wl,-soname=$(SO_NAME)
# ln -fs $(SO_NAME) $@
# BOOST_LIB_DIR ?= $(SYSLIBDIR)
# BOOST_LIBS = date_time iostreams program_options filesystem thread math_c99 math_c99f timer chrono system regex random
# BOOST_LIBS := $(BOOST_LIBS:%=boost_%$(BOOST_LIB_SUFFIX))
# BOOST_LIBS := $(BOOST_LIBS:%=$(BOOST_LIB_DIR)/lib%.a)
# CLIPPER_LIBS = clipper-ccp4 clipper-minimol clipper-mmdb clipper-cns clipper-phs clipper-contrib clipper-core
# CLIPPER_LIB_DIR ?= $(CLIB)
# ifeq ($(STATIC_CPP4_LIBS),1)
# CLIPPER_LIBS := $(CLIPPER_LIBS:%=$(CLIPPER_LIB_DIR)/lib%.a)
# else
# CLIPPER_LIBS := $(CLIPPER_LIBS:%=-l%)
# endif
# ZEEP_LIBS ?= xml el generic
# ZEEP_LIBS := $(ZEEP_LIBS:%=-lzeep-%)
# CCP4_LIBS += ccp4c mmdb2 rfftw fftw
# CCP4_LIB_DIR ?= $(CLIB)
# ifeq ($(STATIC_CPP4_LIBS),1)
# CCP4_LIBS := $(CCP4_LIBS:%=$(CCP4_LIB_DIR)/lib%.a)
# else
# CCP4_LIBS := $(CCP4_LIB_DIR:%=-L%) $(CCP4_LIBS:%=-l%)
# endif
# TEST_LIBS = $(LIBS)
# TEST_LIBS += m rt
# TEST_LIBS := $(TEST_LIBS:%=-l%)
# TEST_LIBS += $(ZEEP_LIBS) $(BOOST_LIBS) $(CLIPPER_LIBS) $(CCP4_LIBS) -lz -lbz2 -lpthread
# TEST_LDFLAGS = $(LDFLAGS)
# TEST_LDFLAGS += $(LIBRARY_DIR:%=-L %) $(TEST_LIBS) -g
# TEST_LDFLAGS += -Wl,-rpath=$(CLIB)
# VPATH += test
# define TEST_template =
# $$(OBJDIR)/$(1)_rsrc.o: rsrc/dictionaries
# $(MRC) -o $$@ $$^
# test/$(1)-test: $$(OBJECTS) $$(OBJDIR)/$(1)-test.o libcif++.a $$(OBJDIR)/$(1)_rsrc.o
# @ echo ">>> building $(1)-test"
# @ $(CXX) -o $$@ $$(OBJDIR)/$(1)-test.o $$(OBJDIR)/$(1)_rsrc.o $$(OBJECTS) $$(CFLAGS) $$(CXXFLAGS) $(TEST_LDFLAGS)
# .PHONY: $(1)-test
# $(1)-test: test/$(1)-test
# test/$(1)-test $$($(1)_PARAMS)
# -include $$(OBJDIR)/$(1)-test.d
# endef
# TESTS = unit
# $(foreach part,$(TESTS),$(eval $(call TEST_template,$(part))))
# .PHONY: test
# test: $(TESTS:%=%-test)
# all: static-lib
// test to see if the clipper version is up-to-date enough
#include <boost/regex.hpp>
int main()
{
boost::regex rx("a*b");
if (boost::regex_match("aab", rx))
;
return 0;
}
......@@ -2,7 +2,7 @@ AC_INIT([libcif++], 1.0, [m.hekkelman@nki.nl])
dnl Switch to a C++ compiler, and check if it works.
AC_LANG(C++)
AX_CXX_COMPILE_STDCXX_14([noext])
AX_CXX_COMPILE_STDCXX_17([noext])
AC_CONFIG_SRCDIR([src/AtomShape.cpp])
AC_CONFIG_AUX_DIR(config)
......@@ -13,12 +13,10 @@ AC_PREFIX_DEFAULT(/usr/local)
AC_DEFUN([read_test], [AC_LANG_SOURCE(
esyscmd(tools/m4esc.sh config-tests/$1))])
AX_BOOST_BASE([1.73])
AC_PROG_INSTALL
dnl AC_DISABLE_SHARED
dnl AC_PROG_LIBTOOL
dnl AC_SUBST(LIBTOOL_DEPS)
AC_ENABLE_STATIC
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
AC_ARG_VAR([DEBUG], [Build a debug version of the library])
......@@ -30,8 +28,45 @@ AS_IF([test x"$CCP4" != x""],
[
CPPFLAGS="$CPPFLAGS -I ${CCP4}/include"
CXXFLAGS="$CXXFLAGS -I ${CCP4}/include"
LDFLAGS="$LDFLAGS -L${CCP4}/lib"
])
AX_BOOST_BASE([1.73])
AX_BOOST_REGEX
dnl The ccp4 distribution comes bundled with boost libraries that are
dnl most likely out of date. Since they also include .so files, this will
dnl break your software.
OLD_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS"
OLD_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
OLD_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
OLD_LIBS="$LIBS"
LIBS="-lboost_regex"
AC_MSG_CHECKING([boost regex library version])
AC_LINK_IFELSE(
[read_test(boost-regex-test.cpp)],
[AC_MSG_RESULT([yes])],
[AC_MSG_ERROR([You most likely have a conflict between the version
of the boost header files and the boost libraries located in ccp4.
This can be solved by deleting the libboost_*.so files in your CCP4
library directory.
Note: only the files with names ending in .so should be deleted.
])])
CXXFLAGS="$OLD_CXXFLAGS"
CPPFLAGS="$OLD_CPPFLAGS"
LDFLAGS="$OLD_LDFLAGS"
LIBS="$OLD_LIBS"
AX_BOOST_IOSTREAMS
AX_BOOST_FILESYSTEM
AX_BOOST_THREAD
AC_ARG_WITH([clipper],
AS_HELP_STRING([--with-clipper=@<:@location@:>@],
[Use the clipper library as specified.
......@@ -39,6 +74,7 @@ AC_ARG_WITH([clipper],
[
CPPFLAGS="$CPPFLAGS -I ${withval}/include"
CXXFLAGS="$CXXFLAGS -I ${withval}/include"
LDFLAGS="$LDFLAGS -L${withval}/lib"
])
AC_ARG_WITH([newuoa],
......@@ -47,6 +83,7 @@ AC_ARG_WITH([newuoa],
[
CPPFLAGS="$CPPFLAGS -I ${withval}/include"
CXXFLAGS="$CXXFLAGS -I ${withval}/include"
LDFLAGS="$LDFLAGS -L${withval}/lib"
])
AC_CHECK_HEADER(
......@@ -73,6 +110,11 @@ library and specify its location with --with-newuoa=<path>.
You can find newuoa at https://github.com/elsid/newuoa-cpp.git
])])
AX_CHECK_LIBRARY([LIBZ], [zlib.h], [z], [],
[AC_MSG_ERROR([libz not found - compressed files not supported])])
AX_CHECK_LIBRARY([LIBBZ2], [bzlib.h], [bz2], [],
[AC_MSG_ERROR([libbz2 not found - compressed files not supported])])
# AC_ARG_ENABLE(
# debug,
# [AS_HELP_STRING([--enable-debug], [Generate a debug version of the library])],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment