Skip to content

Commit

Permalink
Add library versioning to Make/CMake build systems
Browse files Browse the repository at this point in the history
See raysan5#401 for the discussion.
  • Loading branch information
a3f committed Dec 10, 2017
1 parent de78fa6 commit 6c1bdcd
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 14 deletions.
9 changes: 7 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
project(raylib)
include("../utils.cmake")

set(PROJECT_VERSION 1.9.1-dev)
set(PROJECT_VERSION 1.9.2)
set(API_VERSION 1)
set(RAYLIB raylib) # Name of the generated library

### Config options ###
Expand Down Expand Up @@ -123,7 +124,11 @@ if(${PLATFORM} MATCHES "PLATFORM_DESKTOP")
set(CMAKE_MACOSX_RPATH ON)

target_link_libraries(${RAYLIB}_shared ${LIBS_PRIVATE})
set_target_properties(${RAYLIB}_shared PROPERTIES PUBLIC_HEADER "raylib.h")
set_target_properties(${RAYLIB}_shared PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION ${API_VERSION}
PUBLIC_HEADER "raylib.h"
)
if(WIN32)
install(
TARGETS ${RAYLIB}_shared
Expand Down
39 changes: 27 additions & 12 deletions src/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
.PHONY: all clean install uninstall

# Define required raylib variables
VERSION = 1.9.2
API_VERSION = 1
PLATFORM ?= PLATFORM_DESKTOP
RAYLIB_PATH = ..

Expand Down Expand Up @@ -172,6 +174,7 @@ ifeq ($(PLATFORM),PLATFORM_DESKTOP)
ifeq ($(PLATFORM_OS),OSX)
# OSX default compiler
CC = clang
GLFW_CFLAGS = -x objective-c
endif
ifeq ($(PLATFORM_OS),FREEBSD)
# FreeBSD default compiler
Expand Down Expand Up @@ -291,7 +294,7 @@ endif

# Define linker options
ifeq ($(PLATFORM),PLATFORM_ANDROID)
LDFLAGS = -Wl,-soname,libraylib.so -Wl,--exclude-libs,libatomic.a
LDFLAGS = -Wl,-soname,libraylib.$(API_VERSION).so -Wl,--exclude-libs,libatomic.a
LDFLAGS += -Wl,--build-id -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings
# Force linking of library module to define symbol
LDFLAGS += -u ANativeActivity_onCreate
Expand Down Expand Up @@ -353,22 +356,30 @@ else
ifeq ($(PLATFORM_OS),LINUX)
# Compile raylib to shared library version for GNU/Linux.
# WARNING: you should type "make clean" before doing this target
$(CC) -shared -o $(RAYLIB_RELEASE_PATH)/libraylib.so $(OBJS) -lGL -lm -lpthread -ldl -lrt
@echo "raylib shared library generated (libraylib.so)!"
$(CC) -shared -o $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).so $(OBJS) -Wl,-soname,libraylib.$(API_VERSION).so -lGL -lm -lpthread -ldl -lrt
@echo "raylib shared library generated (libraylib.$(VERSION).so)!"
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).so libraylib.$(API_VERSION).so
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).so libraylib.so
endif
ifeq ($(PLATFORM_OS),OSX)
$(CC) -dynamiclib -o $(RAYLIB_RELEASE_PATH)/libraylib.dylib $(OBJS) -L/usr/local/Cellar/glfw/3.2.1/lib -framework OpenGL -framework OpenAL -framework Cocoa
install_name_tool -id "libraylib.dylib" $(RAYLIB_RELEASE_PATH)/libraylib.dylib
@echo "raylib shared library generated (libraylib.dylib)!"
$(CC) -dynamiclib -o $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).dylib $(OBJS) -compatibility_version $(API_VERSION) -current_version $(VERSION) -framework OpenGL -framework OpenAL -framework IOKit -framework CoreVideo -framework Cocoa
install_name_tool -id "libraylib.$(VERSION).dylib" $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).dylib
@echo "raylib shared library generated (libraylib.$(VERSION).dylib)!"
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).dylib libraylib.$(API_VERSION).dylib
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).dylib libraylib.dylib
endif
ifeq ($(PLATFORM_OS),FREEBSD)
# WARNING: you should type "gmake clean" before doing this target
$(CC) -shared -o $(RAYLIB_RELEASE_PATH)/libraylib.so $(OBJS) -lGL -lpthread
@echo "raylib shared library generated (libraylib.so)!"
$(CC) -shared -o $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).so $(OBJS) -Wl,-soname,libraylib.$(API_VERSION).so -lGL -lpthread
@echo "raylib shared library generated (libraylib.$(VERSION).so)!"
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).so libraylib.$(API_VERSION).so
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).so libraylib.so
endif
ifeq ($(PLATFORM),PLATFORM_ANDROID)
$(CC) -shared -o $(RAYLIB_RELEASE_PATH)/libraylib.so $(OBJS) $(LDFLAGS) $(LDLIBS)
@echo "raylib shared library generated (libraylib.so)!"
$(CC) -shared -o $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).so $(OBJS) $(LDFLAGS) $(LDLIBS)
@echo "raylib shared library generated (libraylib.$(VERSION).so)!"
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).so libraylib.$(API_VERSION).so
cd $(RAYLIB_RELEASE_PATH) && ln -s libraylib.$(VERSION).so libraylib.so
endif
else
# Compile raylib static library
Expand All @@ -386,7 +397,7 @@ core.o : core.c raylib.h rlgl.h utils.h raymath.h gestures.h

# Compile rglfw module
rglfw.o : rglfw.c
$(CC) -c $< $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) -D$(GRAPHICS)
$(CC) $(GLFW_CFLAGS) -c $< $(CFLAGS) $(INCLUDE_PATHS) -D$(PLATFORM) -D$(GRAPHICS)

# Compile rlgl module
rlgl.o : rlgl.c rlgl.h raymath.h
Expand Down Expand Up @@ -434,6 +445,8 @@ ifeq ($(ROOT),root)
# /usr/local/include/) are for libraries that are installed
# manually (without a package manager).
ifeq ($(RAYLIB_LIBTYPE),SHARED)
cp --update $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).so /usr/local/lib/libraylib.$(VERSION).so
cp --update $(RAYLIB_RELEASE_PATH)/libraylib.$(API_VERSION).so /usr/local/lib/libraylib.$(API_VERSION).so
cp --update $(RAYLIB_RELEASE_PATH)/libraylib.so /usr/local/lib/libraylib.so
else
cp --update raylib.h /usr/local/include/raylib.h
Expand All @@ -455,6 +468,8 @@ ifeq ($(ROOT),root)
rm --force /usr/local/include/raylib.h
ifeq ($(RAYLIB_LIBTYPE),SHARED)
rm --force /usr/local/lib/libraylib.so
rm --force /usr/local/lib/libraylib.$(API_VERSION).so
rm --force /usr/local/lib/libraylib.$(VERSION).so
else
rm --force /usr/local/lib/libraylib.a
endif
Expand All @@ -471,7 +486,7 @@ clean:
ifeq ($(PLATFORM_OS),WINDOWS)
del *.o $(RAYLIB_RELEASE_PATH)/libraylib.a $(RAYLIB_RELEASE_PATH)/libraylib.bc $(RAYLIB_RELEASE_PATH)/libraylib.so external/stb_vorbis.o
else
rm -f *.o $(RAYLIB_RELEASE_PATH)/libraylib.a $(RAYLIB_RELEASE_PATH)/libraylib.bc $(RAYLIB_RELEASE_PATH)/libraylib.so external/stb_vorbis.o
rm -f *.o $(RAYLIB_RELEASE_PATH)/libraylib.a $(RAYLIB_RELEASE_PATH)/libraylib.bc $(RAYLIB_RELEASE_PATH)/libraylib.so $(RAYLIB_RELEASE_PATH)/libraylib.$(API_VERSION).so $(RAYLIB_RELEASE_PATH)/libraylib.$(VERSION).so external/stb_vorbis.o
endif
ifeq ($(PLATFORM),PLATFORM_ANDROID)
rm -rf $(ANDROID_TOOLCHAIN)
Expand Down

0 comments on commit 6c1bdcd

Please sign in to comment.