1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
#
# WRAPPER module makefile
#
#----------------------------------------------------------------------------
# Project specific path defintions.
#----------------------------------------------------------------------------
M_INCL_DIR = ../include
M_LIB_DIR = ../lib
PROJ_DIR = .
L_INCL_DIR = $(PROJ_DIR)/include
SRC_DIR = $(PROJ_DIR)/src
OBJ_DIR = $(PROJ_DIR)/obj
L_LIB_DIR = $(PROJ_DIR)/lib
VPATH = $(OBJ_DIR)
EXT_COMP_OPT = -ftemplate-depth-128 -fno-inline -Wall
EXT_INCLS_DIRS = -I$(WWPDB_PYTHON_INC) -I$(WWPDB_BOOST_INC)
EXT_LIBS_DIRS = -L$(WWPDB_PYTHON_LIB_DIR) -L$(WWPDB_BOOST_PYTHON_LIB_DIR) \
-L$(WWPDB_XERCESC_LIB_DIR)
EXT_LIBS = -l$(WWPDB_PYTHON_LIB) -l$(WWPDB_BOOST_PYTHON_LIB) \
-l$(WWPDB_XERCESC_LIB)
SYS_LIBS = -lutil -lpthread -ldl
LINK_METHOD = -shared
#----------------------------------------------------------------------------
# LINCLUDES and LDEFINES are appended to CFLAGS and C++FLAGS
#----------------------------------------------------------------------------
LDEFINES =
LINCLUDES = -I$(L_INCL_DIR) -I$(M_INCL_DIR) $(EXT_INCLS_DIRS)
#----------------------------------------------------------------------------
# Include the appropriate compiler/platform definitions ...
#----------------------------------------------------------------------------
-include ../etc/Makefile.platform
# Dependent libraries
PDBML_PARSER_LIB = ../$(M_LIB_DIR)/pdbml-parser.a
DICT_OBJ_FILE_LIB = ../$(M_LIB_DIR)/dict-obj-file.a
CIF_FILE_UTIL_LIB = ../$(M_LIB_DIR)/cif-file-util.a
CIF_FILE_LIB = ../$(M_LIB_DIR)/cif-file.a
CIFPARSE_LIB = ../$(M_LIB_DIR)/cifparse-obj.a
TABLES_LIB = ../$(M_LIB_DIR)/tables.a
COMMON_LIB = ../$(M_LIB_DIR)/common.a
REGEX_LIB = ../$(M_LIB_DIR)/regex.a
ALL_DEP_LIBS = $(PDBML_PARSER_LIB) $(DICT_OBJ_FILE_LIB) $(CIF_FILE_UTIL_LIB) \
$(CIF_FILE_LIB) $(CIFPARSE_LIB) $(TABLES_LIB) $(COMMON_LIB) $(REGEX_LIB)
# Module libraries
MOD_LIB = CorePyWrap.so
# Agregate library
AGR_LIB = all.a
# Temporary library. Used to obtain the agregate library.
TMP_LIB = tmp.a
L_MOD_LIB = $(L_LIB_DIR)/$(MOD_LIB)
M_MOD_LIB = $(M_LIB_DIR)/$(MOD_LIB)
L_AGR_LIB = $(L_LIB_DIR)/$(AGR_LIB)
M_AGR_LIB = $(M_LIB_DIR)/$(AGR_LIB)
# Base file names. Must have ".ext" at the end of the file.
BASE_REGULAR_FILES = TypeCodePyWrap.ext \
StlPyWrap.ext \
CharPyWrap.ext \
RcsbFilePyWrap.ext \
ISTablePyWrap.ext \
TableFilePyWrap.ext \
CifFilePyWrap.ext \
DicFilePyWrap.ext \
DictObjFilePyWrap.ext \
DataInfoPyWrap.ext \
CifDataInfoPyWrap.ext \
DictDataInfoPyWrap.ext \
PdbMlFilePyWrap.ext \
CorePyWrap.ext
BASE_FILES = $(BASE_REGULAR_FILES)
# Source files. Replace ".ext" with ".C"
SRC_FILES = ${BASE_FILES:.ext=.C}
# Object files. Replace ".ext" with ".o"
OBJ_FILES = ${BASE_FILES:.ext=.o}
# Base header files. Replace ".ext" with ".h"
BASE_HEADER_FILES = ${BASE_FILES:.ext=.h}
EXTRA_HEADER_FILES =
HEADER_FILES = $(BASE_HEADER_FILES) $(EXTRA_HEADER_FILES)
ALL_OBJ_FILES = *.o
.PHONY: ../etc/Makefile.platform all install export clean clean_build
all: build
.PHONY: build
build: python/setup.py
install: $(M_MOD_LIB)
python/setup.py: python/setup.py.in
sed -e 's!@C++FLAGS@!$(C++FLAGS)!g; s!@DEFINES@!$(DEFINES)!g; s!@EXT_COMP_OPT@!$(EXT_COMP_OPT)!; s!@EXT_LIBS_DIRS@!$(EXT_LIBS_DIRS)!g; s!@EXT_LIBS@!$(EXT_LIBS)!g;' < "$<" > "$@"
ln -sf ../src python/src
export:
mkdir -p $(EXPORT_DIR)
@cp Makefile $(EXPORT_DIR)
@cd $(EXPORT_DIR); mkdir -p $(L_INCL_DIR)
@cd $(L_INCL_DIR); $(EXPORT) $(EXPORT_LIST) $(HEADER_FILES) ../$(EXPORT_DIR)/$(L_INCL_DIR)
@cd $(EXPORT_DIR); mkdir -p $(SRC_DIR)
@cd $(SRC_DIR); $(EXPORT) $(EXPORT_LIST) $(SRC_FILES) ../$(EXPORT_DIR)/$(SRC_DIR)
@cd $(EXPORT_DIR); mkdir -p $(OBJ_DIR)
@cd $(EXPORT_DIR); mkdir -p $(L_LIB_DIR)
clean: clean_build
$(M_MOD_LIB): $(L_MOD_LIB)
# Install module library
$(INSTALL) $(INSTALLOPTS) $(L_MOD_LIB) $(PROJ_DIR)
$(INSTALL) $(INSTALLOPTS) $(L_MOD_LIB) $(M_LIB_DIR)
clean_build:
@rm -f $(OBJ_DIR)/*.o
@rm -rf $(OBJ_DIR)/ii_files
@rm -f $(L_MOD_LIB)
@rm -f $(PROJ_DIR)/$(MOD_LIB)
@rm -f $(M_MOD_LIB)
@rm -f $(M_AGR_LIB)
@rm -f *.pyc
@rm -f python/setup.py
$(L_MOD_LIB): $(OBJ_FILES) $(ALL_DEP_LIBS)
# Create module library
@cd $(OBJ_DIR); $(CCC) $(CPPFLAGS) $(LINK_METHOD) $(EXT_LIBS_DIRS) $(OBJ_FILES) $(ALL_DEP_LIBS) $(EXT_LIBS) $(SYS_LIBS) -o ../$@
# Rule for making object files
%.o: $(SRC_DIR)/%.C
$(CCC) $(CPPFLAGS) $(C++FLAGS) $(EXT_COMP_OPT) -c $< -o $(OBJ_DIR)/$@
|