Skip to content

Commit bac2e03

Browse files
committed
Merge branch 'feat/extensions-cmaking'
2 parents 4ae42d4 + 8e94f7d commit bac2e03

6 files changed

Lines changed: 55 additions & 36 deletions

File tree

.DS_Store

-18 KB
Binary file not shown.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ scripts/examples-repo-push-me/
33
scripts/syntax-highlighter-repo-push-me/
44
bin/
55
build/
6+
.DS_Store

CMakeLists.txt

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,14 @@ endif()
2626
set(USE_GUI ON)
2727
set(USE_SQLITE ON)
2828
set(USE_QR ON)
29+
set(USE_MYSQL OFF)
2930

3031
find_package(PkgConfig REQUIRED)
3132
find_package(SDL2 REQUIRED)
3233
pkg_check_modules(SQLITE3 REQUIRED sqlite3)
3334
pkg_check_modules(MYSQL mysqlclient)
3435
pkg_check_modules(QRENCODE REQUIRED IMPORTED_TARGET libqrencode)
3536

36-
# MySQL: optional. Enable with -DUSE_MYSQL=ON if mysqlclient include path works.
37-
if(MYSQL_FOUND AND USE_MYSQL)
38-
message(STATUS "Building with MySQL support")
39-
else()
40-
set(USE_MYSQL OFF)
41-
if(MYSQL_FOUND)
42-
message(STATUS "MySQL found but disabled (set -DUSE_MYSQL=ON to enable)")
43-
else()
44-
message(STATUS "MySQL not found; building without MySQL support")
45-
endif()
46-
endif()
4737

4838
configure_file(config.h.in ${CMAKE_BINARY_DIR}/config.h)
4939

@@ -66,21 +56,19 @@ set(SOURCES
6656

6757
add_executable(${PROJECT_NAME} ${SOURCES})
6858

69-
target_include_directories(${PROJECT_NAME} PRIVATE
70-
src
71-
src/core
72-
src/http
73-
src/mysql
74-
src/sqlite
75-
src/gui
76-
src/qr
59+
set(MELT_INCLUDE_HEADERS
60+
${CMAKE_CURRENT_SOURCE_DIR}/src
61+
${CMAKE_CURRENT_SOURCE_DIR}/src/core
62+
${CMAKE_CURRENT_SOURCE_DIR}/src/http
63+
${CMAKE_CURRENT_SOURCE_DIR}/src/mysql
64+
${CMAKE_CURRENT_SOURCE_DIR}/src/sqlite
65+
${CMAKE_CURRENT_SOURCE_DIR}/src/gui
66+
${CMAKE_CURRENT_SOURCE_DIR}/src/qr
7767
${SQLITE3_INCLUDE_DIRS}
7868
${CMAKE_BINARY_DIR}
7969
${SDL2_INCLUDE_DIRS}
8070
)
81-
if(USE_MYSQL)
82-
target_include_directories(${PROJECT_NAME} PRIVATE ${MYSQL_INCLUDE_DIRS})
83-
endif()
71+
target_include_directories(${PROJECT_NAME} PRIVATE ${MELT_INCLUDE_HEADERS})
8472

8573
target_link_libraries(${PROJECT_NAME}
8674
PRIVATE
@@ -90,9 +78,26 @@ target_link_libraries(${PROJECT_NAME}
9078
${SQLITE3_LIBRARIES}
9179
${CMAKE_DL_LIBS}
9280
)
93-
if(USE_MYSQL)
81+
82+
# =================================================================================
83+
# Optional enable section
84+
# =================================================================================
85+
86+
# MySQL: optional. Enable with -DUSE_MYSQL=ON if mysqlclient include path works.
87+
if(MYSQL_FOUND AND USE_MYSQL)
88+
message(STATUS "Building with MySQL support")
89+
target_include_directories(${PROJECT_NAME} PRIVATE ${MYSQL_INCLUDE_DIRS})
9490
target_link_libraries(${PROJECT_NAME} PRIVATE ${MYSQL_LDFLAGS})
91+
else()
92+
if(MYSQL_FOUND)
93+
message(STATUS "MySQL found but disabled (set -DUSE_MYSQL=ON to enable)")
94+
else()
95+
message(STATUS "MySQL not found; building without MySQL support")
96+
endif()
9597
endif()
9698

99+
100+
add_subdirectory(extensions)
101+
97102
# Install (e.g. cmake --install build --prefix /usr/local)
98103
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)

config.h

Lines changed: 0 additions & 7 deletions
This file was deleted.

extensions/CMakeLists.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Get a list of all subdirectories in the current folder
2+
file(GLOB children RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *)
3+
4+
foreach(child ${children})
5+
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${child})
6+
# Check if the .cpp file exists (e.g., extensions/os/os.cpp)
7+
set(source_file "${child}/${child}.cpp")
8+
9+
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${source_file}")
10+
# Define the shared library name (e.g., ext_os)
11+
set(lib_name "ext_${child}")
12+
13+
add_library(${lib_name} MODULE ${source_file})
14+
15+
# Ensure the output name is exactly what you want (e.g., os.so)
16+
set_target_properties(${lib_name} PROPERTIES
17+
PREFIX ""
18+
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/modules
19+
OUTPUT_NAME ${child}
20+
)
21+
22+
# Optional: Include paths if they need headers from the core
23+
target_include_directories(${lib_name} PRIVATE ${MELT_INCLUDE_HEADERS})
24+
endif()
25+
endif()
26+
endforeach()

helloworld.cpp

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
 (0)