42 lines
1.1 KiB
Makefile
Raw Normal View History

# Build + run the GENERATED native C++ example.
#
# make run # build the Nim dylib + the C++ driver against the generated hpp
# make clean
#
# Regenerate the bindings with `nimble genbindings_cpp_native` (from the repo
# root). The Nim library is compiled from the repo root so its vendored Nimble
# dependencies resolve.
REPO_ROOT := $(abspath ../../..)
NIM_SRC := $(REPO_ROOT)/examples/timer/timer.nim
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
LIBNAME := libmy_timer.dylib
RPATH := -Wl,-rpath,.
else
LIBNAME := libmy_timer.so
RPATH := -Wl,-rpath,'$$ORIGIN'
endif
CXX ?= c++
CXXFLAGS ?= -std=c++17 -Wall -Wextra -O2 -I.
NIMFLAGS := --mm:orc -d:chronicles_log_level=WARN --app:lib --noMain \
--nimMainPrefix:libmy_timer
.PHONY: all run clean
all: example
$(LIBNAME):
cd $(REPO_ROOT) && nim c $(NIMFLAGS) -o:$(CURDIR)/$(LIBNAME) $(NIM_SRC)
example: main.cpp my_timer_native.hpp my_timer.h $(LIBNAME)
$(CXX) $(CXXFLAGS) main.cpp -L. -lmy_timer $(RPATH) -o example
run: example
./example
clean:
rm -f example $(LIBNAME)