mirror of
https://github.com/CoolProp/CoolProp.git
synced 2026-01-12 07:28:10 -05:00
191 lines
6.5 KiB
Makefile
191 lines
6.5 KiB
Makefile
# ============================================================================
|
|
# Name : Makefile
|
|
# Author : Jorrit Wronski (jowr@mek.dtu.dk)
|
|
# Version : 0.1
|
|
# Copyright : Use and modify at your own risk.
|
|
# Description : Makefile for a CoolProp solver based on ExternalMedia.
|
|
# ============================================================================
|
|
# The installation procedure should be as follows:
|
|
# 1) make header library
|
|
# 2) sudo make install
|
|
# ============================================================================
|
|
# general commands:
|
|
RM := rm -f
|
|
CP := cp
|
|
CH := chmod 0644
|
|
MK := mkdir -p
|
|
LD := ldconfig
|
|
LN := ln -sf
|
|
LT := libtool
|
|
AR := ar rvs
|
|
|
|
# used for the output
|
|
MAJORVERSION =3
|
|
MINORVERSION =3
|
|
THENAME =CoolPropLib
|
|
LIBRARYEXTENSION =.a
|
|
THETEST =coolPropLibTest
|
|
|
|
###########################################################
|
|
# Setting the directories for library, header and
|
|
# binary files created in this makefile.
|
|
###########################################################
|
|
SRCDIR =oFiles
|
|
# For Dymola integration
|
|
DYMDIR =/opt/dymola
|
|
LIBINST =$(DYMDIR)/bin/lib
|
|
HEADINST =$(DYMDIR)/source
|
|
# For OpenModelica integration
|
|
# LIBINST =/usr/lib/omc
|
|
# HEADINST =/usr/include/omc
|
|
# For system-wide installation
|
|
# LIBINST =/usr/local/lib
|
|
# HEADINST =/usr/local/include
|
|
BINDIR =./bin/LinuxGCC
|
|
|
|
COOLPROPDIR=../../CoolProp
|
|
|
|
LIBS =
|
|
OPTFLAGS =-O3 -funroll-loops -ffast-math# -ffloat-store # optimisation, remove for debugging
|
|
|
|
# List of files to compile
|
|
OBJS = \
|
|
$(SRCDIR)/basesolver.o \
|
|
$(SRCDIR)/coolpropsolver.o \
|
|
$(SRCDIR)/errorhandling.o \
|
|
$(SRCDIR)/solvermap.o \
|
|
$(SRCDIR)/testsolver.o
|
|
|
|
|
|
###########################################################
|
|
# Change these lines if you are using a different C++
|
|
# compiler or if you would like to use other flags.
|
|
###########################################################
|
|
CPPC =g++
|
|
DEBUGFLAGS =-g -O3
|
|
CPPFLAGS =$(OPTFLAGS)# -Wall -pedantic -fbounds-check -ansi -Wpadded -Wpacked -malign-double -mpreferred-stack-boundary=8
|
|
|
|
.PHONY : install
|
|
LIBFILE =$(THENAME)
|
|
LIBRARY =lib$(THENAME)
|
|
HEADERFILE =$(THENAME)
|
|
HEADEREXTENSION =.h
|
|
|
|
|
|
###########################################################
|
|
# Change these lines if you have other needs regarding
|
|
# the generated shared library file.
|
|
###########################################################
|
|
ifeq ($(LIBRARYEXTENSION),.so)
|
|
install : install_dynamic
|
|
LIBFLAGS =-rdynamic -fPIC -shared -Wl,-soname,$(LIBRARY)$(LIBRARYEXTENSION).$(MAJORVERSION)
|
|
endif
|
|
|
|
|
|
###########################################################
|
|
# Change these lines if you have other needs regarding
|
|
# the generated static library file.
|
|
###########################################################
|
|
ifeq ($(LIBRARYEXTENSION),.a)
|
|
install : install_static
|
|
LIBFLAGS =-fPIC -static
|
|
endif
|
|
|
|
|
|
###########################################################
|
|
# Copy files to places recognised by the system.
|
|
###########################################################
|
|
.PHONY : install_dynamic
|
|
install_dynamic : header library
|
|
$(MK) $(HEADINST) $(LIBINST)
|
|
$(CP) $(BINDIR)/$(HEADERFILE)$(HEADEREXTENSION) $(HEADINST)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(CP) $(BINDIR)/$(LIBRARY).so $(LIBINST)/$(LIBRARY).so.$(MAJORVERSION).$(MINORVERSION)
|
|
$(CH) $(HEADINST)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(CH) $(LIBINST)/$(LIBRARY).so.$(MAJORVERSION).$(MINORVERSION)
|
|
$(LD) -l $(LIBINST)/$(LIBRARY).so.$(MAJORVERSION).$(MINORVERSION)
|
|
$(LN) $(LIBINST)/$(LIBRARY).so.$(MAJORVERSION) $(LIBINST)/$(LIBRARY).so
|
|
$(LD)
|
|
|
|
.PHONY : install_static
|
|
install_static : header library
|
|
$(MK) $(HEADINST) $(LIBINST)
|
|
$(CP) $(BINDIR)/$(HEADERFILE)$(HEADEREXTENSION) $(HEADINST)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(CP) $(BINDIR)/$(LIBRARY).a $(LIBINST)/$(LIBRARY).a
|
|
$(CH) $(HEADINST)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(CH) $(LIBINST)/$(LIBRARY).a
|
|
$(LD)
|
|
|
|
.PHONY : uninstall
|
|
uninstall :
|
|
$(RM) $(HEADINST)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(RM) $(LIBINST)/$(LIBRARY)$(LIBRARYEXTENSION)*
|
|
$(RM) $(LIBINST)/$(LIBRARY).a
|
|
|
|
.PHONY : all
|
|
all : header library
|
|
|
|
|
|
############################################################
|
|
## Compile coolprop sources to static files
|
|
############################################################
|
|
#COOLCPP_FILES := $(shell find $(COOLPROPDIR)/ -type f -name '*.cpp')
|
|
COOLCPP_FILES := $(wildcard $(COOLPROPDIR)/*.cpp)
|
|
COOLOBJ_FILES := $(addprefix $(SRCDIR)/,$(notdir $(COOLCPP_FILES:.cpp=.o)))
|
|
|
|
# Define search path for prerequisite files
|
|
vpath %.cpp $(COOLPROPDIR):$(COOLPROPDIR)/purefluids:$(COOLPROPDIR)/pseudopurefluids:$(SRCDIR)
|
|
|
|
.PHONY : coolprop
|
|
coolprop : $(COOLOBJ_FILES)
|
|
|
|
|
|
##########################################################
|
|
# Compile the C++ sources into a library file that can
|
|
# be used as shared or static object.
|
|
###########################################################
|
|
.PHONY : header
|
|
header : $(BINDIR)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(BINDIR)/$(HEADERFILE)$(HEADEREXTENSION): $(SRCDIR)/$(HEADERFILE)$(HEADEREXTENSION)
|
|
$(MK) $(BINDIR)
|
|
$(CP) $(SRCDIR)/$(HEADERFILE)$(HEADEREXTENSION) $(BINDIR)
|
|
|
|
.PHONY : library
|
|
library : $(BINDIR)/$(LIBRARY)$(LIBRARYEXTENSION)
|
|
|
|
$(BINDIR)/$(LIBRARY).so: $(OBJS) $(COOLOBJ_FILES) $(SRCDIR)/$(LIBFILE).o
|
|
$(MK) $(BINDIR)
|
|
$(CPPC) $(LIBFLAGS) $(CPPFLAGS) -o $(BINDIR)/$(LIBRARY).so $(SRCDIR)/$(LIBFILE).o $(OBJS)
|
|
|
|
$(BINDIR)/$(LIBRARY).a: $(OBJS) $(COOLOBJ_FILES) $(SRCDIR)/$(LIBFILE).o
|
|
$(MK) $(BINDIR)
|
|
$(AR) $(BINDIR)/$(LIBRARY).a $^
|
|
|
|
|
|
###########################################################
|
|
# General rulesets for compilation.
|
|
###########################################################
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) **.o **.so **.a **.mod $(BINDIR)/* $(SRCDIR)/*.o
|
|
|
|
$(SRCDIR)/%.o : %.cpp
|
|
$(CPPC) $(CPPFLAGS) -o $(SRCDIR)/$*.o -I$(COOLPROPDIR) -I$(COOLPROPDIR)/purefluids -I$(COOLPROPDIR)/pseudopurefluids -I$(SRCDIR) -c $<
|
|
|
|
###########################################################
|
|
# Test cases
|
|
###########################################################
|
|
60 : 60.cpp $(COOLOBJ_FILES)
|
|
$(CPPC) $(CPPFLAGS) -g -o 60 -I$(COOLPROPDIR) -I$(COOLPROPDIR)/purefluids -I$(COOLPROPDIR)/pseudopurefluids -I$(SRCDIR) $< $(COOLOBJ_FILES) -ldl
|
|
|
|
|
|
############################################################
|
|
## Create the documentation from annotations in the source
|
|
## files with DOXYGEN, a configuration file is needed.
|
|
############################################################
|
|
#.PHONY : doc
|
|
#doc : doc/Doxyfile
|
|
# doxygen doc/Doxyfile
|
|
# cd doc/latex ; \
|
|
# make all
|
|
|