aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt3
-rw-r--r--config.h.in1
-rw-r--r--include/spm.h5
-rw-r--r--src/CMakeLists.txt6
-rw-r--r--src/compat.c9
-rw-r--r--src/environment.c2
6 files changed, 22 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee2fded..692488e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,10 @@
-cmake_minimum_required(VERSION 3.15)
+cmake_minimum_required(VERSION 3.11)
project(spm C)
include(CheckSymbolExists)
set(CMAKE_C_STANDARD 99)
check_symbol_exists(strsep string.h HAVE_STRSEP)
+check_symbol_exists(reallocarray stdlib.h HAVE_REALLOCARRAY)
configure_file(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/include/config.h)
add_subdirectory(src)
diff --git a/config.h.in b/config.h.in
index e78061d..b88f4a9 100644
--- a/config.h.in
+++ b/config.h.in
@@ -2,6 +2,7 @@
#define SPM_CONFIG_IN_H
#cmakedefine HAVE_STRSEP 1
+#cmakedefine HAVE_REALLOCARRAY 1
#define SPM_PROGRAM_PREFIX "${CMAKE_INSTALL_PREFIX}"
#define SPM_PROGRAM_BIN SPM_PROGRAM_PREFIX"/bin"
#define SPM_PROGRAM_DATA SPM_PROGRAM_PREFIX"/share"
diff --git a/include/spm.h b/include/spm.h
index e4b866b..032a19b 100644
--- a/include/spm.h
+++ b/include/spm.h
@@ -92,4 +92,9 @@ _1________________________________________________"
// GLOBALS
spm_vars SPM_GLOBAL;
+#ifdef __APPLE__
+extern char **environ;
+#define __environ environ
+#endif
+
#endif //SPM_SPM_H
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8a0a69a..b9dc7f7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -4,7 +4,11 @@ include_directories(
)
add_executable(spm spm.c config.c compat.c deps.c fs.c rpath.c find.c shell.c archive.c str.c relocation.c install.c config_global.c manifest.c checksum.c extern/url.c version_spec.c spm_build.c mime.c internal_cmd.c environment.c mirrors.c strlist.c shlib.c)
-target_link_libraries(spm rt crypto ssl curl)
+
+target_link_libraries(spm crypto ssl curl)
+if (LINUX)
+ target_link_libraries(spm rt)
+endif()
if(MSVC)
target_compile_options(spm PRIVATE /W4 /WX)
diff --git a/src/compat.c b/src/compat.c
index 062c939..5fd2cc4 100644
--- a/src/compat.c
+++ b/src/compat.c
@@ -13,4 +13,11 @@ char *strsep(char **sp, char *sep)
*sp = p;
return(s);
}
-#endif \ No newline at end of file
+#endif
+
+#ifndef HAVE_REALLOCARRAY
+#include <stdlib.h>
+void *reallocarray (void *__ptr, size_t __nmemb, size_t __size) {
+ return realloc(__ptr, __nmemb * __size);
+}
+#endif
diff --git a/src/environment.c b/src/environment.c
index b56b8de..f8d4fdb 100644
--- a/src/environment.c
+++ b/src/environment.c
@@ -395,4 +395,4 @@ void runtime_free(RuntimeEnv *env) {
return;
}
strlist_free(env);
-} \ No newline at end of file
+}