You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(19) |
Nov
(45) |
Dec
(80) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(58) |
Feb
(127) |
Mar
(74) |
Apr
(34) |
May
(117) |
Jun
(14) |
Jul
(26) |
Aug
(13) |
Sep
(1) |
Oct
(38) |
Nov
(13) |
Dec
(5) |
| 2005 |
Jan
(108) |
Feb
(134) |
Mar
(54) |
Apr
(133) |
May
(16) |
Jun
(54) |
Jul
(128) |
Aug
(99) |
Sep
(157) |
Oct
(182) |
Nov
(236) |
Dec
(212) |
| 2006 |
Jan
(86) |
Feb
(76) |
Mar
(121) |
Apr
(27) |
May
(7) |
Jun
(1) |
Jul
(6) |
Aug
(28) |
Sep
(1) |
Oct
(27) |
Nov
(5) |
Dec
|
| 2007 |
Jan
(32) |
Feb
(22) |
Mar
(22) |
Apr
(11) |
May
(3) |
Jun
(12) |
Jul
(11) |
Aug
(9) |
Sep
(37) |
Oct
(4) |
Nov
(9) |
Dec
(51) |
| 2008 |
Jan
(7) |
Feb
(31) |
Mar
(46) |
Apr
(31) |
May
(5) |
Jun
(27) |
Jul
(12) |
Aug
(5) |
Sep
(13) |
Oct
(24) |
Nov
(112) |
Dec
(15) |
| 2009 |
Jan
(6) |
Feb
(103) |
Mar
(66) |
Apr
(9) |
May
(8) |
Jun
(1) |
Jul
(20) |
Aug
(9) |
Sep
(2) |
Oct
(81) |
Nov
(88) |
Dec
(30) |
| 2010 |
Jan
(65) |
Feb
(57) |
Mar
(22) |
Apr
(12) |
May
(4) |
Jun
(12) |
Jul
(43) |
Aug
(6) |
Sep
(6) |
Oct
(4) |
Nov
(6) |
Dec
(3) |
| 2011 |
Jan
(10) |
Feb
(27) |
Mar
(11) |
Apr
(9) |
May
(69) |
Jun
(73) |
Jul
(67) |
Aug
(116) |
Sep
(40) |
Oct
(11) |
Nov
(34) |
Dec
(19) |
| 2012 |
Jan
|
Feb
(4) |
Mar
(28) |
Apr
(18) |
May
(9) |
Jun
(7) |
Jul
(4) |
Aug
(155) |
Sep
(264) |
Oct
(172) |
Nov
(15) |
Dec
(40) |
| 2013 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
(20) |
Jul
(76) |
Aug
(67) |
Sep
(49) |
Oct
(27) |
Nov
(3) |
Dec
(3) |
| 2014 |
Jan
(7) |
Feb
(7) |
Mar
(16) |
Apr
|
May
(4) |
Jun
(1) |
Jul
(18) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2015 |
Jan
(6) |
Feb
(5) |
Mar
(3) |
Apr
(23) |
May
(5) |
Jun
|
Jul
(2) |
Aug
(4) |
Sep
|
Oct
|
Nov
(2) |
Dec
(4) |
| 2016 |
Jan
(2) |
Feb
(7) |
Mar
(2) |
Apr
(1) |
May
(14) |
Jun
(3) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(3) |
| 2017 |
Jan
(6) |
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(12) |
Sep
(6) |
Oct
|
Nov
(3) |
Dec
|
| 2018 |
Jan
(4) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(8) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2019 |
Jan
|
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(8) |
Oct
|
Nov
(2) |
Dec
(25) |
| 2020 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(53) |
Nov
(33) |
Dec
|
| 2021 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(4) |
Dec
(5) |
| 2022 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
(93) |
Aug
(206) |
Sep
(39) |
Oct
(19) |
Nov
(11) |
Dec
|
| 2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(150) |
Jul
(124) |
Aug
(14) |
Sep
(5) |
Oct
|
Nov
(1) |
Dec
|
| 2024 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(12) |
Jul
(62) |
Aug
|
Sep
(7) |
Oct
|
Nov
(7) |
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
(14) |
May
(3) |
Jun
|
Jul
|
Aug
(76) |
Sep
(214) |
Oct
(6) |
Nov
|
Dec
|
|
From: <kin...@us...> - 2025-09-05 06:47:42
|
Revision: 7361
http://sourceforge.net/p/teem/code/7361
Author: kindlmann
Date: 2025-09-05 06:47:40 +0000 (Fri, 05 Sep 2025)
Log Message:
-----------
here too we need some RPATH tricks
Modified Paths:
--------------
teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt
Modified: teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt
===================================================================
--- teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt 2025-09-05 06:47:12 UTC (rev 7360)
+++ teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt 2025-09-05 06:47:40 UTC (rev 7361)
@@ -18,6 +18,13 @@
# transitive dependencies automatically
target_link_libraries(testio PRIVATE Teem::Teem)
+# Give the installed binary an LC_RPATH that points at the actual libteem location
+set_target_properties(testio PROPERTIES
+ INSTALL_RPATH "$<TARGET_FILE_DIR:Teem::Teem>"
+ # Optional but nice for running from the build tree on non-Apple platforms too:
+ BUILD_RPATH "$<TARGET_FILE_DIR:Teem::Teem>"
+)
+
# Install the testio binary into ${CMAKE_INSTALL_PREFIX}/bin
install(TARGETS testio
RUNTIME DESTINATION bin # for executables on all platforms
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-05 06:47:14
|
Revision: 7360
http://sourceforge.net/p/teem/code/7360
Author: kindlmann
Date: 2025-09-05 06:47:12 +0000 (Fri, 05 Sep 2025)
Log Message:
-----------
made some progress
Modified Paths:
--------------
teem/trunk/CMakeLists-v2.txt
Modified: teem/trunk/CMakeLists-v2.txt
===================================================================
--- teem/trunk/CMakeLists-v2.txt 2025-09-05 05:49:25 UTC (rev 7359)
+++ teem/trunk/CMakeLists-v2.txt 2025-09-05 06:47:12 UTC (rev 7360)
@@ -19,7 +19,7 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# Teem/CMakeLists.txt Version 10.885
+# Teem/CMakeLists.txt Version 10.892
# Re-written entirely for TeemV2
#-----------------------------------------------------------------------------
@@ -109,31 +109,52 @@
option(Teem_INSTALL_VERSIONED_SUBDIRS "Install in Teem-X.Y subdir of install/{bin,lib,include}" OFF)
#-----------------------------------------------------------------------------
-# RPATH settings for macOS
-#
-# By default CMake patches installed binaries with `install_name_tool` to replace
-# build-tree RPATHs with install-tree RPATHs. On macOS this causes errors if `make
-# install` is run more than once, because the RPATH has already been modified.
-#
-# The solution used here is to build the executables *already* using the same install
-# RPATH, so no fixup is needed at install time.
-#
-# - Shared build: executables/dylibs use ${CMAKE_INSTALL_PREFIX}/lib
-# - Static build: no RPATHs needed at all
+# RPATH trickery
-if(APPLE)
+if(UNIX AND NOT APPLE)
+ # Linux, BSD, etc.
+ if(BUILD_SHARED_LIBS)
+ # Executables in bin/ will find libs in ../lib
+ set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
+
+ # Let CMake add additional transitive dependency paths
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+ # Separate build-tree vs install-tree RPATHs
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
+
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
+ set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+ else()
+ # Static build: no RPATH needed
+ set(CMAKE_SKIP_BUILD_RPATH TRUE)
+ set(CMAKE_SKIP_INSTALL_RPATH TRUE)
+ endif()
+elseif(APPLE)
set(CMAKE_MACOSX_RPATH ON)
-
if(BUILD_SHARED_LIBS)
- # Use install RPATH even in the build tree
+ # Build artifacts already contain the desired *install* RPATH,
+ # so the install step won't need to patch anything.
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+
+ # For Teem’s own executables (in bin) to find Teem’s dylibs (in lib)
+ # in the *installed* tree. In the Teem build tree this usually also works
+ # because the relative layout is the same.
+ # HEY build bin fail, but install bin ok + ok post mv installdir
+ set(CMAKE_INSTALL_RPATH "@loader_path/../lib")
+ # With this, build bin works and install bin works, but can't mv installdir
+ #set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+ # Make the install step idempotent: do not try to re-edit LC_RPATH.
+ # set(CMAKE_SKIP_INSTALL_RPATH TRUE) # HEY with this, nothing has an RPATH!
+ set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+
+ # Do not strip build-tree RPATH (we’re *using* the install rpath in the build tree)
set(CMAKE_SKIP_BUILD_RPATH FALSE)
- set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+
else()
- # Static build: disable RPATHs entirely
+ # Static build: no RPATH needed
set(CMAKE_SKIP_BUILD_RPATH TRUE)
set(CMAKE_SKIP_INSTALL_RPATH TRUE)
endif()
@@ -452,36 +473,37 @@
add_subdirectory(src/${_dir})
endforeach()
-# confirm results of prior target_link_libraries(PRIVATE)s
-# (what dependencies do I consume)
-get_target_property(_Teem_libs Teem LINK_LIBRARIES)
-message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
+if(0)
+ # confirm results of prior target_link_libraries(PRIVATE)s
+ # (what dependencies do I consume)
+ get_target_property(_Teem_libs Teem LINK_LIBRARIES)
+ message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
-## Not interesting for Teem: what dependencies do I expose
-#get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
-#message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
-## This will show "_Teem_libs-NOTFOUND" because of
-## Teem's API/ABI invariance w.r.t dependencies
+ ## Not interesting for Teem: what dependencies do I expose
+ #get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
+ #message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
+ ## This will show "_Teem_libs-NOTFOUND" because of
+ ## Teem's API/ABI invariance w.r.t dependencies
-# confirm results of prior target_include_directories()s:
-# PRIVATE --> INCLUDE_DIRECTORIES
-# PUBLIC --> INCLUDE_DIRECTORIES and INTERFACE_INCLUDE_DIRECTORIES
-# INTERFACE --> INTERFACE_INCLUDE_DIRECTORIES
-get_target_property(_teem_incdirs Teem INCLUDE_DIRECTORIES)
-message(STATUS "Teem INCLUDE_DIRECTORIES: ${_teem_incdirs}")
-get_target_property(_teem_inter_incdirs Teem INTERFACE_INCLUDE_DIRECTORIES)
-message(STATUS "Teem INTERFACE_INCLUDE_DIRECTORIES: ${teem_inter_incdirs}")
+ # confirm results of prior target_include_directories()s:
+ # PRIVATE --> INCLUDE_DIRECTORIES
+ # PUBLIC --> INCLUDE_DIRECTORIES and INTERFACE_INCLUDE_DIRECTORIES
+ # INTERFACE --> INTERFACE_INCLUDE_DIRECTORIES
+ get_target_property(_teem_incdirs Teem INCLUDE_DIRECTORIES)
+ message(STATUS "Teem INCLUDE_DIRECTORIES: ${_teem_incdirs}")
+ get_target_property(_teem_inter_incdirs Teem INTERFACE_INCLUDE_DIRECTORIES)
+ message(STATUS "Teem INTERFACE_INCLUDE_DIRECTORIES: ${teem_inter_incdirs}")
-# confirm results of prior target_compile_definitions()s:
-# PRIVATE --> COMPILE_DEFINITIONS
-# PUBLIC --> COMPILE_DEFINITIONS and INTERFACE_COMPILE_DEFINITIONS
-# INTERFACE --> INTERFACE_COMPILE_DEFINITIONS
-get_target_property(_teem_compdefs Teem COMPILE_DEFINITIONS)
-message(STATUS "Teem COMPILE_DEFINITIONS: ${_teem_compdefs}")
-get_target_property(_teem_inter_compdefs Teem INTERFACE_INCLUDE_DIRECTORIES)
-message(STATUS "Teem INTERFACE_COMPILE_DEFINITIONS: ${teem_inter_compdefs}")
+ # confirm results of prior target_compile_definitions()s:
+ # PRIVATE --> COMPILE_DEFINITIONS
+ # PUBLIC --> COMPILE_DEFINITIONS and INTERFACE_COMPILE_DEFINITIONS
+ # INTERFACE --> INTERFACE_COMPILE_DEFINITIONS
+ get_target_property(_teem_compdefs Teem COMPILE_DEFINITIONS)
+ message(STATUS "Teem COMPILE_DEFINITIONS: ${_teem_compdefs}")
+ get_target_property(_teem_inter_compdefs Teem INTERFACE_INCLUDE_DIRECTORIES)
+ message(STATUS "Teem INTERFACE_COMPILE_DEFINITIONS: ${teem_inter_compdefs}")
+endif()
-
#-----------------------------------------------------------------------------
# Public headers
@@ -568,7 +590,28 @@
include(CMakePackageConfigHelpers)
-# Generate TeemConfig.cmake from our template
+# Generate TeemConfig.cmake from template CMake/TeemConfig.cmake.in
+# We have to do some work to teach Teem to pull in its own dependencies.
+# First build up list of find_dependency() calls for TeemConfig.cmake:
+set(_Teem_find_deps "")
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(Teem_USE_${_tdep})
+ if(NOT _Teem_find_deps)
+ # before first dependency have to say what find_dependency means
+ string(APPEND _Teem_find_deps "include(CMakeFindDependencyMacro)\n")
+ endif()
+ # Map to CMake package name
+ string(APPEND _Teem_find_deps "find_dependency(${_cpname_${_tdep}} REQUIRED)\n")
+ endif()
+endforeach()
+if(NOT _Teem_find_deps)
+ # if, actually, there aren't any dependencies, add a comment saying so
+ string(APPEND _Teem_find_deps "# (actually, no dependencies in this Teem build)\n")
+endif()
+# Then, empower the next configure command to convert @Teem_CONFIG_DEPENDENCIES@
+# (appearing in TeemConfig.cmake.in) to _Teem_find_deps
+set(Teem_CONFIG_DEPENDENCIES "${_Teem_find_deps}")
+# now finally generate TeemConfig.cmake
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/TeemConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-05 05:49:27
|
Revision: 7359
http://sourceforge.net/p/teem/code/7359
Author: kindlmann
Date: 2025-09-05 05:49:25 +0000 (Fri, 05 Sep 2025)
Log Message:
-----------
upcoming version of this file
Added Paths:
-----------
teem/trunk/CMake/TeemConfig.cmake-v2.in
Added: teem/trunk/CMake/TeemConfig.cmake-v2.in
===================================================================
--- teem/trunk/CMake/TeemConfig.cmake-v2.in (rev 0)
+++ teem/trunk/CMake/TeemConfig.cmake-v2.in 2025-09-05 05:49:25 UTC (rev 7359)
@@ -0,0 +1,45 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+#-----------------------------------------------------------------------------
+# TeemConfig.cmake - CMake package configuration file for Teem
+#
+# This file is generated by CMake during Teem installation.
+# It is loaded by find_package(Teem) in consuming projects.
+
+@PACKAGE_INIT@
+
+# Version information
+set(Teem_VERSION_MAJOR @Teem_VERSION_MAJOR@)
+set(Teem_VERSION_MINOR @Teem_VERSION_MINOR@)
+set(Teem_VERSION_PATCH @Teem_VERSION_PATCH@)
+set(Teem_VERSION "@Teem_VERSION_STRING@")
+
+# Tools installed with Teem (optional metadata)
+set(Teem_TOOLS "@Teem_TOOLS@")
+
+# Auto-generated dependency calls from Teem's CMakeLists.txt
+@Teem_CONFIG_DEPENDENCIES@
+
+# Provide the imported targets built during installation
+include("${CMAKE_CURRENT_LIST_DIR}/TeemTargets.cmake")
+
+# Backward-compatibility variables (optional; safe to omit if want a clean slate)
+set(Teem_INCLUDE_DIRS "@Teem_CV_INCLUDE_DIRS@")
+set(Teem_LIBRARIES Teem::Teem)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-05 00:28:59
|
Revision: 7358
http://sourceforge.net/p/teem/code/7358
Author: kindlmann
Date: 2025-09-05 00:28:58 +0000 (Fri, 05 Sep 2025)
Log Message:
-----------
old working version
Added Paths:
-----------
teem/trunk/UseTeemCMakeDemo/CMakeLists-v1.txt
Added: teem/trunk/UseTeemCMakeDemo/CMakeLists-v1.txt
===================================================================
--- teem/trunk/UseTeemCMakeDemo/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/UseTeemCMakeDemo/CMakeLists-v1.txt 2025-09-05 00:28:58 UTC (rev 7358)
@@ -0,0 +1,14 @@
+project (SampleTeemUsingProject)
+
+cmake_minimum_required(VERSION 3.13...3.15)
+
+if(${CMAKE_VERSION} VERSION_LESS 3.15)
+ cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+else()
+ cmake_policy(VERSION 3.15)
+endif()
+
+find_package(Teem REQUIRED)
+add_executable(sanity sanity.c)
+target_include_directories(sanity PRIVATE ${Teem_INCLUDE_DIRS})
+target_link_libraries(sanity teem)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-05 00:23:05
|
Revision: 7357
http://sourceforge.net/p/teem/code/7357
Author: kindlmann
Date: 2025-09-05 00:23:04 +0000 (Fri, 05 Sep 2025)
Log Message:
-----------
sort of working now
Modified Paths:
--------------
teem/trunk/CMakeLists-v2.txt
Modified: teem/trunk/CMakeLists-v2.txt
===================================================================
--- teem/trunk/CMakeLists-v2.txt 2025-09-04 19:16:40 UTC (rev 7356)
+++ teem/trunk/CMakeLists-v2.txt 2025-09-05 00:23:04 UTC (rev 7357)
@@ -19,7 +19,7 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# Teem/CMakeLists.txt Version 10.85
+# Teem/CMakeLists.txt Version 10.885
# Re-written entirely for TeemV2
#-----------------------------------------------------------------------------
@@ -55,15 +55,17 @@
#-----------------------------------------------------------------------------
# Module paths and helper includes
-include(GNUInstallDirs)
+# https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
+
+include(GNUInstallDirs) # sets CMAKE_INSTALL_* variables
include(CMakeParseArguments) # for cmake_parse_arguments
-# include(CMakePrintHelpers) # for debugging via cmake_print_variables(varname)
+include(CMakePrintHelpers) # for debugging via cmake_print_variables(varname)
# CMake modules path (for e.g. FindLEVMAR.cmake)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
#-----------------------------------------------------------------------------
-# Dependency list and project options
+# Project options, including choosing dependencies
# - canonical list of optional dependencies
# - option() flags for enabling/disabling them
@@ -175,7 +177,8 @@
# so we don't have (for example): _cpname[_tdep]
# but now, after the foreach above, we have: ${_cpname_${_tdep}}
-# With all that uniformity set up: try to find_package() for all DEPs requested
+# With all that uniformity set up: try to find_package() for all DEPs requested,
+# and set Teem_HAVE_DEP if we did find it (we have it)
foreach(_tdep IN LISTS _Teem_DEPS)
if(Teem_USE_${_tdep})
# this DEP is requested
@@ -193,7 +196,10 @@
#message(STATUS "PNG::PNG links to: ${_png_libs}")
#-----------------------------------------------------------------------------
-# Install directory layout
+# Describe install directory layout with variables:
+# HEADERS_INSTALL_DIR, LIB_INSTALL_DIR, BIN_INSTALL_DIR, CONFIG_INSTALL_DIR
+# which are paths to the different things relative to the install prefix
+# The CMAKE_INSTALL_* variables were set by include(GNUInstallDirs).
if(Teem_INSTALL_VERSIONED_SUBDIRS)
set(_verpath "teem-${Teem_VERSION_STRING}")
@@ -212,7 +218,7 @@
set(BIN_INSTALL_DIR "${BIN_INSTALL_DIR}" CACHE INTERNAL "Install dir for binaries")
#-----------------------------------------------------------------------------
-# Configure-time feature test: does AIR_EXISTS() work like isfinite()?
+# Configure-time test: does AIR_EXISTS() work like isfinite()?
# A lot of work for one little macro (which GLK started using before the functionally
# equivalent isfinite() became widely available). The little CMake/TestAIR_EXISTS.c
@@ -293,7 +299,7 @@
ERROR_VARIABLE _taex_run_err
)
-# Act on the results
+# Act on the results; set AIR_EXISTS_MACRO_FAILS
if(_taex_run_status EQUAL 0)
message(CHECK_PASS "Yes, it detects IEEE754 special values")
set(AIR_EXISTS_MACRO_FAILS 0 CACHE INTERNAL "AIR_EXISTS macro works correctly")
@@ -310,6 +316,7 @@
message(CHECK_FAIL "NO, it FAILS to detect IEEE754 special values")
set(AIR_EXISTS_MACRO_FAILS 1 CACHE INTERNAL "AIR_EXISTS macro fails")
endif()
+# AIR_EXISTS_MACRO_FAILS is used indirectly, below, by configure_file(airExistsConf.h)
#-----------------------------------------------------------------------------
# We gather here to build the monolithic library 'libteem'
@@ -322,7 +329,7 @@
# Ensure build's include dir exists for generated headers
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include/teem)
-# Public include directories
+# Set Teem target properties about where headers are found
target_include_directories(Teem
PUBLIC
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
@@ -330,7 +337,9 @@
$<INSTALL_INTERFACE:${HEADERS_INSTALL_DIR}>
)
-# Say "cc -D TEEM_DEP" and link with DEP target if dependency DEP is used
+# For each chosen dependency _tdep, add Teem target properties about:
+# - which -D flags are needed to enable _tdep during compiling,
+# - how to link with _tdep's library at link time
foreach(_tdep IN LISTS _Teem_DEPS)
if(Teem_HAVE_${_tdep})
message(STATUS "Will use ${_tdep}: ${_doc_${_tdep}}")
@@ -346,19 +355,12 @@
message(STATUS " (not using ${_tdep}: ${_doc_${_tdep}})")
endif()
endforeach()
-# confirm results of loop above: what dependencies do I consume
-get_target_property(_Teem_libs Teem LINK_LIBRARIES)
-message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
-## Not interesting for Teem: what dependencies do I expose. Will show
-## "_Teem_libs-NOTFOUND" because of Teem's API/ABI invariance w.r.t dependencies
-#get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
-#message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
-# Say "cc -D TEEM_STATIC" if not building a shared library
+# Also: say "cc -D TEEM_STATIC" if not building a shared library
# (used as part of handling Windows "extern" analog)
target_compile_definitions(Teem PUBLIC "$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:TEEM_STATIC>")
-## Handling linking with math library libm via -lm
+#### ---------------- Handling linking with math library libm via -lm
# We could be brute-force, and add -lm to link line for any and all Unices:
# if(UNIX)
# target_link_libraries(Teem PRIVATE m)
@@ -395,8 +397,9 @@
message(FATAL_ERROR "Could not find sin() at all!")
endif()
endif()
+#### ---------------- end of handling -lm
-# Set the target properties
+# Set remaining target properties
set_target_properties(Teem PROPERTIES
OUTPUT_NAME teem # so we get libteem not libTeem
VERSION ${Teem_VERSION_STRING}
@@ -445,17 +448,48 @@
limn echo hoover seek ten elf pull coil push mite meet)
# Read in CMakeLists.txt of each library
foreach(_dir IN LISTS Teem_LIBRARIES)
- # each one calls _Teem_add_library
+ # each CMakeLists.txt is just a single call to _Teem_add_library()
add_subdirectory(src/${_dir})
endforeach()
+# confirm results of prior target_link_libraries(PRIVATE)s
+# (what dependencies do I consume)
+get_target_property(_Teem_libs Teem LINK_LIBRARIES)
+message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
+
+## Not interesting for Teem: what dependencies do I expose
+#get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
+#message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
+## This will show "_Teem_libs-NOTFOUND" because of
+## Teem's API/ABI invariance w.r.t dependencies
+
+# confirm results of prior target_include_directories()s:
+# PRIVATE --> INCLUDE_DIRECTORIES
+# PUBLIC --> INCLUDE_DIRECTORIES and INTERFACE_INCLUDE_DIRECTORIES
+# INTERFACE --> INTERFACE_INCLUDE_DIRECTORIES
+get_target_property(_teem_incdirs Teem INCLUDE_DIRECTORIES)
+message(STATUS "Teem INCLUDE_DIRECTORIES: ${_teem_incdirs}")
+get_target_property(_teem_inter_incdirs Teem INTERFACE_INCLUDE_DIRECTORIES)
+message(STATUS "Teem INTERFACE_INCLUDE_DIRECTORIES: ${teem_inter_incdirs}")
+
+# confirm results of prior target_compile_definitions()s:
+# PRIVATE --> COMPILE_DEFINITIONS
+# PUBLIC --> COMPILE_DEFINITIONS and INTERFACE_COMPILE_DEFINITIONS
+# INTERFACE --> INTERFACE_COMPILE_DEFINITIONS
+get_target_property(_teem_compdefs Teem COMPILE_DEFINITIONS)
+message(STATUS "Teem COMPILE_DEFINITIONS: ${_teem_compdefs}")
+get_target_property(_teem_inter_compdefs Teem INTERFACE_INCLUDE_DIRECTORIES)
+message(STATUS "Teem INTERFACE_COMPILE_DEFINITIONS: ${teem_inter_compdefs}")
+
+
#-----------------------------------------------------------------------------
-# Public headers: copy, configure, and declare via FILE_SET
+# Public headers
# Set *variable* _Teem_headers from *property* Teem_HEADER_FILES
get_property(_Teem_headers GLOBAL PROPERTY Teem_HEADER_FILES)
+# cmake_print_variables(_Teem_headers)
-# Copy header files to install location
+# Copy header files from source into build
set(_Teem_headers_full)
foreach(_dirhdr IN LISTS _Teem_headers)
# e.g. set _hdr="air.h" from _dirhdr="air/air.h"
@@ -468,18 +502,29 @@
# cmake_print_variables(_Teem_headers_full)
# Configure generated header airExistsConf.h
+# *This* is where AIR_EXISTS_MACRO_FAILS (set above) is actually used;
+# teem/CMake/airExistsConf.h contains the line:
+# #cmakedefine AIR_EXISTS_MACRO_FAILS
+# which is transformed to
+# #define AIR_EXISTS_MACRO_FAILS
+# so that teem/src/air/air.h's definition of AIR_EXISTS can fall back on airExists()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/airExistsConf.h
- ${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h
+ ${CMAKE_BINARY_DIR}/include/teem/airExistsConf.h
@ONLY NEWLINE_STYLE UNIX)
-list(APPEND _Teem_headers_full "${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h")
+list(APPEND _Teem_headers_full "${CMAKE_BINARY_DIR}/include/teem/airExistsConf.h")
-# Declare where public headers are found during build
+# Declare the set of public header files that belong to the Teem library.
+# - "FILE_SET public_headers" groups them under a set named "public_headers",
+# so that install(TARGETS) can reference it
+# - "BASE_DIRS ${CMAKE_BINARY_DIR}/include" names the directory that the
+# headers are considered relative to, so that when Teem is installed,
+# the include tree layout is preserved so users can #include <teem/air.h>
target_sources(Teem
PUBLIC
FILE_SET public_headers
- TYPE HEADERS
+ TYPE HEADERS # these are headers, no sources
BASE_DIRS ${CMAKE_BINARY_DIR}/include
- FILES ${_Teem_headers_full}
+ FILES ${_Teem_headers_full} # the list of header files
)
#-----------------------------------------------------------------------------
@@ -510,6 +555,17 @@
#-----------------------------------------------------------------------------
# Install rules
+# Declare how Teem should be installed, and hang all this off the "TeemTargets" export
+# set. This does not copy files immediately; it only registers installation rules, which
+# are applied at `cmake --install` time
+install(TARGETS Teem
+ EXPORT TeemTargets
+ LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+ FILE_SET public_headers DESTINATION ${HEADERS_INSTALL_DIR}
+)
+
include(CMakePackageConfigHelpers)
# Generate TeemConfig.cmake from our template
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-04 19:16:41
|
Revision: 7356
http://sourceforge.net/p/teem/code/7356
Author: kindlmann
Date: 2025-09-04 19:16:40 +0000 (Thu, 04 Sep 2025)
Log Message:
-----------
version 1.13 didn't and won't happen
Modified Paths:
--------------
teem/trunk/src/biff/README.txt
Modified: teem/trunk/src/biff/README.txt
===================================================================
--- teem/trunk/src/biff/README.txt 2025-09-04 19:11:50 UTC (rev 7355)
+++ teem/trunk/src/biff/README.txt 2025-09-04 19:16:40 UTC (rev 7356)
@@ -1,4 +1,4 @@
-All about /* Biff: */ annotations (new with Teem 1.13)
+All about /* Biff: */ annotations (new with Teem v2)
teem/src/_util/scan-symbols.py -biff (the "biff auto-scan") will scrutinize Teem source
code to look at how it uses biff. This analysis creates parsable annotations of function
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-04 19:11:51
|
Revision: 7355
http://sourceforge.net/p/teem/code/7355
Author: kindlmann
Date: 2025-09-04 19:11:50 +0000 (Thu, 04 Sep 2025)
Log Message:
-----------
preparing a better demo
Added Paths:
-----------
teem/trunk/UseTeemCMakeDemo/00-Readme.txt
teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt
teem/trunk/UseTeemCMakeDemo/testio.c
Added: teem/trunk/UseTeemCMakeDemo/00-Readme.txt
===================================================================
--- teem/trunk/UseTeemCMakeDemo/00-Readme.txt (rev 0)
+++ teem/trunk/UseTeemCMakeDemo/00-Readme.txt 2025-09-04 19:11:50 UTC (rev 7355)
@@ -0,0 +1,39 @@
+This is a simple demo of how another C program can use CMake to link
+with a CMake-built Teem (it also reflects how I (GLK) am belatedly
+understanding how CMake works).
+
+Steps:
+
+1) Set TEEM_DIR to the path to where CMake installed Teem. There should be
+`bin`, `include`, `lib`, subdirectories, and the `lib/cmake` will record how
+CMake built Teem. Then:
+
+ ls $TEEM_DIR
+
+should show `bin`, `include`, `lib`.
+
+2) The following will create a `build` subdirectory right here where testio.c
+is, doing the configure and generate steps of CMake:
+
+ cmake -S . -B build \
+ -DCMAKE_PREFIX_PATH=$TEEM_DIR \
+ -DCMAKE_INSTALL_PREFIX=install
+
+The `.` argument to `cmake -S` is the path to the source directory, and the
+`build` argument to `cmake -B` is the path to the new testio build directory.
+After the `find_package` in ./CMakeLists.txt runs, CMake will set its own
+`Teem_DIR` variable to $TEEM_DIR. The `install` local (relative) path will be
+the subdirectory that CMake will install into later.
+
+3) To build in a way that is agnostic w.r.t. build system:
+
+ cmake --build build
+
+which means: run the "build" step (first "--build") in the local `build`
+subdirectory (second "build"). Or if you like running make:
+
+ (cd build; make)
+
+4) To install:
+
+ cmake --install build
Added: teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt
===================================================================
--- teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/UseTeemCMakeDemo/CMakeLists-v2.txt 2025-09-04 19:11:50 UTC (rev 7355)
@@ -0,0 +1,24 @@
+
+# Shows how to use CMake to make an executable that depends on Teem
+
+# Actually this version requirement may be needlessly high; an earlier
+# CMake version may also work; probably anything above 3.0
+cmake_minimum_required(VERSION 3.14)
+
+# Set (demo) project name, initialize compiler detection and compiler flags
+project(TestNrrdIO LANGUAGES C)
+
+# Find Teem (must be installed in CMAKE_PREFIX_PATH or default system paths)
+find_package(Teem REQUIRED)
+
+# Associate one executable testio with project
+add_executable(testio testio.c)
+
+# Link testio against the imported target, which brings in include paths and
+# transitive dependencies automatically
+target_link_libraries(testio PRIVATE Teem::Teem)
+
+# Install the testio binary into ${CMAKE_INSTALL_PREFIX}/bin
+install(TARGETS testio
+ RUNTIME DESTINATION bin # for executables on all platforms
+)
Added: teem/trunk/UseTeemCMakeDemo/testio.c
===================================================================
--- teem/trunk/UseTeemCMakeDemo/testio.c (rev 0)
+++ teem/trunk/UseTeemCMakeDemo/testio.c 2025-09-04 19:11:50 UTC (rev 7355)
@@ -0,0 +1,88 @@
+/*
+ testio.c: demos nrrdSanity(), nrrdLoad(), nrrdSave from Teem
+ Copyright (C) 2025
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any
+ damages arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any
+ purpose, including commercial applications, and to alter it and
+ redistribute it freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must
+ not claim that you wrote the original software. If you use this
+ software in a product, an acknowledgment in the product
+ documentation would be appreciated but is not required.
+
+ 2. Altered source versions must be plainly marked as such, and must
+ not be misrepresented as being the original software.
+
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include <teem/nrrd.h>
+
+static void
+usage(const char *me) {
+ /* 0 1 2 (3) */
+ fprintf(stderr, "usage: %s [<input> [<output>]]\n", me);
+ fprintf(stderr, "<input> is file for nrrdLoad() to read (or - for stdin)\n");
+ fprintf(stderr, "<output> is where nrrdSave() writes to (or - for stout)\n");
+}
+
+int
+main(int argc, const char *argv[]) {
+ int ret;
+ const char *me;
+ char *err;
+
+ me = argv[0];
+ if (argc > 3 || (argc == 2 && !strcmp("--help", argv[1]))) {
+ usage(me);
+ return 1;
+ }
+
+ /* we start by running nrrdSanity in any case */
+ if (!nrrdSanity()) {
+ fprintf(stderr, "%s: nrrdSanity() failed:\n%s", me, err = biffGetDone(NRRD));
+ free(err);
+ return 1;
+ }
+ /* else */
+ fprintf(stderr, "%s: nrrdSanity() passed\n", me);
+ if (argc <= 1) {
+ /* we're done */
+ return 1;
+ }
+
+ const char *fin = argv[1];
+ Nrrd *nrrd = nrrdNew();
+ if (nrrdLoad(nrrd, fin, NULL)) {
+ fprintf(stderr, "%s: trouble loading \"%s\":\n%s", me, fin, err = biffGet(NRRD));
+ free(err);
+ return 1;
+ } else {
+ printf("%s: loaded array from \"%s\"\n", me, fin);
+ }
+
+ /* describe the nrrd just read in */
+ printf("%s: Describing array:\n", me);
+ nrrdDescribe(stdout, nrrd);
+ if (argc == 2) {
+ /* we're done */
+ return 1;
+ }
+
+ /* write out the array */
+ const char *fout = argv[2];
+ if (nrrdSave(fout, nrrd, NULL)) {
+ fprintf(stderr, "%s: trouble writing to\"%s\":\n%s", me, fout, err = biffGet(NRRD));
+ free(err);
+ return 1;
+ } else {
+ printf("%s: saved array to \"%s\"\n", me, fout);
+ }
+
+ return 0;
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-04 05:20:25
|
Revision: 7354
http://sourceforge.net/p/teem/code/7354
Author: kindlmann
Date: 2025-09-04 05:20:24 +0000 (Thu, 04 Sep 2025)
Log Message:
-----------
updating how Teem is installed, and the meta-data artifacts generated
Modified Paths:
--------------
teem/trunk/CMakeLists-v2.txt
Modified: teem/trunk/CMakeLists-v2.txt
===================================================================
--- teem/trunk/CMakeLists-v2.txt 2025-09-04 03:49:43 UTC (rev 7353)
+++ teem/trunk/CMakeLists-v2.txt 2025-09-04 05:20:24 UTC (rev 7354)
@@ -195,10 +195,8 @@
#-----------------------------------------------------------------------------
# Install directory layout
-# Will not include patch number, since (as of Teem V2.0)
-# API+ABI really are preserved if only patch number is changing
if(Teem_INSTALL_VERSIONED_SUBDIRS)
- set(_verpath "teem-${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}")
+ set(_verpath "teem-${Teem_VERSION_STRING}")
set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${_verpath}")
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}")
set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}/${_verpath}")
@@ -499,9 +497,12 @@
#-----------------------------------------------------------------------------
# Testing
+# Note: these tests are very incomplete. It is unclear how much of Teem's future
+# development will hinge on CTest-based testing, now that the Python/CFFI bindings
+# offer a much more convenient way to call into Teem.
if(BUILD_TESTING)
- include(CTest) # belatedly
+ include(CTest)
enable_testing()
add_subdirectory(Testing) # add Teem-specific tests
endif()
@@ -509,36 +510,35 @@
#-----------------------------------------------------------------------------
# Install rules
-install(TARGETS Teem
- EXPORT TeemTargets
- RUNTIME DESTINATION ${BIN_INSTALL_DIR}
- LIBRARY DESTINATION ${LIB_INSTALL_DIR}
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
- FILE_SET public_headers DESTINATION ${HEADERS_INSTALL_DIR}
-)
-
-# Export targets for find_package
-install(EXPORT TeemTargets
- FILE TeemTargets.cmake
- NAMESPACE Teem::
- DESTINATION ${CONFIG_INSTALL_DIR}
-)
-
include(CMakePackageConfigHelpers)
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in"
-"@PACKAGE_INIT@\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/TeemTargets.cmake\")\n")
-configure_package_config_file(${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in
+# Generate TeemConfig.cmake from our template
+configure_package_config_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TeemConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
)
+# Generate version file (so find_package can check Teem >= X.Y.Z)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
VERSION ${Teem_VERSION_STRING}
- COMPATIBILITY AnyNewerVersion
+ # Teem v2 does have non-zero ABI and API changes from Teem pre-v2, hence the
+ # SameMajorVersion instead of AnyNewerVersion below. Most Teem-using code will likely
+ # not need changing to use v2, but it probably should be recompiled. We are honoring
+ # the expectations of the semantic versioning that Teem bought in 2005 with version
+ # 1.9.0.
+ COMPATIBILITY SameMajorVersion
)
+# Export targets (defined earlier via add_library + install(TARGETS …))
+install(EXPORT TeemTargets
+ FILE TeemTargets.cmake
+ NAMESPACE Teem::
+ DESTINATION ${CONFIG_INSTALL_DIR}
+)
+
+# Install the package config and version files
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-04 03:49:44
|
Revision: 7353
http://sourceforge.net/p/teem/code/7353
Author: kindlmann
Date: 2025-09-04 03:49:43 +0000 (Thu, 04 Sep 2025)
Log Message:
-----------
reserve copy of this before cmake v2 changes
Added Paths:
-----------
teem/trunk/CMake/TeemConfig.cmake-v1.in
Added: teem/trunk/CMake/TeemConfig.cmake-v1.in
===================================================================
--- teem/trunk/CMake/TeemConfig.cmake-v1.in (rev 0)
+++ teem/trunk/CMake/TeemConfig.cmake-v1.in 2025-09-04 03:49:43 UTC (rev 7353)
@@ -0,0 +1,64 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2019 University of Chicago
+# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
+# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# (LGPL) as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also
+# include exceptions to the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+#-----------------------------------------------------------------------------
+#
+# TeemConfig.cmake - Teem CMake configuration file for external projects.
+#
+# This file is configured by Teem and used by the TeemUse.cmake module
+# to load Teem's settings for an external project.
+
+# The directory of TeemConfig.cmake is, by definition, Teem_DIR.
+# (this_dir == Teem_DIR)
+#
+get_filename_component(this_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
+get_filename_component(Teem_ROOT_DIR "${this_dir}/@Teem_CV_CONFIG_TO_ROOT@" ABSOLUTE)
+
+# CMake files required to build client applications that use Teem.
+set(Teem_BUILD_SETTINGS_FILE "@Teem_CV_BUILD_SETTINGS_FILE@")
+set(Teem_USE_FILE "@Teem_CV_USE_FILE@")
+
+# The Teem directories.
+set(Teem_EXECUTABLE_DIRS "@Teem_CV_EXECUTABLE_DIRS@")
+set(Teem_LIBRARY_DIRS "@Teem_CV_LIBRARY_DIRS@")
+set(Teem_INCLUDE_DIRS "@Teem_CV_INCLUDE_DIRS@")
+
+# The Teem libraries.
+set(Teem_LIBRARIES "@Teem_CV_BUILT_LIBRARIES@")
+
+# The C flags added by Teem to the cmake-configured flags.
+set(Teem_REQUIRED_C_FLAGS "@Teem_REQUIRED_C_FLAGS@")
+
+# The Teem version number
+set(Teem_VERSION_MAJOR "@Teem_VERSION_MAJOR@")
+set(Teem_VERSION_MINOR "@Teem_VERSION_MINOR@")
+set(Teem_VERSION_PATCH "@Teem_VERSION_PATCH@")
+
+# Is Teem using shared libraries?
+set(Teem_BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@")
+
+# The list of tools in teem
+set(Teem_TOOLS "@Teem_TOOLS@")
+
+# The Teem library dependencies.
+if(NOT TARGET teem)
+ include("@Teem_CV_LIBRARY_DEPENDS_FILE@")
+endif()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-04 03:46:21
|
Revision: 7352
http://sourceforge.net/p/teem/code/7352
Author: kindlmann
Date: 2025-09-04 03:46:19 +0000 (Thu, 04 Sep 2025)
Log Message:
-----------
temp copies of pre V2 CMake stuff, to simplify experiments involving switching between old and new v2 stuff
Added Paths:
-----------
teem/trunk/CMakeLists-v1.txt
teem/trunk/src/air/CMakeLists-v1.txt
teem/trunk/src/alan/CMakeLists-v1.txt
teem/trunk/src/bane/CMakeLists-v1.txt
teem/trunk/src/biff/CMakeLists-v1.txt
teem/trunk/src/bin/CMakeLists-v1.txt
teem/trunk/src/coil/CMakeLists-v1.txt
teem/trunk/src/dye/CMakeLists-v1.txt
teem/trunk/src/echo/CMakeLists-v1.txt
teem/trunk/src/elf/CMakeLists-v1.txt
teem/trunk/src/ell/CMakeLists-v1.txt
teem/trunk/src/gage/CMakeLists-v1.txt
teem/trunk/src/hest/CMakeLists-v1.txt
teem/trunk/src/hex/CMakeLists-v1.txt
teem/trunk/src/hoover/CMakeLists-v1.txt
teem/trunk/src/limn/CMakeLists-v1.txt
teem/trunk/src/meet/CMakeLists-v1.txt
teem/trunk/src/mite/CMakeLists-v1.txt
teem/trunk/src/moss/CMakeLists-v1.txt
teem/trunk/src/nrrd/CMakeLists-v1.txt
teem/trunk/src/pull/CMakeLists-v1.txt
teem/trunk/src/push/CMakeLists-v1.txt
teem/trunk/src/seek/CMakeLists-v1.txt
teem/trunk/src/ten/CMakeLists-v1.txt
teem/trunk/src/tijk/CMakeLists-v1.txt
teem/trunk/src/unrrdu/CMakeLists-v1.txt
Added: teem/trunk/CMakeLists-v1.txt
===================================================================
--- teem/trunk/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,439 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2022 University of Chicago
+# Copyright (C) 2008, 2007, 2006, 2005 Gordon Kindlmann
+# Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# (LGPL) as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also
+# include exceptions to the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+# This is the root Teem CMakeLists file
+
+# assume a recent-ish version of CMake
+cmake_minimum_required(VERSION 3.20)
+
+#-----------------------------------------------------------------------------
+# Teem version number. Must reflect the values in teem/src/air/air.h
+# means the version number is 1.12.0
+set(Teem_VERSION_MAJOR "1")
+set(Teem_VERSION_MINOR "12")
+set(Teem_VERSION_PATCH "0")
+
+# Version string (no space in version numbers, so doesn't have to be quoted)
+set(Teem_VERSION_STRING ${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}.${Teem_VERSION_PATCH})
+
+# DESCRIPTION was added to set a project description in CMake 3.9
+project(Teem VERSION ${Teem_VERSION_STRING}
+ DESCRIPTION "Teem libraries developed by Gordon Kindlmann et al."
+ LANGUAGES C)
+
+# specifying a search path for CMake modules to be loaded by the include() or find_package()
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+
+# Include directory
+# path directory variable should always be quoted since path may contain spaces
+include_directories("${Teem_BINARY_DIR}/include/" "${Teem_SOURCE_DIR}/include/")
+
+# Turn on all of the warnings for debug builds
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror")
+ # Exclude no-type-limits as it flags extra checks in macros vs unsigned
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-type-limits")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror")
+endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
+
+# We need ansi c-flags, especially on HP
+set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
+set(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
+
+#-----------------------------------------------------------------------------
+# Test for some required system information.
+# This checks size of various C type (int, long, void*, char, short, float, double),
+# existence of some headers (limits.h, unistd.h, pthread.h, sys/types.h, sys/prctl.h),
+# and then (why?!?) X11, gethostbyname, connect, remove, shmat, IceConnectionNumber?
+# GLK wonders if this can't be pruned down to what is actually needed (certainly not X11)
+## HEY for Teem v2 can this be removed??
+#include (CMakeBackwardCompatibilityC)
+
+#-----------------------------------------------------------------------------
+# set all output directories to be teem-build/bin unless defined
+foreach(type LIBRARY RUNTIME ARCHIVE)
+ if(DEFINED CMAKE_${type}_OUTPUT_DIRECTORY AND NOT EXISTS ${CMAKE_${type}_OUTPUT_DIRECTORY})
+ # message(FATAL_ERROR "CMAKE_${type}_OUTPUT_DIRECTORY is set to a non-existing directory [${CMAKE_${type}_OUTPUT_DIRECTORY}]")
+ message("CMAKE_${type}_OUTPUT_DIRECTORY is set to a non-existing directory [${CMAKE_${type}_OUTPUT_DIRECTORY}]")
+ file(MAKE_DIRECTORY ${CMAKE_${type}_OUTPUT_DIRECTORY})
+ message("${CMAKE_${type}_OUTPUT_DIRECTORY} has been created")
+ endif()
+
+ if(NOT DEFINED CMAKE_${type}_OUTPUT_DIRECTORY)
+ set(CMAKE_${type}_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
+ endif()
+endforeach()
+
+# build shared libraries option
+if(BUILD_SHARED_LIBS)
+ set(__LIBRARY_OUTPUT_PATH__ "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
+else()
+ set(__LIBRARY_OUTPUT_PATH__ "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
+endif()
+
+set(__RUNTIME_OUTPUT_PATH_ "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
+
+# output directory for installing all include files
+file(MAKE_DIRECTORY ${Teem_BINARY_DIR}/include)
+file(MAKE_DIRECTORY ${Teem_BINARY_DIR}/include/teem)
+
+#-----------------------------------------------------------------------------
+# test if AIR_EXISTS macro fails
+message(STATUS "Check if AIR_EXISTS works to detect IEEE754 special values")
+# try_run(<runResultVar> <compileResultVar> <bindir> <srcfile>)
+try_run(AIR_EXISTS_MACRO_FAILS AIR_EXISTS_TEST_COMPILES
+ ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_LIST_DIR}/CMake/TestAIR_EXISTS.c)
+if (NOT AIR_EXISTS_TEST_COMPILES)
+ message(FATAL_ERROR "Failed to compile TestAIR_EXISTS.c so could not test AIR_EXISTS macro")
+endif()
+if(AIR_EXISTS_MACRO_FAILS)
+ file(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "No, AIR_EXISTS macro FAILS to detect IEEE754 special values")
+ message(STATUS "No, AIR_EXISTS macro FAILS to detect IEEE754 special values")
+else()
+ file(APPEND ${CMAKE_BINARY_DIR}/CMakeError.log "Yes, AIR_EXISTS macro works to detect IEEE754 special values")
+ message(STATUS "Yes, AIR_EXISTS macro works to detect IEEE754 special values")
+endif()
+
+#-----------------------------------------------------------------------------
+# All the Teem build configuration options.
+# Option 1 - BUILD_SHARED_LIBS is a global flag that causes add_library to create shared libraries if on.
+option(BUILD_SHARED_LIBS "Build Teem with shared libraries." OFF)
+# If present and true, this will cause all libraries to be built shared unless the library was explicitly added as a static library
+set(Teem_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+if(NOT Teem_BUILD_SHARED_LIBS)
+ add_definitions(-DTEEM_STATIC)
+endif()
+# Option 2 - if we are using ZLIB library
+option(Teem_ZLIB "Build Teem with support for gzip compression." ON)
+# Option 3 - if we are using PNG library
+option(Teem_PNG "Build Teem with support for PNG images." ON)
+# Can't build PNG without ZLIB, so force it on.
+if(Teem_PNG AND NOT Teem_ZLIB)
+ message(WARNING "Can't build PNG without ZLIB, so Teem_ZLIB option has been turned on.")
+ set(Teem_ZLIB ON)
+endif()
+# Option 4 - if we are using bzip library
+option(Teem_BZIP2 "Build Teem with support for bzip compression." OFF)
+# Option 5 - if we are using threading libraries
+option(Teem_PTHREAD "Build Teem with pthread library support." ON)
+# Option 6 - Look for "levmar" library <http://www.ics.forth.gr/~lourakis/levmar/>
+option(Teem_LEVMAR "Build Teem with levmar library support." OFF)
+# Option 7 - Look for fftw <http://www.fftw.org/>
+option(Teem_FFTW3 "Build Teem with fftw library support." OFF)
+# For Teem v2 support for SGI IRIX Direct I/O is removed
+## Option 8
+# option(USE_DIRECTIO "Use DirectIO for Nrrd file IO. Only valid on SGI systems." OFF)
+# Option 9-->8
+option(Teem_USE_LIB_INSTALL_SUBDIR "Add a Teem-X.Y.Z directory layer to the installation tree for libraries and archives." OFF)
+# Option 10-->9 - Stand-alone programs to process hex encoding of data
+option(BUILD_HEX "Build dehex and enhex" OFF)
+# Option 11-->10 - For testing
+option(BUILD_TESTING "Enable this to perform testing of Teem" ON)
+
+#-----------------------------------------------------------------------------
+# Obtain these libraries if requested
+# Option 2
+if (Teem_ZLIB)
+ # Find ZLIB
+ find_package(ZLIB)
+ if(ZLIB_FOUND)
+ add_definitions(-DTEEM_ZLIB)
+ set(Teem_ZLIB_LIB ${ZLIB_LIBRARIES})
+ set(Teem_ZLIB_IPATH ${ZLIB_INCLUDE_DIR})
+ else()
+ # We need to set this as a cache variable, so that it will show up as being turned off in the cache.
+ message("warning: Turning off Teem_ZLIB, because it wasn't found.")
+ set(Teem_ZLIB OFF CACHE BOOL "Build Teem with support for gzip compression." FORCE)
+ endif()
+endif()
+# Option 3
+if (Teem_PNG)
+ find_package(PNG)
+ if(PNG_FOUND)
+ add_definitions(-DTEEM_PNG ${PNG_DEFINITIONS})
+ set(Teem_PNG_LIB ${PNG_LIBRARIES})
+ set(Teem_PNG_IPATH ${PNG_INCLUDE_DIR})
+ else()
+ # We need to set this as a cache variable, so that it will show up as being turned off in the cache.
+ message("warning: Turning off Teem_PNG, because it wasn't found.")
+ set(Teem_PNG OFF CACHE BOOL "Build Teem with support for PNG images." FORCE)
+ endif()
+endif()
+# Option 4
+if(Teem_BZIP2)
+ find_package(BZ2)
+ if(BZ2_FOUND)
+ add_definitions(-DTEEM_BZIP2)
+ set(Teem_BZIP2_LIB ${BZ2_LIBRARIES})
+ set(Teem_BZIP2_IPATH ${BZ2_INCLUDE_DIR})
+ else()
+ # We need to set this as a cache variable, so that it will show up as being turned off in the cache.
+ message("warning: Turning off Teem_BZIP2, because it wasn't found.")
+ set(Teem_BZIP2 OFF CACHE BOOL "Build Teem with support for bzip compression." FORCE)
+ endif()
+endif()
+# Option 5
+if(Teem_PTHREAD)
+ include(FindThreads)
+ if(CMAKE_USE_PTHREADS_INIT)
+ add_definitions(-DTEEM_PTHREAD)
+ else()
+ # We need to set this as a cache variable, so that it will show up as being turned off in the cache.
+ message("warning: Turning off Teem_PTHREAD, because it wasn't found.")
+ set(Teem_PTHREAD OFF CACHE BOOL "Build Teem with pthread library support." FORCE)
+ set(Teem_PTHREAD OFF)
+ endif()
+endif()
+# Option 6
+if(Teem_LEVMAR)
+ find_package(LEVMAR)
+ if(LEVMAR_FOUND)
+ add_definitions(-DTEEM_LEVMAR)
+ set(Teem_LEVMAR_LIB ${LEVMAR_LIBRARIES})
+ set(Teem_LEVMAR_IPATH ${LEVMAR_INCLUDE_DIR})
+ else()
+ # We need to set this as a cache variable, so that it will show up as being turned off in the cache.
+ message("warning: Turning off Teem_LEVMAR, because it wasn't found.")
+ set(Teem_LEVMAR OFF CACHE BOOL "Build Teem with levmar library support." FORCE)
+ endif()
+endif()
+# Option 7
+if(Teem_FFTW3)
+ find_package(FFTW3)
+ if(FFTW3_FOUND)
+ add_definitions(-DTEEM_FFTW3)
+ set(Teem_FFTW3_LIB ${FFTW3_LIBRARIES})
+ set(Teem_FFTW3_IPATH ${FFTW3_INCLUDE_DIR})
+ else()
+ # We need to set this as a cache variable, so that it will show up as being turned off in the cache.
+ message("warning: Turning off Teem_FFTW3, because it wasn't found.")
+ set(Teem_FFTW3 OFF CACHE BOOL "Build Teem with fftw library support." FORCE)
+ endif()
+endif()
+# Option 8
+# DirectIO is the fast way to do multi-gigabyte I/O and currently only available for SGI platforms.
+# (and given the fate of SGI, this has been removed from Teem v2)
+#if(USE_DIRECTIO)
+# add_definitions(-DTEEM_DIO=1)
+#else()
+# add_definitions(-DTEEM_DIO=0)
+#endif()
+# Option 9->8
+if(Teem_USE_LIB_INSTALL_SUBDIR)
+ set(EXTRA_INSTALL_PATH /Teem-${Teem_VERSION_STRING})
+else()
+ set(EXTRA_INSTALL_PATH "")
+endif()
+# Option 10->9 - Stand-alone programs to process hex encoding of data
+if(BUILD_HEX)
+ add_subdirectory(src/hex)
+endif()
+# Option 11->10 - For testing
+if(BUILD_TESTING)
+ include(CTest)
+ enable_testing()
+ set(BUILDNAME "${BUILDNAME}" CACHE STRING "Name of build on the dashboard")
+ mark_as_advanced(BUILDNAME)
+ mark_as_advanced(TCL_TCLSH)
+ add_subdirectory(Testing)
+endif()
+
+#-----------------------------------------------------------------------------
+# For Visual Studio we don't care about warnings about deprecated sprintf and the like.
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+ add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
+endif()
+
+# set the Teem library as a list (TEEM_LIB_LIST)
+set(Teem_LIBRARIES
+ "air" "hest" "biff" "nrrd" "ell" "moss" "unrrdu" "alan" "tijk" "gage" "dye"
+ "bane" "limn" "echo" "hoover" "seek" "ten" "elf" "pull" "coil" "push" "mite" "meet")
+
+# set the Teem headers as a list
+set(Teem_HEADER_FILES
+ "air/air.h"
+ "hest/hest.h"
+ "biff/biff.h"
+ "nrrd/nrrd.h" "nrrd/nrrdDefines.h" "nrrd/nrrdMacros.h" "nrrd/nrrdEnums.h"
+ "ell/ell.h" "ell/ellMacros.h"
+ "moss/moss.h"
+ "unrrdu/unrrdu.h"
+ "alan/alan.h"
+ "tijk/tijk.h"
+ "gage/gage.h"
+ "dye/dye.h"
+ "bane/bane.h"
+ "limn/limn.h"
+ "echo/echo.h"
+ "hoover/hoover.h"
+ "seek/seek.h"
+ "ten/ten.h" "ten/tenMacros.h"
+ "elf/elf.h"
+ "pull/pull.h"
+ "coil/coil.h"
+ "push/push.h"
+ "mite/mite.h"
+ "meet/meet.h")
+
+set(Teem_INSTALLED_HEADER_FILES)
+foreach(header_file IN LISTS Teem_HEADER_FILES)
+ # When debugging, uncomment this line
+ # message(STATUS "Copy header file: ${header_file}")
+ get_filename_component(file_no_path "${header_file}" NAME)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/${header_file}"
+ "${CMAKE_CURRENT_BINARY_DIR}/include/teem/${file_no_path}" COPYONLY IMMEDIATE)
+ list(APPEND Teem_INSTALLED_HEADER_FILES "${CMAKE_CURRENT_BINARY_DIR}/include/teem/${file_no_path}")
+endforeach()
+
+#-----------------------------------------------------------------------------
+# header that defines AIR_EXISTS_MACRO_FAILS
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/airExistsConf.h
+ ${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h)
+list(APPEND Teem_INSTALLED_HEADER_FILES "${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h")
+
+#-----------------------------------------------------------------------------
+# Build the Mega library
+add_library(teem "")
+foreach(dir IN LISTS Teem_LIBRARIES)
+ add_subdirectory(src/${dir})
+endforeach()
+
+#-----------------------------------------------------------------------------
+# Set up some library paths for installation. Windows will ingore the
+# RPATH stuff, and mac will ingore the INSTALL_RPATH. Make sure for
+# macs to set BUILD_WITH_INSTALL_RPATH OFF and set INSTALL_NAME_DIR.
+# I belive INSTALL_NAME_DIR will be ignored on linux.
+set_target_properties(teem PROPERTIES
+ BUILD_WITH_INSTALL_RPATH OFF
+ INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib
+ INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/lib
+ SOVERSION 1
+ VERSION ${Teem_VERSION_STRING})
+
+if(Teem_ZLIB_LIB)
+ target_include_directories(teem PUBLIC ${Teem_ZLIB_IPATH})
+ target_include_directories(teem PUBLIC ${Teem_ZLIB_DLLCONF_IPATH})
+ target_link_libraries(teem ${Teem_ZLIB_LIB})
+endif()
+if(Teem_PNG_LIB)
+ target_include_directories(teem PUBLIC ${Teem_PNG_IPATH})
+ target_include_directories(teem PUBLIC ${Teem_PNG_DLLCONF_IPATH})
+ target_link_libraries(teem ${Teem_PNG_LIB})
+endif()
+if(Teem_BZIP2_LIB)
+ target_include_directories(teem PUBLIC ${Teem_BZIP2_IPATH})
+ target_include_directories(teem PUBLIC ${Teem_BZIP2_DLLCONF_IPATH})
+ target_link_libraries(teem ${Teem_BZIP2_LIB})
+endif()
+if(Teem_LEVMAR_LIB)
+ target_include_directories(teem PUBLIC ${Teem_LEVMAR_IPATH})
+ target_include_directories(teem PUBLIC ${Teem_LEVMAR_DLLCONF_IPATH})
+ target_link_libraries(teem ${Teem_LEVMAR_LIB})
+endif()
+if(Teem_FFTW3_LIB)
+ target_include_directories(teem PUBLIC ${Teem_FFTW3_IPATH})
+ target_include_directories(teem PUBLIC ${Teem_FFTW3_DLLCONF_IPATH})
+ target_link_libraries(teem ${Teem_FFTW3_LIB})
+endif()
+if(Teem_PTHREAD)
+ target_link_libraries(teem ${CMAKE_THREAD_LIBS_INIT})
+endif()
+if(UNIX)
+ target_link_libraries(teem -lm)
+endif()
+
+# install targets
+install(TARGETS teem EXPORT teem
+ RUNTIME DESTINATION bin COMPONENT RuntimeLibraries
+ LIBRARY DESTINATION lib${EXTRA_INSTALL_PATH} COMPONENT RuntimeLibraries
+ ARCHIVE DESTINATION lib${EXTRA_INSTALL_PATH} COMPONENT Development)
+
+export(TARGETS teem FILE ${Teem_BINARY_DIR}/TeemLibraryDepends.cmake)
+
+#-----------------------------------------------------------------------------
+# Now compile the binaries
+add_subdirectory(src/bin)
+
+#-----------------------------------------------------------------------------
+set(CFLAGS "${CMAKE_C_FLAGS}")
+set(CC "${CMAKE_C_COMPILER}")
+
+set(Teem_EXECUTABLE_DIRS ${__RUNTIME_OUTPUT_PATH_} CACHE INTERNAL "Single output directory for building all executables.")
+
+
+# Teem_CV_ prefixed variables are only used inside TeemConfig.cmake.in for
+# replacement during the following two CONFIGURE_FILE calls. One is for use
+# from the build tree, one is for use from the install tree.
+
+
+# For build tree usage
+
+# In the build tree, TeemConfig.cmake is in Teem_BINARY_DIR. The root of the
+# tree for finding include files relative to TeemConfig.cmake is "."
+set(Teem_CV_CONFIG_TO_ROOT ".")
+set(Teem_CV_BUILD_SETTINGS_FILE ${Teem_BINARY_DIR}/TeemBuildSettings.cmake)
+set(Teem_CV_LIBRARY_DEPENDS_FILE ${Teem_BINARY_DIR}/TeemLibraryDepends.cmake)
+set(Teem_CV_EXECUTABLE_DIRS ${Teem_EXECUTABLE_DIRS})
+set(Teem_CV_LIBRARY_DIRS ${__LIBRARY_OUTPUT_PATH__})
+set(Teem_CV_USE_FILE ${Teem_SOURCE_DIR}/CMake/TeemUse.cmake)
+set(Teem_CV_INCLUDE_DIRS "${Teem_BINARY_DIR}/include")
+set(Teem_CV_BUILT_LIBRARIES teem) # The libraries built by teem. Currently we only build the mega library.
+
+configure_file("${Teem_SOURCE_DIR}/CMake/TeemConfig.cmake.in"
+ "${Teem_BINARY_DIR}/TeemConfig.cmake" @ONLY IMMEDIATE)
+
+
+# For install tree usage
+
+# In the install tree, TeemConfig.cmake is in lib/cmake/teem or lib/Teem-X.Y/cmake/teem based on the
+# value of Teem_USE_LIB_INSTALL_SUBDIR. The root of the tree for finding
+# include files relative to TeemConfig.cmake is therefore "../../../.." or "../../.."
+if(Teem_USE_LIB_INSTALL_SUBDIR)
+ set(Teem_CV_CONFIG_TO_ROOT "../../../..")
+else()
+ set(Teem_CV_CONFIG_TO_ROOT "../../..")
+endif()
+
+set(Teem_CV_LIBRARY_DEPENDS_FILE "\${Teem_ROOT_DIR}/lib${EXTRA_INSTALL_PATH}/cmake/teem/TeemLibraryDepends.cmake")
+set(Teem_CV_EXECUTABLE_DIRS "\${Teem_ROOT_DIR}/bin")
+set(Teem_CV_LIBRARY_DIRS "\${Teem_ROOT_DIR}/lib${EXTRA_INSTALL_PATH}")
+set(Teem_CV_USE_FILE "\${Teem_ROOT_DIR}/lib${EXTRA_INSTALL_PATH}/TeemUse.cmake")
+set(Teem_CV_INCLUDE_DIRS "\${Teem_ROOT_DIR}/include")
+set(Teem_CV_BUILT_LIBRARIES teem) # single library containing all teem "libraries"
+
+configure_file("${Teem_SOURCE_DIR}/CMake/TeemConfig.cmake.in"
+ "${Teem_BINARY_DIR}/CMake/TeemConfig.cmake" @ONLY IMMEDIATE)
+
+# install headers
+install(FILES ${Teem_INSTALLED_HEADER_FILES}
+ DESTINATION include/teem
+ COMPONENT Development)
+
+# make install and cpack
+# ${Teem_BINARY_DIR} is the build directory like /Teem-build
+set(Teem_CV_BUILD_SETTINGS_FILE "\${Teem_ROOT_DIR}/lib${EXTRA_INSTALL_PATH}/cmake/teem/TeemBuildSettings.cmake")
+file(WRITE ${Teem_BINARY_DIR}/TeemBuildSettings.cmake)
+install(EXPORT teem DESTINATION lib${EXTRA_INSTALL_PATH}/cmake/teem FILE TeemLibraryDepends.cmake)
+install(FILES
+ "${Teem_BINARY_DIR}/CMake/TeemConfig.cmake"
+ "${Teem_SOURCE_DIR}/CMake/TeemUse.cmake"
+ "${Teem_BINARY_DIR}/TeemBuildSettings.cmake"
+ DESTINATION lib${EXTRA_INSTALL_PATH}/cmake/teem
+ COMPONENT Development)
Added: teem/trunk/src/air/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/air/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/air/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,24 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(AIR_SOURCES
+ 754.c
+ air.h
+ array.c
+ endianAir.c
+ enum.c
+ heap.c
+ math.c
+ miscAir.c
+ mop.c
+ parseAir.c
+ privateAir.h
+ randMT.c
+ randJSF.c
+ sane.c
+ string.c
+ threadAir.c
+ )
+
+target_sources(teem PRIVATE ${AIR_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( air FILES ${AIR_SOURCES} )
Added: teem/trunk/src/alan/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/alan/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/alan/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,12 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(ALAN_SOURCES
+ alan.h
+ coreAlan.c
+ enumsAlan.c
+ methodsAlan.c
+ )
+
+target_sources(teem PRIVATE ${ALAN_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( alan FILES ${ALAN_SOURCES} )
Added: teem/trunk/src/bane/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/bane/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/bane/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,29 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(BANE_SOURCES
+ bane.h
+ clip.c
+ defaultsBane.c
+ gkmsFlotsam.c
+ gkmsHvol.c
+ gkmsInfo.c
+ gkmsMite.c
+ gkmsOpac.c
+ gkmsPvg.c
+ gkmsScat.c
+ gkmsTxf.c
+ hvol.c
+ inc.c
+ measr.c
+ methodsBane.c
+ privateBane.h
+ rangeBane.c
+ scat.c
+ trex.c
+ trnsf.c
+ valid.c
+ )
+
+target_sources(teem PRIVATE ${BANE_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( bane FILES ${BANE_SOURCES} )
Added: teem/trunk/src/biff/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/biff/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/biff/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,12 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(BIFF_SOURCES
+ privateBiff.h
+ biff.h
+ biffmsg.c
+ biffbiff.c
+ )
+
+target_sources(teem PRIVATE ${BIFF_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( BIFF FILES ${BIFF_SOURCES} )
Added: teem/trunk/src/bin/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/bin/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/bin/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,67 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+macro(CREATE_EXEC name sources)
+ add_executable(${name} ${sources})
+ target_link_libraries(${name} teem)
+ install(TARGETS ${name}
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+ COMPONENT Runtime
+ )
+ set_target_properties(${name} PROPERTIES
+ INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib
+ )
+endmacro()
+
+# unu starts by calling nrrdSanityOrDie; other build info moved to "unu built"
+# CREATE_EXEC(nrrdSanity nrrdSanity.c)
+CREATE_EXEC(overrgb overrgb.c)
+CREATE_EXEC(mrender mrender.c)
+CREATE_EXEC(miter miter.c)
+CREATE_EXEC(vprobe vprobe.c)
+CREATE_EXEC(gprobe gprobe.c)
+# CREATE_EXEC(ninspect ninspect.c) # moved to "unu ninspect"
+CREATE_EXEC(unu unu.c)
+CREATE_EXEC(puller puller.c)
+CREATE_EXEC(tend tend.c)
+
+### For TeemV2, these were removed from compilation: they have no compelling
+### general purpose, for reasons indicated with further comments. No reason
+### to delete the sources though; they can still be compiled by other means.
+##
+## NOTE: The BUILD_EXPERIMENTAL_LIBS-dependent inclusion of binaries has to be
+## done with knowledge of how BUILD_EXPERIMENTAL_LIBS behaves in the top-level
+## CMakeLists.txt file
+# if(BUILD_EXPERIMENTAL_APPS)
+# CREATE_EXEC(airSanity airSanity.c) # tests included in nrrdSanity
+# CREATE_EXEC(cubic cubic.c) # just calls ell_cubic; more easily done via Python wrappers
+# CREATE_EXEC(qbert qbert.c) # created for volume rendering on GPUs from 20 years ago
+# CREATE_EXEC(ilk ilk.c) # now part of unu: "unu ilk"
+# CREATE_EXEC(emap emap.c) # functionality not currently handled elsewhere,
+# but nor is it is really needed for anything
+# CREATE_EXEC(talkweb talkweb.c) # the web has changed in 20 years
+# CREATE_EXEC(pprobe pprobe.c) # gprobe can do this
+# CREATE_EXEC(ungantry ungantry.c) # gprobe can do this
+# CREATE_EXEC(deconv deconv.c) # functionality not currently handled elsewhere,
+# but nor is it is really needed for anything
+# if(BUILD_EXPERIMENTAL_LIBS)
+# CREATE_EXEC(gkms gkms.c) # hasn't been tested in a long time
+# CREATE_EXEC(spots spots.c) # hasn't been tested in a long time
+# endif()
+# endif()
Added: teem/trunk/src/coil/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/coil/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/coil/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,16 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(COIL_SOURCES
+ coil.h
+ coreCoil.c
+ defaultsCoil.c
+ enumsCoil.c
+ methodsCoil.c
+ realmethods.c
+ scalarCoil.c
+ tensorCoil.c
+ )
+
+target_sources(teem PRIVATE ${COIL_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( coil FILES ${COIL_SOURCES} )
Added: teem/trunk/src/dye/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/dye/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/dye/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,11 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(DYE_SOURCES
+ convertDye.c
+ dye.h
+ methodsDye.c
+ )
+
+target_sources(teem PRIVATE ${DYE_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( dye FILES ${DYE_SOURCES} )
Added: teem/trunk/src/echo/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/echo/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/echo/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,23 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(ECHO_SOURCES
+ bounds.c
+ color.c
+ echo.h
+ enumsEcho.c
+ intx.c
+ lightEcho.c
+ list.c
+ matter.c
+ methodsEcho.c
+ model.c
+ objmethods.c
+ privateEcho.h
+ renderEcho.c
+ set.c
+ sqd.c
+ )
+
+target_sources(teem PRIVATE ${ECHO_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( echo FILES ${ECHO_SOURCES} )
Added: teem/trunk/src/elf/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/elf/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/elf/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,13 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(ELF_SOURCES
+ ballStickElf.c
+ ESHEstimElf.c
+ glyphElf.c
+ maximaElf.c
+ elf.h
+ )
+
+target_sources(teem PRIVATE ${ELF_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( elf FILES ${ELF_SOURCES} )
Added: teem/trunk/src/ell/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/ell/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/ell/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,17 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(ELL_SOURCES
+ cubicEll.c
+ eigen.c
+ ell.h
+ ellMacros.h
+ genmat.c
+ mat.c
+ miscEll.c
+ quat.c
+ vecEll.c
+ )
+
+target_sources(teem PRIVATE ${ELL_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( ell FILES ${ELL_SOURCES} )
Added: teem/trunk/src/gage/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/gage/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/gage/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,31 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(GAGE_SOURCES
+ ctx.c
+ deconvolve.c
+ defaultsGage.c
+ filter.c
+ gage.h
+ kind.c
+ miscGage.c
+ print.c
+ privateGage.h
+ pvl.c
+ scl.c
+ sclanswer.c
+ sclfilter.c
+ sclprint.c
+ shape.c
+ st.c
+ stack.c
+ stackBlur.c
+ update.c
+ vecGage.c
+ twovecGage.c
+ vecprint.c
+ optimsig.c
+ )
+
+target_sources(teem PRIVATE ${GAGE_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( gage FILES ${GAGE_SOURCES} )
Added: teem/trunk/src/hest/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/hest/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/hest/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,15 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(HEST_SOURCES
+ defaultsHest.c
+ hest.h
+ methodsHest.c
+ parseHest.c
+ privateHest.h
+ usage.c
+ adders.c
+ )
+
+target_sources(teem PRIVATE ${HEST_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( hest FILES ${HEST_SOURCES} )
Added: teem/trunk/src/hex/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/hex/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/hex/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,26 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2023 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+add_executable(dehex
+ dehex.c
+)
+add_executable(enhex
+ enhex.c
+)
+
Added: teem/trunk/src/hoover/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/hoover/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/hoover/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,13 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(HOOVER_SOURCES
+ defaultsHoover.c
+ hoover.h
+ methodsHoover.c
+ rays.c
+ stub.c
+ )
+
+target_sources(teem PRIVATE ${HOOVER_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( hoover FILES ${HOOVER_SOURCES} )
Added: teem/trunk/src/limn/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/limn/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/limn/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,43 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+# NOTE: used to be that lpu_*.c files were not listed here, since the CMake
+# build didn't create the "lpu" utility. However, with the July 2022 CFFI
+# work, had to ensure that libteem was consistent with headers
+set(LIMN_SOURCES
+ cam.c
+ defaultsLimn.c
+ enumsLimn.c
+ envmap.c
+ hestLimn.c
+ io.c
+ light.c
+ limn.h
+ methodsLimn.c
+ obj.c
+ polydata.c
+ polyfilter.c
+ polymod.c
+ polyshapes.c
+ privateLimn.h
+ qn.c
+ renderLimn.c
+ shapes.c
+ splineEval.c
+ splineMethods.c
+ splineMisc.c
+ splineFit.c
+ transform.c
+ lpuFlotsam.c
+ lpu_about.c
+ lpu_ccfind.c
+ lpu_psel.c
+ lpu_rast.c
+ lpu_verts.c
+ lpu_meas.c
+ lpu_sort.c
+ lpu_cbfit.c
+ )
+
+target_sources(teem PRIVATE ${LIMN_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( limn FILES ${LIMN_SOURCES} )
Added: teem/trunk/src/meet/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/meet/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/meet/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,13 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(MEET_SOURCES
+ enumall.c
+ meetNrrd.c
+ meetGage.c
+ meetPull.c
+ meet.h
+ )
+
+target_sources(teem PRIVATE ${MEET_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( meet FILES ${MEET_SOURCES} )
Added: teem/trunk/src/mite/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/mite/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/mite/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,18 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(MITE_SOURCES
+ defaultsMite.c
+ kindnot.c
+ mite.h
+ privateMite.h
+ ray.c
+ renderMite.c
+ shade.c
+ thread.c
+ txf.c
+ user.c
+ )
+
+target_sources(teem PRIVATE ${MITE_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( mite FILES ${MITE_SOURCES} )
Added: teem/trunk/src/moss/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/moss/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/moss/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,15 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(MOSS_SOURCES
+ defaultsMoss.c
+ hestMoss.c
+ methodsMoss.c
+ moss.h
+ privateMoss.h
+ sampler.c
+ xform.c
+ )
+
+target_sources(teem PRIVATE ${MOSS_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( moss FILES ${MOSS_SOURCES} )
Added: teem/trunk/src/nrrd/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/nrrd/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/nrrd/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,65 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(NRRD_SOURCES
+ accessors.c
+ apply1D.c
+ apply2D.c
+ arith.c
+ arraysNrrd.c
+ axis.c
+ cc.c
+ ccmethods.c
+ comment.c
+ convertNrrd.c
+ defaultsNrrd.c
+ deringNrrd.c
+ encoding.c
+ encodingAscii.c
+ encodingBzip2.c
+ encodingGzip.c
+ encodingHex.c
+ encodingRaw.c
+ encodingZRL.c
+ endianNrrd.c
+ enumsNrrd.c
+ filt.c
+ format.c
+ formatEPS.c
+ formatNRRD.c
+ formatPNG.c
+ formatPNM.c
+ formatText.c
+ formatVTK.c
+ gzio.c
+ hestNrrd.c
+ histogram.c
+ iter.c
+ kernel.c
+ keyvalue.c
+ map.c
+ measure.c
+ methodsNrrd.c
+ nrrd.h
+ nrrdDefines.h
+ nrrdEnums.h
+ nrrdMacros.h
+ parseNrrd.c
+ privateNrrd.h
+ range.c
+ read.c
+ reorder.c
+ resampleContext.c
+ fftNrrd.c
+ resampleNrrd.c
+ simple.c
+ subset.c
+ superset.c
+ tmfKernel.c
+ winKernel.c
+ bsplKernel.c
+ write.c
+ )
+
+target_sources(teem PRIVATE ${NRRD_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( nrrd FILES ${NRRD_SOURCES} )
Added: teem/trunk/src/pull/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/pull/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/pull/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,27 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(PULL_SOURCES
+ actionPull.c
+ binningPull.c
+ constraints.c
+ contextPull.c
+ parmPull.c
+ initPull.c
+ corePull.c
+ defaultsPull.c
+ energy.c
+ infoPull.c
+ pointPull.c
+ privatePull.h
+ pull.h
+ taskPull.c
+ volumePull.c
+ popcntl.c
+ ccPull.c
+ enumsPull.c
+ trace.c
+ )
+
+target_sources(teem PRIVATE ${PULL_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( pull FILES ${PULL_SOURCES} )
Added: teem/trunk/src/push/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/push/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/push/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,17 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(PUSH_SOURCES
+ action.c
+ binning.c
+ corePush.c
+ defaultsPush.c
+ forces.c
+ methodsPush.c
+ privatePush.h
+ push.h
+ setup.c
+ )
+
+target_sources(teem PRIVATE ${PUSH_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( push FILES ${PUSH_SOURCES} )
Added: teem/trunk/src/seek/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/seek/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/seek/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,18 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(SEEK_SOURCES
+ descend.c
+ enumsSeek.c
+ extract.c
+ methodsSeek.c
+ privateSeek.h
+ seek.h
+ setSeek.c
+ tables.c
+ textract.c
+ updateSeek.c
+ )
+
+target_sources(teem PRIVATE ${SEEK_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( seek FILES ${SEEK_SOURCES} )
Added: teem/trunk/src/ten/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/ten/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/ten/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,87 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(TEN_SOURCES
+ aniso.c
+ bimod.c
+ bvec.c
+ chan.c
+ defaultsTen.c
+ enumsTen.c
+ epireg.c
+ estimate.c
+ fiber.c
+ fiberMethods.c
+ glyph.c
+ grads.c
+ miscTen.c
+ mod.c
+ path.c
+ privateTen.h
+ qglox.c
+ qseg.c
+ ten.h
+ tenDwiGage.c
+ tenGage.c
+ tenMacros.h
+ tendAbout.c
+ tendAnhist.c
+ tendAnplot.c
+ tendAnscale.c
+ tendAnvol.c
+ tendAvg.c
+ tendBfit.c
+ tendBmat.c
+ tendEllipse.c
+ tendEpireg.c
+ tendEstim.c
+ tendEval.c
+ tendEvaladd.c
+ tendEvalmult.c
+ tendEvalclamp.c
+ tendEvalpow.c
+ tendEvec.c
+ tendEvecrgb.c
+ tendEvq.c
+ tendExp.c
+ tendExpand.c
+ tendFiber.c
+ tendFlotsam.c
+ tendGlyph.c
+ tendGrads.c
+ tendHelix.c
+ tendLog.c
+ tendMake.c
+ tendNorm.c
+ tendPoint.c
+ tendSatin.c
+ tendShrink.c
+ tendSim.c
+ tendMsim.c
+ tendMfit.c
+ tendMconv.c
+ tendSlice.c
+ tendSten.c
+ tendTconv.c
+ tendTriple.c
+ tendUnmf.c
+ tensor.c
+ triple.c
+ experSpec.c
+ tenModel.c
+ modelZero.c
+ modelB0.c
+ modelBall.c
+ model1Stick.c
+ model1Vector2D.c
+ model1Unit2D.c
+ model2Unit2D.c
+ modelBall1StickEMD.c
+ modelBall1Stick.c
+ modelBall1Cylinder.c
+ model1Cylinder.c
+ model1Tensor2.c
+ )
+
+target_sources(teem PRIVATE ${TEN_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( ten FILES ${TEN_SOURCES} )
Added: teem/trunk/src/tijk/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/tijk/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/tijk/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,21 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(TIJK_SOURCES
+ 2dTijk.c
+ 3dTijk.c
+ approxTijk.c
+ enumsTijk.c
+ fsTijk.c
+ miscTijk.c
+ nrrdTijk.c
+ shTijk.c
+ privateTijk.h
+ convertQuietPush.h
+ convertQuietPop.h
+ shtables.h
+ tijk.h
+ )
+
+target_sources(teem PRIVATE ${TIJK_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( tijk FILES ${TIJK_SOURCES} )
Added: teem/trunk/src/unrrdu/CMakeLists-v1.txt
===================================================================
--- teem/trunk/src/unrrdu/CMakeLists-v1.txt (rev 0)
+++ teem/trunk/src/unrrdu/CMakeLists-v1.txt 2025-09-04 03:46:19 UTC (rev 7352)
@@ -0,0 +1,87 @@
+# This variable will help provide a master list of all the sources.
+# Add new source files here.
+set(UNRRDU_SOURCES
+ fft.c
+ i2w.c
+ w2i.c
+ 1op.c
+ 2op.c
+ 3op.c
+ affine.c
+ about.c
+ built.c
+ axdelete.c
+ axinfo.c
+ basinfo.c
+ axinsert.c
+ axmerge.c
+ axsplit.c
+ block.c
+ ccadj.c
+ ccfind.c
+ ccmerge.c
+ ccsettle.c
+ cmedian.c
+ convert.c
+ crop.c
+ acrop.c
+ data.c
+ dering.c
+ dhisto.c
+ dice.c
+ dist.c
+ env.c
+ flip.c
+ flotsam.c
+ gamma.c
+ head.c
+ heq.c
+ histax.c
+ histo.c
+ imap.c
+ inset.c
+ jhisto.c
+ join.c
+ lut.c
+ lut2.c
+ make.c
+ minmax.c
+ cksum.c
+ diff.c
+ dnorm.c
+ vidicon.c
+ grid.c
+ ilk.c
+ ninspect.c
+ hack.c
+ aabplot.c
+ undos.c
+ uncmt.c
+ mlut.c
+ mrmap.c
+ pad.c
+ permute.c
+ privateUnrrdu.h
+ project.c
+ quantize.c
+ resample.c
+ reshape.c
+ rmap.c
+ save.c
+ shuffle.c
+ slice.c
+ sselect.c
+ splice.c
+ subst.c
+ swap.c
+ tile.c
+ unorient.c
+ unquantize.c
+ unrrdu.h
+ untile.c
+ unblock.c
+)
+
+target_sources(teem PRIVATE ${UNRRDU_SOURCES})
+# This will group all the source files in the VS project by directory
+source_group( unrrdu FILES ${UNRRDU_SOURCES} )
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-03 19:29:21
|
Revision: 7351
http://sourceforge.net/p/teem/code/7351
Author: kindlmann
Date: 2025-09-03 19:29:19 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
naming separate files to prepare for coherent switch to updated CMake files
Added Paths:
-----------
teem/trunk/CMakeLists-v2.txt
teem/trunk/src/air/CMakeLists-v2.txt
teem/trunk/src/alan/CMakeLists-v2.txt
teem/trunk/src/bane/CMakeLists-v2.txt
teem/trunk/src/biff/CMakeLists-v2.txt
teem/trunk/src/bin/CMakeLists-v2.txt
teem/trunk/src/coil/CMakeLists-v2.txt
teem/trunk/src/dye/CMakeLists-v2.txt
teem/trunk/src/echo/CMakeLists-v2.txt
teem/trunk/src/elf/CMakeLists-v2.txt
teem/trunk/src/ell/CMakeLists-v2.txt
teem/trunk/src/gage/CMakeLists-v2.txt
teem/trunk/src/hest/CMakeLists-v2.txt
teem/trunk/src/hex/CMakeLists-v2.txt
teem/trunk/src/hoover/CMakeLists-v2.txt
teem/trunk/src/limn/CMakeLists-v2.txt
teem/trunk/src/meet/CMakeLists-v2.txt
teem/trunk/src/mite/CMakeLists-v2.txt
teem/trunk/src/moss/CMakeLists-v2.txt
teem/trunk/src/nrrd/CMakeLists-v2.txt
teem/trunk/src/pull/CMakeLists-v2.txt
teem/trunk/src/push/CMakeLists-v2.txt
teem/trunk/src/seek/CMakeLists-v2.txt
teem/trunk/src/ten/CMakeLists-v2.txt
teem/trunk/src/tijk/CMakeLists-v2.txt
teem/trunk/src/unrrdu/CMakeLists-v2.txt
Removed Paths:
-------------
teem/trunk/CMakeLists-10.txt
Deleted: teem/trunk/CMakeLists-10.txt
===================================================================
--- teem/trunk/CMakeLists-10.txt 2025-09-03 19:15:56 UTC (rev 7350)
+++ teem/trunk/CMakeLists-10.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -1,546 +0,0 @@
-#
-# Teem: Tools to process and visualize scientific data and images
-# Copyright (C) 2009--2025 University of Chicago
-# Copyright (C) 2005--2008 Gordon Kindlmann
-# Copyright (C) 1998--2004 University of Utah
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public License
-# (LGPL) as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-# The terms of redistributing and/or modifying this software also
-# include exceptions to the LGPL that facilitate static linking.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, see <https://www.gnu.org/licenses/>.
-#
-
-# Teem/CMakeLists.txt Version 10.85
-# Re-written entirely for TeemV2
-
-#-----------------------------------------------------------------------------
-# Project setup: version, metadata, and language
-
-# CMake Version 3.25 came out November 16, 2022
-# https://www.kitware.com/cmake-3-25-0-available-for-download/
-# why use 3.25: has nicer syntax for try_compile
-cmake_minimum_required(VERSION 3.25)
-
-# Teem version number (must match values in src/air/air.h)
-set(Teem_VERSION_MAJOR 1)
-set(Teem_VERSION_MINOR 12)
-set(Teem_VERSION_PATCH 0)
-set(Teem_VERSION_STRING ${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}.${Teem_VERSION_PATCH})
-
-project(Teem VERSION ${Teem_VERSION_STRING}
- DESCRIPTION "Teem libraries developed by Gordon Kindlmann et al."
- LANGUAGES C)
-
-message(STATUS "
-
-
-********************************************************************
-** Please join the Teem-users discord https://discord.gg/xBBqZGXkF7
-** to share how Teem works or does not work for you!
-** For example, are these re-written CMakeLists.txt files working?
-********************************************************************
-
-
-")
-
-#-----------------------------------------------------------------------------
-# Module paths and helper includes
-
-include(GNUInstallDirs)
-include(CMakeParseArguments) # for cmake_parse_arguments
-# include(CMakePrintHelpers) # for debugging via cmake_print_variables(varname)
-
-# CMake modules path (for e.g. FindLEVMAR.cmake)
-set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
-
-#-----------------------------------------------------------------------------
-# Dependency list and project options
-# - canonical list of optional dependencies
-# - option() flags for enabling/disabling them
-
-# Do we make a shared library? BUILD_SHARED_LIBS has particular meaning to CMake
-# https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
-# https://gitlab.kitware.com/cmake/cmake/-/issues/25699
-option(BUILD_SHARED_LIBS "Build a libteem shared library" ON)
-
-# The canonical list of libraries that Teem can (optionally) depend on. Within this
-# CMakeLists.txt file, each one is a "DEP" or dependency However, FYI, within the
-# GNUmakefiles, each is called an EXT or external. Note: inter-dependency dependencies
-# are known in the INTERFACE_LINK_LIBRARIES of each target.
-set(_Teem_DEPS PNG ZLIB BZIP2 LEVMAR FFTW3 PTHREAD)
-
-# docstrings of all dependencies, to avoid redundancy between
-# option(Teem_DEP "${_doc}" ON) and set(Teem_DEP OFF CACHE BOOL "${_doc}" FORCE)
-set(_doc_ZLIB "Enable nrrd support for zlib (\"gzip\") data encoding")
-set(_doc_PNG "Enable nrrd support for PNG format images")
-set(_doc_BZIP2 "Enable nrrd support for bzip2 data encoding")
-set(_doc_PTHREAD "Enable hoover support for multi-threaded rendering")
-set(_doc_LEVMAR "Build with levmar for better elf and ten")
-set(_doc_FFTW3 "Build with fftw3 to enable nrrdFFT() and `unu fft`")
-
-# Whether to default to DEP being ON or OFF
-set(_dflt_ZLIB ON)
-set(_dflt_PNG ON)
-set(_dflt_BZIP2 OFF)
-set(_dflt_PTHREAD ON)
-set(_dflt_LEVMAR OFF)
-set(_dflt_FFTW3 OFF)
-
-# Add an option() for Teem_USE_DEP for each dependency DEP
-foreach(_tdep IN LISTS _Teem_DEPS)
- # option name docstring default value
- option(Teem_USE_${_tdep} "${_doc_${_tdep}}" ${_dflt_${_tdep}})
-endforeach()
-
-# Other options
-option(Teem_BUILD_HEX_UTILS "Build stand-alone raw<-->hex decoder/encoder" OFF)
-option(BUILD_TESTING "Build with (in-progress) Teem tests" OFF)
-option(Teem_INSTALL_VERSIONED_SUBDIRS "Install in Teem-X.Y subdir of install/{bin,lib,include}" OFF)
-
-#-----------------------------------------------------------------------------
-# RPATH settings for macOS
-#
-# By default CMake patches installed binaries with `install_name_tool` to replace
-# build-tree RPATHs with install-tree RPATHs. On macOS this causes errors if `make
-# install` is run more than once, because the RPATH has already been modified.
-#
-# The solution used here is to build the executables *already* using the same install
-# RPATH, so no fixup is needed at install time.
-#
-# - Shared build: executables/dylibs use ${CMAKE_INSTALL_PREFIX}/lib
-# - Static build: no RPATHs needed at all
-
-if(APPLE)
- set(CMAKE_MACOSX_RPATH ON)
-
- if(BUILD_SHARED_LIBS)
- # Use install RPATH even in the build tree
- set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
- set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-
- set(CMAKE_SKIP_BUILD_RPATH FALSE)
- set(CMAKE_SKIP_INSTALL_RPATH FALSE)
- else()
- # Static build: disable RPATHs entirely
- set(CMAKE_SKIP_BUILD_RPATH TRUE)
- set(CMAKE_SKIP_INSTALL_RPATH TRUE)
- endif()
-endif()
-
-#-----------------------------------------------------------------------------
-# Dependency discovery
-# - normalize names/targets/FOUND vars
-# - run find_package() for requested DEPs
-
-# can't do PNG without ZLIB
-if(Teem_USE_PNG AND NOT Teem_USE_ZLIB)
- message(WARNING "PNG requires ZLIB; enabling Teem_USE_ZLIB.")
- set(Teem_USE_ZLIB ON)
-endif()
-
-# Special cases of CMake package names (not "DEP")
-set(_cpname_BZIP2 "BZip2")
-set(_cpname_PTHREAD "Threads")
-# Special cases of namespace::targetname (not "DEP::DEP")
-set(_target_BZIP2 "BZip2::BZip2")
-set(_target_PTHREAD "Threads::Threads")
-set(_target_FFTW3 "FFTW3::fftw3")
-# Special cases of variable name to test for DEP availability (not "DEP_FOUND")
-# (yes PTHREAD is special; there isn't a "Threads_FOUND"; but this enables uniformity)
-set(_found_PTHREAD "CMAKE_USE_PTHREADS_INIT")
-
-# Make sure _{cpack,target,found}_DEP are defined for all DEPS
-foreach(_tdep IN LISTS _Teem_DEPS)
- if(NOT DEFINED _cpname_${_tdep})
- set(_cpname_${_tdep} "${_tdep}")
- endif()
- if(NOT DEFINED _target_${_tdep})
- set(_target_${_tdep} "${_tdep}::${_tdep}")
- endif()
- if(NOT DEFINED _found_${_tdep})
- set(_found_${_tdep} "${_tdep}_FOUND")
- endif()
-endforeach()
-# CMake (still) doesn't have anything like a dictionary,
-# so we don't have (for example): _cpname[_tdep]
-# but now, after the foreach above, we have: ${_cpname_${_tdep}}
-
-# With all that uniformity set up: try to find_package() for all DEPs requested
-foreach(_tdep IN LISTS _Teem_DEPS)
- if(Teem_USE_${_tdep})
- # this DEP is requested
- find_package(${_cpname_${_tdep}} QUIET)
- if(${_found_${_tdep}})
- set(Teem_HAVE_${_tdep} TRUE)
- else()
- set(Teem_USE_${_tdep} OFF CACHE BOOL "${_doc_${_tdep}}" FORCE)
- endif()
- endif()
-endforeach()
-
-## to confirm that PNG::PNG links to ZLIB::ZLIB
-#get_target_property(_png_libs PNG::PNG INTERFACE_LINK_LIBRARIES)
-#message(STATUS "PNG::PNG links to: ${_png_libs}")
-
-#-----------------------------------------------------------------------------
-# Install directory layout
-
-# Will not include patch number, since (as of Teem V2.0)
-# API+ABI really are preserved if only patch number is changing
-if(Teem_INSTALL_VERSIONED_SUBDIRS)
- set(_verpath "teem-${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}")
- set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${_verpath}")
- set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}")
- set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}/${_verpath}")
- # We do want package name "Teem" here, not teem
- set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}/cmake/Teem")
-else()
- set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
- set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
- set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
- set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Teem")
-endif()
-# so that BIN_INSTALL_DIR can be seen by src/bin/CMakeLists.txt
-set(BIN_INSTALL_DIR "${BIN_INSTALL_DIR}" CACHE INTERNAL "Install dir for binaries")
-
-#-----------------------------------------------------------------------------
-# Configure-time feature test: does AIR_EXISTS() work like isfinite()?
-
-# A lot of work for one little macro (which GLK started using before the functionally
-# equivalent isfinite() became widely available). The little CMake/TestAIR_EXISTS.c
-# program tests the equivalent of AIR_EXISTS (but without directly using air.h's
-# AIR_EXISTS because this has to be stand-alone), to see if it can correctly detect
-# IEEE754 special values (NaNs and infinities). For this to be a useful test that informs
-# how the rest of Teem code will work, TestAIR_EXISTS.c needs to be compiled the same as
-# Teem itself will be compiled later. Sadly, it was not until Teem V2 that this
-# consistency was actually enforced (!) To further help debugging, we also print out
-# exactly how TestAIR_EXISTS.c is compiled, and we use try_compile instead of try_run
-# so the resulting executable file stays available for later inspection.
-#
-# (rejected but interesting debugging strategies:
-# message(STATUS "Pausing CMake so you can inspect temporary files...")
-# execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 30)
-# or
-# execute_process(COMMAND /bin/sh -c "read -p 'Press ENTER to continue...'")
-# )
-
-# "taex" = Test Air_EXists
-set(_taex_src "${CMAKE_CURRENT_LIST_DIR}/CMake/TestAIR_EXISTS.c")
-
-# Build flags for the probe (same as Teem itself)
-string(TOUPPER "${CMAKE_BUILD_TYPE}" _taex_BTUC)
-set(_taex_flags "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_taex_BTUC}}")
-set(_taex_me "AIR_EXISTS (compiled \"${_taex_flags}\")")
-
-# Where we want a durable copy of the compiled probe
-if(WIN32)
- set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS.exe")
-else()
- set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS")
-endif()
-
-# Remove any stale copy from previous runs
-if(EXISTS "${_taex_copy}")
- file(REMOVE "${_taex_copy}")
-endif()
-
-# Compile the probe
-message(CHECK_START "Testing whether macro ${_taex_me} detects IEEE754 special values")
-try_compile(
- _taex_compiles # boolean result: TRUE if compile succeeded
- SOURCES "${_taex_src}" # one or more source files for the test
- CMAKE_FLAGS
- "-DCMAKE_VERBOSE_MAKEFILE=ON"
- "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
- "-DCMAKE_C_FLAGS_${_taex_BTUC}=${_taex_flags}"
- "-DCMAKE_DEPENDS_USE_COMPILER=FALSE" # no -MD/-MT/-MF dependency cruft
- COPY_FILE "${_taex_copy}" # copy the built executable to a stable path
- OUTPUT_VARIABLE _taex_compile_out
- COPY_FILE_ERROR _taex_copy_error
-)
-# Always show the captured compile output, as progress indication
-string(REPLACE "\n" "\n " _taex_compile_out_indented "${_taex_compile_out}")
-message(STATUS "Compile output:\n ${_taex_compile_out_indented}")
-
-if(NOT _taex_compiles)
- message(CHECK_FAIL "compile failed")
- message(FATAL_ERROR "Could not compile ${_taex_src}")
-elseif(_taex_copy_error)
- message(CHECK_FAIL "copy failed")
- message(FATAL_ERROR "Test program compiled but could not copy: ${_taex_copy_error}")
-elseif(NOT EXISTS "${_taex_copy}")
- message(CHECK_FAIL "missing executable")
- message(FATAL_ERROR "Test program compiled but file not found at ${_taex_copy}")
-else()
- message(CHECK_PASS "compiled successfully")
-endif()
-
-# Run the test program
-message(CHECK_START "Running ${_taex_me} test program")
-# https://cmake.org/cmake/help/latest/command/execute_process.html
-execute_process(
- COMMAND "${_taex_copy}"
- RESULT_VARIABLE _taex_run_status
- OUTPUT_VARIABLE _taex_run_out
- ERROR_VARIABLE _taex_run_err
-)
-
-# Act on the results
-if(_taex_run_status EQUAL 0)
- message(CHECK_PASS "Yes, it detects IEEE754 special values")
- set(AIR_EXISTS_MACRO_FAILS 0 CACHE INTERNAL "AIR_EXISTS macro works correctly")
-else()
- # Always show stdout/stderr from the probe as indented sub-log
- if(_taex_run_out)
- string(REPLACE "\n" "\n " _taex_run_out_indented "${_taex_run_out}")
- message(STATUS "Probe stdout:\n ${_taex_run_out_indented}")
- endif()
- if(_taex_run_err)
- string(REPLACE "\n" "\n " _taex_run_err_indented "${_taex_run_err}")
- message(STATUS "Probe stderr:\n ${_taex_run_err_indented}")
- endif()
- message(CHECK_FAIL "NO, it FAILS to detect IEEE754 special values")
- set(AIR_EXISTS_MACRO_FAILS 1 CACHE INTERNAL "AIR_EXISTS macro fails")
-endif()
-
-#-----------------------------------------------------------------------------
-# We gather here to build the monolithic library 'libteem'
-
-# (whereas the old-but-recently-updated GNUmakefiles build finer-grained per-library
-# libraries libair, libbiff, etc, which are still needed for Teem hacking
-
-add_library(Teem "")
-
-# Ensure build's include dir exists for generated headers
-file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include/teem)
-
-# Public include directories
-target_include_directories(Teem
- PUBLIC
- $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
- $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
- $<INSTALL_INTERFACE:${HEADERS_INSTALL_DIR}>
-)
-
-# Say "cc -D TEEM_DEP" and link with DEP target if dependency DEP is used
-foreach(_tdep IN LISTS _Teem_DEPS)
- if(Teem_HAVE_${_tdep})
- message(STATUS "Will use ${_tdep}: ${_doc_${_tdep}}")
- target_compile_definitions(Teem PUBLIC "TEEM_${_tdep}")
- # This attaches DEP=${_target_${_tdep}} to the Teem target, but not any particular
- # command-line executable. It is PRIVATE because Teem is designed to not directly
- # expose any thing from, say, png.h or libpng in its API or ABI - there are always
- # stub alternatives for when DEP is not used. PRIVATE is saying: use DEP when
- # building the target, but do not automatically propagate DEP to things (like unu)
- # depending on the target
- target_link_libraries(Teem PRIVATE "${_target_${_tdep}}")
- else()
- message(STATUS " (not using ${_tdep}: ${_doc_${_tdep}})")
- endif()
-endforeach()
-# confirm results of loop above: what dependencies do I consume
-get_target_property(_Teem_libs Teem LINK_LIBRARIES)
-message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
-## Not interesting for Teem: what dependencies do I expose. Will show
-## "_Teem_libs-NOTFOUND" because of Teem's API/ABI invariance w.r.t dependencies
-#get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
-#message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
-
-# Say "cc -D TEEM_STATIC" if not building a shared library
-# (used as part of handling Windows "extern" analog)
-target_compile_definitions(Teem PUBLIC "$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:TEEM_STATIC>")
-
-## Handling linking with math library libm via -lm
-# We could be brute-force, and add -lm to link line for any and all Unices:
-# if(UNIX)
-# target_link_libraries(Teem PRIVATE m)
-# endif()
-# But not all Unices actually need to link with -lm to access math functions
-# like sin() and exp(); let's figure out if we need it.
-
-# https://cmake.org/cmake/help/latest/module/CheckSourceCompiles.html
-include(CheckSourceCompiles)
-
-set(_Teem_libm_test_source "
- #include <math.h>
- int main(void) { return (int)sin(0.0); }
-")
-
-# Always start with a clean slate
-unset(CMAKE_REQUIRED_LIBRARIES)
-
-# First try without -lm
-check_source_compiles(C "${_Teem_libm_test_source}" HAVE_SIN_WITHOUT_LIBM)
-
-if(HAVE_SIN_WITHOUT_LIBM)
- message(STATUS "sin() found without libm; do NOT need to link with -lm")
-else()
- # Retry with -lm
- set(CMAKE_REQUIRED_LIBRARIES m)
- check_source_compiles(C "${_Teem_libm_test_source}" HAVE_SIN_WITH_LIBM)
- unset(CMAKE_REQUIRED_LIBRARIES)
-
- if(HAVE_SIN_WITH_LIBM)
- message(STATUS "sin() requires libm; DO need to link with -lm")
- target_link_libraries(Teem PRIVATE m)
- else()
- message(FATAL_ERROR "Could not find sin() at all!")
- endif()
-endif()
-
-# Set the target properties
-set_target_properties(Teem PROPERTIES
- OUTPUT_NAME teem # so we get libteem not libTeem
- VERSION ${Teem_VERSION_STRING}
- SOVERSION ${Teem_VERSION_MAJOR}
- POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS}
-)
-
-#-----------------------------------------------------------------------------
-# Teem's component libraries
-
-# Each component library will append its public headers to global property
-# "Teem_HEADER_FILES". For clarity, we initialize it to empty string now.
-set_property(GLOBAL PROPERTY Teem_HEADER_FILES "")
-
-# Helper function component library call to declare its contribution
-function(_Teem_add_library _pathtolib)
- get_filename_component(_lib ${_pathtolib} NAME)
- cmake_parse_arguments(${_lib} "" "" "SOURCES;PUBLIC_HEADERS" ${ARGN})
-
- # 1. Prepend containing directory ${_lib} to sources and headers
- set(${_lib}_LIB_SOURCES ${${_lib}_SOURCES})
- list(TRANSFORM ${_lib}_LIB_SOURCES PREPEND "${_lib}/")
- set(${_lib}_LIB_PUBLIC_HEADERS ${${_lib}_PUBLIC_HEADERS})
- list(TRANSFORM ${_lib}_LIB_PUBLIC_HEADERS PREPEND "${_lib}/")
-
- # 2. Collect public headers for installation
- set_property(GLOBAL APPEND PROPERTY Teem_HEADER_FILES ${${_lib}_LIB_PUBLIC_HEADERS})
-
- # 3. Add sources for compilation
- # (headers will be seen via dependency analysis)
- target_sources(Teem PRIVATE ${${_lib}_SOURCES})
-
- # 4. IDE grouping of library using TREE (modern CMake) under single "Teem/src" prefix
- source_group(
- TREE "${CMAKE_CURRENT_SOURCE_DIR}/${_lib}"
- PREFIX "Teem/src/${_lib}"
- FILES
- ${${_lib}_LIB_SOURCES}
- ${${_lib}_LIB_PUBLIC_HEADERS}
- )
-endfunction()
-
-# (TEEM_LIB_LIST)
-set(Teem_LIBRARIES
- air hest biff nrrd ell moss unrrdu alan tijk gage dye bane
- limn echo hoover seek ten elf pull coil push mite meet)
-# Read in CMakeLists.txt of each library
-foreach(_dir IN LISTS Teem_LIBRARIES)
- # each one calls _Teem_add_library
- add_subdirectory(src/${_dir})
-endforeach()
-
-#-----------------------------------------------------------------------------
-# Public headers: copy, configure, and declare via FILE_SET
-
-# Set *variable* _Teem_headers from *property* Teem_HEADER_FILES
-get_property(_Teem_headers GLOBAL PROPERTY Teem_HEADER_FILES)
-
-# Copy header files to install location
-set(_Teem_headers_full)
-foreach(_dirhdr IN LISTS _Teem_headers)
- # e.g. set _hdr="air.h" from _dirhdr="air/air.h"
- get_filename_component(_hdr ${_dirhdr} NAME)
- set(_dest "${CMAKE_BINARY_DIR}/include/teem/${_hdr}")
- # cmake_print_variables(_dirhdr _dest)
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/${_dirhdr} ${_dest} COPYONLY)
- list(APPEND _Teem_headers_full "${_dest}")
-endforeach()
-# cmake_print_variables(_Teem_headers_full)
-
-# Configure generated header airExistsConf.h
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/airExistsConf.h
- ${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h
- @ONLY NEWLINE_STYLE UNIX)
-list(APPEND _Teem_headers_full "${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h")
-
-# Declare where public headers are found during build
-target_sources(Teem
- PUBLIC
- FILE_SET public_headers
- TYPE HEADERS
- BASE_DIRS ${CMAKE_BINARY_DIR}/include
- FILES ${_Teem_headers_full}
-)
-
-#-----------------------------------------------------------------------------
-# We also gather here to build the command-line executables (e.g. "unu")
-
-add_subdirectory(src/bin)
-
-#-----------------------------------------------------------------------------
-# Optional helper tools (hex/dehex)
-
-# If requested, helper dehex/exhex programs
-if(Teem_BUILD_HEX_UTILS)
- add_subdirectory(src/hex)
-endif()
-
-#-----------------------------------------------------------------------------
-# Testing
-
-if(BUILD_TESTING)
- include(CTest) # belatedly
- enable_testing()
- add_subdirectory(Testing) # add Teem-specific tests
-endif()
-
-#-----------------------------------------------------------------------------
-# Install rules
-
-install(TARGETS Teem
- EXPORT TeemTargets
- RUNTIME DESTINATION ${BIN_INSTALL_DIR}
- LIBRARY DESTINATION ${LIB_INSTALL_DIR}
- ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
- FILE_SET public_headers DESTINATION ${HEADERS_INSTALL_DIR}
-)
-
-# Export targets for find_package
-install(EXPORT TeemTargets
- FILE TeemTargets.cmake
- NAMESPACE Teem::
- DESTINATION ${CONFIG_INSTALL_DIR}
-)
-
-include(CMakePackageConfigHelpers)
-file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in"
-"@PACKAGE_INIT@\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/TeemTargets.cmake\")\n")
-
-configure_package_config_file(${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in
- ${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
- INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
-)
-
-write_basic_package_version_file(
- ${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
- VERSION ${Teem_VERSION_STRING}
- COMPATIBILITY AnyNewerVersion
-)
-
-install(FILES
- ${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
- DESTINATION ${CONFIG_INSTALL_DIR}
-)
Copied: teem/trunk/CMakeLists-v2.txt (from rev 7350, teem/trunk/CMakeLists-10.txt)
===================================================================
--- teem/trunk/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,546 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# (LGPL) as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also
+# include exceptions to the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+# Teem/CMakeLists.txt Version 10.85
+# Re-written entirely for TeemV2
+
+#-----------------------------------------------------------------------------
+# Project setup: version, metadata, and language
+
+# CMake Version 3.25 came out November 16, 2022
+# https://www.kitware.com/cmake-3-25-0-available-for-download/
+# why use 3.25: has nicer syntax for try_compile
+cmake_minimum_required(VERSION 3.25)
+
+# Teem version number (must match values in src/air/air.h)
+set(Teem_VERSION_MAJOR 1)
+set(Teem_VERSION_MINOR 12)
+set(Teem_VERSION_PATCH 0)
+set(Teem_VERSION_STRING ${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}.${Teem_VERSION_PATCH})
+
+project(Teem VERSION ${Teem_VERSION_STRING}
+ DESCRIPTION "Teem libraries developed by Gordon Kindlmann et al."
+ LANGUAGES C)
+
+message(STATUS "
+
+
+********************************************************************
+** Please join the Teem-users discord https://discord.gg/xBBqZGXkF7
+** to share how Teem works or does not work for you!
+** For example, are these re-written CMakeLists.txt files working?
+********************************************************************
+
+
+")
+
+#-----------------------------------------------------------------------------
+# Module paths and helper includes
+
+include(GNUInstallDirs)
+include(CMakeParseArguments) # for cmake_parse_arguments
+# include(CMakePrintHelpers) # for debugging via cmake_print_variables(varname)
+
+# CMake modules path (for e.g. FindLEVMAR.cmake)
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+
+#-----------------------------------------------------------------------------
+# Dependency list and project options
+# - canonical list of optional dependencies
+# - option() flags for enabling/disabling them
+
+# Do we make a shared library? BUILD_SHARED_LIBS has particular meaning to CMake
+# https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
+# https://gitlab.kitware.com/cmake/cmake/-/issues/25699
+option(BUILD_SHARED_LIBS "Build a libteem shared library" ON)
+
+# The canonical list of libraries that Teem can (optionally) depend on. Within this
+# CMakeLists.txt file, each one is a "DEP" or dependency However, FYI, within the
+# GNUmakefiles, each is called an EXT or external. Note: inter-dependency dependencies
+# are known in the INTERFACE_LINK_LIBRARIES of each target.
+set(_Teem_DEPS PNG ZLIB BZIP2 LEVMAR FFTW3 PTHREAD)
+
+# docstrings of all dependencies, to avoid redundancy between
+# option(Teem_DEP "${_doc}" ON) and set(Teem_DEP OFF CACHE BOOL "${_doc}" FORCE)
+set(_doc_ZLIB "Enable nrrd support for zlib (\"gzip\") data encoding")
+set(_doc_PNG "Enable nrrd support for PNG format images")
+set(_doc_BZIP2 "Enable nrrd support for bzip2 data encoding")
+set(_doc_PTHREAD "Enable hoover support for multi-threaded rendering")
+set(_doc_LEVMAR "Build with levmar for better elf and ten")
+set(_doc_FFTW3 "Build with fftw3 to enable nrrdFFT() and `unu fft`")
+
+# Whether to default to DEP being ON or OFF
+set(_dflt_ZLIB ON)
+set(_dflt_PNG ON)
+set(_dflt_BZIP2 OFF)
+set(_dflt_PTHREAD ON)
+set(_dflt_LEVMAR OFF)
+set(_dflt_FFTW3 OFF)
+
+# Add an option() for Teem_USE_DEP for each dependency DEP
+foreach(_tdep IN LISTS _Teem_DEPS)
+ # option name docstring default value
+ option(Teem_USE_${_tdep} "${_doc_${_tdep}}" ${_dflt_${_tdep}})
+endforeach()
+
+# Other options
+option(Teem_BUILD_HEX_UTILS "Build stand-alone raw<-->hex decoder/encoder" OFF)
+option(BUILD_TESTING "Build with (in-progress) Teem tests" OFF)
+option(Teem_INSTALL_VERSIONED_SUBDIRS "Install in Teem-X.Y subdir of install/{bin,lib,include}" OFF)
+
+#-----------------------------------------------------------------------------
+# RPATH settings for macOS
+#
+# By default CMake patches installed binaries with `install_name_tool` to replace
+# build-tree RPATHs with install-tree RPATHs. On macOS this causes errors if `make
+# install` is run more than once, because the RPATH has already been modified.
+#
+# The solution used here is to build the executables *already* using the same install
+# RPATH, so no fixup is needed at install time.
+#
+# - Shared build: executables/dylibs use ${CMAKE_INSTALL_PREFIX}/lib
+# - Static build: no RPATHs needed at all
+
+if(APPLE)
+ set(CMAKE_MACOSX_RPATH ON)
+
+ if(BUILD_SHARED_LIBS)
+ # Use install RPATH even in the build tree
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
+ set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+ else()
+ # Static build: disable RPATHs entirely
+ set(CMAKE_SKIP_BUILD_RPATH TRUE)
+ set(CMAKE_SKIP_INSTALL_RPATH TRUE)
+ endif()
+endif()
+
+#-----------------------------------------------------------------------------
+# Dependency discovery
+# - normalize names/targets/FOUND vars
+# - run find_package() for requested DEPs
+
+# can't do PNG without ZLIB
+if(Teem_USE_PNG AND NOT Teem_USE_ZLIB)
+ message(WARNING "PNG requires ZLIB; enabling Teem_USE_ZLIB.")
+ set(Teem_USE_ZLIB ON)
+endif()
+
+# Special cases of CMake package names (not "DEP")
+set(_cpname_BZIP2 "BZip2")
+set(_cpname_PTHREAD "Threads")
+# Special cases of namespace::targetname (not "DEP::DEP")
+set(_target_BZIP2 "BZip2::BZip2")
+set(_target_PTHREAD "Threads::Threads")
+set(_target_FFTW3 "FFTW3::fftw3")
+# Special cases of variable name to test for DEP availability (not "DEP_FOUND")
+# (yes PTHREAD is special; there isn't a "Threads_FOUND"; but this enables uniformity)
+set(_found_PTHREAD "CMAKE_USE_PTHREADS_INIT")
+
+# Make sure _{cpack,target,found}_DEP are defined for all DEPS
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(NOT DEFINED _cpname_${_tdep})
+ set(_cpname_${_tdep} "${_tdep}")
+ endif()
+ if(NOT DEFINED _target_${_tdep})
+ set(_target_${_tdep} "${_tdep}::${_tdep}")
+ endif()
+ if(NOT DEFINED _found_${_tdep})
+ set(_found_${_tdep} "${_tdep}_FOUND")
+ endif()
+endforeach()
+# CMake (still) doesn't have anything like a dictionary,
+# so we don't have (for example): _cpname[_tdep]
+# but now, after the foreach above, we have: ${_cpname_${_tdep}}
+
+# With all that uniformity set up: try to find_package() for all DEPs requested
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(Teem_USE_${_tdep})
+ # this DEP is requested
+ find_package(${_cpname_${_tdep}} QUIET)
+ if(${_found_${_tdep}})
+ set(Teem_HAVE_${_tdep} TRUE)
+ else()
+ set(Teem_USE_${_tdep} OFF CACHE BOOL "${_doc_${_tdep}}" FORCE)
+ endif()
+ endif()
+endforeach()
+
+## to confirm that PNG::PNG links to ZLIB::ZLIB
+#get_target_property(_png_libs PNG::PNG INTERFACE_LINK_LIBRARIES)
+#message(STATUS "PNG::PNG links to: ${_png_libs}")
+
+#-----------------------------------------------------------------------------
+# Install directory layout
+
+# Will not include patch number, since (as of Teem V2.0)
+# API+ABI really are preserved if only patch number is changing
+if(Teem_INSTALL_VERSIONED_SUBDIRS)
+ set(_verpath "teem-${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}")
+ set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${_verpath}")
+ set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}")
+ set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}/${_verpath}")
+ # We do want package name "Teem" here, not teem
+ set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}/cmake/Teem")
+else()
+ set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
+ set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
+ set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
+ set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Teem")
+endif()
+# so that BIN_INSTALL_DIR can be seen by src/bin/CMakeLists.txt
+set(BIN_INSTALL_DIR "${BIN_INSTALL_DIR}" CACHE INTERNAL "Install dir for binaries")
+
+#-----------------------------------------------------------------------------
+# Configure-time feature test: does AIR_EXISTS() work like isfinite()?
+
+# A lot of work for one little macro (which GLK started using before the functionally
+# equivalent isfinite() became widely available). The little CMake/TestAIR_EXISTS.c
+# program tests the equivalent of AIR_EXISTS (but without directly using air.h's
+# AIR_EXISTS because this has to be stand-alone), to see if it can correctly detect
+# IEEE754 special values (NaNs and infinities). For this to be a useful test that informs
+# how the rest of Teem code will work, TestAIR_EXISTS.c needs to be compiled the same as
+# Teem itself will be compiled later. Sadly, it was not until Teem V2 that this
+# consistency was actually enforced (!) To further help debugging, we also print out
+# exactly how TestAIR_EXISTS.c is compiled, and we use try_compile instead of try_run
+# so the resulting executable file stays available for later inspection.
+#
+# (rejected but interesting debugging strategies:
+# message(STATUS "Pausing CMake so you can inspect temporary files...")
+# execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 30)
+# or
+# execute_process(COMMAND /bin/sh -c "read -p 'Press ENTER to continue...'")
+# )
+
+# "taex" = Test Air_EXists
+set(_taex_src "${CMAKE_CURRENT_LIST_DIR}/CMake/TestAIR_EXISTS.c")
+
+# Build flags for the probe (same as Teem itself)
+string(TOUPPER "${CMAKE_BUILD_TYPE}" _taex_BTUC)
+set(_taex_flags "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_taex_BTUC}}")
+set(_taex_me "AIR_EXISTS (compiled \"${_taex_flags}\")")
+
+# Where we want a durable copy of the compiled probe
+if(WIN32)
+ set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS.exe")
+else()
+ set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS")
+endif()
+
+# Remove any stale copy from previous runs
+if(EXISTS "${_taex_copy}")
+ file(REMOVE "${_taex_copy}")
+endif()
+
+# Compile the probe
+message(CHECK_START "Testing whether macro ${_taex_me} detects IEEE754 special values")
+try_compile(
+ _taex_compiles # boolean result: TRUE if compile succeeded
+ SOURCES "${_taex_src}" # one or more source files for the test
+ CMAKE_FLAGS
+ "-DCMAKE_VERBOSE_MAKEFILE=ON"
+ "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
+ "-DCMAKE_C_FLAGS_${_taex_BTUC}=${_taex_flags}"
+ "-DCMAKE_DEPENDS_USE_COMPILER=FALSE" # no -MD/-MT/-MF dependency cruft
+ COPY_FILE "${_taex_copy}" # copy the built executable to a stable path
+ OUTPUT_VARIABLE _taex_compile_out
+ COPY_FILE_ERROR _taex_copy_error
+)
+# Always show the captured compile output, as progress indication
+string(REPLACE "\n" "\n " _taex_compile_out_indented "${_taex_compile_out}")
+message(STATUS "Compile output:\n ${_taex_compile_out_indented}")
+
+if(NOT _taex_compiles)
+ message(CHECK_FAIL "compile failed")
+ message(FATAL_ERROR "Could not compile ${_taex_src}")
+elseif(_taex_copy_error)
+ message(CHECK_FAIL "copy failed")
+ message(FATAL_ERROR "Test program compiled but could not copy: ${_taex_copy_error}")
+elseif(NOT EXISTS "${_taex_copy}")
+ message(CHECK_FAIL "missing executable")
+ message(FATAL_ERROR "Test program compiled but file not found at ${_taex_copy}")
+else()
+ message(CHECK_PASS "compiled successfully")
+endif()
+
+# Run the test program
+message(CHECK_START "Running ${_taex_me} test program")
+# https://cmake.org/cmake/help/latest/command/execute_process.html
+execute_process(
+ COMMAND "${_taex_copy}"
+ RESULT_VARIABLE _taex_run_status
+ OUTPUT_VARIABLE _taex_run_out
+ ERROR_VARIABLE _taex_run_err
+)
+
+# Act on the results
+if(_taex_run_status EQUAL 0)
+ message(CHECK_PASS "Yes, it detects IEEE754 special values")
+ set(AIR_EXISTS_MACRO_FAILS 0 CACHE INTERNAL "AIR_EXISTS macro works correctly")
+else()
+ # Always show stdout/stderr from the probe as indented sub-log
+ if(_taex_run_out)
+ string(REPLACE "\n" "\n " _taex_run_out_indented "${_taex_run_out}")
+ message(STATUS "Probe stdout:\n ${_taex_run_out_indented}")
+ endif()
+ if(_taex_run_err)
+ string(REPLACE "\n" "\n " _taex_run_err_indented "${_taex_run_err}")
+ message(STATUS "Probe stderr:\n ${_taex_run_err_indented}")
+ endif()
+ message(CHECK_FAIL "NO, it FAILS to detect IEEE754 special values")
+ set(AIR_EXISTS_MACRO_FAILS 1 CACHE INTERNAL "AIR_EXISTS macro fails")
+endif()
+
+#-----------------------------------------------------------------------------
+# We gather here to build the monolithic library 'libteem'
+
+# (whereas the old-but-recently-updated GNUmakefiles build finer-grained per-library
+# libraries libair, libbiff, etc, which are still needed for Teem hacking
+
+add_library(Teem "")
+
+# Ensure build's include dir exists for generated headers
+file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include/teem)
+
+# Public include directories
+target_include_directories(Teem
+ PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
+ $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:${HEADERS_INSTALL_DIR}>
+)
+
+# Say "cc -D TEEM_DEP" and link with DEP target if dependency DEP is used
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(Teem_HAVE_${_tdep})
+ message(STATUS "Will use ${_tdep}: ${_doc_${_tdep}}")
+ target_compile_definitions(Teem PUBLIC "TEEM_${_tdep}")
+ # This attaches DEP=${_target_${_tdep}} to the Teem target, but not any particular
+ # command-line executable. It is PRIVATE because Teem is designed to not directly
+ # expose any thing from, say, png.h or libpng in its API or ABI - there are always
+ # stub alternatives for when DEP is not used. PRIVATE is saying: use DEP when
+ # building the target, but do not automatically propagate DEP to things (like unu)
+ # depending on the target
+ target_link_libraries(Teem PRIVATE "${_target_${_tdep}}")
+ else()
+ message(STATUS " (not using ${_tdep}: ${_doc_${_tdep}})")
+ endif()
+endforeach()
+# confirm results of loop above: what dependencies do I consume
+get_target_property(_Teem_libs Teem LINK_LIBRARIES)
+message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
+## Not interesting for Teem: what dependencies do I expose. Will show
+## "_Teem_libs-NOTFOUND" because of Teem's API/ABI invariance w.r.t dependencies
+#get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
+#message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
+
+# Say "cc -D TEEM_STATIC" if not building a shared library
+# (used as part of handling Windows "extern" analog)
+target_compile_definitions(Teem PUBLIC "$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:TEEM_STATIC>")
+
+## Handling linking with math library libm via -lm
+# We could be brute-force, and add -lm to link line for any and all Unices:
+# if(UNIX)
+# target_link_libraries(Teem PRIVATE m)
+# endif()
+# But not all Unices actually need to link with -lm to access math functions
+# like sin() and exp(); let's figure out if we need it.
+
+# https://cmake.org/cmake/help/latest/module/CheckSourceCompiles.html
+include(CheckSourceCompiles)
+
+set(_Teem_libm_test_source "
+ #include <math.h>
+ int main(void) { return (int)sin(0.0); }
+")
+
+# Always start with a clean slate
+unset(CMAKE_REQUIRED_LIBRARIES)
+
+# First try without -lm
+check_source_compiles(C "${_Teem_libm_test_source}" HAVE_SIN_WITHOUT_LIBM)
+
+if(HAVE_SIN_WITHOUT_LIBM)
+ message(STATUS "sin() found without libm; do NOT need to link with -lm")
+else()
+ # Retry with -lm
+ set(CMAKE_REQUIRED_LIBRARIES m)
+ check_source_compiles(C "${_Teem_libm_test_source}" HAVE_SIN_WITH_LIBM)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+
+ if(HAVE_SIN_WITH_LIBM)
+ message(STATUS "sin() requires libm; DO need to link with -lm")
+ target_link_libraries(Teem PRIVATE m)
+ else()
+ message(FATAL_ERROR "Could not find sin() at all!")
+ endif()
+endif()
+
+# Set the target properties
+set_target_properties(Teem PROPERTIES
+ OUTPUT_NAME teem # so we get libteem not libTeem
+ VERSION ${Teem_VERSION_STRING}
+ SOVERSION ${Teem_VERSION_MAJOR}
+ POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS}
+)
+
+#-----------------------------------------------------------------------------
+# Teem's component libraries
+
+# Each component library will append its public headers to global property
+# "Teem_HEADER_FILES". For clarity, we initialize it to empty string now.
+set_property(GLOBAL PROPERTY Teem_HEADER_FILES "")
+
+# Helper function component library call to declare its contribution
+function(_Teem_add_library _pathtolib)
+ get_filename_component(_lib ${_pathtolib} NAME)
+ cmake_parse_arguments(${_lib} "" "" "SOURCES;PUBLIC_HEADERS" ${ARGN})
+
+ # 1. Prepend containing directory ${_lib} to sources and headers
+ set(${_lib}_LIB_SOURCES ${${_lib}_SOURCES})
+ list(TRANSFORM ${_lib}_LIB_SOURCES PREPEND "${_lib}/")
+ set(${_lib}_LIB_PUBLIC_HEADERS ${${_lib}_PUBLIC_HEADERS})
+ list(TRANSFORM ${_lib}_LIB_PUBLIC_HEADERS PREPEND "${_lib}/")
+
+ # 2. Collect public headers for installation
+ set_property(GLOBAL APPEND PROPERTY Teem_HEADER_FILES ${${_lib}_LIB_PUBLIC_HEADERS})
+
+ # 3. Add sources for compilation
+ # (headers will be seen via dependency analysis)
+ target_sources(Teem PRIVATE ${${_lib}_SOURCES})
+
+ # 4. IDE grouping of library using TREE (modern CMake) under single "Teem/src" prefix
+ source_group(
+ TREE "${CMAKE_CURRENT_SOURCE_DIR}/${_lib}"
+ PREFIX "Teem/src/${_lib}"
+ FILES
+ ${${_lib}_LIB_SOURCES}
+ ${${_lib}_LIB_PUBLIC_HEADERS}
+ )
+endfunction()
+
+# (TEEM_LIB_LIST)
+set(Teem_LIBRARIES
+ air hest biff nrrd ell moss unrrdu alan tijk gage dye bane
+ limn echo hoover seek ten elf pull coil push mite meet)
+# Read in CMakeLists.txt of each library
+foreach(_dir IN LISTS Teem_LIBRARIES)
+ # each one calls _Teem_add_library
+ add_subdirectory(src/${_dir})
+endforeach()
+
+#-----------------------------------------------------------------------------
+# Public headers: copy, configure, and declare via FILE_SET
+
+# Set *variable* _Teem_headers from *property* Teem_HEADER_FILES
+get_property(_Teem_headers GLOBAL PROPERTY Teem_HEADER_FILES)
+
+# Copy header files to install location
+set(_Teem_headers_full)
+foreach(_dirhdr IN LISTS _Teem_headers)
+ # e.g. set _hdr="air.h" from _dirhdr="air/air.h"
+ get_filename_component(_hdr ${_dirhdr} NAME)
+ set(_dest "${CMAKE_BINARY_DIR}/include/teem/${_hdr}")
+ # cmake_print_variables(_dirhdr _dest)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/${_dirhdr} ${_dest} COPYONLY)
+ list(APPEND _Teem_headers_full "${_dest}")
+endforeach()
+# cmake_print_variables(_Teem_headers_full)
+
+# Configure generated header airExistsConf.h
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/airExistsConf.h
+ ${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h
+ @ONLY NEWLINE_STYLE UNIX)
+list(APPEND _Teem_headers_full "${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h")
+
+# Declare where public headers are found during build
+target_sources(Teem
+ PUBLIC
+ FILE_SET public_headers
+ TYPE HEADERS
+ BASE_DIRS ${CMAKE_BINARY_DIR}/include
+ FILES ${_Teem_headers_full}
+)
+
+#-----------------------------------------------------------------------------
+# We also gather here to build the command-line executables (e.g. "unu")
+
+add_subdirectory(src/bin)
+
+#-----------------------------------------------------------------------------
+# Optional helper tools (hex/dehex)
+
+# If requested, helper dehex/exhex programs
+if(Teem_BUILD_HEX_UTILS)
+ add_subdirectory(src/hex)
+endif()
+
+#-----------------------------------------------------------------------------
+# Testing
+
+if(BUILD_TESTING)
+ include(CTest) # belatedly
+ enable_testing()
+ add_subdirectory(Testing) # add Teem-specific tests
+endif()
+
+#-----------------------------------------------------------------------------
+# Install rules
+
+install(TARGETS Teem
+ EXPORT TeemTargets
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+ LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+ FILE_SET public_headers DESTINATION ${HEADERS_INSTALL_DIR}
+)
+
+# Export targets for find_package
+install(EXPORT TeemTargets
+ FILE TeemTargets.cmake
+ NAMESPACE Teem::
+ DESTINATION ${CONFIG_INSTALL_DIR}
+)
+
+include(CMakePackageConfigHelpers)
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in"
+"@PACKAGE_INIT@\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/TeemTargets.cmake\")\n")
+
+configure_package_config_file(${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
+ INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
+)
+
+write_basic_package_version_file(
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
+ VERSION ${Teem_VERSION_STRING}
+ COMPATIBILITY AnyNewerVersion
+)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
+ DESTINATION ${CONFIG_INSTALL_DIR}
+)
Added: teem/trunk/src/air/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/air/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/air/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,32 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ # list here pasted in from:
+ # svn status *.c
+ # echo *.c | fold -s -w 80 | sed -e 's/^/ /' | sed -e 's/ *$//' | pbcopy
+ # and copied this into GNUmakefile $(L).Obj but with " \" terminators
+ 754.c array.c endianAir.c enum.c heap.c math.c miscAir.c mop.c parseAir.c
+ randJSF.c randMT.c sane.c string.c threadAir.c
+ # private header
+ privateAir.h
+ PUBLIC_HEADERS
+ air.h
+)
Added: teem/trunk/src/alan/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/alan/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/alan/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,25 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ coreAlan.c enumsAlan.c methodsAlan.c
+ PUBLIC_HEADERS
+ alan.h
+)
Added: teem/trunk/src/bane/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/bane/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/bane/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,29 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ clip.c defaultsBane.c gkmsFlotsam.c gkmsHvol.c gkmsInfo.c gkmsMite.c gkmsOpac.c
+ gkmsPvg.c gkmsScat.c gkmsTxf.c hvol.c inc.c measr.c methodsBane.c rangeBane.c
+ scat.c trex.c trnsf.c valid.c
+ # private header
+ privateBane.h
+ PUBLIC_HEADERS
+ bane.h
+)
Added: teem/trunk/src/biff/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/biff/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/biff/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,27 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ biffbiff.c biffmsg.c
+ # private header
+ privateBiff.h
+ PUBLIC_HEADERS
+ biff.h
+)
Added: teem/trunk/src/bin/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/bin/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/bin/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,77 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+# Define a helper for Teem command-line tools
+function(teem_add_executable name)
+ add_executable(${name} ${ARGN})
+ target_link_libraries(${name} PRIVATE Teem)
+
+ install(TARGETS ${name}
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+ COMPONENT Runtime
+ )
+endfunction()
+
+# List of all Teem command-line tools. TeemV2 stripped down the number of tools built;
+# those no longer built are commented out below, with explanation. TeemV2 also dropped
+# the increasingly annoying BUILD_EXPERIMENTAL_LIBS and BUILD_EXPERIMENTAL_APPS toggles
+set(Teem_EXECUTABLES
+ # airSanity: all its tests are included in nrrdSanity
+ # nrrdSanity: no needed since unu starts by calling nrrdSanityOrDie
+ # and the other build info it provided is now produced by the new "unu built"
+ # cubic: just calls ell_cubic; now more easily done via Python wrappers
+ # qbert: created for volume rendering on GPUs from 20 years ago
+ # ilk: now available as "unu ilk"
+ # emap, deconv, gkms, spots: functionality not currently handled elsewhere, but
+ # probably not actually used by anyone?
+ # If you disagree say so: https://discord.gg/xBBqZGXkF7
+ # Also, these are still available via GNUmakefiles
+ # talkweb: the web has changed in 20 years
+ # pprobe: functionality available via "gprobe -pp"
+ # ungantry: functionality available via "gprobe -pg" and an appropriate grid
+ # ninspect: moved to "unu ninspect"
+ overrgb
+ mrender
+ miter
+ vprobe
+ gprobe
+ unu
+ puller
+ tend
+)
+
+# Define each executable
+foreach(exec IN LISTS Teem_EXECUTABLES)
+ teem_add_executable(${exec} ${exec}.c)
+endforeach()
+
+# Collect source files for IDE grouping
+set(_Teem_EXEC_SOURCES)
+foreach(exec IN LISTS Teem_EXECUTABLES)
+ list(APPEND _Teem_EXEC_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/${exec}.c")
+endforeach()
+
+# IDE grouping: use TREE so folder structure is preserved
+# and PREFIX "Teem/src/bin" so all executables appear under a single top-level folder,
+# alongside the other component libraries
+source_group(
+ TREE "${CMAKE_CURRENT_SOURCE_DIR}"
+ PREFIX "Teem/src/bin"
+ FILES ${_Teem_EXEC_SOURCES}
+)
Added: teem/trunk/src/coil/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/coil/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/coil/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,27 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ coreCoil.c defaultsCoil.c enumsCoil.c methodsCoil.c realmethods.c scalarCoil.c
+ tensorCoil.c
+ # (no private header)
+ PUBLIC_HEADERS
+ coil.h
+)
Added: teem/trunk/src/dye/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/dye/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/dye/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,26 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ convertDye.c methodsDye.c
+ # (no private header)
+ PUBLIC_HEADERS
+ dye.h
+)
Added: teem/trunk/src/echo/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/echo/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/echo/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,28 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also include exceptions to
+# the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+_Teem_add_library(${CMAKE_CURRENT_SOURCE_DIR}
+ SOURCES
+ bounds.c color.c enumsEcho.c intx.c lightEcho.c list.c matter.c methodsEcho.c
+ model.c objmethods.c renderEcho.c set.c sqd.c
+ # private header
+ privateEcho.h
+ PUBLIC_HEADERS
+ echo.h
+)
Added: teem/trunk/src/elf/CMakeLists-v2.txt
===================================================================
--- teem/trunk/src/elf/CMakeLists-v2.txt (rev 0)
+++ teem/trunk/src/elf/CMakeLists-v2.txt 2025-09-03 19:29:19 UTC (rev 7351)
@@ -0,0 +1,26 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or modify it under the terms
+# of the GNU Lesser General Public License (LGPL) as published by the Free Software
+# Foundation; either version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this so...
[truncated message content] |
|
From: <kin...@us...> - 2025-09-03 19:15:59
|
Revision: 7350
http://sourceforge.net/p/teem/code/7350
Author: kindlmann
Date: 2025-09-03 19:15:56 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
added note about discord server https://discord.gg/xBBqZGXkF7
Modified Paths:
--------------
teem/trunk/src/unrrdu/about.c
Modified: teem/trunk/src/unrrdu/about.c
===================================================================
--- teem/trunk/src/unrrdu/about.c 2025-09-03 18:42:35 UTC (rev 7349)
+++ teem/trunk/src/unrrdu/about.c 2025-09-03 19:15:56 UTC (rev 7350)
@@ -35,10 +35,13 @@
/* "svn co http://teem.svn.sf.net/svnroot/teem/teem/trunk teem\n "; */
char par2[]
= "\t\t\t\t"
- "Many people have used and relied on unu and Nrrd for their academic work "
- "but it is hard to find evidence of them respecting the request made this "
- "paragraph. Nevertheless, it persists, in the interest of posterity if not "
- "irony. Long-term maintenance of this software depends on funding, and "
+ "Many people have probably used and relied on unu and Nrrd for their work, "
+ "but it is very hard to find evidence of them respecting the long-standing "
+ "request made in the following paragraph. Nevertheless, it persists, in "
+ "the interest of posterity if not irony.\n "
+ "\n "
+ "\t\t\t"
+ "Long-term maintenance of this software depends on funding, and "
"funding depends on being able to document who is using it for what. "
"If unu or Nrrd has helped in your research, including for simple one-off "
"experiments or mundane data hacking, the developers of Teem would love "
@@ -49,9 +52,14 @@
"part of the Teem toolkit available at "
"http://teem.sf.net\". "
"Alternatively, please email gl...@uc... and briefly describe "
- "how Teem software has helped in your work. "
- "Please also consider joining the Teem-users Discord: "
- "https://discord.gg/xBBqZGXkF7 \n ";
+ "how Teem software has helped in your work.\n "
+ "Please also consider joining the teem-users mailing list: "
+ "<http://lists.sourceforge.net/lists/listinfo/teem-users>.\n "
+ "\n "
+ "\t\t\t"
+ "Or, new for 2025 and Teem v2: join the Teem-users Discord: "
+ "https://discord.gg/xBBqZGXkF7 to share how Teem works or doesn't work for "
+ "you.\n ";
char par3[] = "\t\t\t\t"
"A summary list of unu commands is generated by running simply \"unu\". "
"Running a unu command without additional arguments "
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-03 18:42:37
|
Revision: 7349
http://sourceforge.net/p/teem/code/7349
Author: kindlmann
Date: 2025-09-03 18:42:35 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
explanatory comment on where this comes from
Modified Paths:
--------------
teem/trunk/CMake/airExistsConf.h
Modified: teem/trunk/CMake/airExistsConf.h
===================================================================
--- teem/trunk/CMake/airExistsConf.h 2025-09-03 18:28:14 UTC (rev 7348)
+++ teem/trunk/CMake/airExistsConf.h 2025-09-03 18:42:35 UTC (rev 7349)
@@ -1,3 +1,7 @@
+/* The contents of this file are generated by CMake at configure-time, from
+ the original at teem/CMake/airExistsConf.h, according to the results of
+ running the stand-alone test program teem/CMake/TestAIR_EXISTS.c.
+ For more details, search for AIR_EXISTS in teem/CMakeLists.txt */
#ifndef airExistsConf_h
#define airExistsConf_h
#cmakedefine AIR_EXISTS_MACRO_FAILS
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-03 18:28:18
|
Revision: 7348
http://sourceforge.net/p/teem/code/7348
Author: kindlmann
Date: 2025-09-03 18:28:14 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
further tweaks
Modified Paths:
--------------
teem/trunk/CMakeLists-10.txt
Modified: teem/trunk/CMakeLists-10.txt
===================================================================
--- teem/trunk/CMakeLists-10.txt 2025-09-03 17:45:42 UTC (rev 7347)
+++ teem/trunk/CMakeLists-10.txt 2025-09-03 18:28:14 UTC (rev 7348)
@@ -19,7 +19,7 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-# Teem/CMakeLists.txt Version 10.8
+# Teem/CMakeLists.txt Version 10.85
# Re-written entirely for TeemV2
#-----------------------------------------------------------------------------
@@ -102,8 +102,8 @@
endforeach()
# Other options
-option(Teem_BUILD_HEX "Build stand-alone raw<-->hex decoder/encoder" OFF)
-option(BUILD_TESTING "Build with (incomplete) Teem tests" OFF)
+option(Teem_BUILD_HEX_UTILS "Build stand-alone raw<-->hex decoder/encoder" OFF)
+option(BUILD_TESTING "Build with (in-progress) Teem tests" OFF)
option(Teem_INSTALL_VERSIONED_SUBDIRS "Install in Teem-X.Y subdir of install/{bin,lib,include}" OFF)
#-----------------------------------------------------------------------------
@@ -216,7 +216,7 @@
#-----------------------------------------------------------------------------
# Configure-time feature test: does AIR_EXISTS() work like isfinite()?
-# So much hassle for one dumb macro (which GLK started using before the functionally
+# A lot of work for one little macro (which GLK started using before the functionally
# equivalent isfinite() became widely available). The little CMake/TestAIR_EXISTS.c
# program tests the equivalent of AIR_EXISTS (but without directly using air.h's
# AIR_EXISTS because this has to be stand-alone), to see if it can correctly detect
@@ -223,8 +223,9 @@
# IEEE754 special values (NaNs and infinities). For this to be a useful test that informs
# how the rest of Teem code will work, TestAIR_EXISTS.c needs to be compiled the same as
# Teem itself will be compiled later. Sadly, it was not until Teem V2 that this
-# consistency was actually enforced (!) To futher help debugging, we also print out (via
-# message()) exactly how TestAIR_EXISTS.c is compiled.
+# consistency was actually enforced (!) To further help debugging, we also print out
+# exactly how TestAIR_EXISTS.c is compiled, and we use try_compile instead of try_run
+# so the resulting executable file stays available for later inspection.
#
# (rejected but interesting debugging strategies:
# message(STATUS "Pausing CMake so you can inspect temporary files...")
@@ -236,12 +237,10 @@
# "taex" = Test Air_EXists
set(_taex_src "${CMAKE_CURRENT_LIST_DIR}/CMake/TestAIR_EXISTS.c")
-# Combine base flags with build-type-specific flags
-string(TOUPPER "${CMAKE_BUILD_TYPE}" _taex_BTUC) # Build Type Upper Case
+# Build flags for the probe (same as Teem itself)
+string(TOUPPER "${CMAKE_BUILD_TYPE}" _taex_BTUC)
set(_taex_flags "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_taex_BTUC}}")
-set(_taex_me "AIR_EXISTS macro (compiled with \"${_taex_flags}\")")
-message(STATUS "Test whether ${_taex_me} detects IEEE754 special values")
-message(STATUS " (compiling ${_taex_src} with CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} and CMAKE_C_FLAGS_${_taex_BTUC}=${CMAKE_C_FLAGS_${_taex_BTUC}})")
+set(_taex_me "AIR_EXISTS (compiled \"${_taex_flags}\")")
# Where we want a durable copy of the compiled probe
if(WIN32)
@@ -249,15 +248,14 @@
else()
set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS")
endif()
+
# Remove any stale copy from previous runs
if(EXISTS "${_taex_copy}")
file(REMOVE "${_taex_copy}")
endif()
-# We would use try_run except that try_run deletes everything it created before try_run
-# finishes, which robs us of the chance to later re-run the test program. So we first
-# try_compile and then execute_process.
-# https://cmake.org/cmake/help/v3.25/command/try_compile.html#try-compiling-source-files
+# Compile the probe
+message(CHECK_START "Testing whether macro ${_taex_me} detects IEEE754 special values")
try_compile(
_taex_compiles # boolean result: TRUE if compile succeeded
SOURCES "${_taex_src}" # one or more source files for the test
@@ -265,26 +263,31 @@
"-DCMAKE_VERBOSE_MAKEFILE=ON"
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
"-DCMAKE_C_FLAGS_${_taex_BTUC}=${_taex_flags}"
- "-DCMAKE_DEPENDS_USE_COMPILER=FALSE" # no -MD/-MT/-MF crap
+ "-DCMAKE_DEPENDS_USE_COMPILER=FALSE" # no -MD/-MT/-MF dependency cruft
+ COPY_FILE "${_taex_copy}" # copy the built executable to a stable path
OUTPUT_VARIABLE _taex_compile_out
- COPY_FILE "${_taex_copy}" # copy the built executable to a stable path
COPY_FILE_ERROR _taex_copy_error
)
+# Always show the captured compile output, as progress indication
+string(REPLACE "\n" "\n " _taex_compile_out_indented "${_taex_compile_out}")
+message(STATUS "Compile output:\n ${_taex_compile_out_indented}")
+
if(NOT _taex_compiles)
- message(FATAL_ERROR "Failed to compile ${_taex_src} so could not test AIR_EXISTS macro")
-endif()
-# Show the captured output
-message(STATUS "v.v.v.v.v.v.v.v.v.v Compile output for AIR_EXISTS macro test v.v.v.v.v.v.v.v.v.v\n${_taex_compile_out}\n^'^'^'^'^'^'^'^'^'^ End compile output ^'^'^'^'^'^'^'^'^'^")
-
-if(_taex_copy_error)
- message(FATAL_ERROR "Test program compiled but copy failed: ${_taex_copy_error}")
+ message(CHECK_FAIL "compile failed")
+ message(FATAL_ERROR "Could not compile ${_taex_src}")
+elseif(_taex_copy_error)
+ message(CHECK_FAIL "copy failed")
+ message(FATAL_ERROR "Test program compiled but could not copy: ${_taex_copy_error}")
elseif(NOT EXISTS "${_taex_copy}")
- message(FATAL_ERROR "Test program compiled but resulting file not found at ${_taex_copy}")
+ message(CHECK_FAIL "missing executable")
+ message(FATAL_ERROR "Test program compiled but file not found at ${_taex_copy}")
+else()
+ message(CHECK_PASS "compiled successfully")
endif()
-# Run the compiled test program
+# Run the test program
+message(CHECK_START "Running ${_taex_me} test program")
# https://cmake.org/cmake/help/latest/command/execute_process.html
-message(STATUS "Running test program ${_taex_copy}")
execute_process(
COMMAND "${_taex_copy}"
RESULT_VARIABLE _taex_run_status
@@ -292,12 +295,21 @@
ERROR_VARIABLE _taex_run_err
)
+# Act on the results
if(_taex_run_status EQUAL 0)
- message(STATUS "Yes, ${_taex_me} works to detect IEEE754 special values")
+ message(CHECK_PASS "Yes, it detects IEEE754 special values")
set(AIR_EXISTS_MACRO_FAILS 0 CACHE INTERNAL "AIR_EXISTS macro works correctly")
else()
- message(STATUS "NO, ${_taex_me} FAILS to detect IEEE754 special values")
- message(STATUS "Probe stderr:\n${_taex_run_err}")
+ # Always show stdout/stderr from the probe as indented sub-log
+ if(_taex_run_out)
+ string(REPLACE "\n" "\n " _taex_run_out_indented "${_taex_run_out}")
+ message(STATUS "Probe stdout:\n ${_taex_run_out_indented}")
+ endif()
+ if(_taex_run_err)
+ string(REPLACE "\n" "\n " _taex_run_err_indented "${_taex_run_err}")
+ message(STATUS "Probe stderr:\n ${_taex_run_err_indented}")
+ endif()
+ message(CHECK_FAIL "NO, it FAILS to detect IEEE754 special values")
set(AIR_EXISTS_MACRO_FAILS 1 CACHE INTERNAL "AIR_EXISTS macro fails")
endif()
@@ -353,32 +365,40 @@
# if(UNIX)
# target_link_libraries(Teem PRIVATE m)
# endif()
-# But actually, not all Unices need to link with -lm; let's figure out if it is needed
+# But not all Unices actually need to link with -lm to access math functions
+# like sin() and exp(); let's figure out if we need it.
-include(CheckFunctionExists)
+# https://cmake.org/cmake/help/latest/module/CheckSourceCompiles.html
+include(CheckSourceCompiles)
-# First: can we link sin() without -lm?
+set(_Teem_libm_test_source "
+ #include <math.h>
+ int main(void) { return (int)sin(0.0); }
+")
+
+# Always start with a clean slate
unset(CMAKE_REQUIRED_LIBRARIES)
-check_function_exists(sin HAVE_SIN_WITHOUT_LIBM)
-# If not, try again with -lm
-if(NOT HAVE_SIN_WITHOUT_LIBM)
- set(CMAKE_REQUIRED_LIBRARIES m)
- check_function_exists(sin HAVE_SIN_WITH_LIBM)
- unset(CMAKE_REQUIRED_LIBRARIES)
-endif()
+# First try without -lm
+check_source_compiles(C "${_Teem_libm_test_source}" HAVE_SIN_WITHOUT_LIBM)
-# Decide outcome
if(HAVE_SIN_WITHOUT_LIBM)
message(STATUS "sin() found without libm; do NOT need to link with -lm")
-elseif(HAVE_SIN_WITH_LIBM)
- message(STATUS "sin() requires libm; DO need to link with -lm")
- target_link_libraries(Teem PRIVATE m)
else()
- message(FATAL_ERROR "Could not find sin() at all!")
+ # Retry with -lm
+ set(CMAKE_REQUIRED_LIBRARIES m)
+ check_source_compiles(C "${_Teem_libm_test_source}" HAVE_SIN_WITH_LIBM)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+
+ if(HAVE_SIN_WITH_LIBM)
+ message(STATUS "sin() requires libm; DO need to link with -lm")
+ target_link_libraries(Teem PRIVATE m)
+ else()
+ message(FATAL_ERROR "Could not find sin() at all!")
+ endif()
endif()
-# Set various properties
+# Set the target properties
set_target_properties(Teem PROPERTIES
OUTPUT_NAME teem # so we get libteem not libTeem
VERSION ${Teem_VERSION_STRING}
@@ -473,7 +493,7 @@
# Optional helper tools (hex/dehex)
# If requested, helper dehex/exhex programs
-if(Teem_BUILD_HEX)
+if(Teem_BUILD_HEX_UTILS)
add_subdirectory(src/hex)
endif()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-03 17:45:45
|
Revision: 7347
http://sourceforge.net/p/teem/code/7347
Author: kindlmann
Date: 2025-09-03 17:45:42 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
how on earth did I write float piD = 3.141.... Fixing that, and adding some static things that might in some bizarro universe matter
Modified Paths:
--------------
teem/trunk/CMake/TestAIR_EXISTS.c
Modified: teem/trunk/CMake/TestAIR_EXISTS.c
===================================================================
--- teem/trunk/CMake/TestAIR_EXISTS.c 2025-09-03 04:15:49 UTC (rev 7346)
+++ teem/trunk/CMake/TestAIR_EXISTS.c 2025-09-03 17:45:42 UTC (rev 7347)
@@ -19,9 +19,9 @@
/* from teem/src/air/754.c: this could actually be a quiet NaN
or a signalling NaN, but that shouldn't make a difference for
this configure-time test */
-const airFloat airFloatQNaN = {0x7fffffff};
-const airFloat airFloatPosInf = {0x7f800000};
-const airFloat airFloatNegInf = {0xff800000};
+static const airFloat airFloatQNaN = {0x7fffffff};
+static const airFloat airFloatPosInf = {0x7f800000};
+static const airFloat airFloatNegInf = {0xff800000};
#define AIR_CAST(t, v) ((t)(v))
/* MUST BE COPIED DIRECTLY FROM from air.h !! */
@@ -38,7 +38,7 @@
double nanD = (double)nanF;
double pinfD = (double)pinfF;
double ninfD = (double)ninfF;
- float piD = 3.1415926535897932384626433;
+ double piD = 3.1415926535897932384626433;
int ret;
if (AIR_EXISTS(nanF) || AIR_EXISTS(pinfF) || AIR_EXISTS(ninfF) /* */
|| AIR_EXISTS(nanD) || AIR_EXISTS(pinfD) || AIR_EXISTS(ninfD) /* */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-03 04:15:50
|
Revision: 7346
http://sourceforge.net/p/teem/code/7346
Author: kindlmann
Date: 2025-09-03 04:15:49 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
warnings to be uncommented soon
Modified Paths:
--------------
teem/trunk/CMake/TeemUse.cmake
Modified: teem/trunk/CMake/TeemUse.cmake
===================================================================
--- teem/trunk/CMake/TeemUse.cmake 2025-09-03 02:56:16 UTC (rev 7345)
+++ teem/trunk/CMake/TeemUse.cmake 2025-09-03 04:15:49 UTC (rev 7346)
@@ -19,6 +19,10 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
+# message(WARNING "This file (TeemUse.cmake) is no longer used by TeemV2 CMake")
+# message(WARNING "This file (TeemUse.cmake) will be deleted soon.")
+# message(WARNING "Question/Concerns? https://discord.gg/xBBqZGXkF7")
+
if(NOT Teem_FOUND)
message(FATAL_ERROR "Something went wrong. You are including TeemUse.cmake but Teem was not found")
endif()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-03 02:56:17
|
Revision: 7345
http://sourceforge.net/p/teem/code/7345
Author: kindlmann
Date: 2025-09-03 02:56:16 +0000 (Wed, 03 Sep 2025)
Log Message:
-----------
still in progress
Modified Paths:
--------------
teem/trunk/CMakeLists-10.txt
Modified: teem/trunk/CMakeLists-10.txt
===================================================================
--- teem/trunk/CMakeLists-10.txt 2025-09-02 23:49:11 UTC (rev 7344)
+++ teem/trunk/CMakeLists-10.txt 2025-09-03 02:56:16 UTC (rev 7345)
@@ -398,25 +398,26 @@
get_filename_component(_lib ${_pathtolib} NAME)
cmake_parse_arguments(${_lib} "" "" "SOURCES;PUBLIC_HEADERS" ${ARGN})
- # 1. Append public headers to global property Teem_HEADER_FILES, except that
- # we need to also remember the containing directory; prepend that now.
- # Will need the same prepending of sources for source_group below
+ # 1. Prepend containing directory ${_lib} to sources and headers
set(${_lib}_LIB_SOURCES ${${_lib}_SOURCES})
list(TRANSFORM ${_lib}_LIB_SOURCES PREPEND "${_lib}/")
set(${_lib}_LIB_PUBLIC_HEADERS ${${_lib}_PUBLIC_HEADERS})
list(TRANSFORM ${_lib}_LIB_PUBLIC_HEADERS PREPEND "${_lib}/")
+
+ # 2. Collect public headers for installation
set_property(GLOBAL APPEND PROPERTY Teem_HEADER_FILES ${${_lib}_LIB_PUBLIC_HEADERS})
- # 2. Add all sources (including private headers) to Teem
- target_sources(Teem PRIVATE
- ${${_lib}_SOURCES}
- ${${_lib}_PUBLIC_HEADERS}
- )
+ # 3. Add sources for compilation
+ # (headers will be seen via dependency analysis)
+ target_sources(Teem PRIVATE ${${_lib}_SOURCES})
- # 3. Group sources logically for IDEs
- source_group(${_lib} FILES
- ${${_lib}_LIB_SOURCES}
- ${${_lib}_LIB_PUBLIC_HEADERS}
+ # 4. IDE grouping of library using TREE (modern CMake) under single "Teem/src" prefix
+ source_group(
+ TREE "${CMAKE_CURRENT_SOURCE_DIR}/${_lib}"
+ PREFIX "Teem/src/${_lib}"
+ FILES
+ ${${_lib}_LIB_SOURCES}
+ ${${_lib}_LIB_PUBLIC_HEADERS}
)
endfunction()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-02 23:49:13
|
Revision: 7344
http://sourceforge.net/p/teem/code/7344
Author: kindlmann
Date: 2025-09-02 23:49:11 +0000 (Tue, 02 Sep 2025)
Log Message:
-----------
a re-written CMakeLists.txt for TeemV2, still in progress
Added Paths:
-----------
teem/trunk/CMakeLists-10.txt
Added: teem/trunk/CMakeLists-10.txt
===================================================================
--- teem/trunk/CMakeLists-10.txt (rev 0)
+++ teem/trunk/CMakeLists-10.txt 2025-09-02 23:49:11 UTC (rev 7344)
@@ -0,0 +1,525 @@
+#
+# Teem: Tools to process and visualize scientific data and images
+# Copyright (C) 2009--2025 University of Chicago
+# Copyright (C) 2005--2008 Gordon Kindlmann
+# Copyright (C) 1998--2004 University of Utah
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# (LGPL) as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+# The terms of redistributing and/or modifying this software also
+# include exceptions to the LGPL that facilitate static linking.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library; if not, see <https://www.gnu.org/licenses/>.
+#
+
+# Teem/CMakeLists.txt Version 10.8
+# Re-written entirely for TeemV2
+
+#-----------------------------------------------------------------------------
+# Project setup: version, metadata, and language
+
+# CMake Version 3.25 came out November 16, 2022
+# https://www.kitware.com/cmake-3-25-0-available-for-download/
+# why use 3.25: has nicer syntax for try_compile
+cmake_minimum_required(VERSION 3.25)
+
+# Teem version number (must match values in src/air/air.h)
+set(Teem_VERSION_MAJOR 1)
+set(Teem_VERSION_MINOR 12)
+set(Teem_VERSION_PATCH 0)
+set(Teem_VERSION_STRING ${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}.${Teem_VERSION_PATCH})
+
+project(Teem VERSION ${Teem_VERSION_STRING}
+ DESCRIPTION "Teem libraries developed by Gordon Kindlmann et al."
+ LANGUAGES C)
+
+message(STATUS "
+
+
+********************************************************************
+** Please join the Teem-users discord https://discord.gg/xBBqZGXkF7
+** to share how Teem works or does not work for you!
+** For example, are these re-written CMakeLists.txt files working?
+********************************************************************
+
+
+")
+
+#-----------------------------------------------------------------------------
+# Module paths and helper includes
+
+include(GNUInstallDirs)
+include(CMakeParseArguments) # for cmake_parse_arguments
+# include(CMakePrintHelpers) # for debugging via cmake_print_variables(varname)
+
+# CMake modules path (for e.g. FindLEVMAR.cmake)
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
+
+#-----------------------------------------------------------------------------
+# Dependency list and project options
+# - canonical list of optional dependencies
+# - option() flags for enabling/disabling them
+
+# Do we make a shared library? BUILD_SHARED_LIBS has particular meaning to CMake
+# https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html
+# https://gitlab.kitware.com/cmake/cmake/-/issues/25699
+option(BUILD_SHARED_LIBS "Build a libteem shared library" ON)
+
+# The canonical list of libraries that Teem can (optionally) depend on. Within this
+# CMakeLists.txt file, each one is a "DEP" or dependency However, FYI, within the
+# GNUmakefiles, each is called an EXT or external. Note: inter-dependency dependencies
+# are known in the INTERFACE_LINK_LIBRARIES of each target.
+set(_Teem_DEPS PNG ZLIB BZIP2 LEVMAR FFTW3 PTHREAD)
+
+# docstrings of all dependencies, to avoid redundancy between
+# option(Teem_DEP "${_doc}" ON) and set(Teem_DEP OFF CACHE BOOL "${_doc}" FORCE)
+set(_doc_ZLIB "Enable nrrd support for zlib (\"gzip\") data encoding")
+set(_doc_PNG "Enable nrrd support for PNG format images")
+set(_doc_BZIP2 "Enable nrrd support for bzip2 data encoding")
+set(_doc_PTHREAD "Enable hoover support for multi-threaded rendering")
+set(_doc_LEVMAR "Build with levmar for better elf and ten")
+set(_doc_FFTW3 "Build with fftw3 to enable nrrdFFT() and `unu fft`")
+
+# Whether to default to DEP being ON or OFF
+set(_dflt_ZLIB ON)
+set(_dflt_PNG ON)
+set(_dflt_BZIP2 OFF)
+set(_dflt_PTHREAD ON)
+set(_dflt_LEVMAR OFF)
+set(_dflt_FFTW3 OFF)
+
+# Add an option() for Teem_USE_DEP for each dependency DEP
+foreach(_tdep IN LISTS _Teem_DEPS)
+ # option name docstring default value
+ option(Teem_USE_${_tdep} "${_doc_${_tdep}}" ${_dflt_${_tdep}})
+endforeach()
+
+# Other options
+option(Teem_BUILD_HEX "Build stand-alone raw<-->hex decoder/encoder" OFF)
+option(BUILD_TESTING "Build with (incomplete) Teem tests" OFF)
+option(Teem_INSTALL_VERSIONED_SUBDIRS "Install in Teem-X.Y subdir of install/{bin,lib,include}" OFF)
+
+#-----------------------------------------------------------------------------
+# RPATH settings for macOS
+#
+# By default CMake patches installed binaries with `install_name_tool` to replace
+# build-tree RPATHs with install-tree RPATHs. On macOS this causes errors if `make
+# install` is run more than once, because the RPATH has already been modified.
+#
+# The solution used here is to build the executables *already* using the same install
+# RPATH, so no fixup is needed at install time.
+#
+# - Shared build: executables/dylibs use ${CMAKE_INSTALL_PREFIX}/lib
+# - Static build: no RPATHs needed at all
+
+if(APPLE)
+ set(CMAKE_MACOSX_RPATH ON)
+
+ if(BUILD_SHARED_LIBS)
+ # Use install RPATH even in the build tree
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
+ set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+ else()
+ # Static build: disable RPATHs entirely
+ set(CMAKE_SKIP_BUILD_RPATH TRUE)
+ set(CMAKE_SKIP_INSTALL_RPATH TRUE)
+ endif()
+endif()
+
+#-----------------------------------------------------------------------------
+# Dependency discovery
+# - normalize names/targets/FOUND vars
+# - run find_package() for requested DEPs
+
+# can't do PNG without ZLIB
+if(Teem_USE_PNG AND NOT Teem_USE_ZLIB)
+ message(WARNING "PNG requires ZLIB; enabling Teem_USE_ZLIB.")
+ set(Teem_USE_ZLIB ON)
+endif()
+
+# Special cases of CMake package names (not "DEP")
+set(_cpname_BZIP2 "BZip2")
+set(_cpname_PTHREAD "Threads")
+# Special cases of namespace::targetname (not "DEP::DEP")
+set(_target_BZIP2 "BZip2::BZip2")
+set(_target_PTHREAD "Threads::Threads")
+set(_target_FFTW3 "FFTW3::fftw3")
+# Special cases of variable name to test for DEP availability (not "DEP_FOUND")
+# (yes PTHREAD is special; there isn't a "Threads_FOUND"; but this enables uniformity)
+set(_found_PTHREAD "CMAKE_USE_PTHREADS_INIT")
+
+# Make sure _{cpack,target,found}_DEP are defined for all DEPS
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(NOT DEFINED _cpname_${_tdep})
+ set(_cpname_${_tdep} "${_tdep}")
+ endif()
+ if(NOT DEFINED _target_${_tdep})
+ set(_target_${_tdep} "${_tdep}::${_tdep}")
+ endif()
+ if(NOT DEFINED _found_${_tdep})
+ set(_found_${_tdep} "${_tdep}_FOUND")
+ endif()
+endforeach()
+# CMake (still) doesn't have anything like a dictionary,
+# so we don't have (for example): _cpname[_tdep]
+# but now, after the foreach above, we have: ${_cpname_${_tdep}}
+
+# With all that uniformity set up: try to find_package() for all DEPs requested
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(Teem_USE_${_tdep})
+ # this DEP is requested
+ find_package(${_cpname_${_tdep}} QUIET)
+ if(${_found_${_tdep}})
+ set(Teem_HAVE_${_tdep} TRUE)
+ else()
+ set(Teem_USE_${_tdep} OFF CACHE BOOL "${_doc_${_tdep}}" FORCE)
+ endif()
+ endif()
+endforeach()
+
+## to confirm that PNG::PNG links to ZLIB::ZLIB
+#get_target_property(_png_libs PNG::PNG INTERFACE_LINK_LIBRARIES)
+#message(STATUS "PNG::PNG links to: ${_png_libs}")
+
+#-----------------------------------------------------------------------------
+# Install directory layout
+
+# Will not include patch number, since (as of Teem V2.0)
+# API+ABI really are preserved if only patch number is changing
+if(Teem_INSTALL_VERSIONED_SUBDIRS)
+ set(_verpath "teem-${Teem_VERSION_MAJOR}.${Teem_VERSION_MINOR}")
+ set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/${_verpath}")
+ set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}")
+ set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}/${_verpath}")
+ # We do want package name "Teem" here, not teem
+ set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/${_verpath}/cmake/Teem")
+else()
+ set(HEADERS_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
+ set(LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}")
+ set(BIN_INSTALL_DIR "${CMAKE_INSTALL_BINDIR}")
+ set(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/Teem")
+endif()
+# so that BIN_INSTALL_DIR can be seen by src/bin/CMakeLists.txt
+set(BIN_INSTALL_DIR "${BIN_INSTALL_DIR}" CACHE INTERNAL "Install dir for binaries")
+
+#-----------------------------------------------------------------------------
+# Configure-time feature test: does AIR_EXISTS() work like isfinite()?
+
+# So much hassle for one dumb macro (which GLK started using before the functionally
+# equivalent isfinite() became widely available). The little CMake/TestAIR_EXISTS.c
+# program tests the equivalent of AIR_EXISTS (but without directly using air.h's
+# AIR_EXISTS because this has to be stand-alone), to see if it can correctly detect
+# IEEE754 special values (NaNs and infinities). For this to be a useful test that informs
+# how the rest of Teem code will work, TestAIR_EXISTS.c needs to be compiled the same as
+# Teem itself will be compiled later. Sadly, it was not until Teem V2 that this
+# consistency was actually enforced (!) To futher help debugging, we also print out (via
+# message()) exactly how TestAIR_EXISTS.c is compiled.
+#
+# (rejected but interesting debugging strategies:
+# message(STATUS "Pausing CMake so you can inspect temporary files...")
+# execute_process(COMMAND ${CMAKE_COMMAND} -E sleep 30)
+# or
+# execute_process(COMMAND /bin/sh -c "read -p 'Press ENTER to continue...'")
+# )
+
+# "taex" = Test Air_EXists
+set(_taex_src "${CMAKE_CURRENT_LIST_DIR}/CMake/TestAIR_EXISTS.c")
+
+# Combine base flags with build-type-specific flags
+string(TOUPPER "${CMAKE_BUILD_TYPE}" _taex_BTUC) # Build Type Upper Case
+set(_taex_flags "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${_taex_BTUC}}")
+set(_taex_me "AIR_EXISTS macro (compiled with \"${_taex_flags}\")")
+message(STATUS "Test whether ${_taex_me} detects IEEE754 special values")
+message(STATUS " (compiling ${_taex_src} with CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} and CMAKE_C_FLAGS_${_taex_BTUC}=${CMAKE_C_FLAGS_${_taex_BTUC}})")
+
+# Where we want a durable copy of the compiled probe
+if(WIN32)
+ set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS.exe")
+else()
+ set(_taex_copy "${CMAKE_BINARY_DIR}/TestAIR_EXISTS")
+endif()
+# Remove any stale copy from previous runs
+if(EXISTS "${_taex_copy}")
+ file(REMOVE "${_taex_copy}")
+endif()
+
+# We would use try_run except that try_run deletes everything it created before try_run
+# finishes, which robs us of the chance to later re-run the test program. So we first
+# try_compile and then execute_process.
+# https://cmake.org/cmake/help/v3.25/command/try_compile.html#try-compiling-source-files
+try_compile(
+ _taex_compiles # boolean result: TRUE if compile succeeded
+ SOURCES "${_taex_src}" # one or more source files for the test
+ CMAKE_FLAGS
+ "-DCMAKE_VERBOSE_MAKEFILE=ON"
+ "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
+ "-DCMAKE_C_FLAGS_${_taex_BTUC}=${_taex_flags}"
+ "-DCMAKE_DEPENDS_USE_COMPILER=FALSE" # no -MD/-MT/-MF crap
+ OUTPUT_VARIABLE _taex_compile_out
+ COPY_FILE "${_taex_copy}" # copy the built executable to a stable path
+ COPY_FILE_ERROR _taex_copy_error
+)
+if(NOT _taex_compiles)
+ message(FATAL_ERROR "Failed to compile ${_taex_src} so could not test AIR_EXISTS macro")
+endif()
+# Show the captured output
+message(STATUS "v.v.v.v.v.v.v.v.v.v Compile output for AIR_EXISTS macro test v.v.v.v.v.v.v.v.v.v\n${_taex_compile_out}\n^'^'^'^'^'^'^'^'^'^ End compile output ^'^'^'^'^'^'^'^'^'^")
+
+if(_taex_copy_error)
+ message(FATAL_ERROR "Test program compiled but copy failed: ${_taex_copy_error}")
+elseif(NOT EXISTS "${_taex_copy}")
+ message(FATAL_ERROR "Test program compiled but resulting file not found at ${_taex_copy}")
+endif()
+
+# Run the compiled test program
+# https://cmake.org/cmake/help/latest/command/execute_process.html
+message(STATUS "Running test program ${_taex_copy}")
+execute_process(
+ COMMAND "${_taex_copy}"
+ RESULT_VARIABLE _taex_run_status
+ OUTPUT_VARIABLE _taex_run_out
+ ERROR_VARIABLE _taex_run_err
+)
+
+if(_taex_run_status EQUAL 0)
+ message(STATUS "Yes, ${_taex_me} works to detect IEEE754 special values")
+ set(AIR_EXISTS_MACRO_FAILS 0 CACHE INTERNAL "AIR_EXISTS macro works correctly")
+else()
+ message(STATUS "NO, ${_taex_me} FAILS to detect IEEE754 special values")
+ message(STATUS "Probe stderr:\n${_taex_run_err}")
+ set(AIR_EXISTS_MACRO_FAILS 1 CACHE INTERNAL "AIR_EXISTS macro fails")
+endif()
+
+#-----------------------------------------------------------------------------
+# We gather here to build the monolithic library 'libteem'
+
+# (whereas the old-but-recently-updated GNUmakefiles build finer-grained per-library
+# libraries libair, libbiff, etc, which are still needed for Teem hacking
+
+add_library(Teem "")
+
+# Ensure build's include dir exists for generated headers
+file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/include/teem)
+
+# Public include directories
+target_include_directories(Teem
+ PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
+ $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
+ $<INSTALL_INTERFACE:${HEADERS_INSTALL_DIR}>
+)
+
+# Say "cc -D TEEM_DEP" and link with DEP target if dependency DEP is used
+foreach(_tdep IN LISTS _Teem_DEPS)
+ if(Teem_HAVE_${_tdep})
+ message(STATUS "Will use ${_tdep}: ${_doc_${_tdep}}")
+ target_compile_definitions(Teem PUBLIC "TEEM_${_tdep}")
+ # This attaches DEP=${_target_${_tdep}} to the Teem target, but not any particular
+ # command-line executable. It is PRIVATE because Teem is designed to not directly
+ # expose any thing from, say, png.h or libpng in its API or ABI - there are always
+ # stub alternatives for when DEP is not used. PRIVATE is saying: use DEP when
+ # building the target, but do not automatically propagate DEP to things (like unu)
+ # depending on the target
+ target_link_libraries(Teem PRIVATE "${_target_${_tdep}}")
+ else()
+ message(STATUS " (not using ${_tdep}: ${_doc_${_tdep}})")
+ endif()
+endforeach()
+# confirm results of loop above: what dependencies do I consume
+get_target_property(_Teem_libs Teem LINK_LIBRARIES)
+message(STATUS "Teem LINK_LIBRARIES = ${_Teem_libs}")
+## Not interesting for Teem: what dependencies do I expose. Will show
+## "_Teem_libs-NOTFOUND" because of Teem's API/ABI invariance w.r.t dependencies
+#get_target_property(_Teem_libs Teem INTERFACE_LINK_LIBRARIES)
+#message(STATUS "Teem INTERFACE_LINK_LIBRARIES = ${_Teem_libs}")
+
+# Say "cc -D TEEM_STATIC" if not building a shared library
+# (used as part of handling Windows "extern" analog)
+target_compile_definitions(Teem PUBLIC "$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:TEEM_STATIC>")
+
+## Handling linking with math library libm via -lm
+# We could be brute-force, and add -lm to link line for any and all Unices:
+# if(UNIX)
+# target_link_libraries(Teem PRIVATE m)
+# endif()
+# But actually, not all Unices need to link with -lm; let's figure out if it is needed
+
+include(CheckFunctionExists)
+
+# First: can we link sin() without -lm?
+unset(CMAKE_REQUIRED_LIBRARIES)
+check_function_exists(sin HAVE_SIN_WITHOUT_LIBM)
+
+# If not, try again with -lm
+if(NOT HAVE_SIN_WITHOUT_LIBM)
+ set(CMAKE_REQUIRED_LIBRARIES m)
+ check_function_exists(sin HAVE_SIN_WITH_LIBM)
+ unset(CMAKE_REQUIRED_LIBRARIES)
+endif()
+
+# Decide outcome
+if(HAVE_SIN_WITHOUT_LIBM)
+ message(STATUS "sin() found without libm; do NOT need to link with -lm")
+elseif(HAVE_SIN_WITH_LIBM)
+ message(STATUS "sin() requires libm; DO need to link with -lm")
+ target_link_libraries(Teem PRIVATE m)
+else()
+ message(FATAL_ERROR "Could not find sin() at all!")
+endif()
+
+# Set various properties
+set_target_properties(Teem PROPERTIES
+ OUTPUT_NAME teem # so we get libteem not libTeem
+ VERSION ${Teem_VERSION_STRING}
+ SOVERSION ${Teem_VERSION_MAJOR}
+ POSITION_INDEPENDENT_CODE ${BUILD_SHARED_LIBS}
+)
+
+#-----------------------------------------------------------------------------
+# Teem's component libraries
+
+# Each component library will append its public headers to global property
+# "Teem_HEADER_FILES". For clarity, we initialize it to empty string now.
+set_property(GLOBAL PROPERTY Teem_HEADER_FILES "")
+
+# Helper function component library call to declare its contribution
+function(_Teem_add_library _pathtolib)
+ get_filename_component(_lib ${_pathtolib} NAME)
+ cmake_parse_arguments(${_lib} "" "" "SOURCES;PUBLIC_HEADERS" ${ARGN})
+
+ # 1. Append public headers to global property Teem_HEADER_FILES, except that
+ # we need to also remember the containing directory; prepend that now.
+ # Will need the same prepending of sources for source_group below
+ set(${_lib}_LIB_SOURCES ${${_lib}_SOURCES})
+ list(TRANSFORM ${_lib}_LIB_SOURCES PREPEND "${_lib}/")
+ set(${_lib}_LIB_PUBLIC_HEADERS ${${_lib}_PUBLIC_HEADERS})
+ list(TRANSFORM ${_lib}_LIB_PUBLIC_HEADERS PREPEND "${_lib}/")
+ set_property(GLOBAL APPEND PROPERTY Teem_HEADER_FILES ${${_lib}_LIB_PUBLIC_HEADERS})
+
+ # 2. Add all sources (including private headers) to Teem
+ target_sources(Teem PRIVATE
+ ${${_lib}_SOURCES}
+ ${${_lib}_PUBLIC_HEADERS}
+ )
+
+ # 3. Group sources logically for IDEs
+ source_group(${_lib} FILES
+ ${${_lib}_LIB_SOURCES}
+ ${${_lib}_LIB_PUBLIC_HEADERS}
+ )
+endfunction()
+
+# (TEEM_LIB_LIST)
+set(Teem_LIBRARIES
+ air hest biff nrrd ell moss unrrdu alan tijk gage dye bane
+ limn echo hoover seek ten elf pull coil push mite meet)
+# Read in CMakeLists.txt of each library
+foreach(_dir IN LISTS Teem_LIBRARIES)
+ # each one calls _Teem_add_library
+ add_subdirectory(src/${_dir})
+endforeach()
+
+#-----------------------------------------------------------------------------
+# Public headers: copy, configure, and declare via FILE_SET
+
+# Set *variable* _Teem_headers from *property* Teem_HEADER_FILES
+get_property(_Teem_headers GLOBAL PROPERTY Teem_HEADER_FILES)
+
+# Copy header files to install location
+set(_Teem_headers_full)
+foreach(_dirhdr IN LISTS _Teem_headers)
+ # e.g. set _hdr="air.h" from _dirhdr="air/air.h"
+ get_filename_component(_hdr ${_dirhdr} NAME)
+ set(_dest "${CMAKE_BINARY_DIR}/include/teem/${_hdr}")
+ # cmake_print_variables(_dirhdr _dest)
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/${_dirhdr} ${_dest} COPYONLY)
+ list(APPEND _Teem_headers_full "${_dest}")
+endforeach()
+# cmake_print_variables(_Teem_headers_full)
+
+# Configure generated header airExistsConf.h
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/airExistsConf.h
+ ${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h
+ @ONLY NEWLINE_STYLE UNIX)
+list(APPEND _Teem_headers_full "${CMAKE_CURRENT_BINARY_DIR}/include/teem/airExistsConf.h")
+
+# Declare where public headers are found during build
+target_sources(Teem
+ PUBLIC
+ FILE_SET public_headers
+ TYPE HEADERS
+ BASE_DIRS ${CMAKE_BINARY_DIR}/include
+ FILES ${_Teem_headers_full}
+)
+
+#-----------------------------------------------------------------------------
+# We also gather here to build the command-line executables (e.g. "unu")
+
+add_subdirectory(src/bin)
+
+#-----------------------------------------------------------------------------
+# Optional helper tools (hex/dehex)
+
+# If requested, helper dehex/exhex programs
+if(Teem_BUILD_HEX)
+ add_subdirectory(src/hex)
+endif()
+
+#-----------------------------------------------------------------------------
+# Testing
+
+if(BUILD_TESTING)
+ include(CTest) # belatedly
+ enable_testing()
+ add_subdirectory(Testing) # add Teem-specific tests
+endif()
+
+#-----------------------------------------------------------------------------
+# Install rules
+
+install(TARGETS Teem
+ EXPORT TeemTargets
+ RUNTIME DESTINATION ${BIN_INSTALL_DIR}
+ LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+ ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+ FILE_SET public_headers DESTINATION ${HEADERS_INSTALL_DIR}
+)
+
+# Export targets for find_package
+install(EXPORT TeemTargets
+ FILE TeemTargets.cmake
+ NAMESPACE Teem::
+ DESTINATION ${CONFIG_INSTALL_DIR}
+)
+
+include(CMakePackageConfigHelpers)
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in"
+"@PACKAGE_INIT@\ninclude(\"\${CMAKE_CURRENT_LIST_DIR}/TeemTargets.cmake\")\n")
+
+configure_package_config_file(${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
+ INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
+)
+
+write_basic_package_version_file(
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
+ VERSION ${Teem_VERSION_STRING}
+ COMPATIBILITY AnyNewerVersion
+)
+
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/TeemConfigVersion.cmake
+ DESTINATION ${CONFIG_INSTALL_DIR}
+)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-02 06:02:56
|
Revision: 7343
http://sourceforge.net/p/teem/code/7343
Author: kindlmann
Date: 2025-09-02 06:02:53 +0000 (Tue, 02 Sep 2025)
Log Message:
-----------
now these have .c file lists that can be ~synched with CMakeList.txt files
Modified Paths:
--------------
teem/trunk/src/air/GNUmakefile
teem/trunk/src/alan/GNUmakefile
teem/trunk/src/bane/GNUmakefile
teem/trunk/src/biff/GNUmakefile
teem/trunk/src/coil/GNUmakefile
teem/trunk/src/dye/GNUmakefile
teem/trunk/src/echo/GNUmakefile
teem/trunk/src/elf/GNUmakefile
teem/trunk/src/ell/GNUmakefile
teem/trunk/src/gage/GNUmakefile
teem/trunk/src/hest/GNUmakefile
teem/trunk/src/hoover/GNUmakefile
teem/trunk/src/limn/GNUmakefile
teem/trunk/src/meet/GNUmakefile
teem/trunk/src/mite/GNUmakefile
teem/trunk/src/moss/GNUmakefile
teem/trunk/src/nrrd/GNUmakefile
teem/trunk/src/pull/GNUmakefile
teem/trunk/src/push/GNUmakefile
teem/trunk/src/seek/GNUmakefile
teem/trunk/src/ten/GNUmakefile
teem/trunk/src/tijk/GNUmakefile
teem/trunk/src/unrrdu/GNUmakefile
Modified: teem/trunk/src/air/GNUmakefile
===================================================================
--- teem/trunk/src/air/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/air/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,8 +45,11 @@
$(L).Depends =
$(L).PublicHdr = air.h
$(L).PrivateHdr = privateAir.h
-$(L).Obj = 754.o randMT.o randJSF.o array.o miscAir.o parseAir.o math.o \
- endianAir.o mop.o enum.o sane.o string.o threadAir.o heap.o
+# list below copied from similar block in CMakeLists.txt, but then add " \"
+$(L).Obj = $(patsubst %.c,%.o, \
+ 754.c array.c endianAir.c enum.c heap.c math.c miscAir.c mop.c parseAir.c \
+ randJSF.c randMT.c sane.c string.c threadAir.c \
+ )
$(L).Test = floatprint doubleprint tok tmop tline fp trand trandJSF tmisc \
bessy tarr texp logrice tprint
####
Modified: teem/trunk/src/alan/GNUmakefile
===================================================================
--- teem/trunk/src/alan/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/alan/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = air biff ell nrrd
$(L).PublicHdr = alan.h
$(L).PrivateHdr =
-$(L).Obj = methodsAlan.o enumsAlan.o coreAlan.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ coreAlan.c enumsAlan.c methodsAlan.c \
+ )
$(L).Test =
####
####
Modified: teem/trunk/src/bane/GNUmakefile
===================================================================
--- teem/trunk/src/bane/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/bane/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,11 +45,11 @@
$(L).Depends = gage unrrdu nrrd biff air
$(L).PublicHdr = bane.h
$(L).PrivateHdr = privateBane.h
-$(L).Obj = defaultsBane.o rangeBane.o inc.o clip.o measr.o methodsBane.o \
- valid.o trnsf.o scat.o hvol.o trex.o \
- gkmsFlotsam.o \
- gkmsHvol.o gkmsScat.o gkmsInfo.o gkmsPvg.o gkmsOpac.o \
- gkmsMite.o gkmsTxf.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ clip.c defaultsBane.c gkmsFlotsam.c gkmsHvol.c gkmsInfo.c gkmsMite.c gkmsOpac.c \
+ gkmsPvg.c gkmsScat.c gkmsTxf.c hvol.c inc.c measr.c methodsBane.c rangeBane.c \
+ scat.c trex.c trnsf.c valid.c \
+ )
$(L).Test = tinfo sigma pos opac
####
####
Modified: teem/trunk/src/biff/GNUmakefile
===================================================================
--- teem/trunk/src/biff/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/biff/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = air
$(L).PublicHdr = biff.h
$(L).PrivateHdr = privateBiff.h
-$(L).Obj = biffmsg.o biffbiff.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ biffbiff.c biffmsg.c \
+ )
$(L).Test = test
####
####
Modified: teem/trunk/src/coil/GNUmakefile
===================================================================
--- teem/trunk/src/coil/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/coil/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -46,8 +46,10 @@
$(L).Depends = ten ell nrrd biff air
$(L).PublicHdr = coil.h
$(L).PrivateHdr =
-$(L).Obj = defaultsCoil.o enumsCoil.o scalarCoil.o tensorCoil.o \
- realmethods.o methodsCoil.o coreCoil.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ coreCoil.c defaultsCoil.c enumsCoil.c methodsCoil.c realmethods.c scalarCoil.c \
+ tensorCoil.c \
+ )
$(L).Test = coiler
####
####
Modified: teem/trunk/src/dye/GNUmakefile
===================================================================
--- teem/trunk/src/dye/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/dye/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -46,7 +46,9 @@
$(L).Depends = ell biff air
$(L).PublicHdr = dye.h
$(L).PrivateHdr =
-$(L).Obj = methodsDye.o convertDye.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ convertDye.c methodsDye.c \
+ )
$(L).Test = conv bow mchist iconv
####
####
Modified: teem/trunk/src/echo/GNUmakefile
===================================================================
--- teem/trunk/src/echo/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/echo/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,8 +45,10 @@
$(L).Depends = limn ell nrrd biff air
$(L).PublicHdr = echo.h
$(L).PrivateHdr = privateEcho.h
-$(L).Obj = enumsEcho.o methodsEcho.o objmethods.o bounds.o set.o model.o \
- matter.o intx.o sqd.o list.o color.o lightEcho.o renderEcho.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ bounds.c color.c enumsEcho.c intx.c lightEcho.c list.c matter.c methodsEcho.c \
+ model.c objmethods.c renderEcho.c set.c sqd.c \
+ )
$(L).Test = test trend
####
####
Modified: teem/trunk/src/elf/GNUmakefile
===================================================================
--- teem/trunk/src/elf/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/elf/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = ten tijk limn ell nrrd air
$(L).PublicHdr = elf.h
$(L).PrivateHdr =
-$(L).Obj = ballStickElf.o ESHEstimElf.o glyphElf.o maximaElf.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ ballStickElf.c ESHEstimElf.c glyphElf.c maximaElf.c \
+ )
$(L).Test =
####
####
Modified: teem/trunk/src/ell/GNUmakefile
===================================================================
--- teem/trunk/src/ell/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/ell/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = nrrd biff air
$(L).PublicHdr = ell.h ellMacros.h
$(L).PrivateHdr =
-$(L).Obj = cubicEll.o eigen.o miscEll.o vecEll.o mat.o quat.o genmat.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ cubicEll.c eigen.c genmat.c mat.c miscEll.c quat.c vecEll.c \
+ )
$(L).Test = sort3 invert tq wheel rot2aa inter mmul es6
####
####
Modified: teem/trunk/src/gage/GNUmakefile
===================================================================
--- teem/trunk/src/gage/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/gage/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,11 +45,13 @@
$(L).Depends = ell nrrd biff air
$(L).PublicHdr = gage.h
$(L).PrivateHdr = privateGage.h
-$(L).Obj = defaultsGage.o miscGage.o scl.o kind.o \
- shape.o pvl.o update.o deconvolve.o \
- print.o sclanswer.o sclprint.o sclfilter.o \
- vecGage.o vecprint.o twovecGage.o st.o filter.o ctx.o \
- stack.o stackBlur.o optimsig.o
+# NOT including multiGage.c for now, and scl3pfilterbody.c is just a macro
+$(L).Obj = $(patsubst %.c,%.o, \
+ ctx.c deconvolve.c defaultsGage.c filter.c kind.c miscGage.c \
+ optimsig.c print.c pvl.c scl.c sclanswer.c sclfilter.c \
+ sclprint.c shape.c st.c stack.c stackBlur.c twovecGage.c update.c vecGage.c \
+ vecprint.c \
+ )
$(L).Test = ctfix demo vh aalias indx genoptsig ssc maxes tplot
####
####
Modified: teem/trunk/src/hest/GNUmakefile
===================================================================
--- teem/trunk/src/hest/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/hest/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = air
$(L).PublicHdr = hest.h
$(L).PrivateHdr = privateHest.h
-$(L).Obj = defaultsHest.o methodsHest.o usage.o parseHest.o adders.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ adders.c defaultsHest.c methodsHest.c parseHest.c usage.c \
+ )
$(L).Test = ex1 ex2 ex3 ex4 ex5 ex6 strings bday tmpl
####
####
Modified: teem/trunk/src/hoover/GNUmakefile
===================================================================
--- teem/trunk/src/hoover/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/hoover/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = limn ell nrrd biff air
$(L).PublicHdr = hoover.h
$(L).PrivateHdr =
-$(L).Obj = defaultsHoover.o stub.o methodsHoover.o rays.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ defaultsHoover.c methodsHoover.c rays.c stub.c \
+ )
$(L).Test =
####
####
Modified: teem/trunk/src/limn/GNUmakefile
===================================================================
--- teem/trunk/src/limn/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/limn/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,12 +45,13 @@
$(L).Depends = ell unrrdu nrrd biff hest air
$(L).PublicHdr = limn.h
$(L).PrivateHdr = privateLimn.h
-$(L).Obj = defaultsLimn.o qn.o light.o envmap.o cam.o methodsLimn.o \
- obj.o transform.o shapes.o renderLimn.o io.o hestLimn.o \
- splineMisc.o splineMethods.o splineEval.o enumsLimn.o \
- splineFit.o polydata.o polyshapes.o polymod.o polyfilter.o \
- lpuFlotsam.o lpu_about.o lpu_ccfind.o lpu_psel.o lpu_rast.o \
- lpu_verts.o lpu_meas.o lpu_sort.o lpu_cbfit.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ cam.c defaultsLimn.c enumsLimn.c envmap.c hestLimn.c io.c light.c lpu_about.c \
+ lpu_cbfit.c lpu_ccfind.c lpu_meas.c lpu_psel.c lpu_rast.c lpu_sort.c \
+ lpu_verts.c lpuFlotsam.c methodsLimn.c obj.c polydata.c polyfilter.c polymod.c \
+ polyshapes.c qn.c renderLimn.c shapes.c splineEval.c splineFit.c \
+ splineMethods.c splineMisc.c transform.c \
+ )
$(L).Test = map light tcam tps tspline tbc tcamanim soid off2eps \
triimg plot intx tio clip lpu tqn
####
Modified: teem/trunk/src/meet/GNUmakefile
===================================================================
--- teem/trunk/src/meet/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/meet/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -46,7 +46,9 @@
$(L).Depends = air hest biff nrrd ell moss unrrdu alan tijk gage dye bane limn echo hoover seek ten elf pull coil push mite
$(L).PublicHdr = meet.h
$(L).PrivateHdr =
-$(L).Obj = enumall.o meetNrrd.o meetGage.o meetPull.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ enumall.c meetGage.c meetNrrd.c meetPull.c \
+ )
$(L).Test = strace vpnts tenums
####
####
Modified: teem/trunk/src/mite/GNUmakefile
===================================================================
--- teem/trunk/src/mite/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/mite/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -46,8 +46,9 @@
$(L).Depends = ten hoover limn gage ell nrrd biff air
$(L).PublicHdr = mite.h
$(L).PrivateHdr = privateMite.h
-$(L).Obj = defaultsMite.o kindnot.o txf.o shade.o \
- user.o renderMite.o thread.o ray.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ defaultsMite.c kindnot.c ray.c renderMite.c shade.c thread.c txf.c user.c \
+ )
$(L).Test =
####
####
Modified: teem/trunk/src/moss/GNUmakefile
===================================================================
--- teem/trunk/src/moss/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/moss/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,7 +45,9 @@
$(L).Depends = ell nrrd biff hest air
$(L).PublicHdr = moss.h
$(L).PrivateHdr = privateMoss.h
-$(L).Obj = defaultsMoss.o methodsMoss.o sampler.o xform.o hestMoss.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ defaultsMoss.c hestMoss.c methodsMoss.c sampler.c xform.c \
+ )
$(L).Test = invert
####
####
Modified: teem/trunk/src/nrrd/GNUmakefile
===================================================================
--- teem/trunk/src/nrrd/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/nrrd/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -46,20 +46,16 @@
$(L).Depends = biff hest air
$(L).PublicHdr = nrrd.h nrrdDefines.h nrrdMacros.h nrrdEnums.h
$(L).PrivateHdr = privateNrrd.h
-$(L).Obj = \
- accessors.o arith.o arraysNrrd.o apply1D.o apply2D.o \
- axis.o comment.o convertNrrd.o defaultsNrrd.o \
- deringNrrd.o endianNrrd.o enumsNrrd.o filt.o gzio.o \
- hestNrrd.o histogram.o iter.o kernel.o \
- map.o measure.o methodsNrrd.o parseNrrd.o \
- read.o write.o reorder.o resampleNrrd.o \
- simple.o subset.o superset.o tmfKernel.o \
- winKernel.o bsplKernel.o ccmethods.o cc.o range.o \
- encoding.o encodingRaw.o encodingAscii.o encodingHex.o \
- encodingGzip.o encodingBzip2.o encodingZRL.o \
- format.o formatNRRD.o formatPNM.o formatPNG.o \
- formatVTK.o formatText.o formatEPS.o \
- keyvalue.o resampleContext.o fftNrrd.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ accessors.c apply1D.c apply2D.c arith.c arraysNrrd.c axis.c bsplKernel.c cc.c \
+ ccmethods.c comment.c convertNrrd.c defaultsNrrd.c deringNrrd.c encoding.c \
+ encodingAscii.c encodingBzip2.c encodingGzip.c encodingHex.c encodingRaw.c \
+ encodingZRL.c endianNrrd.c enumsNrrd.c fftNrrd.c filt.c format.c formatEPS.c \
+ formatNRRD.c formatPNG.c formatPNM.c formatText.c formatVTK.c gzio.c hestNrrd.c \
+ histogram.c iter.c kernel.c keyvalue.c map.c measure.c methodsNrrd.c \
+ parseNrrd.c range.c read.c reorder.c resampleContext.c resampleNrrd.c simple.c \
+ subset.c superset.c tmfKernel.c winKernel.c write.c \
+ )
$(L).Test = tread trand ax io strio texp minmax tkernel typestest \
tline genvol quadvol convo kv reuse histrad otsu \
dnorm morph phrnd
Modified: teem/trunk/src/pull/GNUmakefile
===================================================================
--- teem/trunk/src/pull/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/pull/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,9 +45,11 @@
$(L).Depends = ten limn gage ell nrrd biff hest air
$(L).PublicHdr = pull.h
$(L).PrivateHdr = privatePull.h
-$(L).Obj = defaultsPull.o energy.o infoPull.o volumePull.o taskPull.o \
- binningPull.o corePull.o contextPull.o actionPull.o constraints.o \
- pointPull.o popcntl.o ccPull.o parmPull.o initPull.o enumsPull.o trace.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ actionPull.c binningPull.c ccPull.c constraints.c contextPull.c corePull.c \
+ defaultsPull.c energy.c enumsPull.c infoPull.c initPull.c parmPull.c \
+ pointPull.c popcntl.c taskPull.c trace.c volumePull.c \
+ )
$(L).Test = eparse circ
####
####
Modified: teem/trunk/src/push/GNUmakefile
===================================================================
--- teem/trunk/src/push/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/push/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,8 +45,9 @@
$(L).Depends = ten gage ell nrrd biff air
$(L).PublicHdr = push.h
$(L).PrivateHdr = privatePush.h
-$(L).Obj = defaultsPush.o methodsPush.o binning.o \
- forces.o corePush.o setup.o action.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ action.c binning.c corePush.c defaultsPush.c forces.c methodsPush.c setup.c \
+ )
$(L).Test = eparse pusher
####
####
Modified: teem/trunk/src/seek/GNUmakefile
===================================================================
--- teem/trunk/src/seek/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/seek/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,8 +45,10 @@
$(L).Depends = gage limn ell nrrd biff hest air
$(L).PublicHdr = seek.h
$(L).PrivateHdr =
-$(L).Obj = enumsSeek.o tables.o methodsSeek.o setSeek.o updateSeek.o \
- extract.o textract.o descend.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ descend.c enumsSeek.c extract.c methodsSeek.c setSeek.c tables.c textract.c \
+ updateSeek.c \
+ )
$(L).Test = tiso trv
####
####
Modified: teem/trunk/src/ten/GNUmakefile
===================================================================
--- teem/trunk/src/ten/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/ten/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -45,24 +45,20 @@
$(L).Depends = echo limn gage unrrdu ell nrrd biff air
$(L).PublicHdr = ten.h tenMacros.h
$(L).PrivateHdr = privateTen.h
-$(L).Obj = tensor.o chan.o aniso.o glyph.o enumsTen.o grads.o miscTen.o \
- mod.o estimate.o tenGage.o tenDwiGage.o qseg.o path.o qglox.o \
- fiberMethods.o fiber.o epireg.o defaultsTen.o bimod.o bvec.o \
- triple.o experSpec.o tenModel.o modelBall.o model1Stick.o \
- model1Vector2D.o model1Unit2D.o model2Unit2D.o \
- modelBall1Stick.o modelBall1StickEMD.o modelBall1Cylinder.o \
- model1Cylinder.o model1Tensor2.o modelZero.o modelB0.o \
- tendAbout.o \
- tendFlotsam.o tendGrads.o tendAnplot.o tendAnvol.o tendEval.o \
- tendEvec.o tendSten.o tendExpand.o tendEvq.o tendPoint.o \
- tendTriple.o tendTconv.o tendAvg.o \
- tendAnhist.o tendMake.o tendSatin.o tendShrink.o tendGlyph.o \
- tendFiber.o tendEpireg.o tendBmat.o tendEstim.o tendSim.o \
- tendMsim.o tendMfit.o tendMconv.o \
- tendSlice.o tendEllipse.o tendEvecrgb.o tendNorm.o tendAnscale.o \
- tendEvalpow.o tendEvalclamp.o tendEvaladd.o tendEvalmult.o \
- tendHelix.o tendBfit.o \
- tendUnmf.o tendLog.o tendExp.o
+$(L).Obj = $(patsubst %.c,%.o, \
+ aniso.c bimod.c bvec.c chan.c defaultsTen.c enumsTen.c epireg.c estimate.c \
+ experSpec.c fiber.c fiberMethods.c glyph.c grads.c miscTen.c mod.c \
+ model1Cylinder.c model1Stick.c model1Tensor2.c model1Unit2D.c model1Vector2D.c \
+ model2Unit2D.c modelB0.c modelBall.c modelBall1Cylinder.c modelBall1Stick.c \
+ modelBall1StickEMD.c modelZero.c path.c qglox.c qseg.c tendAbout.c tendAnhist.c \
+ tendAnplot.c tendAnscale.c tendAnvol.c tendAvg.c tendBfit.c tendBmat.c \
+ tendEllipse.c tendEpireg.c tendEstim.c tendEval.c tendEvaladd.c tendEvalclamp.c \
+ tendEvalmult.c tendEvalpow.c tendEvec.c tendEvecrgb.c tendEvq.c tendExp.c \
+ tendExpand.c tendFiber.c tendFlotsam.c tendGlyph.c tendGrads.c tendHelix.c \
+ tendLog.c tendMake.c tendMconv.c tendMfit.c tendMsim.c tendNorm.c tendPoint.c \
+ tendSatin.c tendShrink.c tendSim.c tendSlice.c tendSten.c tendTconv.c \
+ tendTriple.c tendUnmf.c tenDwiGage.c tenGage.c tenModel.c tensor.c triple.c \
+ )
# tendCalc.o nixed
$(L).Test = roistat tg tt tem rotedge tsoid odf-hist to tensorDotDat \
igrt cntr geode taniso csim ttriple tqgl teigen
Modified: teem/trunk/src/tijk/GNUmakefile
===================================================================
--- teem/trunk/src/tijk/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/tijk/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -44,9 +44,11 @@
####
$(L).Depends = ell nrrd air
$(L).PublicHdr = tijk.h
-$(L).PrivateHdr = privateTijk.h shtables.h convertQuietPush.h convertQuietPop.h
-$(L).Obj = 2dTijk.o 3dTijk.o approxTijk.o enumsTijk.o fsTijk.o miscTijk.o \
- nrrdTijk.o shTijk.o
+$(L).PrivateHdr = convertQuietPop.h convertQuietPush.h privateTijk.h shtables.h
+$(L).Obj = $(patsubst %.c,%.o, \
+ 2dTijk.c 3dTijk.c approxTijk.c enumsTijk.c fsTijk.c miscTijk.c nrrdTijk.c \
+ shTijk.c \
+ )
$(L).Test =
####
####
Modified: teem/trunk/src/unrrdu/GNUmakefile
===================================================================
--- teem/trunk/src/unrrdu/GNUmakefile 2025-09-02 02:05:38 UTC (rev 7342)
+++ teem/trunk/src/unrrdu/GNUmakefile 2025-09-02 06:02:53 UTC (rev 7343)
@@ -46,20 +46,19 @@
$(L).PublicHdr = unrrdu.h
$(L).PrivateHdr = privateUnrrdu.h
$(L).Obj = flotsam.o
-#
-# The source for unu command xxx must define a unuCmd "unu_xxxCmd".
-# This applies to every .o file below.
-#
-$(L).Obj += flip.o slice.o sselect.o convert.o crop.o pad.o permute.o \
- histo.o resample.o cmedian.o reshape.o shuffle.o minmax.o quantize.o \
- unquantize.o project.o swap.o join.o dhisto.o \
- jhisto.o dice.o heq.o histax.o gamma.o make.o 1op.o 2op.o 3op.o \
- lut.o subst.o rmap.o imap.o lut2.o save.o head.o data.o splice.o \
- inset.o axinsert.o axdelete.o axinfo.o ccfind.o ccadj.o ccmerge.o \
- ccsettle.o about.o axsplit.o axmerge.o mlut.o mrmap.o tile.o untile.o \
- unorient.o env.o dist.o affine.o i2w.o w2i.o fft.o acrop.o dering.o \
- diff.o cksum.o dnorm.o vidicon.o undos.o uncmt.o basinfo.o grid.o ilk.o \
- ninspect.o hack.o aabplot.o block.o unblock.o built.o
+# The source file xxx.c for "unu xxx" must define a unuCmd "unu_xxxCmd".
+# This applies to every .o file listed here.
+$(L).Obj += $(patsubst %.c,%.o, \
+ 1op.c 2op.c 3op.c aabplot.c about.c acrop.c affine.c axdelete.c axinfo.c \
+ axinsert.c axmerge.c axsplit.c basinfo.c block.c built.c ccadj.c ccfind.c \
+ ccmerge.c ccsettle.c cksum.c cmedian.c convert.c crop.c data.c dering.c \
+ dhisto.c dice.c diff.c dist.c dnorm.c env.c fft.c flip.c gamma.c grid.c hack.c \
+ head.c heq.c histax.c histo.c i2w.c ilk.c imap.c inset.c jhisto.c join.c lut.c \
+ lut2.c make.c minmax.c mlut.c mrmap.c ninspect.c pad.c permute.c project.c \
+ quantize.c resample.c reshape.c rmap.c save.c shuffle.c slice.c splice.c \
+ sselect.c subst.c swap.c tile.c unblock.c uncmt.c undos.c unorient.c \
+ unquantize.c untile.c vidicon.c w2i.c \
+ )
$(L).Test =
####
####
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-09-02 02:05:40
|
Revision: 7342
http://sourceforge.net/p/teem/code/7342
Author: kindlmann
Date: 2025-09-02 02:05:38 +0000 (Tue, 02 Sep 2025)
Log Message:
-----------
now we have a discord server
Modified Paths:
--------------
teem/trunk/src/unrrdu/about.c
Modified: teem/trunk/src/unrrdu/about.c
===================================================================
--- teem/trunk/src/unrrdu/about.c 2025-08-30 15:08:40 UTC (rev 7341)
+++ teem/trunk/src/unrrdu/about.c 2025-09-02 02:05:38 UTC (rev 7342)
@@ -50,9 +50,8 @@
"http://teem.sf.net\". "
"Alternatively, please email gl...@uc... and briefly describe "
"how Teem software has helped in your work. "
- "Please also consider joining the teem-users mailing list: "
- "<http://lists.sourceforge.net/lists/listinfo/teem-users>. This is "
- "the primary forum for feedback, questions, and feature requests.\n ";
+ "Please also consider joining the Teem-users Discord: "
+ "https://discord.gg/xBBqZGXkF7 \n ";
char par3[] = "\t\t\t\t"
"A summary list of unu commands is generated by running simply \"unu\". "
"Running a unu command without additional arguments "
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-30 15:08:55
|
Revision: 7341
http://sourceforge.net/p/teem/code/7341
Author: kindlmann
Date: 2025-08-30 15:08:40 +0000 (Sat, 30 Aug 2025)
Log Message:
-----------
tweaking explanatory comments
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
teem/trunk/src/make/externals.mk
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-30 02:17:24 UTC (rev 7340)
+++ teem/trunk/src/GNUmakefile 2025-08-30 15:08:40 UTC (rev 7341)
@@ -17,54 +17,55 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-####
-#### top-level GNUmakefile: Master makefile for teem
-####
-#### NOTE: You should probably be using CMake instead of this GNU Makefile! CMake builds
-#### Teem by creating one monolithic library (libteem) and the executables (e.g. unu)
-#### that link with that, which is very likely what you want.
-####
-#### This GNUmakefile logic was first written by GLK in ~2001, before CMake was useful or
-#### popular. It builds Teem one library at a time (not a single monolithic library like
-#### from CMake), and handles the per-library "test" programs (distinct from the nascent
-#### efforts at using CTest). Because this remains useful for debugging and developing
-#### Teem, it persists, and GLK relies on it.
-####
-#### For TeemV2, all the GNUMakefile machinery was simplified to remove any notion of
-#### "architecture" and the environment variable "TEEM_ARCH" that declared it. It was
-#### never exactly the CPU architecture, but rather some mix of the architecture and the
-#### OS around it. And, it only made sense for settings where one (network) file system
-#### was being used on a variety of different machines. This was the case in where Teem
-#### was first developed at University of Utah (Scientific Computing and Imaging group):
-#### SGI, Linux (32-bit x86, ia64 and amd64), and Solaris hosts all talked on the same
-#### filesystem. Development builds needed to put binaries in different places depending
-#### on platform, and this was determined by environment variable TEEM_ARCH, which in
-#### turn chose an architecture-specific subdirectory of teem/src/arch to put things
-#### in. Even if these kinds of heterogeneous environments still exist, Teem development
-#### no longer happens there. Also in the interests of simplicity: everything about
-#### shared libraries was dropped. The only shared library that matters is libteem.so or
-#### libteem.dylib, and making that is better handled by CMake than by anything here.
-####
-#### This simplification meant removing:
-#### (from everywhere)
-#### env var TEEM_ARCH
-#### env var TEEM_DEST (because now any "install" should be done via CMake)
-#### make vars ARCH, SUBARCH
-#### everything about shared libraries: TEEM_LINK_SHARED, SHEXT
-####
-#### file errorCheck.mk gone (so simple, nothing left to error check)
-#### make var KNOWN_ARCH
-#### make funcs checkArchSet, checkArchValid,
-#### checkArchLinux, checkArchLinux64, checkArchNetbsd64, checkArchDarwin
-####
-#### With this simplification, these files in make/ stopped being used:
-#### aix.mk cygwin.mk darwin.mk irix6.mk linux.mk netbsd.mk solaris.mk win32.mk
-#### and are thus removed. Instead, a new single make/arch.mk contains the
-#### information that used to be there, or at least variables from which to hang
-#### this info.
-#### Analogously, the results of building are no longer put into a per-architecture
-#### subdirectory of teem/arch. teem/arch is gone. Instead the results of building are
-#### put into teem/built, with its include/, lib/ and bin/ subdirectories.
+##
+## top-level GNUmakefile: Master makefile for teem
+##
+## NOTE: You should probably be using CMake instead of this GNU Makefile! CMake builds
+## Teem by creating one monolithic library (libteem) and the executables (e.g. unu)
+## that link with that, which is very likely what you want.
+##
+## This GNUmakefile logic was first written by GLK in ~2001, before CMake was useful or
+## popular. It builds Teem one library at a time (first air, then biff, hest, nrrd, etc),
+## and handles the per-library "test" programs (distinct from the nascent efforts at
+## using CTest). Because this remains useful for debugging and developing Teem, it
+## persists, and GLK relies on it.
+##
+## For TeemV2, all the GNUMakefile machinery was re-written and simplified. The main
+## change was to remove any notion of "architecture" and the environment variable
+## "TEEM_ARCH" that declared it. It was never exactly the CPU architecture, but rather
+## some mix of the architecture and the OS around it. And, it only made sense for
+## settings where one (network) file system was being used on a variety of different
+## machines. This was the case in where Teem was first developed at University of Utah
+## (Scientific Computing and Imaging group): SGI, Linux (32-bit x86, ia64 and amd64), and
+## Solaris hosts all talked on the same filesystem. Development builds needed to put
+## binaries in different places depending on platform, and this was determined by
+## environment variable TEEM_ARCH, which in turn chose an architecture-specific
+## subdirectory of teem/src/arch to put things in. Even if these kinds of heterogeneous
+## environments still exist, Teem development no longer happens there. Also in the
+## interests of simplicity: everything about shared libraries was dropped. The only
+## shared library that matters is libteem.so or libteem.dylib, and making that is better
+## handled by CMake than by anything here.
+##
+## This simplification meant removing:
+## (from everywhere)
+## env var TEEM_ARCH
+## env var TEEM_DEST (because now any "install" should be done via CMake)
+## make vars ARCH, SUBARCH
+## everything about shared libraries: TEEM_LINK_SHARED, SHEXT
+##
+## file errorCheck.mk gone (so simple, nothing left to error check)
+## make var KNOWN_ARCH
+## make funcs checkArchSet, checkArchValid,
+## checkArchLinux, checkArchLinux64, checkArchNetbsd64, checkArchDarwin
+##
+## With this simplification, these files in make/ stopped being used:
+## aix.mk cygwin.mk darwin.mk irix6.mk linux.mk netbsd.mk solaris.mk win32.mk
+## and are thus removed. Instead, a new single make/arch.mk contains the information
+## that used to be there, or offers variables from which to hang that info.
+## Analogously, the results of building are no longer put into one of the pointlessly
+## numerous per-architecture subdirectories of teem/arch. teem/arch is gone. Instead the
+## results of building are put into teem/built, with its include/, lib/ and bin/
+## subdirectories.
ifndef Top.Included
Top.Included := yes
@@ -96,7 +97,7 @@
## Now that CMake-based compilation is the default, the (GNUmake) non-CMake building has
## accomodate: this extra -DTEEM_NON_CMAKE flag says to $(CC) "we're not building with
-## cmake" (so e.g. don't look for teem/airExistsConf.h)
+## cmake" (so e.g. don't look for the teem/airExistsConf.h created by CMake configure)
CFLAGS += -DTEEM_NON_CMAKE
## information about optional external libraries to link with
@@ -245,26 +246,27 @@
## Read make/externals.mk for context and full list AllExterns
##
## These two reflect the circumstances of running make, not any library:
-## wantsExtern(X): returns X if TEEM_<X> has been set (as a shell variable,
-## but not set to "0"), otherwise nothing
+## wantsExtern(X): returns X if TEEM_<X> has been set (as an environment variable, but
+## not set to "0"), otherwise returns empty string
## Externs: list of all wanted externs (a subset of AllExterns)
-## forExtern(libs,patt): for all external X in Externs,
-## and for all L in libraries $(libs) that benefit from external X,
-## replace "XXX" in $(patt) with X
-## Externs.dashD: the compile-time -D flags needed to enable external
-## library X when compiling objects in libraries $(libs)
+##
+## Functions used for communicating to the compiler/linker about the externals:
+## forExtern(libs,patt): for all external X in Externs, and for all L in libraries
+## $(libs) that benefit from external X, replace "XXX" in $(patt) with X
+## Externs.dashD: the compile-time -D flags needed to enable external library X when
+## compiling objects in libraries $(libs)
## evallist(list): utility to evaluate each element of list as a variable
## (in the following, $(libs) which should probably be MeNeed(L) for some lib L)
-## Externs.dashI(libs): the external-specific -I flags needed for compiling
-## objects in libraries $(libs)
+## Externs.dashI(libs): the external-specific -I flags needed for
+## compiling objects in libraries $(libs)
## (using the X.dashI set in make/externals.mk for external X)
-## Externs.dashL(libs): the external-specific -L flags needed for compiling
-## executables that uses libraries $(libs)
+## Externs.dashL(libs): the external-specific -L flags needed for
+## compiling executables that use libraries $(libs)
## (using the X.dashL set in make/externals.mk for external X)
## Externs.llink(libs): the external-specific -l flags needed to link an
## executable that uses libraries $(libs)
## (using the X.llink set in make/externals.mk for external X)
-##
+
# if TEEM_X is undefined, then nothing, else if 0 matches TEEM_X then nothing, else X
wantsExtern = $(if $(findstring undefined,$(origin TEEM_$(1))),\
,\
@@ -309,8 +311,8 @@
## was just read.
##
## Unfortunate trickiness: Lsave preserves the value of L, in case we're being included
-## from a lower-level GNUmakefile which set a value for L. If we didn't put L back the
-## way it was, L would have to be set twice in the lower level.
+## from a lower-level GNUmakefile which already set a value for L. If we didn't put L
+## back the way it was, L would have to be set twice in the lower level.
##
ifdef L
ifndef Lsave
Modified: teem/trunk/src/make/externals.mk
===================================================================
--- teem/trunk/src/make/externals.mk 2025-08-30 02:17:24 UTC (rev 7340)
+++ teem/trunk/src/make/externals.mk 2025-08-30 15:08:40 UTC (rev 7341)
@@ -17,43 +17,66 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-AllExterns := PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3
+AllExterns := PNG ZLIB BZIP2 LEVMAR FFTW3 PTHREAD
-## In Teem, an "external" is a non-Teem library (external) libraries that Teem can
-## _optionally_ link against. Teem has no notion of depending on these in the makefile
-## sense. Teem doesn't try to represent inter-external dependencies (e.g. PNG on ZLIB)
-## explicitly, but the ordering of the externals in AllExterns above HAS TO reflect the
-## ordering on the link line (so PNG preceeds ZLIB)
+## In Teem, an "external" is a non-Teem library that Teem can _optionally_ link with to
+## increase its functionality. They are listed in AllExterns above. Teem doesn't
+## represent inter-external dependencies explicitly, but the ordering in AllExterns above
+## MUST match the ordering on the compile link line: PNG precedes ZLIB because libpng
+## depends on zlib. In the following "EXT" stands for one of the external names above.
##
-## There is no configure-time setting of what externals to use (as in CMake). External
-## EXT is enabled during *make* by setting the shell variable TEEM_EXT (just set it, to
-## anything EXCEPT "0"), either by:
+## In the bigger world externals are often called "dependencies", but we don't use that
+## word here in the realm of makefiles, because Teem doesn't "depend" on the externals in
+## the sense of a target depending on pre-requisites in a make rule. Also in the bigger
+## world, the externals are things that are chosen and resolved prior to running make, at
+## configure time. Teem's GNUmakefiles have no notion of configuration or configure-time.
+##
+## Instead, Teem externals are selected and "configured" through the environment (in the
+## unix sense) during compile-time. External EXT is enabled during "make" by setting the
+## environment variable TEEM_EXT (just set it, to anything EXCEPT "0"), either by:
## export TEEM_EXT; ...; make
## or:
## TEEM_EXT= make
## or:
## TEEM_EXT=1 make
-## (but not: "TEEM_EXT=0 make", which leaves EXT disabled).
-## If external EXT is enabled during make, then *preprocessor symbol* TEEM_EXT will be
-## effectively #define'd as "1" during source file compilation.
+## or TEEM_EXT=yesplease or any non-empty string *except* "0": "TEEM_EXT=0" leaves EXT
+## disabled. If external EXT is enabled during make, then the *preprocessor symbol*
+## "TEEM_EXT" will be #define'd as "1" during source file compilation, and then Teem code
+## that can benefit from EXT, guarded by "#if TEEM_EXT", will be compiled in.
##
-## NOTE: make can only remember what was built when, not how it was built, so if you are
-## using externals, and your build process is split over multiple invocations of "make",
-## then the same externals have to be used each time (e.g. making "unu" will need to
-## -llib link again the external libraries, so that "make" has to know about the same
-## externals used by the compiled code in libnrrd.a
+## NOTE: "make" can only remember what was built when, not how it was built, so if you
+## are using externals, and your build process is split over multiple invocations of
+## "make", then the same externals have to be used each time. For example, making "unu"
+## will need to -llib link against both Teem libraries like nrrd and the external
+## libraries nrrd depends on, so "make"ing of unu has to know about the exact same
+## externals as were part of the earlier "make"ing of libnrrd.a (and this fussiness is
+## part of why configuration is a thing).
##
-## Here is one example how one might compile with PNG and ZLIB:
-## TEEM_PNG= \
-## TEEM_PNG_IPATH=/opt/homebrew/Cellar/libpng/1.6.50/include \
-## TEEM_PNG_LPATH=/opt/homebrew/Cellar/libpng/1.6.50/lib \
-## TEEM_ZLIB= \
-## TEEM_ZLIB_IPATH=/opt/homebrew/opt/zlib/include \
-## TEEM_ZLIB_LPATH=/opt/homebrew/opt/zlib/lib \
-## make
+## To ensure externals are set the same for every "make": FEEL FREE TO MODIFY THIS FILE
+## to change the variable settings below; they are read in every time make runs for Teem.
+## Or, source a little shell script that sets the TEEM_ environment variables for you.
+## Or, construct an elaborate alias that you use for Teem work, such as GLK's
+## alias tmake="TEEM_PTHREAD= \
+## TEEM_PNG= \
+## TEEM_PNG_IPATH=/opt/homebrew/Cellar/libpng/1.6.50/include \
+## TEEM_PNG_LPATH=/opt/homebrew/Cellar/libpng/1.6.50/lib \
+## TEEM_ZLIB= \
+## TEEM_ZLIB_IPATH=/opt/homebrew/opt/zlib/include \
+## TEEM_ZLIB_LPATH=/opt/homebrew/opt/zlib/lib \
+## TEEM_FFTW3= \
+## TEEM_FFTW3_IPATH=/opt/homebrew/Cellar/fftw/3.3.10_2/include \
+## TEEM_FFTW3_LPATH=/opt/homebrew/Cellar/fftw/3.3.10_2/lib \
+## TEEM_LEVMAR= \
+## TEEM_LEVMAR_IPATH=/Users/me/src/levmar-2.6 \
+## TEEM_LEVMAR_LPATH=/Users/me/src/levmar-2.6 \
+## TEEM_LEVMAR_LMORE=lapack\ blas \
+## make"
##
-## TeemV2 renamed moved the variables describing each external to here (since there are
-## no longer multiple architectures to simultaneously support). For each EXT:
+## How Teem uses externals has been in place since ~2001, but for TeemV2 all the
+## GNUmakefiles were re-written. TeemV2 moved the variables describing each external to
+## here (since there are no longer multiple architectures to simultaneously support).
+## For each external EXT:
+## TEEM_EXT: set (here or in your environment) to enable EXT
## TEEM_EXT_IPATH, TEEM_EXT_LPATH: You very likely have to set these!
## These variables have their same name from early Teem,
## BUT NOTE: Now their names are accurate!
@@ -61,15 +84,18 @@
## They are really just the path to where the header or library file is; it is the job
## of the functions Externs.dashD and Externs.dashI (defined in ../GNUmakefile and
## used in template.mk) to add the -I and -L to each path as needed
+## TEEM_EXT_LMORE: if the lib named in EXT.lname (below) is not the only library that
+## has to linked with to make a complete executable, than name here whatever more
+## libraries are needed for linking e.g:
+## TEEM_LEVMAR_LMORE ?= lapack blas
## EXT.lname: (NOT TO BE MESSED WITH) link with library lib with -llib
-## TEEM_EXT_LMORE: if the lib named in EXT.lname is not the only library that has to
-## linked with to make a complete executable, than name here whatever more libraries
-## are needed for linking e.g. TEEM_LEVMAR_LMORE ?= lapack blas
## lib.Externs: (NOT TO BE MESSED WITH) how we declare to the build system which Teem
## library lib needs to know about the extern for the sake of its compilation flags
## PNG: for PNG images, from https://www.libpng.org/pub/png/libpng.html
## Using PNG enables the "png" nrrd format.
+##
+# TEEM_PNG ?= # uncomment to enable
TEEM_PNG_IPATH ?=
TEEM_PNG_LPATH ?=
TEEM_PNG_LMORE ?=
@@ -79,6 +105,8 @@
## ZLIB: for the zlib library (in gzip and PNG image format) from https://zlib.net/
## Using zlib enables the "gzip" nrrd data encoding
+##
+TEEM_ZLIB ?= # uncomment to enable
TEEM_ZLIB_IPATH ?=
TEEM_ZLIB_LPATH ?=
TEEM_ZLIB_LMORE ?=
@@ -88,36 +116,46 @@
## BZIP2: for the bzip2 compression library, from https://sourceware.org/bzip2/
## Using bzip2 enables the "bzip2" nrrd data encoding.
+##
+# TEEM_BZIP2 ?= # uncomment to enable
TEEM_BZIP2_IPATH ?=
TEEM_BZIP2_LPATH ?=
TEEM_BZIP2_LMORE ?=
-## Header file is <bzlib.h>.
+# Header file is <bzlib.h>.
BZIP2.lname := bz2
nrrd.Externs += BZIP2
-## PTHREAD: use pthread-based multi-threading in airThreads. Note that Windows has its
-## own multithreading capabilities, which is used in airThread if !TEEM_PTHREAD, and we
-## are on Windows.
-TEEM_PTHREAD_IPATH ?=
-TEEM_PTHREAD_LPATH ?=
-TEEM_PTHREAD_LMORE ?=
-## Header file is <pthread.h>
-PTHREAD.lname := pthread
-air.Externs += PTHREAD
-
## LEVMAR: Levenberg-Marquardt from https://users.ics.forth.gr/~lourakis/levmar/
+## Used for non-linear fitting in some diffusion model estimation
+##
+# TEEM_LEVMAR ?= # uncomment to enable
TEEM_LEVMAR_IPATH ?=
TEEM_LEVMAR_LPATH ?=
TEEM_LEVMAR_LMORE ?=
-## Header file is <levmar.h>
+# may want: TEEM_LEVMAR_LMORE ?= lapack blas
+# Header file is <levmar.h>
LEVMAR.lname := levmar
ten.Externs += LEVMAR
elf.Externs += LEVMAR
## FFTW3: FFTW version 3 from https://www.fftw.org/
+## Powers nrrdFFT() and "unu fft"
+# TEEM_FFTW3 ?= # uncomment to enable
TEEM_FFTW3_IPATH ?=
TEEM_FFTW3_LPATH ?=
TEEM_FFTW3_LMORE ?=
-## Header file is <fftw3.h>
+# Header file is <fftw3.h>
FFTW3.lname := fftw3
nrrd.Externs += FFTW3
+
+## PTHREAD: use pthread-based multi-threading in airThreads, which enables multi-threaded
+## volume rendering and other things. Note that Windows has its own multithreading
+## capabilities, which are used in airThread if !TEEM_PTHREAD and we are compiling on
+## Windows.
+# TEEM_PTHREAD ?= # uncomment to enable
+TEEM_PTHREAD_IPATH ?=
+TEEM_PTHREAD_LPATH ?=
+TEEM_PTHREAD_LMORE ?=
+# Header file is <pthread.h>
+PTHREAD.lname := pthread
+air.Externs += PTHREAD
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-30 02:17:27
|
Revision: 7340
http://sourceforge.net/p/teem/code/7340
Author: kindlmann
Date: 2025-08-30 02:17:24 +0000 (Sat, 30 Aug 2025)
Log Message:
-----------
fixing more bugs with handling externals
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
teem/trunk/src/make/externals.mk
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-30 02:16:11 UTC (rev 7339)
+++ teem/trunk/src/GNUmakefile 2025-08-30 02:17:24 UTC (rev 7340)
@@ -279,11 +279,22 @@
$(if $(filter $(X),$($(L).Externs)),\
$(subst XXX,$(X),$(2)))))))
Externs.dashD = $(call forExtern,$(1),-DTEEM_XXX=1)
+# evallist: maps $() over list
evallist = $(foreach var,$(1),$($(var)))
-maybe.prefixen = $(if $(2),$(foreach P,$(2),$(1)$(P)))
-Externs.dashI = $(call maybe.prefixen,-I,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_IPATH))))
-Externs.dashL = $(call maybe.prefixen,-L,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_LPATH))))
-Externs.llink = $(call maybe.prefixen,-l,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_LNAME))))
+# prefixen(P,list) prefixes elements of list with P
+prefixen = $(foreach wut,$(2),$(1)$(wut))
+# https://stackoverflow.com/questions/16144115/makefile-remove-duplicate-words-without-sorting
+uniq = $(if $(1), \
+ $(firstword $(1)) \
+ $(call uniq,$(filter-out $(firstword $(1)),$(1))) \
+ )
+# lplp: utility for Processing a List of Per-Library info
+# why use uniq: if multiple Teem libraries use the same external, we don't want the
+# command-line manifestation of the per-library externals to be duplicated
+lplp = $(strip $(call evallist,$(call uniq,$(call forExtern,$(1),$(2)))))
+Externs.dashI = $(call prefixen,-I,$(call lplp,$(1),TEEM_XXX_IPATH))
+Externs.dashL = $(call prefixen,-L,$(call lplp,$(1),TEEM_XXX_LPATH))
+Externs.llink = $(call prefixen,-l,$(call lplp,$(1),XXX.lname TEEM_XXX_LMORE))
#######################################
Modified: teem/trunk/src/make/externals.mk
===================================================================
--- teem/trunk/src/make/externals.mk 2025-08-30 02:16:11 UTC (rev 7339)
+++ teem/trunk/src/make/externals.mk 2025-08-30 02:17:24 UTC (rev 7340)
@@ -61,10 +61,11 @@
## They are really just the path to where the header or library file is; it is the job
## of the functions Externs.dashD and Externs.dashI (defined in ../GNUmakefile and
## used in template.mk) to add the -I and -L to each path as needed
-## TEEM_EXT_LNAME: the lib in "-llib" option to link with the library. Usually doesn't
-## have to change, but you may have to be change if the library depends on other libraries
-## e.g. TEEM_LEVMAR_LNAME ?= levmar lapack blas
-## lib.Externs: NOT TO BE MESSED WITH: how we declare to the build system which Teem
+## EXT.lname: (NOT TO BE MESSED WITH) link with library lib with -llib
+## TEEM_EXT_LMORE: if the lib named in EXT.lname is not the only library that has to
+## linked with to make a complete executable, than name here whatever more libraries
+## are needed for linking e.g. TEEM_LEVMAR_LMORE ?= lapack blas
+## lib.Externs: (NOT TO BE MESSED WITH) how we declare to the build system which Teem
## library lib needs to know about the extern for the sake of its compilation flags
## PNG: for PNG images, from https://www.libpng.org/pub/png/libpng.html
@@ -71,16 +72,18 @@
## Using PNG enables the "png" nrrd format.
TEEM_PNG_IPATH ?=
TEEM_PNG_LPATH ?=
+TEEM_PNG_LMORE ?=
## Header file is <png.h>
-TEEM_PNG_LNAME ?= png
+PNG.lname := png
nrrd.Externs += PNG
## ZLIB: for the zlib library (in gzip and PNG image format) from https://zlib.net/
## Using zlib enables the "gzip" nrrd data encoding
-## Header file is <zlib.h>.
TEEM_ZLIB_IPATH ?=
TEEM_ZLIB_LPATH ?=
-TEEM_ZLIB_LNAME ?= z
+TEEM_ZLIB_LMORE ?=
+## Header file is <zlib.h>.
+ZLIB.lname := z
nrrd.Externs += ZLIB
## BZIP2: for the bzip2 compression library, from https://sourceware.org/bzip2/
@@ -87,8 +90,9 @@
## Using bzip2 enables the "bzip2" nrrd data encoding.
TEEM_BZIP2_IPATH ?=
TEEM_BZIP2_LPATH ?=
+TEEM_BZIP2_LMORE ?=
## Header file is <bzlib.h>.
-TEEM_BZIP2_LNAME ?= bz2
+BZIP2.lname := bz2
nrrd.Externs += BZIP2
## PTHREAD: use pthread-based multi-threading in airThreads. Note that Windows has its
@@ -96,15 +100,17 @@
## are on Windows.
TEEM_PTHREAD_IPATH ?=
TEEM_PTHREAD_LPATH ?=
+TEEM_PTHREAD_LMORE ?=
## Header file is <pthread.h>
-TEEM_PTHREAD_LNAME ?= pthread
+PTHREAD.lname := pthread
air.Externs += PTHREAD
## LEVMAR: Levenberg-Marquardt from https://users.ics.forth.gr/~lourakis/levmar/
TEEM_LEVMAR_IPATH ?=
TEEM_LEVMAR_LPATH ?=
+TEEM_LEVMAR_LMORE ?=
## Header file is <levmar.h>
-TEEM_LEVMAR_LNAME ?= levmar
+LEVMAR.lname := levmar
ten.Externs += LEVMAR
elf.Externs += LEVMAR
@@ -111,6 +117,7 @@
## FFTW3: FFTW version 3 from https://www.fftw.org/
TEEM_FFTW3_IPATH ?=
TEEM_FFTW3_LPATH ?=
+TEEM_FFTW3_LMORE ?=
## Header file is <fftw3.h>
-TEEM_FFTW3_LNAME ?= fftw3
+FFTW3.lname := fftw3
nrrd.Externs += FFTW3
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-30 02:16:13
|
Revision: 7339
http://sourceforge.net/p/teem/code/7339
Author: kindlmann
Date: 2025-08-30 02:16:11 +0000 (Sat, 30 Aug 2025)
Log Message:
-----------
fixing warning about set but not used variable
Modified Paths:
--------------
teem/trunk/src/gage/test/aalias.c
Modified: teem/trunk/src/gage/test/aalias.c
===================================================================
--- teem/trunk/src/gage/test/aalias.c 2025-08-30 01:39:30 UTC (rev 7338)
+++ teem/trunk/src/gage/test/aalias.c 2025-08-30 02:16:11 UTC (rev 7339)
@@ -1,6 +1,6 @@
/*
Teem: Tools to process and visualize scientific data and images
- Copyright (C) 2009--2023 University of Chicago
+ Copyright (C) 2009--2025 University of Chicago
Copyright (C) 2005--2008 Gordon Kindlmann
Copyright (C) 1998--2004 University of Utah
@@ -41,7 +41,7 @@
gageContext *ctx;
gagePerVolume *pvl;
double dt, *dist, *mask, *update, thresh, eps, rmsMin;
- const double *valu, *gmag, *mcrv;
+ const double /* *valu, */ *gmag, *mcrv;
me = argv[0];
mop = airMopNew();
@@ -112,7 +112,7 @@
fprintf(stderr, "%s: trouble:\n%s\n", me, err);
airMopError(mop); return 1;
}
- valu = gageAnswerPointer(ctx, pvl, gageSclValue);
+ /* valu = gageAnswerPointer(ctx, pvl, gageSclValue); */
gmag = gageAnswerPointer(ctx, pvl, gageSclGradMag);
mcrv = gageAnswerPointer(ctx, pvl, gageSclMeanCurv);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-30 01:39:31
|
Revision: 7338
http://sourceforge.net/p/teem/code/7338
Author: kindlmann
Date: 2025-08-30 01:39:30 +0000 (Sat, 30 Aug 2025)
Log Message:
-----------
some DWI-related code can now be accessed with TEEM_LEVMAR; but it has not been tested ...
Modified Paths:
--------------
teem/trunk/src/ten/tenDwiGage.c
Modified: teem/trunk/src/ten/tenDwiGage.c
===================================================================
--- teem/trunk/src/ten/tenDwiGage.c 2025-08-30 01:38:13 UTC (rev 7337)
+++ teem/trunk/src/ten/tenDwiGage.c 2025-08-30 01:39:30 UTC (rev 7338)
@@ -244,7 +244,8 @@
** n: number of observations: number of DWI's in our case
** k: number of parameters: number of tensor components in our case
*/
-#if 0
+#if TEEM_LEVMAR
+#if 0 /* not used anymore? */
static double
_tenComputeAIC(double residual, int n, int k) {
double AIC = 0;
@@ -262,6 +263,7 @@
return AIC;
}
+#endif
/* Form a 2D tensor from the parameters */
static void
@@ -277,9 +279,8 @@
TEN_T_SET(ten, 1.0, d1, d3, 0, d2, 0, lam3);
return;
}
-#endif
+
/* The main callback function that is iterated during levmar */
-
/* vector pp of parameters is as follows:
** pp[0]: principal eigenvalue
** pp[1]: fraction of 1st tensor
@@ -286,7 +287,6 @@
** pp[2]: phi for 1st tensor
** pp[3]: phi for 2nd tensor
*/
-#if 0
static void
_tenLevmarPeledCB(double *pp, double *xx, int mm, int nn, void *_pvlData) {
/* static const char me[] = "_tenLevmarPeledCB"; */
@@ -320,7 +320,8 @@
}
return;
}
-#endif
+#endif /* #if TEEM_LEVMAR */
+
static void
_tenDwiGageAnswer(gageContext *ctx, gagePerVolume *pvl) {
static const char me[] = "_tenDwiGageAnswer";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <kin...@us...> - 2025-08-30 01:38:15
|
Revision: 7337
http://sourceforge.net/p/teem/code/7337
Author: kindlmann
Date: 2025-08-30 01:38:13 +0000 (Sat, 30 Aug 2025)
Log Message:
-----------
more descriptive comments, changed some variable names
Modified Paths:
--------------
teem/trunk/src/GNUmakefile
teem/trunk/src/make/externals.mk
Modified: teem/trunk/src/GNUmakefile
===================================================================
--- teem/trunk/src/GNUmakefile 2025-08-29 22:19:26 UTC (rev 7336)
+++ teem/trunk/src/GNUmakefile 2025-08-30 01:38:13 UTC (rev 7337)
@@ -28,7 +28,7 @@
#### popular. It builds Teem one library at a time (not a single monolithic library like
#### from CMake), and handles the per-library "test" programs (distinct from the nascent
#### efforts at using CTest). Because this remains useful for debugging and developing
-#### Teem, it persists, and GLK uses it.
+#### Teem, it persists, and GLK relies on it.
####
#### For TeemV2, all the GNUMakefile machinery was simplified to remove any notion of
#### "architecture" and the environment variable "TEEM_ARCH" that declared it. It was
@@ -283,20 +283,8 @@
maybe.prefixen = $(if $(2),$(foreach P,$(2),$(1)$(P)))
Externs.dashI = $(call maybe.prefixen,-I,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_IPATH))))
Externs.dashL = $(call maybe.prefixen,-L,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_LPATH))))
-Externs.llink = $(call evallist,$(call forExtern,$(1),XXX.llink))
+Externs.llink = $(call maybe.prefixen,-l,$(strip $(call evallist,$(call forExtern,$(1),TEEM_XXX_LNAME))))
-## DEBUG
-#X = PNG
-#$(warning wantsExtern($(X))=$(call wantsExtern,$(X)))
-#$(warning Externs=$(Externs))
-#$(warning forExtern(nrrd ten air tijk,-DTEEM_XXX=1): $(call forExtern,nrrd ten air tijk,-DTEEM_XXX=1))
-#L = ten
-#$(warning Externs.dashI($(L)): $(call Externs.dashI,$(L)))
-#$(warning Externs.dashL($(L)): $(call Externs.dashL,$(L)))
-#$(warning Externs.llink($(L)): $(call Externs.llink,$(L)))
-#$(error STOPPING)
-# TEEM_PTHREAD= TEEM_PNG= TEEM_LEVMAR=1 make --warn-undefined-variables
-
#######################################
## Create missing directories as needed
Modified: teem/trunk/src/make/externals.mk
===================================================================
--- teem/trunk/src/make/externals.mk 2025-08-29 22:19:26 UTC (rev 7336)
+++ teem/trunk/src/make/externals.mk 2025-08-30 01:38:13 UTC (rev 7337)
@@ -17,73 +17,100 @@
# along with this library; if not, see <https://www.gnu.org/licenses/>.
#
-## AllExterns: list of all the identifiers for the various external libraries that we can
+AllExterns := PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3
+
+## In Teem, an "external" is a non-Teem library (external) libraries that Teem can
## _optionally_ link against. Teem has no notion of depending on these in the makefile
## sense. Teem doesn't try to represent inter-external dependencies (e.g. PNG on ZLIB)
-## explicitly, but the ordering of the xterns below HAS TO reflect the ordering on the
-## link line (so PNG preceeds ZLIB)
+## explicitly, but the ordering of the externals in AllExterns above HAS TO reflect the
+## ordering on the link line (so PNG preceeds ZLIB)
##
-## External EXT is enabled during make by setting the shell variable TEEM_EXT (just set
-## it, to anything EXCEPT "0"), either by "export TEEM_EXT; ...; make" or by
-## "TEEM_EXT= make" or "TEEM_EXT=1 make"
+## There is no configure-time setting of what externals to use (as in CMake). External
+## EXT is enabled during *make* by setting the shell variable TEEM_EXT (just set it, to
+## anything EXCEPT "0"), either by:
+## export TEEM_EXT; ...; make
+## or:
+## TEEM_EXT= make
+## or:
+## TEEM_EXT=1 make
## (but not: "TEEM_EXT=0 make", which leaves EXT disabled).
## If external EXT is enabled during make, then *preprocessor symbol* TEEM_EXT will be
## effectively #define'd as "1" during source file compilation.
##
+## NOTE: make can only remember what was built when, not how it was built, so if you are
+## using externals, and your build process is split over multiple invocations of "make",
+## then the same externals have to be used each time (e.g. making "unu" will need to
+## -llib link again the external libraries, so that "make" has to know about the same
+## externals used by the compiled code in libnrrd.a
+##
+## Here is one example how one might compile with PNG and ZLIB:
+## TEEM_PNG= \
+## TEEM_PNG_IPATH=/opt/homebrew/Cellar/libpng/1.6.50/include \
+## TEEM_PNG_LPATH=/opt/homebrew/Cellar/libpng/1.6.50/lib \
+## TEEM_ZLIB= \
+## TEEM_ZLIB_IPATH=/opt/homebrew/opt/zlib/include \
+## TEEM_ZLIB_LPATH=/opt/homebrew/opt/zlib/lib \
+## make
+##
## TeemV2 renamed moved the variables describing each external to here (since there are
-## no longer multiple architectures to simultaneously support). The TEEM_EXT_IPATH and
-## TEEM_EXT_LPATH variables have kept their name, but now their names are accurate: you
-## no longer start TEEM_EXT_IPATH with "-I" or TEEM_EXT_LPATH with "-L". They really just
-## just be the path; it is the job of the functions Externs.dashD and Externs.dashI
-## (defined in ../GNUmakefile and used in template.mk) to add the -I and -L to each path
-## as needed.
-##
-AllExterns = PNG ZLIB BZIP2 PTHREAD LEVMAR FFTW3
+## no longer multiple architectures to simultaneously support). For each EXT:
+## TEEM_EXT_IPATH, TEEM_EXT_LPATH: You very likely have to set these!
+## These variables have their same name from early Teem,
+## BUT NOTE: Now their names are accurate!
+## You no longer start TEEM_EXT_IPATH with "-I" or TEEM_EXT_LPATH with "-L".
+## They are really just the path to where the header or library file is; it is the job
+## of the functions Externs.dashD and Externs.dashI (defined in ../GNUmakefile and
+## used in template.mk) to add the -I and -L to each path as needed
+## TEEM_EXT_LNAME: the lib in "-llib" option to link with the library. Usually doesn't
+## have to change, but you may have to be change if the library depends on other libraries
+## e.g. TEEM_LEVMAR_LNAME ?= levmar lapack blas
+## lib.Externs: NOT TO BE MESSED WITH: how we declare to the build system which Teem
+## library lib needs to know about the extern for the sake of its compilation flags
## PNG: for PNG images, from https://www.libpng.org/pub/png/libpng.html
## Using PNG enables the "png" nrrd format.
+TEEM_PNG_IPATH ?=
+TEEM_PNG_LPATH ?=
## Header file is <png.h>
-PNG.llink = -lpng
+TEEM_PNG_LNAME ?= png
nrrd.Externs += PNG
-TEEM_PNG_IPATH ?=
-TEEM_PNG_LPATH ?=
## ZLIB: for the zlib library (in gzip and PNG image format) from https://zlib.net/
## Using zlib enables the "gzip" nrrd data encoding
## Header file is <zlib.h>.
-ZLIB.llink = -lz
-nrrd.Externs += ZLIB
TEEM_ZLIB_IPATH ?=
TEEM_ZLIB_LPATH ?=
+TEEM_ZLIB_LNAME ?= z
+nrrd.Externs += ZLIB
## BZIP2: for the bzip2 compression library, from https://sourceware.org/bzip2/
## Using bzip2 enables the "bzip2" nrrd data encoding.
+TEEM_BZIP2_IPATH ?=
+TEEM_BZIP2_LPATH ?=
## Header file is <bzlib.h>.
-BZIP2.llink = -lbz2
+TEEM_BZIP2_LNAME ?= bz2
nrrd.Externs += BZIP2
-TEEM_BZIP2_IPATH ?=
-TEEM_BZIP2_LPATH ?=
## PTHREAD: use pthread-based multi-threading in airThreads. Note that Windows has its
## own multithreading capabilities, which is used in airThread if !TEEM_PTHREAD, and we
## are on Windows.
+TEEM_PTHREAD_IPATH ?=
+TEEM_PTHREAD_LPATH ?=
## Header file is <pthread.h>
-PTHREAD.llink = -lpthread
+TEEM_PTHREAD_LNAME ?= pthread
air.Externs += PTHREAD
-TEEM_PTHREAD_IPATH ?=
-TEEM_PTHREAD_LPATH ?=
## LEVMAR: Levenberg-Marquardt from https://users.ics.forth.gr/~lourakis/levmar/
+TEEM_LEVMAR_IPATH ?=
+TEEM_LEVMAR_LPATH ?=
## Header file is <levmar.h>
-LEVMAR.llink = -llevmar
+TEEM_LEVMAR_LNAME ?= levmar
ten.Externs += LEVMAR
elf.Externs += LEVMAR
-TEEM_LEVMAR_IPATH ?=
-TEEM_LEVMAR_LPATH ?=
## FFTW3: FFTW version 3 from https://www.fftw.org/
+TEEM_FFTW3_IPATH ?=
+TEEM_FFTW3_LPATH ?=
## Header file is <fftw3.h>
-FFTW3.llink = -lfftw3
+TEEM_FFTW3_LNAME ?= fftw3
nrrd.Externs += FFTW3
-TEEM_FFTW3_IPATH ?=
-TEEM_FFTW3_LPATH ?=
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|