From 0c16b5419ee0167cc615718dad82185c1488553d Mon Sep 17 00:00:00 2001 From: Brian Barrett Date: Sat, 2 Jul 2005 14:29:45 +0000 Subject: [PATCH] * first cut at autogen.sh / configure for new directory structure * fix some broken makefile.ams This commit was SVN r6277. --- autogen.sh | 34 ++--- config/ompi_mca.m4 | 69 ++++++---- configure.ac | 271 ++++++++++++++++++++------------------- ompi/tools/Makefile.am | 3 +- opal/mca/Makefile.am | 2 +- opal/runtime/Makefile.am | 2 +- 6 files changed, 202 insertions(+), 179 deletions(-) diff --git a/autogen.sh b/autogen.sh index 522af296ef..9f6ba65a24 100755 --- a/autogen.sh +++ b/autogen.sh @@ -58,6 +58,8 @@ mca_no_config_list_file="mca_no_config_list" mca_no_config_amc_file="mca_no_config_amc" autogen_subdir_file="autogen.subdirs" +# locations to look for mca modules +mca_locations="opal orte ompi" ############################################################################ # @@ -361,14 +363,14 @@ EOF # configure, not any of the MCA components. if test -f include/mpi.h; then - rm -rf libltdl src/libltdl src/ltdl.h + rm -rf libltdl opal/libltdl opal/ltdl.h run_and_check $ompi_libtoolize --automake --copy --ltdl - mv libltdl src + mv libltdl opal echo "Adjusting libltdl for OMPI :-(" echo " -- patching for argz bugfix in libtool 1.5" - cd src/libltdl + cd opal/libltdl if test "`grep 'while ((before >= *pargz) && (before[-1] != LT_EOS_CHAR))' ltdl.c`" != ""; then patch -N -p0 </mca/*/* # that has a configure.in or configure.ac script rg_cwd="`pwd`" echo $rg_cwd - for type in src/mca/*; do - if test -d "$type"; then - for component in "$type"/*; do - if test -d "$component"; then - if test -f "$component/configure.in" -o \ - -f "$component/configure.params" -o \ - -f "$component/configure.ac"; then - process_dir "$component" "$rg_cwd" + for project in $mca_locations; do + for type in $project/mca/*; do + if test -d "$type"; then + for component in "$type"/*; do + if test -d "$component"; then + if test -f "$component/configure.in" -o \ + -f "$component/configure.params" -o \ + -f "$component/configure.ac"; then + process_dir "$component" "$rg_cwd" + fi fi - fi - done - fi + done + fi + done done # Fill in the final m4 file diff --git a/config/ompi_mca.m4 b/config/ompi_mca.m4 index 48c91272e1..864dbd603d 100644 --- a/config/ompi_mca.m4 +++ b/config/ompi_mca.m4 @@ -155,9 +155,10 @@ unset msg # The list of MCA types (it's fixed) +found_projects="opal orte ompi" +found_types="common allocator btl coll errmgr gpr io iof mpool ns oob pls pml ptl ras rds rmaps rmgr rml schema soh topo" AC_MSG_CHECKING([for MCA types]) -found_types="common allocator btl coll errmgr gpr io iof mpool ns oob pls pml ptl ras rds rmaps rmgr rml schema soh topo" AC_MSG_RESULT([$found_types]) # Get the list of all the non-configure MCA components that were found by @@ -179,15 +180,28 @@ for type in $found_types; do dso_components= static_ltlibs= + # + # find the project this is part of + # + project="" + for tmp_project in $found_projects; do + if test -d "$tmp_project/mca/$type" ; then + project="$tmp_project" + fi + done + if test "$project" = "" ; then + AC_MSG_ERROR([Could not find location of framework $type. Aborting.]) + fi + # Ensure that the directory where the #include file is to live # exists. Need to do this for VPATH builds, because the directory # may not exist yet. For the "common" type, it's not really a # component, so it doesn't have a base. if test "$type" = "common"; then - outdir=src/mca/common + outdir=$project/mca/common else - outdir=src/mca/$type/base + outdir=$project/mca/$type/base fi total_dir="." for dir_part in `IFS='/\\'; set X $outdir; shift; echo "$[@]"`; do @@ -200,7 +214,7 @@ for type in $found_types; do # Also ensure that the dynamic-mca base directory exists total_dir="." - dyndir=src/dynamic-mca/$type + dyndir=$project/dynamic-mca/$type for dir_part in `IFS='/\\'; set X $dyndir; shift; echo "$[@]"`; do total_dir=$total_dir/$dir_part test -d "$total_dir" || @@ -297,11 +311,11 @@ for type in $found_types; do # Remove any possible sym link in the mca-dynamic tree - rm -f src/dynamic-mca/$type/$m + rm -f $project/dynamic-mca/$type/$m # Now process the component - MCA_PROCESS_COMPONENT(1, 1, $type, $m) + MCA_PROCESS_COMPONENT(1, 1, $project, $type, $m) # Note that the AM_CONDITIONAL for this component is set in # config/mca_no_configure_components.m4 -- which is generated by @@ -338,7 +352,7 @@ of type ${type} to be loaded at runtime.]) # Find all configureable components, run their configure scripts, # etc. - for component in $srcdir/src/mca/$type/*; do + for component in $srcdir/$project/mca/$type/*; do FOUND=0 HAPPY=0 m="`basename $component`" @@ -379,11 +393,11 @@ of type ${type} to be loaded at runtime.]) # Remove any possible sym link in the mca-dynamic tree - rm -f src/dyanmic-mca/$type/$m + rm -f $project/dyanmic-mca/$type/$m # Configure the component subdirectory - OMPI_CONFIG_SUBDIR([src/mca/$type/$m], + OMPI_CONFIG_SUBDIR([$project/mca/$type/$m], [$ompi_subdir_args], [HAPPY=1], [HAPPY=0]) fi @@ -391,7 +405,7 @@ of type ${type} to be loaded at runtime.]) # Process this component - MCA_PROCESS_COMPONENT($FOUND, $HAPPY, $type, $m) + MCA_PROCESS_COMPONENT($FOUND, $HAPPY, $project, $type, $m) # double check that we can build direct if that was requested if test "$DIRECT_COMPONENT" = "$m" -a \ -z "$MCA_${type}_DIRECT_CALL_HEADER" ; then @@ -581,7 +595,7 @@ AC_SUBST(MCA_pml_ALL_SUBDIRS) AC_SUBST(MCA_pml_STATIC_SUBDIRS) AC_SUBST(MCA_pml_DSO_SUBDIRS) AC_SUBST(MCA_pml_STATIC_LTLIBS) -OMPI_SETUP_DIRECT_CALL(pml) +OMPI_SETUP_DIRECT_CALL(pml, ompi) AC_SUBST(MCA_ptl_ALL_SUBDIRS) AC_SUBST(MCA_ptl_STATIC_SUBDIRS) @@ -612,13 +626,14 @@ dnl ----------------------------------------------------------------------- AC_DEFUN([MCA_PROCESS_COMPONENT],[ FOUND=$1 HAPPY=$2 -type=$3 -m=$4 +project=$3 +type=$4 +m=$5 # See if it dropped an output file for us to pick up some # shell variables in. -infile="src/mca/$type/$m/post_configure.sh" +infile="$project/mca/$type/$m/post_configure.sh" # Did we find a valid component, and did its configure run # successfully? @@ -666,9 +681,9 @@ if test "$HAPPY" = "1"; then if test "$compile_mode" = "dso" ; then echo $m >> $outfile.dso - rm -f "src/dynamic-mca/$type/$m" - $LN_S "$OMPI_TOP_BUILDDIR/src/mca/$type/$m" \ - "src/dynamic-mca/$type/$m" + rm -f "$project/dynamic-mca/$type/$m" + $LN_S "$OMPI_TOP_BUILDDIR/$project/mca/$type/$m" \ + "$project/dynamic-mca/$type/$m" else static_ltlibs="mca/$type/$m/libmca_${type}_${m}.la $static_ltlibs" echo "extern const mca_base_component_t mca_${type}_${m}_component;" >> $outfile.extern @@ -800,24 +815,24 @@ AC_DEFUN([OMPI_SETUP_DIRECT_CALL],[ [Defined to 1 if $1 should use direct calls instead of components]) AC_DEFINE_UNQUOTED([MCA_$1_DIRECT_CALL_COMPONENT], [$MCA_$1_DIRECT_CALL_COMPONENT], [name of component to use for direct calls, if MCA_$1_DIRECT_CALL is 1]) - OMPI_WRITE_DIRECT_CALL_HEADER($1) + OMPI_WRITE_DIRECT_CALL_HEADER($1, $2) ]) AC_DEFUN([OMPI_WRITE_DIRECT_CALL_HEADER],[ - AC_CONFIG_FILES(src/mca/$1/$1_direct_call.h.template) + AC_CONFIG_FILES($2/mca/$1/$1_direct_call.h.template) AC_CONFIG_COMMANDS($1-direct, -[if test -f "src/mca/$1/$1_direct_call"; then - diff "src/mca/$1/$1_direct_call.h" "src/mca/$1/$1_direct_call.h.template" > /dev/null 2>&1 +[if test -f "$2/mca/$1/$1_direct_call"; then + diff "$2/mca/$1/$1_direct_call.h" "$2/mca/$1/$1_direct_call.h.template" > /dev/null 2>&1 if test "$?" != "0"; then - cp "src/mca/$1/$1_direct_call.h.template" "src/mca/$1/$1_direct_call.h" - echo "config.status: regenerating src/mca/$1/$1_direct_call.h" + cp "$2/mca/$1/$1_direct_call.h.template" "$2/mca/$1/$1_direct_call.h" + echo "config.status: regenerating $2/mca/$1/$1_direct_call.h" else - echo "config.status: src/mca/$1/$1_direct_call.h unchanged" + echo "config.status: $2/mca/$1/$1_direct_call.h unchanged" fi else - cp "src/mca/$1/$1_direct_call.h.template" "src/mca/$1/$1_direct_call.h" - echo "config.status: creating src/mca/$1/$1_direct_call.h" + cp "$2/mca/$1/$1_direct_call.h.template" "$2/mca/$1/$1_direct_call.h" + echo "config.status: creating $2/mca/$1/$1_direct_call.h" fi -rm src/mca/$1/$1_direct_call.h.template]) +rm $2/mca/$1/$1_direct_call.h.template]) ]) diff --git a/configure.ac b/configure.ac index 1ad9f73d14..320d108f17 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ # Init autoconf -AC_INIT(./src/mpi/c/init.c) +AC_INIT(./ompi/mpi/c/init.c) AC_PREREQ(2.58) AC_CONFIG_AUX_DIR(./config) @@ -1180,7 +1180,7 @@ AM_PROG_LEX if test -z "$LEX" -o -n "`echo $LEX | grep missing`" -o \ "`basename $LEX`" != "flex"; then - if test ! -f "$srcdir/src/util/show_help_lex.c"; then + if test ! -f "$srcdir/ompi/util/show_help_lex.c"; then AC_MSG_WARN([*** Could not find GNU Flex on your system.]) AC_MSG_WARN([*** GNU Flex required for developer builds of Open MPI.]) AC_MSG_WARN([*** Other versions of Lex are not supported.]) @@ -1249,7 +1249,7 @@ ompi_show_subtitle "Libtool configuration" # 1.5) because it has support for a lot more things than older # versions of libtool (which are generally installed by default). -AC_LIBLTDL_CONVENIENCE(src/libltdl) +AC_LIBLTDL_CONVENIENCE(opal/libltdl) AC_SUBST(LTDLINCL) AC_SUBST(LIBLTDL) AC_LIBTOOL_DLOPEN @@ -1288,7 +1288,7 @@ fi CFLAGS_save="$CFLAGS" CFLAGS="$OMPI_CFLAGS_BEFORE_PICKY" -OMPI_CONFIG_SUBDIR(src/libltdl, [$ompi_subdir_args], [HAPPY=1], [HAPPY=0]) +OMPI_CONFIG_SUBDIR(opal/libltdl, [$ompi_subdir_args], [HAPPY=1], [HAPPY=0]) if test "$HAPPY" = "1"; then LIBLTDL_SUBDIR=libltdl LIBLTDL_LTLIB=libltdl/libltdlc.la @@ -1297,8 +1297,8 @@ if test "$HAPPY" = "1"; then # Arrgh. This is gross. But I can't think of any other way to do # it. :-( - flags="`egrep ^LIBADD_DL src/libltdl/Makefile | cut -d= -f2-`" - OMPI_CHECK_LINKER_FLAGS([src/libltdl/libtool], [-export-dynamic $flags]) + flags="`egrep ^LIBADD_DL opal/libltdl/Makefile | cut -d= -f2-`" + OMPI_CHECK_LINKER_FLAGS([opal/libltdl/libtool], [-export-dynamic $flags]) WRAPPER_EXTRA_LIBS="$WRAPPER_EXTRA_LIBS $extra_ldflags" LDFLAGS="-export-dynamic $LDFLAGS" else @@ -1328,8 +1328,8 @@ ompi_show_subtitle "Wrapper compiler flags" # purely aesthetic. # -CPPFLAGS='-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_builddir)/src'" $CPPFLAGS" -CXXCPPFLAGS='-I$(top_srcdir)/src -I$(top_srcdir)/include -I$(top_builddir)/src'" $CXXCPPFLAGS" +CPPFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/opal -I$(top_builddir)/opal -I$(top_srcdir)/orte -I$(top_builddir)/orte -I$(top_srcdir)/ompi -I$(top_builddir)/ompi'" $CPPFLAGS" +CXXCPPFLAGS='-I$(top_srcdir)/include -I$(top_srcdir)/opal -I$(top_builddir)/opal -I$(top_srcdir)/orte -I$(top_builddir)/orte -I$(top_srcdir)/ompi -I$(top_builddir)/ompi'" $CXXCPPFLAGS" # # Adding WRAPPER_* flags so that extra flags needed for wrappper compilers @@ -1444,142 +1444,147 @@ AC_CONFIG_FILES([ etc/Makefile - src/Makefile - src/include/Makefile - src/include/sys/Makefile - src/include/sys/alpha/Makefile - src/include/sys/amd64/Makefile - src/include/sys/ia32/Makefile - src/include/sys/ia64/Makefile - src/include/sys/mips/Makefile - src/include/sys/powerpc/Makefile - src/include/sys/sparc/Makefile - src/include/sys/sparcv9/Makefile - src/include/sys/win32/Makefile + opal/Makefile + opal/include/Makefile + opal/include/sys/Makefile + opal/include/sys/alpha/Makefile + opal/include/sys/amd64/Makefile + opal/include/sys/ia32/Makefile + opal/include/sys/ia64/Makefile + opal/include/sys/mips/Makefile + opal/include/sys/powerpc/Makefile + opal/include/sys/sparc/Makefile + opal/include/sys/sparcv9/Makefile + opal/include/sys/win32/Makefile - src/class/Makefile - src/runtime/Makefile - src/threads/Makefile - src/util/Makefile + opal/asm/Makefile + opal/class/Makefile + opal/event/Makefile + opal/event/compat/Makefile + opal/event/compat/sys/Makefile + opal/runtime/Makefile + opal/threads/Makefile + opal/util/Makefile - src/event/Makefile - src/event/compat/Makefile - src/event/compat/sys/Makefile + opal/mca/Makefile + opal/mca/base/Makefile + opal/dynamic-mca/Makefile - src/attribute/Makefile - src/asm/Makefile - src/communicator/Makefile - src/datatype/Makefile - src/dps/Makefile - src/errhandler/Makefile - src/file/Makefile - src/group/Makefile - src/info/Makefile - src/op/Makefile - src/proc/Makefile - src/request/Makefile - src/win/Makefile + opal/mca/allocator/Makefile + opal/mca/allocator/base/Makefile + opal/mca/mpool/Makefile + opal/mca/mpool/base/Makefile - src/mca/Makefile - src/mca/base/Makefile - src/mca/common/Makefile + opal/dynamic-mca/mpool/Makefile + opal/dynamic-mca/allocator/Makefile - src/mca/errmgr/Makefile - src/mca/errmgr/base/Makefile - src/mca/iof/Makefile - src/mca/iof/base/Makefile - src/mca/gpr/Makefile - src/mca/gpr/base/Makefile - src/mca/gpr/base/data_type_support/Makefile - src/mca/gpr/base/pack_api_cmd/Makefile - src/mca/gpr/base/unpack_api_response/Makefile - src/mca/ns/Makefile - src/mca/ns/base/Makefile - src/mca/ns/base/data_type_support/Makefile - src/mca/oob/Makefile - src/mca/oob/base/Makefile - src/mca/pls/Makefile - src/mca/pls/base/Makefile - src/mca/ras/Makefile - src/mca/ras/base/Makefile - src/mca/rds/Makefile - src/mca/rds/base/Makefile - src/mca/rmaps/Makefile - src/mca/rmaps/base/Makefile - src/mca/rmgr/Makefile - src/mca/rmgr/base/Makefile - src/mca/rmgr/base/data_type_support/Makefile - src/mca/schema/Makefile - src/mca/schema/base/Makefile - src/mca/soh/Makefile - src/mca/soh/base/Makefile - src/mca/soh/base/data_type_support/Makefile + orte/runtime/Makefile + orte/dps/Makefile + orte/tools/console/Makefile + orte/tools/orted/Makefile + orte/tools/orteprobe/Makefile + orte/tools/orterun/Makefile - src/mca/allocator/Makefile - src/mca/allocator/base/Makefile - src/mca/btl/Makefile - src/mca/btl/base/Makefile - src/mca/coll/Makefile - src/mca/coll/base/Makefile - src/mca/io/Makefile - src/mca/io/base/Makefile - src/mca/mpool/Makefile - src/mca/mpool/base/Makefile - src/mca/pml/Makefile - src/mca/pml/base/Makefile - src/mca/ptl/Makefile - src/mca/ptl/base/Makefile - src/mca/rml/Makefile - src/mca/rml/base/Makefile - src/mca/topo/Makefile - src/mca/topo/base/Makefile + orte/mca/errmgr/Makefile + orte/mca/errmgr/base/Makefile + orte/mca/iof/Makefile + orte/mca/iof/base/Makefile + orte/mca/gpr/Makefile + orte/mca/gpr/base/Makefile + orte/mca/gpr/base/data_type_support/Makefile + orte/mca/gpr/base/pack_api_cmd/Makefile + orte/mca/gpr/base/unpack_api_response/Makefile + orte/mca/ns/Makefile + orte/mca/ns/base/Makefile + orte/mca/ns/base/data_type_support/Makefile + orte/mca/oob/Makefile + orte/mca/oob/base/Makefile + orte/mca/pls/Makefile + orte/mca/pls/base/Makefile + orte/mca/ras/Makefile + orte/mca/ras/base/Makefile + orte/mca/rds/Makefile + orte/mca/rds/base/Makefile + orte/mca/rmaps/Makefile + orte/mca/rmaps/base/Makefile + orte/mca/rmgr/Makefile + orte/mca/rmgr/base/Makefile + orte/mca/rmgr/base/data_type_support/Makefile + orte/mca/rml/Makefile + orte/mca/rml/base/Makefile + orte/mca/schema/Makefile + orte/mca/schema/base/Makefile + orte/mca/soh/Makefile + orte/mca/soh/base/Makefile + orte/mca/soh/base/data_type_support/Makefile - src/dynamic-mca/common/Makefile + orte/dynamic-mca/errmgr/Makefile + orte/dynamic-mca/iof/Makefile + orte/dynamic-mca/gpr/Makefile + orte/dynamic-mca/ns/Makefile + orte/dynamic-mca/oob/Makefile + orte/dynamic-mca/pls/Makefile + orte/dynamic-mca/ras/Makefile + orte/dynamic-mca/rds/Makefile + orte/dynamic-mca/rmaps/Makefile + orte/dynamic-mca/rmgr/Makefile + orte/dynamic-mca/rml/Makefile + orte/dynamic-mca/schema/Makefile + orte/dynamic-mca/soh/Makefile - src/dynamic-mca/errmgr/Makefile - src/dynamic-mca/iof/Makefile - src/dynamic-mca/gpr/Makefile - src/dynamic-mca/ns/Makefile - src/dynamic-mca/oob/Makefile - src/dynamic-mca/pls/Makefile - src/dynamic-mca/ras/Makefile - src/dynamic-mca/rds/Makefile - src/dynamic-mca/rmaps/Makefile - src/dynamic-mca/rmgr/Makefile - src/dynamic-mca/schema/Makefile - src/dynamic-mca/soh/Makefile - src/dynamic-mca/Makefile - src/dynamic-mca/allocator/Makefile - src/dynamic-mca/btl/Makefile - src/dynamic-mca/coll/Makefile - src/dynamic-mca/io/Makefile - src/dynamic-mca/mpool/Makefile - src/dynamic-mca/pml/Makefile - src/dynamic-mca/ptl/Makefile - src/dynamic-mca/rml/Makefile - src/dynamic-mca/topo/Makefile + ompi/attribute/Makefile + ompi/communicator/Makefile + ompi/datatype/Makefile + ompi/errhandler/Makefile + ompi/file/Makefile + ompi/group/Makefile + ompi/info/Makefile + ompi/op/Makefile + ompi/proc/Makefile + ompi/request/Makefile + ompi/win/Makefile - src/mpi/Makefile - src/mpi/c/Makefile - src/mpi/c/profile/Makefile - src/mpi/cxx/Makefile - src/mpi/f77/Makefile - src/mpi/f77/profile/Makefile - src/mpi/f90/Makefile - src/mpi/f90/fortran_kinds.sh - src/mpi/f90/fortran_sizes.h - src/mpi/f90/scripts/Makefile - src/mpi/runtime/Makefile + ompi/mpi/Makefile + ompi/mpi/c/Makefile + ompi/mpi/c/profile/Makefile + ompi/mpi/cxx/Makefile + ompi/mpi/f77/Makefile + ompi/mpi/f77/profile/Makefile + ompi/mpi/f90/Makefile + ompi/mpi/f90/fortran_kinds.sh + ompi/mpi/f90/fortran_sizes.h + ompi/mpi/f90/scripts/Makefile + ompi/mpi/runtime/Makefile - src/tools/Makefile - src/tools/console/Makefile - src/tools/ompi_info/Makefile - src/tools/orted/Makefile - src/tools/orteprobe/Makefile - src/tools/orterun/Makefile - src/tools/openmpi/Makefile - src/tools/wrappers/Makefile + ompi/tools/Makefile + ompi/tools/ompi_info/Makefile + ompi/tools/openmpi/Makefile + ompi/tools/wrappers/Makefile + + ompi/mca/common/Makefile + + ompi/mca/btl/Makefile + ompi/mca/btl/base/Makefile + ompi/mca/coll/Makefile + ompi/mca/coll/base/Makefile + ompi/mca/io/Makefile + ompi/mca/io/base/Makefile + ompi/mca/pml/Makefile + ompi/mca/pml/base/Makefile + ompi/mca/ptl/Makefile + ompi/mca/ptl/base/Makefile + ompi/mca/topo/Makefile + ompi/mca/topo/base/Makefile + + ompi/dynamic-mca/common/Makefile + + ompi/dynamic-mca/btl/Makefile + ompi/dynamic-mca/coll/Makefile + ompi/dynamic-mca/io/Makefile + ompi/dynamic-mca/pml/Makefile + ompi/dynamic-mca/ptl/Makefile + ompi/dynamic-mca/topo/Makefile test/Makefile test/asm/Makefile diff --git a/ompi/tools/Makefile.am b/ompi/tools/Makefile.am index b33b2efff3..6d9cff8e49 100644 --- a/ompi/tools/Makefile.am +++ b/ompi/tools/Makefile.am @@ -19,5 +19,4 @@ include $(top_srcdir)/config/Makefile.options EXTRA_DIST = win_makefile -SUBDIRS = ompi_info wrappers orted orteprobe orterun openmpi console - +SUBDIRS = ompi_info wrappers openmpi diff --git a/opal/mca/Makefile.am b/opal/mca/Makefile.am index 4d74571ab5..7050fb2aee 100644 --- a/opal/mca/Makefile.am +++ b/opal/mca/Makefile.am @@ -18,7 +18,7 @@ include $(top_srcdir)/config/Makefile.options SUBDIRS = \ allocator \ - mpool \ + mpool # Source code files diff --git a/opal/runtime/Makefile.am b/opal/runtime/Makefile.am index 4121518b46..ed6c51d3d6 100644 --- a/opal/runtime/Makefile.am +++ b/opal/runtime/Makefile.am @@ -31,7 +31,7 @@ libruntime_la_SOURCES = \ $(headers) \ ompi_progress.c \ orte_finalize.c \ - orte_init.c \ + orte_init.c # Conditionally install the header files