Files
opt-pricer/Makefile
2017-08-13 23:16:01 -04:00

68 lines
2.0 KiB
Makefile

CC=gcc
CFLAGS=-Wall -g -fPIC -O3 -pthread
CPPFLAGS=-pedantic -std=c++11
LDFLAGS=-lm -lstdc++
PREFIX=/usr/local
THIS_DIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
WINDOWS_CC=x86_64-w64-mingw32-gcc
WINDOWS_CFLAGS= -Wall -O3 -ansi -pedantic-errors -pthread
WINDOWS_PLATFORM= windows
.DEFAULT_GOAL := build/opt-pricer
build/opt-pricer : src/opt-pricer.c build/depends/linux/gbm.o build/depends/linux/black_scholes.o build/depends/linux/utils.o
@$(MAKE) -s build/libs/libstats.so
@$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@ -Wl,-rpath,'$$ORIGIN/libs' -Lbuild/libs -lstats
build/depends/%/gbm.o : src/gbm_mc.c | folders
@$(CC) $(CFLAGS) -c $^ $(LDFLAGS) -o $@
build/depends/%/black_scholes.o : src/black_scholes.c | folders
@$(CC) $(CFLAGS) -c $^ $(LDFLAGS) -o $@
build/depends/%/utils.o : src/utils.c | folders
@$(CC) $(CFLAGS) -c $^ $(LDFLAGS) -o $@
build/depends/%/strptime.o : src/strptime.c | folders
@$(CC) $(CFLAGS) -c $^ $(LDFLAGS) -o $@
build/depends/%/asa241.o : src/asa241.c | folders
@$(CC) $(CFLAGS) -c $^ $(LDFLAGS) -o $@
build/depends/%/sobol.o : src/sobol.cpp | folders
@$(CC) $(CFLAGS) $(CPPFLAGS) -c $^ $(LDFLAGS) -o $@
build/libs/libstats.so : build/depends/linux/sobol.o build/depends/linux/asa241.o | folders
@$(CC) -fPIC -shared -o $@ $^ -lstdc++
folders:
@mkdir -p build
@mkdir -p build/libs
@mkdir -p build/depends
@mkdir -p build/depends/linux
@mkdir -p build/depends/windows
build/opt-pricer.exe : CC=$(WINDOWS_CC)
build/opt-pricer.exe : CFLAGS=$(WINDOWS_CFLAGS)
build/opt-pricer.exe : src/opt-pricer.c build/depends/windows/gbm.o build/depends/windows/black_scholes.o build/depends/windows/utils.o build/depends/windows/strptime.o
@$(CC) $(CFLAGS) $^ $(LDFLAGS) -o $@
.PHONY: windows
windows: build/opt-pricer.exe
.PHONY: install
install : build/opt-pricer
@mkdir -p $(DESTDIR)$(PREFIX)/bin
@ln -sf $(THIS_DIR)$< $(DESTDIR)$(PREFIX)/bin/opt-pricer
.PHONY: uninstall
uninstall :
@rm -f $(DESTDIR)$(PREFIX)/bin/opt-pricer
.PHONY: clean
clean :
@rm -rf build