diff -Naur a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt	1969-12-31 21:00:00.000000000 -0300
+++ b/CMakeLists.txt	2024-04-16 12:10:12.082969997 -0300
@@ -0,0 +1,116 @@
+cmake_minimum_required(VERSION 3.13)
+
+# The default build type must be set
+# right after cmake_minimum_required
+# to take effect
+if (NOT DEFINED CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE "Release")
+endif()
+
+# set the package version
+if (NOT DEFINED MINPACK_VERSION)
+    SET(MINPACK_VERSION "1.0.0")
+endif()
+
+project(minpack
+    VERSION ${MINPACK_VERSION}
+    LANGUAGES Fortran
+)
+
+# Build shared libraries by default
+if (NOT DEFINED BUILD_SHARED_LIBS)
+    set(BUILD_SHARED_LIBS ON)
+endif()
+
+# Also build static libraries by default
+if (NOT DEFINED BUILD_STATIC_LIBS)
+    set(BUILD_STATIC_LIBS ON)
+endif()
+
+# assert that at least one kind
+# of library was requested to build
+if (NOT (BUILD_SHARED_LIBS OR BUILD_STATIC_LIBS))
+    message(FATAL_ERROR "You must configure cmake to build either the shared or static library by setting -DBUILD_SHARED_LIBS=ON or -DBUILD_STATIC_LIBS=ON, respectively.")
+endif()
+
+# Fortran source files for minpack
+set(minpack_source_files
+    "chkder.f"
+    "dogleg.f"
+    "dpmpar.f"
+    "enorm.f"
+    "fdjac1.f"
+    "fdjac2.f"
+    "hybrd1.f"
+    "hybrd.f"
+    "hybrj1.f"
+    "hybrj.f"
+    "lmder1.f"
+    "lmder.f"
+    "lmdif1.f"
+    "lmdif.f"
+    "lmpar.f"
+    "lmstr1.f"
+    "lmstr.f"
+    "qform.f"
+    "qrfac.f"
+    "qrsolv.f"
+    "r1mpyq.f"
+    "r1updt.f"
+    "rwupdt.f"
+)
+
+# library name
+set(minpack_library_name "minpack")
+
+# minpack header file
+set(minpack_header "minpack.h")
+
+# minpack pkg-config input file to be transformed
+set(minpack_pkg_config_in "cmake-${minpack_library_name}.pc.in")
+
+# minpack pkg-config destination file
+set(minpack_pkg_config "${CMAKE_CURRENT_BINARY_DIR}/${minpack_library_name}.pc")
+
+# use GNU directories convention
+include(GNUInstallDirs)
+
+# Build the shared library
+if (BUILD_SHARED_LIBS)
+    add_library(minpack_shared SHARED "")
+    target_sources(minpack_shared PRIVATE ${minpack_source_files})
+    target_compile_definitions(minpack_shared PRIVATE DLL_EXPORT)
+
+    set_target_properties(minpack_shared
+        PROPERTIES
+        POSITION_INDEPENDENT_CODE ON
+        OUTPUT_NAME ${minpack_library_name}
+    )
+
+    install(TARGETS minpack_shared
+        RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+        LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+        ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    )
+endif()
+
+# Build the static library
+if (BUILD_STATIC_LIBS)
+    add_library(minpack_static STATIC "")
+    target_sources(minpack_static PRIVATE ${minpack_source_files})
+
+    set_target_properties(minpack_static
+        PROPERTIES
+        OUTPUT_NAME ${minpack_library_name}
+    )
+
+    install(TARGETS minpack_static
+        RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+        LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+        ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    )
+endif()
+
+configure_file(${minpack_pkg_config_in} ${minpack_pkg_config} @ONLY)
+install(FILES ${minpack_pkg_config} DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+install(FILES ${minpack_header} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
\ No newline at end of file
