Revision: 69989
          http://sourceforge.net/p/brlcad/code/69989
Author:   starseeker
Date:     2017-07-24 16:47:23 +0000 (Mon, 24 Jul 2017)
Log Message:
-----------
Set up to build some form of libbrlcad.  Static build completes, but shared 
isn't happy.  Also need to figure out what to do about src/other requirements 
with respect to bundling these bundling libraries.

Modified Paths:
--------------
    brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake
    brlcad/trunk/src/CMakeLists.txt
    brlcad/trunk/src/libfft/CMakeLists.txt

Modified: brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake
===================================================================
--- brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake        2017-07-22 18:36:50 UTC 
(rev 69988)
+++ brlcad/trunk/misc/CMake/BRLCAD_Targets.cmake        2017-07-24 16:47:23 UTC 
(rev 69989)
@@ -383,39 +383,32 @@
   GET_FLAGS_AND_DEFINITIONS(${libname} "${libslist}" NO_DLL CFLAGS L_C_FLAGS 
CXXFLAGS L_CXX_FLAGS DEFINES L_GENERAL_DEFINES)
   SET_FLAGS_AND_DEFINITIONS("${srcslist};${L_SHARED_SRCS};${L_STATIC_SRCS}" 
CFLAGS "${L_C_FLAGS}" CXXFLAGS "${L_CXX_FLAGS}" DEFINES "${L_GENERAL_DEFINES}")
 
+  # Local copy of srcslist in case manipulation is needed
+    set(lsrcslist ${srcslist})
+
   # If we're going to have a specified subfolder, prepare the appropriate 
string:
   if(L_FOLDER)
     set(SUBFOLDER "/${L_FOLDER}")
   endif(L_FOLDER)
 
-  # Based on the options, define libraries as either stand-alone builds
-  # or dependencies on OBJECT library builds
-  if(NOT USE_OBJECT_LIBS OR L_SHARED_SRCS OR L_STATIC_SRCS)
-    if(BUILD_SHARED_LIBS OR L_SHARED)
-      add_library(${libname} SHARED ${srcslist} ${L_SHARED_SRCS})
-      GET_FLAGS_AND_DEFINITIONS(${libname} "${libslist}" ONLY_DLL DEFINES 
L_DLL_DEFINES)
-      foreach(dll_define ${L_DLL_DEFINES})
-       set_property(TARGET ${libname} APPEND PROPERTY COMPILE_DEFINITIONS 
"${dll_define}")
-      endforeach(dll_define ${L_DLL_DEFINES})
-    endif(BUILD_SHARED_LIBS OR L_SHARED)
-    if(BUILD_STATIC_LIBS OR L_STATIC)
-      add_library(${libname}-static STATIC ${srcslist} ${L_STATIC_SRCS})
-    endif(BUILD_STATIC_LIBS OR L_STATIC)
-  else(NOT USE_OBJECT_LIBS OR L_SHARED_SRCS OR L_STATIC_SRCS)
-    add_library(${libname}-obj OBJECT ${srcslist})
+  # If we need it, set up the OBJECT library build
+  if(USE_OBJECT_LIBS)
+    add_library(${libname}-obj OBJECT ${lsrcslist})
+    set(lsrcslist $<TARGET_OBJECTS:${libname}-obj>)
     set_target_properties(${libname}-obj PROPERTIES FOLDER "BRL-CAD OBJECT 
Libraries${SUBFOLDER}")
-    if(BUILD_SHARED_LIBS OR L_SHARED)
-      add_library(${libname} SHARED $<TARGET_OBJECTS:${libname}-obj>)
-      GET_FLAGS_AND_DEFINITIONS(${libname} "${libslist}" ONLY_DLL DEFINES 
L_DLL_DEFINES)
-      foreach(dll_define ${L_DLL_DEFINES})
-       set_property(TARGET ${libname} APPEND PROPERTY COMPILE_DEFINITIONS 
"${dll_define}")
-      endforeach(dll_define ${L_DLL_DEFINES})
-    endif(BUILD_SHARED_LIBS OR L_SHARED)
-    if(BUILD_STATIC_LIBS OR L_STATIC)
-      add_library(${libname}-static STATIC $<TARGET_OBJECTS:${libname}-obj>)
-    endif(BUILD_STATIC_LIBS OR L_STATIC)
-  endif(NOT USE_OBJECT_LIBS OR L_SHARED_SRCS OR L_STATIC_SRCS)
+  endif(USE_OBJECT_LIBS)
 
+  if(BUILD_SHARED_LIBS)
+    add_library(${libname} SHARED ${lsrcslist}  ${L_SHARED_SRCS})
+    GET_FLAGS_AND_DEFINITIONS(${libname} "${libslist}" ONLY_DLL DEFINES 
L_DLL_DEFINES)
+    foreach(dll_define ${L_DLL_DEFINES})
+      set_property(TARGET ${libname} APPEND PROPERTY COMPILE_DEFINITIONS 
"${dll_define}")
+    endforeach(dll_define ${L_DLL_DEFINES})
+  endif(BUILD_SHARED_LIBS)
+  if(BUILD_STATIC_LIBS)
+    add_library(${libname}-static STATIC ${lsrcslist} ${L_STATIC_SRCS})
+  endif(BUILD_STATIC_LIBS)
+
   # Make sure we don't end up with outputs named liblib...
   set(possible_targets ${libname} ${libname}-static)
   foreach(pt ${possible_targets})

Modified: brlcad/trunk/src/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/CMakeLists.txt     2017-07-22 18:36:50 UTC (rev 69988)
+++ brlcad/trunk/src/CMakeLists.txt     2017-07-24 16:47:23 UTC (rev 69989)
@@ -66,7 +66,7 @@
 # Level 3 directories contain BRL-CAD's executables.  Setting
 # the BRLCAD_ENABLE_TARGETS level to 3 will enable all programs.
 
-# FIXME: Ideally these should all be in the above list,
+# FIXME: Ideally these should all be in the below list,
 # need to fix them on Windows.
 if(NOT WIN32)
   set(non_win32_dirs remrt rttherm)
@@ -147,22 +147,27 @@
   endforeach(subdir ${level_${current_level}_dirs})
 endwhile(${current_level} LESS ${HIGHEST_TARGET_LEVEL})
 
-# This corresponds roughly to the libbrlcad definition in
-# the autotools build.  It needs CMake 2.8.8 plus changes
-# to the BRLCAD_ADDLIB macro to define OBJECT add_library
-# targets, and is commented out for now, but this is the
-# starting point for a "proper" libbrlcad
-#if(${HIGHEST_TARGET_LEVEL} GREATER 1)
-#  add_library(libbrlcad STATIC
-#    $<TARGET_OBJECTS:libbu_OBJECTS>
-#    $<TARGET_OBJECTS:libbn_OBJECTS>
-#    $<TARGET_OBJECTS:librt_OBJECTS>
-#    $<TARGET_OBJECTS:libwdb_OBJECTS>
-#    $<TARGET_OBJECTS:libicv_OBJECTS>
-#    $<TARGET_OBJECTS:libged_OBJECTS>
-#    )
-#  target_link_libraries(libbrlcad ${OPENNURBS_LIBRARIES} ${TCL_LIBRARY})
-#endif(${HIGHEST_TARGET_LEVEL} GREATER 1)
+# This corresponds roughly to the libbrlcad originally defined in BRL-CAD
+# autotools build.
+if(BRLCAD_BUILD_LIBBRLCAD AND USE_OBJECT_LIBS)
+  set(current_level 1)
+  while(${current_level} LESS ${HIGHEST_TARGET_LEVEL})
+    set(wl 1)
+    math(EXPR cml "${current_level} + 1")
+    while(${wl} LESS ${cml})
+      message("libs: ${level_${wl}_dirs}")
+      foreach(llib ${level_${wl}_dirs})
+       if(TARGET ${llib})
+         set(libbrlcad_objs ${libbrlcad_objs} $<TARGET_OBJECTS:${llib}-obj>)
+       endif(TARGET ${llib})
+      endforeach(llib ${level_${wl}_dirs})
+      math(EXPR wl "${wl} + 1")
+    endwhile(${wl} LESS ${cml})
+    add_library(libbrlcad-shared-${current_level} SHARED ${libbrlcad_objs})
+    add_library(libbrlcad-static-${current_level} STATIC ${libbrlcad_objs})
+    math(EXPR current_level "${current_level} + 1")
+  endwhile(${current_level} LESS ${HIGHEST_TARGET_LEVEL})
+endif(BRLCAD_BUILD_LIBBRLCAD AND USE_OBJECT_LIBS)
 
 CMAKEFILES(README)
 
@@ -171,11 +176,9 @@
 # so it can be used for experimentation that needs to be
 # part of the build but the dev doesn't want to accidentally
 # commit.
-if(NOT BRLCAD_ENABLE_TARGETS OR "${BRLCAD_ENABLE_TARGETS}" GREATER 2)
-  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/testing)
-    add_subdirectory(testing)
-  endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/testing)
-endif(NOT BRLCAD_ENABLE_TARGETS OR "${BRLCAD_ENABLE_TARGETS}" GREATER 2)
+if("${BRLCAD_ENABLE_TARGETS}" GREATER 2 AND EXISTS 
${CMAKE_CURRENT_SOURCE_DIR}/testing)
+  add_subdirectory(testing)
+endif("${BRLCAD_ENABLE_TARGETS}" GREATER 2 AND EXISTS 
${CMAKE_CURRENT_SOURCE_DIR}/testing)
 
 
 # Local Variables:

Modified: brlcad/trunk/src/libfft/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libfft/CMakeLists.txt      2017-07-22 18:36:50 UTC (rev 
69988)
+++ brlcad/trunk/src/libfft/CMakeLists.txt      2017-07-24 16:47:23 UTC (rev 
69989)
@@ -17,49 +17,46 @@
 SetTargetFolder(ifftc "Compilation Utilities")
 target_link_libraries(ifftc ${M_LIBRARY})
 
+# We need to generate some of libfft's source files
+function(fft_gen numlist targetdir outfiles)
+  file(MAKE_DIRECTORY "${targetdir}")
+  foreach(filenum ${numlist})
+    add_custom_command(
+      OUTPUT ${targetdir}/rfft${filenum}.c
+      COMMAND fftc ${filenum} > ${targetdir}/rfft${filenum}.c
+      DEPENDS fftc
+      )
+    set(output_files "${output_files};${targetdir}/rfft${filenum}.c")
+    add_custom_command(
+      OUTPUT ${targetdir}/irfft${filenum}.c
+      COMMAND ifftc ${filenum} > ${targetdir}/irfft${filenum}.c
+      DEPENDS ifftc
+      )
+    set(output_files "${output_files};${targetdir}/irfft${filenum}.c")
+  endforeach(filenum ${FFT_NUMLIST})
+  set(${outfiles} "${output_files}" PARENT_SCOPE)
+endfunction(fft_gen numlist targetdir outfiles)
+
 # 512 and 1024 are tough in optimized compiles, don't
 # go that high until there's a demonstrated need. Only
 # use in BRL-CAD right now is 256.
 set(FFT_NUMLIST "16;32;64;128;256")
-set(FFT_GEN_SHARED_SRCS "")
-set(FFT_GEN_STATIC_SRCS "")
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/shared")
-file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/static")
 
-foreach(filenum ${FFT_NUMLIST})
-  add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/shared/rfft${filenum}.c
-    COMMAND fftc ${filenum} > 
${CMAKE_CURRENT_BINARY_DIR}/shared/rfft${filenum}.c
-    DEPENDS fftc
-    )
-  set(FFT_GEN_SHARED_SRCS 
"${FFT_GEN_SHARED_SRCS};${CMAKE_CURRENT_BINARY_DIR}/shared/rfft${filenum}.c")
-  add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/shared/irfft${filenum}.c
-    COMMAND ifftc ${filenum} > 
${CMAKE_CURRENT_BINARY_DIR}/shared/irfft${filenum}.c
-    DEPENDS ifftc
-    )
-  set(FFT_GEN_SHARED_SRCS 
"${FFT_GEN_SHARED_SRCS};${CMAKE_CURRENT_BINARY_DIR}/shared/irfft${filenum}.c")
-  add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/static/rfft${filenum}.c
-    COMMAND fftc ${filenum} > 
${CMAKE_CURRENT_BINARY_DIR}/static/rfft${filenum}.c
-    DEPENDS fftc
-    )
-  set(FFT_GEN_STATIC_SRCS 
"${FFT_GEN_STATIC_SRCS};${CMAKE_CURRENT_BINARY_DIR}/static/rfft${filenum}.c")
-  add_custom_command(
-    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/static/irfft${filenum}.c
-    COMMAND ifftc ${filenum} > 
${CMAKE_CURRENT_BINARY_DIR}/static/irfft${filenum}.c
-    DEPENDS ifftc
-    )
-  set(FFT_GEN_STATIC_SRCS 
"${FFT_GEN_STATIC_SRCS};${CMAKE_CURRENT_BINARY_DIR}/static/irfft${filenum}.c")
-endforeach(filenum ${FFT_NUMLIST})
-
 set(LIBFFT_SRCS
   fftfast.c
   splitdit.c
   ditsplit.c
   )
+if(USE_OBJECT_LIBS)
+  fft_gen("${FFT_NUMLIST}" "${CMAKE_CURRENT_BINARY_DIR}" FFT_GEN_SRCS)
+  set(LIBFFT_SRCS ${LIBFFT_SRCS} ${FFT_GEN_SRCS})
+  BRLCAD_ADDLIB(libfft "${LIBFFT_SRCS}" "${M_LIBRARY}")
+else(USE_OBJECT_LIBS)
+  fft_gen("${FFT_NUMLIST}" "${CMAKE_CURRENT_BINARY_DIR}/shared" 
FFT_GEN_SHARED_SRCS)
+  fft_gen("${FFT_NUMLIST}" "${CMAKE_CURRENT_BINARY_DIR}/static" 
FFT_GEN_STATIC_SRCS)
+  BRLCAD_ADDLIB(libfft "${LIBFFT_SRCS}" "${M_LIBRARY}" SHARED_SRCS 
"${FFT_GEN_SHARED_SRCS}" STATIC_SRCS "${FFT_GEN_STATIC_SRCS}")
+endif(USE_OBJECT_LIBS)
 
-BRLCAD_ADDLIB(libfft "${LIBFFT_SRCS}" "${M_LIBRARY}" SHARED_SRCS 
"${FFT_GEN_SHARED_SRCS}" STATIC_SRCS "${FFT_GEN_STATIC_SRCS}")
 set_target_properties(libfft PROPERTIES LINKER_LANGUAGE C)
 set_target_properties(libfft PROPERTIES VERSION 20.0.1 SOVERSION 20)
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to