Compare commits

...

3 Commits

Author SHA1 Message Date
342a8236a1 simplified libxml library build 2024-07-09 22:34:36 +07:00
b87def5376 Makefile.old was deleted 2024-07-09 22:11:56 +07:00
4c0bbcabdc Libxml was added from CPM 2024-07-09 20:09:27 +07:00
15 changed files with 36 additions and 72 deletions

View File

@@ -4,27 +4,39 @@ project(cyberiadaml VERSION 1.0)
include(cmake/CPM.cmake)
CPMUsePackageLock(package-lock.cmake)
CPMAddPackage("gh:GNOME/libxml2@2.13.2")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D__DEBUG__")
add_library(cyberiadaml SHARED cyberiadaml.c utf8enc.c cyb_types.c cyb_string.c geometry.c)
target_include_directories(cyberiadaml PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/cyberiada>
"${LIBXML2_INCLUDE_DIR}")
target_link_directories(cyberiadaml PUBLIC "${LIBXML2_LIBRARY}")
target_link_libraries(cyberiadaml PUBLIC
"${LIBXML2_LIBRARIES}"
m)
CPMAddPackage(
NAME LibXml2
VERSION 2.13.2
GITHUB_REPOSITORY GNOME/libxml2
OPTIONS
"LIBXML2_WITH_PYTHON OFF"
"LIBXML2_WITH_TESTS OFF"
)
add_executable(cyberiada_test test.c)
target_include_directories(cyberiada_test PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/cyberiada>)
target_link_directories(cyberiada_test PUBLIC "${PROJECT_BINARY_DIR}")
target_link_libraries(cyberiada_test PUBLIC cyberiadaml)
add_library(
cyberiadaml
SHARED
src/cyberiadaml.c
src/utf8enc.c
src/cyb_types.c
src/cyb_string.c
src/geometry.c
)
target_include_directories(cyberiadaml PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/cyberiada>)
target_link_libraries(cyberiadaml PRIVATE LibXml2::LibXml2)
add_executable(cyberiada_test src/test.c)
target_include_directories(cyberiada_test PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/cyberiada>)
target_link_directories(cyberiada_test PRIVATE "${PROJECT_BINARY_DIR}")
target_link_libraries(cyberiada_test PRIVATE cyberiadaml)
install(TARGETS cyberiadaml DESTINATION lib EXPORT cyberiadaml)
install(FILES cyberiadaml.h ${CMAKE_CURRENT_SOURCE_DIR}/cyberiadaml.h
@@ -33,7 +45,10 @@ install(EXPORT cyberiadaml DESTINATION lib/cmake)
configure_file(
${PROJECT_SOURCE_DIR}/cyberiadaml-config.cmake.in
${PROJECT_BINARY_DIR}/cyberiadaml-config.cmake @ONLY)
${PROJECT_BINARY_DIR}/cyberiadaml-config.cmake @ONLY
)
install(FILES ${PROJECT_BINARY_DIR}/cyberiadaml-config.cmake
DESTINATION lib/cmake)
install(
FILES ${PROJECT_BINARY_DIR}/cyberiadaml-config.cmake
DESTINATION lib/cmake
)

View File

@@ -1,51 +0,0 @@
LIB_TARGET_STATIC := libcyberiadaml.a
LIB_TARGET_DYNAMIC := libcyberiadaml.so
ifeq ($(DYNAMIC), 1)
LIB_TARGET := $(LIB_TARGET_DYNAMIC)
else
LIB_TARGET := $(LIB_TARGET_STATIC)
endif
TEST_TARGET := cyberiada_test
LIB_SOURCES := cyberiadaml.c utf8enc.c cyb_types.c cyb_string.c
TEST_SOURCES := test.c
LIB_OBJECTS := $(patsubst %.c, %.o, $(LIB_SOURCES))
TEST_OBJECTS := $(patsubst %.c, %.o, $(TEST_SOURCES))
ifeq ($(DEBUG), yes)
CFLAGS := -Werror -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion -fPIC -g3 -D__DEBUG__
LFLAGS :=
else ifeq ($(DEBUG), asan)
CFLAGS := -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion -fsanitize=address -fPIC -g3 -D__DEBUG__
LFLAGS := -fsanitize=address -static-libasan
else
CFLAGS := -fPIC
LFLAGS :=
endif
INCLUDE := -I. -I/usr/include/libxml2
LIBS := -L/usr/lib -lxml2 -lm
TEST_LIBS := -L. -lcyberiadaml
$(LIB_TARGET): $(LIB_OBJECTS)
ifeq ($(DYNAMIC), yes)
gcc -shared $(LIBS) $(LIB_OBJECTS) -o $@
else
ar rcs $@ $(LIB_OBJECTS)
endif
$(TEST_TARGET): $(TEST_OBJECTS) $(LIB_TARGET) $(LIB_ORJECTS)
gcc $(TEST_OBJECTS) $(LFLAGS) -Wl,--no-as-needed $(LIBS) $(TEST_LIBS) -o $@
%.o: %.c
gcc -c $< $(CFLAGS) $(INCLUDE) -o $@
clean:
rm -f *~ *.o $(TARGET) $(TEST_TARGET) $(LIB_TARGET_STATIC) $(LIB_TARGET_DYNAMIC)
test: $(TEST_TARGET)
all: $(LIB_TARGET) $(TEST_TARGET)
.PHONY: all clean test

View File