Updated cmake configuration including working NSIS packaging.
authorhobbes1069 <hobbes1069@01035d8c-6547-0410-b346-abe4f91aad63>
Wed, 22 Oct 2014 14:42:41 +0000 (14:42 +0000)
committerhobbes1069 <hobbes1069@01035d8c-6547-0410-b346-abe4f91aad63>
Wed, 22 Oct 2014 14:42:41 +0000 (14:42 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1906 01035d8c-6547-0410-b346-abe4f91aad63

codec2/CMakeLists.txt
codec2/cmake/GetDependencies.cmake.in [new file with mode: 0644]
codec2/cmake/codec2-config.cmake.in [new file with mode: 0644]
codec2/src/CMakeLists.txt
codec2/unittest/CMakeLists.txt

index 2dea8cdc138ef61cf869c32356754d06dbb5c125..bbc74a96580c7e7d935be97b6788a3b10ee5d066 100644 (file)
@@ -15,6 +15,7 @@ mark_as_advanced(CLEAR
     CMAKE_INSTALL_INCLUDEDIR
     CMAKE_INSTALL_LIBDIR
 )
+
 #
 # Prevent in-source builds
 # If an in-source build is attempted, you will still need to clean up a few
@@ -42,17 +43,24 @@ set(CODEC2_VERSION "${CODEC2_VERSION_MAJOR}.${CODEC2_VERSION_MINOR}")
 set(SOVERSION "${CODEC2_VERSION_MAJOR}.${CODEC2_VERSION_MINOR}")
 if(CODEC2_VERSION_PATCH)
     set(CODEC2_VERSION "${CODEC2_VERSION}.${CODEC2_VERSION_PATCH}")
-endif(CODEC2_VERSION_PATCH)
+endif()
 message(STATUS "codec2 version: ${CODEC2_VERSION}")
 
 # Set default build type
 if(NOT CMAKE_BUILD_TYPE)
     set(CMAKE_BUILD_TYPE "Release")
-endif(NOT CMAKE_BUILD_TYPE)
+endif()
 
 # Set default C++ flags.
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -Wall")
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -Wall")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
+
+# -fPIC is implied on MinGW...
+if(NOT WIN32)
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+endif()
+
 
 message(STATUS "Build type is: " ${CMAKE_BUILD_TYPE})
 message(STATUS "Compiler Flags: " ${CMAKE_CXX_FLAGS})
@@ -62,18 +70,6 @@ message(STATUS "Compiler Flags: " ${CMAKE_CXX_FLAGS})
 #
 if(MINGW)
     message(STATUS "System is MinGW.")
-    foreach(RUNTIME
-               gcc_s_sjlj-1
-               gcc_s_dw2-1
-               stdc++-6
-       )
-        message(STATUS "Checking for ${RUNTIME}")
-        find_library(${RUNTIME}_LIB ${RUNTIME})
-        message(STATUS "runtime found: ${${RUNTIME}_LIB}")
-               if(${${RUNTIME}_LIB}_FOUND)
-                       list(APPEND CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS ${${RUNTIME}_LIB})
-               endif()
-    endforeach()
 endif(MINGW)
 
 
@@ -93,7 +89,7 @@ endif(MINGW)
 
 #
 # Default options
-#a
+#
 option(BUILD_SHARED_LIBS
     "Build shared library. Set to OFF for static library." ON)
 option(UNITTEST "Build unittest binaries." OFF)
@@ -101,7 +97,7 @@ option(INSTALL_EXAMPLES "Install example code." OFF)
 if(INSTALL_EXAMPLES)
     install(DIRECTORY octave raw script voicing wav
         USE_SOURCE_PERMISSIONS
-        DESTINATION share/codec2)
+        DESTINATION ${CMAKE_INSTALL_DATADIR}/codec2)
 endif()
 
 
@@ -131,6 +127,14 @@ configure_file ("${PROJECT_SOURCE_DIR}/cmake/config.h.in"
                 "${PROJECT_BINARY_DIR}/config.h" )
 include_directories(${PROJECT_BINARY_DIR})
 
+# CMake Package setup
+include(CMakePackageConfigHelpers)
+configure_package_config_file(cmake/codec2-config.cmake.in
+    ${CMAKE_CURRENT_BINARY_DIR}/codec2-config.cmake
+    INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2
+    PATH_VARS CMAKE_INSTALL_INCLUDEDIR
+)
+
 #
 # codec2 library
 #
@@ -151,7 +155,10 @@ endif(UNITTEST)
 # distribution packaging tools.
 #
 if(WIN32)
-    include(InstallRequiredSystemLibraries)
+    configure_file(cmake/GetDependencies.cmake.in cmake/GetDependencies.cmake
+        @ONLY
+    )
+    install(SCRIPT ${CMAKE_BINARY_DIR}/cmake/GetDependencies.cmake)
     set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Next-Generation Digital Voice for Two-Way Radio")
     set(CPACK_PACKAGE_VENDOR "CMake")
     set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
@@ -160,12 +167,13 @@ if(WIN32)
     set(CPACK_PACKAGE_VERSION_MINOR ${CODEC2_VERSION_MINOR})
     if(CODEC2_VERSION_PATCH)
         set(CPACK_PACKAGE_VERSION_PATCH ${CODEC2_VERSION_PATCH})
-    else(CODEC2_VERSION_PATCH)
+    else()
         set(CPACK_PACKAGE_VERSION_PATCH 0)
-    endif(CODEC2_VERSION_PATCH)
+    endif()
     set(CPACK_PACKAGE_INSTALL_DIRECTORY "Codec2")
+    set(CPACK_CREATE_DESKTOP_LINKS "")
     set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_INSTALL_DIRECTORY}")
-    set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\codec2.org")
+    set(CPACK_NSIS_URL_INFO_ABOUT "http://codec2.org")
     set(CPACK_NSIS_MODIFY_PATH ON)
     include(CPack)
 endif(WIN32)
diff --git a/codec2/cmake/GetDependencies.cmake.in b/codec2/cmake/GetDependencies.cmake.in
new file mode 100644 (file)
index 0000000..067ad5e
--- /dev/null
@@ -0,0 +1,24 @@
+# As this script is run in a new cmake instance, it does not have access to
+# the existing cache variables. Pass them in via the configure_file command.
+set(CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@)
+set(CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@)
+set(UNIX @UNIX@)
+set(WIN32 @WIN32@)
+set(CMAKE_CROSSCOMPILING @CMAKE_CROSSCOMPILING@)
+set(CMAKE_FIND_LIBRARY_SUFFIXES @CMAKE_FIND_LIBRARY_SUFFIXES@)
+set(CMAKE_FIND_LIBRARY_PREFIXES @CMAKE_FIND_LIBRARY_PREFIXES@)
+set(CMAKE_SYSTEM_LIBRARY_PATH @CMAKE_SYSTEM_LIBRARY_PATH@)
+set(CMAKE_FIND_ROOT_PATH @CMAKE_FIND_ROOT_PATH@)
+set(CODEC2_DLL ${CMAKE_BINARY_DIR}/src/libcodec2.dll)
+
+include(GetPrerequisites)
+get_prerequisites(${CODEC2_DLL} _deps 1 1 "" "")
+foreach(_runtime ${_deps})
+    message("Looking for ${_runtime}")
+    find_library(RUNTIME_${_runtime} ${_runtime})
+    message("${RUNTIME_${_runtime}}")
+    if(RUNTIME_${_runtime})
+        file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/bin"
+        TYPE EXECUTABLE FILES "${RUNTIME_${_runtime}}")
+    endif()
+endforeach()
diff --git a/codec2/cmake/codec2-config.cmake.in b/codec2/cmake/codec2-config.cmake.in
new file mode 100644 (file)
index 0000000..db79a53
--- /dev/null
@@ -0,0 +1,5 @@
+set(CODEC2_VERSION ${CODEC2_VERSION})
+
+@PACKAGE_INIT@
+
+set_and_check(CODEC2_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@")
index 29405ad564b850a2053cff665a93c3bee1440f02..36ffc926d8a840364b9526b27f31888a1abf5be7 100644 (file)
@@ -82,8 +82,8 @@ set(CODEBOOKSGE ${D}/gecb.txt)
 
 # when crosscompiling import the executable targets from a file
 if(CMAKE_CROSSCOMPILING)
-    SET(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Point to the export file from a native build")
-    INCLUDE(${IMPORT_EXECUTABLES})
+    set(IMPORT_EXECUTABLES "IMPORTFILE-NOTFOUND" CACHE FILEPATH "Point to the export file from a native build")
+    include(${IMPORT_EXECUTABLES})
 else(CMAKE_CROSSCOMPILING)
 # Build code generator binaries. These do not get installed.
     # generate_codebook
@@ -184,21 +184,23 @@ set(CODEC2_SRCS
     golay23.c
 )
 
-add_library(codec2 ${CODEC2_SRCS})
-include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-target_link_libraries(codec2 ${CMAKE_REQUIRED_LIBRARIES})
-set_target_properties(codec2 PROPERTIES SOVERSION ${SOVERSION})
-
 set(CODEC2_PUBLIC_HEADERS
+    golay23.h
     codec2.h
     codec2_fdmdv.h
     codec2_fifo.h
     comp.h
-    golay23.h
 )
 
-install(FILES ${CODEC2_PUBLIC_HEADERS}
-    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/codec2
+#
+# Setup the codec2 library
+#
+add_library(codec2 ${CODEC2_SRCS})
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+target_link_libraries(codec2 ${CMAKE_REQUIRED_LIBRARIES})
+set_target_properties(codec2 PROPERTIES
+    SOVERSION ${SOVERSION}
+    PUBLIC_HEADER "${CODEC2_PUBLIC_HEADERS}"
 )
 
 add_executable(c2demo c2demo.c)
@@ -241,11 +243,12 @@ install(TARGETS codec2 EXPORT codec2-config
     LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
     ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+    PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/codec2
 )
 
-install(EXPORT codec2-config
-    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2
-)
+#install(EXPORT codec2-config
+#    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/codec2
+#)
 
 install(TARGETS
     c2demo
index fac25f93a2fd75084f3fe0ef53388d18ec2be0de..af72e13d554f59fdfbdf99d778cd2644ff394420 100644 (file)
@@ -81,4 +81,3 @@ target_link_libraries(raw2h codec2)
 add_definitions(-D__UNITTEST__)
 add_executable(c2validate c2validate.c)
 target_link_libraries(c2validate codec2)
-#c2validate_LDADD = $(lib_LTLIBRARIES) ../src/libcodec2.la