From: Rick Barenthin <dunst0@gmail.com>
Date: Wed, 4 Oct 2017 22:18:56 +0200
Subject: [PATCH] cmake fixes: fixed some cmake files and make Python optinol
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a2114fe..5e225967 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,6 +45,7 @@ OPTION(SEMS_USE_TTS "Build with Text-to-speech support (requires Flite
OPTION(SEMS_USE_OPENSSL "Build with OpenSSL" OFF)
OPTION(SEMS_USE_MONITORING "Build with monitoring support" OFF)
OPTION(SEMS_USE_IPV6 "Build with IPv6 support" OFF)
+OPTION(SEMS_USE_PYTHON "Build with Python modules" ON)
# Fix weird static libs handling in old CMake
IF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STREQUAL "2.4")
@@ -53,8 +54,14 @@ ELSE (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STREQUAL "2.4")
SET(SEMS_WORKAROUND_FOR_OLD_CMAKE_2_4_FOR_STATIC_LIBS OFF)
ENDIF (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STREQUAL "2.4")
-# add -lm and -lpthread to all targets
-SET(CMAKE_DL_LIBS ${CMAKE_DL_LIBS} m pthread)
+# add -lm and -lpthread / -lthr to all targets
+
+SET(CMAKE_DL_LIBS ${CMAKE_DL_LIBS} m)
+IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ SET(CMAKE_DL_LIBS ${CMAKE_DL_LIBS} thr)
+ELSE(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ SET(CMAKE_DL_LIBS ${CMAKE_DL_LIBS} pthread)
+ENDIF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
IF (NOT SEMS_CFG_PREFIX)
SET(SEMS_CFG_PREFIX "")
@@ -191,23 +198,27 @@ ELSE(SEMS_USE_OPENSSL)
ENDIF(SEMS_USE_OPENSSL)
# Let's try to find Python development files
-FIND_PACKAGE(PythonLibs)
-IF(PYTHONLIBS_FOUND OR PYTHON_LIBRARIES)
- SET(PYTHONLIBS_FOUND TRUE)
- MESSAGE(STATUS "Found Python includes: ${PYTHON_INCLUDE_PATH}/Python.h")
- MESSAGE(STATUS "Found Python library: ${PYTHON_LIBRARIES}")
- MESSAGE(STATUS "Using Python: YES")
-ELSE(PYTHONLIBS_FOUND OR PYTHON_LIBRARIES)
- MESSAGE(STATUS "Using Python: NO")
-ENDIF(PYTHONLIBS_FOUND OR PYTHON_LIBRARIES)
-
-# Let's try to find SIP (Python bindings generator) development files
-FIND_PACKAGE(SIP)
-IF(SIP_FOUND)
- MESSAGE(STATUS "Using SIP: YES")
-ELSE(SIP_FOUND)
- MESSAGE(STATUS "Using SIP: NO")
-ENDIF(SIP_FOUND)
+IF(SEMS_USE_PYTHON)
+ FIND_PACKAGE(PythonLibs)
+ IF(PYTHONLIBS_FOUND OR PYTHON_LIBRARIES)
+ SET(PYTHONLIBS_FOUND TRUE)
+ MESSAGE(STATUS "Found Python includes: ${PYTHON_INCLUDE_PATH}/Python.h")
+ MESSAGE(STATUS "Found Python library: ${PYTHON_LIBRARIES}")
+ MESSAGE(STATUS "Using Python: YES")
+ ELSE(PYTHONLIBS_FOUND OR PYTHON_LIBRARIES)
+ MESSAGE(STATUS "Using Python: NO")
+ ENDIF(PYTHONLIBS_FOUND OR PYTHON_LIBRARIES)
+
+ # Let's try to find SIP (Python bindings generator) development files
+ FIND_PACKAGE(SIP)
+ IF(SIP_FOUND)
+ MESSAGE(STATUS "Using SIP: YES")
+ ELSE(SIP_FOUND)
+ MESSAGE(STATUS "Using SIP: NO")
+ ENDIF(SIP_FOUND)
+ELSE(SEMS_USE_PYTHON)
+ MESSAGE(STATUS "Using Python modules: NO (default)")
+ENDIF(SEMS_USE_PYTHON)
# Let's try to find MySQL++ development files
FIND_PACKAGE(MySQLpp)
@@ -263,13 +274,21 @@ INCLUDE_DIRECTORIES (${SEMS_SOURCE_DIR}/core)
CONFIGURE_FILE( ${SEMS_SOURCE_DIR}/core/sems.h.cmake ${SEMS_SOURCE_DIR}/core/sems.h )
IF(CMAKE_COMPILER_IS_GNUCC)
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_THREAD_SAFE -D_REENTRANT -Wall -fPIC -g -O2")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_THREAD_SAFE -D_REENTRANT -Wall -fPIC -O2")
ENDIF(CMAKE_COMPILER_IS_GNUCC)
IF(CMAKE_COMPILER_IS_GNUCXX)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_THREAD_SAFE -D_REENTRANT -Wall -Wno-reorder -fPIC -std=c++11 -g -O2")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_THREAD_SAFE -D_REENTRANT -Wall -fPIC -std=c++11 -O2")
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_THREAD_SAFE -D_REENTRANT -Wall -std=c++11 -O2")
+ENDIF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+
+IF("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_THREAD_SAFE -D_REENTRANT -Wall -O2")
+ENDIF("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
diff --git a/apps/diameter_client/lib_dbase/CMakeLists.txt b/apps/diameter_client/lib_dbase/CMakeLists.txt
index 5725461b..c8efdb86 100644
--- a/apps/diameter_client/lib_dbase/CMakeLists.txt
+++ b/apps/diameter_client/lib_dbase/CMakeLists.txt
@@ -9,6 +9,7 @@ IF(OPENSSL_FOUND)
ENDIF(OPENSSL_FOUND)
ADD_LIBRARY(libdbase STATIC ${libdbase_SRCS})
+SET_PROPERTY(TARGET libdbase PROPERTY POSITION_INDEPENDENT_CODE ON)
# FIXME
IF(SEMS_WORKAROUND_FOR_OLD_CMAKE_2_4_FOR_STATIC_LIBS)
diff --git a/apps/sbc/CMakeLists.txt b/apps/sbc/CMakeLists.txt
index 3d21b003..b0383095 100644
--- a/apps/sbc/CMakeLists.txt
+++ b/apps/sbc/CMakeLists.txt
@@ -1,5 +1,8 @@
FILE (GLOB sbc_SRCS "*.cpp")
+ADD_SUBDIRECTORY (call_control)
+
+SET(sems_module_name sbc)
SET(sbc_config_files
auth_b2b.sbcprofile
call_timer.sbcprofile
@@ -28,5 +31,4 @@ tools/sems-sbc-teardown-call
DESTINATION ${SEMS_EXEC_PREFIX}/sbin
)
-SET(sems_module_name sbc)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt)
diff --git a/apps/sbc/call_control/CMakeLists.txt b/apps/sbc/call_control/CMakeLists.txt
new file mode 100644
index 00000000..0b292c72
--- /dev/null
+++ b/apps/sbc/call_control/CMakeLists.txt
@@ -0,0 +1,11 @@
+#ADD_SUBDIRECTORY (bl_redis)
+ADD_SUBDIRECTORY (call_timer)
+#ADD_SUBDIRECTORY (ctl)
+#ADD_SUBDIRECTORY (dsm)
+ADD_SUBDIRECTORY (parallel_calls)
+#ADD_SUBDIRECTORY (prepaid)
+#ADD_SUBDIRECTORY (prepaid_xmlrpc)
+#ADD_SUBDIRECTORY (register)
+#ADD_SUBDIRECTORY (rest)
+#ADD_SUBDIRECTORY (syslog_cdr)
+ADD_SUBDIRECTORY (template)
diff --git a/apps/sbc/call_control/call_timer/CMakeLists.txt b/apps/sbc/call_control/call_timer/CMakeLists.txt
new file mode 100644
index 00000000..d7cd3d8c
--- /dev/null
+++ b/apps/sbc/call_control/call_timer/CMakeLists.txt
@@ -0,0 +1,6 @@
+set (cc_call_timer_SRCS
+CallTimer.cpp
+)
+
+SET(sems_sbc_call_control_name cc_call_timer)
+INCLUDE(${CMAKE_SOURCE_DIR}/cmake/sbc.call_control.rules.txt)
diff --git a/apps/sbc/call_control/parallel_calls/CMakeLists.txt b/apps/sbc/call_control/parallel_calls/CMakeLists.txt
new file mode 100644
index 00000000..c57d4c2d
--- /dev/null
+++ b/apps/sbc/call_control/parallel_calls/CMakeLists.txt
@@ -0,0 +1,6 @@
+set (cc_parallel_calls_SRCS
+CCParallelCalls.cpp
+)
+
+SET(sems_sbc_call_control_name cc_parallel_calls)
+INCLUDE(${CMAKE_SOURCE_DIR}/cmake/sbc.call_control.rules.txt)
diff --git a/apps/sbc/call_control/template/CMakeLists.txt b/apps/sbc/call_control/template/CMakeLists.txt
new file mode 100644
index 00000000..a6eb6a9a
--- /dev/null
+++ b/apps/sbc/call_control/template/CMakeLists.txt
@@ -0,0 +1,6 @@
+set (cc_template_SRCS
+CCTemplate.cpp
+)
+
+SET(sems_sbc_call_control_name cc_template)
+INCLUDE(${CMAKE_SOURCE_DIR}/cmake/sbc.call_control.rules.txt)
diff --git a/apps/xmlrpc2di/xmlrpc++/src/CMakeLists.txt b/apps/xmlrpc2di/xmlrpc++/src/CMakeLists.txt
index 5a43e508..99882fdf 100644
--- a/apps/xmlrpc2di/xmlrpc++/src/CMakeLists.txt
+++ b/apps/xmlrpc2di/xmlrpc++/src/CMakeLists.txt
@@ -19,6 +19,7 @@ XmlRpcValue.cpp
# Solaris: -lsocket -lnsl
ADD_LIBRARY(xmlrpcpp STATIC ${xmlrpcpp_SRCS})
+SET_PROPERTY(TARGET xmlrpcpp PROPERTY POSITION_INDEPENDENT_CODE ON)
# FIXME
IF(SEMS_WORKAROUND_FOR_OLD_CMAKE_2_4_FOR_STATIC_LIBS)
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index 81609920..fddeff94 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -13,7 +13,12 @@ INCLUDE_DIRECTORIES (amci)
ADD_EXECUTABLE (sems ${sems_SRCS})
TARGET_LINK_LIBRARIES(sems ${CMAKE_DL_LIBS} stdc++ resolv)
-TARGET_LINK_LIBRARIES(sems ${CMAKE_DL_LIBS} event event_pthreads)
+IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ TARGET_LINK_LIBRARIES(sems execinfo)
+ELSE(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ TARGET_LINK_LIBRARIES(sems resolv)
+ENDIF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+TARGET_LINK_LIBRARIES(sems ${CMAKE_DL_LIBS} event event_pthreads -rdynamic)
IF(SPANDSP_FOUND)
TARGET_LINK_LIBRARIES(sems ${CMAKE_DL_LIBS} spandsp)
diff --git a/core/plug-in/ilbc/iLBC_rfc3951/CMakeLists.txt b/core/plug-in/ilbc/iLBC_rfc3951/CMakeLists.txt
index d3c79833..616b3314 100644
--- a/core/plug-in/ilbc/iLBC_rfc3951/CMakeLists.txt
+++ b/core/plug-in/ilbc/iLBC_rfc3951/CMakeLists.txt
@@ -25,6 +25,7 @@ syntFilter.c
)
ADD_LIBRARY(libilbc STATIC ${ilbc_SRCS})
+SET_PROPERTY(TARGET libilbc PROPERTY POSITION_INDEPENDENT_CODE ON)
# FIXME
IF(SEMS_WORKAROUND_FOR_OLD_CMAKE_2_4_FOR_STATIC_LIBS)