mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 11:30:18 +00:00
fix cmake
This commit is contained in:
parent
807294e0eb
commit
04b187923b
@ -4,38 +4,29 @@ project(pocketpy)
|
|||||||
|
|
||||||
set(CMAKE_C_STANDARD 11)
|
set(CMAKE_C_STANDARD 11)
|
||||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /utf-8 /jumptablerdata /GS-")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8 /jumptablerdata /GS-")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /utf-8 /jumptablerdata /GS-")
|
||||||
add_compile_options(/wd4267 /wd4244)
|
add_compile_options(/wd4267 /wd4244)
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ox")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox")
|
||||||
endif()
|
endif()
|
||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -frtti")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
|
|
||||||
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# disable -Wshorten-64-to-32 for apple
|
# disable -Wshorten-64-to-32 for apple
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-shorten-64-to-32")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-shorten-64-to-32")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-shorten-64-to-32")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
|
||||||
file(GLOB_RECURSE POCKETPY_SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)
|
file(GLOB_RECURSE POCKETPY_SRC ${CMAKE_CURRENT_LIST_DIR}/src/*.c)
|
||||||
file(GLOB_RECURSE POCKETPY_SRC_C ${CMAKE_CURRENT_LIST_DIR}/src/*.c)
|
|
||||||
set(POCKETPY_SRC ${POCKETPY_SRC_CPP} ${POCKETPY_SRC_C})
|
|
||||||
|
|
||||||
option(PK_USE_CJSON "" OFF)
|
option(PK_USE_CJSON "" OFF)
|
||||||
if(PK_USE_CJSON)
|
if(PK_USE_CJSON)
|
||||||
@ -72,10 +63,8 @@ if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
|||||||
option(BUILD_TESTING_SANITIZE "Build the source with sanitizers" OFF)
|
option(BUILD_TESTING_SANITIZE "Build the source with sanitizers" OFF)
|
||||||
if (BUILD_TESTING_SANITIZE)
|
if (BUILD_TESTING_SANITIZE)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address /fno-omit-frame-pointer")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fsanitize=address /fno-omit-frame-pointer")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fsanitize=address /fno-omit-frame-pointer")
|
||||||
else()
|
else()
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,leak,undefined")
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address,leak,undefined")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address,leak,undefined")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -95,16 +84,10 @@ elseif(PK_BUILD_STATIC_LIB)
|
|||||||
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
|
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
|
||||||
else()
|
else()
|
||||||
set(PROJECT_EXE_NAME main)
|
set(PROJECT_EXE_NAME main)
|
||||||
add_executable(${PROJECT_EXE_NAME} src2/main.cpp)
|
add_executable(${PROJECT_EXE_NAME} src2/main.c)
|
||||||
if (BUILD_TESTING_SANITIZE)
|
# static linked main
|
||||||
# static linked main, for sanitizing purpose
|
|
||||||
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
|
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
|
||||||
target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME})
|
target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME})
|
||||||
else()
|
|
||||||
# shared linked main, used by default, for CI and others
|
|
||||||
add_library(${PROJECT_NAME} SHARED ${POCKETPY_SRC})
|
|
||||||
target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME} ${CMAKE_DL_LIBS})
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(PK_USE_CJSON)
|
if(PK_USE_CJSON)
|
||||||
|
@ -23,7 +23,7 @@ void c11_sbuf__write_char(c11_sbuf* self, char c) { c11_vector__push(char, &self
|
|||||||
void c11_sbuf__write_int(c11_sbuf* self, int i) {
|
void c11_sbuf__write_int(c11_sbuf* self, int i) {
|
||||||
// len('-2147483648') == 11
|
// len('-2147483648') == 11
|
||||||
c11_vector__reserve(&self->data, self->data.count + 11 + 1);
|
c11_vector__reserve(&self->data, self->data.count + 11 + 1);
|
||||||
char* p = self->data.data + self->data.count;
|
char* p = (char*)self->data.data + self->data.count;
|
||||||
int n = snprintf(p, 11 + 1, "%d", i);
|
int n = snprintf(p, 11 + 1, "%d", i);
|
||||||
self->data.count += n;
|
self->data.count += n;
|
||||||
}
|
}
|
||||||
@ -31,7 +31,7 @@ void c11_sbuf__write_int(c11_sbuf* self, int i) {
|
|||||||
void c11_sbuf__write_i64(c11_sbuf* self, int64_t val) {
|
void c11_sbuf__write_i64(c11_sbuf* self, int64_t val) {
|
||||||
// len('-9223372036854775808') == 20
|
// len('-9223372036854775808') == 20
|
||||||
c11_vector__reserve(&self->data, self->data.count + 20 + 1);
|
c11_vector__reserve(&self->data, self->data.count + 20 + 1);
|
||||||
char* p = self->data.data + self->data.count;
|
char* p = (char*)self->data.data + self->data.count;
|
||||||
int n = snprintf(p, 20 + 1, "%lld", (long long)val);
|
int n = snprintf(p, 20 + 1, "%lld", (long long)val);
|
||||||
self->data.count += n;
|
self->data.count += n;
|
||||||
}
|
}
|
||||||
@ -234,9 +234,9 @@ int py_replinput(char* buf) {
|
|||||||
char last = '\0';
|
char last = '\0';
|
||||||
if(size > 0) last = buf[size - 1];
|
if(size > 0) last = buf[size - 1];
|
||||||
if(multiline) {
|
if(multiline) {
|
||||||
if(last == '\n'){
|
if(last == '\n') {
|
||||||
break; // 2 consecutive newlines to end multiline input
|
break; // 2 consecutive newlines to end multiline input
|
||||||
}else{
|
} else {
|
||||||
printf("... ");
|
printf("... ");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
#include "pocketpy/interpreter/vm.h"
|
#include "pocketpy/interpreter/vm.h"
|
||||||
#include "pocketpy/common/sstream.h"
|
#include "pocketpy/common/sstream.h"
|
||||||
|
|
||||||
void py_newstr(py_Ref out, const char* data) { return py_newstrn(out, data, strlen(data)); }
|
void py_newstr(py_Ref out, const char* data) { py_newstrn(out, data, strlen(data)); }
|
||||||
|
|
||||||
void py_newstrn(py_Ref out, const char* data, int size) {
|
void py_newstrn(py_Ref out, const char* data, int size) {
|
||||||
pk_ManagedHeap* heap = &pk_current_vm->heap;
|
pk_ManagedHeap* heap = &pk_current_vm->heap;
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
|
|
||||||
#include "pocketpy.h"
|
#include "pocketpy.h"
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
char* read_file(const char* path) {
|
char* read_file(const char* path) {
|
||||||
FILE* file = fopen(path, "r");
|
FILE* file = fopen(path, "r");
|
||||||
if(file == NULL) {
|
if(file == NULL) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user