WORKDIR = %cd%
########################################################
# Common C flags
########################################################
COMCFLAGS = -O2 -Wall -DNDEBUG
########################################################
# Platform specific section
########################################################
ifeq ($(PLATFORM), WIN64)
CC = x86_64-w64-mingw32-gcc
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-g++
CFLAGS = -m64 -DWIN64 $(COMCFLAGS)
OBJDIR = obj64
XLL_OUT = cooldt-w64.xll
EXE_OUT = cooldt-w64.exe
else ifeq ($(PLATFORM),WIN32)
CC = i586-mingw32msvc-gcc
CXX = i586-mingw32msvc-g++
LD = i586-mingw32msvc-g++
CFLAGS = $(COMCFLAGS)
OBJDIR = obj32
XLL_OUT = cooldt.xll
EXE_OUT = cooldt.exe
else
CC = gcc
CFLAGS = $(COMCFLAGS)
OBJDIR = obj
EXE_OUT = cooldt
endif
########################################################
# Common section
########################################################
INC = -I./source/xlw/include -I./source
LIB = -lm
XLL_LDFLAGS = -Wl,"source/cooldt.def" -Wl,--enable-stdcall-fixup -Wl,-static -static-libgcc
EXE_LDFLAGS =
########################################################
XLL_OBJ = $(OBJDIR)/MJCellMatrix.o \
$(OBJDIR)/HiResTimer.o \
$(OBJDIR)/FileConverter.o \
$(OBJDIR)/DoubleOrNothing.o \
$(OBJDIR)/Dispatcher.o \
$(OBJDIR)/ArgList.o \
$(OBJDIR)/NCmatrices.o \
$(OBJDIR)/XlfArgDesc.o \
$(OBJDIR)/xlcall.o \
$(OBJDIR)/XlfServices.o \
$(OBJDIR)/XlfRef.o \
$(OBJDIR)/XlfOperProperties.o \
$(OBJDIR)/XlfOperImpl.o \
$(OBJDIR)/XlfFuncDesc.o \
$(OBJDIR)/XlfExcel.o \
$(OBJDIR)/XlfCmdDesc.o \
$(OBJDIR)/XlfArgDescList.o \
$(OBJDIR)/XlfAbstractCmdDesc.o \
$(OBJDIR)/XlOpenClose.o \
$(OBJDIR)/XlFunctionRegistration.o \
$(OBJDIR)/Win32StreamBuf.o \
$(OBJDIR)/TempMemory.o \
$(OBJDIR)/PathUpdater.o \
$(OBJDIR)/PascalStringConversions.o \
$(OBJDIR)/algebra.o \
$(OBJDIR)/alloc.o \
$(OBJDIR)/automatic.o \
$(OBJDIR)/check-data.o \
$(OBJDIR)/main-xll.o \
$(OBJDIR)/main-stdcall.o \
$(OBJDIR)/mesh.o \
$(OBJDIR)/solution.o \
$(OBJDIR)/steady-state.o \
$(OBJDIR)/transient.o \
$(OBJDIR)/xlwWrapper.o
EXE_OBJ = $(OBJDIR)/algebra.o \
$(OBJDIR)/alloc.o \
$(OBJDIR)/automatic.o \
$(OBJDIR)/check-data.o \
$(OBJDIR)/input.o \
$(OBJDIR)/main.o \
$(OBJDIR)/mesh.o \
$(OBJDIR)/messages.o \
$(OBJDIR)/solution.o \
$(OBJDIR)/steady-state.o \
$(OBJDIR)/transient.o
ifeq ($(PLATFORM), WIN64)
all: xll_release exe_release
else ifeq ($(PLATFORM),WIN32)
all: xll_release exe_release
else
all: exe_release
endif
xll_before:
make -f RunInterfaceGenerator.mak BUILD=Release
mkdir -p $(OBJDIR)
exe_before:
mkdir -p $(OBJDIR)
xll_release: xll_before xll_out
exe_release: exe_before exe_out
xll_out: $(XLL_OBJ)
$(LD) -shared -s -o $(XLL_OUT) $(XLL_LDFLAGS) $(XLL_OBJ) $(LIB)
exe_out: $(EXE_OBJ)
$(CC) -s -o $(EXE_OUT) $(EXE_LDFLAGS) $(EXE_OBJ) $(LIB)
########################################################
# XLW
########################################################
$(OBJDIR)/MJCellMatrix.o: source/xlw/src/MJCellMatrix.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/MJCellMatrix.cpp -o $(OBJDIR)/MJCellMatrix.o
$(OBJDIR)/HiResTimer.o: source/xlw/src/HiResTimer.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/HiResTimer.cpp -o $(OBJDIR)/HiResTimer.o
$(OBJDIR)/FileConverter.o: source/xlw/src/FileConverter.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/FileConverter.cpp -o $(OBJDIR)/FileConverter.o
$(OBJDIR)/DoubleOrNothing.o: source/xlw/src/DoubleOrNothing.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/DoubleOrNothing.cpp -o $(OBJDIR)/DoubleOrNothing.o
$(OBJDIR)/Dispatcher.o: source/xlw/src/Dispatcher.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/Dispatcher.cpp -o $(OBJDIR)/Dispatcher.o
$(OBJDIR)/ArgList.o: source/xlw/src/ArgList.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/ArgList.cpp -o $(OBJDIR)/ArgList.o
$(OBJDIR)/NCmatrices.o: source/xlw/src/NCmatrices.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/NCmatrices.cpp -o $(OBJDIR)/NCmatrices.o
$(OBJDIR)/XlfArgDesc.o: source/xlw/src/XlfArgDesc.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfArgDesc.cpp -o $(OBJDIR)/XlfArgDesc.o
$(OBJDIR)/xlcall.o: source/xlw/src/xlcall.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/xlcall.cpp -o $(OBJDIR)/xlcall.o
$(OBJDIR)/XlfServices.o: source/xlw/src/XlfServices.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfServices.cpp -o $(OBJDIR)/XlfServices.o
$(OBJDIR)/XlfRef.o: source/xlw/src/XlfRef.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfRef.cpp -o $(OBJDIR)/XlfRef.o
$(OBJDIR)/XlfOperProperties.o: source/xlw/src/XlfOperProperties.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfOperProperties.cpp -o $(OBJDIR)/XlfOperProperties.o
$(OBJDIR)/XlfOperImpl.o: source/xlw/src/XlfOperImpl.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfOperImpl.cpp -o $(OBJDIR)/XlfOperImpl.o
$(OBJDIR)/XlfFuncDesc.o: source/xlw/src/XlfFuncDesc.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfFuncDesc.cpp -o $(OBJDIR)/XlfFuncDesc.o
$(OBJDIR)/XlfExcel.o: source/xlw/src/XlfExcel.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfExcel.cpp -o $(OBJDIR)/XlfExcel.o
$(OBJDIR)/XlfCmdDesc.o: source/xlw/src/XlfCmdDesc.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfCmdDesc.cpp -o $(OBJDIR)/XlfCmdDesc.o
$(OBJDIR)/XlfArgDescList.o: source/xlw/src/XlfArgDescList.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfArgDescList.cpp -o $(OBJDIR)/XlfArgDescList.o
$(OBJDIR)/XlfAbstractCmdDesc.o: source/xlw/src/XlfAbstractCmdDesc.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlfAbstractCmdDesc.cpp -o $(OBJDIR)/XlfAbstractCmdDesc.o
$(OBJDIR)/XlOpenClose.o: source/xlw/src/XlOpenClose.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlOpenClose.cpp -o $(OBJDIR)/XlOpenClose.o
$(OBJDIR)/XlFunctionRegistration.o: source/xlw/src/XlFunctionRegistration.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/XlFunctionRegistration.cpp -o $(OBJDIR)/XlFunctionRegistration.o
$(OBJDIR)/Win32StreamBuf.o: source/xlw/src/Win32StreamBuf.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/Win32StreamBuf.cpp -o $(OBJDIR)/Win32StreamBuf.o
$(OBJDIR)/TempMemory.o: source/xlw/src/TempMemory.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/TempMemory.cpp -o $(OBJDIR)/TempMemory.o
$(OBJDIR)/PathUpdater.o: source/xlw/src/PathUpdater.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/PathUpdater.cpp -o $(OBJDIR)/PathUpdater.o
$(OBJDIR)/PascalStringConversions.o: source/xlw/src/PascalStringConversions.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlw/src/PascalStringConversions.cpp -o $(OBJDIR)/PascalStringConversions.o
########################################################
# COOLDT
########################################################
$(OBJDIR)/algebra.o: source/algebra.c
$(CC) $(CFLAGS) $(INC) -c source/algebra.c -o $(OBJDIR)/algebra.o
$(OBJDIR)/alloc.o: source/alloc.c
$(CC) $(CFLAGS) $(INC) -c source/alloc.c -o $(OBJDIR)/alloc.o
$(OBJDIR)/automatic.o: source/automatic.c
$(CC) $(CFLAGS) $(INC) -c source/automatic.c -o $(OBJDIR)/automatic.o
$(OBJDIR)/check-data.o: source/check-data.c
$(CC) $(CFLAGS) $(INC) -c source/check-data.c -o $(OBJDIR)/check-data.o
$(OBJDIR)/input.o: source/input.c
$(CC) $(CFLAGS) $(INC) -c source/input.c -o $(OBJDIR)/input.o
$(OBJDIR)/main.o: source/main.c
$(CC) $(CFLAGS) $(INC) -c source/main.c -o $(OBJDIR)/main.o
$(OBJDIR)/main-stdcall.o: source/main-stdcall.c
$(CC) $(CFLAGS) $(INC) -c source/main-stdcall.c -o $(OBJDIR)/main-stdcall.o
$(OBJDIR)/main-xll.o: source/main-xll.cpp
$(CXX) $(CFLAGS) $(INC) -c source/main-xll.cpp -o $(OBJDIR)/main-xll.o
$(OBJDIR)/mesh.o: source/mesh.c
$(CC) $(CFLAGS) $(INC) -c source/mesh.c -o $(OBJDIR)/mesh.o
$(OBJDIR)/messages.o: source/messages.c
$(CC) $(CFLAGS) $(INC) -c source/messages.c -o $(OBJDIR)/messages.o
$(OBJDIR)/solution.o: source/solution.c
$(CC) $(CFLAGS) $(INC) -c source/solution.c -o $(OBJDIR)/solution.o
$(OBJDIR)/steady-state.o: source/steady-state.c
$(CC) $(CFLAGS) $(INC) -c source/steady-state.c -o $(OBJDIR)/steady-state.o
$(OBJDIR)/transient.o: source/transient.c
$(CC) $(CFLAGS) $(INC) -c source/transient.c -o $(OBJDIR)/transient.o
$(OBJDIR)/xlwWrapper.o: source/xlwWrapper.cpp
$(CXX) $(CFLAGS) $(INC) -c source/xlwWrapper.cpp -o $(OBJDIR)/xlwWrapper.o
########################################################
clean:
rm -f source/xlwWrapper.cpp
rm -f $(XLL_OBJ) $(EXE_OBJ) $(EXE_OUT) $(XLL_OUT)