Static-const-ify ICD loader info strings
[ocl-icd] / Makefile.am
1
2 ACLOCAL_AMFLAGS = -I m4
3
4 SUBDIRS = . doc tests
5
6 RUBY=ruby
7 AM_CPPFLAGS = -Wall @AM_CPPFLAGS@
8
9 pkgconfigdir = $(libdir)/pkgconfig
10 pkgconfig_DATA= OpenCL.pc ocl-icd.pc
11
12 EXTRA_DIST=icd_generator.rb ocl_interface.yaml bootstrap \
13         $(TESTFILES) khronos-headers
14
15 ##################################################################
16 # Main OpenCL ICD Loader library
17 lib_LTLIBRARIES = libOpenCL.la
18 nodist_include_HEADERS = ocl_icd.h
19 pkgexampledir = $(docdir)/examples
20 pkgexample_DATA = ocl_icd_bindings.c
21
22 FILES_FROM_DATABASE = ocl_icd.h ocl_icd_loader_gen.h \
23         ocl_icd_loader_gen.c ocl_icd_bindings.c \
24         ocl_icd_loader_gen.map
25 BUILT_SOURCES = $(FILES_FROM_DATABASE)
26 CLEANFILES = $(FILES_FROM_DATABASE) stamp-generator
27
28 if UPDATE_DATABASE
29 use_system_headers=--system-headers
30 else
31 use_system_headers=
32 endif
33
34 # Generate sources and headers from the database
35 stamp-generator: ocl_interface.yaml
36 $(FILES_FROM_DATABASE): stamp-generator
37 stamp-generator: icd_generator.rb
38         $(RUBY) $< --mode database --database $(srcdir)/ocl_interface.yaml \
39                 $(use_system_headers)
40         echo "timestamp" > $@
41
42 # ignore the warning in OpenCL headers when using old interface
43 libOpenCL_la_CFLAGS= $(NO_DEPRECATED_DECLARATIONS_FLAGS) \
44         $(AM_CFLAGS) $(PTHREAD_CFLAGS)
45
46 libOpenCL_la_SOURCES = ocl_icd_loader.c ocl_icd_loader.h ocl_icd_debug.h
47 nodist_libOpenCL_la_SOURCES = ocl_icd_loader_gen.c ocl_icd.h
48 libOpenCL_la_LDFLAGS = -version-info 1:0:0 $(PTHREAD_CFLAGS)
49 libOpenCL_la_LIBADD = $(PTHREAD_LIBS)
50 if USE_MAP
51 libOpenCL_la_LDFLAGS += -Wl,--version-script,ocl_icd_loader_gen.map
52 libOpenCL_la_DEPENDS = ocl_icd_loader_gen.map
53 endif
54
55 ####################################
56 # A very small program test
57 check_PROGRAMS=ocl_test ocl_test_icdl
58 ocl_test_SOURCES = ocl_test.c
59 ocl_test_LDADD = libOpenCL.la
60 ocl_test_icdl_SOURCES = ocl_test_icdl.c
61 ocl_test_icdl_LDADD = libOpenCL.la
62
63 check_DATA = vendors/dummycl.icd vendors/dummycl2.icd vendors/dummycl-noext.icd
64 CLEANFILES += vendors/dummycl.icd vendors/dummycl2.icd vendors/dummycl-noext.icd
65 vendors/dummycl.icd:
66         $(mkdir_p) vendors
67         echo "$(CURDIR)/.libs/libdummycl.so" > $@
68
69 vendors/dummycl2.icd:
70         $(mkdir_p) vendors
71         echo "$(CURDIR)/.libs/libdummycl2.so" > $@
72
73 vendors/dummycl-noext.icd:
74         $(MKDIR_P) vendors
75         echo "$(CURDIR)/.libs/libdummycl-noext.so" > $@
76
77 clean-local: mostlyclean-generic clean-generic
78         -rmdir vendors
79
80 ##################################################################
81 # dummy OpenCL ICD
82 FILES_FROM_GENERATOR = run_dummy_icd_gen.c run_dummy_icd_weak_gen.c \
83         libdummy_icd_gen.c libdummy_icd_gen.h
84 BUILT_SOURCES += $(FILES_FROM_GENERATOR)
85 CLEANFILES += $(FILES_FROM_GENERATOR) stamp-generator-dummy
86
87 # Generate sources and headers from OpenCL installed headers
88 $(FILES_FROM_GENERATOR): stamp-generator-dummy
89 stamp-generator-dummy: icd_generator.rb
90 stamp-generator-dummy: icd_generator.rb
91         $(RUBY) $< --mode generate --database $(srcdir)/ocl_interface.yaml
92         echo "timestamp" > $@
93
94 # noinst_LTLIBRARIES would be the correct thing but then libtool
95 # only built non shared version :-( So, declaring the libs as
96 # pkglib_LTLIBRARIES and using an install hook to remove them.
97 pkglib_LTLIBRARIES = libdummycl.la libdummycl2.la libdummycl-noext.la
98 install-exec-hook::
99         $(RM) -r $(DESTDIR)$(pkglibdir)
100 libdummycl_la_SOURCES = libdummy_icd.c libdummy_icd.h
101 nodist_libdummycl_la_SOURCES = libdummy_icd_gen.c libdummy_icd_gen.h
102 libdummycl_noext_la_SOURCES = $(libdummycl_la_SOURCES)
103 nodist_libdummycl_noext_la_SOURCES = $(nodist_libdummycl_la_SOURCES)
104 libdummycl_noext_la_CPPFLAGS = $(AM_CPPFLAGS) -DICD_WITHOUT_EXTENSION
105 libdummycl2_la_SOURCES = $(libdummycl_la_SOURCES)
106 nodist_libdummycl2_la_SOURCES = $(nodist_libdummycl_la_SOURCES)
107 libdummycl2_la_CPPFLAGS = $(AM_CPPFLAGS) -DICD_SUFFIX=\"2\"
108
109 noinst_PROGRAMS=run_dummy_icd_through_our_ICDL
110 run_dummy_icd_through_our_ICDL_SOURCES = run_dummy_icd.c
111 nodist_run_dummy_icd_through_our_ICDL_SOURCES = \
112         run_dummy_icd_gen.c run_dummy_icd_weak_gen.c
113 # ignore the warning in OpenCL headers when using old interface
114 run_dummy_icd_through_our_ICDL_CFLAGS= $(NO_DEPRECATED_DECLARATIONS_FLAGS) $(AM_CFLAGS)
115 # we want to link to our implementation here
116 run_dummy_icd_through_our_ICDL_LDADD = libOpenCL.la
117 #
118 run_dummy_icd_through_our_ICDL_CPPFLAGS = $(AM_CPPFLAGS) -DOCL_ICD_PRINT_EXPECTED
119
120 ##################################################################
121 # rules to update the database from an already installed ICD Loader
122 if UPDATE_DATABASE
123
124 noinst_PROGRAMS += run_dummy_icd
125 run_dummy_icd_SOURCES = \
126         $(run_dummy_icd_through_our_ICDL_SOURCES)
127 nodist_run_dummy_icd_SOURCES = \
128         $(nodist_run_dummy_icd_through_our_ICDL_SOURCES)
129 run_dummy_icd_CFLAGS= \
130         $(run_dummy_icd_through_our_ICDL_CFLAGS)
131 # we do not want to link to our implementation here
132 run_dummy_icd_LDADD = -lOpenCL
133 run_dummy_icd_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
134
135 # run the test program and update the database
136 run_dummy_icd_output.yaml: run_dummy_icd install_test_lib libdummycl.la
137         "$$(dirname $<)/$$(basename $<)" > $@
138         @if grep -v -E '^(---|([0-9]* *: .*))$$' $@ ; then \
139                 echo "Invalid $@ file, trying to fix it" ; \
140                 grep -E '^(---|([0-9]* *: .*))$$' $@ > $@.fix ;\
141                 mv $@.fix $@ ;\
142         fi
143
144 CLEANFILES += run_dummy_output.yaml
145 .PHONY: update-database
146 update-database: icd_generator.rb run_dummy_icd_output.yaml
147         $(RUBY) $< --mode update-database \
148                 --database $(srcdir)/ocl_interface.yaml \
149                 --input run_dummy_icd_output.yaml
150
151 .PHONY: install_test_lib uninstall_test_lib
152 install_test_lib:
153         sudo bash -c 'echo "$(CURDIR)/.libs/libdummycl.so" > /etc/OpenCL/vendors/dummycl.icd'
154
155 uninstall_test_lib:
156         sudo rm -f /etc/OpenCL/vendors/dummycl.icd
157
158 else
159 .PHONY: update-database
160 update-database:
161         @echo You need to reconfigure this software with --enable-update-database
162         @exit 1
163 endif
164 ##################################################################