--- /dev/null
+cmake_minimum_required(VERSION 2.8)
+
+PROJECT(ubox C)
+ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3)
+
+SET(SOURCES avl.c blob.c blobmsg.c hash.c uhtbl.c uloop.c)
+IF("${CMAKE_SYSTEM}" MATCHES "Linux")
+ SET(SOURCES ${SOURCES} unl.c)
+ENDIF("${CMAKE_SYSTEM}" MATCHES "Linux")
+
+ADD_LIBRARY(ubox SHARED ${SOURCES})
+
+SET(CMAKE_INSTALL_PREFIX /usr)
+
+FILE(GLOB headers *.h)
+INSTALL(FILES ${headers}
+ DESTINATION include/libubox
+)
+INSTALL(TARGETS ubox
+ LIBRARY DESTINATION lib
+)
+++ /dev/null
-CC?=gcc
-CFLAGS?=-O2
-CFLAGS+=-std=gnu99 -Wall -Werror -pedantic -fpic
-LDFLAGS?=
-LIBNL=-lnl-tiny
-PREFIX=/usr
-INCLUDE_DIR=$(PREFIX)/include/libubox
-LIBDIR=$(PREFIX)/lib
-CPPFLAGS=
-
-OS=$(shell uname)
-FILES=blob.c blobmsg.c hash.c uhtbl.c usock.c uloop.c avl.c
-ifeq ($(OS),Linux)
- FILES += unl.c
- LIBS += $(LIBNL)
- LDFLAGS_SHARED=-shared -Wl,-soname,$@
- SHLIB_EXT=so
-endif
-ifeq ($(OS),Darwin)
- LDFLAGS_SHARED=-dynamiclib
- SHLIB_EXT=dylib
-endif
-
-all: libubox.$(SHLIB_EXT)
-
-libubox.$(SHLIB_EXT): $(FILES)
- $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(LDFLAGS_SHARED)
-
-install-headers:
- mkdir -p $(INCLUDE_DIR)
- cp *.h $(INCLUDE_DIR)/
-
-install-lib:
- mkdir -p $(LIBDIR)
- cp libubox.$(SHLIB_EXT) $(LIBDIR)/
-
-install: install-lib install-headers
-
-clean:
- rm -f *.$(SHLIB_EXT)
-