mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 14:18:42 +01:00
Support clang/OS X shared libraries in the Makefile.
This commit is contained in:
46
Makefile
46
Makefile
@ -19,6 +19,16 @@ else
|
||||
CPPFLAGS += -fPIC
|
||||
endif
|
||||
|
||||
# Clang on Mac OS X has different flags and a different extension to build a
|
||||
# shared library.
|
||||
ifneq (,$(findstring darwin,$(TARGET_OS)))
|
||||
SHARED_LIB_FLAGS =
|
||||
SHARED_EXT = dylib
|
||||
else
|
||||
SHARED_LIB_FLAGS = -Wl,-soname,$@.so
|
||||
SHARED_EXT = so
|
||||
endif
|
||||
|
||||
# Files.
|
||||
SOURCES := $(wildcard src/*.c)
|
||||
HEADERS := $(wildcard src/*.h)
|
||||
@ -38,21 +48,18 @@ RELEASE_CPP_LIB_OBJECTS := $(subst build/release-cpp/main.o,,$(RELEASE_CPP_OBJEC
|
||||
all: release
|
||||
|
||||
clean:
|
||||
@rm -rf build wren wrend libwren.a libwrend.a libwren.so libwrend.so
|
||||
@rm -rf build wren wrend libwren libwrend
|
||||
|
||||
prep:
|
||||
@mkdir -p build/debug build/release build/release-cpp
|
||||
|
||||
# Debug build.
|
||||
debug: prep wrend libwrend.a libwrend.so
|
||||
debug: prep wrend libwrend
|
||||
|
||||
# Debug static library.
|
||||
libwrend.a: $(DEBUG_LIB_OBJECTS)
|
||||
$(AR) $@ $^
|
||||
|
||||
# Debug shared library.
|
||||
libwrend.so: $(DEBUG_LIB_OBJECTS)
|
||||
$(CC) $(DEBUG_CFLAGS) -shared -Wl,-soname,$@ -o $@ $^
|
||||
# Debug static and shared libraries.
|
||||
libwrend: $(DEBUG_LIB_OBJECTS)
|
||||
$(AR) $@.a $^
|
||||
$(CC) $(DEBUG_CFLAGS) -shared $(SHARED_LIB_FLAGS) -o $@.$(SHARED_EXT) $^
|
||||
|
||||
# Debug command-line interpreter.
|
||||
wrend: $(DEBUG_OBJECTS)
|
||||
@ -63,15 +70,12 @@ build/debug/%.o: src/%.c include/wren.h $(HEADERS)
|
||||
$(CC) -c $(CFLAGS) $(DEBUG_CFLAGS) -Iinclude -o $@ $<
|
||||
|
||||
# Release build.
|
||||
release: prep wren libwren.a libwren.so
|
||||
release: prep wren libwren
|
||||
|
||||
# Release static library.
|
||||
libwren.a: $(RELEASE_LIB_OBJECTS)
|
||||
$(AR) $@ $^
|
||||
|
||||
# Release shared library.
|
||||
libwren.so: $(RELEASE_LIB_OBJECTS)
|
||||
$(CC) $(RELEASE_CFLAGS) -shared -Wl,-soname,$@ -o $@ $^
|
||||
# Release static and shared libraries.
|
||||
libwren: $(RELEASE_LIB_OBJECTS)
|
||||
$(AR) $@.a $^
|
||||
$(CC) $(RELEASE_CFLAGS) -shared $(SHARED_LIB_FLAGS) -o $@.$(SHARED_EXT) $^
|
||||
|
||||
# Release command-line interpreter.
|
||||
wren: $(RELEASE_OBJECTS)
|
||||
@ -82,11 +86,11 @@ build/release/%.o: src/%.c include/wren.h $(HEADERS)
|
||||
$(CC) -c $(CFLAGS) $(RELEASE_CFLAGS) -Iinclude -o $@ $<
|
||||
|
||||
# Release C++ build.
|
||||
release-cpp: prep wren-cpp libwren-cpp.a
|
||||
release-cpp: prep wren-cpp libwren-cpp
|
||||
|
||||
# Release C++ static lib
|
||||
libwren-cpp.a: $(RELEASE_CPP_LIB_OBJECTS)
|
||||
$(AR) $@ $^
|
||||
# Release C++ static library.
|
||||
libwren-cpp: $(RELEASE_CPP_LIB_OBJECTS)
|
||||
$(AR) $@.a $^
|
||||
|
||||
# Release C++ command-line interpreter.
|
||||
wren-cpp: $(RELEASE_CPP_OBJECTS)
|
||||
|
||||
Reference in New Issue
Block a user