diff --git a/thirdparty/Makefile.inc b/thirdparty/Makefile.inc index 702cbc2da..f6e032fa7 100644 --- a/thirdparty/Makefile.inc +++ b/thirdparty/Makefile.inc @@ -1,12 +1,12 @@ -DEPS_CMAKE = libwebsockets criterion jansson +DEPS_CMAKE = libxil libwebsockets criterion jansson DEPS_AUTOCONF = libnl libconfig libcurl -DEPS = libxil $(DEPS_CMAKE) $(DEPS_AUTOCONF) +DEPS = $(DEPS_CMAKE) $(DEPS_AUTOCONF) .PHONY: $(DEPS) # Install all dependencies -thirdparty: $(DEPS) +thirdparty: libxil # Install & compile autotools based projects $(DEPS_AUTOCONF): | $(BUILDDIR)/thirdparty/$$@/ @@ -20,11 +20,6 @@ $(DEPS_CMAKE): | $(BUILDDIR)/thirdparty/$$@/ -B$(BUILDDIR)/thirdparty/$@ make -C$(BUILDDIR)/thirdparty/$@ install -# Install & compile Xilinx standalone drivers -libxil: | $(BUILDDIR)/thirdparty/$$@/ - make -C$(BUILDDIR)/thirdparty/$@ \ - -f$(SRCDIR)/thirdparty/$@/Makefile install - clean-thirdparty: for DEP in $(DEPS); do \ pushd $$DEP; \ diff --git a/thirdparty/libxil/CMakeLists.txt b/thirdparty/libxil/CMakeLists.txt new file mode 100644 index 000000000..f710497e5 --- /dev/null +++ b/thirdparty/libxil/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required (VERSION 3.2) + +project(libxil C) + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -fPIC -I$(SRCDIR)/include/xilinx -Iorig/common_v1_00_a/src -Wno-int-conversion -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast") + +file(GLOB SOURCES src/*.c orig/*/src/*.c) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include/xilinx) + +add_library(xil SHARED ${SOURCES}) + +include(FindPkgConfig QUIET) +if(PKG_CONFIG_FOUND) + # convert lists of link libraries into -lstdc++ -lm etc.. + foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS}) + set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}") + endforeach() + + # Produce a pkg-config file for linking against the shared lib + configure_file("libxil.pc.in" "libxil.pc" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libxil.pc" DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") +endif() + +install(TARGETS xil DESTINATION lib) + +file(GLOB HEADERS include/xilinx/*.h) + +# Make sure we dont install symlinks +set (HEADERS_RESOLVED "") +foreach (HEADER ${HEADERS}) + get_filename_component(HEADER_RESOLVED "${HEADER}" REALPATH) + list (APPEND HEADERS_RESOLVED "${HEADER_RESOLVED}") +endforeach() + +install(FILES ${HEADERS_RESOLVED} DESTINATION include/xilinx) \ No newline at end of file diff --git a/thirdparty/libxil/Makefile b/thirdparty/libxil/Makefile deleted file mode 100644 index ad8ff1af4..000000000 --- a/thirdparty/libxil/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -LIB = libxil.so - -PREFIX ?= /usr/local - -SRCDIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) - -VPATH = $(SRCDIR) - -SRCS = $(wildcard $(SRCDIR)/src/*.c) -SRCS += $(wildcard $(SRCDIR)/orig/*/src/*.c) -OBJS = $(SRCS:$(SRCDIR)/%.c=%.o) - -CC = gcc -CFLAGS = -O3 -fPIC -I$(SRCDIR)/include/xilinx -Iorig/common_v1_00_a/src -Wno-int-conversion -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast - -ifdef DEBUG - CFLAGS += -DDEBUG -DXDEBUG_WARNING -g -endif - -all: $(LIB) - -$(LIB): $(OBJS) - $(CC) -shared -o $@ $^ - -clean: - rm -f $(LIB) $(OBJS) - -install: $(LIB) - mkdir -p $(PREFIX)/include/xilinx - install -m 0644 $(LIB) $(PREFIX)/lib - install -m 0644 $(SRCDIR)/include/xilinx/*.h $(PREFIX)/include/xilinx - @echo "note: you may need to run 'ldconfig'" - @echo "note: make sure $(PREFIX)/lib is in your /etc/ld.so.conf or $$LD_LIBRARY_PATH" - -.SECONDEXPANSION: - -$(OBJS): | $$(dir $$@) - -%/: - mkdir -p $@ \ No newline at end of file diff --git a/thirdparty/libxil/libxil.pc.in b/thirdparty/libxil/libxil.pc.in new file mode 100644 index 000000000..5f98b236a --- /dev/null +++ b/thirdparty/libxil/libxil.pc.in @@ -0,0 +1,10 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib + +Name: xil +Description: Xilinx standalone drivers +Version: 1.0.0 +Cflags: -I${includedir} +Libs: -L${libdir} -lxil \ No newline at end of file