From 82c3c1620ba0a9d4dc72baf308ef0e514d9d41c3 Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Sun, 31 Aug 2025 01:44:03 -0500 Subject: [PATCH] Change cmake --- CMakeLists.txt | 38 +++++++++++++++++++++++++++-------- include/CrossLang.hpp | 4 ++++ src/types/rootenvironment.cpp | 14 ++++++------- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b125f63..bc9d639 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,7 @@ include(CMakePackageConfigHelpers) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) #option(CROSSLANG_ENABLE_DOXYGEN "Enable doxygen" ON) - +option(CROSSLANG_SHELLONLY "Only build CrossLang Shell Executable" ON) option(CROSSLANG_ENABLE_STATIC "Enable Tesses CrossLang static libraries" ON) option(CROSSLANG_ENABLE_SHARED "Enable Tesses CrossLang shared libraries" ON) option(CROSSLANG_ENABLE_BINARIES "Enable Tesses CrossLang binaries" ON) @@ -129,6 +129,9 @@ target_include_directories(${CROSSLANG_TARGET_NAME} endfunction() list(APPEND CROSSLANG_SOURCE +src/assembler/asm.cpp +src/assembler/disasm.cpp +src/assembler/merge.cpp src/compiler/codegen.cpp src/compiler/lexer.cpp src/compiler/parser.cpp @@ -261,11 +264,11 @@ if (APPLE) else() set(CMAKE_INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") endif() +if(NOT CROSSLANG_SHELLONLY) add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_WIN32_EXE_SRC}) -add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_WIN32_EXE_SRC}) if(NOT WIN32) @@ -275,19 +278,22 @@ target_link_libraries(crossc PUBLIC crosslang_shared) target_link_libraries(crossvm PUBLIC crosslang_shared) target_link_libraries(crossint PUBLIC crosslang_shared) target_link_libraries(crossdump PUBLIC crosslang_shared) -target_link_libraries(crosslang PUBLIC crosslang_shared) target_link_libraries(crossarchiveextract PUBLIC crosslang_shared) target_link_libraries(crossarchivecreate PUBLIC crosslang_shared) if(NOT WIN32) target_link_libraries(crossthumbnailer PUBLIC crosslang_shared) endif() -elseif(CROSSLANG_ENABLE_STATIC) +endif() +add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC}) +target_link_libraries(crosslang PUBLIC crosslang_shared) + +elseif(CROSSLANG_ENABLE_STATIC) +if(NOT CROSSLANG_SHELLONLY) add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_WIN32_EXE_SRC}) -add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_WIN32_EXE_SRC}) if(NOT WIN32) @@ -297,18 +303,22 @@ target_link_libraries(crossc PUBLIC crosslang_static) target_link_libraries(crossvm PUBLIC crosslang_static) target_link_libraries(crossint PUBLIC crosslang_static) target_link_libraries(crossdump PUBLIC crosslang_static) -target_link_libraries(crosslang PUBLIC crosslang_static) target_link_libraries(crossarchiveextract PUBLIC crosslang_static) target_link_libraries(crossarchivecreate PUBLIC crosslang_static) if(NOT WIN32) target_link_libraries(crossthumbnailer PUBLIC crosslang_static) endif() +endif() +add_executable(crosslang src/crosslang.cpp ${CROSSLANG_WIN32_EXE_SRC}) + +target_link_libraries(crosslang PUBLIC crosslang_static) + else() +if(NOT CROSSLANG_SHELLONLY) add_executable(crossc src/crosslangcompiler.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossvm src/crosslangvm.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossint src/crosslanginterperter.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossdump src/crosslangdump.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) -add_executable(crosslang src/crosslang.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchiveextract src/crossarchiveextract.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) add_executable(crossarchivecreate src/crossarchivecreate.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) if(NOT WIN32) @@ -317,13 +327,14 @@ endif() CROSSLANG_LINK_DEPS(crossc) CROSSLANG_LINK_DEPS(crossvm) CROSSLANG_LINK_DEPS(crossint) -CROSSLANG_LINK_DEPS(crosslang) + CROSSLANG_LINK_DEPS(crossdump) CROSSLANG_LINK_DEPS(crossarchiveextract) CROSSLANG_LINK_DEPS(crossarchivecreate) if(NOT WIN32) CROSSLANG_LINK_DEPS(crossthumbnailer) endif() + if(CROSSLANG_FETCHCONTENT) target_link_libraries(crossc PUBLIC tessesframework) target_link_libraries(crossvm PUBLIC tessesframework) @@ -347,6 +358,17 @@ if(NOT WIN32) target_link_libraries(crossthumbnailer PUBLIC TessesFramework::tessesframework) endif() endif() +endif() +add_executable(crosslang src/crosslang.cpp ${CROSSLANG_SOURCE} ${CROSSLANG_WIN32_EXE_SRC}) +CROSSLANG_LINK_DEPS(crosslang) +if(CROSSLANG_FETCHCONTENT) +target_link_libraries(crosslang PUBLIC tessesframework) + +else() +target_link_libraries(crosslang PUBLIC TessesFramework::tessesframework) + +endif() + endif() install(TARGETS crossc DESTINATION bin) install(TARGETS crossvm DESTINATION bin) diff --git a/include/CrossLang.hpp b/include/CrossLang.hpp index 176245f..ad9739d 100644 --- a/include/CrossLang.hpp +++ b/include/CrossLang.hpp @@ -2568,4 +2568,8 @@ class GC { TObject GetClassInfo(GCList& ls,TFile* f, uint32_t index); extern Tesses::Framework::Filesystem::VFSPath CrossLangConfigPath; + + Tesses::Framework::Filesystem::VFSPath Assemble(Tesses::Framework::Filesystem::VFS* vfs); + void Disassemble(Tesses::Framework::Streams::Stream* src,Tesses::Framework::Filesystem::VFS* vfs, bool generateJSON=true,bool extractResources=true); + Tesses::Framework::Filesystem::VFSPath Merge(Tesses::Framework::Filesystem::VFS* srcFS, Tesses::Framework::Filesystem::VFSPath sourcePath, Tesses::Framework::Filesystem::VFS* destFS); }; diff --git a/src/types/rootenvironment.cpp b/src/types/rootenvironment.cpp index 9b41f62..e39462c 100644 --- a/src/types/rootenvironment.cpp +++ b/src/types/rootenvironment.cpp @@ -76,14 +76,13 @@ namespace Tesses::CrossLang { name.append(".crvm"); std::string filename="/" + name; - - Tesses::Framework::Streams::Stream* file; - if(vfs->RegularFileExists(filename) && (file = vfs->OpenFile(filename,"rb")) != nullptr) + if(vfs->RegularFileExists(filename)) { - + Tesses::Framework::Streams::Stream* file = vfs->OpenFile(filename,"rb"); GCList ls(gc); TFile* f = TFile::Create(ls); f->Load(gc, file); + delete file; LoadFileWithDependencies(gc, vfs, f); } else throw VMException("Could not open file: \"" + name + "\"."); @@ -254,14 +253,15 @@ namespace Tesses::CrossLang { } void TRootEnvironment::LoadFileWithDependencies(GC* gc,Tesses::Framework::Filesystem::VFS* vfs, Tesses::Framework::Filesystem::VFSPath path) { - Tesses::Framework::Streams::Stream* file; + - if(vfs->RegularFileExists(path) && (file = vfs->OpenFile(path,"rb")) != nullptr) + if(vfs->RegularFileExists(path)) { - + Tesses::Framework::Streams::Stream* file=vfs->OpenFile(path,"rb"); GCList ls(gc); TFile* f = TFile::Create(ls); f->Load(gc, file); + delete file; Tesses::Framework::Filesystem::SubdirFilesystem dir(vfs,path.GetParent(),false); LoadFileWithDependencies(gc,&dir,f); }