star-gf

Compute Gebhart factors
git clone git://git.meso-star.fr/star-gf.git
Log | Files | Refs | README | LICENSE

commit 9d0f767d5836ef19caf4ebd73585918f79026fee
parent 02c7d20185692738ba933aaa4a9038e566b5ff73
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Mon, 16 Dec 2024 12:10:26 +0100

Replace CMake by POSIX make

The build procedure is now written in POSIX make, which the user can
configure via the config.mk file. The main motivation behind this
translation is to use a good old, well-established standard with simple
functionality, available on all UNIX systems, thus simplifying its
portability and support while being much lighter.

Dependencies are updated to ensure that the version used provides a pc
file.

Diffstat:
M.gitignore | 17+++++++----------
AMakefile | 175+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MREADME.md | 125++++++++++++++++++++++++++++++++++++++++---------------------------------------
Dcmake/CMakeLists.txt | 114-------------------------------------------------------------------------------
Aconfig.mk | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asgf.pc.in | 11+++++++++++
6 files changed, 340 insertions(+), 185 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -1,12 +1,9 @@ -compile_commands.json -.gitignore -CMakeCache.txt -CMakeFiles -Makefile -tmp -[Bb]uild* -*.sw[po] -*.[ao] *~ +*.[abdo] +.config +*.pc +*.so +*.swp tags - +test_* +!src/test_*.[ch] diff --git a/Makefile b/Makefile @@ -0,0 +1,175 @@ +# Copyright (C) 2021, 2024 |Meso|Star> (contact@meso-star.com) +# Copyright (C) 2015-2018 EDF S.A., France (syrthes-support@edf.fr) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +.POSIX: +.SUFFIXES: .b .c .d .o + +include config.mk + +LIBNAME_STATIC = libsgf.a +LIBNAME_SHARED = libsgf.so +LIBNAME = $(LIBNAME_$(LIB_TYPE)) + +default: library +all: default tests + +################################################################################ +# Library +################################################################################ +SRC = src/sgf_device.c src/sgf_estimator.c src/sgf_scene.c +OBJ = $(SRC:.c=.o) +DEP = $(SRC:.c=.d) + +library: .config $(DEP) + @$(MAKE) -fMakefile $$(for i in $(DEP); do echo -f $${i}; done) \ + $$(if [ -n "$(LIBNAME)" ]; then \ + echo "$(LIBNAME)"; \ + else \ + echo "$(LIBNAME_SHARED)"; \ + fi) + + +.config: Makefile config.mk + $(PKG_CONFIG) --atleast-version $(RSYS_VERSION) rsys + $(PKG_CONFIG) --atleast-version $(S2D_VERSION) s2d + $(PKG_CONFIG) --atleast-version $(S3D_VERSION) s3d + $(PKG_CONFIG) --atleast-version $(SSP_VERSION) star-sp + echo 'config done' > $@ + +$(DEP) $(OBJ): config.mk + +$(LIBNAME_SHARED): $(OBJ) + $(CC) $(CFLAGS_SO) $(INCS) -o $@ $(OBJ) $(LDFLAGS_SO) $(LIBS) + +$(LIBNAME_STATIC): libsgf.o + $(AR) -rc $@ $? + $(RANLIB) $@ + +libsgf.o: $(OBJ) + $(LD) -r $(OBJ) -o $@ + $(OBJCOPY) $(OCPFLAGS) $@ + +.c.d: + @$(CC) $(CFLAGS_SO) $(INCS) -MM -MT "$(@:.d=.o) $@" $< -MF $@ + +.c.o: + $(CC) $(CFLAGS_SO) $(INCS) -DSGF_SHARED_BUILD -c $< -o $@ + +################################################################################ +# Miscellaneous +################################################################################ +pkg: + sed -e 's#@INCDIR@#$(INCDIR)#g'\ + -e 's#@LIBDIR@#$(LIBDIR)#g'\ + -e 's#@VERSION@#$(VERSION)#g'\ + -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\ + -e 's#@S2D_VERSION@#$(S2D_VERSION)#g'\ + -e 's#@S3D_VERSION@#$(S3D_VERSION)#g'\ + -e 's#@SSP_VERSION@#$(SSP_VERSION)#g'\ + sgf.pc.in > sgf.pc + +sgf-local.pc: sgf.pc.in config.mk + sed -e 's#@INCDIR@#./src#g'\ + -e 's#@LIBDIR@#./#g'\ + -e 's#@VERSION@#$(VERSION)#g'\ + -e 's#@RSYS_VERSION@#$(RSYS_VERSION)#g'\ + -e 's#@S2D_VERSION@#$(S2D_VERSION)#g'\ + -e 's#@S3D_VERSION@#$(S3D_VERSION)#g'\ + -e 's#@SSP_VERSION@#$(SSP_VERSION)#g'\ + sgf.pc.in > $@ + +install: library pkg + mkdir -p "$(DESTDIR)$(LIBDIR)" + cp $(LIBNAME) "$(DESTDIR)$(LIBDIR)" + chmod 755 "$(DESTDIR)$(LIBDIR)/$(LIBNAME)" + mkdir -p "$(DESTDIR)$(LIBDIR)/pkgconfig" + cp sgf.pc "$(DESTDIR)$(LIBDIR)/pkgconfig" + chmod 644 "$(DESTDIR)$(LIBDIR)/pkgconfig/sgf.pc" + mkdir -p "$(DESTDIR)$(INCDIR)/star" + cp src/sgf.h "$(DESTDIR)$(INCDIR)/star" + chmod 644 "$(DESTDIR)$(INCDIR)/star/sgf.h" + mkdir -p "$(DESTDIR)$(DOCDIR)/star-gf" + cp COPYING README.md "$(DESTDIR)$(DOCDIR)/star-gf" + chmod 644 "$(DESTDIR)$(DOCDIR)/star-gf/COPYING" + chmod 644 "$(DESTDIR)$(DOCDIR)/star-gf/README.md" + +uninstall: + rm -f "$(DESTDIR)$(LIBDIR)/$(LIBNAME)" + rm -f "$(DESTDIR)$(LIBDIR)/pkgconfig/sgf.pc" + rm -f "$(DESTDIR)$(INCDIR)/star/sgf.h" + rm -f "$(DESTDIR)$(DOCDIR)/star-gf/COPYING" + rm -f "$(DESTDIR)$(DOCDIR)/star-gf/README.md" + +clean: clean_tests + rm -f $(OBJ) $(DEP) sgf.pc libsgf.o .config + rm -f $(LIBNAME_STATIC) $(LIBNAME_SHARED) + +################################################################################ +# Tests +################################################################################ +TEST_SRC =\ + src/test_sgf_cube.c\ + src/test_sgf_device.c\ + src/test_sgf_estimator.c\ + src/test_sgf_scene.c\ + src/test_sgf_square.c\ + src/test_sgf_tetrahedron.c +TEST_OBJ = $(TEST_SRC:.c=.o) +TEST_DEP = $(TEST_SRC:.c=.d) +TEST_BIN = $(TEST_SRC:.c=.b) + +PKG_CONFIG_LOCAL = PKG_CONFIG_PATH="./:$${PKG_CONFIG_PATH}" $(PKG_CONFIG) +TEST_INCS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags rsys sgf-local star-sp) -fopenmp +TEST_LIBS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs rsys sgf-local star-sp) -fopenmp + +test: tests + @for i in $(TEST_SRC); do \ + bin="$$(basename "$${i}" ".c")"; \ + "./$${bin}" > /dev/null 2>&1 \ + || >&2 printf '%s: error %s\n' "$${bin}" "$$?"; \ + done + @echo "Tests done" + +tests: library $(TEST_DEP) $(TEST_BIN) + @$(MAKE) -fMakefile \ + $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) \ + $$(for i in $(TEST_BIN); do echo -f"$${i}"; done) \ + test_bin + +.c.b: + @{ \ + bin="$$(basename "$<" ".c")"; \ + printf '%s: %s\n' "$${bin}" $(<:.c=.o); \ + printf 'test_bin: %s\n' "$${bin}"; \ + } > $@ + +$(TEST_DEP): config.mk sgf-local.pc + @$(CC) $(CFLAGS_EXE) $(TEST_INCS) -MM -MT "$(@:.d=.o) $@" $(@:.d=.c) -MF $@ + +$(TEST_OBJ): config.mk sgf-local.pc + $(CC) $(CFLAGS_EXE) $(TEST_INCS) -c $(@:.o=.c) -o $@ + +test_sgf_cube \ +test_sgf_device \ +test_sgf_estimator \ +test_sgf_scene \ +test_sgf_square \ +test_sgf_tetrahedron: + $(CC) $(CFLAGS_EXE) $(TEST_INCS) -o $@ src/$@.o $(LDFLAGS_EXE) $(TEST_LIBS) + +clean_tests: + rm -f $(TEST_OBJ) $(TEST_DEP) $(TEST_BIN) sgf-local.pc + for i in $(TEST_SRC); do rm -f "$$(basename "$${i}" ".c")"; done diff --git a/README.md b/README.md @@ -1,57 +1,58 @@ # Star Gebhart Factor The purpose of this C library is to numerically compute the [Gebhart -factor](https://en.wikipedia.org/wiki/Gebhart_factor) between 3D primitives. -The Gebhart factor *B(i,j)* between two arbitrary surfaces *i* and *j* is -defined as the fraction of the radiative flux emitted by *i* that is absorbed -by *j*. It is not equal to the [form -factor](https://en.wikipedia.org/wiki/View_factor) between *i* and *j*, even -tough the difference is subtle: the form factor is the fraction of the -radiative flux emitted by *i*, in direction of *j* (which is not necessarily -totally absorbed by *j*). In our case, Gebhart factors have been integrated -over *j*, which means that we compute the fraction of the radiative flux -emitted by *i* that is absorbed by all other surfaces. It is obviously not -equal to one, since a fraction of the flux can be re-absorbed by *i* itself. - -Star-GF estimates Gebhart factors with the Monte-Carlo method: it consists in -simulating the trajectory of energy bundles according to a relevant physical -model. Emission, absorption and reflection processes are therefore taken into -account, as well as spectral aspects (surface properties can be defined as a -function of wavelength). Should scattering processes in semi-transparent media -be taken into consideration, it would be possible (even if actually not -implemented). The main advantage of this statistical method is the fact it -provides a numerical accuracy over each result: the Monte-Carlo method is often +factor](https://en.wikipedia.org/wiki/Gebhart_factor) between 3D +primitives. The Gebhart factor *B(i,j)* between two arbitrary surfaces +*i* and *j* is defined as the fraction of the radiative flux emitted by +*i* that is absorbed by *j*. It is not equal to the [form +factor](https://en.wikipedia.org/wiki/View_factor) between *i* and *j*, +even tough the difference is subtle: the form factor is the fraction of +the radiative flux emitted by *i*, in direction of *j* (which is not +necessarily totally absorbed by *j*). In our case, Gebhart factors have +been integrated over *j*, which means that we compute the fraction of +the radiative flux emitted by *i* that is absorbed by all other +surfaces. It is obviously not equal to one, since a fraction of the flux +can be re-absorbed by *i* itself. + +Star-GF estimates Gebhart factors with the Monte-Carlo method: it +consists in simulating the trajectory of energy bundles according to a +relevant physical model. Emission, absorption and reflection processes +are therefore taken into account, as well as spectral aspects (surface +properties can be defined as a function of wavelength). Should +scattering processes in semi-transparent media be taken into +consideration, it would be possible (even if actually not implemented). +The main advantage of this statistical method is the fact it provides a +numerical accuracy over each result: the Monte-Carlo method is often referred as a reference method. Also, the resulting algorithm is totally -decoupled from the geometry: it will remain the same for every scene, no matter -how much data is used for its description. This geometry is provided by the -caller through a scene managed by the -[Star-3D](https://gitlab.com/meso-star/star-gf.git) library. - -Gebhart factors may finally be used in order to compute the radiative flux -absorbed by each surface, and subsequently the net radiative flux over each -surface. The main advantage of Gebhart factors over form factors is -the associated flexibility in terms of reflection properties: while form -factors are computed with the implicit assumption that surfaces are diffuse -reflectors, there is no such restriction in the case of Gebhart factors; any -type of reflection can be used (totally or partially specular surfaces). - -## How to build - -Star-GF is compatible GNU/Linux 64-bits. It relies on -[CMake](http://www.cmake.org) and the -[RCMake](https://gitlab.com/vaplv/rcmake/) package to build. It also depends on -the [RSys](https://gitlab.com/vaplv/rsys/), -[Star-3D](https://gitlab.com/meso-star/star-3d/) and -[Star-SP](https://gitlab.com/meso-star/star-sp/) libraries. - -First ensure that CMake is installed on your system. Then install the RCMake -package as well as the aforementioned prerequisites. Finally generate the -project from the `cmake/CMakeLists.txt` file by appending to the -`CMAKE_PREFIX_PATH` variable the install directories of the previous -dependencies. The resulting project can be edited, built, tested and installed -as any CMake project (Refer to the [CMake -documentation](https://cmake.org/documentation) -for further informations on CMake). +decoupled from the geometry: it will remain the same for every scene, no +matter how much data is used for its description. This geometry is +provided by the caller through a scene managed by the +[Star 3D](https://gitlab.com/meso-star/star-3d) library. + +Gebhart factors may finally be used in order to compute the radiative +flux absorbed by each surface, and subsequently the net radiative flux +over each surface. The main advantage of Gebhart factors over form +factors is the associated flexibility in terms of reflection properties: +while form factors are computed with the implicit assumption that +surfaces are diffuse reflectors, there is no such restriction in the +case of Gebhart factors; any type of reflection can be used (totally or +partially specular surfaces). + +## Requirements + +- C compiler +- POSIX make +- pkg-config +- [RSys](https://gitlab.com/vaplv/rsys) +- [Star 2D](https://gitlab.com/meso-star/star-2d) +- [Star 3D](https://gitlab.com/meso-star/star-3d) +- [Star SamPling](https://gitlab.com/meso-star/star-sp) + +## Installation + +Edit config.mk as needed, then run: + + make clean install ## Release notes @@ -66,15 +67,17 @@ Fix API break on filter function introduced by Star-3D 0.8. ### Version 0.2.2 -Bump the version of the dependencies and fix the code to handle their updates. +Bump the version of the dependencies and fix the code to handle their +updates. ### Version 0.2.1 -Fix a crash that occurred in scenes having medium with a null absorption. In -such scenes, radiative flux going to infinity are not allowed and must be -handled as a numerical imprecision or a scene inconsistency. This was not the -case: this flux was accumulated into a specific counter that was not -initialised since, in this situation, such flux could not exist. +Fix a crash that occurred in scenes having medium with a null +absorption. In such scenes, radiative flux going to infinity are not +allowed and must be handled as a numerical imprecision or a scene +inconsistency. This was not the case: this flux was accumulated into a +specific counter that was not initialised since, in this situation, such +flux could not exist. ### Version 0.2 @@ -83,9 +86,9 @@ initialised since, in this situation, such flux could not exist. ## License -Copyright (C) 2021 |Meso|Star> (<contact@meso-star.com>). -Copyright (C) 2015-2018 EDF S.A., France (<syrthes-support@edf.fr>). +Copyright (C) 2021, 2024 |Meso|Star> (contact@meso-star.com) +Copyright (C) 2015-2018 EDF S.A., France (syrthes-support@edf.fr) -Star-GF is free software released under the GPL v3+ license: GNU GPL version 3 -or later. You are welcome to redistribute it under certain conditions; refer to -the COPYING file for details. +Star-GF is free software released under the GPL v3+ license: GNU GPL +version 3 or later. You are welcome to redistribute it under certain +conditions; refer to the COPYING file for details. diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -1,114 +0,0 @@ -# Copyright (C) 2021 |Meso|Star> (contact@meso-star.com) -# Copyright (C) 2015-2018 EDF S.A., France (syrthes-support@edf.fr) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -cmake_minimum_required(VERSION 3.1) -project(star-gf C) -enable_testing() - -set(SGF_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src) -option(NO_TEST "Disable the test" OFF) - -################################################################################ -# Check dependencies -################################################################################ -find_package(RCMake 0.2.3 REQUIRED) -find_package(RSys 0.6 REQUIRED) -find_package(StarSP 0.12 REQUIRED) -find_package(Star3D 0.8 REQUIRED) -find_package(Star2D 0.5 REQUIRED) -find_package(OpenMP 1.2 REQUIRED) - -include_directories( - ${RSys_INCLUDE_DIR} - ${StarSP_INCLUDE_DIR} - ${Star3D_INCLUDE_DIR}) - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${RCMAKE_SOURCE_DIR}) -include(rcmake) -include(rcmake_runtime) - -################################################################################ -# Configure and define targets -################################################################################ -set(VERSION_MAJOR 0) -set(VERSION_MINOR 2) -set(VERSION_PATCH 4) -set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) - -set(SGF_FILES_SRC - sgf_device.c - sgf_estimator.c - sgf_scene.c) -set(SGF_FILES_INC_API sgf.h) -set(SGF_FILES_INC - sgf_device_c.h - sgf_realisation.h) -set(SGF_FILES_DOC COPYING README.md) - -# Prepend each file in the `SGF_FILES_<SRC|INC>' list by `SGF_SOURCE_DIR' -rcmake_prepend_path(SGF_FILES_SRC ${SGF_SOURCE_DIR}) -rcmake_prepend_path(SGF_FILES_INC_API ${SGF_SOURCE_DIR}) -rcmake_prepend_path(SGF_FILES_INC ${SGF_SOURCE_DIR}) -rcmake_prepend_path(SGF_FILES_DOC ${PROJECT_SOURCE_DIR}/../) - -add_library(sgf SHARED ${SGF_FILES_SRC} ${SGF_FILES_INC_API} ${SGF_FILES_INC}) -set_target_properties(sgf PROPERTIES - DEFINE_SYMBOL SGF_SHARED_BUILD - VERSION ${VERSION} - SOVERSION ${VERSION_MAJOR}) - -target_link_libraries(sgf RSys Star2D Star3D StarSP) -if(CMAKE_COMPILER_IS_GNUCC) - target_link_libraries(sgf m) -endif() - -rcmake_setup_devel(sgf StarGF ${VERSION} star/sgf_version.h) - -################################################################################ -# Add tests -################################################################################ -if(NOT NO_TEST) - function(new_test _name) - add_executable(${_name} ${SGF_SOURCE_DIR}/${_name}.c) - target_link_libraries(${_name} sgf RSys) - add_test(${_name} ${_name}) - endfunction(new_test) - new_test(test_sgf_cube) - new_test(test_sgf_device) - new_test(test_sgf_estimator) - new_test(test_sgf_scene) - new_test(test_sgf_square) - new_test(test_sgf_tetrahedron) - rcmake_copy_runtime_libraries(test_sgf_tetrahedron) - - set_target_properties(test_sgf_cube PROPERTIES COMPILE_FLAGS ${OpenMP_C_FLAGS}) - set_target_properties(test_sgf_tetrahedron PROPERTIES COMPILE_FLAGS ${OpenMP_C_FLAGS}) - if(CMAKE_COMPILER_IS_GNUCC) - set_target_properties(test_sgf_cube PROPERTIES LINK_FLAGS ${OpenMP_C_FLAGS}) - set_target_properties(test_sgf_tetrahedron PROPERTIES LINK_FLAGS ${OpenMP_C_FLAGS}) - endif() -endif() - -################################################################################ -# Define output & install directories -################################################################################ -install(TARGETS sgf - ARCHIVE DESTINATION bin - LIBRARY DESTINATION lib - RUNTIME DESTINATION bin) -install(FILES ${SGF_FILES_INC_API} DESTINATION include/star) -install(FILES ${SGF_FILES_DOC} DESTINATION share/doc/star-gf) - diff --git a/config.mk b/config.mk @@ -0,0 +1,83 @@ +VERSION = 0.3.0 + +PREFIX = /usr/local +LIBDIR = $(PREFIX)/lib +INCDIR = $(PREFIX)/include +DOCDIR = $(PREFIX)/share/doc + +BUILD_TYPE = RELEASE +#BUILD_TYPE = DEBUG + +LIB_TYPE = SHARED +#LIB_TYPE = STATIC + +################################################################################ +# Tools +################################################################################ +AR = ar +CC = cc +LD = ld +OBJCOPY = objcopy +PKG_CONFIG = pkg-config +RANLIB = ranlib + +################################################################################ +# Dependencies +################################################################################ +PCFLAGS_SHARED = +PCFLAGS_STATIC = --static +PCFLAGS = $(PCFLAGS_$(LIB_TYPE)) + +RSYS_VERSION = 0.14 +S2D_VERSION = 0.7 +S3D_VERSION = 0.10 +SSP_VERSION = 0.14 + +INCS = $$($(PKG_CONFIG) $(PCFLAGS) --cflags rsys s2d s3d star-sp) +LIBS = $$($(PKG_CONFIG) $(PCFLAGS) --libs rsys s2d s3d star-sp) -lm + +################################################################################ +# Compilation options +################################################################################ +WFLAGS =\ + -Wall\ + -Wcast-align\ + -Wconversion\ + -Wextra\ + -Wmissing-declarations\ + -Wmissing-prototypes\ + -Wshadow + +CFLAGS_HARDENED =\ + -D_FORTIFY_SOURCES=2\ + -fstack-protector-strong + +CFLAGS_COMMON =\ + -std=c89\ + -pedantic\ + -fvisibility=hidden\ + -fstrict-aliasing\ + $(CFLAGS_HARDENED)\ + $(WFLAGS) + +CFLAGS_DEBUG = -g $(CFLAGS_COMMON) +CFLAGS_RELEASE = -O2 -DNDEBUG $(CFLAGS_COMMON) +CFLAGS = $(CFLAGS_$(BUILD_TYPE)) + +CFLAGS_SO = $(CFLAGS) -fPIC +CFLAGS_EXE = $(CFLAGS) -FPIE + +################################################################################ +# Linker options +################################################################################ +LDFLAGS_HARDENED = -Wl,-z,relro,-z,now +LDFLAGS_DEBUG = $(LDFLAGS_HARDENED) +LDFLAGS_RELEASE = -s $(LDFLAGS_HARDENED) +LDFLAGS = $(LDFLAGS_$(BUILD_TYPE)) + +LDFLAGS_SO = $(LDFLAGS) -shared -Wl,--no-undefined +LDFLAGS_EXE = $(LDFLAGS) -pie + +OCPFLAGS_DEBUG = --localize-hidden +OCPFLAGS_RELEASE = --localize-hidden --strip-unneeded +OCPFLAGS = $(OCPFLAGS_$(BUILD_TYPE)) diff --git a/sgf.pc.in b/sgf.pc.in @@ -0,0 +1,11 @@ +Requires: rsys >= @RSYS_VERSION@ +Requires.private:\ + s2d >=@S2D_VERSION@,\ + s3d >= @S3D_VERSION@,\ + star-sp >= @SSP_VERSION@ +Name: Star-GF +Description: Star Gebhart Factor +Version: @VERSION@ +Libs: -L@LIBDIR@ -lsgf +Libs.private: -lm +CFlags: -I@INCDIR@