diff options
author | Jamie Bullock <jamie@jamiebullock.com> | 2014-11-07 12:45:35 +0000 |
---|---|---|
committer | Jamie Bullock <jamie@jamiebullock.com> | 2014-11-07 12:45:35 +0000 |
commit | df68c095949b4a5d1bad697e2785bd9cd8661f52 (patch) | |
tree | 5ab41aa547c1d756bd6d3b5b3e6c5831fa29f46e /Makefile | |
parent | f7bcd97626f1a990106e88e1dfcb56806dfb0419 (diff) | |
download | LibXtract-df68c095949b4a5d1bad697e2785bd9cd8661f52.tar.gz LibXtract-df68c095949b4a5d1bad697e2785bd9cd8661f52.tar.bz2 LibXtract-df68c095949b4a5d1bad697e2785bd9cd8661f52.zip |
Add examples to new build system
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 108 |
1 files changed, 10 insertions, 98 deletions
@@ -1,105 +1,17 @@ -#### -#### Generic Makefile for C or C++ projects -#### -#### This file is public domain. -#### Jamie Bullock 2014 <jamie@jamiebullock.com> -#### -################################### -### User configurable variables ### -################################### +static: LIBTYPE = static +shared: LIBTYPE = shared -#### It is best not to modify this file -#### Instead override these variables in a separate Make.config file if needed +.PHONY: examples clean static shared -# The name of the product to build (default uses parent directory name) -NAME ?= $(notdir $(CURDIR)) -# The file suffix of source files, can be .c or .cpp -SUFFIX ?= .c -# List of directories containing source files to be compiled -DIRS ?= . -# Flags to pass to the compiler for release builds -FLAGS ?= -O3 -# Flags to pass to the compiler for debug builds -DEBUG_FLAGS ?= -O0 -g -# Flags to pass to the linker -LDFLAGS ?= -# Type of product to build: "shared" for a shared library, "static" for a static library, empty for standalone -LIBRARY ?= static -# Prefix to the path that the "install" target will install into. libs to $(PREFIX)/lib, executables to $(PREFIX)/bin -PREFIX ?= /usr/local +all: static examples -############################################## -### Do not modify anything below this line ### -############################################## +static shared: + @$(MAKE) -C src LIBRARY=$(LIBTYPE) -ifeq ($(OS),Windows_NT) -else - PLATFORM := $(shell uname -s) -endif - --include Make.config - -OUT_DIR := .build -SRC := $(foreach dir, $(DIRS), $(wildcard $(dir)/*$(SUFFIX))) -OBJ_ := $(SRC:$(SUFFIX)=.o) -OBJ := $(addprefix $(OUT_DIR)/,$(OBJ_)) -DEPS := $(OBJ:.o=.d) -SHARED_SUFFIX := dll -STATIC_SUFFIX := lib -INSTALL_DIR := $(PREFIX)/lib - -ifeq "$(PLATFORM)" "Darwin" - SHARED_SUFFIX := dylib - STATIC_SUFFIX := a -endif - -ifeq "$(PLATFORM)" "Linux" - SHARED_SUFFIX := so - STATIC_SUFFIX := a -endif - -ifeq "$(LIBRARY)" "shared" - OUT=lib$(NAME).$(SHARED_SUFFIX) - LDFLAGS += -shared -else ifeq "$(LIBRARY)" "static" - OUT=lib$(NAME).$(STATIC_SUFFIX) -else - OUT=$(NAME) - INSTALL_DIR := $(PREFIX)/bin -endif - -ifeq "$(SUFFIX)" ".cpp" - COMPILER := $(CXX) -else ifeq "$(SUFFIX)" ".c" - COMPILER := $(CC) -endif - -.SUFFIXES: -.PHONY: debug clean install uninstall - -$(OUT): $(OBJ) -ifeq "$(LIBRARY)" "static" - @$(AR) rcs $@ $^ -else - @$(COMPILER) $(LDFLAGS) $^ -o $@ -endif - -debug: FLAGS = $(DEBUG_FLAGS) -debug: $(OUT) - -$(OUT_DIR)/%.o: %$(SUFFIX) - @mkdir -p $(dir $@) - @$(COMPILER) $(CXXFLAGS) $(FLAGS) -MMD -MP -fPIC -c $< -o $@ - -install: $(OUT) - @install -d $(INSTALL_DIR) - @install $(OUT) $(INSTALL_DIR) - -uninstall: - @$(RM) $(INSTALL_DIR)/$(OUT) +examples: + @$(MAKE) -C examples clean: - @$(RM) -r $(OUT) $(OUT_DIR) - --include: $(DEPS) + @$(MAKE) -C src clean + @$(MAKE) -C examples clean |