Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
libcifpp
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
libcifpp
Commits
a3cf3343
Commit
a3cf3343
authored
Jun 15, 2020
by
Maarten L. Hekkelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
configure script
parent
188fa4e5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
505 additions
and
15 deletions
+505
-15
GNUmakefile.in
+400
-0
README.md
+3
-15
config-tests/clipper-test.cpp
+9
-0
configure.ac
+80
-0
tools/m4esc.sh
+13
-0
No files found.
GNUmakefile.in
0 → 100644
View file @
a3cf3343
# makefile for libcif++
.PHONY
:
firstTarget
firstTarget
:
all
CXX
=
@CXX@
CXXFLAGS
=
@CXXFLAGS@
CXXFLAGS
+=
@BOOST_CPPFLAGS@
LDFLAGS
+=
@BOOST_LDFLAGS@
prefix
=
@prefix@
exec_prefix
=
@exec_prefix@
libdir
=
@libdir@
includedir
=
@includedir@
LIB_NAME
=
libcif++
# 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
OUTPUT
=
./
# SHARED_LIB = $(OUTPUT)/$(SHARED_LIB_NAME)
STATIC_LIB
=
$(OUTPUT)
/
$(STATIC_LIB_NAME)
LIBDIR
?=
$(PREFIX)
/lib
INCDIR
?=
$(PREFIX)
/include
MANDIR
?=
$(PREFIX)
/man/man3
DOCDIR
?=
$(PREFIX)
/share/doc/libzeep-doc
# 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@
ifeq
"$(DEBUG)"
"1"
DEFINES
+=
DEBUG
CXXFLAGS
+=
-g
-O0
LDFLAGS
+=
-g
else
CXXFLAGS
+=
-O2
DEFINES
+=
NDEBUG
endif
# targets
VPATH
+=
src:test
CXXFLAGS
+=
$
(
DEFINES:%
=
-D
%
)
OBJDIR
=
obj
ifeq
"$(DEBUG)"
"1"
OBJDIR
:=
$(OBJDIR)
.dbg
endif
$(OBJDIR)
:
mkdir
-p
$(OBJDIR)
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
)))
# 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
$(STATIC_LIB)
:
$(OBJECTS)
ar rc
$@
$(OBJECTS)
ranlib
$@
$(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
ifeq
"$(BUILD_SHARED_LIB)"
"1"
BUILD_LIBS
+=
$(SHARED_LIB)
endif
libs
:
$(BUILD_LIBS)
.PHONY
:
libs
static-lib
:
$(STATIC_LIB)
.PHONY
:
static-lib
shared-lib
:
$(SHARED_LIB)
.PHONY
:
shared-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)
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
:
install-libs install-dev
-include $(OBJECTS
:
%.o=%.d)
$(OBJECTS
:
.o=.d):
$(OBJDIR)/%.o
:
%.cpp | $(OBJDIR)
@
echo
">>"
$<
@
$(CXX)
-MD
-c
-o
$@
$<
$(CFLAGS)
$(CXXFLAGS)
.PHONY
:
clean
clean
:
rm
-rf
$(OBJDIR)
/
*
$(OUTPUT)
/
$(LIB_NAME)
*
# Test rules
BOOST_LIBS
=
define
TEST_template
=
-include
$$(OBJDIR)/$(1)-test.d
$(1)
_OBJECTS
=
$
$(OBJECTS)
$
$(OBJDIR)
/
$
(
1
)
-test
.o
test/$(1)-test
:
$$($(1)_OBJECTS)
@
echo
">>> building
$
(1)-test"
@
$(CXX)
-o
$$
@
$$
(
$
(
1
)
_OBJECTS
)
$
$(CFLAGS)
$
$(CXXFLAGS)
$(LDFLAGS)
$
(
BOOST_LIBS:%
=
-lboost_
%
)
-lstdc
++fs
.PHONY
:
$(1)-test
$(1)-test
:
test/$(1)-test
cd test
;
./
$
(
1
)
-test
$$
(
$
(
1
)
_PARAMS
)
endef
TESTS
=
unit
$(foreach
part,$(TESTS),$(eval
$(call
TEST_template,$(part))))
.PHONY
:
test
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
README.md
View file @
a3cf3343
libcif++
and pdb-redo tools
========
===================
libcif++
========
This is the README file for libcif++ and the suite of PDB-REDO tools
using this library.
This is the README file for libcif++.
Requirements
------------
...
...
@@ -23,17 +22,6 @@ Other requirements are:
functionality.
-
[
newuoa-cpp
](
https://github.com/elsid/newuoa-cpp
)
, required to
calculate atom radii.
-
[
libzeep
](
https://github.com/mhekkel/libzeep
)
, a library that
contains a full validating XML parser as well as a complete HTTP,
SOAP and REST server implementation.
-
[
nlohmann/json
](
https://github.com/nlohmann/json
)
, a header only
library to parse and write JSON. This is only a requirement if you
have a libzeep version older than version 4.
As stated, the nlohmann library is only needed if you use libzeep 3.0.x
which is bundled with Debian and derivatives (
`apt-get install libzeep-dev`
).
If you clone the version of libzeep on github the nlohmann json library will
not be used.
Building
--------
...
...
config-tests/clipper-test.cpp
0 → 100644
View file @
a3cf3343
// test to see if the clipper version is up-to-date enough
#include <clipper/core/atomsf.h>
int
main
()
{
auto
sf
=
clipper
::
ScatteringFactors
::
instance
()[
"C"
];
return
0
;
}
configure.ac
0 → 100644
View file @
a3cf3343
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])
AC_CONFIG_SRCDIR([src/AtomShape.cpp])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_MACRO_DIR([config/m4])
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
AC_ARG_VAR([DEBUG], [Build a debug version of the library])
AC_PATH_PROG([PKG_CONFIG], [pkg-config])
AC_ARG_VAR([CCP4], [The location where CCP4 is installed])
AS_IF([test x"$CCP4" != x""],
[
CPPFLAGS="$CPPFLAGS -I ${CCP4}/include"
CXXFLAGS="$CXXFLAGS -I ${CCP4}/include"
])
AC_ARG_WITH([clipper],
AS_HELP_STRING([--with-clipper=@<:@location@:>@],
[Use the clipper library as specified.
@<:@location=$CCP4@:>@]),
[
CPPFLAGS="$CPPFLAGS -I ${withval}/include"
CXXFLAGS="$CXXFLAGS -I ${withval}/include"
])
AC_ARG_WITH([newuoa],
AS_HELP_STRING([--with-newuoa=@<:@location@:>@],
[Use the newuoa library as specified.]),
[
CPPFLAGS="$CPPFLAGS -I ${withval}/include"
CXXFLAGS="$CXXFLAGS -I ${withval}/include"
])
AC_CHECK_HEADER(
[clipper/clipper.h],
[],
[AC_MSG_ERROR([
Can't find the main clipper include file clipper/clipper.h. Please
specify either the CCP4 location of the location of the installed
clipper using --with-clipper=<path>
])])
AC_MSG_CHECKING([clipper version])
AC_COMPILE_IFELSE(
[read_test(clipper-test.cpp)],
[],
[AC_MSG_ERROR([The version of clipper is not up to date])])
AC_CHECK_HEADER(
[newuoa.h],
[],
[AC_MSG_ERROR([
Can't find the newuoa include file newuoa.h. Please install this
library and specify its location with --with-newuoa=<path>.
You can find newuoa at https://github.com/elsid/newuoa-cpp.git
])])
# AC_ARG_ENABLE(
# debug,
# [AS_HELP_STRING([--enable-debug], [Generate a debug version of the library])],
# [],
# [enable_debug=auto])
dnl Process Makefile.in to create Makefile
AC_OUTPUT([GNUmakefile])
tools/m4esc.sh
0 → 100755
View file @
a3cf3343
#!/bin/bash
set
-e
file
=
"
$1
"
echo
-n
"[["
while
IFS
=
read
-r
line
;
do
echo
$line
| sed
-e
's/\[/@<:@/g'
-e
's/\]/@:>@/g'
-e
's/#/@%:@/g'
-e
's/\$/@S|@/g'
echo
done
<
"
$file
"
echo
-n
"]]"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment