From c1968ae4ab652f905a0d447e4b790a9c50746386 Mon Sep 17 00:00:00 2001 From: Kartik Singh Date: Fri, 1 Mar 2024 10:50:57 -0800 Subject: [PATCH] Link differently --- examples/smart-libraries/generate-libs.lisp | 6 +++--- src/fasl-lib.lisp | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/examples/smart-libraries/generate-libs.lisp b/examples/smart-libraries/generate-libs.lisp index 46662038..af18a9b3 100644 --- a/examples/smart-libraries/generate-libs.lisp +++ b/examples/smart-libraries/generate-libs.lisp @@ -4,7 +4,7 @@ (ql:quickload :libminiquilc) (ql:quickload :libminiqvm) -(sbcl-librarian:create-fasl-library-cmake-project "libminiquilc" libminiquilc:libminiquilc "build/libminiquilc" :base-library-name "libbase") -(sbcl-librarian:create-fasl-library-cmake-project "libminiqvm" libminiqvm:libminiqvm "build/libminiqvm" :base-library-name "libbase") +(sbcl-librarian:create-fasl-library-cmake-project "libminiquilc" libminiquilc:libminiquilc "build/libminiquilc" :base-library-name "base") +(sbcl-librarian:create-fasl-library-cmake-project "libminiqvm" libminiqvm:libminiqvm "build/libminiqvm" :base-library-name "base") -(uiop:quit) \ No newline at end of file +(uiop:quit) diff --git a/src/fasl-lib.lisp b/src/fasl-lib.lisp index 51d78288..789bd790 100644 --- a/src/fasl-lib.lisp +++ b/src/fasl-lib.lisp @@ -18,11 +18,11 @@ shared library constructor that loads the embedded FASLs.") (defparameter *cmake-minimum-required* "3.12" "The minimum version of CMake required to run the generated project.") -(defparameter *base-library-name* "libsbcl" - "The name of the shared library (minus the file suffix) containing the +(defparameter *base-library-name* "sbcl" + "The name of the shared library (minus the file suffix and 'lib' prefix) containing the SBCL runtime.") -(defun create-fasl-library-cmake-project (system-name library directory &key (base-library-name "libsbcl")) +(defun create-fasl-library-cmake-project (system-name library directory &key (base-library-name "sbcl")) "Generate a CMake project in DIRECTORY for a shared library that, when loaded into a process that has already initialized the SBCL runtime, adds the C symbols for LIBRARY to the current process's symbol table @@ -91,7 +91,7 @@ symbols defined in SYSTEMS. The C functions to perform (with-open-file (stream (uiop:merge-pathnames* *fasl-loader-filename* directory) :direction :output) #+win32 (format stream "#include ~%") - (format stream "#include \"~A.h\"~%" *base-library-name*) + (format stream "#include \"lib~A.h\"~%" *base-library-name*) (terpri stream) (format stream "#define INCBIN_STYLE INCBIN_STYLE_SNAKE~%") (format stream "#define INCBIN_PREFIX~%") @@ -136,12 +136,15 @@ library and its header file." :for fasl-filename := (system-fasl-bundle-filename system) :do (format stream "configure_file(${CMAKE_CURRENT_SOURCE_DIR}/~A ${CMAKE_CURRENT_BINARY_DIR}/~A COPYONLY)~%" fasl-filename fasl-filename)) - #+win32 + #+nil (format stream "set(CMAKE_FIND_LIBRARY_SUFFIXES .dll ${CMAKE_FIND_LIBRARY_SUFFIXES})~%") - (format stream "find_library(BASE_LIBRARY NAMES ~A${CMAKE_SHARED_LIBRARY_SUFFIX})~%" *base-library-name*) - (format stream "add_library(~A SHARED ~{~A~^ ~}~@{ ~A~})~%" c-name source-filenames #+win32 "${BASE_LIBRARY}") + #+nil + (format stream "find_library(BASE_LIBRARY NAMES lib~A${CMAKE_SHARED_LIBRARY_SUFFIX})~%" *base-library-name*) + (format stream "add_library(~A SHARED ~{~A~^ ~}~@{ ~A~})~%" c-name source-filenames #+nil "${BASE_LIBRARY}") (format stream "set_target_properties(~A PROPERTIES PREFIX \"\")~%" c-name) #-win32 (format stream "target_link_libraries(~A PRIVATE ${BASE_LIBRARY})~%" c-name) + #+win32 + (format stream "target_compile_options(~A PRIVATE -l~%A)~%" c-name *base-library-name*) (format stream "install(TARGETS ~A LIBRARY RUNTIME)~%" c-name) (format stream "install(FILES ~A.h TYPE INCLUDE)~%" c-name))))