aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile44
-rwxr-xr-xconfigure6
-rw-r--r--src/libgamma-method.h24
-rw-r--r--test/test.c60
4 files changed, 104 insertions, 30 deletions
diff --git a/Makefile b/Makefile
index 85fd74b..d11fffa 100644
--- a/Makefile
+++ b/Makefile
@@ -54,11 +54,13 @@ ifeq ($(DEBUG),y)
DEBUG_FLAGS += -D'DEBUG'
endif
-# Options for the C compiler.
-C_FLAGS = $(OPTIMISE) $(WARN) -std=$(STD) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \
- -ftree-vrp -fstrict-aliasing -fipa-pure-const -fstack-usage \
- -fstrict-overflow -funsafe-loop-optimizations -fno-builtin \
- $(DEBUG_FLAGS) $(DEFINITIONS) -DLIBGAMMA_CONFIG_H
+# Options for the C compiler for the test.
+TEST_FLAGS = $(OPTIMISE) $(WARN) -std=$(STD) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \
+ -ftree-vrp -fstrict-aliasing -fipa-pure-const -fstack-usage \
+ -fstrict-overflow -funsafe-loop-optimizations -fno-builtin
+
+# Options for the C compiler for the library.
+LIB_FLAGS = $(TEST_FLAGS) $(DEBUG_FLAGS) $(DEFINITIONS) -DLIBGAMMA_CONFIG_H
# Library linking flags for the linker.
LIBS_LD =
@@ -68,6 +70,14 @@ LIBS_C =
# Object files for the library.
LIBOBJ = libgamma-facade libgamma-method libgamma-error gamma-helper edid
+# Object files for the test.
+TESTOBJ = test
+
+# The version of the library.
+LIB_MAJOR = 1
+LIB_MINOR = 0
+LIB_VERSION = $(LIB_MAJOR).$(LIB_MINOR)
+
# Include configurations from `./configure`.
include config.mk
@@ -77,16 +87,32 @@ include config.mk
# Build rules.
.PHONY: all
-all: bin/libgamma.so
+all: bin/libgamma.so.$(LIB_VERSION) bin/libgamma.so.$(LIB_MAJOR) bin/libgamma.so bin/test
-bin/libgamma.so: $(foreach O,$(LIBOBJ),obj/$(O).o)
+bin/libgamma.so.$(LIB_VERSION): $(foreach O,$(LIBOBJ),obj/$(O).o)
mkdir -p $(shell dirname $@)
- $(CC) $(C_FLAGS) $(LIBS_LD) -shared -o $@ $^
+ $(CC) $(LIB_FLAGS) $(LIBS_LD) -shared -Wl,-soname,libgamma.so.$(LIB_MAJOR) -o $@ $^
+
+bin/libgamma.so.$(LIB_MAJOR):
+ mkdir -p $(shell dirname $@)
+ ln -s libgamma.so.$(LIB_VERSION) $@
+
+bin/libgamma.so:
+ mkdir -p $(shell dirname $@)
+ ln -s libgamma.so.$(LIB_VERSION) $@
obj/%.o: src/%.c src/*.h
mkdir -p $(shell dirname $@)
- $(CC) $(C_FLAGS) $(LIBS_C) -fPIC -c -o $@ $<
+ $(CC) $(LIB_FLAGS) $(LIBS_C) -fPIC -c -o $@ $<
+
+bin/test: $(foreach O,$(TESTOBJ),obj/$(O).o) bin/libgamma.so.$(LIB_VERSION) bin/libgamma.so
+ mkdir -p $(shell dirname $@)
+ $(CC) $(TEST_FLAGS) $(LIBS_LD) -Lbin -lgamma -o $@ $(foreach O,$(TESTOBJ),obj/$(O).o)
+
+obj/%.o: test/%.c
+ mkdir -p $(shell dirname $@)
+ $(CC) $(TEST_FLAGS) -Isrc -c -o $@ $<
# Clean rules.
diff --git a/configure b/configure
index 8a79c28..7221a93 100755
--- a/configure
+++ b/configure
@@ -110,7 +110,7 @@ fi
if [ ${enable_randr} = 1 ]; then
echo 'LIBOBJ += gamma-x-randr' >&3
echo 'DEFINITIONS += -DHAVE_GAMMA_METHOD_X_RANDR' >&3
- echo 'LIBS_LD += $$(pkg-config --cflags xcb xcb-randr)' >&3
+ echo 'LIBS_LD += $$(pkg-config --libs xcb xcb-randr)' >&3
echo 'LIBS_C += $$(pkg-config --cflags xcb xcb-randr)' >&3
echo '#define HAVE_GAMMA_METHOD_X_RANDR' >&4
have_randr='Yes'
@@ -118,7 +118,7 @@ fi
if [ ${enable_vidmode} = 1 ]; then
echo 'LIBOBJ += gamma-x-vidmode' >&3
echo 'DEFINITIONS += -DHAVE_GAMMA_METHOD_X_VIDMODE' >&3
- echo 'LIBS_LD += $$(pkg-config --cflags x11 xxf86vm)' >&3
+ echo 'LIBS_LD += $$(pkg-config --libs x11 xxf86vm)' >&3
echo 'LIBS_C += $$(pkg-config --cflags x11 xxf86vm)' >&3
echo '#define HAVE_GAMMA_METHOD_X_VIDMODE' >&4
have_vidmode='Yes'
@@ -126,7 +126,7 @@ fi
if [ ${enable_drm} = 1 ]; then
echo 'LIBOBJ += gamma-linux-drm' >&3
echo 'DEFINITIONS += -DHAVE_GAMMA_METHOD_LINUX_DRM' >&3
- echo 'LIBS_LD += $$(pkg-config --cflags libdrm)' >&3
+ echo 'LIBS_LD += $$(pkg-config --libs libdrm)' >&3
echo 'LIBS_C += $$(pkg-config --cflags libdrm)' >&3
echo '#define HAVE_GAMMA_METHOD_LINUX_DRM' >&4
have_drm='Yes'
diff --git a/src/libgamma-method.h b/src/libgamma-method.h
index 6d2cb33..260ec60 100644
--- a/src/libgamma-method.h
+++ b/src/libgamma-method.h
@@ -33,17 +33,13 @@
* This method can be configured and is useful for
* testing your program's ability to handle errors.
*/
-#ifdef HAVE_GAMMA_METHOD_DUMMY
-# define GAMMA_METHOD_DUMMY 0
-#endif
+#define GAMMA_METHOD_DUMMY 0
/**
* The identifier for the adjustment method with
* uses the RandR protocol under the X display server.
*/
-#ifdef HAVE_GAMMA_METHOD_X_RANDR
-# define GAMMA_METHOD_X_RANDR 1
-#endif
+#define GAMMA_METHOD_X_RANDR 1
/**
* The identifier for the adjustment method with
@@ -53,9 +49,7 @@
* supported by RandR, however it can only control the
* primary CRTC per screen (partition).
*/
-#ifdef HAVE_GAMMA_METHOD_X_VIDMODE
-# define GAMMA_METHOD_X_VIDMODE 2
-#endif
+#define GAMMA_METHOD_X_VIDMODE 2
/**
* The identifier for the Direct Rendering Manager
@@ -68,9 +62,7 @@
* started while this is running, but it can be
* started while a display server is running.
*/
-#ifdef HAVE_GAMMA_METHOD_LINUX_DRM
-# define GAMMA_METHOD_LINUX_DRM 3
-#endif
+#define GAMMA_METHOD_LINUX_DRM 3
/**
* The identifier for the Graphics Device Interface
@@ -78,9 +70,7 @@
* This method is not well tested; it can be compiled
* to be available under X.org using a translation layer.
*/
-#ifdef HAVE_GAMMA_METHOD_W32_GDI
-# define GAMMA_METHOD_W32_GDI 4
-#endif
+#define GAMMA_METHOD_W32_GDI 4
/**
* The identifier for the Core Graphics adjustment
@@ -89,9 +79,7 @@
* This method is not well tested; it can be compiled
* to be available under X.org using a translation layer.
*/
-#ifdef HAVE_GAMMA_METHOD_QUARTZ_CORE_GRAPHICS
-# define GAMMA_METHOD_QUARTZ_CORE_GRAPHICS 5
-#endif
+#define GAMMA_METHOD_QUARTZ_CORE_GRAPHICS 5
/**
diff --git a/test/test.c b/test/test.c
new file mode 100644
index 0000000..9dc3b1b
--- /dev/null
+++ b/test/test.c
@@ -0,0 +1,60 @@
+/**
+ * libgamma — Display server abstraction layer for gamma ramp adjustments
+ * Copyright © 2014 Mattias Andrée (maandree@member.fsf.org)
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <libgamma.h>
+
+#include <stdio.h>
+
+
+int main(void)
+{
+ int methods[GAMMA_METHOD_COUNT];
+ size_t n = libgamma_list_methods(methods, 0);
+ size_t i;
+
+ for (i = 0; i < n; i++)
+ switch (methods[i])
+ {
+ case GAMMA_METHOD_DUMMY:
+ printf("dummy\n");
+ break;
+ case GAMMA_METHOD_X_RANDR:
+ printf("RandR X extension\n");
+ break;
+ case GAMMA_METHOD_X_VIDMODE:
+ printf("VidMode X extension\n");
+ break;
+ case GAMMA_METHOD_LINUX_DRM:
+ printf("Linux DRM\n");
+ break;
+ case GAMMA_METHOD_W32_GDI:
+ printf("Windows GDI\n");
+ break;
+ case GAMMA_METHOD_QUARTZ_CORE_GRAPHICS:
+ printf("Quartz using Core Graphics\n");
+ break;
+ default:
+#if GAMMA_METHOD_COUNT != 6
+# warning List of adjustment methods is out of date
+#endif
+ printf("(unknown)\n");
+ break;
+ }
+
+ return 0;
+}
+