Use CMake
authorTomas Mlcoch <tmlcoch@redhat.com>
Tue, 13 Mar 2012 12:55:28 +0000 (13:55 +0100)
committerTomas Mlcoch <tmlcoch@redhat.com>
Tue, 13 Mar 2012 14:13:48 +0000 (15:13 +0100)
CMakeLists.txt [new file with mode: 0644]
Makefile [deleted file]
src/CMakeLists.txt [new file with mode: 0644]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6823d4c
--- /dev/null
@@ -0,0 +1,57 @@
+PROJECT (createrepo_c)
+CMAKE_MINIMUM_REQUIRED (VERSION 2.4)
+#CMAKE_POLICY (SET CMP0005 OLD)
+
+# LibXml2 workaround:
+execute_process(COMMAND xml2-config --cflags
+    OUTPUT_VARIABLE LIBXML2_FLAGS)
+string(REPLACE "\n" "" LIBXML2_FLAGS ${LIBXML2_FLAGS})
+message("LIBXML2_FLAGS: ${LIBXML2_FLAGS}")
+
+execute_process(COMMAND xml2-config --libs
+    OUTPUT_VARIABLE LIBXML2_LDFLAGS)
+string(REPLACE "\n" "" LIBXML2_LDFLAGS ${LIBXML2_LDFLAGS})
+message("LIBXML2_LFLAGS: ${LIBXML2_LDFLAGS}")
+
+
+set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wl,--as-needed ${LIBXML2_FLAGS}")
+set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -g -O3")
+set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -ggdb -O0 -Wall -Wextra")
+set (CMAKE_BUILD_TYPE DEBUG)
+
+INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR})
+
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+
+find_package(BZip2 REQUIRED)
+find_package(GLIB2 REQUIRED)
+find_package(GTHREAD2 REQUIRED)
+find_package(ZLIB REQUIRED)
+#find_package(LibXml2 REQUIRED) # Doesn't work!
+
+include_directories(${GLIB2_INCLUDE_DIRS})
+
+# libmagic:
+FIND_LIBRARY(LIBMAGIC magic)
+IF(LIBMAGIC)
+    SET(LIBMAGIC_LDFLAGS "-lmagic")
+ELSE()
+  MESSAGE(FATAL_ERROR "
+  The libmagic library is required to build squid-ecap-av. Either get it
+  from here http://www.darwinsys.com/file/ or install the file development
+  package (i.e 'pkcon install file-devel' on fedora)."
+  )
+ENDIF()
+
+# rpm:
+FIND_LIBRARY (RPMDB_LIBRARY NAMES rpmdb)
+IF (NOT RPMDB_LIBRARY)
+    FIND_LIBRARY (RPMDB_LIBRARY NAMES rpm)
+ENDIF (NOT RPMDB_LIBRARY)
+
+FIND_LIBRARY (RPMIO_LIBRARY NAMES rpmio)
+IF (RPMIO_LIBRARY)
+    SET(RPMDB_LIBRARY ${RPMIO_LIBRARY} ${RPMDB_LIBRARY})
+ENDIF (RPMIO_LIBRARY)
+
+ADD_SUBDIRECTORY (src)
diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 9d9aca9..0000000
--- a/Makefile
+++ /dev/null
@@ -1,146 +0,0 @@
-SWIG=/usr/bin/swig
-CFLAGS=-Wall -Wextra -O2 -fPIC -I/usr/include/python2.7/ `pkg-config --cflags glib-2.0` `xml2-config --cflags` -pthread
-LINKFLAGS=-lmagic -lz -lbz2 `pkg-config --libs glib-2.0 --libs-only-l gthread-2.0` `xml2-config --libs` -lrpm -lrpmio
-LC=-lc
-
-# Profiling
-#CFLAGS=-pg -Wall -Wextra -O2 -fPIC -DDEBUG -I/usr/include/python2.7/ `pkg-config --cflags glib-2.0` `xml2-config --cflags` -pthread
-#LINKFLAGS=-lmagic -lz -lbz2 `pkg-config --libs glib-2.0 --libs-only-l gthread-2.0` `xml2-config --libs` -lrpm -lrpmio
-#LC=-lc_p
-
-
-all: createrepo_c
-
-so: package.so xml_dump.so parsehdr.so parsepkg.so
-
-ctests: parsepkg_test_01 parsehdr_test_01 parsehdr_test_02 xml_dump_primary_test_01 \
-        xml_dump_filelists_test_01 xml_dump_other_test_01 load_metadata_test_01 \
-        load_metadata_test_02 load_metadata_test_03 load_metadata_test_04 \
-        repomd_test_01 compression_wrapper_test_01
-
-
-# Object files + Swit object files
-
-#package.o package_wrap.o: package.c package.h package.i
-package.o package_wrap.o: package.c package.h
-#      $(SWIG) -python -Wall package.i
-#      gcc $(CFLAGS) -c package.c package_wrap.c
-       gcc $(CFLAGS) -c package.c
-
-#xml_dump.o xml_dump_wrap.o: xml_dump.i xml_dump.c xml_dump.h
-#      $(SWIG) -python -Wall xml_dump.i
-#      gcc $(CFLAGS) -c xml_dump.c xml_dump_wrap.c
-
-#xml_dump.o xml_dump_wrap.o: xml_dump.i xml_dump.c xml_dump.h
-xml_dump.o xml_dump_wrap.o: xml_dump.c xml_dump.h
-#      $(SWIG) -python -Wall xml_dump.i
-#      gcc $(CFLAGS) -c xml_dump.c xml_dump_wrap.c
-       gcc $(CFLAGS) -c xml_dump.c
-
-parsehdr.o parsehdr_wrap.o: parsehdr.c parsehdr.h
-#      $(SWIG) -python -Wall parsehdr.i
-#      gcc $(CFLAGS) -c parsehdr.c parsehdr_wrap.c
-       gcc $(CFLAGS) -c parsehdr.c
-
-parsepkg.o parsepkg_wrap.o: parsepkg.c parsepkg.h constants.h
-#      $(SWIG) -python -Wall parsepkg.i
-#      gcc $(CFLAGS) -c parsepkg.c parsepkg_wrap.c
-       gcc $(CFLAGS) -c parsepkg.c
-
-# TODO
-load_metadata.o load_metadata_wrap.o: load_metadata.c load_metadata.h constants.h compression_wrapper.h
-#      $(SWIG) -python -Wall load_metadata.i
-#      gcc $(CFLAGS) -c load_metadata.c load_metadata_wrap.c
-       gcc $(CFLAGS) -c load_metadata.c
-
-# TODO
-repomd.o repomd_wrap.o: repomd.c repomd.h constants.h misc.h compression_wrapper.h
-#      $(SWIG) -python -Wall repomd.i
-#      gcc $(CFLAGS) -c repomd.c repomd_wrap.c
-       gcc $(CFLAGS) -c repomd.c
-
-# TODO
-compression_wrapper.o compression_wrapper_wrap.o: compression_wrapper.c compression_wrapper.h
-#      $(SWIG) -python -Wall repomd.i
-#      gcc $(CFLAGS) -c repomd.c repomd_wrap.c
-       gcc $(CFLAGS) -c compression_wrapper.c
-
-
-# Object files
-
-misc.o: misc.c misc.h
-       gcc $(CFLAGS) -c misc.c
-
-xml_dump_primary.o: xml_dump_primary.c xml_dump.h
-       gcc $(CFLAGS) -c xml_dump_primary.c
-
-xml_dump_filelists.o: xml_dump_filelists.c xml_dump.h
-       gcc $(CFLAGS) -c xml_dump_filelists.c
-
-xml_dump_other.o: xml_dump_other.c xml_dump.h
-       gcc $(CFLAGS) -c xml_dump_other.c
-
-#package.so: package_wrap.o package.o
-#      ld $(LINKFLAGS) -shared package.o package_wrap.o -o _package.so $(LC)
-
-#xml_dump.so: package.o xml_dump_wrap.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-#      ld $(LINKFLAGS) -shared package.o xml_dump_wrap.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o -o _xml_dump.so $(LC)
-
-#parsehdr.so: parsehdr_wrap.o parsehdr.o package.o xml_dump.o misc.o
-#      ld $(LINKFLAGS) -shared misc.o parsehdr_wrap.o parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o -o _parsehdr.so $(LC)
-
-#parsepkg.so: parsepkg_wrap.o parsepkg.o parsehdr.o package.o xml_dump.o misc.o
-#      ld $(LINKFLAGS) -shared misc.o parsepkg_wrap.o parsepkg.o parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o -o _parsepkg.so $(LC)
-
-#load_metadata.so: load_metadata_wrap.o load_metadata.o
-#      ld $(LINKFLAGS) -shared load_metadata_wrap.o load_metadata.o -o _load_metadata.so $(LC)
-
-
-# Tests
-
-parsepkg_test_01: parsepkg.o parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) parsepkg.o parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o ctests/parsepkg_test_01.c -o ctests/parsepkg_test_01
-
-parsehdr_test_01: parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o ctests/parsehdr_test_01.c -o ctests/parsehdr_test_01
-
-parsehdr_test_02: parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o ctests/parsehdr_test_02.c -o ctests/parsehdr_test_02
-
-xml_dump_primary_test_01: package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o ctests/xml_dump_primary_test_01.c -o ctests/xml_dump_primary_test_01
-
-xml_dump_filelists_test_01: package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o ctests/xml_dump_filelists_test_01.c -o ctests/xml_dump_filelists_test_01
-
-xml_dump_other_test_01: package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o ctests/xml_dump_other_test_01.c -o ctests/xml_dump_other_test_01
-
-
-load_metadata_test_01: load_metadata.o compression_wrapper.o
-       gcc $(LINKFLAGS) $(CFLAGS) compression_wrapper.o  load_metadata.o ctests/load_metadata_2_test_01.c -o ctests/load_metadata_test_01
-
-load_metadata_test_02: load_metadata.o compression_wrapper.o
-       gcc $(LINKFLAGS) $(CFLAGS) compression_wrapper.o load_metadata.o ctests/load_metadata_2_test_02.c -o ctests/load_metadata_test_02
-
-load_metadata_test_03: load_metadata.o compression_wrapper.o
-       gcc $(LINKFLAGS) $(CFLAGS) compression_wrapper.o load_metadata.o ctests/load_metadata_2_test_03.c -o ctests/load_metadata_2_test_03
-
-load_metadata_test_04: load_metadata.o compression_wrapper.o
-       gcc $(LINKFLAGS) $(CFLAGS) compression_wrapper.o load_metadata.o ctests/load_metadata_2_test_04_big.c -o ctests/load_metadata_2_test_04_big
-
-repomd_test_01: repomd.o compression_wrapper.o misc.o
-       gcc $(LINKFLAGS) $(CFLAGS) repomd.o compression_wrapper.o misc.o ctests/repomd_test_01.c -o ctests/repomd_test_01
-
-compression_wrapper_test_01: compression_wrapper.o
-       gcc $(LINKFLAGS) $(CFLAGS) compression_wrapper.o ctests/compression_wrapper_test_01.c -o ctests/compression_wrapper_test_01
-
-
-# Createrepo_c
-
-createrepo_c: compression_wrapper.o parsepkg.o parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o load_metadata.o repomd.o
-       gcc $(LINKFLAGS) $(CFLAGS) compression_wrapper.o parsepkg.o parsehdr.o package.o xml_dump.o xml_dump_primary.o xml_dump_filelists.o xml_dump_other.o misc.o repomd.o load_metadata.o createrepo_c.c -o createrepo_c
-
-
-clean:
-       rm -f *.o *.so *_wrap.* createrepo_c *.pyc
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
new file mode 100644 (file)
index 0000000..b66cfa2
--- /dev/null
@@ -0,0 +1,16 @@
+SET (createrepo_c_SRCS
+    compression_wrapper.c load_metadata.c misc.c package.c parsehdr.c parsepkg.c
+    repomd.c xml_dump.c xml_dump_filelists.c xml_dump_other.c xml_dump_primary.c)
+
+#ADD_LIBRARY(libcreaterepo_c SHARED ${createrepo_c_SRCS})
+ADD_LIBRARY(libcreaterepo_c ${createrepo_c_SRCS})
+TARGET_LINK_LIBRARIES(libcreaterepo_c ${ZLIB_LIBRARY})
+TARGET_LINK_LIBRARIES(libcreaterepo_c ${RPMDB_LIBRARY})
+TARGET_LINK_LIBRARIES(libcreaterepo_c ${BZIP2_LIBRARIES})
+TARGET_LINK_LIBRARIES(libcreaterepo_c ${GLIB2_LIBRARIES})
+TARGET_LINK_LIBRARIES(libcreaterepo_c ${LIBMAGIC_LDFLAGS})
+TARGET_LINK_LIBRARIES(libcreaterepo_c ${LIBXML2_LDFLAGS})
+SET_TARGET_PROPERTIES(libcreaterepo_c PROPERTIES OUTPUT_NAME "libcreaterepo_c")
+
+ADD_EXECUTABLE(../createrepo_c createrepo_c.c)
+TARGET_LINK_LIBRARIES(../createrepo_c libcreaterepo_c ${GLIB2_LIBRARIES} ${GTHREAD2_LIBRARIES})