@@ -7,6 +7,49 @@ include(FetchContent)
77include (cmake/ghostship-cvars.cmake )
88include (cmake/lus-cvars.cmake )
99
10+ set (VENV_PATH "${CMAKE_CURRENT_BINARY_DIR } /venv" )
11+
12+ if (WIN32 )
13+ set (VENV_PYTHON "${VENV_PATH} /Scripts/python.exe" )
14+ else ()
15+ set (VENV_PYTHON "${VENV_PATH} /bin/python" )
16+ endif ()
17+
18+ if (NOT EXISTS "${VENV_PYTHON} " )
19+ message (STATUS "Creating Python virtual environment..." )
20+ find_package (Python3 COMPONENTS Interpreter REQUIRED )
21+ execute_process (
22+ COMMAND ${Python3_EXECUTABLE} -m venv ${VENV_PATH}
23+ RESULT_VARIABLE VENV_RET
24+ )
25+ if (NOT VENV_RET EQUAL 0)
26+ message (FATAL_ERROR "Failed to create virtual environment" )
27+ endif ()
28+ endif ()
29+
30+ message (STATUS "Ensuring cryptography is installed in venv..." )
31+ execute_process (
32+ COMMAND "${VENV_PYTHON} " -m pip install cryptography
33+ RESULT_VARIABLE PIP_RET
34+ )
35+
36+ if (NOT PIP_RET EQUAL 0)
37+ message (FATAL_ERROR "Failed to install cryptography in venv" )
38+ endif ()
39+
40+ set (Python3_EXECUTABLE ${VENV_PYTHON} CACHE FILEPATH "Path to venv python" FORCE )
41+ set (Python_EXECUTABLE ${VENV_PYTHON} CACHE FILEPATH "Path to venv python" FORCE )
42+ set (Python3_ROOT_DIR "${VENV_PATH} " CACHE PATH "Root dir of venv python" FORCE )
43+ set (Python3_FIND_VIRTUALENV FIRST CACHE STRING "Prefer venv python" FORCE )
44+
45+ unset (Python3_FOUND CACHE )
46+ unset (Python3_Interpreter_FOUND CACHE )
47+ unset (Python3_INTERPRETER_ID CACHE )
48+
49+ find_package (Python3 REQUIRED COMPONENTS Interpreter )
50+
51+ message (STATUS "Using Python from venv: ${Python3_EXECUTABLE} " )
52+
1053set (NATO_PHONETIC_ALPHABET
1154 "Alfa" "Bravo" "Charlie" "Delta" "Echo" "Foxtrot" "Golf" "Hotel"
1255 "India" "Juliett" "Kilo" "Lima" "Mike" "November" "Oscar" "Papa"
@@ -327,6 +370,32 @@ target_link_libraries(${PROJECT_NAME} PRIVATE "$<LINK_LIBRARY:WHOLE_ARCHIVE,libu
327370set_target_properties (${PROJECT_NAME } PROPERTIES ENABLE_EXPORTS TRUE )
328371set_target_properties (${PROJECT_NAME } PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE )
329372
373+ #=================== cimgui ===================
374+ FetchContent_Declare (
375+ cimgui
376+ GIT_REPOSITORY https://github.com/cimgui/cimgui.git
377+ GIT_TAG 1.91.9bdock
378+ GIT_SUBMODULES ""
379+ )
380+ FetchContent_Populate (cimgui)
381+ FetchContent_GetProperties (ImGui)
382+ file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR } /_deps" )
383+ file (CREATE_LINK "${imgui_SOURCE_DIR } " "${CMAKE_BINARY_DIR } /_deps/imgui" SYMBOLIC )
384+
385+ add_library (cimgui STATIC ${cimgui_SOURCE_DIR } /cimgui.cpp )
386+
387+ target_include_directories (cimgui
388+ PRIVATE "${CMAKE_BINARY_DIR } /_deps"
389+ PUBLIC "${cimgui_SOURCE_DIR } "
390+ )
391+
392+ target_compile_definitions (cimgui
393+ INTERFACE CIMGUI_DEFINE_ENUMS_AND_STRUCTS
394+ )
395+
396+ target_link_libraries (cimgui PUBLIC ImGui )
397+ target_link_libraries (${PROJECT_NAME } PRIVATE "$<LINK_LIBRARY :WHOLE_ARCHIVE ,cimgui >" )
398+
330399if (${CMAKE_SYSTEM_NAME } STREQUAL "iOS" )
331400 get_property (IOS_TOOLCHAIN_FILE GLOBAL PROPERTY IOS_TOOLCHAIN_FILE)
332401 include (${IOS_TOOLCHAIN_FILE} )
@@ -622,31 +691,41 @@ if (MSVC)
622691 )
623692 add_custom_command (
624693 TARGET ${PROJECT_NAME } POST_BUILD
625- COMMENT "DEBUG: Checking what is inside the tinycc-src lib folder..."
626- COMMAND cmd /c "dir \" ${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/lib/\" "
694+ COMMENT "Copying libtcc headers and libs..."
695+ COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/"
696+ COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/"
697+ COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
698+ COMMAND ${CMAKE_COMMAND } -E copy_directory "${CMAKE_BINARY_DIR } /_deps/tinycc-src/include/" "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
699+ COMMAND ${CMAKE_COMMAND } -E copy_directory "${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/include/" "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
700+ COMMAND ${CMAKE_COMMAND } -E copy "$<TARGET_FILE :libtcc1 >" "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/libtcc1$<TARGET_FILE_SUFFIX :libtcc1 >"
627701 VERBATIM
628702 )
629703 add_custom_command (
630704 TARGET ${PROJECT_NAME } POST_BUILD
631- COMMENT "DEBUG: Checking what is inside the tinycc-src lib folder ..."
632- COMMAND cmd /c "dir \" ${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/\" "
705+ COMMENT "Generating .def file ..."
706+ COMMAND " ${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/tcc.exe" -impdef "$< TARGET_FILE : Ghostship >" -o "$< TARGET_FILE_DIR : Ghostship >/.tcc/lib/Ghostship.def "
633707 VERBATIM
634708 )
709+ elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
635710 add_custom_command (
636711 TARGET ${PROJECT_NAME } POST_BUILD
637712 COMMENT "Copying libtcc headers and libs..."
638713 COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/"
639714 COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/"
640715 COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
641716 COMMAND ${CMAKE_COMMAND } -E copy_directory "${CMAKE_BINARY_DIR } /_deps/tinycc-src/include/" "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
642- COMMAND ${CMAKE_COMMAND } -E copy_directory "${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/include/" "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
643- COMMAND ${CMAKE_COMMAND } -E copy "${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/lib/libtcc1.a" "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/libtcc1.a"
717+ COMMAND ${CMAKE_COMMAND } -E copy "$<TARGET_FILE :libtcc1 >" "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/libtcc1.a"
644718 VERBATIM
645719 )
720+ elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
646721 add_custom_command (
647722 TARGET ${PROJECT_NAME } POST_BUILD
648- COMMENT "Generating .def file..."
649- COMMAND "${CMAKE_BINARY_DIR } /_deps/tinycc-src/win32/tcc.exe" -impdef "$<TARGET_FILE :Ghostship >" -o "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/Ghostship.def"
723+ COMMENT "Copying libtcc headers and libs..."
724+ COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/"
725+ COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/"
726+ COMMAND ${CMAKE_COMMAND } -E make_directory "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
727+ COMMAND ${CMAKE_COMMAND } -E copy_directory "${CMAKE_BINARY_DIR } /_deps/tinycc-src/include/" "$<TARGET_FILE_DIR :Ghostship >/.tcc/include/"
728+ COMMAND ${CMAKE_COMMAND } -E copy "$<TARGET_FILE :libtcc1 >" "$<TARGET_FILE_DIR :Ghostship >/.tcc/lib/libtcc1.a"
650729 VERBATIM
651730 )
652731endif ()
0 commit comments