diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b9a6329596..798fab483b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,16 +66,29 @@ if(CURL_CA_EMBED_SET) endif() endif() -# Get CURL_FILES, CURL_CFILES, CURL_HFILES, CURLX_CFILES, CURLX_HFILES, CURL_RCFILES variables +# Get CURL_CFILES, CURL_HFILES, CURLX_CFILES, CURLX_HFILES, CURL_RCFILES variables curl_transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") +source_group("curl source files" FILES ${CURL_CFILES} ${_curl_cfiles_gen}) +source_group("curl header files" FILES ${CURL_HFILES} ${_curl_hfiles_gen}) +source_group("curlx source files" FILES ${CURLX_CFILES}) +source_group("curlx header files" FILES ${CURLX_HFILES}) + if(WIN32) list(APPEND CURL_CFILES ${CURL_RCFILES}) endif() +set(_curlx_cfiles_lib ${CURLX_CFILES}) +set(_curlx_hfiles_lib ${CURLX_HFILES}) +if(LIB_SELECTED STREQUAL LIB_STATIC) + set(_curlx_cfiles_lib "") + set(_curlx_hfiles_lib "") +endif() + if(BUILD_STATIC_CURL) set(CURLX_CFILES "") + set(CURLX_HFILES "") endif() set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES @@ -84,15 +97,17 @@ set_property(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}" # for "tool_hugehelp.c" ) -add_executable(${EXE_NAME} ${CURL_CFILES} ${_curl_cfiles_gen} ${CURLX_CFILES} ${CURL_HFILES} ${_curl_hfiles_gen}) +# Build curl executable +add_executable(${EXE_NAME} ${CURL_CFILES} ${CURL_HFILES} ${_curl_cfiles_gen} ${_curl_hfiles_gen} ${CURLX_CFILES} ${CURLX_HFILES}) target_compile_definitions(${EXE_NAME} PRIVATE ${_curl_definitions}) +target_link_libraries(${EXE_NAME} ${LIB_SELECTED_FOR_EXE} ${CURL_LIBS}) add_executable(${PROJECT_NAME}::${EXE_NAME} ALIAS ${EXE_NAME}) add_executable(curlinfo EXCLUDE_FROM_ALL "curlinfo.c") # special libcurltool library just for unittests -add_library(curltool STATIC EXCLUDE_FROM_ALL ${CURL_CFILES} ${CURL_HFILES}) +add_library(curltool STATIC EXCLUDE_FROM_ALL ${CURL_CFILES} ${CURL_HFILES} ${_curlx_cfiles_lib} ${_curlx_hfiles_lib}) target_compile_definitions(curltool PUBLIC "CURL_STATICLIB" "UNITTESTS") target_link_libraries(curltool PRIVATE ${CURL_LIBS}) set_target_properties(curltool PROPERTIES C_CLANG_TIDY "") @@ -109,13 +124,6 @@ if(ENABLE_UNICODE AND MINGW AND NOT MINGW32CE) endif() endif() -source_group("curlX source files" FILES ${CURLX_CFILES}) -source_group("curl source files" FILES ${CURL_CFILES} ${_curl_cfiles_gen}) -source_group("curl header files" FILES ${CURL_HFILES} ${_curl_hfiles_gen}) - -# Build curl executable -target_link_libraries(${EXE_NAME} ${LIB_SELECTED_FOR_EXE} ${CURL_LIBS}) - ################################################################################ install(TARGETS ${EXE_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/Makefile.am b/src/Makefile.am index 377d4b31a3..75f780fa95 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -26,7 +26,7 @@ AUTOMAKE_OPTIONS = foreign nostdinc # remove targets if the command fails .DELETE_ON_ERROR: -# Get CURL_FILES, CURL_CFILES, CURL_HFILES, CURLX_CFILES, CURLX_HFILES, CURL_RCFILES variables +# Get CURL_CFILES, CURL_HFILES, CURLX_CFILES, CURLX_HFILES, CURL_RCFILES variables include Makefile.inc EXTRA_DIST = mk-file-embed.pl mkhelp.pl \ @@ -71,21 +71,24 @@ curl_cfiles_gen = curl_hfiles_gen = CLEANFILES = -if USE_UNITY if USE_CPPFLAG_CURL_STATICLIB -curlx_src = +curlx_csrc = +curlx_hsrc = else # These are part of the libcurl static lib. Add them here when linking shared. -curlx_src = $(CURLX_CFILES) +curlx_csrc = $(CURLX_CFILES) +curlx_hsrc = $(CURLX_HFILES) endif -curltool_unity.c: $(top_srcdir)/scripts/mk-unity.pl $(CURL_CFILES) $(curl_cfiles_gen) $(curlx_src) - @PERL@ $(top_srcdir)/scripts/mk-unity.pl --include $(CURL_CFILES) $(curl_cfiles_gen) $(curlx_src) > curltool_unity.c + +if USE_UNITY +curltool_unity.c: $(top_srcdir)/scripts/mk-unity.pl $(CURL_CFILES) $(CURL_HFILES) $(curl_cfiles_gen) $(curl_hfiles_gen) $(curlx_csrc) $(curlx_hsrc) + @PERL@ $(top_srcdir)/scripts/mk-unity.pl --include $(CURL_CFILES) $(CURL_HFILES) $(curl_cfiles_gen) $(curl_hfiles_gen) $(curlx_csrc) $(curlx_hsrc) > curltool_unity.c nodist_curl_SOURCES = curltool_unity.c curl_SOURCES = CLEANFILES += curltool_unity.c else -curl_SOURCES = $(CURL_FILES) $(curl_cfiles_gen) $(curl_hfiles_gen) +curl_SOURCES = $(CURL_CFILES) $(CURL_HFILES) $(curl_cfiles_gen) $(curl_hfiles_gen) $(curlx_csrc) $(curlx_hsrc) endif if HAVE_WINDRES curl_SOURCES += $(CURL_RCFILES) @@ -109,14 +112,14 @@ libcurltool_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_STATICLIB -DUNITTESTS libcurltool_la_CFLAGS = libcurltool_la_LDFLAGS = -static $(LIBCURL_PC_LIBS_PRIVATE) if USE_UNITY -libcurltool_unity.c: $(top_srcdir)/scripts/mk-unity.pl $(CURL_CFILES) $(curlx_src) - @PERL@ $(top_srcdir)/scripts/mk-unity.pl --include $(CURL_CFILES) $(curlx_src) > libcurltool_unity.c +libcurltool_unity.c: $(top_srcdir)/scripts/mk-unity.pl $(CURL_CFILES) $(CURL_HFILES) $(curlx_csrc) $(curlx_hsrc) + @PERL@ $(top_srcdir)/scripts/mk-unity.pl --include $(CURL_CFILES) $(CURL_HFILES) $(curlx_csrc) $(curlx_hsrc) > libcurltool_unity.c nodist_libcurltool_la_SOURCES = libcurltool_unity.c libcurltool_la_SOURCES = CLEANFILES += libcurltool_unity.c else -libcurltool_la_SOURCES = $(CURL_FILES) +libcurltool_la_SOURCES = $(CURL_CFILES) $(CURL_HFILES) $(curlx_csrc) $(curlx_hsrc) endif endif diff --git a/src/Makefile.inc b/src/Makefile.inc index 9b183260dd..1086c07feb 100644 --- a/src/Makefile.inc +++ b/src/Makefile.inc @@ -150,6 +150,3 @@ CURL_HFILES = \ var.h CURL_RCFILES = curl.rc - -# curl_SOURCES is special and gets assigned in src/Makefile.am -CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES) diff --git a/tests/tunit/CMakeLists.txt b/tests/tunit/CMakeLists.txt index 03353a9519..bfb8776422 100644 --- a/tests/tunit/CMakeLists.txt +++ b/tests/tunit/CMakeLists.txt @@ -36,7 +36,7 @@ add_custom_command(OUTPUT "${BUNDLE}.c" add_executable(${BUNDLE} EXCLUDE_FROM_ALL "${BUNDLE}.c") add_dependencies(testdeps ${BUNDLE}) -target_link_libraries(${BUNDLE} curltool curlu) +target_link_libraries(${BUNDLE} curltool ${LIB_SELECTED}) target_include_directories(${BUNDLE} PRIVATE "${PROJECT_BINARY_DIR}/lib" # for "curl_config.h" "${PROJECT_SOURCE_DIR}/lib" # for "curl_setup.h", curlx