fix cmake

This commit is contained in:
blueloveTH 2024-07-08 00:48:14 +08:00
parent 807294e0eb
commit 04b187923b
4 changed files with 15 additions and 27 deletions

View File

@ -4,38 +4,29 @@ project(pocketpy)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
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-")
add_compile_options(/wd4267 /wd4244)
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ox")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Ox")
endif()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -frtti")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
endif()
# disable -Wshorten-64-to-32 for 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")
endif()
endif()
include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
file(GLOB_RECURSE POCKETPY_SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp)
file(GLOB_RECURSE POCKETPY_SRC_C ${CMAKE_CURRENT_LIST_DIR}/src/*.c)
set(POCKETPY_SRC ${POCKETPY_SRC_CPP} ${POCKETPY_SRC_C})
file(GLOB_RECURSE POCKETPY_SRC ${CMAKE_CURRENT_LIST_DIR}/src/*.c)
option(PK_USE_CJSON "" OFF)
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)
if (BUILD_TESTING_SANITIZE)
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")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address,leak,undefined")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address,leak,undefined")
endif()
endif()
@ -95,16 +84,10 @@ elseif(PK_BUILD_STATIC_LIB)
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
else()
set(PROJECT_EXE_NAME main)
add_executable(${PROJECT_EXE_NAME} src2/main.cpp)
if (BUILD_TESTING_SANITIZE)
# static linked main, for sanitizing purpose
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
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()
add_executable(${PROJECT_EXE_NAME} src2/main.c)
# static linked main
add_library(${PROJECT_NAME} STATIC ${POCKETPY_SRC})
target_link_libraries(${PROJECT_EXE_NAME} ${PROJECT_NAME})
endif()
if(PK_USE_CJSON)

View File

@ -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) {
// len('-2147483648') == 11
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);
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) {
// len('-9223372036854775808') == 20
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);
self->data.count += n;
}
@ -234,9 +234,9 @@ int py_replinput(char* buf) {
char last = '\0';
if(size > 0) last = buf[size - 1];
if(multiline) {
if(last == '\n'){
if(last == '\n') {
break; // 2 consecutive newlines to end multiline input
}else{
} else {
printf("... ");
}
} else {

View File

@ -6,7 +6,7 @@
#include "pocketpy/interpreter/vm.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) {
pk_ManagedHeap* heap = &pk_current_vm->heap;

View File

@ -4,6 +4,11 @@
#include "pocketpy.h"
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#endif
char* read_file(const char* path) {
FILE* file = fopen(path, "r");
if(file == NULL) {