Skip to content

Commit

Permalink
Issue zeromq#58: FileMQ uses deprecated CZMQ API's
Browse files Browse the repository at this point in the history
Problem: FileMQ is way out of date and is using a lot of deprecated
CZMQ API's. The original FileMQ was also the basis for the zproto
and zproject projects.

Solution: Recreate FileMQ based on the zproto and zproject.
  • Loading branch information
danriegsecker committed Dec 10, 2014
1 parent 482797b commit e483aeb
Show file tree
Hide file tree
Showing 87 changed files with 7,972 additions and 9,432 deletions.
93 changes: 68 additions & 25 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,47 @@
INSTALL
# Object files
*.o
*.ko
*.obj
*.elf

# Precompiled Headers
*.gch
*.pch

# Libraries
*.lib
*.a
*.la
*.lo
*.pc

# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib

# Executables
filemq_selftest
filemq_server
filemq_client
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex

# Man pages
doc/*.1
doc/*.3
doc/*.7

# autoconf files
.deps
.libs
*.log
*.trs
Makefile
Makefile.in
aclocal.m4
Expand All @@ -7,34 +50,34 @@ config.log
config.status
config/
configure
doc/Makefile
doc/Makefile.in
doc/filemq.1
doc/*.3
libtool
src/.deps/
src/Makefile
src/Makefile.in
src/libfmq.pc
src/platform.h
src/platform.h.in
src/platform.h.in~
src/stamp-h1
.libs/
*.o
*.lo
*.la
*.lst
track
core
fmq_selftest
src/fmqroot/send/*
src/fmqroot/recv/*
src/fmqroot/logs/*
.cache
mymusic
testit
src/fmq_selftest.log
src/fmq_selftest.trs
src/test-suite.log
src/.dirstamp

# qt-android build results
builds/qt-android/prefix

# Android - generated directories
src/app/bin/
src/app/gen/
src/app/obj/
src/app/local.properties

# Android -dependencies
builds/android/libsodium
builds/android/libzmq
builds/android/czmq
builds/android/e2fsprogs
builds/android/zyre
src/app/jni/output

# Additionals
*.swp
*.dirstamp
*.xml.swp
*.c.swp
*.h.swp
39 changes: 6 additions & 33 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,36 +1,9 @@
# FileMQ

# Travis CI script
language: c

# Build required ZeroMQ projects first
before_script:

# libsodium
- git clone git://github.com/jedisct1/libsodium.git
- cd libsodium
- ./autogen.sh
- ./configure && make check
- sudo make install
- sudo ldconfig
- cd ..

# libzmq
- git clone git://github.com/zeromq/libzmq.git
- cd libzmq
- ./autogen.sh
- ./configure && make check
- sudo make install
- sudo ldconfig
- cd ..

# CZMQ
- git clone git://github.com/zeromq/czmq.git
- cd czmq
- ./autogen.sh
- ./configure && make check
- sudo make install
- sudo ldconfig
- cd ..
env:
- BUILD_TYPE=default
- BUILD_TYPE=qt-android

# Build and check libfmq
script: ./autogen.sh && ./configure && make && make check
# Build and check this project according to the BUILD_TYPE
script: ./ci_build.sh
157 changes: 157 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
################################################################################
# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
# Please refer to the README for information about making permanent changes. #
################################################################################

########################################################################
# Project setup
########################################################################
cmake_minimum_required(VERSION 2.8)
project(filemq)
enable_language(C)
enable_testing()

set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})

########################################################################
# determine version
########################################################################
foreach(which MAJOR MINOR PATCH)
file(STRINGS "${SOURCE_DIR}/include/filemq_library.h" FILEMQ_VERSION_STRING REGEX "#define FILEMQ_VERSION_${which}")
string(REGEX MATCH "#define FILEMQ_VERSION_${which} ([0-9_]+)" FILEMQ_REGEX_MATCH "${FILEMQ_VERSION_STRING}")
if (NOT FILEMQ_REGEX_MATCH)
message(FATAL_ERROR "failed to parse FILEMQ_VERSION_${which} from filemq.h")
endif()
set(FILEMQ_${which}_VERSION ${CMAKE_MATCH_1})
endforeach(which)

set(FILEMQ_VERSION ${FILEMQ_MAJOR_VERSION}.${FILEMQ_MINOR_VERSION}.${FILEMQ_PATCH_VERSION})

########################################################################
# platform.h
########################################################################
include(CheckIncludeFile)
CHECK_INCLUDE_FILE("linux/wireless.h" HAVE_LINUX_WIRELESS_H)
CHECK_INCLUDE_FILE("net/if_media.h" HAVE_NET_IF_MEDIA_H)

include(CheckFunctionExists)
CHECK_FUNCTION_EXISTS("getifaddrs" HAVE_GETIFADDRS)
CHECK_FUNCTION_EXISTS("freeifaddrs" HAVE_FREEIFADDRS)

include(CheckIncludeFiles)
check_include_files("sys/socket.h;net/if.h" HAVE_NET_IF_H)
if (NOT HAVE_NET_IF_H)
CHECK_INCLUDE_FILE("net/if.h" HAVE_NET_IF_H)
endif()

file(WRITE ${BINARY_DIR}/platform.h.in "
#cmakedefine HAVE_LINUX_WIRELESS_H
#cmakedefine HAVE_NET_IF_H
#cmakedefine HAVE_NET_IF_MEDIA_H
#cmakedefine HAVE_GETIFADDRS
#cmakedefine HAVE_FREEIFADDRS
")

configure_file(${BINARY_DIR}/platform.h.in ${BINARY_DIR}/platform.h)

#The MSVC C compiler is too out of date,
#so the sources have to be compiled as c++
if (MSVC)
enable_language(CXX)
file(GLOB sources ${SOURCE_DIR}/src/*.c)
set_source_files_properties(${sources} PROPERTIES LANGUAGE CXX)
set(MORE_LIBRARIES ws2_32 Rpcrt4 Iphlpapi)
endif()

# required libraries for mingw
if (MINGW)
set(MORE_LIBRARIES -lws2_32 -lrpcrt4 -liphlpapi)
endif()


list(APPEND CMAKE_MODULE_PATH ${SOURCE_DIR})

########################################################################
# ZMQ dependency
########################################################################
find_package(ZeroMQ REQUIRED)
include_directories(${ZEROMQ_INCLUDE_DIRS})
list(APPEND MORE_LIBRARIES ${ZEROMQ_LIBRARIES})

########################################################################
# CZMQ dependency
########################################################################
find_package(CZMQ REQUIRED)
include_directories(${CZMQ_INCLUDE_DIRS})
list(APPEND MORE_LIBRARIES ${CZMQ_LIBRARIES})

########################################################################
# includes
########################################################################
set (filemq_headers
include/filemq_library.h
include/filemq.h
include/fmq_msg.h
include/fmq_server.h
include/fmq_client.h
)
source_group ("Header Files" FILES ${filemq_headers})
install(FILES ${filemq_headers} DESTINATION include)

########################################################################
# library
########################################################################
include_directories(${BINARY_DIR})
include_directories(${SOURCE_DIR}/include)
set (filemq_sources
src/fmq_msg.c
src/fmq_server.c
src/fmq_client.c
)
source_group ("Source Files" FILES ${filemq_sources})
add_library(filemq SHARED ${filemq_sources})
set_target_properties(filemq PROPERTIES DEFINE_SYMBOL "LIBFILEMQ_EXPORTS")
target_link_libraries(filemq ${ZEROMQ_LIBRARIES} ${MORE_LIBRARIES})

install(TARGETS filemq
LIBRARY DESTINATION lib${LIB_SUFFIX} # .so file
ARCHIVE DESTINATION lib${LIB_SUFFIX} # .lib file
RUNTIME DESTINATION bin # .dll file
)

########################################################################
# pkgconfig
########################################################################
set(VERSION "${FILEMQ_VERSION}")
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "\${prefix}")
set(libdir "\${prefix}/lib${LIB_SUFFIX}")
set(includedir "\${prefix}/include")
configure_file(
${SOURCE_DIR}/src/libfilemq.pc.in
${BINARY_DIR}/libfilemq.pc
@ONLY)

install(
FILES ${BINARY_DIR}/libfilemq.pc
DESTINATION lib${LIB_SUFFIX}/pkgconfig
)

########################################################################
# tests
########################################################################
add_executable(filemq_selftest ${SOURCE_DIR}/src/filemq_selftest.c)
target_link_libraries(filemq_selftest filemq ${ZEROMQ_LIBRARIES})
add_test(filemq_selftest filemq_selftest)

########################################################################
# summary
########################################################################
message(STATUS "version: ${FILEMQ_VERSION}")
message(STATUS "install: ${CMAKE_INSTALL_PREFIX}")

################################################################################
# THIS FILE IS 100% GENERATED BY ZPROJECT; DO NOT EDIT EXCEPT EXPERIMENTALLY #
# Please refer to the README for information about making permanent changes. #
################################################################################
Loading

0 comments on commit e483aeb

Please sign in to comment.