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