Skip to content

Commit

Permalink
Restructure cmake (#1)
Browse files Browse the repository at this point in the history
* Rebuilt cmake

* Added swapfiles for vim

* Changed optimization

* Bump version number to match git

* Rebuilt cmake to make config file

* Added pipeline file

* Update README.md
  • Loading branch information
stuwilkins authored Jun 30, 2019
1 parent b261b7e commit 6b85290
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 25 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.bak
*.patch
*.tmp
*.swp

*.o
*.a
Expand Down
14 changes: 4 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ cmake_policy(SET CMP0048 NEW)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(PreventInSourceBuilds)

project(lmfit VERSION 8.2.1 LANGUAGES C)
project(lmfit VERSION 8.2.2 LANGUAGES C)

option(FITTEST "Build with FitTest" OFF)
if(NOT DEFINED BUILD_SHARED_LIBS)
Expand All @@ -29,7 +29,7 @@ if(MSVC)
else()
option(PEDANTIC "Compile with pedantic warnings" ON)
option(WERROR "Treat warnings as errors" OFF)
add_compile_options(-O2)
add_compile_options(-O3)
if(PEDANTIC)
add_compile_options(-pedantic -Wall)
endif()
Expand All @@ -40,19 +40,13 @@ endif()

include(CTest)

if(LIB_INSTALL)
set(destination ${CMAKE_INSTALL_PREFIX})
configure_file("lmfit.pc.in" "lmfit.pc" @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lmfit.pc"
DESTINATION "${destination}/lib/pkgconfig/")
endif()

add_subdirectory(lib)
add_subdirectory(demo)
add_subdirectory(test)

if (LIB_MAN)
add_subdirectory(man)
endif()

if (FITTEST)
find_package(FitTest REQUIRED)
add_subdirectory(fittest)
Expand Down
73 changes: 58 additions & 15 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,27 +1,70 @@
set(lib lmfit)
set(${lib}_LIBRARY ${lib} PARENT_SCOPE)
include(GNUInstallDirs)
set(lmfit_LIBRARY lmfit PARENT_SCOPE)

set(src_files lmcurve.c lmmin.c lminvert.c)
set(inc_files lmcurve.h lmmin.h lmstruct.h)
set(HEADER_FILES lmcurve.h lmmin.h lmstruct.h)
set(SOURCE_FILES lmcurve.c lmmin.c lminvert.c)

add_library(${lib} ${src_files})
add_library(lmfit ${SOURCE_FILES} ${HEADER_FILES})

set_target_properties(
${lib} PROPERTIES
OUTPUT_NAME ${lib}
VERSION ${lmfit_VERSION_MAJOR}
SOVERSION ${lmfit_VERSION_MINOR})
lmfit PROPERTIES
OUTPUT_NAME lmfit
VERSION ${lmfit_VERSION}
SOVERSION ${lmfit_VERSION_MAJOR}
PUBLIC_HEADER "${HEADER_FILES}"
)

target_include_directories(lmfit PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)

include(LinkLibMath)
link_libm(${lib})
link_libm(lmfit)

if (LIB_INSTALL)
include(CMakePackageConfigHelpers)

install(
TARGETS ${lib} LIBRARY
DESTINATION ${destination}/lib
TARGETS lmfit
EXPORT lmfit-targets
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
COMPONENT Libraries)

install(
EXPORT lmfit-targets
FILE lmfit-targets.cmake
NAMESPACE lmfit::
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lmfit"
)

configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/lmfit-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/lmfit-config.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lmfit"
)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/lmfit-config-version.cmake"
VERSION ${lmfit_VERSION}
COMPATIBILITY AnyNewerVersion
)

install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/lmfit-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/lmfit-config-version.cmake"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/lmfit"
)

configure_file(
"${CMAKE_SOURCE_DIR}/lmfit.pc.in"
"${CMAKE_CURRENT_BINARY_DIR}/lmfit.pc" @ONLY
)

install(
FILES ${inc_files}
DESTINATION ${destination}/include
COMPONENT Headers)
FILES "${CMAKE_CURRENT_BINARY_DIR}/lmfit.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/"
)

endif()
5 changes: 5 additions & 0 deletions lib/lmfit-config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@PACKAGE_INIT@

if(NOT TARGET lmfit::lmfit)
include(${CMAKE_CURRENT_LIST_DIR}/lmfit-targets.cmake)
endif()

0 comments on commit 6b85290

Please sign in to comment.