From 3c6ce4e23bfb7111353339a51df5da6a6b3bc13f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Tue, 25 May 2021 12:08:33 +0100 Subject: [PATCH 01/17] don't ignore CMakeLists.txt --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 50005d53..2b7e1b46 100644 --- a/.gitignore +++ b/.gitignore @@ -62,6 +62,7 @@ lib/srfi/160/uvprims.c *.err *.fasl *.txt +!CMakeLists.txt *.test *.train *.h5 From c79145b051361dcaf4384b9dbefe49cb17169903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Tue, 25 May 2021 12:11:06 +0100 Subject: [PATCH 02/17] require CMake version >= 3.12 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13fd8f18..8d7ed710 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ # FIXME: This CMakeLists.txt is only for Win32 platforms for now # -cmake_minimum_required(VERSION 2.8.7) +cmake_minimum_required(VERSION 3.12) project(chibi-scheme) include(CheckIncludeFile) From eb6c9db857577432d32da31b2c7e8c5a0d6fc1d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Tue, 25 May 2021 13:30:25 +0100 Subject: [PATCH 03/17] use unversioned library basename --- CMakeLists.txt | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8d7ed710..90c4e2ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,8 +18,6 @@ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/VERSION rawversion) string(STRIP ${rawversion} rawversion) set(version "${rawversion}-cmake") -set(chibischemelib "chibi-scheme-${rawversion}") - if(APPLE) message(FATAL_ERROR "DYLD platforms are not supported with this CMakeLists.txt. Use Makefile instead.") @@ -180,23 +178,23 @@ else() set(libtype STATIC) endif() -add_library(${chibischemelib} ${libtype} +add_library(lib-chibi-scheme ${libtype} ${chibi-scheme-srcs} ${clibout}) -set_target_properties(${chibischemelib} +set_target_properties(lib-chibi-scheme PROPERTIES COMPILE_DEFINITIONS "SEXP_USE_STATIC_LIBS=1") -add_dependencies(${chibischemelib} chibi-scheme-stubs) +add_dependencies(lib-chibi-scheme chibi-scheme-stubs) if(WIN32 AND CHIBI_SCHEME_SHARED) - target_link_libraries(${chibischemelib} ws2_32) - target_compile_definitions(${chibischemelib} PUBLIC -DBUILDING_DLL=1) + target_link_libraries(lib-chibi-scheme ws2_32) + target_compile_definitions(lib-chibi-scheme PUBLIC -DBUILDING_DLL=1) endif() function(bless_chibi_scheme_executable tgt) - target_link_libraries(${tgt} ${chibischemelib}) + target_link_libraries(${tgt} lib-chibi-scheme) if(WIN32 AND NOT CHIBI_SCHEME_SHARED) target_link_libraries(${tgt} ws2_32) endif() From 76bce1ce1cae02dde77ca80845063f71ea7f97eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Tue, 25 May 2021 13:30:47 +0100 Subject: [PATCH 04/17] prefer CMake's builtin BUILD_SHARED_LIBS option --- CMakeLists.txt | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90c4e2ce..9ad69c30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,9 +36,9 @@ check_include_file(poll.h HAVE_POLL_H) check_include_file(stdint.h HAVE_STDINT_H) # option(CHIBI_SCHEME_USE_DL "Use dynamic loading" ON) set(CHIBI_SCHEME_USE_DL OFF) -option(CHIBI_SCHEME_SHARED "Build chibi-scheme as a shared library" ON) +option(BUILD_SHARED_LIBS "Build chibi-scheme as a shared library" ON) -if(NOT CHIBI_SCHEME_SHARED) +if(NOT ${BUILD_SHARED_LIBS}) add_definitions(-DSEXP_STATIC_LIBRARY=1) endif() @@ -172,13 +172,7 @@ add_custom_command(OUTPUT ${clibout} # Core library # -if(CHIBI_SCHEME_SHARED) - set(libtype SHARED) -else() - set(libtype STATIC) -endif() - -add_library(lib-chibi-scheme ${libtype} +add_library(lib-chibi-scheme ${chibi-scheme-srcs} ${clibout}) @@ -188,14 +182,14 @@ set_target_properties(lib-chibi-scheme add_dependencies(lib-chibi-scheme chibi-scheme-stubs) -if(WIN32 AND CHIBI_SCHEME_SHARED) +if(WIN32 AND ${BUILD_SHARED_LIBS}) target_link_libraries(lib-chibi-scheme ws2_32) target_compile_definitions(lib-chibi-scheme PUBLIC -DBUILDING_DLL=1) endif() function(bless_chibi_scheme_executable tgt) target_link_libraries(${tgt} lib-chibi-scheme) - if(WIN32 AND NOT CHIBI_SCHEME_SHARED) + if(WIN32 AND NOT ${BUILD_SHARED_LIBS}) target_link_libraries(${tgt} ws2_32) endif() endfunction() From b603e04d9e30987ebfe5483d058fd77ad801266e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Tue, 25 May 2021 15:43:07 +0100 Subject: [PATCH 05/17] align library name with build artifact --- CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ad69c30..8c7b3120 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -172,23 +172,23 @@ add_custom_command(OUTPUT ${clibout} # Core library # -add_library(lib-chibi-scheme +add_library(libchibi-scheme ${chibi-scheme-srcs} ${clibout}) -set_target_properties(lib-chibi-scheme +set_target_properties(libchibi-scheme PROPERTIES COMPILE_DEFINITIONS "SEXP_USE_STATIC_LIBS=1") -add_dependencies(lib-chibi-scheme chibi-scheme-stubs) +add_dependencies(libchibi-scheme chibi-scheme-stubs) if(WIN32 AND ${BUILD_SHARED_LIBS}) - target_link_libraries(lib-chibi-scheme ws2_32) - target_compile_definitions(lib-chibi-scheme PUBLIC -DBUILDING_DLL=1) + target_link_libraries(libchibi-scheme ws2_32) + target_compile_definitions(libchibi-scheme PUBLIC -DBUILDING_DLL=1) endif() function(bless_chibi_scheme_executable tgt) - target_link_libraries(${tgt} lib-chibi-scheme) + target_link_libraries(${tgt} libchibi-scheme) if(WIN32 AND NOT ${BUILD_SHARED_LIBS}) target_link_libraries(${tgt} ws2_32) endif() From 4cc384ecac0005a78a2fd9077d03f1b60c8bb5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Wed, 26 May 2021 12:40:03 +0100 Subject: [PATCH 06/17] use VERSION file for project settings and lib output --- CMakeLists.txt | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7b3120..e3f1537e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,20 +3,17 @@ # cmake_minimum_required(VERSION 3.12) -project(chibi-scheme) -include(CheckIncludeFile) - -# -# Version setting -# +file(READ ${CMAKE_CURRENT_SOURCE_DIR}/VERSION version) +string(STRIP ${version} version) file(READ ${CMAKE_CURRENT_SOURCE_DIR}/RELEASE release) string(STRIP ${release} release) -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/VERSION rawversion) -string(STRIP ${rawversion} rawversion) -set(version "${rawversion}-cmake") +project(chibi-scheme LANGUAGES C VERSION ${version} + DESCRIPTION "Chibi-Scheme: minimal r7rs implementation, release: ${release}") + +include(CheckIncludeFile) if(APPLE) message(FATAL_ERROR @@ -178,6 +175,8 @@ add_library(libchibi-scheme set_target_properties(libchibi-scheme PROPERTIES + SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} + VERSION ${CMAKE_PROJECT_VERSION} COMPILE_DEFINITIONS "SEXP_USE_STATIC_LIBS=1") add_dependencies(libchibi-scheme chibi-scheme-stubs) From f6e67edf016d79b34b4e40ec85389089a0534d24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 21:39:12 +0100 Subject: [PATCH 07/17] export compilation database --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index e3f1537e..7c5a813b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,8 @@ if(UNIX) "UNIX platforms are not supported with this CMakeLists.txt. Use Makefile instead.") endif() +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + # # Features # From 7c46c618d01ded561eb539455ac99c480acf1d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 21:39:43 +0100 Subject: [PATCH 08/17] don't build bootstrap exec by default This doesn't necessarily have an effect though, as we need the bootstrapping executable anyhow for building other targets. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c5a813b..5b425ddc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,6 +95,7 @@ include_directories( # add_executable(chibi-scheme-bootstrap + EXCLUDE_FROM_ALL ${chibi-scheme-srcs} main.c) From 5402d86323e8bb8f9f7b51c4d52984b445119b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 21:41:15 +0100 Subject: [PATCH 09/17] remove trailing whitespace --- CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b425ddc..7c21a1d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -114,11 +114,11 @@ endif() # # FIXME: Currently, it depends on GLOB thus we have to re-run CMake -# when we've gotten additional/removed library +# when we've gotten additional/removed library -file(GLOB_RECURSE stubs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/lib +file(GLOB_RECURSE stubs RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR}/lib/*.stub) -file(GLOB_RECURSE slds RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} +file(GLOB_RECURSE slds RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib/*.sld) list(REMOVE_ITEM slds ${chibi-scheme-exclude-modules}) @@ -209,7 +209,7 @@ add_executable(chibi-scheme bless_chibi_scheme_executable(chibi-scheme) # -# Generate "chibi/install.h" +# Generate "chibi/install.h" # if(CYGWIN OR WIN32) @@ -246,7 +246,7 @@ file(WRITE #define sexp_version \"\" #define sexp_release_name \"${release}\"") -# +# # Testing # @@ -309,7 +309,7 @@ foreach(e ${testlibs}) WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endforeach() -# +# # Testing (embedding) # From 9fab5cf4dd000e7b3c37ab6fcf052fbb0bae6f51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 21:46:31 +0100 Subject: [PATCH 10/17] generate and add clibs.c only for static builds --- CMakeLists.txt | 73 +++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c21a1d5..5475435c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,51 +142,58 @@ foreach(e ${stubs}) endforeach() add_custom_target(chibi-scheme-stubs DEPENDS ${stubouts}) -# -# Generate clib.c for SEXP_USE_STATIC_LIBS -# - -string(REPLACE ";" "\n" genstatic-input "${slds}") -set(clibin ${CMAKE_CURRENT_BINARY_DIR}/clib-in.txt) -set(clibout ${CMAKE_CURRENT_BINARY_DIR}/clib.c) -set(genstatic-helper - ${CMAKE_CURRENT_LIST_DIR}/contrib/chibi-genstatic-helper.cmake) -file(WRITE ${clibin} "${genstatic-input}") - -add_custom_command(OUTPUT ${clibout} - COMMAND - ${CMAKE_COMMAND} - -DEXEC=$ - -DGENSTATIC=${chibi-genstatic} - -DSTUBS=${clibin} - -DOUT=${clibout} - -P ${genstatic-helper} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS - chibi-scheme-bootstrap - ${chibi-genstatic} - ${genstatic-helper} - ${slds}) - # # Core library # add_library(libchibi-scheme - ${chibi-scheme-srcs} - ${clibout}) + ${chibi-scheme-srcs}) set_target_properties(libchibi-scheme - PROPERTIES + PROPERTIES SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} - VERSION ${CMAKE_PROJECT_VERSION} - COMPILE_DEFINITIONS "SEXP_USE_STATIC_LIBS=1") + VERSION ${CMAKE_PROJECT_VERSION}) add_dependencies(libchibi-scheme chibi-scheme-stubs) -if(WIN32 AND ${BUILD_SHARED_LIBS}) +# +# Generate clib.c for SEXP_USE_STATIC_LIBS +# + +if (NOT BUILD_SHARED_LIBS) + string(REPLACE ";" "\n" genstatic-input "${slds}") + set(clibin ${CMAKE_CURRENT_BINARY_DIR}/clib-in.txt) + set(clibout ${CMAKE_CURRENT_BINARY_DIR}/clib.c) + set(genstatic-helper + ${CMAKE_CURRENT_LIST_DIR}/contrib/chibi-genstatic-helper.cmake) + file(WRITE ${clibin} "${genstatic-input}") + + + add_custom_command(OUTPUT ${clibout} + COMMAND + ${CMAKE_COMMAND} + -DEXEC=$ + -DGENSTATIC=${chibi-genstatic} + -DSTUBS=${clibin} + -DOUT=${clibout} + -P ${genstatic-helper} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS + chibi-scheme-bootstrap + ${chibi-genstatic} + ${genstatic-helper} + ${slds}) + + target_compile_definitions(libchibi-scheme + PUBLIC + SEXP_USE_STATIC_LIBS=1) + + target_sources(libchibi-scheme + PUBLIC + ${clibout}) +elseif(WIN32) target_link_libraries(libchibi-scheme ws2_32) - target_compile_definitions(libchibi-scheme PUBLIC -DBUILDING_DLL=1) + target_compile_definitions(libchibi-scheme PUBLIC BUILDING_DLL=1) endif() function(bless_chibi_scheme_executable tgt) From 4b5ebffa5bab927fb1137d2e470ae2f8c11d549a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 22:06:45 +0100 Subject: [PATCH 11/17] build static libs by default on windows --- CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5475435c..5b109eb6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,14 @@ check_include_file(poll.h HAVE_POLL_H) check_include_file(stdint.h HAVE_STDINT_H) # option(CHIBI_SCHEME_USE_DL "Use dynamic loading" ON) set(CHIBI_SCHEME_USE_DL OFF) -option(BUILD_SHARED_LIBS "Build chibi-scheme as a shared library" ON) + +if (WIN32 AND NOT CYGWIN) + set(DEFAULT_SHARED_LIBS OFF) +else() + set(DEFAULT_SHARED_LIBS ON) +endif() + +option(BUILD_SHARED_LIBS "Build chibi-scheme as a shared library" ${DEFAULT_SHARED_LIBS}) if(NOT ${BUILD_SHARED_LIBS}) add_definitions(-DSEXP_STATIC_LIBRARY=1) From 7595ecbc095d4754e226ada629b41e63f49212e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 22:17:15 +0100 Subject: [PATCH 12/17] replace more global commands by target-based ones --- CMakeLists.txt | 74 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b109eb6..cd07f272 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,8 +33,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) check_include_file(poll.h HAVE_POLL_H) check_include_file(stdint.h HAVE_STDINT_H) -# option(CHIBI_SCHEME_USE_DL "Use dynamic loading" ON) -set(CHIBI_SCHEME_USE_DL OFF) if (WIN32 AND NOT CYGWIN) set(DEFAULT_SHARED_LIBS OFF) @@ -44,28 +42,8 @@ endif() option(BUILD_SHARED_LIBS "Build chibi-scheme as a shared library" ${DEFAULT_SHARED_LIBS}) -if(NOT ${BUILD_SHARED_LIBS}) - add_definitions(-DSEXP_STATIC_LIBRARY=1) -endif() - -if(CHIBI_SCHEME_USE_DL) - add_definitions(-DSEXP_USE_DL=1) -else() - add_definitions(-DSEXP_USE_DL=0) -endif() - -if(HAVE_STDINT_H) - add_definitions(-DSEXP_USE_INTTYPES=1) -endif() - -if(NOT HAVE_POLL_H) - # Disable green threads: It depends on non-blocking I/O - add_definitions(-DSEXP_USE_GREEN_THREADS=0) -endif() - set(chibi-scheme-exclude-modules) if(WIN32) - add_definitions(-DBUILDING_DLL) set(chibi-scheme-exclude-modules # Following modules are not compatible with Win32 lib/chibi/net.sld @@ -76,6 +54,39 @@ if(WIN32) lib/chibi/pty.sld) endif() +# +# Default settings for all targets. We use an interface library here to not +# pollute/mutate global settings. +# + +add_library(libchibi-common + INTERFACE) + +target_include_directories(libchibi-common + INTERFACE + $ + $ + $) + +if (NOT BUILD_SHARED_LIBS) + target_compile_definitions(libchibi-common INTERFACE SEXP_USE_DL=0) +else() + target_compile_definitions(libchibi-common INTERFACE SEXP_USE_DL=1) +endif() + +if(NOT ${BUILD_SHARED_LIBS}) + add_definitions(-DSEXP_STATIC_LIBRARY=1) +endif() + +if(HAVE_STDINT_H) + target_compile_definitions(libchibi-common INTERFACE SEXP_USE_INTTYPES=1) +endif() + +if(NOT HAVE_POLL_H) + # Disable green threads: It depends on non-blocking I/O + target_compile_definitions(libchibi-common INTERFACE SEXP_USE_GREEN_THREADS=0) +endif() + # # Sources # @@ -93,10 +104,6 @@ set(chibi-scheme-srcs eval.c simplify.c) -include_directories( - include - ${CMAKE_CURRENT_BINARY_DIR}/include) - # # Bootstrap # @@ -106,6 +113,9 @@ add_executable(chibi-scheme-bootstrap ${chibi-scheme-srcs} main.c) +target_link_libraries(chibi-scheme-bootstrap + PRIVATE libchibi-common) + if(WIN32) target_link_libraries(chibi-scheme-bootstrap ws2_32) endif() @@ -156,6 +166,9 @@ add_custom_target(chibi-scheme-stubs DEPENDS ${stubouts}) add_library(libchibi-scheme ${chibi-scheme-srcs}) +target_link_libraries(libchibi-scheme + PUBLIC libchibi-common) + set_target_properties(libchibi-scheme PROPERTIES SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} @@ -175,7 +188,6 @@ if (NOT BUILD_SHARED_LIBS) ${CMAKE_CURRENT_LIST_DIR}/contrib/chibi-genstatic-helper.cmake) file(WRITE ${clibin} "${genstatic-input}") - add_custom_command(OUTPUT ${clibout} COMMAND ${CMAKE_COMMAND} @@ -198,6 +210,11 @@ if (NOT BUILD_SHARED_LIBS) target_sources(libchibi-scheme PUBLIC ${clibout}) + + target_include_directories(libchibi-common + INTERFACE + $ + $) elseif(WIN32) target_link_libraries(libchibi-scheme ws2_32) target_compile_definitions(libchibi-scheme PUBLIC BUILDING_DLL=1) @@ -214,9 +231,6 @@ endfunction() # Interpreter # -include_directories( - . - ${stuboutdir}/..) add_executable(chibi-scheme main.c) From 2f663dff33edda5c4d8f23c765e3d45493691cfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 22:33:44 +0100 Subject: [PATCH 13/17] fix repeated target_link_libraries on bootstrap target --- CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd07f272..f7b3972b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,11 +113,12 @@ add_executable(chibi-scheme-bootstrap ${chibi-scheme-srcs} main.c) -target_link_libraries(chibi-scheme-bootstrap - PRIVATE libchibi-common) - if(WIN32) - target_link_libraries(chibi-scheme-bootstrap ws2_32) + target_link_libraries(chibi-scheme-bootstrap + PRIVATE ws2_32 libchibi-common) +else() + target_link_libraries(chibi-scheme-bootstrap + PRIVATE libchibi-common) endif() if(CYGWIN OR WIN32) From 514d58264fce4bb4135af7128b401b935828f563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 22:48:01 +0100 Subject: [PATCH 14/17] Use builtin variable for shared object suffix --- CMakeLists.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7b3972b..05313969 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -121,11 +121,6 @@ else() PRIVATE libchibi-common) endif() -if(CYGWIN OR WIN32) - set(soext ".dll") -else() - set(soext ".so") -endif() # # Generate modules @@ -269,7 +264,7 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/chibi) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/include/chibi/install.h - "#define sexp_so_extension \"${soext}\" + "#define sexp_so_extension \"${CMAKE_SHARED_LIBRARY_SUFFIX}\" #define sexp_default_module_path \"${default_module_path}\" #define sexp_platform \"${platform}\" #define sexp_version \"\" From b0c0afcb73c107fddddaf6d78047b732f2e0188e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Thu, 27 May 2021 23:02:57 +0100 Subject: [PATCH 15/17] prefer configure_file over manual file(WRITE ...) --- CMakeLists.txt | 10 +--------- include/chibi/install.h.in | 5 +++++ 2 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 include/chibi/install.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 05313969..e2430869 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -260,15 +260,7 @@ set(default_module_path #"${CMAKE_INSTALL_PREFIX}/${thePrefix}${pathsep}${CMAKE_INSTALL_PREFIX}/bin" ) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/chibi) - -file(WRITE - ${CMAKE_CURRENT_BINARY_DIR}/include/chibi/install.h - "#define sexp_so_extension \"${CMAKE_SHARED_LIBRARY_SUFFIX}\" -#define sexp_default_module_path \"${default_module_path}\" -#define sexp_platform \"${platform}\" -#define sexp_version \"\" -#define sexp_release_name \"${release}\"") +configure_file(include/chibi/install.h.in include/chibi/install.h) # # Testing diff --git a/include/chibi/install.h.in b/include/chibi/install.h.in new file mode 100644 index 00000000..a9ca5229 --- /dev/null +++ b/include/chibi/install.h.in @@ -0,0 +1,5 @@ +#define sexp_so_extension "@CMAKE_SHARED_LIBRARY_SUFFIX@" +#define sexp_default_module_path "@default_module_path@" +#define sexp_platform "@platform@" +#define sexp_version "@CMAKE_PROJECT_VERSION@" +#define sexp_release_name "@release@" From 0f1dfad91c136683202723baf46a3f9454a19fc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Sun, 30 May 2021 22:19:45 +0100 Subject: [PATCH 16/17] eliminate last global flag, move library definition --- CMakeLists.txt | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2430869..90cf38e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,12 +74,12 @@ else() target_compile_definitions(libchibi-common INTERFACE SEXP_USE_DL=1) endif() -if(NOT ${BUILD_SHARED_LIBS}) - add_definitions(-DSEXP_STATIC_LIBRARY=1) +if(HAVE_STDINT_H) + target_compile_definitions(libchibi-common INTERFACE SEXP_USE_INTTYPES) endif() -if(HAVE_STDINT_H) - target_compile_definitions(libchibi-common INTERFACE SEXP_USE_INTTYPES=1) +if(HAVE_NTP_GETTIME) + target_compile_definitions(libchibi-common INTERFACE SEXP_USE_NTPGETTIME) endif() if(NOT HAVE_POLL_H) @@ -123,9 +123,28 @@ endif() # -# Generate modules +# Core library # +add_library(libchibi-scheme + ${chibi-scheme-srcs}) + +target_link_libraries(libchibi-scheme + PUBLIC libchibi-common) + +set_target_properties(libchibi-scheme + PROPERTIES + SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} + VERSION ${CMAKE_PROJECT_VERSION}) + +if (NOT BUILD_SHARED_LIBS) + target_compile_definitions(libchibi-scheme PUBLIC SEXP_STATIC_LIBRARY=1) +endif() + + +# +# Generate modules +# # FIXME: Currently, it depends on GLOB thus we have to re-run CMake # when we've gotten additional/removed library @@ -155,20 +174,8 @@ foreach(e ${stubs}) endforeach() add_custom_target(chibi-scheme-stubs DEPENDS ${stubouts}) -# -# Core library -# -add_library(libchibi-scheme - ${chibi-scheme-srcs}) -target_link_libraries(libchibi-scheme - PUBLIC libchibi-common) - -set_target_properties(libchibi-scheme - PROPERTIES - SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} - VERSION ${CMAKE_PROJECT_VERSION}) add_dependencies(libchibi-scheme chibi-scheme-stubs) From 92d5f8eae1539fcacf5e5769f284a8de9ff99b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20B=C3=B6ger?= Date: Mon, 31 May 2021 07:30:48 +0100 Subject: [PATCH 17/17] apply static flag for bootstrap exec, too This is required for the Windows configuration to succeed at all. It should also be beneficial when we start sharing object code between bootstrap and actual executable. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90cf38e3..c02b5b82 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,6 +62,10 @@ endif() add_library(libchibi-common INTERFACE) +if (NOT BUILD_SHARED_LIBS) + target_compile_definitions(libchibi-common INTERFACE SEXP_STATIC_LIBRARY=1) +endif() + target_include_directories(libchibi-common INTERFACE $ @@ -137,10 +141,6 @@ set_target_properties(libchibi-scheme SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} VERSION ${CMAKE_PROJECT_VERSION}) -if (NOT BUILD_SHARED_LIBS) - target_compile_definitions(libchibi-scheme PUBLIC SEXP_STATIC_LIBRARY=1) -endif() - # # Generate modules